@alaarab/ogrid-react 2.5.5 → 2.5.6
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/README.md +7 -45
- package/dist/esm/index.js +1 -1
- package/dist/types/components/BaseInlineCellEditor.d.ts +2 -0
- package/dist/types/components/ColumnChooserProps.d.ts +1 -1
- 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 +9 -9
- package/dist/types/components/SheetTabs.d.ts +1 -1
- package/dist/types/constants/domHelpers.d.ts +6 -2
- package/dist/types/hooks/useCellSelection.d.ts +1 -1
- package/dist/types/hooks/useColumnChooserState.d.ts +1 -1
- package/dist/types/hooks/useDataGridEditing.d.ts +1 -1
- package/dist/types/hooks/useDataGridInteraction.d.ts +1 -1
- package/dist/types/hooks/useFormulaBar.d.ts +2 -2
- package/dist/types/hooks/useFormulaEngine.d.ts +2 -2
- package/dist/types/hooks/useInlineCellEditorState.d.ts +4 -0
- package/dist/types/hooks/useListVirtualizer.d.ts +1 -1
- package/dist/types/hooks/useSelectState.d.ts +1 -1
- package/dist/types/hooks/useUndoRedo.d.ts +2 -2
- package/dist/types/index.d.ts +1 -1
- package/dist/types/types/dataGridTypes.d.ts +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,42 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
<strong>OGrid React</strong> — React hooks, headless components, and utilities for OGrid data grids.
|
|
3
|
-
</p>
|
|
1
|
+
# @alaarab/ogrid-react
|
|
4
2
|
|
|
5
|
-
|
|
6
|
-
<a href="https://www.npmjs.com/package/@alaarab/ogrid-react"><img src="https://img.shields.io/npm/v/@alaarab/ogrid-react?color=%23217346&label=npm" alt="npm version" /></a>
|
|
7
|
-
<a href="https://github.com/alaarab/ogrid/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT License" /></a>
|
|
8
|
-
<img src="https://img.shields.io/badge/React-17%20%7C%2018%20%7C%2019-blue" alt="React 17, 18, 19" />
|
|
9
|
-
<img src="https://img.shields.io/badge/TypeScript-strict-blue" alt="TypeScript strict" />
|
|
10
|
-
</p>
|
|
11
|
-
|
|
12
|
-
<p align="center">
|
|
13
|
-
<a href="https://alaarab.github.io/ogrid/">Documentation</a> · <a href="https://alaarab.github.io/ogrid/docs/getting-started/overview">Getting Started</a> · <a href="https://alaarab.github.io/ogrid/docs/api/ogrid-props">API Reference</a>
|
|
14
|
-
</p>
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
React hooks and headless components for [OGrid](https://github.com/alaarab/ogrid) data grids. You typically don't need to install this directly — the UI packages ([`@alaarab/ogrid-react-radix`](https://www.npmjs.com/package/@alaarab/ogrid-react-radix), [`@alaarab/ogrid-react-fluent`](https://www.npmjs.com/package/@alaarab/ogrid-react-fluent), [`@alaarab/ogrid-react-material`](https://www.npmjs.com/package/@alaarab/ogrid-react-material)) re-export everything from this package.
|
|
19
|
-
|
|
20
|
-
## What's Inside
|
|
21
|
-
|
|
22
|
-
### Hooks
|
|
23
|
-
|
|
24
|
-
- `useOGrid` — Orchestrator: pagination, sorting, filtering, visibility, editing, row selection, status bar, grid API
|
|
25
|
-
- `useDataGridState` — All DataGridTable state: layout, selection, editing, interaction, context menu, view models
|
|
26
|
-
- `useColumnHeaderFilterState` — Filter popover (open, temp values, apply/clear, people search debounce)
|
|
27
|
-
- `useColumnChooserState` — Column visibility dropdown
|
|
28
|
-
- `useInlineCellEditorState` — Inline cell editor
|
|
29
|
-
- `useRichSelectState` — Searchable rich select dropdown
|
|
30
|
-
- `useSideBarState` — Side bar panel management
|
|
31
|
-
- `useActiveCell`, `useCellSelection`, `useCellEditing`, `useRowSelection`, `useKeyboardNavigation`, `useClipboard`, `useFillHandle`, `useUndoRedo`, `useContextMenu`, `useColumnResize`, `useFilterOptions`, `useDebounce`
|
|
32
|
-
|
|
33
|
-
### Headless Components
|
|
34
|
-
|
|
35
|
-
`OGridLayout` · `StatusBar` · `GridContextMenu` · `SideBar` · `MarchingAntsOverlay`
|
|
36
|
-
|
|
37
|
-
### Utilities
|
|
38
|
-
|
|
39
|
-
`processClientSideData` · `exportToCsv` · `getCellValue` · `flattenColumns` · `buildHeaderRows` · `getPaginationViewModel` · `getHeaderFilterConfig` · `getCellRenderDescriptor` · `computeAggregations` · `formatShortcut` · `GRID_CONTEXT_MENU_ITEMS`
|
|
3
|
+
React hooks and headless components for OGrid data grids.
|
|
40
4
|
|
|
41
5
|
## Install
|
|
42
6
|
|
|
@@ -44,12 +8,10 @@ React hooks and headless components for [OGrid](https://github.com/alaarab/ogrid
|
|
|
44
8
|
npm install @alaarab/ogrid-react
|
|
45
9
|
```
|
|
46
10
|
|
|
47
|
-
|
|
11
|
+
You typically don't need to install this directly - the UI packages (`@alaarab/ogrid-react-radix`, `@alaarab/ogrid-react-fluent`, `@alaarab/ogrid-react-material`) re-export everything from this package.
|
|
48
12
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
## License
|
|
13
|
+
```tsx
|
|
14
|
+
import { useOGrid, type IColumnDef } from '@alaarab/ogrid-react';
|
|
15
|
+
```
|
|
54
16
|
|
|
55
|
-
|
|
17
|
+
See the [OGrid docs](https://alaarab.github.io/ogrid/) for full documentation.
|
package/dist/esm/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {getPaginationViewModel,resolveCellDisplayContent,resolveCellStyle,buildInlineEditorProps,buildPopoverEditorProps,createGridDataAccessor,flattenColumns,validateColumns,validateRowIds,columnLetterToIndex,getCellValue,rangesEqual,normalizeSelectionRange,formatSelectionAsTsv,parseTsvClipboard,applyPastedValues,applyCutClear,applyRangeRowSelection,computeRowSelectionState,applyCellDeletion,getScrollTopForRow,computeTabNavigation,computeArrowNavigation,UndoRedoStack,buildCellIndex,applyFillValues,DEFAULT_MIN_COLUMN_WIDTH,CELL_PADDING,CHECKBOX_COLUMN_WIDTH,computeAggregations,getDataGridStatusBarConfig,PEOPLE_SEARCH_DEBOUNCE_MS,measureColumnContentWidth,getPinStateForColumn,validateVirtualScrollConfig,computeVisibleColumnRange,buildHeaderRows,formatCellReference,CellDescriptorCache,GRID_BORDER_RADIUS,getStatusBarParts,getContextMenuHandlers,GRID_CONTEXT_MENU_ITEMS,formatShortcut,measureRange,injectGlobalStyles,getColumnHeaderMenuItems,calculateDropTarget,reorderColumnArray,computeNextSortState,mergeFilter,getMultiSelectFilterFields,deriveFilterOptionsFromData,processClientSideData,processClientSideDataAsync,resolveResponsiveConfig,applyResponsiveHiding,parseValue,ROW_NUMBER_COLUMN_MIN_WIDTH,ROW_NUMBER_COLUMN_ID,computeAutoScrollSpeed}from'@alaarab/ogrid-core';export{CELL_PADDING,CHECKBOX_COLUMN_WIDTH,COLUMN_HEADER_MENU_ITEMS,CellDescriptorCache,DEFAULT_MIN_COLUMN_WIDTH,GRID_BORDER_RADIUS,GRID_CONTEXT_MENU_ITEMS,MAX_PAGE_BUTTONS,PAGE_SIZE_OPTIONS,ROW_NUMBER_COLUMN_ID,ROW_NUMBER_COLUMN_MIN_WIDTH,ROW_NUMBER_COLUMN_WIDTH,UndoRedoStack,areGridRowPropsEqual,booleanParser,buildCsvHeader,buildCsvRows,buildHeaderRows,clampSelectionToBounds,computeAggregations,computeAutoScrollSpeed,computeTabNavigation,currencyParser,dateParser,deriveFilterOptionsFromData,emailParser,escapeCsvValue,exportToCsv,findCtrlArrowTarget,flattenColumns,formatCellReference,formatCellValueForTsv,formatSelectionAsTsv,formatShortcut,getCellRenderDescriptor,getCellValue,getColumnHeaderMenuItems,getContextMenuHandlers,getDataGridStatusBarConfig,getFilterField,getHeaderFilterConfig,getMultiSelectFilterFields,getPaginationViewModel,getStatusBarParts,indexToColumnLetter,isInSelectionRange,isRowInRange,mergeFilter,normalizeSelectionRange,numberParser,parseTsvClipboard,parseValue,partitionColumnsForVirtualization,processClientSideData,rangesEqual,toUserLike,triggerCsvDownload}from'@alaarab/ogrid-core';import*as Pe from'react';import {memo,useState,useRef,useCallback,useEffect,useMemo,useImperativeHandle,useLayoutEffect,forwardRef}from'react';import {FORMULA_REF_COLORS,FormulaEngine,deriveFormulaBarText,processFormulaBarCommit,insertReferenceAtCursor,extractFormulaReferences,FORMULA_BAR_STYLES,handleFormulaBarKeyDown}from'@alaarab/ogrid-core/formula';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useVirtualizer}from'@tanstack/react-virtual';import {createPortal}from'react-dom';function L(o){let e=useRef(o);return e.current=o,e}function Za(o,e){if(o.length!==e.length)return false;for(let t=0;t<o.length;t++)if(o[t]!==e[t])return false;return true}var Or={},ao={};function ln(o,e){let t=useRef(e);Za(t.current,e)||(t.current=e);let n=t.current,l=L(o),[u,s]=useState(Or),[d,i]=useState(ao),r=useCallback(async()=>{let m=l.current,R="fetchFilterOptions"in m&&typeof m.fetchFilterOptions=="function"?m.fetchFilterOptions.bind(m):void 0;if(!R){s(Or),i(ao);return}let a={};n.forEach(c=>{a[c]=true;}),i(a);let p={};await Promise.all(n.map(async c=>{try{p[c]=await R(c);}catch{p[c]=[];}})),s(p),i(ao);},[n,l]);return useEffect(()=>{r().catch(()=>{});},[r]),{filterOptions:u,loadingOptions:d}}function Mr(o,e,t){return resolveCellDisplayContent(o,e,t)}function Ur(o,e,t){return resolveCellStyle(o,e,t)}function kr(o,e,t,n){return {...buildInlineEditorProps(o,e,t,n),column:e}}function Ar(o,e,t,n,l){return {...buildPopoverEditorProps(o,e,t,n,l),column:e}}function Lr(o,e,t){return {"data-row-index":o.rowIndex,"data-col-index":o.globalColIndex,...o.isActive?{"data-active-cell":"true"}:{},...o.isInRange?{"data-in-range":"true"}:{},tabIndex:o.isActive?0:-1,onPointerDown:n=>{t.setEditingCell(null),t.handleCellMouseDown(n,o.rowIndex,o.globalColIndex);},onClick:()=>t.setActiveCell({rowIndex:o.rowIndex,columnIndex:o.globalColIndex}),onContextMenu:t.handleCellContextMenu,...o.canEditAny?{role:"button",onDoubleClick:()=>t.setEditingCell({rowId:o.rowId,columnId:e})}:{}}}var xi={getFormulaValue:()=>{},hasFormula:()=>false,getFormula:()=>{},setFormula:()=>{},onCellChanged:()=>{},getPrecedents:()=>[],getDependents:()=>[],getAuditTrail:()=>null,enabled:false};function an(o){let{formulas:e,items:t,flatColumns:n,initialFormulas:l,onFormulaRecalc:u,formulaFunctions:s,namedRanges:d,sheets:i}=o,r=L(t),m=L(n),R=L(u),a=useRef(null);e&&!a.current?a.current=new FormulaEngine({customFunctions:s,namedRanges:d}):!e&&a.current&&(a.current=null),useEffect(()=>{if(!(!a.current||!i)){for(let[y,b]of Object.entries(i))a.current.registerSheet(y,b);return ()=>{if(!(!a.current||!i))for(let y of Object.keys(i))a.current.unregisterSheet(y);}}},[i]);let p=useCallback(()=>createGridDataAccessor(r.current,m.current),[r,m]),c=useRef(false);useEffect(()=>{if(e&&a.current&&l&&!c.current){c.current=true;let y=p(),b=a.current.loadFormulas(l,y);b.updatedCells.length>0&&R.current?.(b);}},[e,l,p,R]);let f=useCallback((y,b)=>a.current?.getValue(y,b),[]),C=useCallback((y,b)=>a.current?.hasFormula(y,b)??false,[]),g=useCallback((y,b)=>a.current?.getFormula(y,b),[]),h=useCallback((y,b,I)=>{if(!a.current)return;let D=p(),v=a.current.setFormula(y,b,I,D);v.updatedCells.length>0&&R.current?.(v);},[p,R]),S=useCallback((y,b)=>{if(!a.current)return;let I=p(),D=a.current.onCellChanged(y,b,I);D.updatedCells.length>0&&R.current?.(D);},[p,R]),x=useCallback((y,b)=>a.current?.getPrecedents(y,b)??[],[]),w=useCallback((y,b)=>a.current?.getDependents(y,b)??[],[]),E=useCallback((y,b)=>a.current?.getAuditTrail(y,b)??null,[]);return e?{getFormulaValue:f,hasFormula:C,getFormula:g,setFormula:h,onCellChanged:S,getPrecedents:x,getDependents:w,getAuditTrail:E,enabled:true}:xi}function sn(o){let{activeCol:e,activeRow:t,activeCellRef:n,getFormula:l,getRawValue:u,setFormula:s,onCellValueChanged:d}=o,[i,r]=useState(false),[m,R]=useState(""),a=useRef(false),p=useRef(null),c=useMemo(()=>deriveFormulaBarText(e,t,l,u),[e,t,l,u]);useEffect(()=>{r(false),a.current=false;},[e,t]);let f=useCallback(()=>{R(c),r(true),a.current=true;},[c]),C=useCallback(E=>{R(E);},[]),g=useCallback(()=>{e==null||t==null||!s||(processFormulaBarCommit(m,e,t,s,d),r(false),a.current=false);},[e,t,m,s,d]),h=useCallback(()=>{r(false),a.current=false,R("");},[]),S=useCallback(E=>{if(!a.current||!m.startsWith("="))return false;let y=p.current?.selectionStart??m.length,b=insertReferenceAtCursor(m,y,E);return R(b.text),setTimeout(()=>{p.current&&(p.current.selectionStart=b.cursorPos,p.current.selectionEnd=b.cursorPos,p.current.focus());},0),true},[m]),x=i?m:c,w=useMemo(()=>extractFormulaReferences(x),[x]);return {cellRef:n,formulaText:i?m:c,isEditing:i,onInputChange:C,onCommit:g,onCancel:h,startEditing:f,referencedCells:w,isFormulaBarEditing:a,insertReference:S,inputRef:p}}function Fo({cellRef:o,formulaText:e,isEditing:t,onInputChange:n,onCommit:l,onCancel:u,startEditing:s,inputRef:d}){let i=useRef(null),r=d??i;return useEffect(()=>{t&&r.current&&r.current.focus();},[t,r]),jsxs("div",{style:FORMULA_BAR_STYLES.bar,role:"toolbar","aria-label":"Formula bar",children:[jsx("div",{style:FORMULA_BAR_STYLES.nameBox,"aria-label":"Active cell reference",children:o??"\u2014"}),jsx("div",{style:FORMULA_BAR_STYLES.fxLabel,"aria-hidden":"true",children:"fx"}),jsx("input",{ref:r,type:"text",style:FORMULA_BAR_STYLES.input,value:e,readOnly:!t,onChange:m=>n(m.target.value),onKeyDown:m=>handleFormulaBarKeyDown(m.key,()=>m.preventDefault(),l,u),onClick:()=>{t||s();},onDoubleClick:()=>{t||s();},"aria-label":"Formula input",spellCheck:false,autoComplete:"off"})]})}var Ai={display:"flex",alignItems:"center",borderTop:"1px solid var(--ogrid-border, #e0e0e0)",background:"var(--ogrid-header-bg, #f5f5f5)",minHeight:30,overflowX:"auto",overflowY:"hidden",gap:0,fontSize:12},Li={background:"none",border:"none",cursor:"pointer",padding:"4px 10px",fontSize:16,lineHeight:"22px",color:"var(--ogrid-fg-secondary, #666)",flexShrink:0},tl={background:"none",border:"none",borderBottom:"2px solid transparent",cursor:"pointer",padding:"4px 16px",fontSize:12,lineHeight:"22px",color:"var(--ogrid-fg, #242424)",whiteSpace:"nowrap",position:"relative"},Gi={...tl,fontWeight:600,borderBottomColor:"var(--ogrid-primary, #217346)",background:"var(--ogrid-bg, #fff)"};function Oo({sheets:o,activeSheet:e,onSheetChange:t,onSheetAdd:n}){let l=useCallback(u=>{let s=u.currentTarget.dataset.sheetId;s&&t(s);},[t]);return jsxs("div",{style:Ai,role:"tablist","aria-label":"Sheet tabs",children:[n&&jsx("button",{type:"button",style:Li,onClick:n,title:"Add sheet","aria-label":"Add sheet",children:"+"}),o.map(u=>{let s=u.id===e,d=s?Gi:tl,i=u.color?{...d,borderBottomColor:u.color}:d;return jsx("button",{type:"button",role:"tab","aria-selected":s,style:i,"data-sheet-id":u.id,onClick:l,children:u.name},u.id)})]})}function rl(o){let{controlledPage:e,controlledPageSize:t,defaultPageSize:n,onPageChange:l,onPageSizeChange:u}=o,[s,d]=useState(1),[i,r]=useState(n),m=e??s,R=t??i,a=useCallback(c=>{e===void 0&&d(c),l?.(c);},[e,l]),p=useCallback(c=>{t===void 0&&r(c),u?.(c),a(1);},[t,u,a]);return {page:m,pageSize:R,setPage:a,setPageSize:p}}function al(o){let{controlledSort:e,defaultSortField:t,defaultSortDirection:n,onSortChange:l,setPage:u}=o,[s,d]=useState({field:t,direction:n}),i=e??s,r=useCallback(R=>{e===void 0&&d(R),l?.(R),u(1);},[e,l,u]),m=useCallback((R,a)=>{r(computeNextSortState(i,R,a));},[i,r]);return {sort:i,setSort:r,handleSort:m,defaultSortField:t,defaultSortDirection:n}}function il(o,e){let t=useRef(o);return e(o,t.current)||(t.current=o),t.current}function zi(o,e){let t=Object.keys(o),n=Object.keys(e);if(t.length!==n.length)return false;for(let l=0;l<n.length;l++)if(o[n[l]]!==e[n[l]])return false;return true}var _i={},Wi={fetchFilterOptions:void 0};function ul(o){let{controlledFilters:e,onFiltersChange:t,setPage:n,columns:l,displayData:u,dataSource:s}=o,[d,i]=useState({}),r=e??d,m=useCallback(x=>{e===void 0&&i(x),t?.(x),n(1);},[e,t,n]),R=useCallback((x,w)=>{m(mergeFilter(r,x,w));},[r,m]),a=il(r,(x,w)=>zi(x,w)),p=useMemo(()=>Object.values(r).some(x=>x!==void 0),[r]),c=useMemo(()=>getMultiSelectFilterFields(l),[l]),f=s??Wi,{filterOptions:C,loadingOptions:g}=ln(f,c),h=s?.fetchFilterOptions!=null,S=useMemo(()=>h?C:deriveFilterOptionsFromData(u,l),[h,u,l,C]);return {filters:r,setFilters:m,handleFilterChange:R,stableFilters:a,hasActiveFilters:p,clientFilterOptions:S,loadingFilterOptions:s?.fetchFilterOptions?g:_i}}function cl(o){let{isServerSide:e,dataSource:t,displayData:n,columns:l,stableFilters:u,sort:s,page:d,pageSize:i,onError:r,onFirstDataRendered:m,workerSort:R}=o,a=!e,p=R===true||R==="auto"&&n.length>5e3,c=useMemo(()=>{if(!a||p)return null;let k=processClientSideData(n,l,u,s.field,s.direction),O=k.length,V=(d-1)*i;return {items:k.slice(V,V+i),totalCount:O}},[a,p,n,l,u,s.field,s.direction,d,i]),[f,C]=useState(null),g=useRef(0);useEffect(()=>{if(!a||!p){C(null);return}let k=++g.current;processClientSideDataAsync(n,l,u,s.field,s.direction).then(O=>{if(k!==g.current)return;let V=O.length,H=(d-1)*i,Y=O.slice(H,H+i);C({items:Y,totalCount:V});});},[a,p,n,l,u,s.field,s.direction,d,i]);let[h,S]=useState([]),[x,w]=useState(0),[E,y]=useState(true),b=useRef(0),[I,D]=useState(0),v=L(t),P=L(r);useEffect(()=>{if(!e||!v.current){e||y(false);return}let k=v.current,O=++b.current;y(true),k.fetchPage({page:d,pageSize:i,sort:{field:s.field,direction:s.direction},filters:u}).then(V=>{O===b.current&&(S(V.items),w(V.totalCount));}).catch(V=>{O===b.current&&(P.current?.(V),S([]),w(0));}).finally(()=>{O===b.current&&y(false);});},[e,d,i,s.field,s.direction,u,I,v,P]);let A=c??f,G=a&&A?A.items:h,z=a&&A?A.totalCount:x,W=L(m),X=useRef(false);return useEffect(()=>{!X.current&&G.length>0&&(X.current=true,W.current?.());},[G.length,W]),{displayItems:G,displayTotalCount:z,serverLoading:E,refreshData:()=>D(k=>k+1)}}var ml=["columns","filters"];function cn(o){let{config:e}=o,t=e!=null&&e!==false,n=useMemo(()=>{if(!t||e===true)return {panels:ml,position:"right",defaultPanel:null};let i=e;return {panels:i.panels??ml,position:i.position??"right",defaultPanel:i.defaultPanel??null}},[t,e]),[l,u]=useState(n.defaultPanel),s=useCallback(i=>{u(r=>r===i?null:i);},[]),d=useCallback(()=>{u(null);},[]);return {isEnabled:t,activePanel:l,setActivePanel:u,panels:n.panels,position:n.position,isOpen:l!==null,toggle:s,close:d}}var Qi=25,es={},ts={fontFamily:"monospace",fontSize:"12px",fontWeight:500,padding:"2px 8px",border:"1px solid var(--ogrid-border, #e0e0e0)",borderRadius:3,background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",minWidth:48,textAlign:"center",lineHeight:"20px",userSelect:"none"};function dn(o,e){let{columns:t,getRowId:n,data:l,dataSource:u,page:s,pageSize:d,sort:i,filters:r,visibleColumns:m,isLoading:R,onPageChange:a,onPageSizeChange:p,onSortChange:c,onFiltersChange:f,onVisibleColumnsChange:C,columnOrder:g,onColumnOrderChange:h,onColumnResized:S,onColumnPinned:x,defaultPageSize:w=Qi,defaultSortBy:E,defaultSortDirection:y="asc",toolbar:b,toolbarBelow:I,emptyState:D,entityLabelPlural:v="items",className:P,layoutMode:A="fill",suppressHorizontalScroll:G,editable:z,cellSelection:W,onCellValueChanged:X,onUndo:k,onRedo:O,canUndo:V,canRedo:H,rowSelection:Y="none",selectedRows:M,onSelectionChange:_,showRowNumbers:N,cellReferences:T,statusBar:B,pageSizeOptions:F,sideBar:J,stickyHeader:$,fullScreen:Z,onFirstDataRendered:K,onError:j,columnChooser:q,columnReorder:te,responsiveColumns:ae,virtualScroll:De,rowHeight:Ye,density:Ze="normal",workerSort:Ke,formulas:Ce,initialFormulas:st,onFormulaRecalc:Ae,formulaFunctions:ut,namedRanges:ct,sheets:dt,sheetDefs:Le,activeSheet:je,onSheetChange:he,onSheetAdd:Ge,"aria-label":Je,"aria-labelledby":Qe}=o,Xe=L(n),Se=useCallback(U=>Xe.current(U),[Xe]),et=L(h),mt=h!=null,ge=useMemo(()=>mt?U=>et.current?.(U):void 0,[mt,et]),zt=L(X),_t=X!=null,Wt=useMemo(()=>_t?U=>zt.current?.(U):void 0,[_t,zt]),pt=L(k),wt=k!=null,Kt=useMemo(()=>wt?()=>pt.current?.():void 0,[wt,pt]),Pt=L(O),Be=O!=null,jt=useMemo(()=>Be?()=>Pt.current?.():void 0,[Be,Pt]),Xt=q===false?"none":q==="sidebar"?"sidebar":"toolbar",ne=useMemo(()=>flattenColumns(t),[t]),Ee=u!=null,Tt=useRef(false);useEffect(()=>{validateColumns(ne);},[ne]);let Jn=E??ne[0]?.columnId??"",[Qn,qt]=useState([]),[Dt,eo]=useState(false),$t=l??Qn,to=R??Dt,oe=rl({controlledPage:s,controlledPageSize:d,defaultPageSize:w,onPageChange:a,onPageSizeChange:p}),ce=al({controlledSort:i,defaultSortField:Jn,defaultSortDirection:y,onSortChange:c,setPage:oe.setPage}),ee=ul({controlledFilters:r,onFiltersChange:f,setPage:oe.setPage,columns:ne,displayData:$t,dataSource:u}),de=cl({isServerSide:Ee,dataSource:u,displayData:$t,columns:ne,stableFilters:ee.stableFilters,sort:ce.sort,page:oe.page,pageSize:oe.pageSize,onError:j,onFirstDataRendered:K,workerSort:Ke});useEffect(()=>{let U=de.displayItems;!Tt.current&&U.length>0&&(Tt.current=true,validateRowIds(U,Se));},[de.displayItems,Se]);let[Et,Yt]=useState(()=>{let U=ne.filter(Q=>Q.defaultVisible!==false).map(Q=>Q.columnId);return new Set(U.length>0?U:ne.map(Q=>Q.columnId))}),Zt=useRef(ne.length);useEffect(()=>{let U=Zt.current;if(Zt.current=ne.length,m===void 0&&U===0&&ne.length>0&&Et.size===0){let Q=ne.filter(ie=>ie.defaultVisible!==false).map(ie=>ie.columnId);Yt(new Set(Q.length>0?Q:ne.map(ie=>ie.columnId)));}},[ne,m,Et.size]);let be=m??Et,Te=useCallback(U=>{m===void 0&&Yt(U),C?.(U);},[m,C]),qe=useCallback((U,Q)=>{let ie=new Set(be);Q?ie.add(U):ie.delete(U),Te(ie);},[be,Te]),[no,tt]=useState(new Set),nt=M??no,Jt=useCallback(U=>{M===void 0&&tt(new Set(U.selectedRowIds)),_?.(U);},[M,_]),[Ft,Qt]=useState({}),[Ot,en]=useState(()=>{let U={};for(let Q of flattenColumns(t))Q.pinned&&(U[Q.columnId]=Q.pinned);return U}),tn=useCallback((U,Q)=>{Qt(ie=>({...ie,[U]:Q})),S?.(U,Q);},[S]),ft=useCallback((U,Q)=>{en(ie=>{if(Q===null){let{[U]:lo,...ja}=ie;return ja}return {...ie,[U]:Q}}),x?.(U,Q);},[x]),gt=L(be),nn=L(ce.sort),Ct=L(g),Rt=L(Ft),Mt=L(Ot),ve=L(ee.filters),Ve=L(nt),$e=L(de.displayItems),mr=L(Se),on=L(ne);useImperativeHandle(e,()=>({setRowData:U=>{Ee||qt(U);},setLoading:eo,getColumnState:()=>({visibleColumns:Array.from(gt.current),sort:nn.current,columnOrder:Ct.current??void 0,columnWidths:Object.keys(Rt.current).length>0?Rt.current:void 0,filters:Object.keys(ve.current).length>0?ve.current:void 0,pinnedColumns:Object.keys(Mt.current).length>0?Mt.current:void 0}),applyColumnState:U=>{U.visibleColumns&&Te(new Set(U.visibleColumns)),U.sort&&ce.setSort(U.sort),U.columnOrder&&ge&&ge(U.columnOrder),U.columnWidths&&Qt(U.columnWidths),U.filters&&ee.setFilters(U.filters),U.pinnedColumns&&en(U.pinnedColumns);},setFilterModel:ee.setFilters,getSelectedRows:()=>Array.from(Ve.current),setSelectedRows:U=>{M===void 0&&tt(new Set(U));},selectAll:()=>{let U=$e.current,Q=new Set(U.map(ie=>mr.current(ie)));M===void 0&&tt(Q),_?.({selectedRowIds:Array.from(Q),selectedItems:U});},deselectAll:()=>{M===void 0&&tt(new Set),_?.({selectedRowIds:[],selectedItems:[]});},clearFilters:()=>ee.setFilters({}),clearSort:()=>ce.setSort({field:ce.defaultSortField,direction:ce.defaultSortDirection}),resetGridState:U=>{ee.setFilters({}),ce.setSort({field:ce.defaultSortField,direction:ce.defaultSortDirection}),U?.keepSelection||(M===void 0&&tt(new Set),_?.({selectedRowIds:[],selectedItems:[]}));},getDisplayedRows:()=>$e.current,refreshData:()=>{Ee&&de.refreshData();},getColumnOrder:()=>Ct.current??on.current.map(U=>U.columnId),setColumnOrder:U=>{ge?.(U);},scrollToRow:()=>{}}),[Ee,Te,ce,ee,ge,M,_,de,Ct,Rt,on,$e,Ve,ve,mr,Mt,nn,gt]);let pr=useMemo(()=>{if(!B)return;if(typeof B=="object")return B;let U=Ee?de.displayTotalCount:l?.length??0,Q=de.displayTotalCount;return {totalCount:U,filteredCount:ee.hasActiveFilters?Q:void 0,selectedCount:nt.size,suppressRowCount:true}},[B,Ee,l,de.displayTotalCount,ee.hasActiveFilters,nt.size]),Fe=cn({config:J}),rn=useMemo(()=>ne.map(U=>({columnId:U.columnId,name:U.name,required:U.required===true})),[ne]),fr=useMemo(()=>ne.filter(U=>U.filterable&&U.filterable.type).map(U=>({columnId:U.columnId,name:U.name,filterField:U.filterable?.filterField??U.columnId,filterType:U.filterable?.type})),[ne]),gr=useMemo(()=>Fe.isEnabled?{activePanel:Fe.activePanel,onPanelChange:Fe.setActivePanel,panels:Fe.panels,position:Fe.position,columns:rn,visibleColumns:be,onVisibilityChange:qe,onSetVisibleColumns:Te,filterableColumns:fr,filters:ee.filters,onFilterChange:ee.handleFilterChange,filterOptions:ee.clientFilterOptions}:null,[Fe.isEnabled,Fe.activePanel,Fe.setActivePanel,Fe.panels,Fe.position,rn,be,qe,Te,fr,ee.filters,ee.handleFilterChange,ee.clientFilterOptions]),[Cr,Ga]=useState(0),Ba=useCallback(U=>{Ga(Q=>Q+1),Ae?.(U);},[Ae]),re=an({formulas:Ce,items:de.displayItems,flatColumns:ne,initialFormulas:st,onFormulaRecalc:Ba,formulaFunctions:ut,namedRanges:ct,sheets:dt}),Rr=useCallback(()=>ee.setFilters({}),[ee]),hr=Ee&&de.serverLoading||to,Sr=N||T||Ce,br=!!(T||Ce),ht=!!T&&!Ce,vr=!!(T||Ce),[oo,Va]=useState(null),[yr,ro]=useState(null),Ir=useCallback(U=>{if(Va(U),U){let Q=U.match(/^([A-Z]+)(\d+)$/);ro(Q?{col:columnLetterToIndex(Q[1]),row:parseInt(Q[2],10)-1}:null);}else ro(null);},[]),Na=useCallback((U,Q)=>{let ie=$e.current,lo=on.current;if(!(Q<0||Q>=ie.length||U<0||U>=lo.length))return getCellValue(ie[Q],lo[U])},[$e,on]),le=sn({activeCol:yr?.col??null,activeRow:yr?.row??null,activeCellRef:oo,getFormula:re.enabled?re.getFormula:void 0,getRawValue:Na,setFormula:re.enabled?re.setFormula:void 0}),Ha=useMemo(()=>({items:de.displayItems,columns:t,getRowId:Se,sortBy:ce.sort.field,sortDirection:ce.sort.direction,onColumnSort:ce.handleSort,visibleColumns:be,columnOrder:g,onColumnOrderChange:ge,onColumnResized:tn,onColumnPinned:ft,pinnedColumns:Ot,initialColumnWidths:Ft,editable:z,cellSelection:W,onCellValueChanged:Wt,onUndo:Kt,onRedo:jt,canUndo:V,canRedo:H,rowSelection:Y,selectedRows:nt,onSelectionChange:Jt,showRowNumbers:Sr,showColumnLetters:br,showNameBox:ht,onActiveCellChange:vr?Ir:void 0,currentPage:oe.page,pageSize:oe.pageSize,statusBar:pr,isLoading:hr,filters:ee.filters,onFilterChange:ee.handleFilterChange,filterOptions:ee.clientFilterOptions,loadingFilterOptions:u?.fetchFilterOptions?ee.loadingFilterOptions:es,peopleSearch:u?.searchPeople,getUserByEmail:u?.getUserByEmail,layoutMode:A,suppressHorizontalScroll:G,stickyHeader:$??true,columnReorder:te,responsiveColumns:ae,virtualScroll:De,rowHeight:Ye,density:Ze,"aria-label":Je,"aria-labelledby":Qe,emptyState:{hasActiveFilters:ee.hasActiveFilters,onClearAll:Rr,message:D?.message,render:D?.render},formulas:Ce,getFormulaValue:re.enabled?re.getFormulaValue:void 0,hasFormula:re.enabled?re.hasFormula:void 0,getFormula:re.enabled?re.getFormula:void 0,setFormula:re.enabled?re.setFormula:void 0,onFormulaCellChanged:re.enabled?re.onCellChanged:void 0,getPrecedents:re.enabled?re.getPrecedents:void 0,getDependents:re.enabled?re.getDependents:void 0,getAuditTrail:re.enabled?re.getAuditTrail:void 0,formulaVersion:Cr,formulaReferences:le.referencedCells.length>0?le.referencedCells:void 0,onFormulaInsertReference:le.insertReference}),[de.displayItems,t,Se,ce.sort.field,ce.sort.direction,ce.handleSort,be,g,ge,tn,ft,Ot,Ft,z,W,Wt,Kt,jt,V,H,Y,nt,Jt,Sr,br,ht,vr,Ir,oe.page,oe.pageSize,pr,hr,ee.filters,ee.handleFilterChange,ee.clientFilterOptions,u,ee.loadingFilterOptions,A,G,$,te,ae,De,Ye,Ze,Je,Qe,ee.hasActiveFilters,Rr,D,Ce,re,Cr,le.referencedCells,le.insertReference]),za=useMemo(()=>({page:oe.page,pageSize:oe.pageSize,displayTotalCount:de.displayTotalCount,setPage:oe.setPage,setPageSize:oe.setPageSize,pageSizeOptions:F,entityLabelPlural:v}),[oe.page,oe.pageSize,de.displayTotalCount,oe.setPage,oe.setPageSize,F,v]),_a=useMemo(()=>({columns:rn,visibleColumns:be,onVisibilityChange:qe,onSetVisibleColumns:Te,placement:Xt}),[rn,be,qe,Te,Xt]),xr=useMemo(()=>ht?Pe.createElement("div",{style:ts,"aria-label":"Active cell reference"},oo??"\u2014"):null,[ht,oo]),wr=useMemo(()=>ht?Pe.createElement(Pe.Fragment,null,xr,b):b,[ht,xr,b]),Pr=useMemo(()=>{if(Ce)return Pe.createElement(Fo,{cellRef:le.cellRef,formulaText:le.formulaText,isEditing:le.isEditing,onInputChange:le.onInputChange,onCommit:le.onCommit,onCancel:le.onCancel,startEditing:le.startEditing,inputRef:le.inputRef})},[Ce,le.cellRef,le.formulaText,le.isEditing,le.onInputChange,le.onCommit,le.onCancel,le.startEditing,le.inputRef]),Tr=useMemo(()=>{if(!(!Le||Le.length===0||!je||!he))return Pe.createElement(Oo,{sheets:Le,activeSheet:je,onSheetChange:he,onSheetAdd:Ge})},[Le,je,he,Ge]),Wa=useMemo(()=>({toolbar:wr,toolbarBelow:I,className:P,emptyState:D,sideBarProps:gr,fullScreen:Z,formulaBar:Pr,sheetTabs:Tr}),[wr,I,P,D,gr,Z,Pr,Tr]),Ka=useMemo(()=>({hasActiveFilters:ee.hasActiveFilters,setFilters:ee.setFilters}),[ee.hasActiveFilters,ee.setFilters]);return {dataGridProps:Ha,pagination:za,columnChooser:_a,layout:Wa,filters:Ka}}function mn(o,e){let[t,n]=useState(null),l=useRef(t);l.current=t;let u=useCallback(d=>{let i=l.current;i!==d&&(i&&d&&i.rowIndex===d.rowIndex&&i.columnIndex===d.columnIndex||n(d));},[]),s=useRef(0);return useLayoutEffect(()=>{if(t==null||o?.current==null||e!=null)return;let{rowIndex:d,columnIndex:i}=t,r=`[data-row-index="${d}"][data-col-index="${i}"]`,m=o.current.querySelector(r);m&&document.activeElement!==m&&typeof m.focus=="function"&&m.focus({preventScroll:true});},[t,e,o]),useEffect(()=>{t==null||o?.current==null||e!=null||(cancelAnimationFrame(s.current),s.current=requestAnimationFrame(()=>{let d=o?.current;if(!d)return;let{rowIndex:i,columnIndex:r}=t,m=`[data-row-index="${i}"][data-col-index="${r}"]`,R=d.querySelector(m);if(R){let a=d.querySelector("thead"),p=a?a.getBoundingClientRect().height:0,c=d.getBoundingClientRect(),f=R.getBoundingClientRect(),C=c.top+p;f.top<C?d.scrollTop-=C-f.top:f.bottom>c.bottom&&(d.scrollTop+=f.bottom-c.bottom),f.left<c.left?d.scrollLeft-=c.left-f.left:f.right>c.right&&(d.scrollLeft+=f.right-c.right);}}));},[t,e,o]),useEffect(()=>()=>cancelAnimationFrame(s.current),[]),{activeCell:t,setActiveCell:u}}function pn(){let[o,e]=useState(null),[t,n]=useState(void 0);return {editingCell:o,setEditingCell:e,pendingEditorValue:t,setPendingEditorValue:n}}function fn(){let[o,e]=useState(null),t=useCallback(l=>{l.preventDefault?.(),e({x:l.clientX,y:l.clientY});},[]),n=useCallback(()=>{e(null);},[]);return {contextMenuPosition:o,setContextMenuPosition:e,handleCellContextMenu:t,closeContextMenu:n}}var Go="data-drag-range",Gt="data-drag-anchor",fe=40,is=16;function gn(o){let{colOffset:e,rowCount:t,visibleColCount:n,setActiveCell:l,wrapperRef:u}=o,s=L(e),[d,i]=useState(null),r=useRef(false),[m,R]=useState(false),a=useRef(false),p=useRef(null),c=useRef(0),f=useRef(null),C=useRef(null),g=useRef(d);g.current=d;let h=useCallback(y=>{rangesEqual(g.current,y)||i(y);},[]),S=useCallback((y,b,I)=>{if(y.button!==0)return;let D=s.current;if(I<D)return;y.preventDefault();let v=I-D,P=g.current;if(y.shiftKey&&P!=null)h(normalizeSelectionRange({startRow:P.startRow,startCol:P.startCol,endRow:b,endCol:v})),l({rowIndex:b,columnIndex:I});else {p.current={row:b,col:v},a.current=false;let A={startRow:b,startCol:v,endRow:b,endCol:v};h(A),f.current=A,l({rowIndex:b,columnIndex:I}),r.current=true,setTimeout(()=>E.current?.(A),0);}},[l,s,h]),x=useCallback(()=>{t===0||n===0||(h({startRow:0,startCol:0,endRow:t-1,endCol:n-1}),l({rowIndex:0,columnIndex:s.current}));},[t,n,l,s,h]),w=useRef(null),E=useRef(null);return useEffect(()=>{let y=new Set,b=null,I=null,D=null,v=(M,_,N,T,B,F,J,$)=>{M.hasAttribute(Go)||M.setAttribute(Go,""),$&&_===$.row&&N===$.col?M.hasAttribute(Gt)||M.setAttribute(Gt,""):M.hasAttribute(Gt)&&M.removeAttribute(Gt),y.add(M);},P=M=>{M.removeAttribute(Go),M.removeAttribute(Gt);},A=(M,_,N,T,B)=>{let F=b?.get(`${M},${N+B}`),J=b?.get(`${_},${T+B}`);if(!F||!J)return;let $=F.closest("td"),Z=J.closest("td");if(!$||!Z||!D&&(D=F.closest("table")?.parentElement,!D))return;I||(I=document.createElement("div"),I.style.position="absolute",I.style.border="2px solid var(--ogrid-selection, #217346)",I.style.pointerEvents="none",I.style.zIndex="4",I.style.boxSizing="border-box",D.appendChild(I));let K=D.getBoundingClientRect(),j=$.getBoundingClientRect(),q=Z.getBoundingClientRect();I.style.top=`${Math.round(j.top-K.top)}px`,I.style.left=`${Math.round(j.left-K.left)}px`,I.style.width=`${Math.round(q.right-j.left)}px`,I.style.height=`${Math.round(q.bottom-j.top)}px`,I.style.display="block";},G=()=>{I&&(I.style.display="none");},z=()=>{I?.remove(),I=null,D=null;},W=M=>{if(!u.current||!r.current)return;let N=Math.min(M.startRow,M.endRow),T=Math.max(M.startRow,M.endRow),B=Math.min(M.startCol,M.endCol),F=Math.max(M.startCol,M.endCol),J=p.current,$=s.current;for(let K of y){let j=parseInt(K.getAttribute("data-row-index")??"",10),q=parseInt(K.getAttribute("data-col-index")??"",10)-$;j>=N&&j<=T&&q>=B&&q<=F||(P(K),y.delete(K));}b||(b=buildCellIndex(u.current));let Z=false;for(let K=N;K<=T;K++)for(let j=B;j<=F;j++){let q=`${K},${j+$}`,te=b?.get(q);te&&!te.isConnected&&!Z&&(Z=true,b=buildCellIndex(u.current),te=b?.get(q)),te&&te.isConnected&&v(te,K,j,N,T,B,F,J);}A(N,T,B,F,$);};E.current=W;let X=()=>{for(let M of y)P(M);y.clear(),b=null,G();},k=(M,_)=>{if(!p.current)return null;let T=document.elementFromPoint(M,_)?.closest?.("[data-row-index][data-col-index]");if(!T)return null;let B=parseInt(T.getAttribute("data-row-index")??"",10),F=parseInt(T.getAttribute("data-col-index")??"",10),J=s.current;if(Number.isNaN(B)||Number.isNaN(F)||F<J)return null;let $=F-J,Z=p.current;return normalizeSelectionRange({startRow:Z.row,startCol:Z.col,endRow:B,endCol:$})},O=()=>{let M=u.current,_=w.current;if(!M||!_||!r.current){V();return}let N=M.getBoundingClientRect(),T=0,B=0;if(_.cy<N.top+fe?B=-computeAutoScrollSpeed(N.top+fe-_.cy):_.cy>N.bottom-fe&&(B=computeAutoScrollSpeed(_.cy-(N.bottom-fe))),_.cx<N.left+fe?T=-computeAutoScrollSpeed(N.left+fe-_.cx):_.cx>N.right-fe&&(T=computeAutoScrollSpeed(_.cx-(N.right-fe))),T===0&&B===0){V();return}C.current||(C.current=setInterval(()=>{let F=u.current,J=w.current;if(!F||!J||!r.current){V();return}let $=F.getBoundingClientRect(),Z=0,K=0;if(J.cy<$.top+fe?K=-computeAutoScrollSpeed($.top+fe-J.cy):J.cy>$.bottom-fe&&(K=computeAutoScrollSpeed(J.cy-($.bottom-fe))),J.cx<$.left+fe?Z=-computeAutoScrollSpeed($.left+fe-J.cx):J.cx>$.right-fe&&(Z=computeAutoScrollSpeed(J.cx-($.right-fe))),Z===0&&K===0){V();return}F.scrollTop+=K,F.scrollLeft+=Z;let j=k(J.cx,J.cy);j&&(f.current=j,W(j));},is));},V=()=>{C.current&&(clearInterval(C.current),C.current=null);},H=M=>{!r.current||!p.current||(a.current||(a.current=true,R(true),b=buildCellIndex(u.current)),w.current={cx:M.clientX,cy:M.clientY},O(),c.current&&cancelAnimationFrame(c.current),c.current=requestAnimationFrame(()=>{c.current=0;let _=w.current;if(!_)return;let N=k(_.cx,_.cy);if(!N)return;let T=f.current;T&&T.startRow===N.startRow&&T.startCol===N.startCol&&T.endRow===N.endRow&&T.endCol===N.endCol||(f.current=N,W(N));}));},Y=()=>{if(!r.current)return;V(),c.current&&(cancelAnimationFrame(c.current),c.current=0),r.current=false;let M=a.current;if(M){let _=w.current;if(_){let T=k(_.cx,_.cy);T&&(f.current=T);}let N=f.current;if(N){h(N);let T=p.current;T&&l({rowIndex:T.row,columnIndex:T.col+s.current});}}X(),f.current=null,w.current=null,p.current=null,M&&R(false);};return window.addEventListener("pointermove",H,true),window.addEventListener("pointerup",Y,true),()=>{window.removeEventListener("pointermove",H,true),window.removeEventListener("pointerup",Y,true),c.current&&cancelAnimationFrame(c.current),V(),z();}},[l,s,h,u]),{selectionRange:d,setSelectionRange:h,handleCellMouseDown:S,handleSelectAllCells:x,isDragging:m}}function Cn(o){let{colOffset:e,beginBatch:t,endBatch:n}=o,l=L(o.items),u=L(o.visibleCols),s=L(o.selectionRange),d=L(o.activeCell),i=L(o.editable),r=L(o.onCellValueChanged),m=L(o.formulas),R=L(o.flatColumns),a=L(o.getFormula),p=L(o.hasFormula),c=L(o.setFormula),f=useRef(null),[C,g]=useState(null),[h,S]=useState(null),x=useRef(null),w=useRef(true);useEffect(()=>()=>{w.current=false;},[]);let E=useCallback(()=>{let v=s.current,P=d.current;return v??(P!=null?{startRow:P.rowIndex,startCol:P.columnIndex-e,endRow:P.rowIndex,endCol:P.columnIndex-e}:null)},[e,s,d]),y=useCallback(()=>{let v=E();if(v==null)return;let P=normalizeSelectionRange(v),A=m.current&&R.current?{colOffset:e,flatColumns:R.current,getFormula:a.current,hasFormula:p.current}:void 0,G=formatSelectionAsTsv(l.current,u.current,P,A);x.current=G,S(P),navigator.clipboard.writeText(G).catch(()=>{});},[E,l,u,m,R,a,p,e]),b=useCallback(()=>{if(i.current===false)return;let v=E();if(v==null||r.current==null)return;let P=normalizeSelectionRange(v);f.current=P,g(P),S(null),y(),S(null);},[E,y,i,r]),I=useCallback(async()=>{if(i.current===false)return;let v=r.current;if(v==null)return;let P;try{P=await navigator.clipboard.readText();}catch{P="";}if(!w.current||(!P.trim()&&x.current!=null&&(P=x.current),!P.trim()))return;let A=E(),G=A?A.startRow:0,z=A?A.startCol:0,W=l.current,X=u.current,k=parseTsvClipboard(P),O=m.current&&R.current?{colOffset:e,flatColumns:R.current,setFormula:c.current}:void 0;t?.();let V=applyPastedValues(k,G,z,W,X,O);for(let H of V)v(H);if(f.current){let H=applyCutClear(f.current,W,X);for(let Y of H)v(Y);f.current=null,g(null);}n?.(),S(null);},[E,l,u,i,r,t,n,m,R,c,e]),D=useCallback(()=>{S(null),g(null),f.current=null;},[]);return {handleCopy:y,handleCut:b,handlePaste:I,cutRange:C,copyRange:h,clearClipboardRanges:D}}function Rn(o){let{items:e,getRowId:t,rowSelection:n,controlledSelectedRows:l,onSelectionChange:u}=o,[s,d]=useState(new Set),i=useRef(-1),r=useMemo(()=>l!=null?l instanceof Set?l:new Set(l):s,[l,s]),m=useCallback(g=>{l===void 0&&d(g),u?.({selectedRowIds:Array.from(g),selectedItems:e.filter(h=>g.has(t(h)))});},[l,u,e,t]),R=L(r),a=L(e),p=useCallback((g,h,S,x)=>{if(n==="single"){m(h?new Set([g]):new Set),i.current=S;return}let w=a.current,E;x&&i.current>=0&&i.current!==S?E=applyRangeRowSelection(i.current,S,h,w,t,R.current):(E=new Set(R.current),h?E.add(g):E.delete(g)),i.current=S,m(E);},[n,t,m,a,R]),c=useCallback(g=>{m(g?new Set(e.map(h=>t(h))):new Set);},[e,t,m]),{allSelected:f,someSelected:C}=useMemo(()=>computeRowSelectionState(r,e,t),[e,r,t]);return {selectedRowIds:r,updateSelection:m,handleRowCheckboxChange:p,handleSelectAll:c,allSelected:f,someSelected:C}}function hn(o){let e=useRef(o);return e.current=o,{handleGridKeyDown:useCallback(n=>{let{data:l,state:u,handlers:s,features:d}=e.current,{items:i,visibleCols:r,colOffset:m,hasCheckboxCol:R,visibleColumnCount:a,getRowId:p}=l,{activeCell:c,selectionRange:f,editingCell:C,selectedRowIds:g}=u,{setActiveCell:h,setSelectionRange:S,setEditingCell:x,handleRowCheckboxChange:w,handleCopy:E,handleCut:y,handlePaste:b,setContextMenu:I,onUndo:D,onRedo:v,clearClipboardRanges:P}=s,{editable:A,onCellValueChanged:G,rowSelection:z,wrapperRef:W,onKeyDown:X,fillDown:k}=d;if(X&&(X(n),n.defaultPrevented))return;let O=i.length-1,V=a-1+m;if(i.length===0)return;if(c===null){["ArrowDown","ArrowUp","ArrowLeft","ArrowRight","Tab","Enter","Home","End","PageDown","PageUp"].includes(n.key)&&(h({rowIndex:0,columnIndex:m}),n.preventDefault());return}let{rowIndex:H,columnIndex:Y}=c,M=Y-m,_=n.shiftKey,N=(T,B)=>{if(T<0||T>=i.length||B<0||B>=r.length)return true;let F=getCellValue(i[T],r[B]);return F==null||F===""};switch(n.key){case "c":if(n.ctrlKey||n.metaKey){if(C!=null)break;n.preventDefault(),E();}break;case "x":if(n.ctrlKey||n.metaKey){if(C!=null)break;n.preventDefault(),y();}break;case "v":if(n.ctrlKey||n.metaKey){if(C!=null)break;n.preventDefault(),b();}break;case "ArrowDown":case "ArrowUp":case "ArrowRight":case "ArrowLeft":{if(C!=null)break;n.preventDefault();let{newRowIndex:T,newColumnIndex:B,newRange:F}=computeArrowNavigation({direction:n.key,rowIndex:H,columnIndex:Y,dataColIndex:M,colOffset:m,maxRowIndex:O,maxColIndex:V,visibleColCount:r.length,isCtrl:n.ctrlKey||n.metaKey,isShift:_,selectionRange:f,isEmptyAt:N});S(F),h({rowIndex:T,columnIndex:B});break}case "Tab":{n.preventDefault();let{rowIndex:T,columnIndex:B}=computeTabNavigation(H,Y,O,V,m,n.shiftKey),F=B-m;S({startRow:T,startCol:F,endRow:T,endCol:F}),h({rowIndex:T,columnIndex:B});break}case "Home":{n.preventDefault();let T=n.ctrlKey?0:H;S({startRow:T,startCol:0,endRow:T,endCol:0}),h({rowIndex:T,columnIndex:m});break}case "End":{n.preventDefault();let T=n.ctrlKey?O:H;S({startRow:T,startCol:a-1,endRow:T,endCol:a-1}),h({rowIndex:T,columnIndex:V});break}case "PageDown":case "PageUp":{n.preventDefault();let T=W.current,B=10,F=36;if(T){let Z=T.querySelector("tbody tr");Z&&Z.offsetHeight>0&&(F=Z.offsetHeight,B=Math.max(1,Math.floor(T.clientHeight/F)));}let J=n.key==="PageDown"?1:-1,$=Math.max(0,Math.min(H+J*B,O));S(_?{startRow:f?.startRow??H,startCol:f?.startCol??M,endRow:$,endCol:f?.endCol??M}:{startRow:$,startCol:M,endRow:$,endCol:M}),h({rowIndex:$,columnIndex:Y}),T&&(T.scrollTop=getScrollTopForRow($,F,T.clientHeight,"center"));break}case "Enter":case "F2":{if(n.preventDefault(),M>=0&&M<r.length){let T=r[M],B=i[H];if(B&&T){let F=T.editable===true||typeof T.editable=="function"&&T.editable(B);A!==false&&F&&G!=null&&x({rowId:p(B),columnId:T.columnId});}}break}case "Escape":n.preventDefault(),C!=null?x(null):(P?.(),h(null),S(null));break;case " ":if(z!=="none"&&Y===0&&R){n.preventDefault();let T=i[H];if(T){let B=p(T),F=g.has(B);w(B,!F,H,n.shiftKey);}}break;case "z":(n.ctrlKey||n.metaKey)&&C==null&&(n.shiftKey&&v?(n.preventDefault(),v()):!n.shiftKey&&D&&(n.preventDefault(),D()));break;case "y":(n.ctrlKey||n.metaKey)&&C==null&&v&&(n.preventDefault(),v());break;case "a":if(n.ctrlKey||n.metaKey){if(C!=null)break;n.preventDefault(),i.length>0&&a>0&&(S({startRow:0,startCol:0,endRow:i.length-1,endCol:a-1}),h({rowIndex:0,columnIndex:m}));}break;case "d":if(n.ctrlKey||n.metaKey){if(C!=null)break;A!==false&&k&&(n.preventDefault(),k());}break;case "Delete":case "Backspace":{if(C!=null||A===false||G==null)break;let T=f??(c!=null?{startRow:c.rowIndex,startCol:c.columnIndex-m,endRow:c.rowIndex,endCol:c.columnIndex-m}:null);if(T==null)break;n.preventDefault();let B=applyCellDeletion(T,i,r);for(let F of B)G(F);break}case "F10":if(n.shiftKey)if(n.preventDefault(),c!=null&&W.current){let T=`[data-row-index="${c.rowIndex}"][data-col-index="${c.columnIndex}"]`,B=W.current.querySelector(T);if(B){let F=B.getBoundingClientRect();I({x:F.left+F.width/2,y:F.top+F.height/2});}else I({x:100,y:100});}else I({x:100,y:100});break;}},[])}}function Sn(o){let{onCellValueChanged:e,maxUndoDepth:t=100}=o,n=L(e),l=useRef(null);l.current===null&&(l.current=new UndoRedoStack(t));let[u,s]=useState(0),[d,i]=useState(0),r=useCallback(()=>{let f=l.current;if(!f)throw new Error("UndoRedoStack not initialized");return f},[]),m=useCallback(f=>{if(!n.current)return;let C=r();C.record(f),C.isBatching||(s(C.historyLength),i(C.redoLength)),n.current(f);},[r,n]),R=useCallback(()=>{r().beginBatch();},[r]),a=useCallback(()=>{let f=r();f.endBatch(),s(f.historyLength),i(f.redoLength);},[r]),p=useCallback(()=>{if(!n.current)return;let f=r(),C=f.undo();if(C){s(f.historyLength),i(f.redoLength);for(let g=C.length-1;g>=0;g--){let h=C[g];n.current({...h,oldValue:h.newValue,newValue:h.oldValue});}}},[r,n]),c=useCallback(()=>{if(!n.current)return;let f=r(),C=f.redo();if(C){s(f.historyLength),i(f.redoLength);for(let g of C)n.current(g);}},[r,n]);return {onCellValueChanged:e?m:void 0,undo:p,redo:c,canUndo:u>0,canRedo:d>0,beginBatch:R,endBatch:a,maxUndoDepth:t}}function bn(o,e){let[t,n]=useState(o);return useEffect(()=>{let l=setTimeout(()=>{n(o);},e);return ()=>clearTimeout(l)},[o,e]),t}var yn="data-drag-range";function In(o){let{items:e,visibleCols:t,editable:n,onCellValueChanged:l,selectionRange:u,setSelectionRange:s,setActiveCell:d,colOffset:i,wrapperRef:r,beginBatch:m,endBatch:R,formulaOptions:a}=o,p=L(l),[c,f]=useState(null),C=useRef({endRow:0,endCol:0}),g=useRef(0),h=useRef(null),S=L(i),x=L(e),w=L(t),E=L(a);useEffect(()=>{if(!c||n===false||!p.current||!r.current)return;C.current={endRow:c.startRow,endCol:c.startCol},h.current=null;let D=new Set,v=buildCellIndex(r.current),P=k=>{if(!r.current)return;let V=Math.min(k.startRow,k.endRow),H=Math.max(k.startRow,k.endRow),Y=Math.min(k.startCol,k.endCol),M=Math.max(k.startCol,k.endCol),_=S.current;for(let N of D){let T=parseInt(N.getAttribute("data-row-index")??"",10),B=parseInt(N.getAttribute("data-col-index")??"",10)-_;T>=V&&T<=H&&B>=Y&&B<=M||(N.removeAttribute(yn),D.delete(N));}for(let N=V;N<=H;N++)for(let T=Y;T<=M;T++){let B=`${N},${T+_}`,F=v?.get(B);F&&!F.isConnected&&(v=buildCellIndex(r.current),F=v.get(B)),F&&(F.hasAttribute(yn)||F.setAttribute(yn,""),D.add(F));}},A=()=>{for(let k of D)k.removeAttribute(yn);D.clear();},G=null,z=(k,O)=>{let H=document.elementFromPoint(k,O)?.closest?.("[data-row-index][data-col-index]");if(!H||!r.current?.contains(H))return null;let Y=parseInt(H.getAttribute("data-row-index")??"",10),M=parseInt(H.getAttribute("data-col-index")??"",10);if(Number.isNaN(Y)||Number.isNaN(M)||M<S.current)return null;let _=M-S.current;return normalizeSelectionRange({startRow:c.startRow,startCol:c.startCol,endRow:Y,endCol:_})},W=k=>{G={cx:k.clientX,cy:k.clientY},g.current&&cancelAnimationFrame(g.current),g.current=requestAnimationFrame(()=>{if(g.current=0,!G)return;let O=z(G.cx,G.cy);if(!O)return;let V=h.current;V&&V.startRow===O.startRow&&V.startCol===O.startCol&&V.endRow===O.endRow&&V.endCol===O.endCol||(h.current=O,C.current={endRow:O.endRow,endCol:O.endCol},P(O));});},X=()=>{if(g.current&&(cancelAnimationFrame(g.current),g.current=0),G){let H=z(G.cx,G.cy);H&&(h.current=H,C.current={endRow:H.endRow,endCol:H.endCol});}A();let k=C.current,O=normalizeSelectionRange({startRow:c.startRow,startCol:c.startCol,endRow:k.endRow,endCol:k.endCol});s(O),d({rowIndex:c.startRow,columnIndex:c.startCol+S.current});let V=applyFillValues(O,c.startRow,c.startCol,e,t,E.current);if(V.length>0){m?.();for(let H of V)p.current?.(H);R?.();}f(null),h.current=null;};return window.addEventListener("pointermove",W,true),window.addEventListener("pointerup",X,true),()=>{window.removeEventListener("pointermove",W,true),window.removeEventListener("pointerup",X,true),g.current&&cancelAnimationFrame(g.current);}},[c,n,e,t,s,d,m,R,S,r,p,E]);let y=useRef(u);y.current=u;let b=useCallback(D=>{D.preventDefault(),D.stopPropagation();let v=y.current;v&&f({startRow:v.startRow,startCol:v.startCol});},[]),I=useCallback(()=>{let D=y.current;if(!D||n===false||!p.current)return;let v=normalizeSelectionRange(D),P=applyFillValues(v,v.startRow,v.startCol,x.current,w.current,E.current);if(P.length>0){m?.();for(let A of P)p.current(A);R?.();}},[n,m,R,p,x,w,E]);return {fillDrag:c,setFillDrag:f,handleFillHandleMouseDown:b,fillDown:I}}function xn(o){let{wrapperRef:e,visibleCols:t,flatColumns:n,hasCheckboxCol:l,initialColumnWidths:u,onColumnResized:s}=o,[d,i]=useState(0);useEffect(()=>{let p=e.current;if(!p)return;let c=()=>{let C=p.getBoundingClientRect(),g=window.getComputedStyle(p),h=(parseFloat(g.borderLeftWidth||"0")||0)+(parseFloat(g.borderRightWidth||"0")||0),S=Math.round(Math.max(0,C.width-h));i(x=>x===S?x:S);},f=new ResizeObserver(c);return f.observe(p),c(),()=>f.disconnect()},[e]);let[r,m]=useState(()=>{if(!u)return {};let p={};for(let[c,f]of Object.entries(u))p[c]={widthPx:f};return p}),R=useMemo(()=>{let p=l?CHECKBOX_COLUMN_WIDTH:0;return t.reduce((c,f)=>c+(f.minWidth??DEFAULT_MIN_COLUMN_WIDTH)+CELL_PADDING,p)},[t,l]);useEffect(()=>{let p=new Set(n.map(c=>c.columnId));m(c=>{let f=Object.fromEntries(Object.entries(c).filter(([C])=>p.has(C)));return Object.keys(f).length!==Object.keys(c).length?f:c});},[n]);let a=useMemo(()=>{let p=l?CHECKBOX_COLUMN_WIDTH:0;return t.reduce((c,f)=>{let C=r[f.columnId],g=C?C.widthPx:f.idealWidth??f.defaultWidth??f.minWidth??DEFAULT_MIN_COLUMN_WIDTH;return c+Math.max(f.minWidth??DEFAULT_MIN_COLUMN_WIDTH,g)+CELL_PADDING},p)},[t,r,l]);return {containerWidth:d,minTableWidth:R,desiredTableWidth:a,columnSizingOverrides:r,setColumnSizingOverrides:m,onColumnResized:s}}function Dl(o){let{columns:e,pinnedColumns:t,onColumnPinned:n}=o,[l,u]=useState(()=>{let a={};for(let p of e)p.pinned&&(a[p.columnId]=p.pinned);return a}),s=t??l,d=useCallback((a,p)=>{let c={...s,[a]:p};t||u(c),n?.(a,p);},[s,t,n]),i=useCallback(a=>{let{[a]:p,...c}=s;t||u(c),n?.(a,null);},[s,t,n]),r=useCallback(a=>s[a],[s]),m=useCallback((a,p,c,f,C)=>{let g={},h=f?C:0;for(let S of a)s[S.columnId]==="left"&&(g[S.columnId]=h,h+=p[S.columnId]??c);return g},[s]),R=useCallback((a,p,c)=>{let f={},C=0;for(let g=a.length-1;g>=0;g--){let h=a[g];s[h.columnId]==="right"&&(f[h.columnId]=C,C+=p[h.columnId]??c);}return f},[s]);return {pinnedColumns:s,pinColumn:d,unpinColumn:i,isPinned:r,computeLeftOffsets:m,computeRightOffsets:R}}function zo(o){let{pinnedColumns:e,onPinColumn:t,onUnpinColumn:n,sortBy:l,sortDirection:u,onColumnSort:s,onColumnResized:d,onAutosizeColumn:i,columns:r}=o,[m,R]=useState(false),[a,p]=useState(null),[c,f]=useState(null),C=useCallback((k,O)=>{p(k),f(O),R(true);},[]),g=useCallback(()=>{R(false),p(null),f(null);},[]),h=a?e[a]:void 0,S=h!=="left",x=h!=="right",w=!!h,E=r.find(k=>k.columnId===a),y=a===l?u:null,b=E?.sortable!==false,I=E?.resizable!==false,D=useCallback(()=>{a&&S&&(t(a,"left"),g());},[a,S,t,g]),v=useCallback(()=>{a&&x&&(t(a,"right"),g());},[a,x,t,g]),P=useCallback(()=>{a&&w&&(n(a),g());},[a,w,n,g]),A=useCallback(()=>{a&&b&&(s(a,"asc"),g());},[a,b,s,g]),G=useCallback(()=>{a&&b&&(s(a,"desc"),g());},[a,b,s,g]),z=useCallback(()=>{a&&b&&(s(a,null),g());},[a,b,s,g]),W=useCallback(()=>{let k=i??d;if(!a||!k||!I)return;let O=r.find(V=>V.columnId===a);k(a,measureColumnContentWidth(a,O?.minWidth)),g();},[a,i,d,I,r,g]),X=useCallback(()=>{let k=i??d;k&&(r.forEach(O=>{O.resizable!==false&&k(O.columnId,measureColumnContentWidth(O.columnId,O.minWidth));}),g());},[r,i,d,g]);return {isOpen:m,openForColumn:a,anchorElement:c,open:C,close:g,handlePinLeft:D,handlePinRight:v,handleUnpin:P,handleSortAsc:A,handleSortDesc:G,handleClearSort:z,handleAutosizeThis:W,handleAutosizeAll:X,canPinLeft:S,canPinRight:x,canUnpin:w,currentSort:y,isSortable:b,isResizable:I}}function El(o){return {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}}function Ol(o){let{columns:e,items:t,getRowId:n,visibleColumns:l,columnOrder:u,rowSelection:s="none",showRowNumbers:d,initialColumnWidths:i,onColumnResized:r,onAutosizeColumn:m,pinnedColumns:R,onColumnPinned:a,sortBy:p,sortDirection:c,onColumnSort:f,responsiveColumns:C,wrapperRef:g}=o,h=useMemo(()=>flattenColumns(e),[e]),S=useMemo(()=>!R||Object.keys(R).length===0?h:h.map(K=>{let j=R[K.columnId];return j&&K.pinned!==j?{...K,pinned:j}:K}),[h,R]),x=useMemo(()=>resolveResponsiveConfig(C),[C]),w=useMemo(()=>{let K=l?S.filter(q=>l.has(q.columnId)):S;if(!u?.length)return K;let j=new Map;for(let q=0;q<u.length;q++)j.set(u[q],q);return [...K].sort((q,te)=>{let ae=j.get(q.columnId)??-1,De=j.get(te.columnId)??-1;return ae===-1&&De===-1?0:ae===-1?1:De===-1?-1:ae-De})},[S,l,u]),E=s==="multiple",y=!!d,b=useMemo(()=>{let K=new Map;return t.forEach((j,q)=>K.set(n(j),q)),K},[t,n]),{containerWidth:I,minTableWidth:D,desiredTableWidth:v,columnSizingOverrides:P,setColumnSizingOverrides:A}=xn({wrapperRef:g,visibleCols:w,flatColumns:S,hasCheckboxCol:E,initialColumnWidths:i,onColumnResized:r}),G=useMemo(()=>applyResponsiveHiding(w,I,x),[w,I,x]),z=G.length,W=(E?1:0)+(y?1:0),X=z+W,k=W,O=Dl({columns:S,pinnedColumns:R,onColumnPinned:a}),V=useMemo(()=>{let K=Object.entries(P);return K.length===0?"":K.map(([j,q])=>`${j}:${Math.round(q.widthPx)}`).join(",")},[P]),[H,Y]=useState({});useLayoutEffect(()=>{let K=g.current;if(!K)return;let j=K.querySelectorAll("th[data-column-id]");if(j.length===0)return;let q={};j.forEach(te=>{let ae=te.getAttribute("data-column-id");ae&&(q[ae]=te.offsetWidth);}),Y(te=>{for(let ae in q)if(te[ae]!==q[ae])return q;return Object.keys(te).length!==Object.keys(q).length?q:te});},[G,V,g]);let M=useMemo(()=>{let K={};for(let j of G){let q=P[j.columnId];K[j.columnId]=q?q.widthPx:H[j.columnId]??j.idealWidth??j.defaultWidth??j.minWidth??DEFAULT_MIN_COLUMN_WIDTH;}return K},[G,P,H]),_=useMemo(()=>O.computeLeftOffsets(G,M,DEFAULT_MIN_COLUMN_WIDTH,E,CHECKBOX_COLUMN_WIDTH),[O,G,M,E]),N=useMemo(()=>O.computeRightOffsets(G,M,DEFAULT_MIN_COLUMN_WIDTH),[O,G,M]),T=L(f),B=useCallback((K,j)=>T.current?.(K,j),[T]),F=useCallback((K,j)=>{A(q=>({...q,[K]:{widthPx:j}})),(m??r)?.(K,j);},[A,m,r]),J=zo({pinnedColumns:O.pinnedColumns,onPinColumn:O.pinColumn,onUnpinColumn:O.unpinColumn,sortBy:p,sortDirection:c??"asc",onColumnSort:B,onColumnResized:r,onAutosizeColumn:F,columns:S}),$=useMemo(()=>({flatColumns:S,visibleCols:G,visibleColumnCount:z,totalColCount:X,colOffset:k,hasCheckboxCol:E,hasRowNumbersCol:y,rowIndexByRowId:b,containerWidth:I,minTableWidth:D,desiredTableWidth:v,columnSizingOverrides:P,setColumnSizingOverrides:A,onColumnResized:r,measuredColumnWidths:H}),[S,G,z,X,k,E,y,b,I,D,v,P,A,r,H]),Z=useMemo(()=>({pinnedColumns:O.pinnedColumns,pinColumn:O.pinColumn,unpinColumn:O.unpinColumn,isPinned:O.isPinned,leftOffsets:_,rightOffsets:N,headerMenu:J}),[O.pinnedColumns,O.pinColumn,O.unpinColumn,O.isPinned,_,N,J]);return {layout:$,pinning:Z,flatColumns:S,visibleCols:G,visibleColumnCount:z,totalColCount:X,colOffset:k,hasCheckboxCol:E,hasRowNumbersCol:y,columnSizingOverrides:P,setColumnSizingOverrides:A,handleAutosizeColumn:F,stableOnColumnSort:B}}function Ul(o){let{editingCell:e,setEditingCell:t,pendingEditorValue:n,setPendingEditorValue:l,onCellValueChanged:u,setActiveCell:s,setSelectionRange:d,colOffset:i,setFormula:r,onFormulaCellChanged:m,formulas:R,flatColumns:a}=o,[p,c]=useState(null),f=L(o.visibleCols),C=L(o.itemsLength),g=L(u),h=L(r),S=L(m),x=L(a),w=useCallback((b,I,D,v,P,A)=>{if(R&&typeof v=="string"&&v.startsWith("=")&&h.current){let z=x.current,W=z?z.findIndex(X=>X.columnId===I):-1;if(W>=0){if(h.current(W,P,v),t(null),c(null),l(void 0),P<C.current-1){let X=P+1,k=A-i;s({rowIndex:X,columnIndex:A}),d({startRow:X,startCol:k,endRow:X,endCol:k});}return}}let G=f.current.find(z=>z.columnId===I);if(G){let z=parseValue(v,D,b,G);if(!z.valid){t(null),c(null),l(void 0);return}v=z.value;}if(g.current?.({item:b,columnId:I,oldValue:D,newValue:v,rowIndex:P}),R&&S.current&&x.current){let z=x.current.findIndex(W=>W.columnId===I);z>=0&&S.current(z,P);}if(t(null),c(null),l(void 0),P<C.current-1){let z=P+1,W=A-i;s({rowIndex:z,columnIndex:A}),d({startRow:z,startCol:W,endRow:z,endCol:W});}},[R,t,l,s,d,i,f,C,g,h,S,x]),E=useCallback(()=>{t(null),c(null),l(void 0);},[t,l]);return {editing:useMemo(()=>({editingCell:e,setEditingCell:t,pendingEditorValue:n,setPendingEditorValue:l,commitCellEdit:w,cancelPopoverEdit:E,popoverAnchorEl:p,setPopoverAnchorEl:c}),[e,t,n,l,w,E,p,c])}}var lt=()=>{},Ts=async()=>{},Ds=(o,e,t)=>{},Es=o=>{};function Al(o){let{items:e,visibleCols:t,colOffset:n,hasCheckboxCol:l,visibleColumnCount:u,getRowId:s,editable:d,onCellValueChangedProp:i,cellSelection:r,rowSelection:m,selectedRowIds:R,editingCell:a,setEditingCell:p,activeCell:c,setActiveCell:f,handleRowCheckboxChange:C,setContextMenuPosition:g,wrapperRef:h,onKeyDown:S,formulas:x,flatColumns:w,getFormula:E,hasFormula:y,setFormula:b,onFormulaInsertReference:I}=o,D=L(I),v=Sn({onCellValueChanged:i}),P=v.onCellValueChanged,{selectionRange:A,setSelectionRange:G,handleCellMouseDown:z,handleSelectAllCells:W,isDragging:X}=gn({colOffset:n,rowCount:e.length,visibleColCount:t.length,setActiveCell:f,wrapperRef:h}),{handleCopy:k,handleCut:O,handlePaste:V,cutRange:H,copyRange:Y,clearClipboardRanges:M}=Cn({items:e,visibleCols:t,colOffset:n,selectionRange:A,activeCell:c,editable:d,onCellValueChanged:P,beginBatch:v.beginBatch,endBatch:v.endBatch,formulas:x,flatColumns:w,getFormula:E,hasFormula:y,setFormula:b}),_=useCallback((Z,K,j)=>{if(Z.button!==0)return;let q=D.current;if(q){let te=j-n;if(te>=0){let ae=formatCellReference(te,K+1);if(q(ae)){Z.preventDefault();return}}}h.current?.focus({preventScroll:true}),M(),z(Z,K,j);},[z,M,h,D,n]),N=useMemo(()=>{if(!(!x||!w))return {flatColumns:w,getFormula:E,hasFormula:y,setFormula:b}},[x,w,E,y,b]),{handleFillHandleMouseDown:T,fillDown:B}=In({items:e,visibleCols:t,editable:d,onCellValueChanged:P,selectionRange:A,setSelectionRange:G,setActiveCell:f,colOffset:n,wrapperRef:h,beginBatch:v.beginBatch,endBatch:v.endBatch,formulaOptions:N}),{handleGridKeyDown:F}=hn({data:{items:e,visibleCols:t,colOffset:n,hasCheckboxCol:l,visibleColumnCount:u,getRowId:s},state:{activeCell:c,selectionRange:A,editingCell:a,selectedRowIds:R},handlers:{setActiveCell:f,setSelectionRange:G,setEditingCell:p,handleRowCheckboxChange:C,handleCopy:k,handleCut:O,handlePaste:V,setContextMenu:g,onUndo:v.undo,onRedo:v.redo,clearClipboardRanges:M},features:{editable:d,onCellValueChanged:P,rowSelection:m??"none",wrapperRef:h,onKeyDown:S,fillDown:B}}),J=A!=null||c!=null;return {interaction:useMemo(()=>({activeCell:r?c:null,setActiveCell:r?f:lt,selectionRange:r?A:null,setSelectionRange:r?G:lt,handleCellMouseDown:r?_:Ds,handleSelectAllCells:r?W:lt,hasCellSelection:r?J:false,handleGridKeyDown:r?F:Es,handleFillHandleMouseDown:r?T:lt,handleCopy:r?k:lt,handleCut:r?O:lt,handlePaste:r?V:Ts,cutRange:r?H:null,copyRange:r?Y:null,clearClipboardRanges:r?M:lt,canUndo:v.canUndo,canRedo:v.canRedo,onUndo:v.undo,onRedo:v.redo,isDragging:r?X:false}),[r,c,f,A,G,_,W,J,F,T,k,O,V,H,Y,M,v.canUndo,v.canRedo,v.undo,v.redo,X]),selectionRange:A,setSelectionRange:G,cutRange:H,copyRange:Y,clearClipboardRanges:M,isDragging:X,onCellValueChanged:P,canUndo:v.canUndo,canRedo:v.canRedo}}var Ll=()=>{},Os=o=>{};function Gl(o){let{cellSelection:e}=o,{contextMenuPosition:t,setContextMenuPosition:n,handleCellContextMenu:l,closeContextMenu:u}=fn();return {contextMenu:useMemo(()=>({menuPosition:e?t:null,setMenuPosition:e?n:Ll,handleCellContextMenu:e?l:Os,closeContextMenu:e?u:Ll}),[e,t,n,l,u]),contextMenuPosition:t,setContextMenuPosition:n}}function wn(o){let{props:e,wrapperRef:t}=o,{items:n,columns:l,getRowId:u,visibleColumns:s,columnOrder:d,rowSelection:i="none",selectedRows:r,onSelectionChange:m,showRowNumbers:R,statusBar:a,emptyState:p,editable:c,cellSelection:f,onCellValueChanged:C,initialColumnWidths:g,onColumnResized:h,onAutosizeColumn:S,pinnedColumns:x,onColumnPinned:w,responsiveColumns:E,onCellError:y,onKeyDown:b}=e,I=f!==false,{editingCell:D,setEditingCell:v,pendingEditorValue:P,setPendingEditorValue:A}=pn(),{activeCell:G,setActiveCell:z}=mn(t,D),W=Ol({columns:l,items:n,getRowId:u,visibleColumns:s,columnOrder:d,rowSelection:i,showRowNumbers:R,initialColumnWidths:g,onColumnResized:h,onAutosizeColumn:S,pinnedColumns:x,onColumnPinned:w,sortBy:e.sortBy,sortDirection:e.sortDirection,onColumnSort:e.onColumnSort,responsiveColumns:E,wrapperRef:t}),{visibleCols:X,visibleColumnCount:k,colOffset:O,hasCheckboxCol:V}=W,H=Rn({items:n,getRowId:u,rowSelection:i,controlledSelectedRows:r,onSelectionChange:m}),{selectedRowIds:Y,updateSelection:M,handleRowCheckboxChange:_,handleSelectAll:N,allSelected:T,someSelected:B}=H,F=Gl({cellSelection:I}),{setContextMenuPosition:J}=F,$=Al({items:n,visibleCols:X,colOffset:O,hasCheckboxCol:V,visibleColumnCount:k,getRowId:u,editable:c,onCellValueChangedProp:C,cellSelection:I,rowSelection:i,selectedRowIds:Y,editingCell:D,setEditingCell:v,activeCell:G,setActiveCell:z,handleRowCheckboxChange:_,setContextMenuPosition:J,wrapperRef:t,onKeyDown:b,formulas:e.formulas,flatColumns:W.layout.flatColumns,getFormula:e.getFormula,hasFormula:e.hasFormula,setFormula:e.setFormula,onFormulaInsertReference:e.onFormulaInsertReference}),{selectionRange:Z,setSelectionRange:K,cutRange:j,copyRange:q,isDragging:te,onCellValueChanged:ae}=$,De=Ul({editingCell:D,setEditingCell:v,pendingEditorValue:P,setPendingEditorValue:A,visibleCols:X,itemsLength:n.length,onCellValueChanged:ae,setActiveCell:z,setSelectionRange:K,colOffset:O,setFormula:e.setFormula,onFormulaCellChanged:e.onFormulaCellChanged,formulas:e.formulas,flatColumns:W.layout.flatColumns}),{sortBy:Ye,sortDirection:Ze,filters:Ke,onFilterChange:Ce,filterOptions:st,loadingFilterOptions:Ae,peopleSearch:ut}=e,ct=!!ut,dt=L(Ce),Le=L(ut),je=useCallback((...ge)=>dt.current?.(...ge),[dt]),he=useCallback((...ge)=>Le.current?.(...ge)??Promise.resolve([]),[Le]),Ge=useMemo(()=>({sortBy:Ye,sortDirection:Ze,onColumnSort:W.stableOnColumnSort,filters:Ke,onFilterChange:je,filterOptions:st,loadingFilterOptions:Ae,peopleSearch:ct?he:void 0}),[Ye,Ze,W.stableOnColumnSort,Ke,je,st,Ae,ct,he]),Je=useMemo(()=>({editingCell:D,activeCell:I?G:null,selectionRange:I?Z:null,cutRange:I?j:null,copyRange:I?q:null,colOffset:O,itemsLength:n.length,getRowId:u,editable:c,onCellValueChanged:ae,isDragging:I?te:false,getFormulaValue:e.getFormulaValue,hasFormula:e.hasFormula,getFormula:e.getFormula,formulaVersion:e.formulaVersion}),[D,G,Z,j,q,O,n.length,u,c,ae,I,te,e.getFormulaValue,e.hasFormula,e.getFormula,e.formulaVersion]),Qe=useMemo(()=>computeAggregations(n,X,I?Z:null),[n,X,Z,I]),Xe=useMemo(()=>{let ge=getDataGridStatusBarConfig(a,n.length,Y.size);return ge?{...ge,aggregation:Qe??void 0}:null},[a,n.length,Y.size,Qe]),Se=n.length===0&&!!p&&!e.isLoading,et=useMemo(()=>({selectedRowIds:Y,updateSelection:M,handleRowCheckboxChange:_,handleSelectAll:N,allSelected:T,someSelected:B}),[Y,M,_,N,T,B]),mt=useMemo(()=>({headerFilterInput:Ge,cellDescriptorInput:Je,statusBarConfig:Xe,showEmptyInGrid:Se,onCellError:y}),[Ge,Je,Xe,Se,y]);return {layout:W.layout,rowSelection:et,editing:De.editing,interaction:$.interaction,contextMenu:F.contextMenu,viewModels:mt,pinning:W.pinning}}function Pn(o){let{textValue:e="",onTextChange:t,isFilterOpen:n}=o,[l,u]=useState(e);useEffect(()=>{n&&u(e);},[n,e]);let s=useCallback(()=>{t?.(l.trim());},[t,l]),d=useCallback(()=>u(""),[]);return {tempTextValue:l,setTempTextValue:u,handleTextApply:s,handleTextClear:d}}var Ls=150,Hl=[];function Dn(o){let{selectedValues:e,onFilterChange:t,options:n,isFilterOpen:l}=o,u=e??Hl,s=n??Hl,[d,i]=useState(()=>new Set(u)),[r,m]=useState(""),R=bn(r,Ls);useEffect(()=>{l&&(i(new Set(u)),m(""));},[l,u]);let a=useMemo(()=>{let g=R.trim();if(!g)return s;let h=g.toLowerCase();return s.filter(S=>S.toLowerCase().includes(h))},[s,R]),p=useCallback((g,h)=>{i(S=>{let x=new Set(S);return h?x.add(g):x.delete(g),x});},[]),c=useCallback(()=>{i(g=>{let h=new Set(g);for(let S of a)h.add(S);return h});},[a]),f=useCallback(()=>i(new Set),[]),C=useCallback(()=>{t?.(Array.from(d));},[t,d]);return {tempSelected:d,setTempSelected:i,searchText:r,setSearchText:m,debouncedSearchText:R,filteredOptions:a,handleCheckboxChange:p,handleSelectAll:c,handleClearSelection:f,handleApplyMultiSelect:C}}function En(o){let{onUserChange:e,peopleSearch:t,isFilterOpen:n,filterType:l}=o,u=useRef(null),s=useRef(void 0),d=useRef(void 0),[i,r]=useState([]),[m,R]=useState(false),[a,p]=useState("");useEffect(()=>(n&&(p(""),r([]),l==="people"&&(s.current=window.setTimeout(()=>u.current?.focus(),50))),()=>{s.current&&window.clearTimeout(s.current);}),[n,l]),useEffect(()=>{if(!(!t||!n||l!=="people")){if(d.current&&window.clearTimeout(d.current),!a.trim()){r([]);return}return R(true),d.current=window.setTimeout(async()=>{try{let C=await t(a);r(C.slice(0,10));}catch{r([]);}finally{R(false);}},PEOPLE_SEARCH_DEBOUNCE_MS),()=>{d.current&&window.clearTimeout(d.current);}}},[a,t,n,l]);let c=useCallback(C=>{e?.(C);},[e]),f=useCallback(()=>{e?.(void 0);},[e]);return {peopleSuggestions:i,isPeopleLoading:m,peopleSearchText:a,setPeopleSearchText:p,peopleInputRef:u,handleUserSelect:c,handleClearUser:f}}function Fn(o){let{dateValue:e,onDateChange:t,isFilterOpen:n}=o,[l,u]=useState(e?.from??""),[s,d]=useState(e?.to??"");useEffect(()=>{n&&(u(e?.from??""),d(e?.to??""));},[n,e]);let i=useCallback(()=>{let m=l||void 0,R=s||void 0;t?.(m||R?{from:m,to:R}:void 0);},[t,l,s]),r=useCallback(()=>{u(""),d("");},[]);return {tempDateFrom:l,setTempDateFrom:u,tempDateTo:s,setTempDateTo:d,handleDateApply:i,handleDateClear:r}}var Ns=[];function $l(o){let{filterType:e,onSort:t,selectedValues:n,onFilterChange:l,options:u,textValue:s="",onTextChange:d,selectedUser:i,onUserChange:r,peopleSearch:m,dateValue:R,onDateChange:a}=o,p=n??Ns,c=useRef(null),f=useRef(null),[C,g]=useState(false),[h,S]=useState(null),x=Pn({textValue:s,onTextChange:d,isFilterOpen:C}),w=Dn({selectedValues:n,onFilterChange:l,options:u,isFilterOpen:C}),E=En({onUserChange:r,peopleSearch:m,isFilterOpen:C,filterType:e}),y=Fn({dateValue:R,onDateChange:a,isFilterOpen:C});useEffect(()=>{C||S(null);},[C]),useEffect(()=>{if(!C)return;let F=Z=>{let K=Z.target;f.current&&!f.current.contains(K)&&c.current&&!c.current.contains(K)&&g(false);},J=Z=>{(Z.key==="Escape"||Z.key==="Esc")&&(Z.preventDefault(),Z.stopPropagation(),g(false));},$=setTimeout(()=>document.addEventListener("mousedown",F),0);return document.addEventListener("keydown",J,true),()=>{clearTimeout($),document.removeEventListener("mousedown",F),document.removeEventListener("keydown",J,true);}},[C]);let b=useCallback(F=>{F.stopPropagation(),F.preventDefault(),g(J=>{if(!J&&c.current){let $=c.current.getBoundingClientRect();S({top:$.bottom+4,left:$.left});}return !J});},[]),I=useCallback(F=>{F.stopPropagation(),t?.();},[t]),{handleApplyMultiSelect:D}=w,{handleTextApply:v,handleTextClear:P}=x,{handleUserSelect:A,handleClearUser:G}=E,{handleDateApply:z}=y,W=useCallback(()=>{D(),g(false);},[D]),X=useCallback(()=>{v(),g(false);},[v]),k=useCallback(()=>{P(),d?.(""),g(false);},[P,d]),O=useCallback(F=>{A(F),g(false);},[A]),V=useCallback(()=>{G(),g(false);},[G]),H=useCallback(()=>{z(),g(false);},[z]),Y=useCallback(F=>F.stopPropagation(),[]),M=useCallback(F=>F.stopPropagation(),[]),_=useCallback(F=>F.stopPropagation(),[]),N=useCallback(F=>F.stopPropagation(),[]),T=useCallback(F=>{F.key!=="Escape"&&F.key!=="Esc"&&F.stopPropagation();},[]),B=useMemo(()=>e==="multiSelect"?p.length>0:e==="text"?!!s.trim():e==="people"?!!i:e==="date"?!!(R?.from||R?.to):false,[e,p,s,i,R]);return {headerRef:c,popoverRef:f,peopleInputRef:E.peopleInputRef,isFilterOpen:C,setFilterOpen:g,tempSelected:w.tempSelected,setTempSelected:w.setTempSelected,tempTextValue:x.tempTextValue,setTempTextValue:x.setTempTextValue,searchText:w.searchText,setSearchText:w.setSearchText,debouncedSearchText:w.debouncedSearchText,filteredOptions:w.filteredOptions,peopleSuggestions:E.peopleSuggestions,isPeopleLoading:E.isPeopleLoading,peopleSearchText:E.peopleSearchText,setPeopleSearchText:E.setPeopleSearchText,tempDateFrom:y.tempDateFrom,setTempDateFrom:y.setTempDateFrom,tempDateTo:y.tempDateTo,setTempDateTo:y.setTempDateTo,hasActiveFilter:B,popoverPosition:h,handlers:{handleFilterIconClick:b,handleApplyMultiSelect:W,handleTextApply:X,handleTextClear:k,handleUserSelect:O,handleClearUser:V,handleDateApply:H,handleDateClear:y.handleDateClear,handleCheckboxChange:w.handleCheckboxChange,handleSelectAll:w.handleSelectAll,handleClearSelection:w.handleClearSelection,handlePopoverClick:Y,handleInputFocus:M,handleInputMouseDown:_,handleInputClick:N,handleInputKeyDown:T,handleSortClick:I}}}function Yl(o){let{columns:e,visibleColumns:t,onVisibilityChange:n,onSetVisibleColumns:l}=o,[u,s]=useState(false);useEffect(()=>{if(!u)return;let c=f=>{f.key==="Escape"&&(f.preventDefault(),s(false));};return document.addEventListener("keydown",c,true),()=>document.removeEventListener("keydown",c,true)},[u]);let d=useCallback(()=>{s(c=>!c);},[]),i=useCallback(()=>{s(false);},[]),r=useCallback(c=>f=>{n(c,f);},[n]),m=useCallback(()=>{l?l(new Set(e.map(c=>c.columnId))):e.forEach(c=>{t.has(c.columnId)||n(c.columnId,true);});},[e,t,n,l]),R=useCallback(()=>{if(l){let c=new Set(e.filter(f=>f.required).map(f=>f.columnId));l(c);}else e.forEach(c=>{!c.required&&t.has(c.columnId)&&n(c.columnId,false);});},[e,t,n,l]),a=t.size,p=e.length;return {open:u,setOpen:s,handleToggle:d,handleClose:i,handleCheckboxChange:r,handleSelectAll:m,handleClearAll:R,visibleCount:a,totalCount:p}}function On(o){let{value:e,editorType:t,onCommit:n,onCancel:l}=o,[u,s]=useState(()=>{if(e==null)return "";if(t==="date"){let r=String(e);return r.match(/^\d{4}-\d{2}-\d{2}/)?r.substring(0,10):r}return String(e)}),d=useCallback(r=>{r.key==="Escape"&&(r.preventDefault(),r.stopPropagation(),l()),r.key==="Enter"&&(t==="text"||t==="date")&&(r.preventDefault(),r.stopPropagation(),n(u));},[l,n,u,t]),i=useCallback(()=>{(t==="text"||t==="date")&&n(u);},[t,u,n]);return {localValue:u,setLocalValue:s,handleKeyDown:d,handleBlur:i,commit:n,cancel:l}}function Mn({columnSizingOverrides:o,setColumnSizingOverrides:e,minWidth:t=80,defaultWidth:n=120,onColumnResized:l}){let u=useRef(0),s=useRef(l);s.current=l;let d=L(o),i=useRef(null);useEffect(()=>()=>{i.current&&(i.current(),i.current=null);},[]);let r=useCallback((a,p)=>{a.preventDefault(),a.stopPropagation(),i.current&&(i.current(),i.current=null);let c=a.clientX,f=p.columnId,C=a.currentTarget.closest("th"),g=C?C.getBoundingClientRect().width:d.current[f]?.widthPx??p.idealWidth??p.defaultWidth??n,h=g,S=C?.closest("thead");if(S){let v=S.querySelectorAll("th[data-column-id]");v.length>0&&e(P=>{let A={...P};return v.forEach(G=>{let z=G.dataset.columnId;z&&!A[z]&&(A[z]={widthPx:G.getBoundingClientRect().width});}),A[f]={widthPx:g},A});}let x=document.body.style.cursor,w=document.body.style.userSelect;document.body.style.cursor="col-resize",document.body.style.userSelect="none";let E=()=>{e(v=>({...v,[f]:{widthPx:h}}));},y=f===ROW_NUMBER_COLUMN_ID?ROW_NUMBER_COLUMN_MIN_WIDTH:t,b=v=>{let P=v.clientX-c;h=Math.max(y,g+P),u.current||(u.current=requestAnimationFrame(()=>{u.current=0,E();}));},I=()=>{document.removeEventListener("pointermove",b),document.removeEventListener("pointerup",D),i.current=null,document.body.style.cursor=x,document.body.style.userSelect=w,u.current&&(cancelAnimationFrame(u.current),u.current=0);},D=()=>{I(),E();let v=C?.closest("[tabindex]");v?v.focus({preventScroll:true}):document.activeElement instanceof HTMLElement&&document.activeElement.blur(),s.current&&s.current(f,h);};document.addEventListener("pointermove",b),document.addEventListener("pointerup",D),i.current=I;},[n,t,e,d]),m=useCallback((a,p)=>{a.preventDefault(),a.stopPropagation();let c=p.columnId,C=a.currentTarget.closest("th")?.closest("table")?.parentElement??void 0,g=measureColumnContentWidth(c,t,C);e(h=>({...h,[c]:{widthPx:g}})),s.current&&s.current(c,g);},[t,e]),R=useCallback(a=>o[a.columnId]?.widthPx??a.idealWidth??a.defaultWidth??n,[o,n]);return {handleResizeStart:r,handleResizeDoubleClick:m,getColumnWidth:R}}function $o(o,e){return e?e(o):o!=null?String(o):""}function Un(o){let{values:e,formatValue:t,initialValue:n,onCommit:l,onCancel:u}=o,[s,d]=useState(""),i=e.findIndex(f=>String(f)===String(n)),[r,m]=useState(Math.max(i,0));useEffect(()=>{let f=e.findIndex(C=>String(C)===String(n));m(Math.max(f,0));},[n,e]);let R=useCallback(f=>$o(f,t),[t]),a=useMemo(()=>{if(!s.trim())return e;let f=s.toLowerCase();return e.filter(C=>R(C).toLowerCase().includes(f))},[e,s,R]),p=useCallback(f=>{l(f);},[l]),c=useCallback(f=>{switch(f.key){case "ArrowDown":f.preventDefault(),m(C=>Math.min(C+1,a.length-1));break;case "ArrowUp":f.preventDefault(),m(C=>Math.max(C-1,0));break;case "Enter":f.preventDefault(),f.stopPropagation(),a.length>0&&r<a.length&&p(a[r]);break;case "Escape":f.preventDefault(),f.stopPropagation(),u();break}},[a,r,p,u]);return {searchText:s,setSearchText:d,filteredValues:a,highlightedIndex:r,handleKeyDown:c,selectValue:p,getDisplayText:R}}function kn(o){let{values:e,formatValue:t,initialValue:n,onCommit:l,onCancel:u}=o,s=useRef(null),d=useCallback(p=>$o(p,t),[t]),i=e.findIndex(p=>String(p)===String(n)),[r,m]=useState(Math.max(i,0));useEffect(()=>{let p=e.findIndex(c=>String(c)===String(n));m(Math.max(p,0));},[n,e]),useEffect(()=>{let p=s.current;if(!p)return;p.children[r]?.scrollIntoView({block:"nearest"});},[r]);let R=useCallback(p=>{l(p);},[l]),a=useCallback(p=>{switch(p.key){case "ArrowDown":p.preventDefault(),m(c=>Math.min(c+1,e.length-1));break;case "ArrowUp":p.preventDefault(),m(c=>Math.max(c-1,0));break;case "Enter":p.preventDefault(),p.stopPropagation(),e.length>0&&r<e.length&&R(e[r]);break;case "Tab":p.preventDefault(),e.length>0&&r<e.length&&R(e[r]);break;case "Escape":p.preventDefault(),p.stopPropagation(),u();break}},[e,r,R,u]);return {highlightedIndex:r,handleKeyDown:a,selectValue:R,getDisplayText:d,dropdownRef:s}}var ou=8;function ru(o){if(!o)return;let e=[],t=[];for(let[n,l]of Object.entries(o))l==="left"?e.push(n):l==="right"&&t.push(n);if(!(e.length===0&&t.length===0))return {...e.length>0?{left:e}:{},...t.length>0?{right:t}:{}}}function An(o){let{columns:e,columnOrder:t,onColumnOrderChange:n,enabled:l=true,pinnedColumns:u,wrapperRef:s}=o,[d,i]=useState(false),[r,m]=useState(null),R=useRef(0),a=useRef(e);a.current=e;let p=useRef(t);p.current=t;let c=useRef(n);c.current=n;let f=useRef(u);f.current=u;let C=useRef(null);useEffect(()=>()=>{C.current&&(C.current(),C.current=null);},[]);let g=useCallback((h,S)=>{if(!l||!c.current||S.button!==0)return;let w=S.currentTarget.getBoundingClientRect();if(S.clientX>w.right-ou||a.current.findIndex(k=>k.columnId===h)===-1)return;S.preventDefault();let b=S.clientX,I=false,D=null,v=ru(f.current),P=getPinStateForColumn(h,v),A=document.body.style.userSelect,G=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="grabbing";let z=k=>{!I&&Math.abs(k.clientX-b)<5||(I||(I=true,i(true)),R.current&&cancelAnimationFrame(R.current),R.current=requestAnimationFrame(()=>{R.current=0;let O=s.current;if(!O)return;let V=p.current??a.current.map(Y=>Y.columnId),H=calculateDropTarget({mouseX:k.clientX,columnOrder:V,draggedColumnId:h,draggedPinState:P,tableElement:O,pinnedColumns:v});H&&(D=H.targetIndex,m(H.indicatorX));}));},W=()=>{window.removeEventListener("pointermove",z,true),window.removeEventListener("pointerup",X,true),C.current=null,document.body.style.userSelect=A,document.body.style.cursor=G,R.current&&(cancelAnimationFrame(R.current),R.current=0);},X=()=>{if(W(),I&&D!=null){let k=p.current??a.current.map(V=>V.columnId),O=reorderColumnArray(k,h,D);c.current?.(O);}i(false),m(null);};window.addEventListener("pointermove",z,true),window.addEventListener("pointerup",X,true),C.current=W;},[l,s]);return {isDragging:d,dropIndicatorX:r,handleHeaderMouseDown:g}}var su=100;function Ln(o){let{totalRows:e,rowHeight:t,enabled:n,overscan:l=5,threshold:u=su,containerRef:s,columnVirtualization:d=false,columnWidths:i,columnOverscan:r=2}=o;useEffect(()=>{validateVirtualScrollConfig({enabled:n,rowHeight:t});},[n,t]);let m=n&&e>=u,R=useCallback(()=>s.current,[s]),a=useVirtualizer({count:m?e:0,getScrollElement:R,estimateSize:()=>t,overscan:l,enabled:m}),p=useMemo(()=>({startIndex:0,endIndex:Math.max(0,e-1),offsetTop:0,offsetBottom:0}),[e]),c=useMemo(()=>{if(!m)return p;let I=a.getVirtualItems();if(I.length===0)return {startIndex:0,endIndex:-1,offsetTop:0,offsetBottom:0};let D=I[0],v=I[I.length-1],P=a.getTotalSize();return {startIndex:D.index,endIndex:v.index,offsetTop:D.start,offsetBottom:Math.max(0,P-v.end)}},[m,a,p]),f=m?a.getTotalSize():e*t,C=useRef(a);C.current=a;let g=useCallback(I=>{if(m)C.current?.scrollToIndex(I,{align:"auto"});else {let D=s.current;if(D){let v=I*t;D.scrollTo({top:v,behavior:"auto"});}}},[m,s,t]),[h,S]=useState(0),x=useRef(0),w=useCallback(I=>{x.current&&cancelAnimationFrame(x.current),x.current=requestAnimationFrame(()=>{x.current=0,S(I);});},[]);useEffect(()=>()=>{x.current&&cancelAnimationFrame(x.current);},[]);let[E,y]=useState(0);useEffect(()=>{if(!d)return;let I=s.current;if(!I||(y(I.clientWidth),typeof ResizeObserver>"u"))return;let D=new ResizeObserver(v=>{v.length>0&&y(v[0].contentRect.width);});return D.observe(I),()=>D.disconnect()},[d,s]);let b=useMemo(()=>!d||!i||i.length===0||E<=0?null:computeVisibleColumnRange(h,i,E,r),[d,i,E,h,r]);return {virtualizer:m?a:null,totalHeight:f,visibleRange:c,scrollToIndex:g,columnRange:b,onHorizontalScroll:d?w:void 0}}function oa(o){let{count:e,itemHeight:t,containerHeight:n=250,overscan:l=5}=o,u=useRef(null),[s,d]=useState(0),i=useCallback(()=>{u.current&&d(u.current.scrollTop);},[]),r=e*t,m=useMemo(()=>{if(e===0)return [];let R=Math.max(0,Math.floor(s/t)-l),a=Math.ceil(n/t),p=Math.min(e-1,R+a+l*2),c=[];for(let f=R;f<=p;f++)c.push({index:f,offsetTop:f*t});return c},[e,t,n,l,s]);return {totalHeight:r,visibleItems:m,containerRef:u,onScroll:i}}function Gn(o){let{currentPage:e,pageSize:t,totalCount:n,onPageSizeChange:l,pageSizeOptions:u,entityLabelPlural:s}=o,d=s??"items",i=useMemo(()=>getPaginationViewModel(e,t,n,u?{pageSizeOptions:u}:void 0),[e,t,n,u]);return {labelPlural:d,vm:i,handlePageSizeChange:l}}function aa(o){let{props:e}=o,t=useRef(null),n=useRef(null),l=useRef(false),u=wn({props:e,wrapperRef:t}),{layout:s,rowSelection:d,editing:i,interaction:r,contextMenu:m,viewModels:R,pinning:a}=u,{visibleCols:p,totalColCount:c,hasCheckboxCol:f,hasRowNumbersCol:C,colOffset:g,containerWidth:h,minTableWidth:S,desiredTableWidth:x,columnSizingOverrides:w,setColumnSizingOverrides:E,measuredColumnWidths:y}=s,b=p,{selectedRowIds:I,updateSelection:D,handleRowCheckboxChange:v,handleSelectAll:P,allSelected:A,someSelected:G}=d,{editingCell:z,setEditingCell:W,pendingEditorValue:X,setPendingEditorValue:k,commitCellEdit:O,cancelPopoverEdit:V,popoverAnchorEl:H,setPopoverAnchorEl:Y}=i,{setActiveCell:M,handleCellMouseDown:_,selectionRange:N,hasCellSelection:T,handleGridKeyDown:B,handleFillHandleMouseDown:F,handleCopy:J,handleCut:$,handlePaste:Z,cutRange:K,copyRange:j,canUndo:q,canRedo:te,onUndo:ae,onRedo:De,isDragging:Ye}=r,{menuPosition:Ze,handleCellContextMenu:Ke,closeContextMenu:Ce}=m,{headerFilterInput:st,cellDescriptorInput:Ae,statusBarConfig:ut,showEmptyInGrid:ct,onCellError:dt}=R,{headerMenu:Le}=a,je=useCallback(()=>{Z();},[Z]),{items:he,columns:Ge,getRowId:Je,emptyState:Qe,layoutMode:Xe="fill",rowSelection:Se="none",suppressHorizontalScroll:et,stickyHeader:mt=true,isLoading:ge=false,loadingMessage:zt="Loading\u2026","aria-label":_t,"aria-labelledby":Wt,visibleColumns:pt,columnOrder:wt,onColumnOrderChange:Kt,columnReorder:Pt,virtualScroll:Be,rowHeight:jt,density:Xt="normal",pinnedColumns:ne,currentPage:Ee=1,pageSize:Tt=25,showColumnLetters:Jn=false,showNameBox:Qn=false,onActiveCellChange:qt}=e,Dt=C?(Ee-1)*Tt:0,eo=useMemo(()=>buildHeaderRows(Ge,pt),[Ge,pt]),$t=!et&&h>0&&(S>h||x>h),to=Xe==="content",oe=useRef(qt);oe.current=qt,useEffect(()=>{if(!oe.current)return;let ve=r.activeCell;ve?oe.current(formatCellReference(ve.columnIndex-g,Dt+ve.rowIndex+1)):oe.current(null);},[r.activeCell,Dt,g]);let{handleResizeStart:ce,handleResizeDoubleClick:ee,getColumnWidth:de}=Mn({columnSizingOverrides:w,setColumnSizingOverrides:E}),{isDragging:Et,dropIndicatorX:Yt,handleHeaderMouseDown:Zt}=An({columns:b,columnOrder:wt,onColumnOrderChange:Kt,enabled:Pt===true,pinnedColumns:ne,wrapperRef:t}),be=Be?.enabled===true,Te=Be?.rowHeight??36,qe=Be?.columns===true,no=useMemo(()=>{if(!qe)return;let ve=[];for(let Ve of b)ne?.[Ve.columnId]||ve.push(de(Ve));return ve},[qe,b,ne,de]),{visibleRange:tt,columnRange:nt,onHorizontalScroll:Jt}=Ln({totalRows:he.length,rowHeight:Te,enabled:be,overscan:Be?.overscan,threshold:Be?.threshold,containerRef:t,columnVirtualization:qe,columnWidths:no,columnOverscan:Be?.columnOverscan}),Ft=useMemo(()=>({commitCellEdit:O,setEditingCell:W,setPendingEditorValue:k,cancelPopoverEdit:V}),[O,W,k,V]),Qt=useMemo(()=>({handleCellMouseDown:_,setActiveCell:M,setEditingCell:W,handleCellContextMenu:Ke}),[_,M,W,Ke]),Ot=L(Ae),en=L(X),tn=L(H),ft=L(I),gt=useRef(new CellDescriptorCache),nn=CellDescriptorCache.computeVersion(Ae);gt.current.updateVersion(nn);let Ct=useRef(he),Rt=useRef(b);(Ct.current!==he||Rt.current!==b)&&(Ct.current=he,Rt.current=b,gt.current.clear());let Mt=useCallback(ve=>{if(Se!=="single")return;let Ve=ve.currentTarget.dataset.rowId;if(!Ve)return;let $e=ft.current;D($e.has(Ve)?new Set:new Set([Ve]));},[Se,D,ft]);return {wrapperRef:t,tableContainerRef:n,lastMouseShiftRef:l,layout:s,rowSel:d,editing:i,interaction:r,ctxMenu:m,viewModels:R,pinning:a,handleResizeStart:ce,handleResizeDoubleClick:ee,getColumnWidth:de,isReorderDragging:Et,dropIndicatorX:Yt,handleHeaderMouseDown:Zt,virtualScrollEnabled:be,virtualRowHeight:Te,visibleRange:tt,columnRange:nt,onHorizontalScroll:Jt,items:he,columns:Ge,getRowId:Je,emptyState:Qe,layoutMode:Xe,rowSelection:Se,suppressHorizontalScroll:et,stickyHeader:mt,isLoading:ge,loadingMessage:zt,ariaLabel:_t,ariaLabelledBy:Wt,visibleColumns:pt,columnOrder:wt,columnReorder:Pt,density:Xt,rowHeight:jt,pinnedColumns:ne,currentPage:Ee,propPageSize:Tt,rowNumberOffset:Dt,headerRows:eo,allowOverflowX:$t,fitToContent:to,showColumnLetters:Jn,showNameBox:Qn,editCallbacks:Ft,interactionHandlers:Qt,cellDescriptorInputRef:Ot,cellDescriptorCacheRef:gt,pendingEditorValueRef:en,popoverAnchorElRef:tn,selectedRowIdsRef:ft,handleSingleRowClick:Mt,handlePasteVoid:je,visibleCols:b,totalColCount:c,hasCheckboxCol:f,hasRowNumbersCol:C,colOffset:g,containerWidth:h,minTableWidth:S,desiredTableWidth:x,columnSizingOverrides:w,setColumnSizingOverrides:E,measuredColumnWidths:y,selectedRowIds:I,updateSelection:D,handleRowCheckboxChange:v,handleSelectAll:P,allSelected:A,someSelected:G,editingCell:z,setPopoverAnchorEl:Y,cancelPopoverEdit:V,setActiveCell:M,selectionRange:N,hasCellSelection:T,handleGridKeyDown:B,handleFillHandleMouseDown:F,handleCopy:J,handleCut:$,cutRange:K,copyRange:j,canUndo:q,canRedo:te,onUndo:ae,onRedo:De,isDragging:Ye,menuPosition:Ze,handleCellContextMenu:Ke,closeContextMenu:Ce,headerFilterInput:st,cellDescriptorInput:Ae,statusBarConfig:ut,showEmptyInGrid:ct,onCellError:dt,headerMenu:Le}}function ia(o){let{visibleCols:e,getColumnWidth:t,columnSizingOverrides:n,measuredColumnWidths:l,pinnedColumns:u,leftOffsets:s,rightOffsets:d,pinnedColLeftClass:i,pinnedColRightClass:r,addStickyPosition:m=false}=o;return useMemo(()=>{let R={},a={},p={},c={};for(let f=0;f<e.length;f++){let C=e[f],g=t(C),h=!!(n[C.columnId]||C.idealWidth!=null||C.defaultWidth!=null),S=u[C.columnId]==="left",x=u[C.columnId]==="right",w=S||x,E=!!n[C.columnId],y=l[C.columnId],b=C.minWidth??DEFAULT_MIN_COLUMN_WIDTH,I=E||h?g:Math.max(b,y??0),D=m&&w?{position:"sticky"}:void 0;R[C.columnId]={minWidth:I,width:h?g:void 0,maxWidth:h?g:void 0,textAlign:C.type==="numeric"?"right":C.type==="boolean"?"center":void 0,...D,...S&&s[C.columnId]!=null?{left:s[C.columnId]}:void 0,...x&&d[C.columnId]!=null?{right:d[C.columnId]}:void 0},p[C.columnId]={minWidth:I,width:h?g:void 0,maxWidth:h?g:void 0,...D,...S&&s[C.columnId]!=null?{left:s[C.columnId]}:void 0,...x&&d[C.columnId]!=null?{right:d[C.columnId]}:void 0};let v=[];S&&v.push(i),x&&v.push(r);let P=v.join(" ");a[C.columnId]=P,c[C.columnId]=P;}return {cellStyles:R,cellClasses:a,hdrStyles:p,hdrClasses:c}},[e,t,n,l,u,s,d,i,r,m])}var Ru={position:"relative",flex:1,minHeight:0,display:"flex",flexDirection:"column"},hu={cursor:"cell"},Su={minHeight:"100%",minWidth:40},bu=o=>{o.preventDefault();},vu=()=>{},yu=o=>{o.stopPropagation();};var Iu=240,er=36,Vn={columns:"Columns",filters:"Filters"},da={display:"flex",flexDirection:"column",width:er,background:"var(--ogrid-header-bg, #f5f5f5)"},xu={...da,borderLeft:"1px solid var(--ogrid-border, #e0e0e0)"},wu={...da,borderRight:"1px solid var(--ogrid-border, #e0e0e0)"},ma={width:er,height:er,border:"none",cursor:"pointer",color:"var(--ogrid-fg, #242424)",fontSize:14,display:"flex",alignItems:"center",justifyContent:"center"},Pu={...ma,background:"var(--ogrid-bg, #fff)",fontWeight:"bold"},Tu={...ma,background:"transparent",fontWeight:"normal"},pa={width:Iu,display:"flex",flexDirection:"column",overflow:"hidden",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)"},Du={...pa,borderLeft:"1px solid var(--ogrid-border, #e0e0e0)"},Eu={...pa,borderRight:"1px solid var(--ogrid-border, #e0e0e0)"},Fu={display:"flex",justifyContent:"space-between",alignItems:"center",padding:"8px 12px",borderBottom:"1px solid var(--ogrid-border, #e0e0e0)",fontWeight:600},Ou={border:"none",background:"transparent",cursor:"pointer",fontSize:16,color:"var(--ogrid-fg, #242424)"},Mu={flex:1,overflowY:"auto",padding:"8px 12px"},Uu={display:"flex",flexDirection:"row",flexShrink:0},ku={display:"flex",gap:8,marginBottom:8},sa={flex:1,cursor:"pointer",background:"var(--ogrid-bg-subtle, #f3f2f1)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, #e0e0e0)",borderRadius:4,padding:"4px 8px"},Au={display:"flex",alignItems:"center",gap:6,padding:"2px 0",cursor:"pointer"},Lu={color:"var(--ogrid-muted, #999)",fontStyle:"italic"},Gu={marginBottom:12},Bu={fontWeight:500,marginBottom:4,fontSize:13},Vu={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:4},Nu={display:"flex",flexDirection:"column",gap:4},ua={display:"flex",alignItems:"center",gap:4,fontSize:12},ca={flex:1,padding:"2px 4px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, #e0e0e0)",borderRadius:4},Hu={maxHeight:120,overflowY:"auto"},zu={display:"flex",alignItems:"center",gap:4,padding:"1px 0",cursor:"pointer",fontSize:13};function Nn(o){let{activePanel:e,onPanelChange:t,panels:n,position:l,columns:u,visibleColumns:s,onVisibilityChange:d,onSetVisibleColumns:i,filterableColumns:r,filters:m,onFilterChange:R,filterOptions:a}=o,p=e!==null,c=S=>{t(e===S?null:S);},f=l==="right"?xu:wu,C=l==="right"?Du:Eu,g=jsx("div",{style:f,role:"tablist","aria-label":"Side bar tabs",children:n.map(S=>jsx("button",{role:"tab","aria-selected":e===S,"aria-label":Vn[S],onClick:()=>c(S),title:Vn[S],style:e===S?Pu:Tu,children:S==="columns"?"\u2261":"\u2A65"},S))}),h=p&&e?jsxs("div",{role:"tabpanel","aria-label":Vn[e],style:C,children:[jsxs("div",{style:Fu,children:[jsx("span",{children:Vn[e]}),jsx("button",{onClick:()=>t(null),style:Ou,"aria-label":"Close panel",children:"\xD7"})]}),jsxs("div",{style:Mu,children:[e==="columns"&&jsx(_u,{columns:u,visibleColumns:s,onVisibilityChange:d,onSetVisibleColumns:i}),e==="filters"&&jsx(Wu,{filterableColumns:r,filters:m,onFilterChange:R,filterOptions:a})]})]}):null;return jsxs("div",{style:Uu,role:"complementary","aria-label":"Side bar",children:[l==="left"&&g,l==="left"&&h,l==="right"&&h,l==="right"&&g]})}function _u(o){let{columns:e,visibleColumns:t,onVisibilityChange:n,onSetVisibleColumns:l}=o,u=e.every(i=>t.has(i.columnId));return jsxs(Fragment,{children:[jsxs("div",{style:ku,children:[jsx("button",{onClick:()=>{let i=new Set(t);e.forEach(r=>i.add(r.columnId)),l(i);},disabled:u,style:sa,children:"Select All"}),jsx("button",{onClick:()=>{let i=new Set;e.forEach(r=>{r.required&&t.has(r.columnId)&&i.add(r.columnId);}),l(i);},style:sa,children:"Clear All"})]}),e.map(i=>jsxs("label",{style:Au,children:[jsx("input",{type:"checkbox",checked:t.has(i.columnId),onChange:r=>n(i.columnId,r.target.checked),disabled:i.required}),jsx("span",{children:i.name})]},i.columnId))]})}function Wu(o){let{filterableColumns:e,filters:t,onFilterChange:n,filterOptions:l}=o;return e.length===0?jsx("div",{style:Lu,children:"No filterable columns"}):jsx(Fragment,{children:e.map(u=>{let s=u.filterField,d=t[s];return jsxs("div",{style:Gu,children:[jsx("div",{style:Bu,children:u.name}),u.filterType==="text"&&jsx("input",{type:"text",value:d?.type==="text"?d.value:"",onChange:i=>n(s,i.target.value?{type:"text",value:i.target.value}:void 0),placeholder:`Filter ${u.name}...`,"aria-label":`Filter ${u.name}`,style:Vu}),u.filterType==="date"&&jsxs("div",{style:Nu,children:[jsxs("label",{style:ua,children:["From:",jsx("input",{type:"date",value:d?.type==="date"?d.value.from??"":"",onChange:i=>{let r=i.target.value||void 0,R=(d?.type==="date"?d.value:{}).to;n(s,r||R?{type:"date",value:{from:r,to:R}}:void 0);},"aria-label":`${u.name} from date`,style:ca})]}),jsxs("label",{style:ua,children:["To:",jsx("input",{type:"date",value:d?.type==="date"?d.value.to??"":"",onChange:i=>{let r=i.target.value||void 0,R=(d?.type==="date"?d.value:{}).from;n(s,R||r?{type:"date",value:{from:R,to:r}}:void 0);},"aria-label":`${u.name} to date`,style:ca})]})]}),u.filterType==="multiSelect"&&jsx("div",{style:Hu,role:"group","aria-label":`${u.name} options`,children:(l[s]??[]).map(i=>{let r=d?.type==="multiSelect"?d.value.includes(i):false;return jsxs("label",{style:zu,children:[jsx("input",{type:"checkbox",checked:r,onChange:m=>{let R=d?.type==="multiSelect"?d.value:[],a=m.target.checked?[...R,i]:R.filter(p=>p!==i);n(s,a.length>0?{type:"multiSelect",value:a}:void 0);}}),jsx("span",{children:i})]},i)})})]},u.columnId)})})}var Ca={border:"1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12))",borderRadius:GRID_BORDER_RADIUS,overflow:"hidden",display:"flex",flexDirection:"column",flex:1,minHeight:0,background:"var(--ogrid-bg, #fff)"},$u={...Ca,borderRadius:0,border:"none"},Ra={display:"flex",justifyContent:"space-between",alignItems:"center",padding:"6px 12px",background:"var(--ogrid-header-bg, #f5f5f5)",gap:8,flexWrap:"wrap",minHeight:0},Yu={...Ra,borderBottom:"1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12))"},Zu=Ra,ga={display:"flex",alignItems:"center",gap:8},Ju={borderBottom:"1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12))",padding:"6px 12px",background:"var(--ogrid-header-bg, #f5f5f5)"},Qu={borderTop:"1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12))",background:"var(--ogrid-header-bg, #f5f5f5)",padding:"6px 12px"},ec={width:"100%",minWidth:0,minHeight:0,flex:1,display:"flex"},tc={width:"100%",minWidth:0,minHeight:0,flex:1,display:"flex",flexDirection:"column"},nc={flex:1,minWidth:0,minHeight:0,display:"flex",flexDirection:"column"},oc={display:"flex",flexDirection:"column",height:"100%"},rc={position:"fixed",inset:0,zIndex:9999,display:"flex",flexDirection:"column",background:"var(--ogrid-bg, #fff)"},lc={background:"none",border:"1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12))",borderRadius:4,padding:"4px 6px",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--ogrid-fg, #242424)"},ac=()=>jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[jsx("polyline",{points:"10 2 14 2 14 6"}),jsx("polyline",{points:"6 14 2 14 2 10"}),jsx("line",{x1:"14",y1:"2",x2:"10",y2:"6"}),jsx("line",{x1:"2",y1:"14",x2:"6",y2:"10"})]}),ic=()=>jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[jsx("polyline",{points:"4 10 0 10 0 14"}),jsx("polyline",{points:"12 6 16 6 16 2"}),jsx("line",{x1:"0",y1:"10",x2:"4",y2:"6"}),jsx("line",{x1:"16",y1:"6",x2:"12",y2:"10"})]});function tr(o){let{containerComponent:e="div",containerProps:t={},className:n,toolbar:l,toolbarEnd:u,toolbarBelow:s,children:d,pagination:i,sideBar:r,fullScreen:m,formulaBar:R,sheetTabs:a}=o,[p,c]=useState(false),f=useCallback(()=>{c(x=>!x);},[]);useEffect(()=>{if(!p)return;let x=w=>{w.key==="Escape"&&c(false);};return document.addEventListener("keydown",x),()=>document.removeEventListener("keydown",x)},[p]);let C=r!=null,g=r?.position??"right",h=l!=null||u!=null||m;return jsx(e,{className:n,style:p?rc:oc,...t,children:jsxs("div",{style:p?$u:Ca,children:[h&&jsxs("div",{style:s?Zu:Yu,children:[jsx("div",{style:ga,children:l}),jsxs("div",{style:ga,children:[u,m?jsx("button",{type:"button",style:lc,onClick:f,title:p?"Exit fullscreen":"Fullscreen","aria-label":p?"Exit fullscreen":"Fullscreen",children:p?jsx(ic,{}):jsx(ac,{})}):null]})]}),s&&jsx("div",{style:Ju,children:s}),R,C?jsxs("div",{style:ec,children:[g==="left"&&jsx(Nn,{...r}),jsx("div",{style:nc,children:d}),g!=="left"&&jsx(Nn,{...r})]}):jsx("div",{style:tc,children:d}),a,i&&jsx("div",{style:Qu,children:i})]})})}function sc({classNames:o,...e}){let t=getStatusBarParts(e);return jsx("div",{className:o?.statusBar,role:"status","aria-live":"polite",children:t.map(n=>jsxs("span",{className:o?.statusBarItem,children:[jsx("span",{className:o?.statusBarLabel,children:n.label}),jsx("span",{className:o?.statusBarValue,children:n.value.toLocaleString()})]},n.key))})}var _n={width:"100%",height:"100%",display:"flex",alignItems:"center",padding:"6px 10px",boxSizing:"border-box",overflow:"hidden",minWidth:0},zn={width:"100%",padding:0,border:"none",background:"transparent",color:"inherit",font:"inherit",fontSize:"13px",outline:"none",minWidth:0},or={..._n,position:"relative"},Sa={position:"absolute",top:"100%",left:0,right:0,maxHeight:200,overflowY:"auto",background:"var(--ogrid-bg, #fff)",border:"1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12))",zIndex:10,boxShadow:"var(--ogrid-shadow, 0 4px 16px rgba(0,0,0,0.2))",textAlign:"left"},Wn={padding:"6px 8px",cursor:"pointer",color:"var(--ogrid-fg, #242424)"},rr={...Wn,background:"var(--ogrid-bg-hover, #e8f0fe)"},ba={padding:"6px 8px",color:"var(--ogrid-muted, #999)"},cc={width:"100%",padding:0,border:"none",background:"transparent",color:"inherit",font:"inherit",fontSize:"13px",cursor:"pointer",outline:"none"},va={display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",cursor:"pointer",fontSize:"13px",color:"inherit"},ya={marginLeft:4,fontSize:"10px",opacity:.5};function dc(o){let{value:e,column:t,editorType:n,onCommit:l,onCancel:u,renderCheckbox:s}=o,d=Pe.useRef(null),i=Pe.useRef(u);i.current=u;let{localValue:r,setLocalValue:m,handleKeyDown:R,handleBlur:a,commit:p,cancel:c}=On({value:e,editorType:n,onCommit:l,onCancel:u}),f=t.cellEditorParams?.values??[],C=t.cellEditorParams?.formatValue,g=Un({values:f,formatValue:C,initialValue:e,onCommit:l,onCancel:u}),h=kn({values:f,formatValue:C,initialValue:e,onCommit:l,onCancel:u}),[S,x]=Pe.useState(null);Pe.useLayoutEffect(()=>{if(n!=="select"&&n!=="richSelect")return;let y=d.current;if(!y)return;let b=y.getBoundingClientRect(),I=200,D=window.innerHeight-b.bottom,v=D<I&&b.top>D;x({position:"fixed",...v?{bottom:window.innerHeight-b.top}:{top:b.bottom},left:b.left,width:b.width,maxHeight:I,overflowY:"auto",background:"var(--ogrid-bg, #fff)",border:"1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12))",zIndex:9999,boxShadow:"var(--ogrid-shadow, 0 4px 16px rgba(0,0,0,0.2))",textAlign:"left"});let P=y.closest("[data-ogrid-scroll-container]")??y.closest('[style*="overflow"]'),A=()=>i.current(),G=requestAnimationFrame(()=>{P&&P.addEventListener("scroll",A,{passive:true}),window.addEventListener("scroll",A,{passive:true});});return ()=>{cancelAnimationFrame(G),P&&P.removeEventListener("scroll",A),window.removeEventListener("scroll",A);}},[n]);let w=S??Sa;Pe.useEffect(()=>{let y=d.current;if(!y)return;let b=y.querySelector("input");b?(b.focus({preventScroll:true}),n!=="date"&&b.select()):y.focus({preventScroll:true});},[]);let E=S!=null;if(n==="richSelect"){let y=jsxs("div",{style:w,role:"listbox",children:[g.filteredValues.map((b,I)=>jsx("div",{role:"option","aria-selected":I===g.highlightedIndex,onClick:()=>g.selectValue(b),style:I===g.highlightedIndex?rr:Wn,children:g.getDisplayText(b)},String(b))),g.filteredValues.length===0&&jsx("div",{style:ba,children:"No matches"})]});return jsxs("div",{ref:d,style:or,children:[jsx("input",{type:"text",value:g.searchText,onChange:b=>g.setSearchText(b.target.value),onKeyDown:g.handleKeyDown,placeholder:"Search...",autoFocus:true,style:zn}),E?createPortal(y,document.body):y]})}if(n==="checkbox")return jsx(Fragment,{children:s(e===true,b=>p(b),c)});if(n==="select"){let y=jsx("div",{style:w,ref:h.dropdownRef,role:"listbox",children:f.map((b,I)=>jsx("div",{role:"option","aria-selected":I===h.highlightedIndex,onClick:()=>h.selectValue(b),style:I===h.highlightedIndex?rr:Wn,children:h.getDisplayText(b)},String(b)))});return jsxs("div",{ref:d,style:or,onKeyDown:h.handleKeyDown,tabIndex:0,children:[jsxs("div",{style:va,children:[jsx("span",{children:h.getDisplayText(e)}),jsx("span",{style:ya,children:"\u25BE"})]}),E?createPortal(y,document.body):y]})}return n==="date"?jsx("div",{ref:d,style:_n,children:jsx("input",{type:"date",value:r,onChange:y=>m(y.target.value),onBlur:a,onKeyDown:R,style:zn,autoFocus:true})}):jsx("div",{ref:d,style:_n,children:jsx("input",{type:"text",value:r,onChange:y=>m(y.target.value),onBlur:a,onKeyDown:R,style:zn,autoFocus:true})})}var pc=(o,e)=>({left:o,top:e});function fc(o){let{x:e,y:t,hasSelection:n,canUndo:l,canRedo:u,onClose:s,onCopy:d,onCut:i,onPaste:r,onSelectAll:m,onUndo:R,onRedo:a,classNames:p}=o,c=Pe.useRef(null),f=Pe.useMemo(()=>getContextMenuHandlers({onCopy:d,onCut:i,onPaste:r,onSelectAll:m,onUndo:R,onRedo:a,onClose:s}),[d,i,r,m,R,a,s]),C=Pe.useCallback(g=>!!(g.disabledWhenNoSelection&&!n||g.id==="undo"&&!l||g.id==="redo"&&!u),[n,l,u]);return Pe.useEffect(()=>{let g=S=>{c.current&&!c.current.contains(S.target)&&s();},h=S=>{S.key==="Escape"&&s();};return document.addEventListener("mousedown",g,true),document.addEventListener("keydown",h,true),()=>{document.removeEventListener("mousedown",g,true),document.removeEventListener("keydown",h,true);}},[s]),jsx("div",{ref:c,className:p?.contextMenu,role:"menu",style:pc(e,t),"aria-label":"Grid context menu",children:GRID_CONTEXT_MENU_ITEMS.map(g=>jsxs(Pe.Fragment,{children:[g.dividerBefore&&jsx("div",{className:p?.contextMenuDivider}),jsxs("button",{type:"button",className:p?.contextMenuItem,onClick:f[g.id],disabled:C(g),children:[jsx("span",{className:p?.contextMenuItemLabel,children:g.label}),g.shortcut&&jsx("span",{className:p?.contextMenuItemShortcut,children:formatShortcut(g.shortcut)})]})]},g.id))})}var hc={animation:"ogrid-marching-ants 0.5s linear infinite"},Sc={shapeRendering:"crispEdges"},bc={...hc,shapeRendering:"crispEdges"};function vc({containerRef:o,selectionRange:e,copyRange:t,cutRange:n,colOffset:l,items:u,visibleColumns:s,columnSizingOverrides:d,columnOrder:i,isDragging:r}){let[m,R]=useState(null),[a,p]=useState(null),c=useRef(0),f=t??n,C=useCallback(()=>{let w=o.current;if(!w){R(null),p(null);return}R(e?measureRange(w,e,l):null),p(f?measureRange(w,f,l):null);},[e,f,o,l]);if(useEffect(()=>{injectGlobalStyles("ogrid-marching-ants-keyframes","@keyframes ogrid-marching-ants{to{stroke-dashoffset:-8}}");},[]),useEffect(()=>{if(!e&&!f){R(null),p(null);return}c.current=requestAnimationFrame(C);let w=o.current,E;return w&&(E=new ResizeObserver(C),E.observe(w)),()=>{cancelAnimationFrame(c.current),E?.disconnect();}},[e,f,C,o,u,s,d,i]),!m&&!a)return null;let g=e!=null&&f!=null&&e.startRow===f.startRow&&e.startCol===f.startCol&&e.endRow===f.endRow&&e.endCol===f.endCol,h=w=>({top:Math.round(w.top),left:Math.round(w.left),width:Math.round(w.width),height:Math.round(w.height)}),S=m?h(m):null,x=a?h(a):null;return jsxs(Fragment,{children:[S&&!r&&!g&&!(e&&e.startRow===e.endRow&&e.startCol===e.endCol)&&jsx("svg",{style:{position:"absolute",top:S.top,left:S.left,width:S.width,height:S.height,pointerEvents:"none",zIndex:4,overflow:"visible"},"aria-hidden":"true",children:jsx("rect",{x:"1",y:"1",width:Math.max(0,S.width-2),height:Math.max(0,S.height-2),fill:"none",stroke:"var(--ogrid-selection, #217346)",strokeWidth:"2",style:Sc})}),x&&jsx("svg",{style:{position:"absolute",top:x.top,left:x.left,width:x.width,height:x.height,pointerEvents:"none",zIndex:5,overflow:"visible"},"aria-hidden":"true",children:jsx("rect",{x:"1",y:"1",width:Math.max(0,x.width-2),height:Math.max(0,x.height-2),fill:"none",stroke:"var(--ogrid-selection, #217346)",strokeWidth:"2",strokeDasharray:"4 4",style:bc})})]})}var Ec={shapeRendering:"crispEdges"};function Fc(o,e,t){let n=e.col+t,l=(e.endCol??e.col)+t,u=e.endRow??e.row,s=o.querySelector(`[data-row-index="${e.row}"][data-col-index="${n}"]`),d=o.querySelector(`[data-row-index="${u}"][data-col-index="${l}"]`);if(!s||!d)return null;let i=o.getBoundingClientRect(),r=s.getBoundingClientRect(),m=d.getBoundingClientRect();return {top:Math.round(r.top-i.top),left:Math.round(r.left-i.left),width:Math.round(m.right-r.left),height:Math.round(m.bottom-r.top),color:FORMULA_REF_COLORS[e.colorIndex%FORMULA_REF_COLORS.length]}}function Oc({containerRef:o,references:e,colOffset:t}){let[n,l]=useState([]),u=useRef(0),s=useCallback(()=>{let d=o.current;if(!d||e.length===0){l([]);return}let i=[];for(let r of e){let m=Fc(d,r,t);m&&i.push(m);}l(i);},[e,o,t]);return useEffect(()=>{if(e.length===0){l([]);return}return u.current=requestAnimationFrame(s),()=>cancelAnimationFrame(u.current)},[e,s]),n.length===0?null:jsx(Fragment,{children:n.map((d,i)=>jsx("svg",{style:{position:"absolute",top:d.top,left:d.left,width:d.width,height:d.height,pointerEvents:"none",zIndex:3,overflow:"visible"},"aria-hidden":"true",children:jsx("rect",{x:"1",y:"1",width:Math.max(0,d.width-2),height:Math.max(0,d.height-2),fill:"none",stroke:d.color,strokeWidth:"2",style:Ec})},i))})}var Mc=memo(Oc);function Ac(o){let{isOpen:e,anchorElement:t,onClose:n,onPinLeft:l,onPinRight:u,onUnpin:s,onSortAsc:d,onSortDesc:i,onClearSort:r,onAutosizeThis:m,onAutosizeAll:R,canPinLeft:a,canPinRight:p,canUnpin:c,currentSort:f,isSortable:C,isResizable:g,classNames:h,getPortalTarget:S}=o,[x,w]=Pe.useState(null),E=Pe.useRef(null);Pe.useEffect(()=>{if(!e||!t){w(null);return}let v=t.getBoundingClientRect();w({top:v.bottom+4,left:v.left});let P=G=>{let z=G.target;E.current&&E.current.contains(z)||t&&!t.contains(z)&&n();},A=G=>{G.key==="Escape"&&n();};return document.addEventListener("mousedown",P),document.addEventListener("keydown",A),()=>{document.removeEventListener("mousedown",P),document.removeEventListener("keydown",A);}},[e,t,n]);let y=Pe.useMemo(()=>({canPinLeft:a,canPinRight:p,canUnpin:c,currentSort:f,isSortable:C,isResizable:g}),[a,p,c,f,C,g]),b=Pe.useMemo(()=>getColumnHeaderMenuItems(y),[y]),I=Pe.useMemo(()=>({pinLeft:l,pinRight:u,unpin:s,sortAsc:d,sortDesc:i,clearSort:r,autosizeThis:m,autosizeAll:R}),[l,u,s,d,i,r,m,R]);if(!e||!x)return null;let D=t&&S?S(t):document.body;return createPortal(jsx("div",{ref:E,className:h?.content,style:{position:"fixed",top:x.top,left:x.left,zIndex:1e3},children:b.map((v,P)=>jsxs(Pe.Fragment,{children:[jsx("button",{className:h?.item,disabled:v.disabled,onClick:()=>{I[v.id](),n();},children:v.label}),v.divider&&P<b.length-1&&jsx("div",{className:h?.separator})]},v.id))}),D)}var Ea=Pe.memo(o=>{let{currentPage:e,pageSize:t,totalCount:n,onPageChange:l,onPageSizeChange:u,pageSizeOptions:s,entityLabelPlural:d,className:i,slots:r,classNames:m={}}=o,{labelPlural:R,vm:a,handlePageSizeChange:p}=Gn({currentPage:e,pageSize:t,totalCount:n,onPageSizeChange:u,pageSizeOptions:s,entityLabelPlural:d});if(!a)return null;let{pageNumbers:c,showStartEllipsis:f,showEndEllipsis:C,totalPages:g,startItem:h,endItem:S}=a,{NavButton:x,PageButton:w,PageSizeSelect:E,OuterContainer:y,InfoText:b,NavButtonsContainer:I,PageSizeContainer:D,PageSizeLabel:v,Ellipsis:P}=r,A=`Showing ${h} to ${S} of ${n.toLocaleString()} ${R}`,G=b?jsx(b,{children:A}):jsx("div",{className:m.paginationInfo,children:A}),z=P?jsx(P,{}):jsx("span",{className:m.ellipsis,"aria-hidden":true,children:"\u2026"}),W=v?jsx(v,{}):jsx("span",{className:m.pageSizeLabel,children:"Rows"}),X=jsxs("div",{className:m.pageNumbers,children:[f&&jsxs(Fragment,{children:[jsx(w,{onClick:()=>l(1),active:false,"aria-label":"Page 1",className:m.pageBtn,children:"1"}),z]}),c.map(N=>jsx(w,{onClick:()=>l(N),active:e===N,"aria-label":`Page ${N}`,"aria-current":e===N?"page":void 0,className:m.pageBtn,children:N},N)),C&&jsxs(Fragment,{children:[z,jsx(w,{onClick:()=>l(g),active:false,"aria-label":`Page ${g}`,className:m.pageBtn,children:g})]})]}),k=jsxs(Fragment,{children:[jsx(x,{variant:"first",onClick:()=>l(1),disabled:e===1,"aria-label":"First page",className:m.navBtn}),jsx(x,{variant:"prev",onClick:()=>l(e-1),disabled:e===1,"aria-label":"Previous page",className:m.navBtn}),X,jsx(x,{variant:"next",onClick:()=>l(e+1),disabled:e>=g,"aria-label":"Next page",className:m.navBtn}),jsx(x,{variant:"last",onClick:()=>l(g),disabled:e>=g,"aria-label":"Last page",className:m.navBtn})]}),O=I?jsx(I,{className:m.paginationControls,children:k}):jsx("div",{className:m.paginationControls,children:k}),V=jsxs(Fragment,{children:[W,jsx(E,{value:t,options:a.pageSizeOptions,onChange:p,"aria-label":"Rows per page",className:m.pageSizeSelect})]}),H=D?jsx(D,{className:m.pageSizeSelector,children:V}):jsx("div",{className:m.pageSizeSelector,children:V}),Y=`${m.pagination??""} ${i||""}`.trim(),M="navigation",_="Pagination";return y?jsxs(y,{className:Y,role:M,"aria-label":_,children:[G,O,H]}):jsxs("div",{className:Y,role:M,"aria-label":_,children:[G,O,H]})});Ea.displayName="PaginationControlsBase";var Fa=({columns:o,visibleColumns:e,visibleCount:t,totalCount:n,handleSelectAll:l,handleClearAll:u,handleCheckboxChange:s,CheckboxItem:d,classNames:i={},Header:r,OptionsListContainer:m,OptionItemContainer:R,Actions:a})=>{let p=r?jsx(r,{visibleCount:t,totalCount:n}):jsxs("div",{className:i.header,children:["Select Columns (",t," of ",n,")"]}),c=o.map(g=>{let h=jsx(d,{columnId:g.columnId,columnName:g.name,checked:e.has(g.columnId),disabled:g.required===true,onChange:s(g.columnId)});return R?jsx(R,{columnId:g.columnId,children:h},g.columnId):jsx("div",{className:i.optionItem,children:h},g.columnId)}),f=m?jsx(m,{children:c}):jsx("div",{className:i.optionsList,children:c}),C=a?jsx(a,{onClearAll:u,onSelectAll:l}):jsxs("div",{className:i.actions,children:[jsx("button",{type:"button",className:i.clearButton,onClick:u,children:"Clear All"}),jsx("button",{type:"button",className:i.selectAllButton,onClick:l,children:"Select All"})]});return jsxs(Fragment,{children:[p,f,C]})};Fa.displayName="ColumnChooserContent";function Vc(o){let{DataGridTable:e,ColumnChooser:t,PaginationControls:n,containerComponent:l,containerProps:u}=o,s=forwardRef(function(i,r){let{dataGridProps:m,pagination:R,columnChooser:a,layout:p}=dn(i,r);return jsx(tr,{containerComponent:l,containerProps:u,className:p.className,sideBar:p.sideBarProps,toolbar:p.toolbar,toolbarBelow:p.toolbarBelow,fullScreen:p.fullScreen,formulaBar:p.formulaBar,sheetTabs:p.sheetTabs,toolbarEnd:a.placement==="toolbar"?jsx(t,{columns:a.columns,visibleColumns:a.visibleColumns,onVisibilityChange:a.onVisibilityChange,onSetVisibleColumns:a.onSetVisibleColumns}):void 0,pagination:jsx(n,{currentPage:R.page,pageSize:R.pageSize,totalCount:R.displayTotalCount,onPageChange:R.setPage,onPageSizeChange:R.setPageSize,pageSizeOptions:R.pageSizeOptions,entityLabelPlural:R.entityLabelPlural}),children:jsx(e,{...m})})});return s.displayName="OGrid",Pe.memo(s)}var Nc={color:"var(--ogrid-error, #d32f2f)",fontSize:"0.75rem",padding:"2px 4px"},sr=class extends Pe.Component{constructor(e){super(e),this.state={hasError:false};}static getDerivedStateFromError(){return {hasError:true}}componentDidCatch(e,t){this.props.onError&&this.props.onError(e,t);}componentDidUpdate(e){e.children!==this.props.children&&this.state.hasError&&this.setState({hasError:false});}resetErrorBoundary(){this.setState({hasError:false});}render(){return this.state.hasError?this.props.fallback!==void 0?this.props.fallback:jsx("span",{style:Nc,children:"\u26A0 Error"}):this.props.children}};var zc={background:"none",border:"none",color:"inherit",textDecoration:"underline",cursor:"pointer",padding:0,font:"inherit"};function _c(o){let{message:e,hasActiveFilters:t,onClearAll:n,render:l}=o;return l?jsx(Fragment,{children:l()}):jsx(Fragment,{children:e??(t?jsxs(Fragment,{children:["No items match your current filters. Try adjusting your search or"," ",jsx("button",{type:"button",onClick:n,style:zc,children:"clear all filters"})," ","to see all items."]}):"There are no items available at this time.")})}function Kc({emptyState:o,classNames:e,icon:t}){return jsx("div",{className:e.emptyStateInGrid,children:jsx("div",{className:e.emptyStateInGridInner,children:o.render?o.render():jsxs(Fragment,{children:[t!=null&&jsx("span",{className:e.emptyStateInGridIcon,"aria-hidden":true,children:t}),jsx("div",{className:e.emptyStateInGridTitle,children:"No results found"}),jsx("div",{className:e.emptyStateInGridMessage,children:o.message!=null?o.message:o.hasActiveFilters?jsxs(Fragment,{children:["No items match your current filters. Try adjusting your search or"," ",jsx("button",{type:"button",className:e.emptyStateInGridLink,onClick:o.onClearAll,children:"clear all filters"})," ","to see all items."]}):"There are no items available at this time."})]})})})}function jc({message:o,classNames:e}){return jsx("div",{className:e.loadingOverlay,"aria-live":"polite",children:jsxs("div",{className:e.loadingOverlayContent,children:[jsx("div",{className:e.spinner}),jsx("span",{className:e.loadingOverlayText,children:o})]})})}function qc({dropIndicatorX:o,wrapperLeft:e,className:t}){return jsx("div",{className:t,style:{left:o-e}})}var Yc={padding:"8px 12px",display:"flex",flexDirection:"column",gap:6},Aa={display:"flex",alignItems:"center",gap:6,fontSize:12},La={flex:1},Yn=({tempDateFrom:o,setTempDateFrom:e,tempDateTo:t,setTempDateTo:n,onApply:l,onClear:u,classNames:s})=>jsxs(Fragment,{children:[jsxs("div",{style:Yc,children:[jsxs("label",{style:Aa,children:["From:",jsx("input",{type:"date",value:o,onChange:d=>e(d.target.value),style:La})]}),jsxs("label",{style:Aa,children:["To:",jsx("input",{type:"date",value:t,onChange:d=>n(d.target.value),style:La})]})]}),jsxs("div",{className:s?.popoverActions,children:[jsx("button",{className:s?.clearButton,onClick:u,disabled:!o&&!t,children:"Clear"}),jsx("button",{className:s?.applyButton,onClick:l,children:"Apply"})]})]});Yn.displayName="DateFilterContent";function Zc(o){return {filterType:o.filterType,onSort:o.onSort,selectedValues:o.selectedValues,onFilterChange:o.onFilterChange,options:o.options,isLoadingOptions:o.isLoadingOptions??false,textValue:o.textValue??"",onTextChange:o.onTextChange,selectedUser:o.selectedUser,onUserChange:o.onUserChange,peopleSearch:o.peopleSearch,dateValue:o.dateValue,onDateChange:o.onDateChange}}function Jc(o,e){return {tempDateFrom:o.tempDateFrom,setTempDateFrom:o.setTempDateFrom,tempDateTo:o.tempDateTo,setTempDateTo:o.setTempDateTo,onApply:o.handlers.handleDateApply,onClear:o.handlers.handleDateClear,classNames:e}}function ed(o,e,t,n,l,u){return o==="multiSelect"?u.renderMultiSelect({searchText:e.searchText,onSearchChange:e.setSearchText,options:t,filteredOptions:e.filteredOptions,selected:e.tempSelected,onOptionToggle:e.handlers.handleCheckboxChange,onSelectAll:e.handlers.handleSelectAll,onClearSelection:e.handlers.handleClearSelection,onApply:e.handlers.handleApplyMultiSelect,isLoading:n}):o==="text"?u.renderText({value:e.tempTextValue,onValueChange:e.setTempTextValue,onApply:e.handlers.handleTextApply,onClear:e.handlers.handleTextClear}):o==="people"?u.renderPeople({selectedUser:l,searchText:e.peopleSearchText,onSearchChange:e.setPeopleSearchText,suggestions:e.peopleSuggestions,isLoading:e.isPeopleLoading,onUserSelect:e.handlers.handleUserSelect,onClearUser:e.handlers.handleClearUser,inputRef:e.peopleInputRef}):o==="date"?u.renderDate({tempDateFrom:e.tempDateFrom,setTempDateFrom:e.setTempDateFrom,tempDateTo:e.tempDateTo,setTempDateTo:e.setTempDateTo,onApply:e.handlers.handleDateApply,onClear:e.handlers.handleDateClear}):null}function td(o,e){return {renderMultiSelect:t=>jsx(o.MultiSelectFilterPopover,{...t}),renderText:t=>jsx(o.TextFilterPopover,{...t}),renderPeople:t=>jsx(o.PeopleFilterPopover,{...t}),renderDate:t=>jsx(Yn,{...t,classNames:e})}}export{Ac as BaseColumnHeaderMenu,qc as BaseDropIndicator,Kc as BaseEmptyState,dc as BaseInlineCellEditor,jc as BaseLoadingOverlay,hu as CURSOR_CELL_STYLE,sr as CellErrorBoundary,Fa as ColumnChooserContent,Yn as DateFilterContent,_c as EmptyState,Fo as FormulaBar,Mc as FormulaRefOverlay,Ru as GRID_ROOT_STYLE,fc as GridContextMenu,vc as MarchingAntsOverlay,vu as NOOP,tr as OGridLayout,Su as POPOVER_ANCHOR_STYLE,bu as PREVENT_DEFAULT,Ea as PaginationControlsBase,yu as STOP_PROPAGATION,Oo as SheetTabs,Nn as SideBar,sc as StatusBar,kr as buildInlineEditorProps,Ar as buildPopoverEditorProps,td as createBaseFilterRenderers,Vc as createOGrid,zn as editorInputStyle,_n as editorWrapperStyle,Lr as getCellInteractionProps,Zc as getColumnHeaderFilterStateParams,El as getColumnHeaderMenuProps,Jc as getDateFilterContentProps,ed as renderFilterContent,Mr as resolveCellDisplayContent,Ur as resolveCellStyle,Sa as richSelectDropdownStyle,ba as richSelectNoMatchesStyle,rr as richSelectOptionHighlightedStyle,Wn as richSelectOptionStyle,or as richSelectWrapperStyle,ya as selectChevronStyle,va as selectDisplayStyle,cc as selectEditorStyle,mn as useActiveCell,pn as useCellEditing,gn as useCellSelection,Cn as useClipboard,Yl as useColumnChooserState,$l as useColumnHeaderFilterState,ia as useColumnMeta,An as useColumnReorder,Mn as useColumnResize,fn as useContextMenu,wn as useDataGridState,aa as useDataGridTableOrchestration,Fn as useDateFilterState,bn as useDebounce,In as useFillHandle,ln as useFilterOptions,sn as useFormulaBar,an as useFormulaEngine,On as useInlineCellEditorState,hn as useKeyboardNavigation,L as useLatestRef,oa as useListVirtualizer,Dn as useMultiSelectFilterState,dn as useOGrid,Gn as usePaginationControls,En as usePeopleFilterState,Un as useRichSelectState,Rn as useRowSelection,kn as useSelectState,cn as useSideBarState,xn as useTableLayout,Pn as useTextFilterState,Sn as useUndoRedo,Ln as useVirtualScroll};
|
|
1
|
+
import {getPaginationViewModel,resolveCellDisplayContent,resolveCellStyle,buildInlineEditorProps,buildPopoverEditorProps,createGridDataAccessor,flattenColumns,validateColumns,validateRowIds,columnLetterToIndex,getCellValue,rangesEqual,normalizeSelectionRange,formatSelectionAsTsv,parseTsvClipboard,applyPastedValues,applyCutClear,applyRangeRowSelection,computeRowSelectionState,applyCellDeletion,getScrollTopForRow,computeTabNavigation,computeArrowNavigation,UndoRedoStack,buildCellIndex,applyFillValues,DEFAULT_MIN_COLUMN_WIDTH,CELL_PADDING,CHECKBOX_COLUMN_WIDTH,computeAggregations,getDataGridStatusBarConfig,PEOPLE_SEARCH_DEBOUNCE_MS,formatDateForDisplay,DEFAULT_DATE_FORMAT,measureColumnContentWidth,getPinStateForColumn,validateVirtualScrollConfig,computeVisibleColumnRange,buildHeaderRows,formatCellReference,CellDescriptorCache,GRID_BORDER_RADIUS,getStatusBarParts,getDateInputPlaceholder,getContextMenuHandlers,GRID_CONTEXT_MENU_ITEMS,formatShortcut,measureRange,injectGlobalStyles,getColumnHeaderMenuItems,calculateDropTarget,reorderColumnArray,computeNextSortState,mergeFilter,getMultiSelectFilterFields,deriveFilterOptionsFromData,processClientSideData,processClientSideDataAsync,resolveResponsiveConfig,applyResponsiveHiding,parseValue,parseUserInputDate,ROW_NUMBER_COLUMN_MIN_WIDTH,ROW_NUMBER_COLUMN_ID,computeAutoScrollSpeed}from'@alaarab/ogrid-core';export{CELL_PADDING,CHECKBOX_COLUMN_WIDTH,COLUMN_HEADER_MENU_ITEMS,CellDescriptorCache,DEFAULT_MIN_COLUMN_WIDTH,GRID_BORDER_RADIUS,GRID_CONTEXT_MENU_ITEMS,MAX_PAGE_BUTTONS,PAGE_SIZE_OPTIONS,ROW_NUMBER_COLUMN_ID,ROW_NUMBER_COLUMN_MIN_WIDTH,ROW_NUMBER_COLUMN_WIDTH,UndoRedoStack,areGridRowPropsEqual,booleanParser,buildCsvHeader,buildCsvRows,buildHeaderRows,clampSelectionToBounds,computeAggregations,computeAutoScrollSpeed,computeTabNavigation,currencyParser,dateParser,deriveFilterOptionsFromData,emailParser,escapeCsvValue,exportToCsv,findCtrlArrowTarget,flattenColumns,formatCellReference,formatCellValueForTsv,formatSelectionAsTsv,formatShortcut,getCellRenderDescriptor,getCellValue,getColumnHeaderMenuItems,getContextMenuHandlers,getDataGridStatusBarConfig,getFilterField,getHeaderFilterConfig,getMultiSelectFilterFields,getPaginationViewModel,getStatusBarParts,indexToColumnLetter,isInSelectionRange,isRowInRange,mergeFilter,normalizeSelectionRange,numberParser,parseTsvClipboard,parseValue,partitionColumnsForVirtualization,processClientSideData,rangesEqual,toUserLike,triggerCsvDownload}from'@alaarab/ogrid-core';import*as Pe from'react';import {memo,useState,useRef,useCallback,useEffect,useMemo,useImperativeHandle,useLayoutEffect,forwardRef}from'react';import {FORMULA_REF_COLORS,FormulaEngine,deriveFormulaBarText,processFormulaBarCommit,insertReferenceAtCursor,extractFormulaReferences,FORMULA_BAR_STYLES,handleFormulaBarKeyDown}from'@alaarab/ogrid-core/formula';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useVirtualizer}from'@tanstack/react-virtual';import {createPortal}from'react-dom';function A(o){let e=useRef(o);return e.current=o,e}function Qa(o,e){if(o.length!==e.length)return false;for(let t=0;t<o.length;t++)if(o[t]!==e[t])return false;return true}var Ur={},ao={};function sn(o,e){let t=useRef(e);Qa(t.current,e)||(t.current=e);let n=t.current,l=A(o),[u,s]=useState(Ur),[c,a]=useState(ao),i=useCallback(async()=>{let p=l.current,C="fetchFilterOptions"in p&&typeof p.fetchFilterOptions=="function"?p.fetchFilterOptions.bind(p):void 0;if(!C){s(Ur),a(ao);return}let r={};n.forEach(d=>{r[d]=true;}),a(r);let m={};await Promise.all(n.map(async d=>{try{m[d]=await C(d);}catch{m[d]=[];}})),s(m),a(ao);},[n,l]);return useEffect(()=>{i().catch(()=>{});},[i]),{filterOptions:u,loadingOptions:c}}function kr(o,e,t){return resolveCellDisplayContent(o,e,t)}function Ar(o,e,t){return resolveCellStyle(o,e,t)}function Lr(o,e,t,n){return {...buildInlineEditorProps(o,e,t,n),column:e}}function Gr(o,e,t,n,l){return {...buildPopoverEditorProps(o,e,t,n,l),column:e}}function Br(o,e,t){return {"data-row-index":o.rowIndex,"data-col-index":o.globalColIndex,...o.isActive?{"data-active-cell":"true"}:{},...o.isInRange?{"data-in-range":"true"}:{},tabIndex:o.isActive?0:-1,onPointerDown:n=>{t.setEditingCell(null),t.handleCellMouseDown(n,o.rowIndex,o.globalColIndex);},onClick:()=>t.setActiveCell({rowIndex:o.rowIndex,columnIndex:o.globalColIndex}),onContextMenu:t.handleCellContextMenu,...o.canEditAny?{role:"button",onDoubleClick:()=>t.setEditingCell({rowId:o.rowId,columnId:e})}:{}}}var Pi={getFormulaValue:()=>{},hasFormula:()=>false,getFormula:()=>{},setFormula:()=>{},onCellChanged:()=>{},getPrecedents:()=>[],getDependents:()=>[],getAuditTrail:()=>null,enabled:false};function un(o){let{formulas:e,items:t,flatColumns:n,initialFormulas:l,onFormulaRecalc:u,formulaFunctions:s,namedRanges:c,sheets:a}=o,i=A(t),p=A(n),C=A(u),r=useRef(null);e&&!r.current?r.current=new FormulaEngine({customFunctions:s,namedRanges:c}):!e&&r.current&&(r.current=null),useEffect(()=>{if(!(!r.current||!a)){for(let[P,I]of Object.entries(a))r.current.registerSheet(P,I);return ()=>{if(!(!r.current||!a))for(let P of Object.keys(a))r.current.unregisterSheet(P);}}},[a]);let m=useCallback(()=>createGridDataAccessor(i.current,p.current),[i,p]),d=useRef(false);useEffect(()=>{if(e&&r.current&&l&&!d.current){d.current=true;let P=m(),I=r.current.loadFormulas(l,P);I.updatedCells.length>0&&C.current?.(I);}},[e,l,m,C]);let f=useCallback((P,I)=>r.current?.getValue(P,I),[]),R=useCallback((P,I)=>r.current?.hasFormula(P,I)??false,[]),g=useCallback((P,I)=>r.current?.getFormula(P,I),[]),S=useCallback((P,I,v)=>{if(!r.current)return;let y=m(),b=r.current.setFormula(P,I,v,y);b.updatedCells.length>0&&C.current?.(b);},[m,C]),h=useCallback((P,I)=>{if(!r.current)return;let v=m(),y=r.current.onCellChanged(P,I,v);y.updatedCells.length>0&&C.current?.(y);},[m,C]),x=useCallback((P,I)=>r.current?.getPrecedents(P,I)??[],[]),w=useCallback((P,I)=>r.current?.getDependents(P,I)??[],[]),F=useCallback((P,I)=>r.current?.getAuditTrail(P,I)??null,[]);return e?{getFormulaValue:f,hasFormula:R,getFormula:g,setFormula:S,onCellChanged:h,getPrecedents:x,getDependents:w,getAuditTrail:F,enabled:true}:Pi}function cn(o){let{activeCol:e,activeRow:t,activeCellRef:n,getFormula:l,getRawValue:u,setFormula:s,onCellValueChanged:c}=o,[a,i]=useState(false),[p,C]=useState(""),r=useRef(false),m=useRef(null),d=useMemo(()=>deriveFormulaBarText(e,t,l,u),[e,t,l,u]);useEffect(()=>{i(false),r.current=false;},[e,t]);let f=useCallback(()=>{C(d),i(true),r.current=true;},[d]),R=useCallback(F=>{C(F);},[]),g=useCallback(()=>{e==null||t==null||!s||(processFormulaBarCommit(p,e,t,s,c),i(false),r.current=false);},[e,t,p,s,c]),S=useCallback(()=>{i(false),r.current=false,C("");},[]),h=useCallback(F=>{if(!r.current||!p.startsWith("="))return false;let P=m.current?.selectionStart??p.length,I=insertReferenceAtCursor(p,P,F);return C(I.text),setTimeout(()=>{m.current&&(m.current.selectionStart=I.cursorPos,m.current.selectionEnd=I.cursorPos,m.current.focus());},0),true},[p]),x=a?p:d,w=useMemo(()=>extractFormulaReferences(x),[x]);return {cellRef:n,formulaText:a?p:d,isEditing:a,onInputChange:R,onCommit:g,onCancel:S,startEditing:f,referencedCells:w,isFormulaBarEditing:r,insertReference:h,inputRef:m}}function Fo({cellRef:o,formulaText:e,isEditing:t,onInputChange:n,onCommit:l,onCancel:u,startEditing:s,inputRef:c}){let a=useRef(null),i=c??a;return useEffect(()=>{t&&i.current&&i.current.focus();},[t,i]),jsxs("div",{style:FORMULA_BAR_STYLES.bar,role:"toolbar","aria-label":"Formula bar",children:[jsx("div",{style:FORMULA_BAR_STYLES.nameBox,"aria-label":"Active cell reference",children:o??"\u2014"}),jsx("div",{style:FORMULA_BAR_STYLES.fxLabel,"aria-hidden":"true",children:"fx"}),jsx("input",{ref:i,type:"text",style:FORMULA_BAR_STYLES.input,value:e,readOnly:!t,onChange:p=>n(p.target.value),onKeyDown:p=>handleFormulaBarKeyDown(p.key,()=>p.preventDefault(),l,u),onClick:()=>{t||s();},onDoubleClick:()=>{t||s();},"aria-label":"Formula input",spellCheck:false,autoComplete:"off"})]})}var Gi={display:"flex",alignItems:"center",borderTop:"1px solid var(--ogrid-border, #e0e0e0)",background:"var(--ogrid-header-bg, #f5f5f5)",minHeight:30,overflowX:"auto",overflowY:"hidden",gap:0,fontSize:12},Bi={background:"none",border:"none",cursor:"pointer",padding:"4px 10px",fontSize:16,lineHeight:"22px",color:"var(--ogrid-fg-secondary, #666)",flexShrink:0},ol={background:"none",border:"none",borderBottom:"2px solid transparent",cursor:"pointer",padding:"4px 16px",fontSize:12,lineHeight:"22px",color:"var(--ogrid-fg, #242424)",whiteSpace:"nowrap",position:"relative"},Vi={...ol,fontWeight:600,borderBottomColor:"var(--ogrid-primary, #217346)",background:"var(--ogrid-bg, #fff)"};function Oo({sheets:o,activeSheet:e,onSheetChange:t,onSheetAdd:n}){let l=useCallback(u=>{let s=u.currentTarget.dataset.sheetId;s&&t(s);},[t]);return jsxs("div",{style:Gi,role:"tablist","aria-label":"Sheet tabs",children:[n&&jsx("button",{type:"button",style:Bi,onClick:n,title:"Add sheet","aria-label":"Add sheet",children:"+"}),o.map(u=>{let s=u.id===e,c=s?Vi:ol,a=u.color?{...c,borderBottomColor:u.color}:c;return jsx("button",{type:"button",role:"tab","aria-selected":s,style:a,"data-sheet-id":u.id,onClick:l,children:u.name},u.id)})]})}function al(o){let{controlledPage:e,controlledPageSize:t,defaultPageSize:n,onPageChange:l,onPageSizeChange:u}=o,[s,c]=useState(1),[a,i]=useState(n),p=e??s,C=t??a,r=useCallback(d=>{e===void 0&&c(d),l?.(d);},[e,l]),m=useCallback(d=>{t===void 0&&i(d),u?.(d),r(1);},[t,u,r]);return {page:p,pageSize:C,setPage:r,setPageSize:m}}function sl(o){let{controlledSort:e,defaultSortField:t,defaultSortDirection:n,onSortChange:l,setPage:u}=o,[s,c]=useState({field:t,direction:n}),a=e??s,i=useCallback(C=>{e===void 0&&c(C),l?.(C),u(1);},[e,l,u]),p=useCallback((C,r)=>{i(computeNextSortState(a,C,r));},[a,i]);return {sort:a,setSort:i,handleSort:p,defaultSortField:t,defaultSortDirection:n}}function ul(o,e){let t=useRef(o);return e(o,t.current)||(t.current=o),t.current}function Wi(o,e){let t=Object.keys(o),n=Object.keys(e);if(t.length!==n.length)return false;for(let l=0;l<n.length;l++)if(o[n[l]]!==e[n[l]])return false;return true}var Ki={},ji={fetchFilterOptions:void 0};function dl(o){let{controlledFilters:e,onFiltersChange:t,setPage:n,columns:l,displayData:u,dataSource:s}=o,[c,a]=useState({}),i=e??c,p=useCallback(x=>{e===void 0&&a(x),t?.(x),n(1);},[e,t,n]),C=useCallback((x,w)=>{p(mergeFilter(i,x,w));},[i,p]),r=ul(i,(x,w)=>Wi(x,w)),m=useMemo(()=>Object.values(i).some(x=>x!==void 0),[i]),d=useMemo(()=>getMultiSelectFilterFields(l),[l]),f=s??ji,{filterOptions:R,loadingOptions:g}=sn(f,d),S=s?.fetchFilterOptions!=null,h=useMemo(()=>S?R:deriveFilterOptionsFromData(u,l),[S,u,l,R]);return {filters:i,setFilters:p,handleFilterChange:C,stableFilters:r,hasActiveFilters:m,clientFilterOptions:h,loadingFilterOptions:s?.fetchFilterOptions?g:Ki}}function ml(o){let{isServerSide:e,dataSource:t,displayData:n,columns:l,stableFilters:u,sort:s,page:c,pageSize:a,onError:i,onFirstDataRendered:p,workerSort:C}=o,r=!e,m=C===true||C==="auto"&&n.length>5e3,d=useMemo(()=>{if(!r||m)return null;let k=processClientSideData(n,l,u,s.field,s.direction),O=k.length,N=(c-1)*a;return {items:k.slice(N,N+a),totalCount:O}},[r,m,n,l,u,s.field,s.direction,c,a]),[f,R]=useState(null),g=useRef(0);useEffect(()=>{if(!r||!m){R(null);return}let k=++g.current;processClientSideDataAsync(n,l,u,s.field,s.direction).then(O=>{if(k!==g.current)return;let N=O.length,_=(c-1)*a,Y=O.slice(_,_+a);R({items:Y,totalCount:N});});},[r,m,n,l,u,s.field,s.direction,c,a]);let[S,h]=useState([]),[x,w]=useState(0),[F,P]=useState(true),I=useRef(0),[v,y]=useState(0),b=A(t),D=A(i);useEffect(()=>{if(!e||!b.current){e||P(false);return}let k=b.current,O=++I.current;P(true),k.fetchPage({page:c,pageSize:a,sort:{field:s.field,direction:s.direction},filters:u}).then(N=>{O===I.current&&(h(N.items),w(N.totalCount));}).catch(N=>{O===I.current&&(D.current?.(N),h([]),w(0));}).finally(()=>{O===I.current&&P(false);});},[e,c,a,s.field,s.direction,u,v,b,D]);let L=d??f,G=r&&L?L.items:S,B=r&&L?L.totalCount:x,z=A(p),X=useRef(false);return useEffect(()=>{!X.current&&G.length>0&&(X.current=true,z.current?.());},[G.length,z]),{displayItems:G,displayTotalCount:B,serverLoading:F,refreshData:()=>y(k=>k+1)}}var fl=["columns","filters"];function mn(o){let{config:e}=o,t=e!=null&&e!==false,n=useMemo(()=>{if(!t||e===true)return {panels:fl,position:"right",defaultPanel:null};let a=e;return {panels:a.panels??fl,position:a.position??"right",defaultPanel:a.defaultPanel??null}},[t,e]),[l,u]=useState(n.defaultPanel),s=useCallback(a=>{u(i=>i===a?null:a);},[]),c=useCallback(()=>{u(null);},[]);return {isEnabled:t,activePanel:l,setActivePanel:u,panels:n.panels,position:n.position,isOpen:l!==null,toggle:s,close:c}}var ts=25,ns={},os={fontFamily:"monospace",fontSize:"12px",fontWeight:500,padding:"2px 8px",border:"1px solid var(--ogrid-border, #e0e0e0)",borderRadius:3,background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",minWidth:48,textAlign:"center",lineHeight:"20px",userSelect:"none"};function pn(o,e){let{columns:t,getRowId:n,data:l,dataSource:u,page:s,pageSize:c,sort:a,filters:i,visibleColumns:p,isLoading:C,onPageChange:r,onPageSizeChange:m,onSortChange:d,onFiltersChange:f,onVisibleColumnsChange:R,columnOrder:g,onColumnOrderChange:S,onColumnResized:h,onColumnPinned:x,defaultPageSize:w=ts,defaultSortBy:F,defaultSortDirection:P="asc",toolbar:I,toolbarBelow:v,emptyState:y,entityLabelPlural:b="items",className:D,layoutMode:L="fill",suppressHorizontalScroll:G,editable:B,cellSelection:z,onCellValueChanged:X,onUndo:k,onRedo:O,canUndo:N,canRedo:_,rowSelection:Y="none",selectedRows:M,onSelectionChange:W,showRowNumbers:H,cellReferences:T,statusBar:V,pageSizeOptions:E,sideBar:J,stickyHeader:$,fullScreen:Z,onFirstDataRendered:K,onError:j,columnChooser:q,columnReorder:te,responsiveColumns:ae,virtualScroll:De,rowHeight:Ye,density:Ze="normal",workerSort:Ke,formulas:Re,initialFormulas:st,onFormulaRecalc:Ae,formulaFunctions:ut,namedRanges:ct,sheets:dt,sheetDefs:Le,activeSheet:je,onSheetChange:Se,onSheetAdd:Ge,"aria-label":Je,"aria-labelledby":Qe}=o,Xe=A(n),be=useCallback(U=>Xe.current(U),[Xe]),et=A(S),mt=S!=null,Ce=useMemo(()=>mt?U=>et.current?.(U):void 0,[mt,et]),Wt=A(X),Kt=X!=null,jt=useMemo(()=>Kt?U=>Wt.current?.(U):void 0,[Kt,Wt]),pt=A(k),wt=k!=null,Xt=useMemo(()=>wt?()=>pt.current?.():void 0,[wt,pt]),Pt=A(O),Be=O!=null,qt=useMemo(()=>Be?()=>Pt.current?.():void 0,[Be,Pt]),$t=q===false?"none":q==="sidebar"?"sidebar":"toolbar",ne=useMemo(()=>flattenColumns(t),[t]),Ee=u!=null,Tt=useRef(false);useEffect(()=>{validateColumns(ne);},[ne]);let Jn=F??ne[0]?.columnId??"",[Qn,Yt]=useState([]),[Dt,eo]=useState(false),Zt=l??Qn,to=C??Dt,oe=al({controlledPage:s,controlledPageSize:c,defaultPageSize:w,onPageChange:r,onPageSizeChange:m}),ce=sl({controlledSort:a,defaultSortField:Jn,defaultSortDirection:P,onSortChange:d,setPage:oe.setPage}),ee=dl({controlledFilters:i,onFiltersChange:f,setPage:oe.setPage,columns:ne,displayData:Zt,dataSource:u}),de=ml({isServerSide:Ee,dataSource:u,displayData:Zt,columns:ne,stableFilters:ee.stableFilters,sort:ce.sort,page:oe.page,pageSize:oe.pageSize,onError:j,onFirstDataRendered:K,workerSort:Ke});useEffect(()=>{let U=de.displayItems;!Tt.current&&U.length>0&&(Tt.current=true,validateRowIds(U,be));},[de.displayItems,be]);let[Et,Jt]=useState(()=>{let U=ne.filter(Q=>Q.defaultVisible!==false).map(Q=>Q.columnId);return new Set(U.length>0?U:ne.map(Q=>Q.columnId))}),Qt=useRef(ne.length);useEffect(()=>{let U=Qt.current;if(Qt.current=ne.length,p===void 0&&U===0&&ne.length>0&&Et.size===0){let Q=ne.filter(ie=>ie.defaultVisible!==false).map(ie=>ie.columnId);Jt(new Set(Q.length>0?Q:ne.map(ie=>ie.columnId)));}},[ne,p,Et.size]);let ve=p??Et,Te=useCallback(U=>{p===void 0&&Jt(U),R?.(U);},[p,R]),qe=useCallback((U,Q)=>{let ie=new Set(ve);Q?ie.add(U):ie.delete(U),Te(ie);},[ve,Te]),[no,tt]=useState(new Set),nt=M??no,en=useCallback(U=>{M===void 0&&tt(new Set(U.selectedRowIds)),W?.(U);},[M,W]),[Ft,tn]=useState({}),[Ot,nn]=useState(()=>{let U={};for(let Q of flattenColumns(t))Q.pinned&&(U[Q.columnId]=Q.pinned);return U}),on=useCallback((U,Q)=>{tn(ie=>({...ie,[U]:Q})),h?.(U,Q);},[h]),ft=useCallback((U,Q)=>{nn(ie=>{if(Q===null){let{[U]:lo,...qa}=ie;return qa}return {...ie,[U]:Q}}),x?.(U,Q);},[x]),gt=A(ve),rn=A(ce.sort),Ct=A(g),Rt=A(Ft),Mt=A(Ot),ye=A(ee.filters),Ve=A(nt),$e=A(de.displayItems),fr=A(be),ln=A(ne);useImperativeHandle(e,()=>({setRowData:U=>{Ee||Yt(U);},setLoading:eo,getColumnState:()=>({visibleColumns:Array.from(gt.current),sort:rn.current,columnOrder:Ct.current??void 0,columnWidths:Object.keys(Rt.current).length>0?Rt.current:void 0,filters:Object.keys(ye.current).length>0?ye.current:void 0,pinnedColumns:Object.keys(Mt.current).length>0?Mt.current:void 0}),applyColumnState:U=>{U.visibleColumns&&Te(new Set(U.visibleColumns)),U.sort&&ce.setSort(U.sort),U.columnOrder&&Ce&&Ce(U.columnOrder),U.columnWidths&&tn(U.columnWidths),U.filters&&ee.setFilters(U.filters),U.pinnedColumns&&nn(U.pinnedColumns);},setFilterModel:ee.setFilters,getSelectedRows:()=>Array.from(Ve.current),setSelectedRows:U=>{M===void 0&&tt(new Set(U));},selectAll:()=>{let U=$e.current,Q=new Set(U.map(ie=>fr.current(ie)));M===void 0&&tt(Q),W?.({selectedRowIds:Array.from(Q),selectedItems:U});},deselectAll:()=>{M===void 0&&tt(new Set),W?.({selectedRowIds:[],selectedItems:[]});},clearFilters:()=>ee.setFilters({}),clearSort:()=>ce.setSort({field:ce.defaultSortField,direction:ce.defaultSortDirection}),resetGridState:U=>{ee.setFilters({}),ce.setSort({field:ce.defaultSortField,direction:ce.defaultSortDirection}),U?.keepSelection||(M===void 0&&tt(new Set),W?.({selectedRowIds:[],selectedItems:[]}));},getDisplayedRows:()=>$e.current,refreshData:()=>{Ee&&de.refreshData();},getColumnOrder:()=>Ct.current??ln.current.map(U=>U.columnId),setColumnOrder:U=>{Ce?.(U);},scrollToRow:()=>{}}),[Ee,Te,ce,ee,Ce,M,W,de,Ct,Rt,ln,$e,Ve,ye,fr,Mt,rn,gt]);let gr=useMemo(()=>{if(!V)return;if(typeof V=="object")return V;let U=Ee?de.displayTotalCount:l?.length??0,Q=de.displayTotalCount;return {totalCount:U,filteredCount:ee.hasActiveFilters?Q:void 0,selectedCount:nt.size,suppressRowCount:true}},[V,Ee,l,de.displayTotalCount,ee.hasActiveFilters,nt.size]),Fe=mn({config:J}),an=useMemo(()=>ne.map(U=>({columnId:U.columnId,name:U.name,required:U.required===true})),[ne]),Cr=useMemo(()=>ne.filter(U=>U.filterable&&U.filterable.type).map(U=>({columnId:U.columnId,name:U.name,filterField:U.filterable?.filterField??U.columnId,filterType:U.filterable?.type})),[ne]),Rr=useMemo(()=>Fe.isEnabled?{activePanel:Fe.activePanel,onPanelChange:Fe.setActivePanel,panels:Fe.panels,position:Fe.position,columns:an,visibleColumns:ve,onVisibilityChange:qe,onSetVisibleColumns:Te,filterableColumns:Cr,filters:ee.filters,onFilterChange:ee.handleFilterChange,filterOptions:ee.clientFilterOptions}:null,[Fe.isEnabled,Fe.activePanel,Fe.setActivePanel,Fe.panels,Fe.position,an,ve,qe,Te,Cr,ee.filters,ee.handleFilterChange,ee.clientFilterOptions]),[hr,Va]=useState(0),Na=useCallback(U=>{Va(Q=>Q+1),Ae?.(U);},[Ae]),re=un({formulas:Re,items:de.displayItems,flatColumns:ne,initialFormulas:st,onFormulaRecalc:Na,formulaFunctions:ut,namedRanges:ct,sheets:dt}),Sr=useCallback(()=>ee.setFilters({}),[ee]),br=Ee&&de.serverLoading||to,vr=H||T||Re,yr=!!(T||Re),ht=!!T&&!Re,xr=!!(T||Re),[oo,Ha]=useState(null),[Ir,ro]=useState(null),wr=useCallback(U=>{if(Ha(U),U){let Q=U.match(/^([A-Z]+)(\d+)$/);ro(Q?{col:columnLetterToIndex(Q[1]),row:parseInt(Q[2],10)-1}:null);}else ro(null);},[]),za=useCallback((U,Q)=>{let ie=$e.current,lo=ln.current;if(!(Q<0||Q>=ie.length||U<0||U>=lo.length))return getCellValue(ie[Q],lo[U])},[$e,ln]),le=cn({activeCol:Ir?.col??null,activeRow:Ir?.row??null,activeCellRef:oo,getFormula:re.enabled?re.getFormula:void 0,getRawValue:za,setFormula:re.enabled?re.setFormula:void 0}),_a=useMemo(()=>({items:de.displayItems,columns:t,getRowId:be,sortBy:ce.sort.field,sortDirection:ce.sort.direction,onColumnSort:ce.handleSort,visibleColumns:ve,columnOrder:g,onColumnOrderChange:Ce,onColumnResized:on,onColumnPinned:ft,pinnedColumns:Ot,initialColumnWidths:Ft,editable:B,cellSelection:z,onCellValueChanged:jt,onUndo:Xt,onRedo:qt,canUndo:N,canRedo:_,rowSelection:Y,selectedRows:nt,onSelectionChange:en,showRowNumbers:vr,showColumnLetters:yr,showNameBox:ht,onActiveCellChange:xr?wr:void 0,currentPage:oe.page,pageSize:oe.pageSize,statusBar:gr,isLoading:br,filters:ee.filters,onFilterChange:ee.handleFilterChange,filterOptions:ee.clientFilterOptions,loadingFilterOptions:u?.fetchFilterOptions?ee.loadingFilterOptions:ns,peopleSearch:u?.searchPeople,getUserByEmail:u?.getUserByEmail,layoutMode:L,suppressHorizontalScroll:G,stickyHeader:$??true,columnReorder:te,responsiveColumns:ae,virtualScroll:De,rowHeight:Ye,density:Ze,"aria-label":Je,"aria-labelledby":Qe,emptyState:{hasActiveFilters:ee.hasActiveFilters,onClearAll:Sr,message:y?.message,render:y?.render},formulas:Re,getFormulaValue:re.enabled?re.getFormulaValue:void 0,hasFormula:re.enabled?re.hasFormula:void 0,getFormula:re.enabled?re.getFormula:void 0,setFormula:re.enabled?re.setFormula:void 0,onFormulaCellChanged:re.enabled?re.onCellChanged:void 0,getPrecedents:re.enabled?re.getPrecedents:void 0,getDependents:re.enabled?re.getDependents:void 0,getAuditTrail:re.enabled?re.getAuditTrail:void 0,formulaVersion:hr,formulaReferences:le.referencedCells.length>0?le.referencedCells:void 0,onFormulaInsertReference:le.insertReference}),[de.displayItems,t,be,ce.sort.field,ce.sort.direction,ce.handleSort,ve,g,Ce,on,ft,Ot,Ft,B,z,jt,Xt,qt,N,_,Y,nt,en,vr,yr,ht,xr,wr,oe.page,oe.pageSize,gr,br,ee.filters,ee.handleFilterChange,ee.clientFilterOptions,u,ee.loadingFilterOptions,L,G,$,te,ae,De,Ye,Ze,Je,Qe,ee.hasActiveFilters,Sr,y,Re,re,hr,le.referencedCells,le.insertReference]),Wa=useMemo(()=>({page:oe.page,pageSize:oe.pageSize,displayTotalCount:de.displayTotalCount,setPage:oe.setPage,setPageSize:oe.setPageSize,pageSizeOptions:E,entityLabelPlural:b}),[oe.page,oe.pageSize,de.displayTotalCount,oe.setPage,oe.setPageSize,E,b]),Ka=useMemo(()=>({columns:an,visibleColumns:ve,onVisibilityChange:qe,onSetVisibleColumns:Te,placement:$t}),[an,ve,qe,Te,$t]),Pr=useMemo(()=>ht?Pe.createElement("div",{style:os,"aria-label":"Active cell reference"},oo??"\u2014"):null,[ht,oo]),Tr=useMemo(()=>ht?Pe.createElement(Pe.Fragment,null,Pr,I):I,[ht,Pr,I]),Dr=useMemo(()=>{if(Re)return Pe.createElement(Fo,{cellRef:le.cellRef,formulaText:le.formulaText,isEditing:le.isEditing,onInputChange:le.onInputChange,onCommit:le.onCommit,onCancel:le.onCancel,startEditing:le.startEditing,inputRef:le.inputRef})},[Re,le.cellRef,le.formulaText,le.isEditing,le.onInputChange,le.onCommit,le.onCancel,le.startEditing,le.inputRef]),Er=useMemo(()=>{if(!(!Le||Le.length===0||!je||!Se))return Pe.createElement(Oo,{sheets:Le,activeSheet:je,onSheetChange:Se,onSheetAdd:Ge})},[Le,je,Se,Ge]),ja=useMemo(()=>({toolbar:Tr,toolbarBelow:v,className:D,emptyState:y,sideBarProps:Rr,fullScreen:Z,formulaBar:Dr,sheetTabs:Er}),[Tr,v,D,y,Rr,Z,Dr,Er]),Xa=useMemo(()=>({hasActiveFilters:ee.hasActiveFilters,setFilters:ee.setFilters}),[ee.hasActiveFilters,ee.setFilters]);return {dataGridProps:_a,pagination:Wa,columnChooser:Ka,layout:ja,filters:Xa}}function fn(o,e){let[t,n]=useState(null),l=useRef(t);l.current=t;let u=useCallback(c=>{let a=l.current;a!==c&&(a&&c&&a.rowIndex===c.rowIndex&&a.columnIndex===c.columnIndex||n(c));},[]),s=useRef(0);return useLayoutEffect(()=>{if(t==null||o?.current==null||e!=null)return;let{rowIndex:c,columnIndex:a}=t,i=`[data-row-index="${c}"][data-col-index="${a}"]`,p=o.current.querySelector(i);p&&document.activeElement!==p&&typeof p.focus=="function"&&p.focus({preventScroll:true});},[t,e,o]),useEffect(()=>{t==null||o?.current==null||e!=null||(cancelAnimationFrame(s.current),s.current=requestAnimationFrame(()=>{let c=o?.current;if(!c)return;let{rowIndex:a,columnIndex:i}=t,p=`[data-row-index="${a}"][data-col-index="${i}"]`,C=c.querySelector(p);if(C){let r=c.querySelector("thead"),m=r?r.getBoundingClientRect().height:0,d=c.getBoundingClientRect(),f=C.getBoundingClientRect(),R=d.top+m;f.top<R?c.scrollTop-=R-f.top:f.bottom>d.bottom&&(c.scrollTop+=f.bottom-d.bottom),c.scrollWidth>c.clientWidth&&(f.left<d.left?c.scrollLeft-=d.left-f.left:f.right>d.right&&(c.scrollLeft+=f.right-d.right));}}));},[t,e,o]),useEffect(()=>()=>cancelAnimationFrame(s.current),[]),{activeCell:t,setActiveCell:u}}function gn(){let[o,e]=useState(null),[t,n]=useState(void 0);return {editingCell:o,setEditingCell:e,pendingEditorValue:t,setPendingEditorValue:n}}function Cn(){let[o,e]=useState(null),t=useCallback(l=>{l.preventDefault?.(),e({x:l.clientX,y:l.clientY});},[]),n=useCallback(()=>{e(null);},[]);return {contextMenuPosition:o,setContextMenuPosition:e,handleCellContextMenu:t,closeContextMenu:n}}var Go="data-drag-range",Gt="data-drag-anchor",fe=40,us=16;function Rn(o){let{colOffset:e,rowCount:t,visibleColCount:n,setActiveCell:l,wrapperRef:u}=o,s=A(e),[c,a]=useState(null),i=useRef(false),[p,C]=useState(false),r=useRef(false),m=useRef(null),d=useRef(0),f=useRef(null),R=useRef(null),g=useRef(c);g.current=c;let S=useCallback(P=>{rangesEqual(g.current,P)||a(P);},[]),h=useCallback((P,I,v)=>{if(P.button!==0)return;let y=s.current;if(v<y)return;P.preventDefault();let b=v-y,D=g.current;if(P.shiftKey&&D!=null)S(normalizeSelectionRange({startRow:D.startRow,startCol:D.startCol,endRow:I,endCol:b})),l({rowIndex:I,columnIndex:v});else {m.current={row:I,col:b},r.current=false;let L={startRow:I,startCol:b,endRow:I,endCol:b};S(L),f.current=L,l({rowIndex:I,columnIndex:v}),i.current=true,setTimeout(()=>F.current?.(L),0);}},[l,s,S]),x=useCallback(()=>{t===0||n===0||(S({startRow:0,startCol:0,endRow:t-1,endCol:n-1}),l({rowIndex:0,columnIndex:s.current}));},[t,n,l,s,S]),w=useRef(null),F=useRef(null);return useEffect(()=>{let P=new Set,I=null,v=null,y=null,b=(M,W,H,T,V,E,J,$)=>{M.hasAttribute(Go)||M.setAttribute(Go,""),$&&W===$.row&&H===$.col?M.hasAttribute(Gt)||M.setAttribute(Gt,""):M.hasAttribute(Gt)&&M.removeAttribute(Gt),P.add(M);},D=M=>{M.removeAttribute(Go),M.removeAttribute(Gt);},L=(M,W,H,T,V)=>{let E=I?.get(`${M},${H+V}`),J=I?.get(`${W},${T+V}`);if(!E||!J)return;let $=E.closest("td"),Z=J.closest("td");if(!$||!Z||!y&&(y=E.closest("table")?.parentElement,!y))return;v||(v=document.createElement("div"),v.style.position="absolute",v.style.border="2px solid var(--ogrid-selection, #217346)",v.style.pointerEvents="none",v.style.zIndex="4",v.style.boxSizing="border-box",y.appendChild(v));let K=y.getBoundingClientRect(),j=$.getBoundingClientRect(),q=Z.getBoundingClientRect();v.style.top=`${Math.round(j.top-K.top)}px`,v.style.left=`${Math.round(j.left-K.left)}px`,v.style.width=`${Math.round(q.right-j.left)}px`,v.style.height=`${Math.round(q.bottom-j.top)}px`,v.style.display="block";},G=()=>{v&&(v.style.display="none");},B=()=>{v?.remove(),v=null,y=null;},z=M=>{if(!u.current||!i.current)return;let H=Math.min(M.startRow,M.endRow),T=Math.max(M.startRow,M.endRow),V=Math.min(M.startCol,M.endCol),E=Math.max(M.startCol,M.endCol),J=m.current,$=s.current;for(let K of P){let j=parseInt(K.getAttribute("data-row-index")??"",10),q=parseInt(K.getAttribute("data-col-index")??"",10)-$;j>=H&&j<=T&&q>=V&&q<=E||(D(K),P.delete(K));}I||(I=buildCellIndex(u.current));let Z=false;for(let K=H;K<=T;K++)for(let j=V;j<=E;j++){let q=`${K},${j+$}`,te=I?.get(q);te&&!te.isConnected&&!Z&&(Z=true,I=buildCellIndex(u.current),te=I?.get(q)),te&&te.isConnected&&b(te,K,j,H,T,V,E,J);}L(H,T,V,E,$);};F.current=z;let X=()=>{for(let M of P)D(M);P.clear(),I=null,G();},k=(M,W)=>{if(!m.current)return null;let T=document.elementFromPoint(M,W)?.closest?.("[data-row-index][data-col-index]");if(!T)return null;let V=parseInt(T.getAttribute("data-row-index")??"",10),E=parseInt(T.getAttribute("data-col-index")??"",10),J=s.current;if(Number.isNaN(V)||Number.isNaN(E)||E<J)return null;let $=E-J,Z=m.current;return normalizeSelectionRange({startRow:Z.row,startCol:Z.col,endRow:V,endCol:$})},O=()=>{let M=u.current,W=w.current;if(!M||!W||!i.current){N();return}let H=M.getBoundingClientRect(),T=0,V=0;if(W.cy<H.top+fe?V=-computeAutoScrollSpeed(H.top+fe-W.cy):W.cy>H.bottom-fe&&(V=computeAutoScrollSpeed(W.cy-(H.bottom-fe))),W.cx<H.left+fe?T=-computeAutoScrollSpeed(H.left+fe-W.cx):W.cx>H.right-fe&&(T=computeAutoScrollSpeed(W.cx-(H.right-fe))),T===0&&V===0){N();return}R.current||(R.current=setInterval(()=>{let E=u.current,J=w.current;if(!E||!J||!i.current){N();return}let $=E.getBoundingClientRect(),Z=0,K=0;if(J.cy<$.top+fe?K=-computeAutoScrollSpeed($.top+fe-J.cy):J.cy>$.bottom-fe&&(K=computeAutoScrollSpeed(J.cy-($.bottom-fe))),J.cx<$.left+fe?Z=-computeAutoScrollSpeed($.left+fe-J.cx):J.cx>$.right-fe&&(Z=computeAutoScrollSpeed(J.cx-($.right-fe))),Z===0&&K===0){N();return}E.scrollTop+=K,E.scrollLeft+=Z;let j=k(J.cx,J.cy);j&&(f.current=j,z(j));},us));},N=()=>{R.current&&(clearInterval(R.current),R.current=null);},_=M=>{!i.current||!m.current||(r.current||(r.current=true,C(true),I=buildCellIndex(u.current)),w.current={cx:M.clientX,cy:M.clientY},O(),d.current&&cancelAnimationFrame(d.current),d.current=requestAnimationFrame(()=>{d.current=0;let W=w.current;if(!W)return;let H=k(W.cx,W.cy);if(!H)return;let T=f.current;T&&T.startRow===H.startRow&&T.startCol===H.startCol&&T.endRow===H.endRow&&T.endCol===H.endCol||(f.current=H,z(H));}));},Y=()=>{if(!i.current)return;N(),d.current&&(cancelAnimationFrame(d.current),d.current=0),i.current=false;let M=r.current;if(M){let W=w.current;if(W){let T=k(W.cx,W.cy);T&&(f.current=T);}let H=f.current;if(H){S(H);let T=m.current;T&&l({rowIndex:T.row,columnIndex:T.col+s.current});}}f.current=null,w.current=null,m.current=null,M&&C(false),requestAnimationFrame(()=>{X();});};return window.addEventListener("pointermove",_,true),window.addEventListener("pointerup",Y,true),()=>{window.removeEventListener("pointermove",_,true),window.removeEventListener("pointerup",Y,true),d.current&&cancelAnimationFrame(d.current),N(),B();}},[l,s,S,u]),{selectionRange:c,setSelectionRange:S,handleCellMouseDown:h,handleSelectAllCells:x,isDragging:p}}function hn(o){let{colOffset:e,beginBatch:t,endBatch:n}=o,l=A(o.items),u=A(o.visibleCols),s=A(o.selectionRange),c=A(o.activeCell),a=A(o.editable),i=A(o.onCellValueChanged),p=A(o.formulas),C=A(o.flatColumns),r=A(o.getFormula),m=A(o.hasFormula),d=A(o.setFormula),f=useRef(null),[R,g]=useState(null),[S,h]=useState(null),x=useRef(null),w=useRef(true);useEffect(()=>()=>{w.current=false;},[]);let F=useCallback(()=>{let b=s.current,D=c.current;return b??(D!=null?{startRow:D.rowIndex,startCol:D.columnIndex-e,endRow:D.rowIndex,endCol:D.columnIndex-e}:null)},[e,s,c]),P=useCallback(()=>{let b=F();if(b==null)return;let D=normalizeSelectionRange(b),L=p.current&&C.current?{colOffset:e,flatColumns:C.current,getFormula:r.current,hasFormula:m.current}:void 0,G=formatSelectionAsTsv(l.current,u.current,D,L);x.current=G,h(D),navigator.clipboard.writeText(G).catch(()=>{});},[F,l,u,p,C,r,m,e]),I=useCallback(()=>{if(a.current===false)return;let b=F();if(b==null||i.current==null)return;let D=normalizeSelectionRange(b);f.current=D,g(D),h(null),P(),h(null);},[F,P,a,i]),v=useCallback(async()=>{if(a.current===false)return;let b=i.current;if(b==null)return;let D;try{D=await navigator.clipboard.readText();}catch{D="";}if(!w.current||(!D.trim()&&x.current!=null&&(D=x.current),!D.trim()))return;let L=F(),G=L?L.startRow:0,B=L?L.startCol:0,z=l.current,X=u.current,k=parseTsvClipboard(D),O=p.current&&C.current?{colOffset:e,flatColumns:C.current,setFormula:d.current}:void 0;t?.();let N=applyPastedValues(k,G,B,z,X,O);for(let _ of N)b(_);if(f.current){let _=applyCutClear(f.current,z,X);for(let Y of _)b(Y);f.current=null,g(null);}n?.(),h(null);},[F,l,u,a,i,t,n,p,C,d,e]),y=useCallback(()=>{h(null),g(null),f.current=null;},[]);return {handleCopy:P,handleCut:I,handlePaste:v,cutRange:R,copyRange:S,clearClipboardRanges:y}}function Sn(o){let{items:e,getRowId:t,rowSelection:n,controlledSelectedRows:l,onSelectionChange:u}=o,[s,c]=useState(new Set),a=useRef(-1),i=useMemo(()=>l!=null?l instanceof Set?l:new Set(l):s,[l,s]),p=useCallback(g=>{l===void 0&&c(g),u?.({selectedRowIds:Array.from(g),selectedItems:e.filter(S=>g.has(t(S)))});},[l,u,e,t]),C=A(i),r=A(e),m=useCallback((g,S,h,x)=>{if(n==="single"){p(S?new Set([g]):new Set),a.current=h;return}let w=r.current,F;x&&a.current>=0&&a.current!==h?F=applyRangeRowSelection(a.current,h,S,w,t,C.current):(F=new Set(C.current),S?F.add(g):F.delete(g)),a.current=h,p(F);},[n,t,p,r,C]),d=useCallback(g=>{p(g?new Set(e.map(S=>t(S))):new Set);},[e,t,p]),{allSelected:f,someSelected:R}=useMemo(()=>computeRowSelectionState(i,e,t),[e,i,t]);return {selectedRowIds:i,updateSelection:p,handleRowCheckboxChange:m,handleSelectAll:d,allSelected:f,someSelected:R}}function bn(o){let e=useRef(o);return e.current=o,{handleGridKeyDown:useCallback(n=>{let{data:l,state:u,handlers:s,features:c}=e.current,{items:a,visibleCols:i,colOffset:p,hasCheckboxCol:C,visibleColumnCount:r,getRowId:m}=l,{activeCell:d,selectionRange:f,editingCell:R,selectedRowIds:g}=u,{setActiveCell:S,setSelectionRange:h,setEditingCell:x,handleRowCheckboxChange:w,handleCopy:F,handleCut:P,handlePaste:I,setContextMenu:v,onUndo:y,onRedo:b,clearClipboardRanges:D}=s,{editable:L,onCellValueChanged:G,rowSelection:B,wrapperRef:z,onKeyDown:X,fillDown:k}=c;if(X&&(X(n),n.defaultPrevented))return;let O=a.length-1,N=r-1+p;if(a.length===0)return;if(d===null){["ArrowDown","ArrowUp","ArrowLeft","ArrowRight","Tab","Enter","Home","End","PageDown","PageUp"].includes(n.key)&&(S({rowIndex:0,columnIndex:p}),n.preventDefault());return}let{rowIndex:_,columnIndex:Y}=d,M=Y-p,W=n.shiftKey,H=(T,V)=>{if(T<0||T>=a.length||V<0||V>=i.length)return true;let E=getCellValue(a[T],i[V]);return E==null||E===""};switch(n.key){case "c":if(n.ctrlKey||n.metaKey){if(R!=null)break;n.preventDefault(),F();}break;case "x":if(n.ctrlKey||n.metaKey){if(R!=null)break;n.preventDefault(),P();}break;case "v":if(n.ctrlKey||n.metaKey){if(R!=null)break;n.preventDefault(),I();}break;case "ArrowDown":case "ArrowUp":case "ArrowRight":case "ArrowLeft":{if(R!=null)break;n.preventDefault();let{newRowIndex:T,newColumnIndex:V,newRange:E}=computeArrowNavigation({direction:n.key,rowIndex:_,columnIndex:Y,dataColIndex:M,colOffset:p,maxRowIndex:O,maxColIndex:N,visibleColCount:i.length,isCtrl:n.ctrlKey||n.metaKey,isShift:W,selectionRange:f,isEmptyAt:H});h(E),S({rowIndex:T,columnIndex:V});break}case "Tab":{n.preventDefault();let{rowIndex:T,columnIndex:V}=computeTabNavigation(_,Y,O,N,p,n.shiftKey),E=V-p;h({startRow:T,startCol:E,endRow:T,endCol:E}),S({rowIndex:T,columnIndex:V});break}case "Home":{n.preventDefault();let T=n.ctrlKey?0:_;h({startRow:T,startCol:0,endRow:T,endCol:0}),S({rowIndex:T,columnIndex:p});break}case "End":{n.preventDefault();let T=n.ctrlKey?O:_;h({startRow:T,startCol:r-1,endRow:T,endCol:r-1}),S({rowIndex:T,columnIndex:N});break}case "PageDown":case "PageUp":{n.preventDefault();let T=z.current,V=10,E=36;if(T){let Z=T.querySelector("tbody tr");Z&&Z.offsetHeight>0&&(E=Z.offsetHeight,V=Math.max(1,Math.floor(T.clientHeight/E)));}let J=n.key==="PageDown"?1:-1,$=Math.max(0,Math.min(_+J*V,O));h(W?{startRow:f?.startRow??_,startCol:f?.startCol??M,endRow:$,endCol:f?.endCol??M}:{startRow:$,startCol:M,endRow:$,endCol:M}),S({rowIndex:$,columnIndex:Y}),T&&(T.scrollTop=getScrollTopForRow($,E,T.clientHeight,"center"));break}case "Enter":case "F2":{if(n.preventDefault(),M>=0&&M<i.length){let T=i[M],V=a[_];if(V&&T){let E=T.editable===true||typeof T.editable=="function"&&T.editable(V);L!==false&&E&&G!=null&&x({rowId:m(V),columnId:T.columnId});}}break}case "Escape":n.preventDefault(),R!=null?x(null):(D?.(),S(null),h(null));break;case " ":if(B!=="none"&&Y===0&&C){n.preventDefault();let T=a[_];if(T){let V=m(T),E=g.has(V);w(V,!E,_,n.shiftKey);}}break;case "z":(n.ctrlKey||n.metaKey)&&R==null&&(n.shiftKey&&b?(n.preventDefault(),b()):!n.shiftKey&&y&&(n.preventDefault(),y()));break;case "y":(n.ctrlKey||n.metaKey)&&R==null&&b&&(n.preventDefault(),b());break;case "a":if(n.ctrlKey||n.metaKey){if(R!=null)break;n.preventDefault(),a.length>0&&r>0&&(h({startRow:0,startCol:0,endRow:a.length-1,endCol:r-1}),S({rowIndex:0,columnIndex:p}));}break;case "d":if(n.ctrlKey||n.metaKey){if(R!=null)break;L!==false&&k&&(n.preventDefault(),k());}break;case "Delete":case "Backspace":{if(R!=null||L===false||G==null)break;let T=f??(d!=null?{startRow:d.rowIndex,startCol:d.columnIndex-p,endRow:d.rowIndex,endCol:d.columnIndex-p}:null);if(T==null)break;n.preventDefault();let V=applyCellDeletion(T,a,i);for(let E of V)G(E);break}case "F10":if(n.shiftKey)if(n.preventDefault(),d!=null&&z.current){let T=`[data-row-index="${d.rowIndex}"][data-col-index="${d.columnIndex}"]`,V=z.current.querySelector(T);if(V){let E=V.getBoundingClientRect();v({x:E.left+E.width/2,y:E.top+E.height/2});}else v({x:100,y:100});}else v({x:100,y:100});break;}},[])}}function vn(o){let{onCellValueChanged:e,maxUndoDepth:t=100}=o,n=A(e),l=useRef(null);l.current===null&&(l.current=new UndoRedoStack(t));let[u,s]=useState(0),[c,a]=useState(0),i=useCallback(()=>{let f=l.current;if(!f)throw new Error("UndoRedoStack not initialized");return f},[]),p=useCallback(f=>{if(!n.current)return;let R=i();R.record(f),R.isBatching||(s(R.historyLength),a(R.redoLength)),n.current(f);},[i,n]),C=useCallback(()=>{i().beginBatch();},[i]),r=useCallback(()=>{let f=i();f.endBatch(),s(f.historyLength),a(f.redoLength);},[i]),m=useCallback(()=>{if(!n.current)return;let f=i(),R=f.undo();if(R){s(f.historyLength),a(f.redoLength);for(let g=R.length-1;g>=0;g--){let S=R[g];n.current({...S,oldValue:S.newValue,newValue:S.oldValue});}}},[i,n]),d=useCallback(()=>{if(!n.current)return;let f=i(),R=f.redo();if(R){s(f.historyLength),a(f.redoLength);for(let g of R)n.current(g);}},[i,n]);return {onCellValueChanged:e?p:void 0,undo:m,redo:d,canUndo:u>0,canRedo:c>0,beginBatch:C,endBatch:r,maxUndoDepth:t}}function yn(o,e){let[t,n]=useState(o);return useEffect(()=>{let l=setTimeout(()=>{n(o);},e);return ()=>clearTimeout(l)},[o,e]),t}var In="data-drag-range";function wn(o){let{items:e,visibleCols:t,editable:n,onCellValueChanged:l,selectionRange:u,setSelectionRange:s,setActiveCell:c,colOffset:a,wrapperRef:i,beginBatch:p,endBatch:C,formulaOptions:r}=o,m=A(l),[d,f]=useState(null),R=useRef({endRow:0,endCol:0}),g=useRef(0),S=useRef(null),h=A(a),x=A(e),w=A(t),F=A(r);useEffect(()=>{if(!d||n===false||!m.current||!i.current)return;R.current={endRow:d.startRow,endCol:d.startCol},S.current=null;let y=new Set,b=buildCellIndex(i.current),D=k=>{if(!i.current)return;let N=Math.min(k.startRow,k.endRow),_=Math.max(k.startRow,k.endRow),Y=Math.min(k.startCol,k.endCol),M=Math.max(k.startCol,k.endCol),W=h.current;for(let H of y){let T=parseInt(H.getAttribute("data-row-index")??"",10),V=parseInt(H.getAttribute("data-col-index")??"",10)-W;T>=N&&T<=_&&V>=Y&&V<=M||(H.removeAttribute(In),y.delete(H));}for(let H=N;H<=_;H++)for(let T=Y;T<=M;T++){let V=`${H},${T+W}`,E=b?.get(V);E&&!E.isConnected&&(b=buildCellIndex(i.current),E=b.get(V)),E&&(E.hasAttribute(In)||E.setAttribute(In,""),y.add(E));}},L=()=>{for(let k of y)k.removeAttribute(In);y.clear();},G=null,B=(k,O)=>{let _=document.elementFromPoint(k,O)?.closest?.("[data-row-index][data-col-index]");if(!_||!i.current?.contains(_))return null;let Y=parseInt(_.getAttribute("data-row-index")??"",10),M=parseInt(_.getAttribute("data-col-index")??"",10);if(Number.isNaN(Y)||Number.isNaN(M)||M<h.current)return null;let W=M-h.current;return normalizeSelectionRange({startRow:d.startRow,startCol:d.startCol,endRow:Y,endCol:W})},z=k=>{G={cx:k.clientX,cy:k.clientY},g.current&&cancelAnimationFrame(g.current),g.current=requestAnimationFrame(()=>{if(g.current=0,!G)return;let O=B(G.cx,G.cy);if(!O)return;let N=S.current;N&&N.startRow===O.startRow&&N.startCol===O.startCol&&N.endRow===O.endRow&&N.endCol===O.endCol||(S.current=O,R.current={endRow:O.endRow,endCol:O.endCol},D(O));});},X=()=>{if(g.current&&(cancelAnimationFrame(g.current),g.current=0),G){let _=B(G.cx,G.cy);_&&(S.current=_,R.current={endRow:_.endRow,endCol:_.endCol});}L();let k=R.current,O=normalizeSelectionRange({startRow:d.startRow,startCol:d.startCol,endRow:k.endRow,endCol:k.endCol});s(O),c({rowIndex:d.startRow,columnIndex:d.startCol+h.current});let N=applyFillValues(O,d.startRow,d.startCol,e,t,F.current);if(N.length>0){p?.();for(let _ of N)m.current?.(_);C?.();}f(null),S.current=null;};return window.addEventListener("pointermove",z,true),window.addEventListener("pointerup",X,true),()=>{window.removeEventListener("pointermove",z,true),window.removeEventListener("pointerup",X,true),g.current&&cancelAnimationFrame(g.current);}},[d,n,e,t,s,c,p,C,h,i,m,F]);let P=useRef(u);P.current=u;let I=useCallback(y=>{y.preventDefault(),y.stopPropagation();let b=P.current;b&&f({startRow:b.startRow,startCol:b.startCol});},[]),v=useCallback(()=>{let y=P.current;if(!y||n===false||!m.current)return;let b=normalizeSelectionRange(y),D=applyFillValues(b,b.startRow,b.startCol,x.current,w.current,F.current);if(D.length>0){p?.();for(let L of D)m.current(L);C?.();}},[n,p,C,m,x,w,F]);return {fillDrag:d,setFillDrag:f,handleFillHandleMouseDown:I,fillDown:v}}function Pn(o){let{wrapperRef:e,visibleCols:t,flatColumns:n,hasCheckboxCol:l,initialColumnWidths:u,onColumnResized:s}=o,[c,a]=useState(0);useEffect(()=>{let m=e.current;if(!m)return;let d=()=>{let R=m.getBoundingClientRect(),g=window.getComputedStyle(m),S=(parseFloat(g.borderLeftWidth||"0")||0)+(parseFloat(g.borderRightWidth||"0")||0),h=Math.round(Math.max(0,R.width-S));a(x=>x===h?x:h);},f=new ResizeObserver(d);return f.observe(m),d(),()=>f.disconnect()},[e]);let[i,p]=useState(()=>{if(!u)return {};let m={};for(let[d,f]of Object.entries(u))m[d]={widthPx:f};return m}),C=useMemo(()=>{let m=l?CHECKBOX_COLUMN_WIDTH:0;return t.reduce((d,f)=>d+(f.minWidth??DEFAULT_MIN_COLUMN_WIDTH)+CELL_PADDING,m)},[t,l]);useEffect(()=>{let m=new Set(n.map(d=>d.columnId));p(d=>{let f=Object.fromEntries(Object.entries(d).filter(([R])=>m.has(R)));return Object.keys(f).length!==Object.keys(d).length?f:d});},[n]);let r=useMemo(()=>{let m=l?CHECKBOX_COLUMN_WIDTH:0;return t.reduce((d,f)=>{let R=i[f.columnId],g=R?R.widthPx:f.idealWidth??f.defaultWidth??f.minWidth??DEFAULT_MIN_COLUMN_WIDTH;return d+Math.max(f.minWidth??DEFAULT_MIN_COLUMN_WIDTH,g)+CELL_PADDING},m)},[t,i,l]);return {containerWidth:c,minTableWidth:C,desiredTableWidth:r,columnSizingOverrides:i,setColumnSizingOverrides:p,onColumnResized:s}}function Fl(o){let{columns:e,pinnedColumns:t,onColumnPinned:n}=o,[l,u]=useState(()=>{let r={};for(let m of e)m.pinned&&(r[m.columnId]=m.pinned);return r}),s=t??l,c=useCallback((r,m)=>{let d={...s,[r]:m};t||u(d),n?.(r,m);},[s,t,n]),a=useCallback(r=>{let{[r]:m,...d}=s;t||u(d),n?.(r,null);},[s,t,n]),i=useCallback(r=>s[r],[s]),p=useCallback((r,m,d,f,R)=>{let g={},S=f?R:0;for(let h of r)s[h.columnId]==="left"&&(g[h.columnId]=S,S+=m[h.columnId]??d);return g},[s]),C=useCallback((r,m,d)=>{let f={},R=0;for(let g=r.length-1;g>=0;g--){let S=r[g];s[S.columnId]==="right"&&(f[S.columnId]=R,R+=m[S.columnId]??d);}return f},[s]);return {pinnedColumns:s,pinColumn:c,unpinColumn:a,isPinned:i,computeLeftOffsets:p,computeRightOffsets:C}}function zo(o){let{pinnedColumns:e,onPinColumn:t,onUnpinColumn:n,sortBy:l,sortDirection:u,onColumnSort:s,onColumnResized:c,onAutosizeColumn:a,columns:i}=o,[p,C]=useState(false),[r,m]=useState(null),[d,f]=useState(null),R=useCallback((k,O)=>{m(k),f(O),C(true);},[]),g=useCallback(()=>{C(false),m(null),f(null);},[]),S=r?e[r]:void 0,h=S!=="left",x=S!=="right",w=!!S,F=i.find(k=>k.columnId===r),P=r===l?u:null,I=F?.sortable!==false,v=F?.resizable!==false,y=useCallback(()=>{r&&h&&(t(r,"left"),g());},[r,h,t,g]),b=useCallback(()=>{r&&x&&(t(r,"right"),g());},[r,x,t,g]),D=useCallback(()=>{r&&w&&(n(r),g());},[r,w,n,g]),L=useCallback(()=>{r&&I&&(s(r,"asc"),g());},[r,I,s,g]),G=useCallback(()=>{r&&I&&(s(r,"desc"),g());},[r,I,s,g]),B=useCallback(()=>{r&&I&&(s(r,null),g());},[r,I,s,g]),z=useCallback(()=>{let k=a??c;if(!r||!k||!v)return;let O=i.find(N=>N.columnId===r);k(r,measureColumnContentWidth(r,O?.minWidth)),g();},[r,a,c,v,i,g]),X=useCallback(()=>{let k=a??c;k&&(i.forEach(O=>{O.resizable!==false&&k(O.columnId,measureColumnContentWidth(O.columnId,O.minWidth));}),g());},[i,a,c,g]);return {isOpen:p,openForColumn:r,anchorElement:d,open:R,close:g,handlePinLeft:y,handlePinRight:b,handleUnpin:D,handleSortAsc:L,handleSortDesc:G,handleClearSort:B,handleAutosizeThis:z,handleAutosizeAll:X,canPinLeft:h,canPinRight:x,canUnpin:w,currentSort:P,isSortable:I,isResizable:v}}function Ol(o){return {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}}function Ul(o){let{columns:e,items:t,getRowId:n,visibleColumns:l,columnOrder:u,rowSelection:s="none",showRowNumbers:c,initialColumnWidths:a,onColumnResized:i,onAutosizeColumn:p,pinnedColumns:C,onColumnPinned:r,sortBy:m,sortDirection:d,onColumnSort:f,responsiveColumns:R,wrapperRef:g}=o,S=useMemo(()=>flattenColumns(e),[e]),h=useMemo(()=>!C||Object.keys(C).length===0?S:S.map(K=>{let j=C[K.columnId];return j&&K.pinned!==j?{...K,pinned:j}:K}),[S,C]),x=useMemo(()=>resolveResponsiveConfig(R),[R]),w=useMemo(()=>{let K=l?h.filter(q=>l.has(q.columnId)):h;if(!u?.length)return K;let j=new Map;for(let q=0;q<u.length;q++)j.set(u[q],q);return [...K].sort((q,te)=>{let ae=j.get(q.columnId)??-1,De=j.get(te.columnId)??-1;return ae===-1&&De===-1?0:ae===-1?1:De===-1?-1:ae-De})},[h,l,u]),F=s==="multiple",P=!!c,I=useMemo(()=>{let K=new Map;return t.forEach((j,q)=>K.set(n(j),q)),K},[t,n]),{containerWidth:v,minTableWidth:y,desiredTableWidth:b,columnSizingOverrides:D,setColumnSizingOverrides:L}=Pn({wrapperRef:g,visibleCols:w,flatColumns:h,hasCheckboxCol:F,initialColumnWidths:a,onColumnResized:i}),G=useMemo(()=>applyResponsiveHiding(w,v,x),[w,v,x]),B=G.length,z=(F?1:0)+(P?1:0),X=B+z,k=z,O=Fl({columns:h,pinnedColumns:C,onColumnPinned:r}),N=useMemo(()=>{let K=Object.entries(D);return K.length===0?"":K.map(([j,q])=>`${j}:${Math.round(q.widthPx)}`).join(",")},[D]),[_,Y]=useState({});useLayoutEffect(()=>{let K=g.current;if(!K)return;let j=K.querySelectorAll("th[data-column-id]");if(j.length===0)return;let q={};j.forEach(te=>{let ae=te.getAttribute("data-column-id");ae&&(q[ae]=te.offsetWidth);}),Y(te=>{for(let ae in q)if(te[ae]!==q[ae])return q;return Object.keys(te).length!==Object.keys(q).length?q:te});},[G,N,g]);let M=useMemo(()=>{let K={};for(let j of G){let q=D[j.columnId];K[j.columnId]=q?q.widthPx:_[j.columnId]??j.idealWidth??j.defaultWidth??j.minWidth??DEFAULT_MIN_COLUMN_WIDTH;}return K},[G,D,_]),W=useMemo(()=>O.computeLeftOffsets(G,M,DEFAULT_MIN_COLUMN_WIDTH,F,CHECKBOX_COLUMN_WIDTH),[O,G,M,F]),H=useMemo(()=>O.computeRightOffsets(G,M,DEFAULT_MIN_COLUMN_WIDTH),[O,G,M]),T=A(f),V=useCallback((K,j)=>T.current?.(K,j),[T]),E=useCallback((K,j)=>{L(q=>({...q,[K]:{widthPx:j}})),(p??i)?.(K,j);},[L,p,i]),J=zo({pinnedColumns:O.pinnedColumns,onPinColumn:O.pinColumn,onUnpinColumn:O.unpinColumn,sortBy:m,sortDirection:d??"asc",onColumnSort:V,onColumnResized:i,onAutosizeColumn:E,columns:h}),$=useMemo(()=>({flatColumns:h,visibleCols:G,visibleColumnCount:B,totalColCount:X,colOffset:k,hasCheckboxCol:F,hasRowNumbersCol:P,rowIndexByRowId:I,containerWidth:v,minTableWidth:y,desiredTableWidth:b,columnSizingOverrides:D,setColumnSizingOverrides:L,onColumnResized:i,measuredColumnWidths:_}),[h,G,B,X,k,F,P,I,v,y,b,D,L,i,_]),Z=useMemo(()=>({pinnedColumns:O.pinnedColumns,pinColumn:O.pinColumn,unpinColumn:O.unpinColumn,isPinned:O.isPinned,leftOffsets:W,rightOffsets:H,headerMenu:J}),[O.pinnedColumns,O.pinColumn,O.unpinColumn,O.isPinned,W,H,J]);return {layout:$,pinning:Z,flatColumns:h,visibleCols:G,visibleColumnCount:B,totalColCount:X,colOffset:k,hasCheckboxCol:F,hasRowNumbersCol:P,columnSizingOverrides:D,setColumnSizingOverrides:L,handleAutosizeColumn:E,stableOnColumnSort:V}}function Al(o){let{editingCell:e,setEditingCell:t,pendingEditorValue:n,setPendingEditorValue:l,onCellValueChanged:u,setActiveCell:s,setSelectionRange:c,colOffset:a,setFormula:i,onFormulaCellChanged:p,formulas:C,flatColumns:r}=o,[m,d]=useState(null),f=A(o.visibleCols),R=A(o.itemsLength),g=A(u),S=A(i),h=A(p),x=A(r),w=useCallback((I,v,y,b,D,L)=>{if(C&&typeof b=="string"&&b.startsWith("=")&&S.current){let B=x.current,z=B?B.findIndex(X=>X.columnId===v):-1;if(z>=0){if(S.current(z,D,b),t(null),d(null),l(void 0),D<R.current-1){let X=D+1,k=L-a;s({rowIndex:X,columnIndex:L}),c({startRow:X,startCol:k,endRow:X,endCol:k});}return}}let G=f.current.find(B=>B.columnId===v);if(G){let B=parseValue(b,y,I,G);if(!B.valid){t(null),d(null),l(void 0);return}b=B.value;}if(g.current?.({item:I,columnId:v,oldValue:y,newValue:b,rowIndex:D}),C&&h.current&&x.current){let B=x.current.findIndex(z=>z.columnId===v);B>=0&&h.current(B,D);}if(t(null),d(null),l(void 0),D<R.current-1){let B=D+1,z=L-a;s({rowIndex:B,columnIndex:L}),c({startRow:B,startCol:z,endRow:B,endCol:z});}},[C,t,l,s,c,a,f,R,g,S,h,x]),F=useCallback(()=>{t(null),d(null),l(void 0);},[t,l]);return {editing:useMemo(()=>({editingCell:e,setEditingCell:t,pendingEditorValue:n,setPendingEditorValue:l,commitCellEdit:w,cancelPopoverEdit:F,popoverAnchorEl:m,setPopoverAnchorEl:d}),[e,t,n,l,w,F,m,d])}}var lt=()=>{},Es=async()=>{},Fs=(o,e,t)=>{},Os=o=>{};function Gl(o){let{items:e,visibleCols:t,colOffset:n,hasCheckboxCol:l,visibleColumnCount:u,getRowId:s,editable:c,onCellValueChangedProp:a,cellSelection:i,rowSelection:p,selectedRowIds:C,editingCell:r,setEditingCell:m,activeCell:d,setActiveCell:f,handleRowCheckboxChange:R,setContextMenuPosition:g,wrapperRef:S,onKeyDown:h,formulas:x,flatColumns:w,getFormula:F,hasFormula:P,setFormula:I,onFormulaInsertReference:v}=o,y=A(v),b=vn({onCellValueChanged:a}),D=b.onCellValueChanged,{selectionRange:L,setSelectionRange:G,handleCellMouseDown:B,handleSelectAllCells:z,isDragging:X}=Rn({colOffset:n,rowCount:e.length,visibleColCount:t.length,setActiveCell:f,wrapperRef:S}),{handleCopy:k,handleCut:O,handlePaste:N,cutRange:_,copyRange:Y,clearClipboardRanges:M}=hn({items:e,visibleCols:t,colOffset:n,selectionRange:L,activeCell:d,editable:c,onCellValueChanged:D,beginBatch:b.beginBatch,endBatch:b.endBatch,formulas:x,flatColumns:w,getFormula:F,hasFormula:P,setFormula:I}),W=useCallback((Z,K,j)=>{if(Z.button!==0)return;let q=y.current;if(q){let te=j-n;if(te>=0){let ae=formatCellReference(te,K+1);if(q(ae)){Z.preventDefault();return}}}S.current?.focus({preventScroll:true}),M(),B(Z,K,j);},[B,M,S,y,n]),H=useMemo(()=>{if(!(!x||!w))return {flatColumns:w,getFormula:F,hasFormula:P,setFormula:I}},[x,w,F,P,I]),{handleFillHandleMouseDown:T,fillDown:V}=wn({items:e,visibleCols:t,editable:c,onCellValueChanged:D,selectionRange:L,setSelectionRange:G,setActiveCell:f,colOffset:n,wrapperRef:S,beginBatch:b.beginBatch,endBatch:b.endBatch,formulaOptions:H}),{handleGridKeyDown:E}=bn({data:{items:e,visibleCols:t,colOffset:n,hasCheckboxCol:l,visibleColumnCount:u,getRowId:s},state:{activeCell:d,selectionRange:L,editingCell:r,selectedRowIds:C},handlers:{setActiveCell:f,setSelectionRange:G,setEditingCell:m,handleRowCheckboxChange:R,handleCopy:k,handleCut:O,handlePaste:N,setContextMenu:g,onUndo:b.undo,onRedo:b.redo,clearClipboardRanges:M},features:{editable:c,onCellValueChanged:D,rowSelection:p??"none",wrapperRef:S,onKeyDown:h,fillDown:V}}),J=L!=null||d!=null;return {interaction:useMemo(()=>({activeCell:i?d:null,setActiveCell:i?f:lt,selectionRange:i?L:null,setSelectionRange:i?G:lt,handleCellMouseDown:i?W:Fs,handleSelectAllCells:i?z:lt,hasCellSelection:i?J:false,handleGridKeyDown:i?E:Os,handleFillHandleMouseDown:i?T:lt,handleCopy:i?k:lt,handleCut:i?O:lt,handlePaste:i?N:Es,cutRange:i?_:null,copyRange:i?Y:null,clearClipboardRanges:i?M:lt,canUndo:b.canUndo,canRedo:b.canRedo,onUndo:b.undo,onRedo:b.redo,isDragging:i?X:false}),[i,d,f,L,G,W,z,J,E,T,k,O,N,_,Y,M,b.canUndo,b.canRedo,b.undo,b.redo,X]),selectionRange:L,setSelectionRange:G,cutRange:_,copyRange:Y,clearClipboardRanges:M,isDragging:X,onCellValueChanged:D,canUndo:b.canUndo,canRedo:b.canRedo}}var Bl=()=>{},Us=o=>{};function Vl(o){let{cellSelection:e}=o,{contextMenuPosition:t,setContextMenuPosition:n,handleCellContextMenu:l,closeContextMenu:u}=Cn();return {contextMenu:useMemo(()=>({menuPosition:e?t:null,setMenuPosition:e?n:Bl,handleCellContextMenu:e?l:Us,closeContextMenu:e?u:Bl}),[e,t,n,l,u]),contextMenuPosition:t,setContextMenuPosition:n}}function Tn(o){let{props:e,wrapperRef:t}=o,{items:n,columns:l,getRowId:u,visibleColumns:s,columnOrder:c,rowSelection:a="none",selectedRows:i,onSelectionChange:p,showRowNumbers:C,statusBar:r,emptyState:m,editable:d,cellSelection:f,onCellValueChanged:R,initialColumnWidths:g,onColumnResized:S,onAutosizeColumn:h,pinnedColumns:x,onColumnPinned:w,responsiveColumns:F,onCellError:P,onKeyDown:I}=e,v=f!==false,{editingCell:y,setEditingCell:b,pendingEditorValue:D,setPendingEditorValue:L}=gn(),{activeCell:G,setActiveCell:B}=fn(t,y),z=Ul({columns:l,items:n,getRowId:u,visibleColumns:s,columnOrder:c,rowSelection:a,showRowNumbers:C,initialColumnWidths:g,onColumnResized:S,onAutosizeColumn:h,pinnedColumns:x,onColumnPinned:w,sortBy:e.sortBy,sortDirection:e.sortDirection,onColumnSort:e.onColumnSort,responsiveColumns:F,wrapperRef:t}),{visibleCols:X,visibleColumnCount:k,colOffset:O,hasCheckboxCol:N}=z,_=Sn({items:n,getRowId:u,rowSelection:a,controlledSelectedRows:i,onSelectionChange:p}),{selectedRowIds:Y,updateSelection:M,handleRowCheckboxChange:W,handleSelectAll:H,allSelected:T,someSelected:V}=_,E=Vl({cellSelection:v}),{setContextMenuPosition:J}=E,$=Gl({items:n,visibleCols:X,colOffset:O,hasCheckboxCol:N,visibleColumnCount:k,getRowId:u,editable:d,onCellValueChangedProp:R,cellSelection:v,rowSelection:a,selectedRowIds:Y,editingCell:y,setEditingCell:b,activeCell:G,setActiveCell:B,handleRowCheckboxChange:W,setContextMenuPosition:J,wrapperRef:t,onKeyDown:I,formulas:e.formulas,flatColumns:z.layout.flatColumns,getFormula:e.getFormula,hasFormula:e.hasFormula,setFormula:e.setFormula,onFormulaInsertReference:e.onFormulaInsertReference}),{selectionRange:Z,setSelectionRange:K,cutRange:j,copyRange:q,isDragging:te,onCellValueChanged:ae}=$,De=Al({editingCell:y,setEditingCell:b,pendingEditorValue:D,setPendingEditorValue:L,visibleCols:X,itemsLength:n.length,onCellValueChanged:ae,setActiveCell:B,setSelectionRange:K,colOffset:O,setFormula:e.setFormula,onFormulaCellChanged:e.onFormulaCellChanged,formulas:e.formulas,flatColumns:z.layout.flatColumns}),{sortBy:Ye,sortDirection:Ze,filters:Ke,onFilterChange:Re,filterOptions:st,loadingFilterOptions:Ae,peopleSearch:ut}=e,ct=!!ut,dt=A(Re),Le=A(ut),je=useCallback((...Ce)=>dt.current?.(...Ce),[dt]),Se=useCallback((...Ce)=>Le.current?.(...Ce)??Promise.resolve([]),[Le]),Ge=useMemo(()=>({sortBy:Ye,sortDirection:Ze,onColumnSort:z.stableOnColumnSort,filters:Ke,onFilterChange:je,filterOptions:st,loadingFilterOptions:Ae,peopleSearch:ct?Se:void 0}),[Ye,Ze,z.stableOnColumnSort,Ke,je,st,Ae,ct,Se]),Je=useMemo(()=>({editingCell:y,activeCell:v?G:null,selectionRange:v?Z:null,cutRange:v?j:null,copyRange:v?q:null,colOffset:O,itemsLength:n.length,getRowId:u,editable:d,onCellValueChanged:ae,isDragging:v?te:false,getFormulaValue:e.getFormulaValue,hasFormula:e.hasFormula,getFormula:e.getFormula,formulaVersion:e.formulaVersion}),[y,G,Z,j,q,O,n.length,u,d,ae,v,te,e.getFormulaValue,e.hasFormula,e.getFormula,e.formulaVersion]),Qe=useMemo(()=>computeAggregations(n,X,v?Z:null),[n,X,Z,v]),Xe=useMemo(()=>{let Ce=getDataGridStatusBarConfig(r,n.length,Y.size);return Ce?{...Ce,aggregation:Qe??void 0}:null},[r,n.length,Y.size,Qe]),be=n.length===0&&!!m&&!e.isLoading,et=useMemo(()=>({selectedRowIds:Y,updateSelection:M,handleRowCheckboxChange:W,handleSelectAll:H,allSelected:T,someSelected:V}),[Y,M,W,H,T,V]),mt=useMemo(()=>({headerFilterInput:Ge,cellDescriptorInput:Je,statusBarConfig:Xe,showEmptyInGrid:be,onCellError:P}),[Ge,Je,Xe,be,P]);return {layout:z.layout,rowSelection:et,editing:De.editing,interaction:$.interaction,contextMenu:E.contextMenu,viewModels:mt,pinning:z.pinning}}function Dn(o){let{textValue:e="",onTextChange:t,isFilterOpen:n}=o,[l,u]=useState(e);useEffect(()=>{n&&u(e);},[n,e]);let s=useCallback(()=>{t?.(l.trim());},[t,l]),c=useCallback(()=>u(""),[]);return {tempTextValue:l,setTempTextValue:u,handleTextApply:s,handleTextClear:c}}var Bs=150,_l=[];function Fn(o){let{selectedValues:e,onFilterChange:t,options:n,isFilterOpen:l}=o,u=e??_l,s=n??_l,[c,a]=useState(()=>new Set(u)),[i,p]=useState(""),C=yn(i,Bs);useEffect(()=>{l&&(a(new Set(u)),p(""));},[l,u]);let r=useMemo(()=>{let g=C.trim();if(!g)return s;let S=g.toLowerCase();return s.filter(h=>h.toLowerCase().includes(S))},[s,C]),m=useCallback((g,S)=>{a(h=>{let x=new Set(h);return S?x.add(g):x.delete(g),x});},[]),d=useCallback(()=>{a(g=>{let S=new Set(g);for(let h of r)S.add(h);return S});},[r]),f=useCallback(()=>a(new Set),[]),R=useCallback(()=>{t?.(Array.from(c));},[t,c]);return {tempSelected:c,setTempSelected:a,searchText:i,setSearchText:p,debouncedSearchText:C,filteredOptions:r,handleCheckboxChange:m,handleSelectAll:d,handleClearSelection:f,handleApplyMultiSelect:R}}function On(o){let{onUserChange:e,peopleSearch:t,isFilterOpen:n,filterType:l}=o,u=useRef(null),s=useRef(void 0),c=useRef(void 0),[a,i]=useState([]),[p,C]=useState(false),[r,m]=useState("");useEffect(()=>(n&&(m(""),i([]),l==="people"&&(s.current=window.setTimeout(()=>u.current?.focus(),50))),()=>{s.current&&window.clearTimeout(s.current);}),[n,l]),useEffect(()=>{if(!(!t||!n||l!=="people")){if(c.current&&window.clearTimeout(c.current),!r.trim()){i([]);return}return C(true),c.current=window.setTimeout(async()=>{try{let R=await t(r);i(R.slice(0,10));}catch{i([]);}finally{C(false);}},PEOPLE_SEARCH_DEBOUNCE_MS),()=>{c.current&&window.clearTimeout(c.current);}}},[r,t,n,l]);let d=useCallback(R=>{e?.(R);},[e]),f=useCallback(()=>{e?.(void 0);},[e]);return {peopleSuggestions:a,isPeopleLoading:p,peopleSearchText:r,setPeopleSearchText:m,peopleInputRef:u,handleUserSelect:d,handleClearUser:f}}function Mn(o){let{dateValue:e,onDateChange:t,isFilterOpen:n}=o,[l,u]=useState(e?.from??""),[s,c]=useState(e?.to??"");useEffect(()=>{n&&(u(e?.from??""),c(e?.to??""));},[n,e]);let a=useCallback(()=>{let p=l||void 0,C=s||void 0;t?.(p||C?{from:p,to:C}:void 0);},[t,l,s]),i=useCallback(()=>{u(""),c("");},[]);return {tempDateFrom:l,setTempDateFrom:u,tempDateTo:s,setTempDateTo:c,handleDateApply:a,handleDateClear:i}}var zs=[];function Zl(o){let{filterType:e,onSort:t,selectedValues:n,onFilterChange:l,options:u,textValue:s="",onTextChange:c,selectedUser:a,onUserChange:i,peopleSearch:p,dateValue:C,onDateChange:r}=o,m=n??zs,d=useRef(null),f=useRef(null),[R,g]=useState(false),[S,h]=useState(null),x=Dn({textValue:s,onTextChange:c,isFilterOpen:R}),w=Fn({selectedValues:n,onFilterChange:l,options:u,isFilterOpen:R}),F=On({onUserChange:i,peopleSearch:p,isFilterOpen:R,filterType:e}),P=Mn({dateValue:C,onDateChange:r,isFilterOpen:R});useEffect(()=>{R||h(null);},[R]),useEffect(()=>{if(!R)return;let E=Z=>{let K=Z.target;f.current&&!f.current.contains(K)&&d.current&&!d.current.contains(K)&&g(false);},J=Z=>{(Z.key==="Escape"||Z.key==="Esc")&&(Z.preventDefault(),Z.stopPropagation(),g(false));},$=setTimeout(()=>document.addEventListener("mousedown",E),0);return document.addEventListener("keydown",J,true),()=>{clearTimeout($),document.removeEventListener("mousedown",E),document.removeEventListener("keydown",J,true);}},[R]);let I=useCallback(E=>{E.stopPropagation(),E.preventDefault(),g(J=>{if(!J&&d.current){let $=d.current.getBoundingClientRect();h({top:$.bottom+4,left:$.left});}return !J});},[]),v=useCallback(E=>{E.stopPropagation(),t?.();},[t]),{handleApplyMultiSelect:y}=w,{handleTextApply:b,handleTextClear:D}=x,{handleUserSelect:L,handleClearUser:G}=F,{handleDateApply:B}=P,z=useCallback(()=>{y(),g(false);},[y]),X=useCallback(()=>{b(),g(false);},[b]),k=useCallback(()=>{D(),c?.(""),g(false);},[D,c]),O=useCallback(E=>{L(E),g(false);},[L]),N=useCallback(()=>{G(),g(false);},[G]),_=useCallback(()=>{B(),g(false);},[B]),Y=useCallback(E=>E.stopPropagation(),[]),M=useCallback(E=>E.stopPropagation(),[]),W=useCallback(E=>E.stopPropagation(),[]),H=useCallback(E=>E.stopPropagation(),[]),T=useCallback(E=>{E.key!=="Escape"&&E.key!=="Esc"&&E.stopPropagation();},[]),V=useMemo(()=>e==="multiSelect"?m.length>0:e==="text"?!!s.trim():e==="people"?!!a:e==="date"?!!(C?.from||C?.to):false,[e,m,s,a,C]);return {headerRef:d,popoverRef:f,peopleInputRef:F.peopleInputRef,isFilterOpen:R,setFilterOpen:g,tempSelected:w.tempSelected,setTempSelected:w.setTempSelected,tempTextValue:x.tempTextValue,setTempTextValue:x.setTempTextValue,searchText:w.searchText,setSearchText:w.setSearchText,debouncedSearchText:w.debouncedSearchText,filteredOptions:w.filteredOptions,peopleSuggestions:F.peopleSuggestions,isPeopleLoading:F.isPeopleLoading,peopleSearchText:F.peopleSearchText,setPeopleSearchText:F.setPeopleSearchText,tempDateFrom:P.tempDateFrom,setTempDateFrom:P.setTempDateFrom,tempDateTo:P.tempDateTo,setTempDateTo:P.setTempDateTo,hasActiveFilter:V,popoverPosition:S,handlers:{handleFilterIconClick:I,handleApplyMultiSelect:z,handleTextApply:X,handleTextClear:k,handleUserSelect:O,handleClearUser:N,handleDateApply:_,handleDateClear:P.handleDateClear,handleCheckboxChange:w.handleCheckboxChange,handleSelectAll:w.handleSelectAll,handleClearSelection:w.handleClearSelection,handlePopoverClick:Y,handleInputFocus:M,handleInputMouseDown:W,handleInputClick:H,handleInputKeyDown:T,handleSortClick:v}}}function Jl(o){let{columns:e,visibleColumns:t,onVisibilityChange:n,onSetVisibleColumns:l}=o,[u,s]=useState(false);useEffect(()=>{if(!u)return;let d=f=>{f.key==="Escape"&&(f.preventDefault(),s(false));};return document.addEventListener("keydown",d,true),()=>document.removeEventListener("keydown",d,true)},[u]);let c=useCallback(()=>{s(d=>!d);},[]),a=useCallback(()=>{s(false);},[]),i=useCallback(d=>f=>{n(d,f);},[n]),p=useCallback(()=>{l?l(new Set(e.map(d=>d.columnId))):e.forEach(d=>{t.has(d.columnId)||n(d.columnId,true);});},[e,t,n,l]),C=useCallback(()=>{if(l){let d=new Set(e.filter(f=>f.required).map(f=>f.columnId));l(d);}else e.forEach(d=>{!d.required&&t.has(d.columnId)&&n(d.columnId,false);});},[e,t,n,l]),r=t.size,m=e.length;return {open:u,setOpen:s,handleToggle:c,handleClose:a,handleCheckboxChange:i,handleSelectAll:p,handleClearAll:C,visibleCount:r,totalCount:m}}function ea(o,e){if(o==="")return "";let t=parseUserInputDate(o,e);return t===null?o:t.toISOString().substring(0,10)}function Un(o){let{value:e,editorType:t,onCommit:n,onCancel:l,dateFormat:u,dateEditorType:s}=o,c=u??DEFAULT_DATE_FORMAT,[a,i]=useState(()=>{if(e==null)return "";if(t==="date"){let r=String(e);return s==="native"?r.match(/^\d{4}-\d{2}-\d{2}/)?r.substring(0,10):r:formatDateForDisplay(r,c)??r}return String(e)}),p=useCallback(r=>{r.key==="Escape"&&(r.preventDefault(),r.stopPropagation(),l()),r.key==="Enter"&&(t==="text"||t==="date")&&(r.preventDefault(),r.stopPropagation(),n(t==="date"&&s!=="native"?ea(a,c):a));},[l,n,a,t,c,s]),C=useCallback(()=>{t==="text"?n(a):t==="date"&&n(s==="native"?a:ea(a,c));},[t,a,n,c,s]);return {localValue:a,setLocalValue:i,handleKeyDown:p,handleBlur:C,commit:n,cancel:l}}function kn({columnSizingOverrides:o,setColumnSizingOverrides:e,minWidth:t=80,defaultWidth:n=120,onColumnResized:l}){let u=useRef(0),s=useRef(l);s.current=l;let c=A(o),a=useRef(null);useEffect(()=>()=>{a.current&&(a.current(),a.current=null);},[]);let i=useCallback((r,m)=>{r.preventDefault(),r.stopPropagation(),a.current&&(a.current(),a.current=null);let d=r.clientX,f=m.columnId,R=r.currentTarget.closest("th"),g=R?R.getBoundingClientRect().width:c.current[f]?.widthPx??m.idealWidth??m.defaultWidth??n,S=g,h=R?.closest("thead");if(h){let b=h.querySelectorAll("th[data-column-id]");b.length>0&&e(D=>{let L={...D};return b.forEach(G=>{let B=G.dataset.columnId;B&&!L[B]&&(L[B]={widthPx:G.getBoundingClientRect().width});}),L[f]={widthPx:g},L});}let x=document.body.style.cursor,w=document.body.style.userSelect;document.body.style.cursor="col-resize",document.body.style.userSelect="none";let F=()=>{e(b=>({...b,[f]:{widthPx:S}}));},P=f===ROW_NUMBER_COLUMN_ID?ROW_NUMBER_COLUMN_MIN_WIDTH:t,I=b=>{let D=b.clientX-d;S=Math.max(P,g+D),u.current||(u.current=requestAnimationFrame(()=>{u.current=0,F();}));},v=()=>{document.removeEventListener("pointermove",I),document.removeEventListener("pointerup",y),a.current=null,document.body.style.cursor=x,document.body.style.userSelect=w,u.current&&(cancelAnimationFrame(u.current),u.current=0);},y=()=>{v(),F();let b=R?.closest("[tabindex]");b?b.focus({preventScroll:true}):document.activeElement instanceof HTMLElement&&document.activeElement.blur(),s.current&&s.current(f,S);};document.addEventListener("pointermove",I),document.addEventListener("pointerup",y),a.current=v;},[n,t,e,c]),p=useCallback((r,m)=>{r.preventDefault(),r.stopPropagation();let d=m.columnId,R=r.currentTarget.closest("th")?.closest("table")?.parentElement??void 0,g=measureColumnContentWidth(d,t,R);e(S=>({...S,[d]:{widthPx:g}})),s.current&&s.current(d,g);},[t,e]),C=useCallback(r=>o[r.columnId]?.widthPx??r.idealWidth??r.defaultWidth??n,[o,n]);return {handleResizeStart:i,handleResizeDoubleClick:p,getColumnWidth:C}}function $o(o,e){return e?e(o):o!=null?String(o):""}function An(o){let{values:e,formatValue:t,initialValue:n,onCommit:l,onCancel:u}=o,[s,c]=useState(""),a=e.findIndex(f=>String(f)===String(n)),[i,p]=useState(Math.max(a,0));useEffect(()=>{let f=e.findIndex(R=>String(R)===String(n));p(Math.max(f,0));},[n,e]);let C=useCallback(f=>$o(f,t),[t]),r=useMemo(()=>{if(!s.trim())return e;let f=s.toLowerCase();return e.filter(R=>C(R).toLowerCase().includes(f))},[e,s,C]),m=useCallback(f=>{l(f);},[l]),d=useCallback(f=>{switch(f.key){case "ArrowDown":f.preventDefault(),p(R=>Math.min(R+1,r.length-1));break;case "ArrowUp":f.preventDefault(),p(R=>Math.max(R-1,0));break;case "Enter":f.preventDefault(),f.stopPropagation(),r.length>0&&i<r.length&&m(r[i]);break;case "Escape":f.preventDefault(),f.stopPropagation(),u();break}},[r,i,m,u]);return {searchText:s,setSearchText:c,filteredValues:r,highlightedIndex:i,handleKeyDown:d,selectValue:m,getDisplayText:C}}function Ln(o){let{values:e,formatValue:t,initialValue:n,onCommit:l,onCancel:u}=o,s=useRef(null),c=useCallback(m=>$o(m,t),[t]),a=e.findIndex(m=>String(m)===String(n)),[i,p]=useState(Math.max(a,0));useEffect(()=>{let m=e.findIndex(d=>String(d)===String(n));p(Math.max(m,0));},[n,e]),useEffect(()=>{let m=s.current;if(!m)return;m.children[i]?.scrollIntoView({block:"nearest"});},[i]);let C=useCallback(m=>{l(m);},[l]),r=useCallback(m=>{switch(m.key){case "ArrowDown":m.preventDefault(),p(d=>Math.min(d+1,e.length-1));break;case "ArrowUp":m.preventDefault(),p(d=>Math.max(d-1,0));break;case "Enter":m.preventDefault(),m.stopPropagation(),e.length>0&&i<e.length&&C(e[i]);break;case "Tab":m.preventDefault(),e.length>0&&i<e.length&&C(e[i]);break;case "Escape":m.preventDefault(),m.stopPropagation(),u();break}},[e,i,C,u]);return {highlightedIndex:i,handleKeyDown:r,selectValue:C,getDisplayText:c,dropdownRef:s}}var su=8;function uu(o){if(!o)return;let e=[],t=[];for(let[n,l]of Object.entries(o))l==="left"?e.push(n):l==="right"&&t.push(n);if(!(e.length===0&&t.length===0))return {...e.length>0?{left:e}:{},...t.length>0?{right:t}:{}}}function Gn(o){let{columns:e,columnOrder:t,onColumnOrderChange:n,enabled:l=true,pinnedColumns:u,wrapperRef:s}=o,[c,a]=useState(false),[i,p]=useState(null),C=useRef(0),r=useRef(e);r.current=e;let m=useRef(t);m.current=t;let d=useRef(n);d.current=n;let f=useRef(u);f.current=u;let R=useRef(null);useEffect(()=>()=>{R.current&&(R.current(),R.current=null);},[]);let g=useCallback((S,h)=>{if(!l||!d.current||h.button!==0)return;let w=h.currentTarget.getBoundingClientRect();if(h.clientX>w.right-su||r.current.findIndex(k=>k.columnId===S)===-1)return;h.preventDefault();let I=h.clientX,v=false,y=null,b=uu(f.current),D=getPinStateForColumn(S,b),L=document.body.style.userSelect,G=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="grabbing";let B=k=>{!v&&Math.abs(k.clientX-I)<5||(v||(v=true,a(true)),C.current&&cancelAnimationFrame(C.current),C.current=requestAnimationFrame(()=>{C.current=0;let O=s.current;if(!O)return;let N=m.current??r.current.map(Y=>Y.columnId),_=calculateDropTarget({mouseX:k.clientX,columnOrder:N,draggedColumnId:S,draggedPinState:D,tableElement:O,pinnedColumns:b});_&&(y=_.targetIndex,p(_.indicatorX));}));},z=()=>{window.removeEventListener("pointermove",B,true),window.removeEventListener("pointerup",X,true),R.current=null,document.body.style.userSelect=L,document.body.style.cursor=G,C.current&&(cancelAnimationFrame(C.current),C.current=0);},X=()=>{if(z(),v&&y!=null){let k=m.current??r.current.map(N=>N.columnId),O=reorderColumnArray(k,S,y);d.current?.(O);}a(false),p(null);};window.addEventListener("pointermove",B,true),window.addEventListener("pointerup",X,true),R.current=z;},[l,s]);return {isDragging:c,dropIndicatorX:i,handleHeaderMouseDown:g}}var pu=100;function Bn(o){let{totalRows:e,rowHeight:t,enabled:n,overscan:l=5,threshold:u=pu,containerRef:s,columnVirtualization:c=false,columnWidths:a,columnOverscan:i=2}=o;useEffect(()=>{validateVirtualScrollConfig({enabled:n,rowHeight:t});},[n,t]);let p=n&&e>=u,C=useCallback(()=>s.current,[s]),r=useVirtualizer({count:p?e:0,getScrollElement:C,estimateSize:()=>t,overscan:l,enabled:p}),m=useMemo(()=>({startIndex:0,endIndex:Math.max(0,e-1),offsetTop:0,offsetBottom:0}),[e]),d=useMemo(()=>{if(!p)return m;let v=r.getVirtualItems();if(v.length===0)return {startIndex:0,endIndex:-1,offsetTop:0,offsetBottom:0};let y=v[0],b=v[v.length-1],D=r.getTotalSize();return {startIndex:y.index,endIndex:b.index,offsetTop:y.start,offsetBottom:Math.max(0,D-b.end)}},[p,r,m]),f=p?r.getTotalSize():e*t,R=useRef(r);R.current=r;let g=useCallback(v=>{if(p)R.current?.scrollToIndex(v,{align:"auto"});else {let y=s.current;if(y){let b=v*t;y.scrollTo({top:b,behavior:"auto"});}}},[p,s,t]),[S,h]=useState(0),x=useRef(0),w=useCallback(v=>{x.current&&cancelAnimationFrame(x.current),x.current=requestAnimationFrame(()=>{x.current=0,h(v);});},[]);useEffect(()=>()=>{x.current&&cancelAnimationFrame(x.current);},[]);let[F,P]=useState(0);useEffect(()=>{if(!c)return;let v=s.current;if(!v||(P(v.clientWidth),typeof ResizeObserver>"u"))return;let y=new ResizeObserver(b=>{b.length>0&&P(b[0].contentRect.width);});return y.observe(v),()=>y.disconnect()},[c,s]);let I=useMemo(()=>!c||!a||a.length===0||F<=0?null:computeVisibleColumnRange(S,a,F,i),[c,a,F,S,i]);return {virtualizer:p?r:null,totalHeight:f,visibleRange:d,scrollToIndex:g,columnRange:I,onHorizontalScroll:c?w:void 0}}function aa(o){let{count:e,itemHeight:t,containerHeight:n=250,overscan:l=5}=o,u=useRef(null),[s,c]=useState(0),a=useCallback(()=>{u.current&&c(u.current.scrollTop);},[]),i=e*t,p=useMemo(()=>{if(e===0)return [];let C=Math.max(0,Math.floor(s/t)-l),r=Math.ceil(n/t),m=Math.min(e-1,C+r+l*2),d=[];for(let f=C;f<=m;f++)d.push({index:f,offsetTop:f*t});return d},[e,t,n,l,s]);return {totalHeight:i,visibleItems:p,containerRef:u,onScroll:a}}function Vn(o){let{currentPage:e,pageSize:t,totalCount:n,onPageSizeChange:l,pageSizeOptions:u,entityLabelPlural:s}=o,c=s??"items",a=useMemo(()=>getPaginationViewModel(e,t,n,u?{pageSizeOptions:u}:void 0),[e,t,n,u]);return {labelPlural:c,vm:a,handlePageSizeChange:l}}function ua(o){let{props:e}=o,t=useRef(null),n=useRef(null),l=useRef(false),u=Tn({props:e,wrapperRef:t}),{layout:s,rowSelection:c,editing:a,interaction:i,contextMenu:p,viewModels:C,pinning:r}=u,{visibleCols:m,totalColCount:d,hasCheckboxCol:f,hasRowNumbersCol:R,colOffset:g,containerWidth:S,minTableWidth:h,desiredTableWidth:x,columnSizingOverrides:w,setColumnSizingOverrides:F,measuredColumnWidths:P}=s,I=m,{selectedRowIds:v,updateSelection:y,handleRowCheckboxChange:b,handleSelectAll:D,allSelected:L,someSelected:G}=c,{editingCell:B,setEditingCell:z,pendingEditorValue:X,setPendingEditorValue:k,commitCellEdit:O,cancelPopoverEdit:N,popoverAnchorEl:_,setPopoverAnchorEl:Y}=a,{setActiveCell:M,handleCellMouseDown:W,selectionRange:H,hasCellSelection:T,handleGridKeyDown:V,handleFillHandleMouseDown:E,handleCopy:J,handleCut:$,handlePaste:Z,cutRange:K,copyRange:j,canUndo:q,canRedo:te,onUndo:ae,onRedo:De,isDragging:Ye}=i,{menuPosition:Ze,handleCellContextMenu:Ke,closeContextMenu:Re}=p,{headerFilterInput:st,cellDescriptorInput:Ae,statusBarConfig:ut,showEmptyInGrid:ct,onCellError:dt}=C,{headerMenu:Le}=r,je=useCallback(()=>{Z();},[Z]),{items:Se,columns:Ge,getRowId:Je,emptyState:Qe,layoutMode:Xe="fill",rowSelection:be="none",suppressHorizontalScroll:et,stickyHeader:mt=true,isLoading:Ce=false,loadingMessage:Wt="Loading\u2026","aria-label":Kt,"aria-labelledby":jt,visibleColumns:pt,columnOrder:wt,onColumnOrderChange:Xt,columnReorder:Pt,virtualScroll:Be,rowHeight:qt,density:$t="normal",pinnedColumns:ne,currentPage:Ee=1,pageSize:Tt=25,showColumnLetters:Jn=false,showNameBox:Qn=false,onActiveCellChange:Yt}=e,Dt=R?(Ee-1)*Tt:0,eo=useMemo(()=>buildHeaderRows(Ge,pt),[Ge,pt]),Zt=!et&&S>0&&(h>S||x>S),to=Xe==="content",oe=useRef(Yt);oe.current=Yt,useEffect(()=>{if(!oe.current)return;let ye=i.activeCell;ye?oe.current(formatCellReference(ye.columnIndex-g,Dt+ye.rowIndex+1)):oe.current(null);},[i.activeCell,Dt,g]);let{handleResizeStart:ce,handleResizeDoubleClick:ee,getColumnWidth:de}=kn({columnSizingOverrides:w,setColumnSizingOverrides:F}),{isDragging:Et,dropIndicatorX:Jt,handleHeaderMouseDown:Qt}=Gn({columns:I,columnOrder:wt,onColumnOrderChange:Xt,enabled:Pt===true,pinnedColumns:ne,wrapperRef:t}),ve=Be?.enabled===true,Te=Be?.rowHeight??36,qe=Be?.columns===true,no=useMemo(()=>{if(!qe)return;let ye=[];for(let Ve of I)ne?.[Ve.columnId]||ye.push(de(Ve));return ye},[qe,I,ne,de]),{visibleRange:tt,columnRange:nt,onHorizontalScroll:en}=Bn({totalRows:Se.length,rowHeight:Te,enabled:ve,overscan:Be?.overscan,threshold:Be?.threshold,containerRef:t,columnVirtualization:qe,columnWidths:no,columnOverscan:Be?.columnOverscan}),Ft=useMemo(()=>({commitCellEdit:O,setEditingCell:z,setPendingEditorValue:k,cancelPopoverEdit:N}),[O,z,k,N]),tn=useMemo(()=>({handleCellMouseDown:W,setActiveCell:M,setEditingCell:z,handleCellContextMenu:Ke}),[W,M,z,Ke]),Ot=A(Ae),nn=A(X),on=A(_),ft=A(v),gt=useRef(new CellDescriptorCache),rn=CellDescriptorCache.computeVersion(Ae);gt.current.updateVersion(rn);let Ct=useRef(Se),Rt=useRef(I);(Ct.current!==Se||Rt.current!==I)&&(Ct.current=Se,Rt.current=I,gt.current.clear());let Mt=useCallback(ye=>{if(be!=="single")return;let Ve=ye.currentTarget.dataset.rowId;if(!Ve)return;let $e=ft.current;y($e.has(Ve)?new Set:new Set([Ve]));},[be,y,ft]);return {wrapperRef:t,tableContainerRef:n,lastMouseShiftRef:l,layout:s,rowSel:c,editing:a,interaction:i,ctxMenu:p,viewModels:C,pinning:r,handleResizeStart:ce,handleResizeDoubleClick:ee,getColumnWidth:de,isReorderDragging:Et,dropIndicatorX:Jt,handleHeaderMouseDown:Qt,virtualScrollEnabled:ve,virtualRowHeight:Te,visibleRange:tt,columnRange:nt,onHorizontalScroll:en,items:Se,columns:Ge,getRowId:Je,emptyState:Qe,layoutMode:Xe,rowSelection:be,suppressHorizontalScroll:et,stickyHeader:mt,isLoading:Ce,loadingMessage:Wt,ariaLabel:Kt,ariaLabelledBy:jt,visibleColumns:pt,columnOrder:wt,columnReorder:Pt,density:$t,rowHeight:qt,pinnedColumns:ne,currentPage:Ee,propPageSize:Tt,rowNumberOffset:Dt,headerRows:eo,allowOverflowX:Zt,fitToContent:to,showColumnLetters:Jn,showNameBox:Qn,editCallbacks:Ft,interactionHandlers:tn,cellDescriptorInputRef:Ot,cellDescriptorCacheRef:gt,pendingEditorValueRef:nn,popoverAnchorElRef:on,selectedRowIdsRef:ft,handleSingleRowClick:Mt,handlePasteVoid:je,visibleCols:I,totalColCount:d,hasCheckboxCol:f,hasRowNumbersCol:R,colOffset:g,containerWidth:S,minTableWidth:h,desiredTableWidth:x,columnSizingOverrides:w,setColumnSizingOverrides:F,measuredColumnWidths:P,selectedRowIds:v,updateSelection:y,handleRowCheckboxChange:b,handleSelectAll:D,allSelected:L,someSelected:G,editingCell:B,setPopoverAnchorEl:Y,cancelPopoverEdit:N,setActiveCell:M,selectionRange:H,hasCellSelection:T,handleGridKeyDown:V,handleFillHandleMouseDown:E,handleCopy:J,handleCut:$,cutRange:K,copyRange:j,canUndo:q,canRedo:te,onUndo:ae,onRedo:De,isDragging:Ye,menuPosition:Ze,handleCellContextMenu:Ke,closeContextMenu:Re,headerFilterInput:st,cellDescriptorInput:Ae,statusBarConfig:ut,showEmptyInGrid:ct,onCellError:dt,headerMenu:Le}}function ca(o){let{visibleCols:e,getColumnWidth:t,columnSizingOverrides:n,measuredColumnWidths:l,pinnedColumns:u,leftOffsets:s,rightOffsets:c,pinnedColLeftClass:a,pinnedColRightClass:i,addStickyPosition:p=false}=o;return useMemo(()=>{let C={},r={},m={},d={};for(let f=0;f<e.length;f++){let R=e[f],g=t(R),S=!!(n[R.columnId]||R.idealWidth!=null||R.defaultWidth!=null),h=u[R.columnId]==="left",x=u[R.columnId]==="right",w=h||x,F=!!n[R.columnId],P=l[R.columnId],I=R.minWidth??DEFAULT_MIN_COLUMN_WIDTH,v=F||S?g:Math.max(I,P??0),y=p&&w?{position:"sticky"}:void 0;C[R.columnId]={minWidth:v,width:S?g:void 0,maxWidth:S?g:void 0,textAlign:R.type==="numeric"?"right":R.type==="boolean"?"center":void 0,...y,...h&&s[R.columnId]!=null?{left:s[R.columnId]}:void 0,...x&&c[R.columnId]!=null?{right:c[R.columnId]}:void 0},m[R.columnId]={minWidth:v,width:S?g:void 0,maxWidth:S?g:void 0,...y,...h&&s[R.columnId]!=null?{left:s[R.columnId]}:void 0,...x&&c[R.columnId]!=null?{right:c[R.columnId]}:void 0};let b=[];h&&b.push(a),x&&b.push(i);let D=b.join(" ");r[R.columnId]=D,d[R.columnId]=D;}return {cellStyles:C,cellClasses:r,hdrStyles:m,hdrClasses:d}},[e,t,n,l,u,s,c,a,i,p])}var yu={position:"relative",flex:1,minHeight:0,display:"flex",flexDirection:"column"},xu={cursor:"cell"},Iu={width:"100%",height:"100%",minHeight:"100%",minWidth:40,display:"flex",alignItems:"center",boxSizing:"border-box",padding:"var(--ogrid-cell-padding, 6px 10px)",overflow:"hidden"},wu=o=>{o.preventDefault();},Pu=()=>{},Tu=o=>{o.stopPropagation();};var Du=240,er=36,Hn={columns:"Columns",filters:"Filters"},fa={display:"flex",flexDirection:"column",width:er,background:"var(--ogrid-header-bg, #f5f5f5)"},Eu={...fa,borderLeft:"1px solid var(--ogrid-border, #e0e0e0)"},Fu={...fa,borderRight:"1px solid var(--ogrid-border, #e0e0e0)"},ga={width:er,height:er,border:"none",cursor:"pointer",color:"var(--ogrid-fg, #242424)",fontSize:14,display:"flex",alignItems:"center",justifyContent:"center"},Ou={...ga,background:"var(--ogrid-bg, #fff)",fontWeight:"bold"},Mu={...ga,background:"transparent",fontWeight:"normal"},Ca={width:Du,display:"flex",flexDirection:"column",overflow:"hidden",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)"},Uu={...Ca,borderLeft:"1px solid var(--ogrid-border, #e0e0e0)"},ku={...Ca,borderRight:"1px solid var(--ogrid-border, #e0e0e0)"},Au={display:"flex",justifyContent:"space-between",alignItems:"center",padding:"8px 12px",borderBottom:"1px solid var(--ogrid-border, #e0e0e0)",fontWeight:600},Lu={border:"none",background:"transparent",cursor:"pointer",fontSize:16,color:"var(--ogrid-fg, #242424)"},Gu={flex:1,overflowY:"auto",padding:"8px 12px"},Bu={display:"flex",flexDirection:"row",flexShrink:0},Vu={display:"flex",gap:8,marginBottom:8},da={flex:1,cursor:"pointer",background:"var(--ogrid-bg-subtle, #f3f2f1)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, #e0e0e0)",borderRadius:4,padding:"4px 8px"},Nu={display:"flex",alignItems:"center",gap:6,padding:"2px 0",cursor:"pointer"},Hu={color:"var(--ogrid-muted, #999)",fontStyle:"italic"},zu={marginBottom:12},_u={fontWeight:500,marginBottom:4,fontSize:13},Wu={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:4},Ku={display:"flex",flexDirection:"column",gap:4},ma={display:"flex",alignItems:"center",gap:4,fontSize:12},pa={flex:1,padding:"2px 4px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, #e0e0e0)",borderRadius:4},ju={maxHeight:120,overflowY:"auto"},Xu={display:"flex",alignItems:"center",gap:4,padding:"1px 0",cursor:"pointer",fontSize:13};function zn(o){let{activePanel:e,onPanelChange:t,panels:n,position:l,columns:u,visibleColumns:s,onVisibilityChange:c,onSetVisibleColumns:a,filterableColumns:i,filters:p,onFilterChange:C,filterOptions:r}=o,m=e!==null,d=h=>{t(e===h?null:h);},f=l==="right"?Eu:Fu,R=l==="right"?Uu:ku,g=jsx("div",{style:f,role:"tablist","aria-label":"Side bar tabs",children:n.map(h=>jsx("button",{role:"tab","aria-selected":e===h,"aria-label":Hn[h],onClick:()=>d(h),title:Hn[h],style:e===h?Ou:Mu,children:h==="columns"?"\u2261":"\u2A65"},h))}),S=m&&e?jsxs("div",{role:"tabpanel","aria-label":Hn[e],style:R,children:[jsxs("div",{style:Au,children:[jsx("span",{children:Hn[e]}),jsx("button",{onClick:()=>t(null),style:Lu,"aria-label":"Close panel",children:"\xD7"})]}),jsxs("div",{style:Gu,children:[e==="columns"&&jsx(qu,{columns:u,visibleColumns:s,onVisibilityChange:c,onSetVisibleColumns:a}),e==="filters"&&jsx($u,{filterableColumns:i,filters:p,onFilterChange:C,filterOptions:r})]})]}):null;return jsxs("div",{style:Bu,role:"complementary","aria-label":"Side bar",children:[l==="left"&&g,l==="left"&&S,l==="right"&&S,l==="right"&&g]})}function qu(o){let{columns:e,visibleColumns:t,onVisibilityChange:n,onSetVisibleColumns:l}=o,u=e.every(a=>t.has(a.columnId));return jsxs(Fragment,{children:[jsxs("div",{style:Vu,children:[jsx("button",{onClick:()=>{let a=new Set(t);e.forEach(i=>a.add(i.columnId)),l(a);},disabled:u,style:da,children:"Select All"}),jsx("button",{onClick:()=>{let a=new Set;e.forEach(i=>{i.required&&t.has(i.columnId)&&a.add(i.columnId);}),l(a);},style:da,children:"Clear All"})]}),e.map(a=>jsxs("label",{style:Nu,children:[jsx("input",{type:"checkbox",checked:t.has(a.columnId),onChange:i=>n(a.columnId,i.target.checked),disabled:a.required}),jsx("span",{children:a.name})]},a.columnId))]})}function $u(o){let{filterableColumns:e,filters:t,onFilterChange:n,filterOptions:l}=o;return e.length===0?jsx("div",{style:Hu,children:"No filterable columns"}):jsx(Fragment,{children:e.map(u=>{let s=u.filterField,c=t[s];return jsxs("div",{style:zu,children:[jsx("div",{style:_u,children:u.name}),u.filterType==="text"&&jsx("input",{type:"text",value:c?.type==="text"?c.value:"",onChange:a=>n(s,a.target.value?{type:"text",value:a.target.value}:void 0),placeholder:`Filter ${u.name}...`,"aria-label":`Filter ${u.name}`,style:Wu}),u.filterType==="date"&&jsxs("div",{style:Ku,children:[jsxs("label",{style:ma,children:["From:",jsx("input",{type:"date",value:c?.type==="date"?c.value.from??"":"",onChange:a=>{let i=a.target.value||void 0,C=(c?.type==="date"?c.value:{}).to;n(s,i||C?{type:"date",value:{from:i,to:C}}:void 0);},"aria-label":`${u.name} from date`,style:pa})]}),jsxs("label",{style:ma,children:["To:",jsx("input",{type:"date",value:c?.type==="date"?c.value.to??"":"",onChange:a=>{let i=a.target.value||void 0,C=(c?.type==="date"?c.value:{}).from;n(s,C||i?{type:"date",value:{from:C,to:i}}:void 0);},"aria-label":`${u.name} to date`,style:pa})]})]}),u.filterType==="multiSelect"&&jsx("div",{style:ju,role:"group","aria-label":`${u.name} options`,children:(l[s]??[]).map(a=>{let i=c?.type==="multiSelect"?c.value.includes(a):false;return jsxs("label",{style:Xu,children:[jsx("input",{type:"checkbox",checked:i,onChange:p=>{let C=c?.type==="multiSelect"?c.value:[],r=p.target.checked?[...C,a]:C.filter(m=>m!==a);n(s,r.length>0?{type:"multiSelect",value:r}:void 0);}}),jsx("span",{children:a})]},a)})})]},u.columnId)})})}var Sa={border:"1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12))",borderRadius:GRID_BORDER_RADIUS,overflow:"hidden",display:"flex",flexDirection:"column",flex:1,minHeight:0,background:"var(--ogrid-bg, #fff)"},ec={...Sa,borderRadius:0,border:"none"},ba={display:"flex",justifyContent:"space-between",alignItems:"center",padding:"6px 12px",background:"var(--ogrid-header-bg, #f5f5f5)",gap:8,flexWrap:"wrap",minHeight:0},tc={...ba,borderBottom:"1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12))"},nc=ba,ha={display:"flex",alignItems:"center",gap:8},oc={borderBottom:"1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12))",padding:"6px 12px",background:"var(--ogrid-header-bg, #f5f5f5)"},rc={borderTop:"1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12))",background:"var(--ogrid-header-bg, #f5f5f5)",padding:"6px 12px"},lc={width:"100%",minWidth:0,minHeight:0,flex:1,display:"flex"},ac={width:"100%",minWidth:0,minHeight:0,flex:1,display:"flex",flexDirection:"column"},ic={flex:1,minWidth:0,minHeight:0,display:"flex",flexDirection:"column"},sc={display:"flex",flexDirection:"column",height:"100%"},uc={position:"fixed",inset:0,zIndex:9999,display:"flex",flexDirection:"column",background:"var(--ogrid-bg, #fff)"},cc={background:"none",border:"1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12))",borderRadius:4,padding:"4px 6px",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--ogrid-fg, #242424)"},dc=()=>jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[jsx("polyline",{points:"10 2 14 2 14 6"}),jsx("polyline",{points:"6 14 2 14 2 10"}),jsx("line",{x1:"14",y1:"2",x2:"10",y2:"6"}),jsx("line",{x1:"2",y1:"14",x2:"6",y2:"10"})]}),mc=()=>jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[jsx("polyline",{points:"4 10 0 10 0 14"}),jsx("polyline",{points:"12 6 16 6 16 2"}),jsx("line",{x1:"0",y1:"10",x2:"4",y2:"6"}),jsx("line",{x1:"16",y1:"6",x2:"12",y2:"10"})]});function tr(o){let{containerComponent:e="div",containerProps:t={},className:n,toolbar:l,toolbarEnd:u,toolbarBelow:s,children:c,pagination:a,sideBar:i,fullScreen:p,formulaBar:C,sheetTabs:r}=o,[m,d]=useState(false),f=useCallback(()=>{d(x=>!x);},[]);useEffect(()=>{if(!m)return;let x=w=>{w.key==="Escape"&&d(false);};return document.addEventListener("keydown",x),()=>document.removeEventListener("keydown",x)},[m]);let R=i!=null,g=i?.position??"right",S=l!=null||u!=null||p;return jsx(e,{className:n,style:m?uc:sc,...t,children:jsxs("div",{style:m?ec:Sa,children:[S&&jsxs("div",{style:s?nc:tc,children:[jsx("div",{style:ha,children:l}),jsxs("div",{style:ha,children:[u,p?jsx("button",{type:"button",style:cc,onClick:f,title:m?"Exit fullscreen":"Fullscreen","aria-label":m?"Exit fullscreen":"Fullscreen",children:m?jsx(mc,{}):jsx(dc,{})}):null]})]}),s&&jsx("div",{style:oc,children:s}),C,R?jsxs("div",{style:lc,children:[g==="left"&&jsx(zn,{...i}),jsx("div",{style:ic,children:c}),g!=="left"&&jsx(zn,{...i})]}):jsx("div",{style:ac,children:c}),r,a&&jsx("div",{style:rc,children:a})]})})}function pc({classNames:o,...e}){let t=getStatusBarParts(e);return jsx("div",{className:o?.statusBar,role:"status","aria-live":"polite",children:t.map(n=>jsxs("span",{className:o?.statusBarItem,children:[jsx("span",{className:o?.statusBarLabel,children:n.label}),jsx("span",{className:o?.statusBarValue,children:n.value.toLocaleString()})]},n.key))})}var zt={width:"100%",height:"100%",display:"flex",alignItems:"center",padding:"6px 10px",boxSizing:"border-box",overflow:"hidden",minWidth:0},_n={width:"100%",padding:0,border:"none",background:"transparent",color:"inherit",font:"inherit",fontSize:"13px",outline:"none",minWidth:0},or={...zt,position:"relative"},ya={position:"absolute",top:"100%",left:0,right:0,maxHeight:200,overflowY:"auto",background:"var(--ogrid-bg, #fff)",border:"1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12))",zIndex:10,boxShadow:"var(--ogrid-shadow, 0 4px 16px rgba(0,0,0,0.2))",textAlign:"left",fontSize:"13px",fontFamily:"inherit"},Wn={padding:"6px 8px",cursor:"pointer",color:"var(--ogrid-fg, #242424)",fontSize:"13px"},rr={...Wn,background:"var(--ogrid-bg-hover, #e8f0fe)",fontSize:"13px"},xa={padding:"6px 8px",color:"var(--ogrid-muted, #999)",fontSize:"13px"},Rc={padding:"4px 8px",borderTop:"1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12))",fontSize:"11px",color:"var(--ogrid-muted, #999)",textAlign:"right",position:"sticky",bottom:0,background:"var(--ogrid-bg, #fff)"},Ia={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},hc={width:"100%",padding:0,border:"none",background:"transparent",color:"inherit",font:"inherit",fontSize:"13px",cursor:"pointer",outline:"none"},lr={display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",cursor:"pointer",fontSize:"13px",color:"inherit"},ar={marginLeft:4,fontSize:"10px",opacity:.5};function Sc(o){let{value:e,column:t,editorType:n,onCommit:l,onCancel:u,renderCheckbox:s}=o,c=Pe.useRef(null),a=Pe.useRef(u);a.current=u;let i=t.cellEditorParams?.dateFormat??t.dateFormat??DEFAULT_DATE_FORMAT,p=t.cellEditorParams?.editorType??"text",{localValue:C,setLocalValue:r,handleKeyDown:m,handleBlur:d,commit:f,cancel:R}=Un({value:e,editorType:n,onCommit:l,onCancel:u,dateFormat:i,dateEditorType:p}),g=t.cellEditorParams?.values??[],S=t.cellEditorParams?.formatValue,h=An({values:g,formatValue:S,initialValue:e,onCommit:l,onCancel:u}),x=Ln({values:g,formatValue:S,initialValue:e,onCommit:l,onCancel:u}),[w,F]=Pe.useState(null);Pe.useLayoutEffect(()=>{if(n!=="select"&&n!=="richSelect")return;let v=c.current;if(!v)return;let y=v.getBoundingClientRect(),b=200,D=window.innerHeight-y.bottom,L=D<b&&y.top>D,G=v.closest("table")?getComputedStyle(v):null;F({position:"fixed",...L?{bottom:window.innerHeight-y.top}:{top:y.bottom},left:y.left,width:y.width,maxHeight:b,overflowY:"auto",background:"var(--ogrid-bg, #fff)",border:"1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12))",zIndex:9999,boxShadow:"var(--ogrid-shadow, 0 4px 16px rgba(0,0,0,0.2))",textAlign:"left",fontSize:"13px",fontFamily:G?.fontFamily??"inherit"});let B=v.closest("[data-ogrid-scroll-container]")??v.closest('[style*="overflow"]'),z=()=>a.current(),X=requestAnimationFrame(()=>{B&&B.addEventListener("scroll",z,{passive:true}),window.addEventListener("scroll",z,{passive:true});});return ()=>{cancelAnimationFrame(X),B&&B.removeEventListener("scroll",z),window.removeEventListener("scroll",z);}},[n]);let P=w??ya;Pe.useEffect(()=>{if(n==="richSelect")return;let v=c.current;if(!v)return;let y=v.querySelector("input");y?(y.focus({preventScroll:true}),y.select()):v.focus({preventScroll:true});},[n]);let I=w!=null;if(n==="richSelect"){let v=jsxs("div",{style:P,role:"listbox",children:[jsx("input",{type:"text",value:h.searchText,onChange:y=>h.setSearchText(y.target.value),onKeyDown:h.handleKeyDown,placeholder:"Search...",autoFocus:true,style:Ia}),h.filteredValues.map((y,b)=>jsx("div",{role:"option","aria-selected":b===h.highlightedIndex,onClick:()=>h.selectValue(y),style:b===h.highlightedIndex?rr:Wn,children:h.getDisplayText(y)},String(y))),h.filteredValues.length===0&&jsx("div",{style:xa,children:"No matches"})]});return jsxs("div",{ref:c,style:or,children:[jsxs("div",{style:lr,children:[jsx("span",{children:h.getDisplayText(e)}),jsx("span",{style:ar,children:"\u25BE"})]}),I?createPortal(v,document.body):v]})}if(n==="checkbox")return jsx(Fragment,{children:s(e===true,y=>f(y),R)});if(n==="select"){let v=jsx("div",{style:P,ref:x.dropdownRef,role:"listbox",children:g.map((y,b)=>jsx("div",{role:"option","aria-selected":b===x.highlightedIndex,onClick:()=>x.selectValue(y),style:b===x.highlightedIndex?rr:Wn,children:x.getDisplayText(y)},String(y)))});return jsxs("div",{ref:c,style:or,onKeyDown:x.handleKeyDown,tabIndex:0,children:[jsxs("div",{style:lr,children:[jsx("span",{children:x.getDisplayText(e)}),jsx("span",{style:ar,children:"\u25BE"})]}),I?createPortal(v,document.body):v]})}if(n==="date"){let v=getDateInputPlaceholder(i);return p==="native"?jsx("div",{ref:c,style:zt,children:jsx("input",{type:"date",value:C,onChange:y=>r(y.target.value),onBlur:d,onKeyDown:m,style:_n,autoFocus:true})}):jsx("div",{ref:c,style:zt,children:jsx("input",{type:"text",value:C,onChange:y=>r(y.target.value),onBlur:d,onKeyDown:m,placeholder:v,style:_n,autoFocus:true})})}return jsx("div",{ref:c,style:zt,children:jsx("input",{type:"text",value:C,onChange:v=>r(v.target.value),onBlur:d,onKeyDown:m,style:_n,autoFocus:true})})}var vc=(o,e)=>({left:o,top:e});function yc(o){let{x:e,y:t,hasSelection:n,canUndo:l,canRedo:u,onClose:s,onCopy:c,onCut:a,onPaste:i,onSelectAll:p,onUndo:C,onRedo:r,classNames:m}=o,d=Pe.useRef(null),f=Pe.useMemo(()=>getContextMenuHandlers({onCopy:c,onCut:a,onPaste:i,onSelectAll:p,onUndo:C,onRedo:r,onClose:s}),[c,a,i,p,C,r,s]),R=Pe.useCallback(g=>!!(g.disabledWhenNoSelection&&!n||g.id==="undo"&&!l||g.id==="redo"&&!u),[n,l,u]);return Pe.useEffect(()=>{let g=h=>{d.current&&!d.current.contains(h.target)&&s();},S=h=>{h.key==="Escape"&&s();};return document.addEventListener("mousedown",g,true),document.addEventListener("keydown",S,true),()=>{document.removeEventListener("mousedown",g,true),document.removeEventListener("keydown",S,true);}},[s]),jsx("div",{ref:d,className:m?.contextMenu,role:"menu",style:vc(e,t),"aria-label":"Grid context menu",children:GRID_CONTEXT_MENU_ITEMS.map(g=>jsxs(Pe.Fragment,{children:[g.dividerBefore&&jsx("div",{className:m?.contextMenuDivider}),jsxs("button",{type:"button",className:m?.contextMenuItem,onClick:f[g.id],disabled:R(g),children:[jsx("span",{className:m?.contextMenuItemLabel,children:g.label}),g.shortcut&&jsx("span",{className:m?.contextMenuItemShortcut,children:formatShortcut(g.shortcut)})]})]},g.id))})}var Pc={animation:"ogrid-marching-ants 0.5s linear infinite"},Tc={shapeRendering:"crispEdges"},Dc={...Pc,shapeRendering:"crispEdges"};function Ec({containerRef:o,selectionRange:e,copyRange:t,cutRange:n,colOffset:l,items:u,visibleColumns:s,columnSizingOverrides:c,columnOrder:a,isDragging:i}){let[p,C]=useState(null),[r,m]=useState(null),d=useRef(0),f=t??n,R=useCallback(()=>{let w=o.current;if(!w){C(null),m(null);return}C(e?measureRange(w,e,l):null),m(f?measureRange(w,f,l):null);},[e,f,o,l]);if(useEffect(()=>{injectGlobalStyles("ogrid-marching-ants-keyframes","@keyframes ogrid-marching-ants{to{stroke-dashoffset:-8}}");},[]),useEffect(()=>{if(!e&&!f){C(null),m(null);return}d.current=requestAnimationFrame(R);let w=o.current,F;return w&&(F=new ResizeObserver(R),F.observe(w)),()=>{cancelAnimationFrame(d.current),F?.disconnect();}},[e,f,R,o,u,s,c,a]),!p&&!r)return null;let g=e!=null&&f!=null&&e.startRow===f.startRow&&e.startCol===f.startCol&&e.endRow===f.endRow&&e.endCol===f.endCol,S=w=>({top:Math.round(w.top),left:Math.round(w.left),width:Math.round(w.width),height:Math.round(w.height)}),h=p?S(p):null,x=r?S(r):null;return jsxs(Fragment,{children:[h&&!i&&!g&&!(e&&e.startRow===e.endRow&&e.startCol===e.endCol)&&jsx("svg",{style:{position:"absolute",top:h.top,left:h.left,width:h.width,height:h.height,pointerEvents:"none",zIndex:4,overflow:"visible"},"aria-hidden":"true",children:jsx("rect",{x:"1",y:"1",width:Math.max(0,h.width-2),height:Math.max(0,h.height-2),fill:"none",stroke:"var(--ogrid-selection, #217346)",strokeWidth:"2",style:Tc})}),x&&jsx("svg",{style:{position:"absolute",top:x.top,left:x.left,width:x.width,height:x.height,pointerEvents:"none",zIndex:5,overflow:"visible"},"aria-hidden":"true",children:jsx("rect",{x:"1",y:"1",width:Math.max(0,x.width-2),height:Math.max(0,x.height-2),fill:"none",stroke:"var(--ogrid-selection, #217346)",strokeWidth:"2",strokeDasharray:"4 4",style:Dc})})]})}var Gc={shapeRendering:"crispEdges"};function Bc(o,e,t){let n=e.col+t,l=(e.endCol??e.col)+t,u=e.endRow??e.row,s=o.querySelector(`[data-row-index="${e.row}"][data-col-index="${n}"]`),c=o.querySelector(`[data-row-index="${u}"][data-col-index="${l}"]`);if(!s||!c)return null;let a=o.getBoundingClientRect(),i=s.getBoundingClientRect(),p=c.getBoundingClientRect();return {top:Math.round(i.top-a.top),left:Math.round(i.left-a.left),width:Math.round(p.right-i.left),height:Math.round(p.bottom-i.top),color:FORMULA_REF_COLORS[e.colorIndex%FORMULA_REF_COLORS.length]}}function Vc({containerRef:o,references:e,colOffset:t}){let[n,l]=useState([]),u=useRef(0),s=useCallback(()=>{let c=o.current;if(!c||e.length===0){l([]);return}let a=[];for(let i of e){let p=Bc(c,i,t);p&&a.push(p);}l(a);},[e,o,t]);return useEffect(()=>{if(e.length===0){l([]);return}return u.current=requestAnimationFrame(s),()=>cancelAnimationFrame(u.current)},[e,s]),n.length===0?null:jsx(Fragment,{children:n.map((c,a)=>jsx("svg",{style:{position:"absolute",top:c.top,left:c.left,width:c.width,height:c.height,pointerEvents:"none",zIndex:3,overflow:"visible"},"aria-hidden":"true",children:jsx("rect",{x:"1",y:"1",width:Math.max(0,c.width-2),height:Math.max(0,c.height-2),fill:"none",stroke:c.color,strokeWidth:"2",style:Gc})},a))})}var Nc=memo(Vc);function _c(o){let{isOpen:e,anchorElement:t,onClose:n,onPinLeft:l,onPinRight:u,onUnpin:s,onSortAsc:c,onSortDesc:a,onClearSort:i,onAutosizeThis:p,onAutosizeAll:C,canPinLeft:r,canPinRight:m,canUnpin:d,currentSort:f,isSortable:R,isResizable:g,classNames:S,getPortalTarget:h}=o,[x,w]=Pe.useState(null),F=Pe.useRef(null);Pe.useEffect(()=>{if(!e||!t){w(null);return}let b=t.getBoundingClientRect();w({top:b.bottom+4,left:b.left});let D=G=>{let B=G.target;F.current&&F.current.contains(B)||t&&!t.contains(B)&&n();},L=G=>{G.key==="Escape"&&n();};return document.addEventListener("mousedown",D),document.addEventListener("keydown",L),()=>{document.removeEventListener("mousedown",D),document.removeEventListener("keydown",L);}},[e,t,n]);let P=Pe.useMemo(()=>({canPinLeft:r,canPinRight:m,canUnpin:d,currentSort:f,isSortable:R,isResizable:g}),[r,m,d,f,R,g]),I=Pe.useMemo(()=>getColumnHeaderMenuItems(P),[P]),v=Pe.useMemo(()=>({pinLeft:l,pinRight:u,unpin:s,sortAsc:c,sortDesc:a,clearSort:i,autosizeThis:p,autosizeAll:C}),[l,u,s,c,a,i,p,C]);if(!e||!x)return null;let y=t&&h?h(t):document.body;return createPortal(jsx("div",{ref:F,className:S?.content,style:{position:"fixed",top:x.top,left:x.left,zIndex:1e3},children:I.map((b,D)=>jsxs(Pe.Fragment,{children:[jsx("button",{className:S?.item,disabled:b.disabled,onClick:()=>{v[b.id](),n();},children:b.label}),b.divider&&D<I.length-1&&jsx("div",{className:S?.separator})]},b.id))}),y)}var Oa=Pe.memo(o=>{let{currentPage:e,pageSize:t,totalCount:n,onPageChange:l,onPageSizeChange:u,pageSizeOptions:s,entityLabelPlural:c,className:a,slots:i,classNames:p={}}=o,{labelPlural:C,vm:r,handlePageSizeChange:m}=Vn({currentPage:e,pageSize:t,totalCount:n,onPageSizeChange:u,pageSizeOptions:s,entityLabelPlural:c});if(!r)return null;let{pageNumbers:d,showStartEllipsis:f,showEndEllipsis:R,totalPages:g,startItem:S,endItem:h}=r,{NavButton:x,PageButton:w,PageSizeSelect:F,OuterContainer:P,InfoText:I,NavButtonsContainer:v,PageSizeContainer:y,PageSizeLabel:b,Ellipsis:D}=i,L=`Showing ${S} to ${h} of ${n.toLocaleString()} ${C}`,G=I?jsx(I,{children:L}):jsx("div",{className:p.paginationInfo,children:L}),B=D?jsx(D,{}):jsx("span",{className:p.ellipsis,"aria-hidden":true,children:"\u2026"}),z=b?jsx(b,{}):jsx("span",{className:p.pageSizeLabel,children:"Rows"}),X=jsxs("div",{className:p.pageNumbers,children:[f&&jsxs(Fragment,{children:[jsx(w,{onClick:()=>l(1),active:false,"aria-label":"Page 1",className:p.pageBtn,children:"1"}),B]}),d.map(H=>jsx(w,{onClick:()=>l(H),active:e===H,"aria-label":`Page ${H}`,"aria-current":e===H?"page":void 0,className:p.pageBtn,children:H},H)),R&&jsxs(Fragment,{children:[B,jsx(w,{onClick:()=>l(g),active:false,"aria-label":`Page ${g}`,className:p.pageBtn,children:g})]})]}),k=jsxs(Fragment,{children:[jsx(x,{variant:"first",onClick:()=>l(1),disabled:e===1,"aria-label":"First page",className:p.navBtn}),jsx(x,{variant:"prev",onClick:()=>l(e-1),disabled:e===1,"aria-label":"Previous page",className:p.navBtn}),X,jsx(x,{variant:"next",onClick:()=>l(e+1),disabled:e>=g,"aria-label":"Next page",className:p.navBtn}),jsx(x,{variant:"last",onClick:()=>l(g),disabled:e>=g,"aria-label":"Last page",className:p.navBtn})]}),O=v?jsx(v,{className:p.paginationControls,children:k}):jsx("div",{className:p.paginationControls,children:k}),N=jsxs(Fragment,{children:[z,jsx(F,{value:t,options:r.pageSizeOptions,onChange:m,"aria-label":"Rows per page",className:p.pageSizeSelect})]}),_=y?jsx(y,{className:p.pageSizeSelector,children:N}):jsx("div",{className:p.pageSizeSelector,children:N}),Y=`${p.pagination??""} ${a||""}`.trim(),M="navigation",W="Pagination";return P?jsxs(P,{className:Y,role:M,"aria-label":W,children:[G,O,_]}):jsxs("div",{className:Y,role:M,"aria-label":W,children:[G,O,_]})});Oa.displayName="PaginationControlsBase";var Ma=({columns:o,visibleColumns:e,visibleCount:t,totalCount:n,handleSelectAll:l,handleClearAll:u,handleCheckboxChange:s,CheckboxItem:c,classNames:a={},Header:i,OptionsListContainer:p,OptionItemContainer:C,Actions:r})=>{let m=i?jsx(i,{visibleCount:t,totalCount:n}):jsxs("div",{className:a.header,children:["Select Columns (",t," of ",n,")"]}),d=o.map(g=>{let S=jsx(c,{columnId:g.columnId,columnName:g.name,checked:e.has(g.columnId),disabled:g.required===true,onChange:s(g.columnId)});return C?jsx(C,{columnId:g.columnId,children:S},g.columnId):jsx("div",{className:a.optionItem,children:S},g.columnId)}),f=p?jsx(p,{children:d}):jsx("div",{className:a.optionsList,children:d}),R=r?jsx(r,{onClearAll:u,onSelectAll:l}):jsxs("div",{className:a.actions,children:[jsx("button",{type:"button",className:a.clearButton,onClick:u,children:"Clear All"}),jsx("button",{type:"button",className:a.selectAllButton,onClick:l,children:"Select All"})]});return jsxs(Fragment,{children:[m,f,R]})};Ma.displayName="ColumnChooserContent";function Xc(o){let{DataGridTable:e,ColumnChooser:t,PaginationControls:n,containerComponent:l,containerProps:u}=o,s=forwardRef(function(a,i){let{dataGridProps:p,pagination:C,columnChooser:r,layout:m}=pn(a,i);return jsx(tr,{containerComponent:l,containerProps:u,className:m.className,sideBar:m.sideBarProps,toolbar:m.toolbar,toolbarBelow:m.toolbarBelow,fullScreen:m.fullScreen,formulaBar:m.formulaBar,sheetTabs:m.sheetTabs,toolbarEnd:r.placement==="toolbar"?jsx(t,{columns:r.columns,visibleColumns:r.visibleColumns,onVisibilityChange:r.onVisibilityChange,onSetVisibleColumns:r.onSetVisibleColumns}):void 0,pagination:jsx(n,{currentPage:C.page,pageSize:C.pageSize,totalCount:C.displayTotalCount,onPageChange:C.setPage,onPageSizeChange:C.setPageSize,pageSizeOptions:C.pageSizeOptions,entityLabelPlural:C.entityLabelPlural}),children:jsx(e,{...p})})});return s.displayName="OGrid",Pe.memo(s)}var qc={color:"var(--ogrid-error, #d32f2f)",fontSize:"0.75rem",padding:"2px 4px"},cr=class extends Pe.Component{constructor(e){super(e),this.state={hasError:false};}static getDerivedStateFromError(){return {hasError:true}}componentDidCatch(e,t){this.props.onError&&this.props.onError(e,t);}componentDidUpdate(e){e.children!==this.props.children&&this.state.hasError&&this.setState({hasError:false});}resetErrorBoundary(){this.setState({hasError:false});}render(){return this.state.hasError?this.props.fallback!==void 0?this.props.fallback:jsx("span",{style:qc,children:"\u26A0 Error"}):this.props.children}};var Yc={background:"none",border:"none",color:"inherit",textDecoration:"underline",cursor:"pointer",padding:0,font:"inherit"};function Zc(o){let{message:e,hasActiveFilters:t,onClearAll:n,render:l}=o;return l?jsx(Fragment,{children:l()}):jsx(Fragment,{children:e??(t?jsxs(Fragment,{children:["No items match your current filters. Try adjusting your search or"," ",jsx("button",{type:"button",onClick:n,style:Yc,children:"clear all filters"})," ","to see all items."]}):"There are no items available at this time.")})}function Qc({emptyState:o,classNames:e,icon:t}){return jsx("div",{className:e.emptyStateInGrid,children:jsx("div",{className:e.emptyStateInGridInner,children:o.render?o.render():jsxs(Fragment,{children:[t!=null&&jsx("span",{className:e.emptyStateInGridIcon,"aria-hidden":true,children:t}),jsx("div",{className:e.emptyStateInGridTitle,children:"No results found"}),jsx("div",{className:e.emptyStateInGridMessage,children:o.message!=null?o.message:o.hasActiveFilters?jsxs(Fragment,{children:["No items match your current filters. Try adjusting your search or"," ",jsx("button",{type:"button",className:e.emptyStateInGridLink,onClick:o.onClearAll,children:"clear all filters"})," ","to see all items."]}):"There are no items available at this time."})]})})})}function ed({message:o,classNames:e}){return jsx("div",{className:e.loadingOverlay,"aria-live":"polite",children:jsxs("div",{className:e.loadingOverlayContent,children:[jsx("div",{className:e.spinner}),jsx("span",{className:e.loadingOverlayText,children:o})]})})}function nd({dropIndicatorX:o,wrapperLeft:e,className:t}){return jsx("div",{className:t,style:{left:o-e}})}var rd={padding:"8px 12px",display:"flex",flexDirection:"column",gap:6},Ga={display:"flex",alignItems:"center",gap:6,fontSize:12},Ba={flex:1},Yn=({tempDateFrom:o,setTempDateFrom:e,tempDateTo:t,setTempDateTo:n,onApply:l,onClear:u,classNames:s})=>jsxs(Fragment,{children:[jsxs("div",{style:rd,children:[jsxs("label",{style:Ga,children:["From:",jsx("input",{type:"date",value:o,onChange:c=>e(c.target.value),style:Ba})]}),jsxs("label",{style:Ga,children:["To:",jsx("input",{type:"date",value:t,onChange:c=>n(c.target.value),style:Ba})]})]}),jsxs("div",{className:s?.popoverActions,children:[jsx("button",{className:s?.clearButton,onClick:u,disabled:!o&&!t,children:"Clear"}),jsx("button",{className:s?.applyButton,onClick:l,children:"Apply"})]})]});Yn.displayName="DateFilterContent";function ld(o){return {filterType:o.filterType,onSort:o.onSort,selectedValues:o.selectedValues,onFilterChange:o.onFilterChange,options:o.options,isLoadingOptions:o.isLoadingOptions??false,textValue:o.textValue??"",onTextChange:o.onTextChange,selectedUser:o.selectedUser,onUserChange:o.onUserChange,peopleSearch:o.peopleSearch,dateValue:o.dateValue,onDateChange:o.onDateChange}}function ad(o,e){return {tempDateFrom:o.tempDateFrom,setTempDateFrom:o.setTempDateFrom,tempDateTo:o.tempDateTo,setTempDateTo:o.setTempDateTo,onApply:o.handlers.handleDateApply,onClear:o.handlers.handleDateClear,classNames:e}}function sd(o,e,t,n,l,u){return o==="multiSelect"?u.renderMultiSelect({searchText:e.searchText,onSearchChange:e.setSearchText,options:t,filteredOptions:e.filteredOptions,selected:e.tempSelected,onOptionToggle:e.handlers.handleCheckboxChange,onSelectAll:e.handlers.handleSelectAll,onClearSelection:e.handlers.handleClearSelection,onApply:e.handlers.handleApplyMultiSelect,isLoading:n}):o==="text"?u.renderText({value:e.tempTextValue,onValueChange:e.setTempTextValue,onApply:e.handlers.handleTextApply,onClear:e.handlers.handleTextClear}):o==="people"?u.renderPeople({selectedUser:l,searchText:e.peopleSearchText,onSearchChange:e.setPeopleSearchText,suggestions:e.peopleSuggestions,isLoading:e.isPeopleLoading,onUserSelect:e.handlers.handleUserSelect,onClearUser:e.handlers.handleClearUser,inputRef:e.peopleInputRef}):o==="date"?u.renderDate({tempDateFrom:e.tempDateFrom,setTempDateFrom:e.setTempDateFrom,tempDateTo:e.tempDateTo,setTempDateTo:e.setTempDateTo,onApply:e.handlers.handleDateApply,onClear:e.handlers.handleDateClear}):null}function ud(o,e){return {renderMultiSelect:t=>jsx(o.MultiSelectFilterPopover,{...t}),renderText:t=>jsx(o.TextFilterPopover,{...t}),renderPeople:t=>jsx(o.PeopleFilterPopover,{...t}),renderDate:t=>jsx(Yn,{...t,classNames:e})}}export{_c as BaseColumnHeaderMenu,nd as BaseDropIndicator,Qc as BaseEmptyState,Sc as BaseInlineCellEditor,ed as BaseLoadingOverlay,xu as CURSOR_CELL_STYLE,cr as CellErrorBoundary,Ma as ColumnChooserContent,Yn as DateFilterContent,Zc as EmptyState,Fo as FormulaBar,Nc as FormulaRefOverlay,yu as GRID_ROOT_STYLE,yc as GridContextMenu,Ec as MarchingAntsOverlay,Pu as NOOP,tr as OGridLayout,Iu as POPOVER_ANCHOR_STYLE,wu as PREVENT_DEFAULT,Oa as PaginationControlsBase,Tu as STOP_PROPAGATION,Oo as SheetTabs,zn as SideBar,pc as StatusBar,Lr as buildInlineEditorProps,Gr as buildPopoverEditorProps,ud as createBaseFilterRenderers,Xc as createOGrid,_n as editorInputStyle,zt as editorWrapperStyle,Br as getCellInteractionProps,ld as getColumnHeaderFilterStateParams,Ol as getColumnHeaderMenuProps,ad as getDateFilterContentProps,sd as renderFilterContent,kr as resolveCellDisplayContent,Ar as resolveCellStyle,ya as richSelectDropdownStyle,Rc as richSelectFooterStyle,xa as richSelectNoMatchesStyle,rr as richSelectOptionHighlightedStyle,Wn as richSelectOptionStyle,Ia as richSelectSearchInputStyle,or as richSelectWrapperStyle,ar as selectChevronStyle,lr as selectDisplayStyle,hc as selectEditorStyle,fn as useActiveCell,gn as useCellEditing,Rn as useCellSelection,hn as useClipboard,Jl as useColumnChooserState,Zl as useColumnHeaderFilterState,ca as useColumnMeta,Gn as useColumnReorder,kn as useColumnResize,Cn as useContextMenu,Tn as useDataGridState,ua as useDataGridTableOrchestration,Mn as useDateFilterState,yn as useDebounce,wn as useFillHandle,sn as useFilterOptions,cn as useFormulaBar,un as useFormulaEngine,Un as useInlineCellEditorState,bn as useKeyboardNavigation,A as useLatestRef,aa as useListVirtualizer,Fn as useMultiSelectFilterState,pn as useOGrid,Vn as usePaginationControls,On as usePeopleFilterState,An as useRichSelectState,Sn as useRowSelection,Ln as useSelectState,mn as useSideBarState,Pn as useTableLayout,Dn as useTextFilterState,vn as useUndoRedo,Bn as useVirtualScroll};
|
|
@@ -7,6 +7,8 @@ export declare const richSelectDropdownStyle: React.CSSProperties;
|
|
|
7
7
|
export declare const richSelectOptionStyle: React.CSSProperties;
|
|
8
8
|
export declare const richSelectOptionHighlightedStyle: React.CSSProperties;
|
|
9
9
|
export declare const richSelectNoMatchesStyle: React.CSSProperties;
|
|
10
|
+
export declare const richSelectFooterStyle: React.CSSProperties;
|
|
11
|
+
export declare const richSelectSearchInputStyle: React.CSSProperties;
|
|
10
12
|
export declare const selectEditorStyle: React.CSSProperties;
|
|
11
13
|
export declare const selectDisplayStyle: React.CSSProperties;
|
|
12
14
|
export declare const selectChevronStyle: React.CSSProperties;
|
|
@@ -8,7 +8,7 @@ export interface IColumnChooserProps {
|
|
|
8
8
|
columns: IColumnDefinition[];
|
|
9
9
|
visibleColumns: Set<string>;
|
|
10
10
|
onVisibilityChange: (columnKey: string, visible: boolean) => void;
|
|
11
|
-
/** Optional batch setter
|
|
11
|
+
/** Optional batch setter - used by select-all / clear-all for a single state update. */
|
|
12
12
|
onSetVisibleColumns?: (columns: Set<string>) => void;
|
|
13
13
|
className?: string;
|
|
14
14
|
}
|
|
@@ -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
|
* Uses the same container measurement pattern as MarchingAntsOverlay.
|
|
@@ -3,25 +3,25 @@ import type { ISelectionRange } from '../types';
|
|
|
3
3
|
export interface MarchingAntsOverlayProps {
|
|
4
4
|
/** Ref to the positioned container that wraps the table (must have position: relative) */
|
|
5
5
|
containerRef: React.RefObject<HTMLElement | null>;
|
|
6
|
-
/** Current selection range
|
|
6
|
+
/** Current selection range - solid green border */
|
|
7
7
|
selectionRange: ISelectionRange | null;
|
|
8
|
-
/** Copy range
|
|
8
|
+
/** Copy range - animated dashed border */
|
|
9
9
|
copyRange: ISelectionRange | null;
|
|
10
|
-
/** Cut range
|
|
10
|
+
/** Cut range - animated dashed border */
|
|
11
11
|
cutRange: ISelectionRange | null;
|
|
12
|
-
/** Column offset
|
|
12
|
+
/** Column offset - 1 when checkbox column is present, else 0 */
|
|
13
13
|
colOffset: number;
|
|
14
|
-
/** Items array
|
|
14
|
+
/** Items array - triggers re-measurement when data changes (e.g., sorting) */
|
|
15
15
|
items: readonly unknown[];
|
|
16
|
-
/** Visible columns
|
|
16
|
+
/** Visible columns - triggers re-measurement when columns are hidden/shown */
|
|
17
17
|
visibleColumns: Set<string> | undefined;
|
|
18
|
-
/** Column sizing overrides
|
|
18
|
+
/** Column sizing overrides - triggers re-measurement when columns are resized */
|
|
19
19
|
columnSizingOverrides: Record<string, {
|
|
20
20
|
widthPx: number;
|
|
21
21
|
}>;
|
|
22
|
-
/** Column order
|
|
22
|
+
/** Column order - triggers re-measurement when columns are reordered */
|
|
23
23
|
columnOrder: readonly string[] | undefined;
|
|
24
|
-
/** True while the user is drag-selecting
|
|
24
|
+
/** True while the user is drag-selecting - hides the selection SVG (drag overlay handles it) */
|
|
25
25
|
isDragging?: boolean;
|
|
26
26
|
}
|
|
27
27
|
export declare function MarchingAntsOverlay({ containerRef, selectionRange, copyRange, cutRange, colOffset, items, visibleColumns, columnSizingOverrides, columnOrder, isDragging, }: MarchingAntsOverlayProps): React.ReactElement | null;
|
|
@@ -5,9 +5,13 @@ import type * as React from 'react';
|
|
|
5
5
|
*/
|
|
6
6
|
/** Root container style for the DataGridTable (flex column layout). */
|
|
7
7
|
export declare const GRID_ROOT_STYLE: React.CSSProperties;
|
|
8
|
-
/** Applied to cells that support editing
|
|
8
|
+
/** Applied to cells that support editing - shows the cell cursor. */
|
|
9
9
|
export declare const CURSOR_CELL_STYLE: React.CSSProperties;
|
|
10
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* Popover anchor element style — must match the `.cellContent` layout so the cell
|
|
12
|
+
* content doesn't shift when the editor opens. Uses flex alignment + cell padding
|
|
13
|
+
* to keep the displayed value in the same position as a non-editing cell.
|
|
14
|
+
*/
|
|
11
15
|
export declare const POPOVER_ANCHOR_STYLE: React.CSSProperties;
|
|
12
16
|
/** Prevents the default browser action for mouse events. */
|
|
13
17
|
export declare const PREVENT_DEFAULT: (e: React.MouseEvent) => void;
|
|
@@ -11,7 +11,7 @@ export interface UseCellSelectionResult {
|
|
|
11
11
|
setSelectionRange: (range: ISelectionRange | null) => void;
|
|
12
12
|
handleCellMouseDown: (e: React.MouseEvent, rowIndex: number, globalColIndex: number) => void;
|
|
13
13
|
handleSelectAllCells: () => void;
|
|
14
|
-
/** True while the user is drag-selecting cells (mousedown
|
|
14
|
+
/** True while the user is drag-selecting cells (mousedown to mousemove to mouseup). */
|
|
15
15
|
isDragging: boolean;
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
@@ -7,7 +7,7 @@ export interface UseColumnChooserStateParams {
|
|
|
7
7
|
columns: IColumnDefinition[];
|
|
8
8
|
visibleColumns: Set<string>;
|
|
9
9
|
onVisibilityChange: (columnKey: string, visible: boolean) => void;
|
|
10
|
-
/** Optional batch setter for select-all / clear-all
|
|
10
|
+
/** Optional batch setter for select-all / clear-all - avoids N individual callbacks. */
|
|
11
11
|
onSetVisibleColumns?: (columns: Set<string>) => void;
|
|
12
12
|
}
|
|
13
13
|
export interface UseColumnChooserStateResult {
|
|
@@ -37,7 +37,7 @@ export interface UseDataGridEditingParams<T> {
|
|
|
37
37
|
onFormulaCellChanged?: (col: number, row: number) => void;
|
|
38
38
|
/** Whether formula support is enabled. */
|
|
39
39
|
formulas?: boolean;
|
|
40
|
-
/** All flat columns (for mapping columnId
|
|
40
|
+
/** All flat columns (for mapping columnId to column index). */
|
|
41
41
|
flatColumns?: IColumnDef<T>[];
|
|
42
42
|
}
|
|
43
43
|
export interface UseDataGridEditingResult<T> {
|
|
@@ -45,7 +45,7 @@ export interface UseDataGridInteractionParams<T> {
|
|
|
45
45
|
y: number;
|
|
46
46
|
} | null) => void;
|
|
47
47
|
wrapperRef: RefObject<HTMLDivElement | null>;
|
|
48
|
-
/** Custom keydown handler
|
|
48
|
+
/** Custom keydown handler - called before grid default. preventDefault() suppresses grid handling. */
|
|
49
49
|
onKeyDown?: (event: React.KeyboardEvent) => void;
|
|
50
50
|
/** When true, enables formula-aware clipboard and fill handle. */
|
|
51
51
|
formulas?: boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* useFormulaBar
|
|
2
|
+
* useFormulaBar - React hook for formula bar state.
|
|
3
3
|
*
|
|
4
4
|
* Manages the formula bar text, editing mode, and reference extraction.
|
|
5
5
|
*/
|
|
@@ -45,7 +45,7 @@ export interface UseFormulaBarResult {
|
|
|
45
45
|
* Returns true if the reference was inserted, false if not in formula-edit mode.
|
|
46
46
|
*/
|
|
47
47
|
insertReference: (reference: string) => boolean;
|
|
48
|
-
/** Ref to the formula bar input element
|
|
48
|
+
/** Ref to the formula bar input element - set by the FormulaBar component for cursor tracking. */
|
|
49
49
|
inputRef: React.RefObject<HTMLInputElement | null>;
|
|
50
50
|
}
|
|
51
51
|
export declare function useFormulaBar(params: UseFormulaBarParams): UseFormulaBarResult;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* useFormulaEngine
|
|
2
|
+
* useFormulaEngine - React hook for integrating the formula engine with the grid.
|
|
3
3
|
*
|
|
4
4
|
* Lazily creates a FormulaEngine instance when `formulas` prop 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>;
|
|
@@ -8,6 +8,10 @@ export interface UseInlineCellEditorStateParams {
|
|
|
8
8
|
editorType: InlineCellEditorType;
|
|
9
9
|
onCommit: (value: unknown) => void;
|
|
10
10
|
onCancel: () => void;
|
|
11
|
+
/** Date display/input format (e.g. 'MM/DD/YYYY', 'DD/MM/YYYY', 'YYYY-MM-DD'). */
|
|
12
|
+
dateFormat?: string;
|
|
13
|
+
/** Editor widget type: 'text' (default, Excel-style) or 'native' (browser <input type="date">). */
|
|
14
|
+
dateEditorType?: 'text' | 'native';
|
|
11
15
|
}
|
|
12
16
|
export interface UseInlineCellEditorStateResult {
|
|
13
17
|
localValue: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Lightweight list virtualizer for fixed-height items in a scrollable container.
|
|
3
|
-
* Zero external dependencies
|
|
3
|
+
* Zero external dependencies - uses only React state and refs.
|
|
4
4
|
*/
|
|
5
5
|
export interface UseListVirtualizerOptions {
|
|
6
6
|
/** Total number of items in the list. */
|
|
@@ -14,6 +14,6 @@ export interface UseSelectStateResult {
|
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* Manages select editor state with keyboard navigation (arrow keys, enter, escape).
|
|
17
|
-
* Simpler than useRichSelectState
|
|
17
|
+
* Simpler than useRichSelectState - no search, just a dropdown list.
|
|
18
18
|
*/
|
|
19
19
|
export declare function useSelectState(params: UseSelectStateParams): UseSelectStateResult;
|
|
@@ -9,9 +9,9 @@ export interface UseUndoRedoResult<T> {
|
|
|
9
9
|
redo: () => void;
|
|
10
10
|
canUndo: boolean;
|
|
11
11
|
canRedo: boolean;
|
|
12
|
-
/** Start a batch
|
|
12
|
+
/** Start a batch - all changes until endBatch() are grouped as one undo step. */
|
|
13
13
|
beginBatch: () => void;
|
|
14
|
-
/** End a batch
|
|
14
|
+
/** End a batch - commits the accumulated changes as a single undo entry. */
|
|
15
15
|
endBatch: () => void;
|
|
16
16
|
/** The configured maximum undo stack depth. */
|
|
17
17
|
maxUndoDepth: number;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export { OGridLayout } from './components/OGridLayout';
|
|
|
8
8
|
export type { OGridLayoutProps } from './components/OGridLayout';
|
|
9
9
|
export { StatusBar } from './components/StatusBar';
|
|
10
10
|
export type { StatusBarProps, StatusBarClassNames } from './components/StatusBar';
|
|
11
|
-
export { BaseInlineCellEditor, editorWrapperStyle, editorInputStyle, richSelectWrapperStyle, richSelectDropdownStyle, richSelectOptionStyle, richSelectOptionHighlightedStyle, richSelectNoMatchesStyle, selectEditorStyle, selectDisplayStyle, selectChevronStyle, } from './components/BaseInlineCellEditor';
|
|
11
|
+
export { BaseInlineCellEditor, editorWrapperStyle, editorInputStyle, richSelectWrapperStyle, richSelectDropdownStyle, richSelectOptionStyle, richSelectOptionHighlightedStyle, richSelectNoMatchesStyle, richSelectSearchInputStyle, richSelectFooterStyle, selectEditorStyle, selectDisplayStyle, selectChevronStyle, } from './components/BaseInlineCellEditor';
|
|
12
12
|
export type { BaseInlineCellEditorProps } from './components/BaseInlineCellEditor';
|
|
13
13
|
export { GridContextMenu } from './components/GridContextMenu';
|
|
14
14
|
export type { GridContextMenuProps, GridContextMenuClassNames } from './components/GridContextMenu';
|
|
@@ -117,7 +117,7 @@ interface IOGridBaseProps<T> {
|
|
|
117
117
|
onFormulaRecalc?: (result: IRecalcResult) => void;
|
|
118
118
|
/** Custom formula functions to register with the formula engine (e.g. { MYFUNC: { minArgs: 1, maxArgs: 1, evaluate: ... } }). */
|
|
119
119
|
formulaFunctions?: Record<string, IFormulaFunction>;
|
|
120
|
-
/** Named ranges for the formula engine: name
|
|
120
|
+
/** Named ranges for the formula engine: name to cell/range ref string (e.g. { Revenue: 'A1:A10' }). */
|
|
121
121
|
namedRanges?: Record<string, string>;
|
|
122
122
|
/** Sheet accessors for cross-sheet formula references (e.g. { Sheet2: accessor }). */
|
|
123
123
|
sheets?: Record<string, IGridDataAccessor>;
|
|
@@ -246,7 +246,7 @@ export interface IOGridDataGridProps<T> {
|
|
|
246
246
|
getDependents?: (col: number, row: number) => IAuditEntry[];
|
|
247
247
|
/** Get full audit trail for a cell. */
|
|
248
248
|
getAuditTrail?: (col: number, row: number) => IAuditTrail | null;
|
|
249
|
-
/** Monotonic counter incremented on each formula recalculation
|
|
249
|
+
/** Monotonic counter incremented on each formula recalculation - used for cache invalidation. */
|
|
250
250
|
formulaVersion?: number;
|
|
251
251
|
/** Cell references to highlight (from active formula in formula bar). */
|
|
252
252
|
formulaReferences?: import('@alaarab/ogrid-core').FormulaReference[];
|
package/package.json
CHANGED