@vuu-ui/vuu-table 0.8.12 → 0.8.13
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/cjs/index.js +1 -1
- package/cjs/index.js.map +4 -4
- package/esm/index.js +1 -1
- package/esm/index.js.map +4 -4
- package/index.css +1 -1
- package/index.css.map +3 -3
- package/package.json +9 -9
- package/types/vuu-table/src/{table-next/Row.d.ts → Row.d.ts} +5 -5
- package/types/vuu-table/src/Table.d.ts +72 -0
- package/types/vuu-table/src/cell-renderers/cell-utils.d.ts +7 -0
- package/types/vuu-table/src/cell-renderers/checkbox-cell/CheckboxCell.d.ts +3 -0
- package/types/vuu-table/src/cell-renderers/checkbox-cell/index.d.ts +1 -0
- package/types/vuu-table/src/cell-renderers/dropdown-cell/DropdownCell.d.ts +4 -0
- package/types/vuu-table/src/cell-renderers/index.d.ts +5 -0
- package/types/vuu-table/src/{table-next/cell-renderers → cell-renderers}/input-cell/InputCell.d.ts +1 -1
- package/types/vuu-table/src/cell-renderers/lookup-cell/LookupCell.d.ts +3 -0
- package/types/vuu-table/src/cell-renderers/lookup-cell/index.d.ts +1 -0
- package/types/vuu-table/src/cell-renderers/toggle-cell/ToggleCell.d.ts +4 -0
- package/types/vuu-table/src/cell-renderers/toggle-cell/index.d.ts +1 -0
- package/types/vuu-table/src/{table-next/column-header-pill → column-header-pill}/ColumnHeaderPill.d.ts +3 -3
- package/types/vuu-table/src/{table-next/column-header-pill → column-header-pill}/GroupColumnPill.d.ts +2 -2
- package/types/vuu-table/src/{table-next/column-header-pill → column-header-pill}/SortIndicator.d.ts +2 -2
- package/types/vuu-table/src/{table-next/column-menu → column-menu}/ColumnMenu.d.ts +2 -2
- package/types/vuu-table/src/{table-next/column-resizing → column-resizing}/useTableColumnResize.d.ts +2 -2
- package/types/vuu-table/src/{table-next/context-menu → context-menu}/index.d.ts +1 -1
- package/types/vuu-table/src/{table-next/context-menu/useTableContextMenu.d.ts → context-menu/useHandleTableContextMenu.d.ts} +3 -3
- package/types/vuu-table/src/header-cell/GroupHeaderCellNext.d.ts +10 -0
- package/types/vuu-table/src/{table-next/header-cell → header-cell}/HeaderCell.d.ts +2 -2
- package/types/vuu-table/src/{table-next/header-cell → header-cell}/index.d.ts +0 -1
- package/types/vuu-table/src/index.d.ts +9 -4
- package/types/vuu-table/src/{table-next/table-cell → table-cell}/TableCell.d.ts +1 -1
- package/types/vuu-table/src/{table-next/table-cell → table-cell}/TableGroupCell.d.ts +1 -1
- package/types/vuu-table/src/{table-next/table-config.d.ts → table-config.d.ts} +1 -1
- package/types/vuu-table/src/{table-next/table-dom-utils.d.ts → table-dom-utils.d.ts} +3 -1
- package/types/vuu-table/src/table-header/TableHeader.d.ts +18 -0
- package/types/vuu-table/src/table-header/useTableHeader.d.ts +15 -0
- package/types/vuu-table/src/useCell.d.ts +6 -0
- package/types/vuu-table/src/useCellEditing.d.ts +10 -0
- package/types/vuu-table/src/useControlledTableNavigation.d.ts +7 -0
- package/types/vuu-table/src/{table-next/useDataSource.d.ts → useDataSource.d.ts} +5 -3
- package/types/vuu-table/src/{table-next/useKeyboardNavigation.d.ts → useKeyboardNavigation.d.ts} +9 -2
- package/types/vuu-table/src/useSelection.d.ts +14 -0
- package/types/vuu-table/src/useTable.d.ts +66 -0
- package/types/vuu-table/src/useTableContextMenu.d.ts +11 -0
- package/types/vuu-table/src/{table-next/useTableModel.d.ts → useTableModel.d.ts} +12 -14
- package/types/vuu-table/src/{table-next/useTableViewport.d.ts → useTableViewport.d.ts} +2 -2
- package/types/vuu-table/src/{table-next/useVirtualViewport.d.ts → useVirtualViewport.d.ts} +2 -2
- package/types/vuu-ui-controls/src/drag-drop/DragDropState.d.ts +15 -0
- package/types/vuu-ui-controls/src/drag-drop/dragDropTypesNext.d.ts +91 -0
- package/types/vuu-layout/src/Component.d.ts +0 -7
- package/types/vuu-layout/src/DraggableLayout.d.ts +0 -7
- package/types/vuu-layout/src/dock-layout/DockLayout.d.ts +0 -10
- package/types/vuu-layout/src/dock-layout/Drawer.d.ts +0 -18
- package/types/vuu-layout/src/dock-layout/index.d.ts +0 -2
- package/types/vuu-layout/src/drag-drop/BoxModel.d.ts +0 -143
- package/types/vuu-layout/src/drag-drop/DragState.d.ts +0 -46
- package/types/vuu-layout/src/drag-drop/Draggable.d.ts +0 -24
- package/types/vuu-layout/src/drag-drop/DropMenu.d.ts +0 -10
- package/types/vuu-layout/src/drag-drop/DropTarget.d.ts +0 -61
- package/types/vuu-layout/src/drag-drop/DropTargetRenderer.d.ts +0 -18
- package/types/vuu-layout/src/drag-drop/dragDropTypes.d.ts +0 -51
- package/types/vuu-layout/src/drag-drop/index.d.ts +0 -4
- package/types/vuu-layout/src/flexbox/Flexbox.d.ts +0 -5
- package/types/vuu-layout/src/flexbox/FlexboxLayout.d.ts +0 -6
- package/types/vuu-layout/src/flexbox/FluidGrid.d.ts +0 -7
- package/types/vuu-layout/src/flexbox/FluidGridLayout.d.ts +0 -6
- package/types/vuu-layout/src/flexbox/Splitter.d.ts +0 -13
- package/types/vuu-layout/src/flexbox/flexbox-utils.d.ts +0 -12
- package/types/vuu-layout/src/flexbox/flexboxTypes.d.ts +0 -51
- package/types/vuu-layout/src/flexbox/index.d.ts +0 -4
- package/types/vuu-layout/src/flexbox/useResponsiveSizing.d.ts +0 -10
- package/types/vuu-layout/src/flexbox/useSplitterResizing.d.ts +0 -2
- package/types/vuu-layout/src/index.d.ts +0 -22
- package/types/vuu-layout/src/layout-action.d.ts +0 -22
- package/types/vuu-layout/src/layout-header/Header.d.ts +0 -13
- package/types/vuu-layout/src/layout-header/index.d.ts +0 -1
- package/types/vuu-layout/src/layout-persistence/LayoutPersistenceManager.d.ts +0 -53
- package/types/vuu-layout/src/layout-persistence/LocalLayoutPersistenceManager.d.ts +0 -18
- package/types/vuu-layout/src/layout-persistence/data.d.ts +0 -3
- package/types/vuu-layout/src/layout-persistence/index.d.ts +0 -4
- package/types/vuu-layout/src/layout-persistence/useLayoutContextMenuItems.d.ts +0 -8
- package/types/vuu-layout/src/layout-provider/LayoutProvider.d.ts +0 -15
- package/types/vuu-layout/src/layout-provider/LayoutProviderContext.d.ts +0 -9
- package/types/vuu-layout/src/layout-provider/index.d.ts +0 -2
- package/types/vuu-layout/src/layout-provider/useLayoutDragDrop.d.ts +0 -4
- package/types/vuu-layout/src/layout-reducer/flexUtils.d.ts +0 -22
- package/types/vuu-layout/src/layout-reducer/index.d.ts +0 -4
- package/types/vuu-layout/src/layout-reducer/insert-layout-element.d.ts +0 -8
- package/types/vuu-layout/src/layout-reducer/layout-reducer.d.ts +0 -3
- package/types/vuu-layout/src/layout-reducer/layoutTypes.d.ts +0 -168
- package/types/vuu-layout/src/layout-reducer/layoutUtils.d.ts +0 -31
- package/types/vuu-layout/src/layout-reducer/move-layout-element.d.ts +0 -3
- package/types/vuu-layout/src/layout-reducer/remove-layout-element.d.ts +0 -3
- package/types/vuu-layout/src/layout-reducer/replace-layout-element.d.ts +0 -6
- package/types/vuu-layout/src/layout-reducer/resize-flex-children.d.ts +0 -4
- package/types/vuu-layout/src/layout-reducer/wrap-layout-element.d.ts +0 -9
- package/types/vuu-layout/src/layout-view/View.d.ts +0 -11
- package/types/vuu-layout/src/layout-view/ViewContext.d.ts +0 -30
- package/types/vuu-layout/src/layout-view/index.d.ts +0 -4
- package/types/vuu-layout/src/layout-view/useView.d.ts +0 -21
- package/types/vuu-layout/src/layout-view/useViewActionDispatcher.d.ts +0 -9
- package/types/vuu-layout/src/layout-view/useViewResize.d.ts +0 -7
- package/types/vuu-layout/src/layout-view/viewTypes.d.ts +0 -21
- package/types/vuu-layout/src/measured-container/MeasuredContainer.d.ts +0 -9
- package/types/vuu-layout/src/measured-container/index.d.ts +0 -2
- package/types/vuu-layout/src/measured-container/useMeasuredContainer.d.ts +0 -22
- package/types/vuu-layout/src/measured-container/useResizeObserver.d.ts +0 -15
- package/types/vuu-layout/src/overflow-container/OverflowContainer.d.ts +0 -17
- package/types/vuu-layout/src/overflow-container/index.d.ts +0 -2
- package/types/vuu-layout/src/overflow-container/overflow-utils.d.ts +0 -49
- package/types/vuu-layout/src/overflow-container/useOverflowContainer.d.ts +0 -20
- package/types/vuu-layout/src/palette/Palette.d.ts +0 -22
- package/types/vuu-layout/src/palette/index.d.ts +0 -1
- package/types/vuu-layout/src/placeholder/Placeholder.d.ts +0 -12
- package/types/vuu-layout/src/placeholder/index.d.ts +0 -1
- package/types/vuu-layout/src/registry/ComponentRegistry.d.ts +0 -13
- package/types/vuu-layout/src/registry/index.d.ts +0 -1
- package/types/vuu-layout/src/responsive/breakpoints.d.ts +0 -4
- package/types/vuu-layout/src/responsive/index.d.ts +0 -3
- package/types/vuu-layout/src/responsive/use-breakpoints.d.ts +0 -7
- package/types/vuu-layout/src/responsive/useResizeObserver.d.ts +0 -13
- package/types/vuu-layout/src/responsive/utils.d.ts +0 -6
- package/types/vuu-layout/src/stack/Stack.d.ts +0 -4
- package/types/vuu-layout/src/stack/StackLayout.d.ts +0 -7
- package/types/vuu-layout/src/stack/index.d.ts +0 -3
- package/types/vuu-layout/src/stack/stackTypes.d.ts +0 -21
- package/types/vuu-layout/src/toolbar/Toolbar.d.ts +0 -19
- package/types/vuu-layout/src/toolbar/index.d.ts +0 -1
- package/types/vuu-layout/src/toolbar/toolbar-dom-utils.d.ts +0 -3
- package/types/vuu-layout/src/toolbar/useKeyboardNavigation.d.ts +0 -32
- package/types/vuu-layout/src/toolbar/useSelection.d.ts +0 -22
- package/types/vuu-layout/src/toolbar/useToolbar.d.ts +0 -28
- package/types/vuu-layout/src/tools/config-wrapper/ConfigWrapper.d.ts +0 -2
- package/types/vuu-layout/src/tools/config-wrapper/index.d.ts +0 -1
- package/types/vuu-layout/src/tools/devtools-box/layout-configurator.d.ts +0 -31
- package/types/vuu-layout/src/tools/devtools-tree/layout-tree-viewer.d.ts +0 -5
- package/types/vuu-layout/src/tools/index.d.ts +0 -3
- package/types/vuu-layout/src/use-persistent-state.d.ts +0 -11
- package/types/vuu-layout/src/utils/index.d.ts +0 -6
- package/types/vuu-layout/src/utils/pathUtils.d.ts +0 -31
- package/types/vuu-layout/src/utils/propUtils.d.ts +0 -5
- package/types/vuu-layout/src/utils/react-utils.d.ts +0 -4
- package/types/vuu-layout/src/utils/refUtils.d.ts +0 -2
- package/types/vuu-layout/src/utils/styleUtils.d.ts +0 -3
- package/types/vuu-layout/src/utils/typeOf.d.ts +0 -4
- package/types/vuu-table/src/table/ColumnResizer.d.ts +0 -8
- package/types/vuu-table/src/table/DragVisualizer.d.ts +0 -8
- package/types/vuu-table/src/table/RowBasedTable.d.ts +0 -4
- package/types/vuu-table/src/table/SortIndicator.d.ts +0 -7
- package/types/vuu-table/src/table/Table.d.ts +0 -9
- package/types/vuu-table/src/table/TableCell.d.ts +0 -4
- package/types/vuu-table/src/table/TableGroupCell.d.ts +0 -4
- package/types/vuu-table/src/table/TableGroupHeaderCell.d.ts +0 -13
- package/types/vuu-table/src/table/TableHeaderCell.d.ts +0 -11
- package/types/vuu-table/src/table/TableRow.d.ts +0 -16
- package/types/vuu-table/src/table/cell-renderers/index.d.ts +0 -1
- package/types/vuu-table/src/table/cell-renderers/json-cell/JsonCell.d.ts +0 -1
- package/types/vuu-table/src/table/cell-renderers/json-cell/index.d.ts +0 -1
- package/types/vuu-table/src/table/context-menu/buildContextMenuDescriptors.d.ts +0 -4
- package/types/vuu-table/src/table/context-menu/index.d.ts +0 -2
- package/types/vuu-table/src/table/context-menu/useTableContextMenu.d.ts +0 -16
- package/types/vuu-table/src/table/dataTableTypes.d.ts +0 -109
- package/types/vuu-table/src/table/filter-indicator.d.ts +0 -13
- package/types/vuu-table/src/table/index.d.ts +0 -10
- package/types/vuu-table/src/table/keyUtils.d.ts +0 -19
- package/types/vuu-table/src/table/useDataSource.d.ts +0 -41
- package/types/vuu-table/src/table/useDraggableColumn.d.ts +0 -9
- package/types/vuu-table/src/table/useKeyboardNavigation.d.ts +0 -22
- package/types/vuu-table/src/table/useMeasuredContainer.d.ts +0 -30
- package/types/vuu-table/src/table/useMeasuredSize.d.ts +0 -26
- package/types/vuu-table/src/table/useResizeObserver.d.ts +0 -15
- package/types/vuu-table/src/table/useSelection.d.ts +0 -9
- package/types/vuu-table/src/table/useTable.d.ts +0 -62
- package/types/vuu-table/src/table/useTableColumnResize.d.ts +0 -17
- package/types/vuu-table/src/table/useTableModel.d.ts +0 -80
- package/types/vuu-table/src/table/useTableScroll.d.ts +0 -29
- package/types/vuu-table/src/table/useVirtualViewport.d.ts +0 -17
- package/types/vuu-table/src/table-next/TableNext.d.ts +0 -4
- package/types/vuu-table/src/table-next/cell-renderers/dropdown-cell/DropdownCell.d.ts +0 -4
- package/types/vuu-table/src/table-next/cell-renderers/index.d.ts +0 -2
- package/types/vuu-table/src/table-next/header-cell/GroupHeaderCell.d.ts +0 -9
- package/types/vuu-table/src/table-next/header-cell/GroupHeaderCellNext.d.ts +0 -9
- package/types/vuu-table/src/table-next/index.d.ts +0 -5
- package/types/vuu-table/src/table-next/useCell.d.ts +0 -6
- package/types/vuu-table/src/table-next/useCellEditing.d.ts +0 -7
- package/types/vuu-table/src/table-next/useTableContextMenu.d.ts +0 -8
- package/types/vuu-table/src/table-next/useTableNext.d.ts +0 -66
- /package/types/vuu-table/src/{table-next/cell-renderers → cell-renderers}/dropdown-cell/index.d.ts +0 -0
- /package/types/vuu-table/src/{table-next/cell-renderers → cell-renderers}/input-cell/index.d.ts +0 -0
- /package/types/vuu-table/src/{table-next/column-header-pill → column-header-pill}/index.d.ts +0 -0
- /package/types/vuu-table/src/{table-next/column-menu → column-menu}/index.d.ts +0 -0
- /package/types/vuu-table/src/{table-next/column-resizing → column-resizing}/ColumnResizer.d.ts +0 -0
- /package/types/vuu-table/src/{table-next/column-resizing → column-resizing}/index.d.ts +0 -0
- /package/types/vuu-table/src/{table-next/context-menu → context-menu}/buildContextMenuDescriptors.d.ts +0 -0
- /package/types/vuu-table/src/{table-next/moving-window.d.ts → moving-window.d.ts} +0 -0
- /package/types/vuu-table/src/{table-next/table-cell → table-cell}/index.d.ts +0 -0
- /package/types/vuu-table/src/{table-next/useInitialValue.d.ts → useInitialValue.d.ts} +0 -0
- /package/types/vuu-table/src/{table-next/useResizeObserver.d.ts → useResizeObserver.d.ts} +0 -0
- /package/types/vuu-table/src/{table-next/useTableScroll.d.ts → useTableScroll.d.ts} +0 -0
package/esm/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useCallback as bt,useRef as pr}from"react";import{jsx as fr}from"react/jsx-runtime";var uo=()=>{},dr="vuuColumnResizer",_e=({onDrag:e,onDragEnd:t=uo,onDragStart:o=uo})=>{let n=pr(0),r=bt(i=>{i.stopPropagation&&i.stopPropagation(),i.preventDefault&&i.preventDefault();let a=Math.round(i.clientX),c=a-n.current;n.current=a,c!==0&&e(i,c)},[e]),l=bt(i=>{window.removeEventListener("mouseup",l),window.removeEventListener("mousemove",r),t(i)},[t,r]),s=bt(i=>{o(i),n.current=Math.round(i.clientX),window.addEventListener("mouseup",l),window.addEventListener("mousemove",r),i.stopPropagation&&i.stopPropagation(),i.preventDefault&&i.preventDefault()},[o,r,l]);return fr("div",{className:dr,"data-align":"end",onMouseDown:s})};import{isNumericColumn as Cr}from"@vuu-ui/vuu-utils";var Je=e=>(t,o)=>{let n=[];if(e===void 0)return n;if(t==="header"||t==="column-menu")n.push(...br(o,e)),n.push(...vr(o,e)),n.push(...gr(o,e)),n.push(...hr(o)),n.push({action:"column-settings",icon:"cog",label:"Column Settings",options:o}),n.push({action:"table-settings",icon:"cog",label:"DataGrid Settings",options:o});else if(t==="filter"){let{column:r,filter:l}=o,s=(l==null?void 0:l.column)===(r==null?void 0:r.name);n.push({label:"Edit filter",action:"filter-edit",options:o}),n.push({label:"Remove filter",action:"filter-remove-column",options:o}),r&&!s&&n.push({label:"Remove all filters",action:"remove-filters",options:o})}return n};function br(e,{sort:{sortDefs:t}}){let{column:o}=e,n=[];if(o===void 0)return n;let r=t.length>0;return o.sorted==="A"?n.push({label:"Reverse Sort (DSC)",action:"sort-dsc",options:e}):o.sorted==="D"?n.push({label:"Reverse Sort (ASC)",action:"sort-asc",options:e}):typeof o.sorted=="number"?(o.sorted>0?n.push({label:"Reverse Sort (DSC)",action:"sort-add-dsc",options:e}):n.push({label:"Reverse Sort (ASC)",action:"sort-add-asc",options:e}),r&&Math.abs(o.sorted)<t.length&&n.push({label:"Remove from sort",action:"sort-remove",options:e}),n.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]})):r?(n.push({label:"Add to sort",children:[{label:"Ascending",action:"sort-add-asc",options:e},{label:"Descending",action:"sort-add-dsc",options:e}]}),n.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]})):n.push({label:"Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]}),n}function gr(e,t){let{column:o}=e;if(o===void 0||t.groupBy.length===0)return[];let{name:n,label:r=n}=o;return[{label:`Aggregate ${r}`,children:[{label:"Count",action:"agg-count",options:e},{label:"Distinct",action:"agg-distinct",options:e}].concat(Cr(o)?[{label:"Sum",action:"agg-sum",options:e},{label:"Avg",action:"agg-avg",options:e},{label:"High",action:"agg-high",options:e},{label:"Low",action:"agg-low",options:e}]:[])}]}var yt=(e,t)=>({label:`Pin ${t}`,action:`column-pin-${t}`,options:e}),gt=e=>yt(e,"left"),ht=e=>yt(e,"floating"),vt=e=>yt(e,"right");function hr(e){let{column:t}=e;if(t===void 0)return[];let{pin:o}=t,n=[{label:"Hide column",action:"column-hide",options:e},{label:"Remove column",action:"column-remove",options:e}];return o===void 0?n.push({label:"Pin column",children:[gt(e),ht(e),vt(e)]}):o==="left"?n.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[ht(e),vt(e)]}):o==="right"?n.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[gt(e),ht(e)]}):o==="floating"&&n.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[gt(e),vt(e)]}),n}function vr(e,{groupBy:t}){let{column:o}=e,n=[];if(o===void 0)return n;let{name:r,label:l=r}=o;return t.length===0?n.push({label:`Group by ${l}`,action:"group",options:e}):n.push({label:`Add ${l} to group by`,action:"group-add",options:e}),n}import{removeColumnFromFilter as yr}from"@vuu-ui/vuu-utils";import{addGroupColumn as mo,addSortColumn as po,AggregationType as Tr,setAggregations as ge,setSortColumn as fo}from"@vuu-ui/vuu-utils";var wr=(e,t)=>{if(e.filterStruct&&t){let[o,n]=yr(t,e.filterStruct);return{filter:n,filterStruct:o}}else return e},{Average:Dr,Count:Mr,Distinct:Rr,High:xr,Low:Pr,Sum:Hr}=Tr,Xe=({dataSource:e,onPersistentColumnOperation:t})=>n=>{let r=n.options;if(r.column&&e){let{column:l}=r;switch(n.menuId){case"sort-asc":return e.sort=fo(e.sort,l,"A"),!0;case"sort-dsc":return e.sort=fo(e.sort,l,"D"),!0;case"sort-add-asc":return e.sort=po(e.sort,l,"A"),!0;case"sort-add-dsc":return e.sort=po(e.sort,l,"D"),!0;case"group":return e.groupBy=mo(e.groupBy,l),!0;case"group-add":return e.groupBy=mo(e.groupBy,l),!0;case"column-hide":return t({type:"hideColumns",columns:[l]}),!0;case"column-remove":return e.columns=e.columns.filter(s=>s!==l.name),!0;case"filter-remove-column":return e.filter=wr(e.filter,l),!0;case"remove-filters":return e.filter={filter:""},!0;case"agg-avg":return e.aggregations=ge(e.aggregations,l,Dr),!0;case"agg-high":return e.aggregations=ge(e.aggregations,l,xr),!0;case"agg-low":return e.aggregations=ge(e.aggregations,l,Pr),!0;case"agg-count":return e.aggregations=ge(e.aggregations,l,Mr),!0;case"agg-distinct":return e.aggregations=ge(e.aggregations,l,Rr),!0;case"agg-sum":return e.aggregations=ge(e.aggregations,l,Hr),!0;case"column-pin-floating":return t({type:"pinColumn",column:l,pin:"floating"}),!0;case"column-pin-left":return t({type:"pinColumn",column:l,pin:"left"}),!0;case"column-pin-right":return t({type:"pinColumn",column:l,pin:"right"}),!0;case"column-unpin":return t({type:"pinColumn",column:l,pin:void 0}),!0;case"column-settings":return t({type:"columnSettings",column:l}),!0;case"table-settings":return t({type:"tableSettings"}),!0;default:}}return!1};import{ContextMenuProvider as ei}from"@vuu-ui/vuu-popups";import{Button as ti,useIdMemo as oi}from"@salt-ds/core";import{buildColumnMap as pl,getColumnStyle as dl,isGroupColumn as fl,metadataKeys as Cl,notHidden as bl,visibleColumnAtIndex as gl}from"@vuu-ui/vuu-utils";import{useCallback as ko,useMemo as No}from"react";import{isGroupColumn as ho,isJsonColumn as Wr,isJsonGroup as Br,metadataKeys as Ur,notHidden as _r,RowSelected as Jr}from"@vuu-ui/vuu-utils";import Xr from"classnames";import{memo as Qr,useCallback as vo}from"react";import{getColumnStyle as Er,metadataKeys as Sr}from"@vuu-ui/vuu-utils";import{EditableLabel as Ar}from"@vuu-ui/vuu-ui-controls";import Lr from"classnames";import{memo as Kr,useCallback as kr,useRef as Nr,useState as Co}from"react";import{jsx as Qe}from"react/jsx-runtime";var{KEY:bo}=Sr,Tt=Kr(({className:e,column:t,columnMap:o,onClick:n,row:r})=>{let l=Nr(null),{align:s,CellRenderer:i,key:a,pin:c,editable:u,resizing:p,valueFormatter:m}=t,[C,h]=Co(!1),v=m(r[a]),[T,x]=Co(v),g=()=>{var H;(H=l.current)==null||H.focus()},f=H=>{H.key==="Enter"&&h(!0)},M=kr(H=>{n==null||n(H,t)},[t,n]),D=()=>{h(!0)},w=(H="",y="",R=!0,S=!1)=>{var E;h(!1),S?x(H):y!==H&&x(y),R===!1&&((E=l.current)==null||E.focus())},d=Lr(e,{vuuAlignRight:s==="right",vuuPinFloating:c==="floating",vuuPinLeft:c==="left",vuuPinRight:c==="right","vuuTableCell-resizing":p})||void 0,b=Er(t);return u?Qe("div",{className:d,"data-editable":!0,role:"cell",style:b,onKeyDown:f,children:Qe(Ar,{editing:C,value:T,onChange:x,onMouseDownCapture:g,onEnterEditMode:D,onExitEditMode:w,onKeyDown:f,ref:l,tabIndex:0},"title")}):Qe("div",{className:d,role:"cell",style:b,onClick:M,children:i?Qe(i,{column:t,columnMap:o,row:r}):v})},zr);Tt.displayName="TableCell";function zr(e,t){return e.column===t.column&&e.onClick===t.onClick&&e.row[bo]===t.row[bo]&&e.row[e.column.key]===t.row[t.column.key]}import{getColumnStyle as Ir,getGroupValueAndOffset as Vr,metadataKeys as $r}from"@vuu-ui/vuu-utils";import{useCallback as Fr}from"react";import{jsx as wt,jsxs as Gr}from"react/jsx-runtime";var{IS_LEAF:Or}=$r,go=({column:e,onClick:t,row:o})=>{let{columns:n}=e,[r,l]=Vr(n,o),s=Fr(u=>{t==null||t(u,e)},[e,t]),i=Ir(e),a=o[Or],c=Array(l).fill(0).map((u,p)=>wt("span",{className:"vuuTableGroupCell-spacer"},p));return Gr("div",{className:"vuuTableGroupCell vuuPinLeft",onClick:a?void 0:s,role:"cell",style:i,children:[c,a?null:wt("span",{className:"vuuTableGroupCell-toggle","data-icon":"triangle-right"}),wt("span",{children:r})]})};import{jsx as To,jsxs as tl}from"react/jsx-runtime";var{IDX:Yr,IS_EXPANDED:Zr,SELECTED:jr}=Ur,{True:yo,First:qr,Last:el}=Jr,he="vuuTableRow",wo=Qr(function({columnMap:t,columns:o,offset:n,onClick:r,onToggleGroup:l,virtualColSpan:s=0,row:i}){let{[Yr]:a,[Zr]:c,[jr]:u}=i,p=Xr(he,{[`${he}-even`]:a%2===0,[`${he}-expanded`]:c,[`${he}-selected`]:u&yo,[`${he}-selectedStart`]:u&qr,[`${he}-selectedEnd`]:u&el}),m=vo(h=>{let v=h.shiftKey,T=h.ctrlKey||h.metaKey;r==null||r(i,v,T)},[r,i]),C=vo((h,v)=>{(ho(v)||Br(v,i))&&(h.stopPropagation(),l==null||l(i,v))},[l,i]);return tl("div",{"aria-selected":u&yo?!0:void 0,"aria-rowindex":a,className:p,onClick:m,role:"row",style:{transform:`translate3d(0px, ${n}px, 0px)`},children:[s>0?To("div",{role:"cell",style:{width:s}}):null,o.filter(_r).map(h=>{let v=ho(h),T=Wr(h);return To(v?go:Tt,{column:h,columnMap:t,onClick:v||T?C:void 0,row:i},h.name)})]})});import Ro from"classnames";import{useRef as ol}from"react";import{useCallback as Dt,useRef as Do}from"react";var Ye=({column:e,onResize:t,rootRef:o})=>{let n=Do(0),r=Do(!1),{name:l}=e,s=Dt(()=>{if(t&&o.current){console.log("handleResizeStart");let{width:c}=o.current.getBoundingClientRect();n.current=Math.round(c),r.current=!0,t==null||t("begin",l)}},[l,t,o]),i=Dt((c,u)=>{if(o.current&&t){let{width:p}=o.current.getBoundingClientRect(),m=Math.round(p)+u;m!==n.current&&m>0&&(t("resize",l,m),n.current=m)}},[l,t,o]),a=Dt(()=>{t&&(t("end",l,n.current),setTimeout(()=>{r.current=!1},100))},[l,t]);return{isResizing:r.current,onDrag:i,onDragStart:s,onDragEnd:a}};import{jsx as ce,jsxs as Po}from"react/jsx-runtime";var oe="vuuTable-groupHeaderCell",Mo=({column:e,onClick:t,...o})=>ce("span",{...o,className:`${oe}-close`,"data-icon":"close-circle",onClick:()=>t==null?void 0:t(e)}),nl=e=>{let{children:t,column:o,className:n}=e;return Po("div",{className:Ro(`${oe}-col`,n),role:"columnheader",children:[ce("span",{className:`${oe}-label`,children:o.name}),t]})},xo=({column:e,className:t,onRemoveColumn:o,onResize:n,...r})=>{let l=ol(null),{isResizing:s,...i}=Ye({column:e,onResize:n,rootRef:l}),a=Ro(oe,t,{vuuPinLeft:e.pin==="left",[`${oe}-right`]:e.align==="right",[`${oe}-resizing`]:e.resizing,[`${oe}-pending`]:e.groupConfirmed===!1}),{columns:c}=e;return ce("div",{className:a,ref:l,...r,children:Po("div",{className:`${oe}-inner`,children:[c.map(u=>ce(nl,{column:u,children:c.length>1?ce(Mo,{column:u,onClick:o}):null},u.key)),ce(Mo,{"data-align":"end",onClick:o}),e.resizeable!==!1?ce(_e,{...i}):null]})})};import cl from"classnames";import{useCallback as Mt,useRef as Lo}from"react";import Ho from"classnames";import{jsx as Ze,jsxs as rl}from"react/jsx-runtime";var Eo="vuuSortIndicator",So=({sorted:e})=>{if(!e)return null;let t=typeof e=="number"?e<0?"dsc":"asc":e==="A"?"asc":"dsc";return typeof e=="number"?rl("div",{className:Ho(Eo,"multi-col",t),children:[Ze("span",{"data-icon":`sorted-${t}`}),Ze("span",{className:"vuuSortPosition",children:Math.abs(e)})]}):Ze("div",{className:Ho(Eo,"single-col"),children:Ze("span",{"data-icon":`sorted-${t}`})})};import{useContextMenu as ul}from"@vuu-ui/vuu-popups";import{useContextMenu as ll}from"@vuu-ui/vuu-popups";import sl from"classnames";import{useCallback as il}from"react";import{jsx as al}from"react/jsx-runtime";var Ao=({column:e,filter:t})=>{let[o]=ll(),n=il(r=>{r.stopPropagation(),o(r,"filter",{column:e,filter:t})},[e,t,o]);return e.filter?al("div",{className:sl("vuuFilterIndicator"),"data-icon":"filter",onClick:n}):null};import{jsx as Ee,jsxs as ml}from"react/jsx-runtime";var He="vuuTable-headerCell",Ko=({column:e,className:t,onClick:o,onDragStart:n,onResize:r,...l})=>{let s=Lo(null),{isResizing:i,...a}=Ye({column:e,onResize:r,rootRef:s}),[c]=ul(),u=Lo(null),p=T=>{c(T,"header",{column:e})},m=Mt(T=>!i&&(o==null?void 0:o(T)),[i,o]),C=Mt(T=>{u.current=window.setTimeout(()=>{n==null||n(T),u.current=null},500)},[n]),h=Mt(()=>{u.current!==null&&(window.clearTimeout(u.current),u.current=null)},[]),v=cl(He,t,{vuuPinFloating:e.pin==="floating",vuuPinLeft:e.pin==="left",vuuPinRight:e.pin==="right",vuuEndPin:e.endPin,[`${He}-resizing`]:e.resizing,[`${He}-right`]:e.align==="right"});return Ee("div",{className:v,...l,onClick:m,onContextMenu:p,onMouseDown:C,onMouseUp:h,ref:s,children:ml("div",{className:`${He}-inner`,children:[Ee(Ao,{column:e}),Ee("div",{className:`${He}-label`,children:e.label}),Ee(So,{sorted:e.sorted}),e.resizeable!==!1?Ee(_e,{...a}):null]})})};import{jsx as ue,jsxs as zo}from"react/jsx-runtime";var Rt="vuuTable",{RENDER_IDX:hl}=Cl,Io=({columns:e,columnsWithinViewport:t,data:o,getRowOffset:n,headings:r,onColumnResize:l,onHeaderCellDragStart:s,onContextMenu:i,onRemoveColumnFromGroupBy:a,onRowClick:c,onSort:u,onToggleGroup:p,tableId:m,virtualColSpan:C=0,rowCount:h})=>{let v=ko(f=>{s==null||s(f)},[s]),T=No(()=>e.filter(bl),[e]),x=No(()=>pl(e),[e]),g=ko(f=>{var H;let D=f.target.closest(".vuuTable-headerCell"),w=parseInt((H=D==null?void 0:D.dataset.idx)!=null?H:"-1"),d=gl(e,w),b=f.shiftKey;d&&u(d,b)},[e,u]);return zo("div",{"aria-rowcount":h,className:`${Rt}-table`,role:"table",children:[zo("div",{className:`${Rt}-headers`,role:"rowGroup",children:[r.map((f,M)=>ue("div",{className:"vuuTable-heading",children:f.map(({label:D,width:w},d)=>ue("div",{className:"vuuTable-headingCell",style:{width:w},children:D},d))},M)),ue("div",{role:"row",children:T.map((f,M)=>{let D=dl(f);return fl(f)?ue(xo,{column:f,"data-idx":M,onRemoveColumn:a,onResize:l,role:"columnHeader",style:D},M):ue(Ko,{column:f,"data-idx":M,id:`${m}-${M}`,onClick:g,onDragStart:v,onResize:l,role:"columnHeader",style:D},M)})})]}),ue("div",{className:`${Rt}-body`,onContextMenu:i,role:"rowGroup",children:o==null?void 0:o.map(f=>ue(wo,{columnMap:x,columns:t,offset:n(f),onClick:c,virtualColSpan:C,onToggleGroup:p,row:f},f[hl]))})]})};import{useContextMenu as Bs}from"@vuu-ui/vuu-popups";import{applySort as Us,buildColumnMap as _s,isJsonGroup as Js,metadataKeys as Xs,moveItemDeprecated as Qs}from"@vuu-ui/vuu-utils";import{useCallback as J,useEffect as Cn,useMemo as Ys,useRef as $t,useState as Zs}from"react";import{isVuuFeatureAction as vl,isVuuFeatureInvocation as yl}from"@vuu-ui/vuu-data-react";import{getFullRange as xt,metadataKeys as Tl,WindowRange as wl}from"@vuu-ui/vuu-utils";import{useCallback as ve,useEffect as je,useMemo as Dl,useRef as Se,useState as Ml}from"react";var{SELECTED:Ae}=Tl;function Vo({dataSource:e,onConfigChange:t,onFeatureEnabled:o,onFeatureInvocation:n,onSizeChange:r,onSubscribed:l,range:s={from:0,to:0},renderBufferSize:i=0,viewportRowCount:a}){let[,c]=Ml(null),u=Se(!0),p=Se(!1),m=Se({from:0,to:0}),C=Se(null),h=Se([]),v=Dl(()=>new Pt(xt(s)),[]),T=ve(w=>{for(let d of w)v.add(d);h.current=v.data,p.current=!0},[v]),x=ve(w=>{w.type==="subscribed"?l==null||l(w):w.type==="viewport-update"?(typeof w.size=="number"&&(r==null||r(w.size),v.setRowCount(w.size)),w.rows?T(w.rows):typeof w.size=="number"&&(h.current=v.data,p.current=!0)):vl(w)?o==null||o(w):yl(w)?n==null||n(w):console.log(`useDataSource unexpected message ${w.type}`)},[v,o,n,r,l,T]);je(()=>()=>{C.current&&(cancelAnimationFrame(C.current),C.current=null),u.current=!1},[]);let g=ve(()=>{u.current&&(p.current&&(c({}),p.current=!1),C.current=requestAnimationFrame(g))},[c]);je(()=>{C.current=requestAnimationFrame(g)},[g]);let f=ve(w=>{let{from:d}=e.range,b={from:d,to:d+w},H=xt(b,i);v.setRange(H),e.range=m.current=H,e.emit("range",b)},[e,v,i]),M=ve(w=>{let d=xt(w,i);v.setRange(d),e.range=m.current=d,e.emit("range",w)},[e,v,i]),D=ve(()=>v.getSelectedRows(),[v]);return je(()=>{e==null||e.subscribe({range:m.current},x)},[e,x,t]),je(()=>{console.log(`adjust range as rowCount chnaged ${a}`),f(a)},[f,a]),{data:h.current,getSelectedRows:D,range:m.current,setRange:M,dataSource:e}}var Pt=class{constructor({from:t,to:o}){this.rowCount=0;this.setRowCount=t=>{t<this.data.length&&(this.data.length=t),this.rowCount=t};this.range=new wl(t,o),this.data=new Array(o-t),this.rowCount=0}add(t){var n;let[o]=t;if(this.isWithinRange(o)){let r=o-this.range.from;this.data[r]=t;let l=t[Ae],s=(n=this.data[r-1])==null?void 0:n[Ae];s===0&&l?this.data[r-1][Ae]=2:s===2&&!l&&(this.data[r-1][Ae]=0)}}getAtIndex(t){return this.range.isWithin(t)&&this.data[t-this.range.from]!=null?this.data[t-this.range.from]:void 0}isWithinRange(t){return this.range.isWithin(t)}setRange({from:t,to:o}){if(t!==this.range.from||o!==this.range.to){let[n,r]=this.range.overlap(t,o),l=new Array(Math.max(0,o-t));for(let s=n;s<r;s++){let i=this.getAtIndex(s);if(i){let a=s-t;l[a]=i}}this.data=l,this.range.from=t,this.range.to=o}}getSelectedRows(){return this.data.filter(t=>t[Ae]!==0)}};import{useDragDropNext as Rl}from"@vuu-ui/vuu-ui-controls";import{useCallback as $o,useRef as Fo}from"react";var Oo=({onDrop:e})=>{let t=Fo(),o=Fo(null),n=$o(()=>{console.log("handleDropSettle"),t.current=void 0,o.current=null},[]),{draggable:r,draggedItemIndex:l,onMouseDown:s}=Rl({allowDragDrop:!0,draggableClassName:"vuuTable-headerCell",orientation:"horizontal",containerRef:o,itemQuery:".vuuTable-headerCell",onDrop:e,onDropSettle:n}),i=$o(a=>{let{clientX:c,clientY:u}=a;console.log("useDraggableColumn handleHeaderCellDragStart means mouseDown fired on a column in RowBasedTable");let m=a.target.closest(".vuuTable-headerCell");o.current=m==null?void 0:m.closest("[role='row']");let{dataset:{idx:C="-1"}}=m;t.current={clientX:c,clientY:u,idx:C},s==null||s(a)},[s]);return{draggable:r,draggedItemIndex:l,onHeaderCellDragStart:i}};import{withinRange as Ll}from"@vuu-ui/vuu-utils";import{useCallback as ee,useEffect as Kl,useLayoutEffect as kl,useMemo as Nl,useRef as zt}from"react";function xl(e,...t){let o=new Set(e);for(let n of t)for(let r of n)o.add(r);return o}var Ht="ArrowUp",Et="ArrowDown",St="ArrowLeft",At="ArrowRight";var Lt="Home",Kt="End",kt="PageUp",Nt="PageDown";var Pl=new Set(["Enter","Delete"," "]),Hl=new Set(["Tab"]),El=new Set(["ArrowRight","ArrowLeft"]),Go=new Set([Lt,Kt,kt,Nt,Et,St,At,Ht]),Sl=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),rp=xl(Pl,Go,El,Sl,Hl);var Al=["Home","End","PageUp","PageDown"],Wo=e=>Al.includes(e),Bo=e=>Go.has(e);var Uo=e=>`.vuuTable-headers .vuuTable-headerCell:nth-child(${e+1})`,zl=(e,t)=>`.vuuTable-body > [aria-rowindex='${e}'] > [role='cell']:nth-child(${t+1})`,Il=[-1,-1];function Vl(e,[t,o],n,r){return e===Ht?t>-1?[t-1,o]:[t,o]:e===Et?t===-1?[0,o]:t===r-1?[t,o]:[t+1,o]:e===At?o<n-1?[t,o+1]:[t,o]:e===St?o>0?[t,o-1]:[t,o]:[t,o]}var _o=({columnCount:e=0,containerRef:t,disableHighlightOnFocus:o,data:n,requestScroll:r,rowCount:l=0,viewportRange:s})=>{var H;let{from:i,to:a}=s,c=zt([-1,-1]),u=zt(),p=zt([-1,0]),m=ee(([y,R])=>{var E;let S=y===-1?Uo(R):zl(y,R);return(E=t.current)==null?void 0:E.querySelector(S)},[t]),C=y=>y==null?void 0:y.closest("[role='columnHeader'],[role='cell']"),h=y=>{var R,S;if(y.role==="columnHeader")return[-1,parseInt((R=y.dataset.idx)!=null?R:"-1",10)];{let E=y.closest("[role='row']");if(E){let L=parseInt((S=E.ariaRowIndex)!=null?S:"-1",10),F=Array.from(E.childNodes).indexOf(y);return[L,F]}}return Il},v=ee(y=>{var R;if(t.current){let S=m(y);S?(S!==u.current&&((R=u.current)==null||R.setAttribute("tabindex",""),u.current=S,S.setAttribute("tabindex","0")),S.focus()):Ll(y[0],s)||(u.current=void 0,r==null||r({type:"scroll-page",direction:"up"}))}},[t,m,r,s]),T=ee((y,R,S=!1)=>{let E=[y,R];p.current=E,v(E),S&&(c.current=E)},[v]),x=ee(()=>{var y;(y=u.current)==null||y.setAttribute("tabindex",""),u.current=void 0},[]),g=ee(async(y,R)=>{switch(y){case Nt:r==null||r({type:"scroll-page",direction:"down"});break;case kt:r==null||r({type:"scroll-page",direction:"up"});break;case Lt:r==null||r({type:"scroll-end",direction:"home"});break;case Kt:r==null||r({type:"scroll-end",direction:"end"});break}return R},[r]),f=ee(()=>{var y;if(o!==!0&&(y=t.current)!=null&&y.contains(document.activeElement)){let R=C(document.activeElement);R&&(c.current=h(R))}},[o,t]),M=ee(async y=>{let[R,S]=Wo(y)?await g(y,p.current):Vl(y,p.current,e,l),[E,L]=p.current;(R!==E||S!==L)&&T(R,S,!0)},[e,g,l,T]),D=ee(y=>{n.length>0&&Bo(y.key)&&(y.preventDefault(),y.stopPropagation(),M(y.key))},[n,M]),w=ee(y=>{let R=y.target,S=C(R);if(S){let[E,L]=h(S);T(E,L)}},[T]),d=Nl(()=>({onClick:w,onFocus:f,onKeyDown:D}),[w,f,D]);kl(()=>{let{current:y}=p,R=y[0]>=i&&y[0]<=a;u.current&&!R?x():!u.current&&R&&v(y)},[v,i,a,x]);let b=((H=t.current)==null?void 0:H.firstChild)!=null;return Kl(()=>{var y;if(b&&u.current===void 0){let R=(y=t.current)==null?void 0:y.querySelector(Uo(0));R&&(R.setAttribute("tabindex","0"),u.current=R)}},[t,b]),d};import{isValidNumber as ne}from"@vuu-ui/vuu-utils";import{useCallback as Ol,useMemo as Gl,useRef as Wl,useState as Bl}from"react";import{useCallback as $l,useEffect as Jo,useRef as Fl}from"react";var me=new Map,Qo=(e,t,o)=>{switch(o){case"height":return t.height;case"clientHeight":return e.clientHeight;case"clientWidth":return e.clientWidth;case"contentHeight":return t.contentHeight;case"contentWidth":return t.contentWidth;case"scrollHeight":return Math.ceil(e.scrollHeight);case"scrollWidth":return Math.ceil(e.scrollWidth);case"width":return t.width;default:return 0}},Xo=new ResizeObserver(e=>{for(let t of e){let{target:o,borderBoxSize:n,contentBoxSize:r}=t,l=me.get(o);if(l){let[{blockSize:s,inlineSize:i}]=n,[{blockSize:a,inlineSize:c}]=r,{onResize:u,measurements:p}=l,m=!1;for(let[C,h]of Object.entries(p)){let v=Qo(o,{height:s,width:i,contentHeight:a,contentWidth:c},C);v!==h&&(m=!0,p[C]=v)}m&&u&&u(p)}}});function Yo(e,t,o,n=!1){let r=Fl(t),l=$l(s=>{let{width:i,height:a}=s.getBoundingClientRect(),{clientWidth:c,clientHeight:u}=s;return r.current.reduce((p,m)=>(p[m]=Qo(s,{width:i,height:a,contentHeight:u,contentWidth:c},m),p),{})},[]);Jo(()=>{let s=e.current;async function i(){me.set(s,{measurements:{}}),await document.fonts.ready;let a=me.get(s);if(a){let c=l(s);a.measurements=c,Xo.observe(s),n&&o(c)}else console.log("%cuseResizeObserver an target expected to be under observation wa snot found. This warrants investigation","font-weight:bold; color:red;")}if(s){if(me.has(s))throw Error("useResizeObserver attemping to observe same element twice");i()}return()=>{s&&me.has(s)&&(Xo.unobserve(s),me.delete(s))}},[l,e]),Jo(()=>{let s=e.current,i=me.get(s);if(i){if(r.current!==t){r.current=t;let a=l(s);i.measurements=a}i.onResize=o}},[t,l,e,o])}var Ul=["clientHeight","clientWidth"],Zo=e=>Number.isFinite(e),_l={height:"100%",width:"100%"},Jl=(e,t)=>ne(e)&&ne(t)?{height:`${e}px`,width:`${t}px`}:_l,Xl=(e,t)=>{if(ne(e)&&ne(t))return{height:e,width:t}},jo=({defaultHeight:e=0,defaultWidth:t=0,height:o,width:n})=>{let r=Wl(null),[l,s]=Bl({css:Jl(o,n),inner:Xl(o,n),outer:{height:o!=null?o:"100%",width:n!=null?n:"100%"}});Gl(()=>{s(a=>{let{inner:c,outer:u}=a;if(ne(o)&&ne(n)&&c&&u){let{height:p,width:m}=c,{height:C,width:h}=u;if(C!==o||h!==n){let v=ne(C)?C-p:0,T=ne(h)?h-m:0;return{...a,outer:{height:o,width:n},inner:{height:o-v,width:n-T}}}}return a})},[o,n]);let i=Ol(({clientWidth:a,clientHeight:c})=>{s(u=>{let{css:p,inner:m,outer:C}=u;return Zo(c)&&Zo(a)&&(a!==(m==null?void 0:m.width)||c!==(m==null?void 0:m.height))?{css:p,outer:C,inner:{width:Math.floor(a)||t,height:Math.floor(c)||e}}:u})},[e,t]);return Yo(r,Ul,i,!0),{containerRef:r,cssSize:l.css,outerSize:l.outer,innerSize:l.inner}};import{deselectItem as Ql,isRowSelected as Yl,metadataKeys as Zl,selectItem as jl}from"@vuu-ui/vuu-utils";import{useCallback as ql,useRef as qo}from"react";var{IDX:es}=Zl,ts=[],qe=({selectionModel:e,onSelect:t,onSelectionChange:o})=>{let n=qo(-1),r=qo(ts);return ql((s,i,a)=>{let{[es]:c}=s,{current:u}=n,{current:p}=r,C=(Yl(s)?Ql:jl)(e,p,c,i,a,u);r.current=C,n.current=c,t==null||t(s),o==null||o(C)},[t,o,e])};import{applyFilterToColumns as os,applyGroupByToColumns as ns,applySortToColumns as rs,findColumn as ls,getCellRenderer as ss,getColumnName as is,getTableHeadings as as,getValueFormatter as cs,isFilteredColumn as us,isGroupColumn as ms,isPinned as ps,isTypeDescriptor as ds,metadataKeys as fs,updateColumn as en,sortPinnedColumns as tn,stripFilterFromColumns as Cs,moveItemDeprecated as bs,getDefaultAlignment as on,isCalculatedColumn as gs,getCalculatedColumnName as hs}from"@vuu-ui/vuu-utils";import{useReducer as vs}from"react";var ys=100,nn=fs.count,Ts=({serverDataType:e})=>e===void 0,ws=e=>{var t;if(ds(e.type))return ss((t=e.type)==null?void 0:t.renderer)},rn=(e,t)=>{if(e.serverDataType)return e.serverDataType;if(t){let o=t.columns.find(n=>n.name===e.name);if(o)return o.serverDataType}return"string"},Sp=e=>e.type==="columnSettings",Ap=e=>e.type==="tableSettings",Ds=(e,t)=>{switch(t.type){case"init":return sn(t);case"moveColumn":return xs(e,t);case"resizeColumn":return Es(e,t);case"setTableSchema":return Ss(e,t);case"hideColumns":return Ps(e,t);case"showColumns":return Hs(e,t);case"pinColumn":return As(e,t);case"updateColumnProp":return ye(e,t);case"tableConfig":return an(e,t);default:return console.log(`unhandled action ${t.type}`),e}},ln=(e,t)=>{let[o,n]=vs(Ds,{tableConfig:e,dataSourceConfig:t},sn);return{columns:o.columns,dispatchColumnAction:n,headings:o.headings}};function sn({dataSourceConfig:e,tableConfig:t}){let o=t.columns.map(It(t)),n=o.some(ps)?tn(o):o,r={columns:n,headings:as(n)};if(e){let{columns:l,...s}=e;return an(r,{type:"tableConfig",...s})}else return r}var Ms=e=>gs(e.name)?hs(e):e.name,Rs=(e,t)=>t==="uppercase"?e.toUpperCase():t==="capitalize"?e[0].toUpperCase()+e.slice(1).toLowerCase():e,It=e=>(t,o)=>{let n=rn(t,e.tableSchema),{columnDefaultWidth:r=ys,columnFormatHeader:l}=e,{align:s=on(n),key:i,name:a,label:c=Ms(t),width:u=r,...p}=t,m={...p,align:s,CellRenderer:ws(t),label:Rs(c,l),key:i!=null?i:o+nn,name:a,originalIdx:o,serverDataType:n,valueFormatter:cs(t),width:u};return ms(m)&&(m.columns=m.columns.map(C=>It(e)(C,C.key))),m};function xs(e,{column:t,moveBy:o,moveTo:n}){let{columns:r}=e;if(typeof o=="number"){let l=r.indexOf(t),s=r.slice(),[i]=s.splice(l,1);return s.splice(l+o,0,i),{...e,columns:s}}else if(typeof n=="number")return{...e,columns:bs(r,t,n)};return e}function Ps(e,{columns:t}){return t.some(o=>o.hidden!==!0)?t.reduce((o,n)=>n.hidden!==!0?ye(o,{type:"updateColumnProp",column:n,hidden:!0}):o,e):e}function Hs(e,{columns:t}){return t.some(o=>o.hidden)?t.reduce((o,n)=>n.hidden?ye(o,{type:"updateColumnProp",column:n,hidden:!1}):o,e):e}function Es(e,{column:t,phase:o,width:n}){let r="updateColumnProp",l=o!=="end";switch(o){case"begin":return ye(e,{type:r,column:t,resizing:l});case"end":return ye(e,{type:r,column:t,resizing:l,width:n});case"resize":return ye(e,{type:r,column:t,width:n});default:throw Error(`useTableModel.resizeColumn, invalid resizePhase ${o}`)}}function Ss(e,{tableSchema:t}){let{columns:o}=e;if(o.some(Ts)){let n=o.map(r=>{var s;let l=rn(r,t);return{...r,align:(s=r.align)!=null?s:on(l),serverDataType:l}});return{...e,columns:n,tableSchema:t}}else return{...e,tableSchema:t}}function As(e,t){let{columns:o}=e,{column:n,pin:r}=t;return o=en(o,n.name,{pin:r}),o=tn(o),console.log({withPins:o}),{...e,columns:o}}function ye(e,t){let{columns:o}=e,{align:n,column:r,hidden:l,label:s,resizing:i,width:a}=t,c={};return(n==="left"||n==="right")&&(c.align=n),typeof s=="string"&&(c.label=s),typeof i=="boolean"&&(c.resizing=i),typeof l=="boolean"&&(c.hidden=l),typeof a=="number"&&(c.width=a),o=en(o,r.name,c),{...e,columns:o}}function an(e,{columns:t,confirmed:o,filter:n,groupBy:r,sort:l}){let s=t&&t.length>0,i=r!==void 0,a=typeof(n==null?void 0:n.filter)=="string",c=l&&l.sortDefs.length>0,u=e;return s&&(u={...e,columns:t.map((p,m)=>{let C=is(p),h=m+nn,v=ls(u.columns,C);return v?v.key===h?v:{...v,key:h}:It(e)({name:p},m)})}),i&&(u={...e,columns:ns(u.columns,r,o)}),c&&(u={...e,columns:rs(u.columns,l)}),a?u={...e,columns:os(u.columns,n)}:u.columns.some(us)&&(u={...e,columns:Cs(u.columns)}),u}import{useCallback as re,useRef as Le}from"react";var cn=e=>{let{scrollLeft:t,scrollTop:o}=e,{clientHeight:n,clientWidth:r,scrollHeight:l,scrollWidth:s}=e,i=t/(s-r),a=o/(l-n);return[i,a]},Ls=e=>{let{clientHeight:t,clientWidth:o,scrollHeight:n,scrollWidth:r}=e;return[r-o,n-t]},un=({onAttach:e,onDetach:t})=>{let o=Le(null);return re(r=>{if(r)o.current=r,e==null||e(r);else if(o.current){let{current:l}=o;o.current=r,t==null||t(l)}},[e,t])},mn=({onHorizontalScroll:e,onVerticalScroll:t,viewport:o})=>{let n=Le(!1),r=Le({scrollTop:0,scrollLeft:0}),l=Le(null),s=Le(null),{maxScrollContainerScrollHorizontal:i,maxScrollContainerScrollVertical:a}=o,c=re(()=>{let{current:g}=s,{current:f}=l,{current:M}=n;if(M)n.current=!1;else if(g&&f){let[D,w]=cn(f),[d,b]=Ls(g),H=Math.round(D*d),y=Math.round(w*b);console.log(`pctScrollTop ${w}, maxScrollTop ${b} rootScrollTop ${y}`),g.scrollTo({left:H,top:y,behavior:"auto"})}},[]),u=re(()=>{let{current:g}=s,{current:f}=l,{current:M}=r;if(g&&f){let{scrollLeft:D,scrollTop:w}=g,[d,b]=cn(g);n.current=!0,f.scrollLeft=Math.round(d*i),f.scrollTop=Math.round(b*a),M.scrollTop!==w&&(M.scrollTop=w,t==null||t(w,b)),M.scrollLeft!==D&&(M.scrollLeft=D,e==null||e(D))}},[i,a,e,t]),p=re(g=>{l.current=g,g.addEventListener("scroll",c,{passive:!0})},[c]),m=re(g=>{l.current=null,g.removeEventListener("scroll",c)},[c]),C=re(g=>{s.current=g,g.addEventListener("scroll",u,{passive:!0})},[u]),h=re(g=>{s.current=null,g.removeEventListener("scroll",u)},[u]),v=un({onAttach:C,onDetach:h}),T=un({onAttach:p,onDetach:m}),x=re(g=>{let{current:f}=s;if(f){if(n.current=!1,g.type==="scroll-page"){let{clientHeight:M,scrollLeft:D,scrollTop:w}=f,{direction:d}=g,b=d==="down"?M:-M,H=Math.min(Math.max(0,w+b),a);f.scrollTo({top:H,left:D,behavior:"auto"})}else if(g.type==="scroll-end"){let{direction:M}=g,D=M==="end"?a:0;f.scrollTo({top:D,left:f.scrollLeft,behavior:"auto"})}}},[a]);return{scrollbarContainerRef:T,contentContainerRef:v,requestScroll:x}};import{useCallback as Ks,useMemo as et,useRef as ks}from"react";import{actualRowPositioning as Ns,virtualRowPositioning as zs}from"@vuu-ui/vuu-utils";var Is=15e5,Vs={contentHeight:0,contentWidth:0,getRowAtPosition:()=>-1,getRowOffset:()=>-1,horizontalScrollbarHeight:0,maxScrollContainerScrollHorizontal:0,maxScrollContainerScrollVertical:0,pinnedWidthLeft:0,pinnedWidthRight:0,rowCount:0,setPctScrollTop:()=>{},totalHeaderHeight:0,verticalScrollbarWidth:0,viewportBodyHeight:0},$s=e=>{let t=0,o=0,n=0;for(let r of e){let{hidden:l,pin:s,width:i}=r,a=l?0:i;s==="left"?t+=a:s==="right"?o+=a:n+=a}return{pinnedWidthLeft:t+4,pinnedWidthRight:o+4,unpinnedWidth:n}},tt=({columns:e,headerHeight:t,headings:o,rowCount:n,rowHeight:r,size:l})=>{let s=ks(0),a=Math.min(n,Is)*r,u=n*r-a,{pinnedWidthLeft:p,pinnedWidthRight:m,unpinnedWidth:C}=et(()=>$s(e),[e]),[h,v]=et(()=>Ns(r),[r]),[T,x]=et(()=>u?zs(r,u,s):[h,v],[v,h,u,r]),g=Ks(f=>{s.current=f},[]);return et(()=>{var f;if(l){let M=o.length,D=15,w=p+C+m,d=w>l.width?D:0,b=t*(1+M),H=a-(((f=l==null?void 0:l.height)!=null?f:0)-d)+b,y=w-l.width+p,R=(l.height-t)/r,S=Number.isInteger(R)?R+1:Math.ceil(R),E=l.height-b,L=a>E?D:0;return{contentHeight:a,getRowAtPosition:x,getRowOffset:T,horizontalScrollbarHeight:d,maxScrollContainerScrollHorizontal:y,maxScrollContainerScrollVertical:H,pinnedWidthLeft:p,pinnedWidthRight:m,rowCount:S,contentWidth:w,setPctScrollTop:g,totalHeaderHeight:b,verticalScrollbarWidth:L,viewportBodyHeight:E}}else return Vs},[l,o.length,p,C,m,a,t,r,x,T,g])};import{getColumnsInViewport as pn,itemsChanged as Fs}from"@vuu-ui/vuu-utils";import{useCallback as dn,useEffect as Os,useMemo as Gs,useRef as Vt,useState as Ws}from"react";var fn=({columns:e,getRowAtPosition:t,setRange:o,viewportMeasurements:n})=>{let r=Vt(-1),{rowCount:l,contentWidth:s,maxScrollContainerScrollHorizontal:i}=n,a=s-i,c=Vt(0),[u,p]=Gs(()=>pn(e,c.current,c.current+a),[a,e]),m=Vt(p);Os(()=>{h(u)},[u]);let[C,h]=Ws(u),v=dn(x=>{c.current=x;let[g,f]=pn(e,x,x+a);Fs(C,g)&&(m.current=f,h(g))},[a,e,C]),T=dn(x=>{let g=t(x);g!==r.current&&(r.current=g,console.log("setRange from handleVerticalScroll"),o({from:g,to:g+l}))},[t,o,l]);return{columnsWithinViewport:C,onHorizontalScroll:v,onVerticalScroll:T,virtualColSpan:m.current}};var js=[],{KEY:qs,IS_EXPANDED:bn,IS_LEAF:gn}=Xs,hn=({config:e,dataSource:t,headerHeight:o,onConfigChange:n,onFeatureEnabled:r,onFeatureInvocation:l,onSelectionChange:s,renderBufferSize:i=0,rowHeight:a,selectionModel:c,...u})=>{var We,Be;let[p,m]=Zs(t.size),C=$t(!1),h=$t();if(h.current=t,t===void 0)throw Error("no data source provided to Vuu Table");let v=jo(u),T=J(A=>{m(A)},[]),{columns:x,dispatchColumnAction:g,headings:f}=ln(e,t.config),{getRowAtPosition:M,getRowOffset:D,setPctScrollTop:w,...d}=tt({columns:x,headerHeight:o,headings:f,rowCount:p,rowHeight:a,size:v.innerSize}),b=J(({tableSchema:A})=>{A?(C.current=!0,g({type:"setTableSchema",tableSchema:A})):console.log("usbscription message with no schema")},[g]),H=J(A=>{t.select(A),s==null||s(A)},[t,s]),y=qe({onSelectionChange:H,selectionModel:c}),{data:R,getSelectedRows:S,range:E,setRange:L}=Vo({dataSource:t,onFeatureEnabled:r,onFeatureInvocation:l,onSubscribed:b,onSizeChange:T,renderBufferSize:i,viewportRowCount:d.rowCount}),F=$t();F.current=R;let ae=J(A=>{C.current=!0,console.log("onPersistentColumnOperation, dispatchColumnAction",{action:A}),g(A)},[g]),De=Xe({dataSource:t,onPersistentColumnOperation:ae}),Ve=J((A,N=!1,$)=>{t&&(t.sort=Us(t.sort,A,N,$))},[t]),$e=J((A,N,$)=>{let z=x.find(U=>U.name===N);if(z)A==="end"&&(C.current=!0),g({type:"resizeColumn",phase:A,column:z,width:$});else throw Error(`useDataTable.handleColumnResize, column ${N} not found`)},[x,g]),B=J((A,N)=>{let $=Js(N,A),z=A[qs];if(A[bn]){if(t.closeTreeNode(z,!0),$){let U=x.indexOf(N);t.getRowsAtDepth(U+1).some(_=>_[bn]||_[gn])||g({type:"hideColumns",columns:x.slice(U+2)})}}else if(t.openTreeNode(z),$){let U=t.getChildRows(z),Q=x.indexOf(N)+1,_=[x[Q]];U.some(Z=>Z[gn])&&_.push(x[Q+1]),_.some(Z=>Z.hidden)&&g({type:"showColumns",columns:_})}},[x,t,g]),{onVerticalScroll:Ce,onHorizontalScroll:be,columnsWithinViewport:X,virtualColSpan:O}=fn({columns:x,getRowAtPosition:M,setRange:L,viewportMeasurements:d}),Me=J((A,N)=>{w(N),Ce(A)},[Ce,w]),{requestScroll:Re,...xe}=mn({onHorizontalScroll:be,onVerticalScroll:Me,viewport:d,viewportHeight:((Be=(We=v.innerSize)==null?void 0:We.height)!=null?Be:0)-o}),V=_o({columnCount:x.length,containerRef:v.containerRef,data:R,requestScroll:Re,rowCount:t==null?void 0:t.size,viewportRange:E}),Y=J(A=>{A?t&&t.groupBy.includes(A.name)&&(t.groupBy=t.groupBy.filter(N=>N!==A.name)):t.groupBy=[]},[t]),Fe=J((A,N)=>{let $=t.columns[A],z=Qs(t.columns,$,N);z!==t.columns&&(t.columns=z,g({type:"tableConfig",columns:z}))},[t,g]),at=Oo({onDrop:Fe});Cn(()=>{h.current&&(C.current=!0,g({type:"init",tableConfig:e,dataSourceConfig:h.current.config}))},[e,g]),Cn(()=>{t.on("config",(A,N)=>{C.current=!0,g({type:"tableConfig",...A,confirmed:N})})},[t,g]),Ys(()=>{C.current&&(n==null||n({...e,columns:x}),C.current=!1)},[x,e,n]);let[Oe]=Bs(),Ge=J(A=>{var _;let{current:N}=F,{current:$}=h,z=A.target,U=z==null?void 0:z.closest("div[role='cell']"),Q=z==null?void 0:z.closest(".vuuTableRow");if(U&&Q&&N&&$){let{columns:Z,selectedRowsCount:ct}=$,ut=_s(Z),mt=parseInt((_=Q.ariaRowIndex)!=null?_:"-1"),pt=Array.from(Q.childNodes).indexOf(U),dt=N.find(([ft])=>ft===mt),Ue=Z[pt];Oe(A,"grid",{columnMap:ut,columnName:Ue,row:dt,selectedRows:ct===0?js:S(),viewport:t==null?void 0:t.viewport})}},[t==null?void 0:t.viewport,S,Oe]);return{columns:x,columnsWithinViewport:X,containerMeasurements:v,containerProps:V,data:R,dispatchColumnAction:g,getRowOffset:D,handleContextMenuAction:De,headings:f,onColumnResize:$e,onContextMenu:Ge,onRemoveColumnFromGroupBy:Y,onRowClick:y,onSort:Ve,onToggleGroup:B,virtualColSpan:O,scrollProps:xe,rowCount:p,viewportMeasurements:d,...at}};import ni from"classnames";import{isDataLoading as ri}from"@vuu-ui/vuu-utils";import{jsx as Ke,jsxs as vn}from"react/jsx-runtime";var pe="vuuTable",Td=({allowConfigEditing:e=!1,className:t,config:o,dataSource:n,headerHeight:r=25,height:l,id:s,onConfigChange:i,onFeatureEnabled:a,onFeatureInvocation:c,onSelect:u,onSelectionChange:p,onShowConfigEditor:m,renderBufferSize:C=0,rowHeight:h=20,selectionModel:v="extended",style:T,width:x,...g})=>{let f=oi(s),{containerMeasurements:{containerRef:M,innerSize:D,outerSize:w},containerProps:d,dispatchColumnAction:b,draggable:H,draggedItemIndex:y,handleContextMenuAction:R,scrollProps:S,viewportMeasurements:E,...L}=hn({config:o,dataSource:n,renderBufferSize:C,headerHeight:r,height:l,onConfigChange:i,onFeatureEnabled:a,onFeatureInvocation:c,onSelectionChange:p,rowHeight:h,selectionModel:v,width:x});console.log({tableProps:L});let F={...w,"--content-height":`${E.contentHeight}px`,"--horizontal-scrollbar-height":`${E.horizontalScrollbarHeight}px`,"--content-width":`${E.contentWidth}px`,"--pinned-width-left":`${E.pinnedWidthLeft}px`,"--pinned-width-right":`${E.pinnedWidthRight}px`,"--header-height":`${r}px`,"--row-height":`${h}px`,"--table-height":`${D==null?void 0:D.height}px`,"--table-width":`${D==null?void 0:D.width}px`,"--total-header-height":`${E.totalHeaderHeight}px`,"--vertical-scrollbar-width":`${E.verticalScrollbarWidth}px`,"--viewport-body-height":`${E.viewportBodyHeight}px`},ae=ni(pe,t,{[`${pe}-zebra`]:o.zebraStripes,[`${pe}-loading`]:ri(L.columns)});return Ke(ei,{menuActionHandler:R,menuBuilder:Je(n),children:vn("div",{...g,...d,className:ae,id:f,ref:M,style:F,tabIndex:-1,children:[D?Ke("div",{className:`${pe}-scrollbarContainer`,ref:S.scrollbarContainerRef,children:Ke("div",{className:`${pe}-scrollbarContent`})}):null,D?vn("div",{className:`${pe}-contentContainer`,ref:S.contentContainerRef,children:[Ke(Io,{...L,headerHeight:r,tableId:f}),H]}):null,e&&D?Ke(ti,{className:`${pe}-settings`,"data-icon":"settings",onClick:m,variant:"secondary"}):null]})})};import li from"classnames";import{isJsonAttribute as si,metadataKeys as ii,registerComponent as ai}from"@vuu-ui/vuu-utils";import{jsx as Ft,jsxs as di}from"react/jsx-runtime";var ke="vuuJsonCell",{IS_EXPANDED:ci,KEY:ui}=ii,mi=e=>{let t=e.lastIndexOf("|");return t===-1?"":e.slice(t+1)},pi=({column:e,row:t})=>{let{key:o}=e,n=t[o],r=!1;si(n)&&(n=n.slice(0,-1),r=!0);let l=mi(t[ui]),s=li({[`${ke}-name`]:l===n,[`${ke}-value`]:l!==n,[`${ke}-group`]:r});if(r){let i=t[ci]?"minus-box":"plus-box";return di("span",{className:s,children:[Ft("span",{className:`${ke}-value`,children:n}),Ft("span",{className:`${ke}-toggle`,"data-icon":i})]})}else return n?Ft("span",{className:s,children:n}):null};console.log("register JsonCell");ai("json",pi,"cell-renderer",{description:"JSON formatter",label:"JSON formatter",serverDataType:"json"});import Nf from"classnames";import{useRef as If}from"react";import{useCallback as Ot,useRef as fi}from"react";import{jsx as bi}from"react/jsx-runtime";var yn=()=>{},Ci="vuuColumnResizerNext",Ne=({onDrag:e,onDragEnd:t=yn,onDragStart:o=yn})=>{let n=fi(0),r=Ot(i=>{i.stopPropagation&&i.stopPropagation(),i.preventDefault&&i.preventDefault();let a=Math.round(i.clientX),c=a-n.current;n.current=a,c!==0&&e(i,c)},[e]),l=Ot(i=>{window.removeEventListener("mouseup",l),window.removeEventListener("mousemove",r),t(i)},[t,r]),s=Ot(i=>{o(i),n.current=Math.round(i.clientX),window.addEventListener("mouseup",l),window.addEventListener("mousemove",r),i.stopPropagation&&i.stopPropagation(),i.preventDefault&&i.preventDefault()},[o,r,l]);return bi("div",{className:Ci,onMouseDown:s})};import{useCallback as Gt,useRef as gi,useState as hi}from"react";var ze=({column:e,onResize:t,rootRef:o})=>{let n=gi(0),[r,l]=hi(!1),{name:s}=e,i=Gt(()=>{if(console.log("onResizeStart"),t&&o.current){console.log("handleResizeStart");let{width:u}=o.current.getBoundingClientRect();n.current=Math.round(u),l(!0),t==null||t("begin",s)}},[s,t,o]),a=Gt((u,p)=>{if(o.current&&t){let{width:m}=o.current.getBoundingClientRect(),C=Math.round(m)+p;C!==n.current&&C>0&&(t("resize",s,C),n.current=C)}},[s,t,o]),c=Gt(()=>{t&&(t("end",s,n.current),setTimeout(()=>{l(!1)},80))},[s,t]);return{isResizing:r,onDrag:a,onDragStart:i,onDragEnd:c}};import{getColumnStyle as vi}from"@vuu-ui/vuu-utils";import yi from"classnames";import{useMemo as Ti}from"react";var te=(e,t,o)=>Ti(()=>{let n=yi(t,{vuuPinFloating:e.pin==="floating",vuuPinLeft:e.pin==="left",vuuPinRight:e.pin==="right",vuuEndPin:o&&e.endPin,[`${t}-editable`]:e.editable,[`${t}-right`]:e.align==="right"}),r=vi(e);return{className:n,style:r}},[e,t,o]);import wi from"classnames";import{useCallback as Di}from"react";import{jsx as Mi,jsxs as Ri}from"react/jsx-runtime";var Tn="vuuColumnHeaderPill",de=({children:e,className:t,column:o,onRemove:n,removable:r,...l})=>{if(r&&typeof n!="function")throw Error("ColumnHeaderPill onRemove prop must be provided if Pill is removable");let s=Di(i=>{i.preventDefault(),i.stopPropagation(),n==null||n(o)},[o,n]);return Ri("div",{...l,className:wi(Tn,t),children:[e,r?Mi("span",{className:`${Tn}-removeButton`,role:"button","data-icon":"cross",onClick:s}):null]})};import{jsx as Wt,jsxs as xi}from"react/jsx-runtime";var Bt=({column:e,...t})=>{let{name:o,sorted:n}=e,r=typeof n=="number"?n<0?"arrow-down":"arrow-up":n==="A"?"arrow-up":n==="D"?"arrow-down":void 0;return xi(de,{...t,column:e,children:[Wt("span",{className:"vuuGroupColumnPill-label",children:o}),r!==void 0?Wt("span",{"data-icon":r}):null,typeof n=="number"?Wt("span",{className:"vuuSortPosition",children:Math.abs(n)}):null]})};import{jsx as wn,jsxs as Pi}from"react/jsx-runtime";var Dn=({column:e})=>{if(!e.sorted)return null;let t=typeof e.sorted=="number"?e.sorted<0?"arrow-down":"arrow-up":e.sorted==="A"?"arrow-up":"arrow-down";return Pi(de,{column:e,children:[wn("span",{"data-icon":t}),typeof e.sorted=="number"?wn("span",{className:"vuuSortPosition",children:Math.abs(e.sorted)}):null]})};import{jsx as Bf,jsxs as Uf}from"react/jsx-runtime";import{createElement as Wf}from"react";import Hi from"classnames";import{useCallback as Ei,useRef as Si,useState as Ai}from"react";import{OverflowContainer as Li,useLayoutEffectSkipFirst as Ki}from"@vuu-ui/vuu-layout";import{jsx as _t,jsxs as zi}from"react/jsx-runtime";import{createElement as Ni}from"react";var Ut="vuuTableNextGroupHeaderCell",ki=(e,t)=>e===t?e:t,ot=({column:e,className:t,onRemoveColumn:o,onResize:n,...r})=>{let l=Si(null),{isResizing:s,...i}=ze({column:e,onResize:n,rootRef:l}),[a,c]=Ai(e.columns),{className:u,style:p}=te(e,Ut,!0),m=a.length>1?{removable:!0,onRemove:o}:void 0,C=Ei((h,v)=>{c(T=>{let x=T.slice(),[g]=x.splice(h,1);return v===-1?x.concat(g):(x.splice(v,0,g),x)})},[]);return Ki(()=>{c(h=>ki(h,e.columns))},[e.columns]),zi("div",{...r,className:Hi(u,"vuuTableNextHeaderCell",t,{[`${Ut}-pending`]:e.groupConfirmed===!1}),ref:l,role:"columnheader",style:p,children:[_t(Li,{allowDragDrop:!0,className:`${Ut}-inner`,height:24,onMoveItem:C,overflowPosition:"start",children:a.map(h=>Ni(Bt,{...m,column:h,key:h.key}))}),_t(de,{column:e,removable:!0,onRemove:o}),e.resizeable!==!1?_t(Ne,{...i}):null]})};import{useCallback as Wi,useRef as Bi}from"react";import{useContextMenu as Ii}from"@vuu-ui/vuu-popups";import Vi from"classnames";import{useCallback as Mn,useRef as $i,useState as Fi}from"react";import{jsx as Gi}from"react/jsx-runtime";var Oi=e=>{if(e){let{bottom:t,left:o}=e.getBoundingClientRect();return{x:o,y:t+6}}},Rn=({className:e,column:t,...o})=>{let n=$i(null),[r,l]=Fi(!1),[s]=Ii(),i=Mn(()=>{l(!1)},[]),a=Mn(c=>{l(!0),s(c,"column-menu",{column:t,ContextMenuProps:{onClose:i,position:Oi(n.current)}})},[t,i,s]);return Gi("span",{...o,className:Vi("vuuTable-columnMenu",e,{"vuuTable-columnMenu-open":r}),"data-icon":"more-vert",onClick:a,ref:n})};import Ui from"classnames";import{jsx as nt,jsxs as _i}from"react/jsx-runtime";var Jt="vuuTableNextHeaderCell",xn=({className:e,column:t,onClick:o,onResize:n,...r})=>{var v;let l=Bi(null),{isResizing:s,...i}=ze({column:t,onResize:n,rootRef:l}),a=Wi(T=>{console.log(`click isResizing ${s}`),!s&&(o==null||o(T))},[s,o]),{className:c,style:u}=te(t,Jt,!0),p=nt(Rn,{column:t}),m=nt("div",{className:`${Jt}-label`,children:(v=t.label)!=null?v:t.name}),C=nt(Dn,{column:t}),h=t.align==="right"?[C,m,p]:[p,m,C];return _i("div",{...r,className:Ui(c,e,{[`${Jt}-resizing`]:s}),onClick:a,ref:l,role:"columnheader",style:u,children:[...h,t.resizeable!==!1?nt(Ne,{...i}):null]})};import{ContextMenuProvider as Sc}from"@vuu-ui/vuu-popups";import{isGroupColumn as Ac,metadataKeys as Lc,notHidden as Kc}from"@vuu-ui/vuu-utils";import sr from"classnames";import{forwardRef as kc,useRef as Nc}from"react";import{isGroupColumn as An,isJsonColumn as oa,isJsonGroup as na,metadataKeys as ra,notHidden as la,RowSelected as sa}from"@vuu-ui/vuu-utils";import ia from"classnames";import{memo as aa,useCallback as Ln}from"react";import{metadataKeys as Ji}from"@vuu-ui/vuu-utils";import{useCallback as Pn}from"react";import{jsx as Hn}from"react/jsx-runtime";var{IDX:Xi}=Ji,Qi="vuuTableNextCell",En=({column:e,columnMap:t,onClick:o,onDataEdited:n,row:r})=>{let{className:l,style:s}=te(e,Qi),{CellRenderer:i,name:a,valueFormatter:c}=e,u=t[a],p=Pn(C=>(n==null||n(r[Xi],a,C),!0),[a,n,r]),m=Pn(C=>{o==null||o(C,e)},[e,o]);return Hn("div",{className:l,onClick:o?m:void 0,role:"cell",style:s,children:i?Hn(i,{column:e,columnMap:t,onCommit:p,row:r}):c(r[u])})};import{getGroupValueAndOffset as Yi,metadataKeys as Zi}from"@vuu-ui/vuu-utils";import{useCallback as ji}from"react";import qi from"classnames";import{jsx as Qt,jsxs as ta}from"react/jsx-runtime";var{IS_LEAF:ea}=Zi,Xt="vuuTableNextGroupCell",Sn=({column:e,onClick:t,row:o})=>{let{columns:n}=e,[r,l]=Yi(n,o),{className:s,style:i}=te(e,Xt),a=ji(p=>{t==null||t(p,e)},[e,t]),c=o[ea],u=Array(l).fill(0).map((p,m)=>Qt("span",{className:`${Xt}-spacer`},m));return ta("div",{className:qi(s,"vuuTableNextCell"),role:"cell",style:i,onClick:c?void 0:a,children:[u,c?null:Qt("span",{className:`${Xt}-toggle`,"data-icon":"triangle-right"}),Qt("span",{children:r})]})};import{jsx as Yt}from"react/jsx-runtime";import{createElement as pa}from"react";var{IDX:ca,IS_EXPANDED:ua,SELECTED:ma}=ra,le="vuuTableNextRow",Zt=aa(({className:e,columnMap:t,columns:o,row:n,offset:r,onClick:l,onDataEdited:s,onToggleGroup:i,zebraStripes:a=!1,...c})=>{let{[ca]:u,[ua]:p,[ma]:m}=n,C=Ln(M=>{let D=M.shiftKey,w=M.ctrlKey||M.metaKey;l==null||l(n,D,w)},[l,n]),{True:h,First:v,Last:T}=sa,x=ia(le,e,{[`${le}-even`]:a&&u%2===0,[`${le}-expanded`]:p,[`${le}-selected`]:m&h,[`${le}-selectedStart`]:m&v,[`${le}-selectedEnd`]:m&T}),g={transform:`translate3d(0px, ${r}px, 0px)`},f=Ln((M,D)=>{(An(D)||na(D,n))&&(M.stopPropagation(),i==null||i(n,D))},[i,n]);return pa("div",{...c,"aria-rowindex":n[0],key:`row-${n[0]}`,role:"row",className:x,onClick:C,style:g},Yt("span",{className:`${le}-selectionDecorator vuuStickyLeft`}),o.filter(la).map(M=>{let D=An(M),w=oa(M);return Yt(D?Sn:En,{column:M,columnMap:t,onClick:D||w?f:void 0,onDataEdited:s,row:n},M.key)}),Yt("span",{className:`${le}-selectionDecorator vuuStickyRight`}))});Zt.displayName="Row";import{useLayoutEffectSkipFirst as hc}from"@vuu-ui/vuu-layout";import{useTableAndColumnSettings as vc}from"@vuu-ui/vuu-table-extras";import{useDragDropNext as yc}from"@vuu-ui/vuu-ui-controls";import{useCallback as se,useEffect as fa,useMemo as Ca,useRef as eo}from"react";var jt=e=>`.vuuTableNext-col-headers .vuuTableNextHeaderCell:nth-child(${e})`,qt=(e,t)=>`.vuuTableNext-body > [aria-rowindex='${e}'] > [role='cell']:nth-child(${t+1})`,Kn=(e,[t,o])=>{var l;let n=t===-1?jt(o):qt(t,o),r=(l=e.current)==null?void 0:l.querySelector(n);return da(r)&&r.querySelector("button")||r},da=e=>e.classList.contains("vuuTableNextCell-editable"),kn=e=>e.querySelector(".vuuTableInputCell")!==null;var Nn=new Set(["Home","End","PageUp","PageDown","ArrowDown","ArrowUp"]),to=new Set(Nn);to.add("ArrowLeft");to.add("ArrowRight");var ba=(e,t)=>{switch(t){case"cell":return to.has(e);case"row":return Nn.has(e);default:return!1}},ga=["Home","End","PageUp","PageDown"],ha=e=>ga.includes(e),va=[-1,-1],ya=[void 0,void 0],Ta=e=>{var o,n;let t=(o=e.closest(".vuuTableNext"))==null?void 0:o.querySelector(".vuuTableNext-scrollbarContainer");if(t){let r=t==null?void 0:t.getBoundingClientRect(),l=(n=e.closest(".vuuTableNextCell"))==null?void 0:n.getBoundingClientRect();if(l)return l.bottom>r.bottom?["down",l.bottom-r.bottom]:l.top<r.top?["up",l.top-r.top]:l.right<r.right?["right",l.right-r.right]:l.left<r.left?["left",l.left-r.left]:ya;throw Error("Whats going on, cell not found")}else throw Error("Whats going on, scrollbar container not found")};function wa(e,[t,o],n,r){return e==="ArrowUp"?t>-1?[t-1,o]:[t,o]:e==="ArrowDown"?t===-1?[0,o]:t===r-1?[t,o]:[t+1,o]:e==="ArrowRight"?o<n-1?[t,o+1]:[t,o]:e==="ArrowLeft"?o>1?[t,o-1]:[t,o]:[t,o]}var zn=({columnCount:e=0,containerRef:t,disableHighlightOnFocus:o,navigationStyle:n,requestScroll:r,rowCount:l=0,viewportRowCount:s})=>{var w;let i=eo([-1,-1]),a=eo(),c=eo([-1,0]),u=d=>d==null?void 0:d.closest("[role='columnHeader'],[role='cell']"),p=d=>{var b,H;if(d.role==="columnHeader")return[-1,parseInt((b=d.dataset.idx)!=null?b:"-1",10)];{let y=d.closest("[role='row']");if(y){let R=parseInt((H=y.ariaRowIndex)!=null?H:"-1",10),S=Array.from(y.childNodes).indexOf(d);return[R,S]}}return va},m=se(d=>{var b;if(t.current){let H=Kn(t,d);if(H){H!==a.current&&((b=a.current)==null||b.removeAttribute("tabindex"),a.current=H,H.setAttribute("tabindex","0"));let[y,R]=Ta(H);y&&R&&(r==null||r({type:"scroll-distance",distance:R,direction:y})),H.focus()}}},[t,r]),C=se((d,b,H=!1)=>{let y=[d,b];c.current=y,m(y),H&&(i.current=y)},[m]),h=se((d,[b,H])=>new Promise(y=>{let R=b;switch(d){case"PageDown":R=Math.min(l-1,b+s),r==null||r({type:"scroll-page",direction:"down"});break;case"PageUp":R=Math.max(0,b-s),r==null||r({type:"scroll-page",direction:"up"});break;case"Home":R=0,r==null||r({type:"scroll-end",direction:"home"});break;case"End":R=l-1,r==null||r({type:"scroll-end",direction:"end"});break}setTimeout(()=>{y([R,H])},90)}),[r,l,s]),v=se(()=>{var d;if(o!==!0&&(d=t.current)!=null&&d.contains(document.activeElement)){let b=u(document.activeElement);b&&(i.current=p(b))}},[o,t]),T=se(async d=>{let[b,H]=ha(d)?await h(d,c.current):wa(d,c.current,e,l);console.log(`nextRowIdx ${b} nextColIdx ${H}`);let[y,R]=c.current;(b!==y||H!==R)&&C(b,H,!0)},[e,h,l,C]),x=se(d=>{l>0&&ba(d.key,n)&&(d.preventDefault(),d.stopPropagation(),T(d.key))},[l,n,T]),g=se(d=>{let b=d.target,H=u(b);if(H){let[y,R]=p(H);C(y,R)}},[C]),f=se(()=>{T("ArrowDown")},[T]),M=Ca(()=>({navigate:f,onClick:g,onFocus:v,onKeyDown:x}),[g,v,x,f]),D=((w=t.current)==null?void 0:w.firstChild)!=null;return fa(()=>{if(D&&a.current===void 0){let{current:d}=t,b=(d==null?void 0:d.querySelector(jt(0)))||(d==null?void 0:d.querySelector(qt(0,0)));b&&(b.setAttribute("tabindex","0"),a.current=b)}},[t,D]),M};import{applySort as Tc,buildColumnMap as wc,isGroupColumn as Dc,isJsonGroup as Mc,isValidNumber as tr,metadataKeys as Rc,updateColumn as xc,visibleColumnAtIndex as Pc}from"@vuu-ui/vuu-utils";import{useCallback as I,useEffect as or,useMemo as so,useState as io}from"react";var oo=(e,t)=>{switch(t.type){case"col-size":return{...e,columns:e.columns.map(o=>o.name===t.column.name?{...o,width:t.width}:o)};case"column-prop":return{...e,columns:e.columns.map(o=>o.name===t.column.name?{...o,[t.property]:t.value}:o)};default:return e}};import{isVuuFeatureAction as xa,isVuuFeatureInvocation as Pa}from"@vuu-ui/vuu-data-react/src";import{getFullRange as no,NULL_RANGE as In}from"@vuu-ui/vuu-utils";import{useCallback as ro,useEffect as Vn,useMemo as Ha,useRef as lt,useState as Ea}from"react";import{metadataKeys as Da,WindowRange as Ma}from"@vuu-ui/vuu-utils";var{SELECTED:Ra}=Da,rt=class{constructor({from:t,to:o}){this.rowCount=0;this.setRowCount=t=>{t<this.data.length&&(this.data.length=t),this.rowCount=t};this.range=new Ma(t,o),this.data=new Array(o-t),this.rowCount=0}add(t){let[o]=t;if(this.isWithinRange(o)){let n=o-this.range.from;this.data[n]=t}}getAtIndex(t){return this.range.isWithin(t)&&this.data[t-this.range.from]!=null?this.data[t-this.range.from]:void 0}isWithinRange(t){return this.range.isWithin(t)}setRange({from:t,to:o}){if(t!==this.range.from||o!==this.range.to){let[n,r]=this.range.overlap(t,o),l=new Array(Math.max(0,o-t));for(let s=n;s<r;s++){let i=this.getAtIndex(s);if(i){let a=s-t;l[a]=i}}this.data=l,this.range.from=t,this.range.to=o}}getSelectedRows(){return this.data.filter(t=>t[Ra]!==0)}};var $n=({dataSource:e,onFeatureEnabled:t,onFeatureInvocation:o,onSizeChange:n,onSubscribed:r,range:l=In,renderBufferSize:s=0})=>{let[,i]=Ea(null),a=lt([]),c=lt(!0),u=lt(!1),p=lt(In),m=Ha(()=>new rt(no(l,s)),[]),C=ro(T=>{for(let x of T)m.add(x);a.current=m.data,c.current&&i({})},[m]),h=ro(T=>{T.type==="subscribed"?r==null||r(T):T.type==="viewport-update"?(typeof T.size=="number"&&(n==null||n(T.size),m.setRowCount(T.size)),T.rows?C(T.rows):typeof T.size=="number"&&(a.current=m.data,u.current=!0)):xa(T)?t==null||t(T):Pa(T)?o==null||o(T):console.log(`useDataSource unexpected message ${T.type}`)},[m,t,o,n,r,C]);Vn(()=>()=>{c.current=!0,c.current=!1},[]),Vn(()=>{e==null||e.subscribe({range:no(l,s)},h)},[e,h,l,s]);let v=ro(T=>{let x=no(T,s);m.setRange(x),e.range=p.current=x,e.emit("range",T)},[e,m,s]);return{data:a.current,range:p.current,setRange:v}};import{useMemo as Sa,useRef as Aa}from"react";var Fn=e=>{let t=Aa(e);return Sa(()=>t.current,[])};import{buildColumnMap as La}from"@vuu-ui/vuu-utils";import{useCallback as Ka}from"react";import{useContextMenu as ka}from"@vuu-ui/vuu-popups";var On=({columns:e,data:t})=>{let[o]=ka();return Ka(r=>{var a;let l=r.target,s=l==null?void 0:l.closest("div[role='cell']"),i=l==null?void 0:l.closest("div[role='row']");if(s&&i){let c=La(e),u=parseInt((a=i.ariaRowIndex)!=null?a:"-1"),p=Array.from(i.childNodes).indexOf(s),m=t.find(([h])=>h===u),C=e[p];o(r,"grid",{columnMap:c,columnName:C,row:m})}},[e,t,o])};import{isCharacterKey as Na}from"@vuu-ui/vuu-utils";import{useCallback as st}from"react";var Gn=({navigate:e})=>{let t=st(()=>{e()},[e]),o=st(l=>{let s=l.target,i=s.querySelector("input");i&&(i.focus(),i.select()),s.addEventListener("vuu-commit",t,!0)},[t]),n=st(l=>{let s=l.target,i=s.querySelector("input");i&&(i.focus(),i.select()),s.addEventListener("vuu-commit",t,!0)},[t]);return{onKeyDown:st(l=>{kn(l.target)&&(Na(l.key)?o(l):l.key==="Enter"&&n(l))},[o,n])}};import{applyFilterToColumns as za,applyGroupByToColumns as Ia,applySortToColumns as Va,getCellRenderer as $a,getColumnLabel as Fa,getTableHeadings as Oa,getValueFormatter as Ga,hasValidationRules as Wa,isFilteredColumn as Ba,isGroupColumn as Ua,isPinned as _a,isTypeDescriptor as Ja,logger as Xa,metadataKeys as Qa,moveItem as Ya,sortPinnedColumns as Wn,stripFilterFromColumns as Za,subscribedOnly as ja}from"@vuu-ui/vuu-utils";import{buildValidationChecker as qa}from"@vuu-ui/vuu-ui-controls";import{useReducer as ec}from"react";var{info:lo}=Xa("useTableModel"),tc=100,oc=Qa.count,nc=({serverDataType:e})=>e===void 0,rc=e=>{var t;if(Ja(e.type))return $a((t=e.type)==null?void 0:t.renderer)},lc=(e,t)=>{var n;let o=t.columns.find(({name:r})=>r===e.name);return o?o.serverDataType:(n=e.serverDataType)!=null?n:"string"},sc=["int","long","double"],Bn=e=>e===void 0?void 0:sc.includes(e)?"right":"left",Un=e=>e.type==="columnSettings",_n=e=>e.type==="tableSettings",ic=(e,t)=>{switch(lo==null||lo(`TableModelReducer ${t.type}`),t.type){case"init":return Xn(t);case"moveColumn":return cc(e,t);case"resizeColumn":return pc(e,t);case"setTableSchema":return dc(e,t);case"hideColumns":return uc(e,t);case"showColumns":return mc(e,t);case"pinColumn":return fc(e,t);case"updateColumnProp":return we(e,t);case"tableConfig":return Yn(e,t);default:return console.log(`unhandled action ${t.type}`),e}},Jn=(e,t)=>{let[o,n]=ec(ic,{tableConfig:e,dataSourceConfig:t},Xn),{columns:r,headings:l,tableConfig:s,...i}=o;return{columns:r,dispatchColumnAction:n,headings:l,tableAttributes:i,tableConfig:s}};function Xn({dataSourceConfig:e,tableConfig:t}){let{columns:o,...n}=t,r=o.filter(ja(e==null?void 0:e.columns)).map(Qn(n)),l=r.some(_a)?Wn(r):r,s={columns:l,headings:Oa(l),tableConfig:t,...n};if(e){let{columns:i,...a}=e;s=Yn(s,{type:"tableConfig",...a})}return s}var ac=(e,t)=>t==="uppercase"?e.toUpperCase():t==="capitalize"?e[0].toUpperCase()+e.slice(1).toLowerCase():e,Qn=e=>(t,o)=>{let{columnDefaultWidth:n=tc,columnFormatHeader:r}=e,{align:l=Bn(t.serverDataType),key:s,name:i,label:a=Fa(t),width:c=n,...u}=t,p={...u,align:l,CellRenderer:rc(t),clientSideEditValidationCheck:Wa(t.type)?qa(t.type.renderer.rules):void 0,label:ac(a,r),key:s!=null?s:o+oc,name:i,originalIdx:o,valueFormatter:Ga(t),width:c};return Ua(p)&&(p.columns=p.columns.map(m=>Qn(e)(m,m.key))),p};function cc(e,{column:t,moveBy:o,moveTo:n}){let{columns:r}=e;if(typeof o=="number"){let l=r.indexOf(t),s=r.slice(),[i]=s.splice(l,1);return s.splice(l+o,0,i),{...e,columns:s}}else if(typeof n=="number"){let l=r.indexOf(t);return{...e,columns:Ya(r,l,n)}}return e}function uc(e,{columns:t}){return t.some(o=>o.hidden!==!0)?t.reduce((o,n)=>n.hidden!==!0?we(o,{type:"updateColumnProp",column:n,hidden:!0}):o,e):e}function mc(e,{columns:t}){return t.some(o=>o.hidden)?t.reduce((o,n)=>n.hidden?we(o,{type:"updateColumnProp",column:n,hidden:!1}):o,e):e}function pc(e,{column:t,phase:o,width:n}){let r="updateColumnProp",l=o!=="end";switch(o){case"begin":return we(e,{type:r,column:t,resizing:l});case"end":return we(e,{type:r,column:t,resizing:l,width:n});case"resize":return we(e,{type:r,column:t,width:n});default:throw Error(`useTableModel.resizeColumn, invalid resizePhase ${o}`)}}function dc(e,{tableSchema:t}){let{columns:o}=e;if(o.some(nc)){let n=o.map(r=>{var s;let l=lc(r,t);return{...r,align:(s=r.align)!=null?s:Bn(l),serverDataType:l}});return{...e,columns:n}}else return e}function fc(e,t){let{columns:o}=e,{column:n,pin:r}=t,l=o.find(s=>s.name===n.name);return l?(o=Te(o,{...l,pin:r}),o=Wn(o),{...e,columns:o}):e}function we(e,t){let{columns:o}=e,{align:n,column:r,hidden:l,label:s,resizing:i,width:a}=t,c=o.find(u=>u.name===r.name);return c&&((n==="left"||n==="right")&&(o=Te(o,{...c,align:n})),typeof s=="string"&&(o=Te(o,{...c,label:s})),typeof i=="boolean"&&(o=Te(o,{...c,resizing:i})),typeof l=="boolean"&&(o=Te(o,{...c,hidden:l})),typeof a=="number"&&(o=Te(o,{...c,width:a}))),{...e,columns:o}}function Yn(e,{confirmed:t,filter:o,groupBy:n,sort:r}){let l=n!==void 0,s=typeof(o==null?void 0:o.filter)=="string",i=r&&r.sortDefs.length>0,a=e;return l&&(a={...e,columns:Ia(a.columns,n,t)}),i&&(a={...e,columns:Va(a.columns,r)}),s?a={...e,columns:za(a.columns,o)}:a.columns.some(Ba)&&(a={...e,columns:Za(a.columns)}),a}function Te(e,t){return e.map(o=>o.name===t.name?t:o)}import{useCallback as ie,useRef as Ie}from"react";var Zn=e=>{let{scrollLeft:t,scrollTop:o}=e,{clientHeight:n,clientWidth:r,scrollHeight:l,scrollWidth:s}=e,i=t/(s-r),a=o/(l-n);return[i,a]},jn=({onAttach:e,onDetach:t})=>{let o=Ie(null);return ie(r=>{if(r)o.current=r,e==null||e(r);else if(o.current){let{current:l}=o;o.current=r,t==null||t(l)}},[e,t])},qn=({maxScrollLeft:e,maxScrollTop:t,onHorizontalScroll:o,onVerticalScroll:n,rowHeight:r,viewportRowCount:l})=>{let s=Ie(!1),i=Ie({scrollTop:0,scrollLeft:0}),a=Ie(null),c=Ie(null),u=ie(()=>{let{current:f}=c,{current:M}=a,{current:D}=s;if(D)s.current=!1;else if(f&&M){let[w,d]=Zn(M),b=Math.round(w*e),H=Math.round(d*t);f.scrollTo({left:b,top:H,behavior:"auto"})}},[e,t]),p=ie(()=>{let{current:f}=c,{current:M}=a,{current:D}=i;if(f&&M){let{scrollLeft:w,scrollTop:d}=f,[b,H]=Zn(f);s.current=!0,M.scrollLeft=Math.round(b*e),M.scrollTop=Math.round(H*t),D.scrollTop!==d&&(D.scrollTop=d,n==null||n(d,H)),D.scrollLeft!==w&&(D.scrollLeft=w,o==null||o(w))}},[e,t,o,n]),m=ie(f=>{a.current=f,f.addEventListener("scroll",u,{passive:!0})},[u]),C=ie(f=>{a.current=null,f.removeEventListener("scroll",u)},[u]),h=ie(f=>{c.current=f,f.addEventListener("scroll",p,{passive:!0})},[p]),v=ie(f=>{c.current=null,f.removeEventListener("scroll",p)},[p]),T=jn({onAttach:h,onDetach:v}),x=jn({onAttach:m,onDetach:C}),g=ie(f=>{let{current:M}=c;if(M){let{scrollLeft:D,scrollTop:w}=M;if(s.current=!1,f.type==="scroll-distance"){let d=D,b=w;f.direction==="up"||f.direction==="down"?b=Math.min(Math.max(0,w+f.distance),t):d=Math.min(Math.max(0,D+f.distance),e),M.scrollTo({top:b,left:d,behavior:"auto"})}else if(f.type==="scroll-page"){let{direction:d}=f,b=l*(d==="down"?r:-r),H=Math.min(Math.max(0,w+b),t);M.scrollTo({top:H,left:D,behavior:"auto"})}else if(f.type==="scroll-end"){let{direction:d}=f,b=d==="end"?t:0;M.scrollTo({top:b,left:M.scrollLeft,behavior:"auto"})}}},[e,t,r,l]);return{scrollbarContainerRef:x,contentContainerRef:T,requestScroll:g}};import{useCallback as Cc,useEffect as bc,useRef as gc}from"react";var er=({columns:e,getRowAtPosition:t,setRange:o,viewportMeasurements:n})=>{let r=gc(0),{contentWidth:l,rowCount:s}=n,i=Cc(a=>{let c=t(a);c!==r.current&&(r.current=c,o({from:c,to:c+s}))},[t,o,s]);return bc(()=>{let{current:a}=r,c={from:a,to:a+s};o(c)},[o,s]),{onVerticalScroll:i}};var{KEY:Hc,IS_EXPANDED:nr,IS_LEAF:rr}=Rc,Ec=(e,t)=>({...e,columns:e.columns.concat(t)}),lr=({availableColumns:e,config:t,containerRef:o,dataSource:n,headerHeight:r=25,navigationStyle:l="cell",onAvailableColumnsChange:s,onConfigChange:i,onFeatureEnabled:a,onFeatureInvocation:c,onRowClick:u,onSelect:p,onSelectionChange:m,renderBufferSize:C=0,rowHeight:h=20,selectionModel:v})=>{let[T,x]=io(n.size);if(n===void 0)throw Error("no data source provided to Vuu Table");let[g,f]=io(),M=I(P=>{f(P)},[]),D=so(()=>Je(n),[n]),w=I(P=>{x(P)},[]),{columns:d,dispatchColumnAction:b,headings:H,tableAttributes:y,tableConfig:R}=Jn(t,n.config);hc(()=>{b({type:"init",dataSourceConfig:n.config,tableConfig:R})},[R,n.config,b]);let[S,E]=io(),[L,F]=so(()=>{let P=(K,k)=>{let G=xc(d,K,{width:k});E(G)};return[S!=null?S:d,P]},[d,S]),ae=so(()=>wc(n.columns),[n.columns]),{getRowAtPosition:De,getRowOffset:Ve,setPctScrollTop:$e,...B}=tt({columns:L,headerHeight:r,headings:H,rowCount:T,rowHeight:h,size:g}),Ce=Fn({from:0,to:B.rowCount}),be=I(({tableSchema:P})=>{P||console.log("usbscription message with no schema")},[]),{data:X,range:O,setRange:Me}=$n({dataSource:n,onFeatureEnabled:a,onFeatureInvocation:c,renderBufferSize:C,onSizeChange:w,onSubscribed:be,range:Ce}),Re=I(P=>{b({type:"init",tableConfig:P,dataSourceConfig:n.config}),i==null||i(P)},[n.config,b,i]),xe=I(P=>{n.config={...n.config,...P}},[n]),V=I(P=>{n.columns=n.columns.concat(P.name);let K=Ec(R,P);b({type:"init",tableConfig:K,dataSourceConfig:n.config}),console.log("dispatch onConfigChange",{newTableConfig:K}),i==null||i(K)},[n,b,i,R]);or(()=>{n.on("config",(P,K)=>{b({type:"tableConfig",...P,confirmed:K})})},[n,b]);let{showColumnSettingsPanel:Y,showTableSettingsPanel:Fe}=vc({availableColumns:e!=null?e:R.columns.map(({name:P,serverDataType:K="string"})=>({name:P,serverDataType:K})),onAvailableColumnsChange:s,onConfigChange:Re,onCreateCalculatedColumn:V,onDataSourceConfigChange:xe,tableConfig:R}),at=I(P=>{Un(P)?Y(P):_n(P)?Fe():b(P)},[b,Y,Fe]),Oe=Xe({dataSource:n,onPersistentColumnOperation:at}),Ge=I((P,K=!1,k)=>{n&&(n.sort=Tc(n.sort,P,K,k))},[n]),We=I((P,K,k)=>{let G=L.find(j=>j.name===K);if(G)P==="resize"?tr(k)&&F(K,k):P==="end"?tr(k)&&(b({type:"resizeColumn",phase:P,column:G,width:k}),i==null||i(oo(R,{type:"col-size",column:G,width:k}))):(E(void 0),b({type:"resizeColumn",phase:P,column:G,width:k}));else throw Error(`useDataTable.handleColumnResize, column ${K} not found`)},[L,R,b,i,F]),Be=I((P,K)=>{let k=Mc(K,P),G=P[Hc];if(P[nr]){if(n.closeTreeNode(G,!0),k){let j=L.indexOf(K);n.getRowsAtDepth(j+1).some(q=>q[nr]||q[rr])||b({type:"hideColumns",columns:L.slice(j+2)})}}else if(n.openTreeNode(G),k){let j=n.getChildRows(G),Pe=L.indexOf(K)+1,q=[L[Pe]];j.some(Ct=>Ct[rr])&&q.push(L[Pe+1]),q.some(Ct=>Ct.hidden)&&b({type:"showColumns",columns:q})}},[L,n,b]),{onVerticalScroll:A}=er({columns:L,getRowAtPosition:De,setRange:Me,viewportMeasurements:B}),N=I(P=>{A(P)},[A]),{requestScroll:$,...z}=qn({maxScrollLeft:B.maxScrollContainerScrollHorizontal,maxScrollTop:B.maxScrollContainerScrollVertical,rowHeight:h,onVerticalScroll:N,viewportRowCount:B.rowCount}),{navigate:U,onKeyDown:Q,..._}=zn({columnCount:L.filter(P=>P.hidden!==!0).length,containerRef:o,navigationStyle:l,requestScroll:$,rowCount:n==null?void 0:n.size,viewportRange:O,viewportRowCount:B.rowCount}),{onKeyDown:Z}=Gn({navigate:U}),ct=I(P=>{Q(P),P.defaultPrevented||Z(P)},[Q,Z]),ut=On({columns:L,data:X}),mt=I(P=>{var q;let k=P.target.closest(".vuuTableNextHeaderCell"),G=parseInt((q=k==null?void 0:k.dataset.index)!=null?q:"-1"),j=Pc(L,G),Pe=P.shiftKey;j&&Ge(j,Pe)},[L,Ge]),pt=I(P=>{Dc(P)?n.groupBy=[]:n&&n.groupBy.includes(P.name)&&(n.groupBy=n.groupBy.filter(K=>K!==P.name))},[n]),dt=I(P=>{n.select(P),m==null||m(P)},[n,m]),Ue=qe({onSelect:p,onSelectionChange:dt,selectionModel:v}),ft=I((P,K,k)=>{Ue(P,K,k),u==null||u(P)},[u,Ue]);or(()=>{n.on("config",(P,K)=>{b({type:"tableConfig",...P,confirmed:K})})},[n,b]);let ar=I((P,K)=>{let k=L[P];b({type:"moveColumn",column:k,moveTo:K})},[L,b]),cr=I((P,K,k)=>n.applyEdit(P,K,k),[n]),{onMouseDown:ur,...mr}=yc({allowDragDrop:!0,containerRef:o,draggableClassName:"vuuTableNext",onDrop:ar,orientation:"horizontal",itemQuery:".vuuTableNextHeaderCell"});return{..._,onKeyDown:ct,columnMap:ae,columns:L,data:X,handleContextMenuAction:Oe,headerProps:{onClick:mt,onMouseDown:ur,onResize:We},menuBuilder:D,onContextMenu:ut,onDataEdited:cr,onRemoveGroupColumn:pt,onResize:M,onRowClick:ft,onToggleGroup:Be,scrollProps:z,tableAttributes:y,viewportMeasurements:B,dragDropHook:mr}};import{MeasuredContainer as zc,useId as Ic}from"@vuu-ui/vuu-layout";import{useForkRef as Vc}from"@salt-ds/core";import{jsx as fe,jsxs as ao}from"react/jsx-runtime";import{createElement as ir}from"react";var W="vuuTableNext",{IDX:$c,RENDER_IDX:Fc}=Lc,Oc=kc(function({Row:t=Zt,availableColumns:o,className:n,config:r,dataSource:l,id:s,navigationStyle:i="cell",onAvailableColumnsChange:a,onConfigChange:c,onFeatureEnabled:u,onFeatureInvocation:p,onRowClick:m,onSelect:C,onSelectionChange:h,onShowConfigEditor:v,renderBufferSize:T=0,rowHeight:x=20,selectionModel:g="extended",showColumnHeaders:f=!0,headerHeight:M=f?25:0,style:D,...w},d){let b=Ic(s),H=Nc(null),{columnMap:y,columns:R,data:S,dragDropHook:E,handleContextMenuAction:L,headerProps:F,onDataEdited:ae,onRemoveGroupColumn:De,onResize:Ve,onRowClick:$e,onToggleGroup:B,menuBuilder:Ce,scrollProps:be,tableAttributes:X,viewportMeasurements:O,...Me}=lr({availableColumns:o,config:r,containerRef:H,dataSource:l,headerHeight:M,navigationStyle:i,onAvailableColumnsChange:a,onConfigChange:c,onFeatureEnabled:u,onFeatureInvocation:p,onRowClick:m,onSelect:C,onSelectionChange:h,renderBufferSize:T,rowHeight:x,selectionModel:g}),Re=()=>({...D,"--content-height":`${O.contentHeight}px`,"--horizontal-scrollbar-height":`${O.horizontalScrollbarHeight}px`,"--content-width":`${O.contentWidth}px`,"--pinned-width-left":`${O.pinnedWidthLeft}px`,"--pinned-width-right":`${O.pinnedWidthRight}px`,"--header-height":`${M}px`,"--row-height":`${x}px`,"--total-header-height":`${O.totalHeaderHeight}px`,"--vertical-scrollbar-width":`${O.verticalScrollbarWidth}px`,"--viewport-body-height":`${O.viewportBodyHeight}px`}),xe=sr(W,n,{[`${W}-colLines`]:X.columnSeparators,[`${W}-rowLines`]:X.rowSeparators,[`${W}-highlight`]:X.showHighlightedRow,[`${W}-zebra`]:X.zebraStripes});return fe(Sc,{menuActionHandler:L,menuBuilder:Ce,children:ao(zc,{...w,className:xe,onResize:Ve,ref:Vc(H,d),style:Re(),children:[fe("div",{className:`${W}-scrollbarContainer`,ref:be.scrollbarContainerRef,children:fe("div",{className:`${W}-scrollbarContent`})}),fe("div",{className:`${W}-contentContainer`,ref:be.contentContainerRef,children:ao("div",{...Me,className:`${W}-table`,tabIndex:-1,children:[f?fe("div",{className:`${W}-col-headings`,children:ao("div",{className:`${W}-col-headers`,role:"row",children:[R.filter(Kc).map((V,Y)=>Ac(V)?ir(ot,{...F,column:V,"data-index":Y,key:V.name,onRemoveColumn:De}):ir(xn,{...F,className:sr({"vuuDraggable-dragAway":Y===E.draggedItemIndex}),column:V,"data-index":Y,id:`${b}-col-${Y}`,key:V.name})),E.draggable]})}):null,fe("div",{className:`${W}-body`,children:S.map(V=>fe(t,{columnMap:y,columns:R,onClick:$e,onDataEdited:ae,row:V,offset:x*V[$c]+M,onToggleGroup:B,zebraStripes:X.zebraStripes},V[Fc]))})]})})]})})});import{Dropdown as Gc}from"@vuu-ui/vuu-ui-controls";import{isColumnTypeRenderer as Wc,isTypeDescriptor as Bc,registerComponent as Uc}from"@vuu-ui/vuu-utils";import{useCallback as _c,useState as Jc}from"react";import{jsx as Zc}from"react/jsx-runtime";var Xc="vuuTableDropdownCell",Qc=["Enter"," "],Yc=({column:e,columnMap:t,row:o})=>{var a,c,u;let n=Bc(e.type)&&Wc((a=e.type)==null?void 0:a.renderer)?(u=(c=e.type)==null?void 0:c.renderer)==null?void 0:u.values:[],r=t[e.name],[l,s]=Jc(o[r]),i=_c((p,m)=>{m&&s(m)},[]);return Zc(Gc,{className:Xc,onSelectionChange:i,openKeys:Qc,selected:l,source:n,width:e.width-17})};Uc("dropdown-cell",Yc,"cell-renderer",{});import{registerComponent as jc}from"@vuu-ui/vuu-utils";import{Input as qc}from"@salt-ds/core";import{useEditableText as eu}from"@vuu-ui/vuu-ui-controls";import tu from"classnames";import{jsx as co}from"react/jsx-runtime";var it="vuuTableInputCell",ou=()=>(console.warn("onCommit handler has not been provided to InputCell cell renderer"),!0),nu=({column:e,columnMap:t,onCommit:o=ou,row:n})=>{let r=t[e.name],{align:l="left",clientSideEditValidationCheck:s,valueFormatter:i}=e,{warningMessage:a,...c}=eu({initialValue:i(n[r]),onCommit:o,clientSideEditValidationCheck:s}),u=a&&l==="left"?co("span",{className:`${it}-icon`,"data-icon":"error"}):void 0,p=a&&l==="right"?co("span",{className:`${it}-icon`,"data-icon":"error"}):void 0;return co(qc,{...c,className:tu(it,{[`${it}-error`]:a!==void 0}),endAdornment:u,startAdornment:p})};jc("input-cell",nu,"cell-renderer",{});export{_e as ColumnResizer,ot as GroupHeaderCellNext,Td as Table,Oc as TableNext,Je as buildContextMenuDescriptors,Sp as isShowColumnSettings,Ap as isShowTableSettings,oo as updateTableConfig,jo as useMeasuredContainer,qe as useSelection,Ye as useTableColumnResize,Xe as useTableContextMenu,ln as useTableModel,tt as useTableViewport};
|
|
1
|
+
import vn from"classnames";import{useCallback as Rn,useRef as Tn,useState as Dn}from"react";import{useCallback as Pe,useRef as rn}from"react";import{jsx as sn}from"react/jsx-runtime";var fo=()=>{},ln="vuuColumnResizerNext",fe=({onDrag:e,onDragEnd:o=fo,onDragStart:t=fo})=>{let r=rn(0),n=Pe(a=>{a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault();let s=Math.round(a.clientX),u=s-r.current;r.current=s,u!==0&&e(a,u)},[e]),l=Pe(a=>{window.removeEventListener("mouseup",l),window.removeEventListener("mousemove",n),o(a)},[o,n]),i=Pe(a=>{t(a),r.current=Math.round(a.clientX),window.addEventListener("mouseup",l),window.addEventListener("mousemove",n),a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault()},[t,n,l]);return sn("div",{className:ln,onMouseDown:i})};import{useCallback as Ee,useRef as an,useState as un}from"react";var Ce=({column:e,onResize:o,rootRef:t})=>{let r=an(0),[n,l]=un(!1),{name:i}=e,a=Ee(()=>{if(o&&t.current){let{width:m}=t.current.getBoundingClientRect();r.current=Math.round(m),l(!0),o==null||o("begin",i)}},[i,o,t]),s=Ee((m,c)=>{if(t.current&&o){let{width:C}=t.current.getBoundingClientRect(),f=Math.round(C)+c;f!==r.current&&f>0&&(o("resize",i,f),r.current=f)}},[i,o,t]),u=Ee(()=>{o&&(o("end",i,r.current),setTimeout(()=>{l(!1)},80))},[i,o]);return{isResizing:n,onDrag:s,onDragStart:a,onDragEnd:u}};import{getColumnStyle as cn}from"@vuu-ui/vuu-utils";import mn from"classnames";import{useMemo as pn}from"react";var Q=(e,o,t)=>pn(()=>{let r=mn(o,{vuuPinFloating:e.pin==="floating",vuuPinLeft:e.pin==="left",vuuPinRight:e.pin==="right",vuuEndPin:t&&e.endPin,[`${o}-editable`]:e.editable,[`${o}-right`]:e.align==="right"}),n=cn(e);return{className:r,style:n}},[e,o,t]);import dn from"classnames";import{useCallback as fn}from"react";import{jsx as Cn,jsxs as bn}from"react/jsx-runtime";var Co="vuuColumnHeaderPill",re=({children:e,className:o,column:t,onRemove:r,removable:n,...l})=>{if(n&&typeof r!="function")throw Error("ColumnHeaderPill onRemove prop must be provided if Pill is removable");let i=fn(a=>{a.preventDefault(),a.stopPropagation(),r==null||r(t)},[t,r]);return bn("div",{...l,className:dn(Co,o),children:[e,n?Cn("span",{className:`${Co}-removeButton`,role:"button","data-icon":"cross",onClick:i}):null]})};import{jsx as Se,jsxs as gn}from"react/jsx-runtime";var bo=({column:e,...o})=>{let{name:t,sorted:r}=e,n=typeof r=="number"?r<0?"arrow-down":"arrow-up":r==="A"?"arrow-up":r==="D"?"arrow-down":void 0;return gn(re,{...o,column:e,children:[Se("span",{className:"vuuGroupColumnPill-label",children:t}),n!==void 0?Se("span",{"data-icon":n}):null,typeof r=="number"?Se("span",{className:"vuuSortPosition",children:Math.abs(r)}):null]})};import{jsx as go,jsxs as hn}from"react/jsx-runtime";var ho=({column:e})=>{if(!e.sorted)return null;let o=typeof e.sorted=="number"?e.sorted<0?"arrow-down":"arrow-up":e.sorted==="A"?"arrow-up":"arrow-down";return hn(re,{column:e,children:[go("span",{"data-icon":o}),typeof e.sorted=="number"?go("span",{className:"vuuSortPosition",children:Math.abs(e.sorted)}):null]})};import{OverflowContainer as wn,useLayoutEffectSkipFirst as yn}from"@vuu-ui/vuu-layout";import{jsx as Le,jsxs as Hn}from"react/jsx-runtime";import{createElement as xn}from"react";var Ae="vuuTableGroupHeaderCell",Mn=(e,o)=>e===o?e:o,ke=({column:e,className:o,onMoveColumn:t,onRemoveColumn:r,onResize:n,...l})=>{let i=Tn(null),{isResizing:a,...s}=Ce({column:e,onResize:n,rootRef:i}),[u,m]=Dn(e.columns),{className:c,style:C}=Q(e,Ae,!0),f=u.length>1?{removable:!0,onRemove:r}:void 0,v=Rn((R,d)=>{m(D=>{let H=D.slice(),[g]=H.splice(R,1);if(d===-1){let M=H.concat(g);return t==null||t(M),M}else return H.splice(d,0,g),t==null||t(H),H})},[t]);return yn(()=>{m(R=>Mn(R,e.columns))},[e.columns]),Hn("div",{...l,className:vn(c,o,{[`${Ae}-pending`]:e.groupConfirmed===!1}),ref:i,role:"columnheader",style:C,children:[Le(wn,{allowDragDrop:!0,className:`${Ae}-inner`,height:24,onMoveItem:v,overflowPosition:"start",children:u.map(R=>xn(bo,{...f,column:R,key:R.key}))}),Le(re,{column:e,removable:!0,onRemove:r}),e.resizeable!==!1?Le(fe,{...s}):null]})};import{useCallback as In,useRef as Nn}from"react";import{useContextMenu as Pn}from"@vuu-ui/vuu-popups";import En from"classnames";import{useCallback as vo,useRef as Sn,useState as An}from"react";import{jsx as kn}from"react/jsx-runtime";var Ln=e=>{if(e){let{bottom:o,left:t}=e.getBoundingClientRect();return{x:t,y:o+6}}},Ro=({className:e,column:o,...t})=>{let r=Sn(null),[n,l]=An(!1),[i]=Pn(),a=vo(()=>{l(!1)},[]),s=vo(u=>{l(!0),i(u,"column-menu",{column:o,ContextMenuProps:{onClose:a,position:Ln(r.current)}})},[o,a,i]);return kn("span",{...t,className:En("vuuTable-columnMenu",e,{"vuuTable-columnMenu-open":n}),"data-icon":"more-vert",onClick:s,ref:r})};import zn from"classnames";import{jsx as le,jsxs as Vn}from"react/jsx-runtime";var be="vuuTableHeaderCell",To=({className:e,column:o,onClick:t,onResize:r,...n})=>{var H;let{HeaderCellContentRenderer:l,HeaderCellLabelRenderer:i}=o,a=Nn(null),{isResizing:s,...u}=Ce({column:o,onResize:r,rootRef:a}),m=In(g=>{!s&&(t==null||t(g))},[s,t]),{className:c,style:C}=Q(o,be,!0),f=le(Ro,{column:o}),v=i?le(i,{className:`${be}-label`,column:o}):le("div",{className:`${be}-label`,children:(H=o.label)!=null?H:o.name}),R=l?[le(l,{column:o},"content")]:[],d=le(ho,{column:o}),D=o.align==="right"?[d,v].concat(R).concat(f):[f,v,d].concat(R);return Vn("div",{...n,className:zn(c,e,{[`${be}-resizing`]:s}),onClick:m,ref:a,role:"columnheader",style:C,children:[...D,o.resizeable!==!1?le(fe,{...u}):null]})};import{MeasuredContainer as Xl,useId as Ql}from"@vuu-ui/vuu-layout";import{ContextMenuProvider as Yl}from"@vuu-ui/vuu-popups";import{metadataKeys as Zl}from"@vuu-ui/vuu-utils";import{useForkRef as jl}from"@salt-ds/core";import Mt from"classnames";import{forwardRef as ql,useRef as ei,useState as oi}from"react";import{isGroupColumn as xo,isJsonColumn as _n,isJsonGroup as Jn,metadataKeys as Xn,isNotHidden as Qn,RowSelected as Yn}from"@vuu-ui/vuu-utils";import Zn from"classnames";import{memo as jn,useCallback as Ho}from"react";import{isNumericColumn as Kn}from"@vuu-ui/vuu-utils";import{useCallback as Do}from"react";import{jsx as wo}from"react/jsx-runtime";var Fn="vuuTableCell",yo=({column:e,columnMap:o,onClick:t,onDataEdited:r,row:n})=>{let{className:l,style:i}=Q(e,Fn),{CellRenderer:a,name:s,valueFormatter:u}=e,m=o[s],c=Do(f=>{if(r){let v=f;return Kn(e)&&typeof f=="string"&&(v=e.serverDataType==="double"?parseFloat(f):parseInt(f)),r==null?void 0:r(n,s,v)}else throw Error("TableCell onDataEdited prop not supplied for an editable cell")},[e,s,r,n]),C=Do(f=>{t==null||t(f,e)},[e,t]);return wo("div",{className:l,onClick:t?C:void 0,role:"cell",style:i,children:a?wo(a,{column:e,columnMap:o,onCommit:c,row:n}):u(n[m])})};import{getGroupValueAndOffset as $n,metadataKeys as On}from"@vuu-ui/vuu-utils";import{useCallback as Bn}from"react";import Wn from"classnames";import{jsx as Ne,jsxs as Un}from"react/jsx-runtime";var{IS_LEAF:Gn}=On,Ie="vuuTableGroupCell",Mo=({column:e,onClick:o,row:t})=>{let{columns:r}=e,[n,l]=$n(r,t),{className:i,style:a}=Q(e,Ie),s=Bn(c=>{o==null||o(c,e)},[e,o]),u=t[Gn],m=Array(l).fill(0).map((c,C)=>Ne("span",{className:`${Ie}-spacer`},C));return Un("div",{className:Wn(i,"vuuTableCell"),role:"cell",style:a,onClick:u?void 0:s,children:[m,u?null:Ne("span",{className:`${Ie}-toggle`,"data-icon":"triangle-right"}),Ne("span",{children:n})]})};import{jsx as ze}from"react/jsx-runtime";import{createElement as tr}from"react";var{IDX:qn,IS_EXPANDED:er,SELECTED:or}=Xn,J="vuuTableRow",Ve=jn(({className:e,columnMap:o,columns:t,highlighted:r,row:n,offset:l,onClick:i,onDataEdited:a,onToggleGroup:s,zebraStripes:u=!1,...m})=>{let{[qn]:c,[er]:C,[or]:f}=n,v=Ho(w=>{let y=w.shiftKey,E=w.ctrlKey||w.metaKey;i==null||i(n,y,E)},[i,n]),{True:R,First:d,Last:D}=Yn,H=Zn(J,e,{[`${J}-even`]:u&&c%2===0,[`${J}-expanded`]:C,[`${J}-highlighted`]:r,[`${J}-selected`]:f&R,[`${J}-selectedStart`]:f&d,[`${J}-selectedEnd`]:f&D}),g={transform:`translate3d(0px, ${l}px, 0px)`},M=Ho((w,y)=>{(xo(y)||Jn(y,n))&&(w.stopPropagation(),s==null||s(n,y))},[s,n]);return tr("div",{...m,"aria-rowindex":n[0],key:`row-${n[0]}`,role:"row",className:H,onClick:v,style:g},ze("span",{className:`${J}-selectionDecorator vuuStickyLeft`}),t.filter(Qn).map(w=>{let y=xo(w),E=_n(w);return ze(y?Mo:yo,{column:w,columnMap:o,onClick:y||E?M:void 0,onDataEdited:a,row:n},w.key)}),ze("span",{className:`${J}-selectionDecorator vuuStickyRight`}))});Ve.displayName="Row";import{useLayoutEffectSkipFirst as mt}from"@vuu-ui/vuu-layout";import{useTableAndColumnSettings as Sl}from"@vuu-ui/vuu-table-extras";import{useDragDropNext as Al}from"@vuu-ui/vuu-ui-controls";import{applySort as Ll,buildColumnMap as kl,isGroupColumn as Il,isJsonGroup as Nl,isValidNumber as pt,metadataKeys as zl,updateColumn as dt}from"@vuu-ui/vuu-utils";import{useCallback as L,useEffect as Vl,useMemo as Ze,useState as ft}from"react";import{isNumericColumn as nr}from"@vuu-ui/vuu-utils";var Po=e=>(o,t)=>{let r=[];if(e===void 0)return r;if(o==="header"||o==="column-menu")r.push(...rr(t,e)),r.push(...sr(t,e)),r.push(...lr(t,e)),r.push(...ir(t)),r.push({action:"column-settings",icon:"cog",label:"Column Settings",options:t}),r.push({action:"table-settings",icon:"cog",label:"DataGrid Settings",options:t});else if(o==="filter"){let{column:n,filter:l}=t,i=(l==null?void 0:l.column)===(n==null?void 0:n.name);r.push({label:"Edit filter",action:"filter-edit",options:t}),r.push({label:"Remove filter",action:"filter-remove-column",options:t}),n&&!i&&r.push({label:"Remove all filters",action:"remove-filters",options:t})}return r};function rr(e,{sort:{sortDefs:o}}){let{column:t}=e,r=[];if(t===void 0)return r;let n=o.length>0;return t.sorted==="A"?r.push({label:"Reverse Sort (DSC)",action:"sort-dsc",options:e}):t.sorted==="D"?r.push({label:"Reverse Sort (ASC)",action:"sort-asc",options:e}):typeof t.sorted=="number"?(t.sorted>0?r.push({label:"Reverse Sort (DSC)",action:"sort-add-dsc",options:e}):r.push({label:"Reverse Sort (ASC)",action:"sort-add-asc",options:e}),n&&Math.abs(t.sorted)<o.length&&r.push({label:"Remove from sort",action:"sort-remove",options:e}),r.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]})):n?(r.push({label:"Add to sort",children:[{label:"Ascending",action:"sort-add-asc",options:e},{label:"Descending",action:"sort-add-dsc",options:e}]}),r.push({label:"New Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]})):r.push({label:"Sort",children:[{label:"Ascending",action:"sort-asc",options:e},{label:"Descending",action:"sort-dsc",options:e}]}),r}function lr(e,o){let{column:t}=e;if(t===void 0||o.groupBy.length===0)return[];let{name:r,label:n=r}=t;return[{label:`Aggregate ${n}`,children:[{label:"Count",action:"agg-count",options:e},{label:"Distinct",action:"agg-distinct",options:e}].concat(nr(t)?[{label:"Sum",action:"agg-sum",options:e},{label:"Avg",action:"agg-avg",options:e},{label:"High",action:"agg-high",options:e},{label:"Low",action:"agg-low",options:e}]:[])}]}var Oe=(e,o)=>({label:`Pin ${o}`,action:`column-pin-${o}`,options:e}),Ke=e=>Oe(e,"left"),Fe=e=>Oe(e,"floating"),$e=e=>Oe(e,"right");function ir(e){let{column:o}=e;if(o===void 0)return[];let{pin:t}=o,r=[{label:"Hide column",action:"column-hide",options:e},{label:"Remove column",action:"column-remove",options:e}];return t===void 0?r.push({label:"Pin column",children:[Ke(e),Fe(e),$e(e)]}):t==="left"?r.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[Fe(e),$e(e)]}):t==="right"?r.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[Ke(e),Fe(e)]}):t==="floating"&&r.push({label:"Unpin column",action:"column-unpin",options:e},{label:"Pin column",children:[Ke(e),$e(e)]}),r}function sr(e,{groupBy:o}){let{column:t}=e,r=[];if(t===void 0)return r;let{name:n,label:l=n}=t;return o.length===0?r.push({label:`Group by ${l}`,action:"group",options:e}):r.push({label:`Add ${l} to group by`,action:"group-add",options:e}),r}import{removeColumnFromFilter as ar}from"@vuu-ui/vuu-utils";import{addGroupColumn as Eo,addSortColumn as So,AggregationType as ur,setAggregations as ie,setSortColumn as Ao}from"@vuu-ui/vuu-utils";var cr=(e,o)=>{if(e.filterStruct&&o){let[t,r]=ar(o,e.filterStruct);return{filter:r,filterStruct:t}}else return e},{Average:mr,Count:pr,Distinct:dr,High:fr,Low:Cr,Sum:br}=ur,Lo=({dataSource:e,onPersistentColumnOperation:o})=>r=>{let n=r.options;if(n.column&&e){let{column:l}=n;switch(r.menuId){case"sort-asc":return e.sort=Ao(e.sort,l,"A"),!0;case"sort-dsc":return e.sort=Ao(e.sort,l,"D"),!0;case"sort-add-asc":return e.sort=So(e.sort,l,"A"),!0;case"sort-add-dsc":return e.sort=So(e.sort,l,"D"),!0;case"group":return e.groupBy=Eo(e.groupBy,l),!0;case"group-add":return e.groupBy=Eo(e.groupBy,l),!0;case"column-hide":return o({type:"hideColumns",columns:[l]}),!0;case"column-remove":return e.columns=e.columns.filter(i=>i!==l.name),!0;case"filter-remove-column":return e.filter=cr(e.filter,l),!0;case"remove-filters":return e.filter={filter:""},!0;case"agg-avg":return e.aggregations=ie(e.aggregations,l,mr),!0;case"agg-high":return e.aggregations=ie(e.aggregations,l,fr),!0;case"agg-low":return e.aggregations=ie(e.aggregations,l,Cr),!0;case"agg-count":return e.aggregations=ie(e.aggregations,l,pr),!0;case"agg-distinct":return e.aggregations=ie(e.aggregations,l,dr),!0;case"agg-sum":return e.aggregations=ie(e.aggregations,l,br),!0;case"column-pin-floating":return o({type:"pinColumn",column:l,pin:"floating"}),!0;case"column-pin-left":return o({type:"pinColumn",column:l,pin:"left"}),!0;case"column-pin-right":return o({type:"pinColumn",column:l,pin:"right"}),!0;case"column-unpin":return o({type:"pinColumn",column:l,pin:void 0}),!0;case"column-settings":return o({type:"columnSettings",column:l}),!0;case"table-settings":return o({type:"tableSettings"}),!0;default:}}return!1};var ko=(e,o)=>{switch(o.type){case"col-size":return{...e,columns:e.columns.map(t=>t.name===o.column.name?{...t,width:o.width}:t)};case"column-prop":return{...e,columns:e.columns.map(t=>t.name===o.column.name?{...t,[o.property]:o.value}:t)};default:return e}};import{isCharacterKey as Rr}from"@vuu-ui/vuu-utils";import{useCallback as q}from"react";var Be=e=>`.vuuTable-col-headers .vuuTableHeaderCell:nth-child(${e})`,We=(e,o)=>`.vuuTable-body > [aria-rowindex='${e}'] > [role='cell']:nth-child(${o+1})`,Io=(e,[o,t])=>{var l;let r=o===-1?Be(t):We(o,t),n=(l=e.current)==null?void 0:l.querySelector(r);return gr(n)&&n.querySelector("button")||n},gr=e=>e.classList.contains("vuuTableCell-editable"),No=e=>e.querySelector(".vuuTableInputCell")!==null;function hr(e){if(e){let o=e.ariaRowIndex;if(o!==null)return parseInt(o,10)}return-1}var vr=e=>e.closest('[role="row"]'),zo=e=>hr(vr(e));var Vo=({navigate:e})=>{let o=q(()=>{e()},[e]),t=q(s=>{let u=s.target,m=u.matches("input")?u:u.querySelector("input");m&&(m.focus(),m.select())},[]),r=q(s=>{let m=s.target.querySelector("input");m&&(m.focus(),m.select())},[]),n=q(s=>{let u=s.target;No(u)&&(Rr(s.key)?t(s):s.key==="Enter"&&r(s))},[t,r]),l=q(s=>{let u=s.target;(u.matches("input")||u.querySelector("input"))&&(t(s),s.stopPropagation())},[t]),i=q(s=>{s.target.removeEventListener("vuu-commit",o,!0)},[o]),a=q(s=>{s.target.addEventListener("vuu-commit",o,!0)},[o]);return{onBlur:i,onDoubleClick:l,onFocus:a,onKeyDown:n}};import{isVuuFeatureInvocation as yr}from"@vuu-ui/vuu-data";import{getFullRange as Ue,NULL_RANGE as Ko}from"@vuu-ui/vuu-utils";import{useCallback as he,useEffect as Fo,useMemo as Mr,useRef as ve,useState as xr}from"react";import{isRowSelectedLast as Tr,metadataKeys as Dr,WindowRange as wr}from"@vuu-ui/vuu-utils";var{SELECTED:Ge}=Dr,ge=class{constructor({from:o,to:t}){this.rowCount=0;this.setRowCount=o=>{o<this.data.length&&(this.data.length=o),this.rowCount=o};this.range=new wr(o,t),this.data=new Array(Math.max(0,t-o)),this.rowCount=0}add(o){let[t]=o;if(this.isWithinRange(t)){let r=t-this.range.from;if(this.data[r]=o,o[Ge]){let n=this.data[r-1];Tr(n)&&(this.data[r-1]=n.slice(),this.data[r-1][Ge]-=4)}}}getAtIndex(o){return this.range.isWithin(o)&&this.data[o-this.range.from]!=null?this.data[o-this.range.from]:void 0}isWithinRange(o){return this.range.isWithin(o)}setRange({from:o,to:t}){if(o!==this.range.from||t!==this.range.to){let[r,n]=this.range.overlap(o,t),l=new Array(Math.max(0,t-o));for(let i=r;i<n;i++){let a=this.getAtIndex(i);if(a){let s=i-o;l[s]=a}}this.data=l,this.range.from=o,this.range.to=t}}getSelectedRows(){return this.data.filter(o=>o[Ge]!==0)}};var $o=({dataSource:e,onFeatureInvocation:o,onSizeChange:t,onSubscribed:r,range:n=Ko,renderBufferSize:l=0})=>{let[,i]=xr(null),a=ve([]),s=ve(!0),u=ve(!1),m=ve(Ko),c=Mr(()=>new ge(Ue(n,l)),[]),C=he(d=>{for(let D of d)c.add(D);a.current=c.data,s.current?i({}):console.log("ignore update as we're not mounted")},[c]),f=he(d=>{d.type==="subscribed"?r==null||r(d):d.type==="viewport-update"?(typeof d.size=="number"&&(t==null||t(d.size),c.setRowCount(d.size)),d.rows?C(d.rows):typeof d.size=="number"&&(a.current=c.data,u.current=!0)):yr(d)?o==null||o(d):console.log(`useDataSource unexpected message ${d.type}`)},[c,o,t,r,C]),v=he(()=>c.getSelectedRows(),[c]);Fo(()=>{var d;return s.current=!0,(d=e.resume)==null||d.call(e),()=>{var D;s.current=!1,(D=e.suspend)==null||D.call(e)}},[e]),Fo(()=>{var d;e.status==="disabled"?(d=e.enable)==null||d.call(e,f):e==null||e.subscribe({range:Ue(n,l)},f)},[e,f,n,l]);let R=he(d=>{let D=Ue(d,l);c.setRange(D),e.range=m.current=D,e.emit("range",d)},[e,c,l]);return{data:a.current,dataRef:a,getSelectedRows:v,range:m.current,setRange:R}};import{useMemo as Hr,useRef as Pr}from"react";var Oo=e=>{let o=Pr(e);return Hr(()=>o.current,[])};import{useControlled as Er}from"@salt-ds/core";import{useCallback as F,useEffect as Bo,useRef as Re}from"react";var Uo=new Set(["Home","End","PageUp","PageDown","ArrowDown","ArrowUp"]),Je=new Set(Uo);Je.add("ArrowLeft");Je.add("ArrowRight");var Sr=(e,o)=>{switch(o){case"cell":return Je.has(e);case"row":return Uo.has(e);default:return!1}},Ar=["Home","End","PageUp","PageDown"],Wo=e=>Ar.includes(e),Lr=[-1,-1],_e=[void 0,void 0],_o=(e,o=e.closest(".vuuTable-contentContainer"))=>{if(o){let t=o==null?void 0:o.getBoundingClientRect(),r=e.getBoundingClientRect();if(r)return r.bottom>t.bottom?["down",r.bottom-t.bottom]:r.top<t.top?["up",r.top-t.top]:_e;throw Error("Whats going on, row not found")}else throw Error("Whats going on, scrollbar container not found")},kr=e=>{var t;let o=e.closest(".vuuTable-contentContainer");if(o){let r=e.closest(".vuuTableRow");if(r){let n=_o(r,o);if(n!==_e)return n;let l=o==null?void 0:o.getBoundingClientRect(),i=(t=e.closest(".vuuTableCell"))==null?void 0:t.getBoundingClientRect();if(i){if(i.right>l.right)return["right",i.right+6-l.right];if(i.left<l.left)return["left",i.left-l.left]}else throw Error("Whats going on, cell not found")}}return _e};function Go(e,[o,t],r,n){return e==="ArrowUp"?o>-1?[o-1,t]:[o,t]:e==="ArrowDown"?o===-1?[0,t]:o===n-1?[o,t]:[o+1,t]:e==="ArrowRight"?t<r?[o,t+1]:[o,t]:e==="ArrowLeft"?t>1?[o,t-1]:[o,t]:[o,t]}var Jo=({columnCount:e=0,containerRef:o,disableFocus:t=!1,defaultHighlightedIndex:r,disableHighlightOnFocus:n,highlightedIndex:l,navigationStyle:i,requestScroll:a,onHighlight:s,rowCount:u=0,viewportRowCount:m})=>{var W;let c=Re([-1,-1]),C=Re(),f=Re([-1,0]),v=Re(),[R,d]=Er({controlled:l,default:r,name:"UseKeyboardNavigation"});v.current=R;let D=F((b,h=!1)=>{s==null||s(b),d(b)},[s,d]),H=b=>b==null?void 0:b.closest("[role='columnHeader'],[role='cell']"),g=b=>{var h,T;if(b.role==="columnHeader")return[-1,parseInt((h=b.dataset.idx)!=null?h:"-1",10)];{let A=b.closest("[role='row']");if(A){let N=parseInt((T=A.ariaRowIndex)!=null?T:"-1",10),ue=Array.from(A.childNodes).indexOf(b);return[N,ue]}}return Lr},M=F(b=>{var h;if(o.current){let T=Io(o,b);if(T){T!==C.current&&((h=C.current)==null||h.removeAttribute("tabindex"),C.current=T,T.setAttribute("tabindex","0"));let[A,N]=kr(T);A&&N&&(a==null||a({type:"scroll-distance",distance:N,direction:A})),console.log("activeCell focus"),T.focus({preventScroll:!0})}}},[o,a]),w=F((b,h,T=!1)=>{let A=[b,h];f.current=A,i==="row"?d(b):M(A),T&&(c.current=A)},[M,i,d]),y=F((b,[h,T])=>new Promise(A=>{let N=h;switch(b){case"PageDown":N=Math.min(u-1,h+m),a==null||a({type:"scroll-page",direction:"down"});break;case"PageUp":N=Math.max(0,h-m),a==null||a({type:"scroll-page",direction:"up"});break;case"Home":N=0,a==null||a({type:"scroll-end",direction:"home"});break;case"End":N=u-1,a==null||a({type:"scroll-end",direction:"end"});break}setTimeout(()=>{A([N,T])},90)}),[a,u,m]),E=F(()=>{var b;if(n!==!0&&(b=o.current)!=null&&b.contains(document.activeElement)){let h=H(document.activeElement);h&&(c.current=g(h),i==="row"&&d(c.current[0]))}},[n,o,i,d]),S=F(async b=>{let[h,T]=Wo(b)?await y(b,f.current):Go(b,f.current,e,u),[A,N]=f.current;(h!==A||T!==N)&&w(h,T,!0)},[e,y,u,w]),z=F(b=>{let{current:h}=o,T=h==null?void 0:h.querySelector(`[aria-rowindex="${b}"]`);if(T){let[A,N]=_o(T);A&&N&&(a==null||a({type:"scroll-distance",distance:N,direction:A}))}},[o,a]),G=F(async b=>{let{current:h}=v,[T]=Wo(b)?await y(b,[h!=null?h:-1,0]):Go(b,[h!=null?h:-1,0],e,u);T!==h&&(D(T),z(T))},[e,y,u,z,D]);Bo(()=>{l!==void 0&&l!==-1&&z(l)},[l,z]);let $=F(b=>{u>0&&Sr(b.key,i)&&(b.preventDefault(),b.stopPropagation(),i==="row"?G(b.key):S(b.key))},[u,i,G,S]),O=F(b=>{let h=b.target,T=H(h);if(T){let[A,N]=g(T);w(A,N)}},[w]),x=F(()=>{D(-1)},[D]),U=F(b=>{let h=zo(b.target);h!==-1&&h!==v.current&&D(h)},[D]),ae=F(()=>{S("ArrowDown")},[S]),k=((W=o.current)==null?void 0:W.firstChild)!=null;return Bo(()=>{if(k&&C.current===void 0&&!t){let{current:b}=o,h=(b==null?void 0:b.querySelector(Be(0)))||(b==null?void 0:b.querySelector(We(0,0)));h&&(h.setAttribute("tabindex","0"),C.current=h)}},[o,t,k]),{highlightedIndexRef:v,navigate:ae,onClick:O,onFocus:E,onKeyDown:$,onMouseLeave:i==="row"?x:void 0,onMouseMove:i==="row"?U:void 0}};import{deselectItem as Ir,dispatchMouseEvent as Nr,isRowSelected as zr,metadataKeys as Vr,selectItem as Kr}from"@vuu-ui/vuu-utils";import{useCallback as Xe,useRef as Xo}from"react";var{IDX:Fr}=Vr,$r=[],Or=["Enter"," "],Qo=({highlightedIndexRef:e,selectionKeys:o=Or,selectionModel:t,onSelect:r,onSelectionChange:n})=>{let l=Xo(-1),i=Xo($r),a=Xe(m=>o.includes(m.key),[o]),s=Xe((m,c,C)=>{let{[Fr]:f}=m,{current:v}=l,{current:R}=i,D=(zr(m)?Ir:Kr)(t,R,f,c,C,v);i.current=D,l.current=f,r==null||r(m),n==null||n(D)},[r,n,t]);return{onKeyDown:Xe(m=>{if(a(m)){let{current:c}=e;if(c!==void 0&&c!==-1){let C=m.target.querySelector(`[aria-rowindex="${c}"]`);C&&Nr(C,"click")}}},[e,a]),onRowClick:s}};import{useContextMenu as Br}from"@vuu-ui/vuu-popups";import{buildColumnMap as Wr}from"@vuu-ui/vuu-utils";import{useCallback as Gr}from"react";var Ur=[],Yo=({columns:e,data:o,dataSource:t,getSelectedRows:r})=>{let[n]=Br();return Gr(i=>{var m;let a=i.target,s=a==null?void 0:a.closest("div[role='cell']"),u=a==null?void 0:a.closest("div[role='row']");if(s&&u){let{selectedRowsCount:c}=t,C=Wr(e),f=parseInt((m=u.ariaRowIndex)!=null?m:"-1"),v=Array.from(u.childNodes).indexOf(s),R=o.find(([D])=>D===f),d=e[v];n(i,"grid",{columnMap:C,columnName:d,row:R,selectedRows:c===0?Ur:r(),viewport:t.viewport})}},[e,o,t,r,n])};import{applyFilterToColumns as _r,applyGroupByToColumns as Jr,applySortToColumns as Xr,getCellRenderer as Qe,getColumnLabel as Qr,getTableHeadings as Yr,getValueFormatter as Zr,hasValidationRules as jr,isFilteredColumn as qr,isGroupColumn as el,isPinned as ol,logger as tl,metadataKeys as nl,replaceColumn as ee,sortPinnedColumns as Zo,stripFilterFromColumns as rl,subscribedOnly as ll}from"@vuu-ui/vuu-utils";import{buildValidationChecker as il}from"@vuu-ui/vuu-ui-controls";import{useReducer as sl}from"react";var{info:Ye}=tl("useTableModel"),al=100,ul=nl.count,cl=({serverDataType:e})=>e===void 0,jo=(e,o)=>{let t=o==null?void 0:o.columns.find(({name:r})=>r===e.name);return t?t.serverDataType:e.serverDataType},ml=["int","long","double"],qo=e=>e===void 0?void 0:ml.includes(e)?"right":"left",et=e=>e.type==="columnSettings",ot=e=>e.type==="tableSettings",pl=(e,o)=>{switch(Ye==null||Ye(`TableModelReducer ${o.type}`),o.type){case"init":return nt(o);case"moveColumn":return fl(e,o);case"resizeColumn":return gl(e,o);case"setTableSchema":return hl(e,o);case"hideColumns":return Cl(e,o);case"showColumns":return bl(e,o);case"pinColumn":return vl(e,o);case"updateColumnProp":return se(e,o);case"tableConfig":return lt(e,o);default:return console.log(`unhandled action ${o.type}`),e}},tt=(e,o)=>{let[t,r]=sl(pl,{tableConfig:e,dataSource:o},nt),{columns:n,headings:l,tableConfig:i,...a}=t;return{columns:n,dispatchColumnAction:r,headings:l,tableAttributes:a,tableConfig:i}};function nt({dataSource:e,tableConfig:o}){let{columns:t,...r}=o;console.log(JSON.stringify(r,null,2));let{config:n,tableSchema:l}=e,i=t.filter(ll(n==null?void 0:n.columns)).map(rt(r,l)),a=i.some(ol)?Zo(i):i,s={columns:a,headings:Yr(a),tableConfig:o,...r};if(n){let{columns:u,...m}=n;s=lt(s,{type:"tableConfig",...m})}return s}var dl=(e,o)=>o==="uppercase"?e.toUpperCase():o==="capitalize"?e[0].toUpperCase()+e.slice(1).toLowerCase():e,rt=(e,o)=>(t,r)=>{let{columnDefaultWidth:n=al,columnFormatHeader:l}=e,i=jo(t,o),{align:a=qo(i),key:s,name:u,label:m=Qr(t),width:c=n,...C}=t,f={...C,align:a,CellRenderer:Qe(t),HeaderCellLabelRenderer:Qe(t,"col-label"),HeaderCellContentRenderer:Qe(t,"col-content"),clientSideEditValidationCheck:jr(t.type)?il(t.type.renderer.rules):void 0,label:dl(m,l),key:s!=null?s:r+ul,name:u,originalIdx:r,serverDataType:i,valueFormatter:Zr(t,i),width:c};return el(f)&&(f.columns=f.columns.map(v=>rt(e)(v,v.key))),f};function fl(e,{column:o,moveBy:t}){let{columns:r}=e;if(typeof t=="number"){let n=r.indexOf(o),l=r.slice(),[i]=l.splice(n,1);return l.splice(n+t,0,i),{...e,columns:l}}return e}function Cl(e,{columns:o}){return o.some(t=>t.hidden!==!0)?o.reduce((t,r)=>r.hidden!==!0?se(t,{type:"updateColumnProp",column:r,hidden:!0}):t,e):e}function bl(e,{columns:o}){return o.some(t=>t.hidden)?o.reduce((t,r)=>r.hidden?se(t,{type:"updateColumnProp",column:r,hidden:!1}):t,e):e}function gl(e,{column:o,phase:t,width:r}){let n="updateColumnProp",l=t!=="end";switch(t){case"begin":return se(e,{type:n,column:o,resizing:l});case"end":return se(e,{type:n,column:o,resizing:l,width:r});case"resize":return se(e,{type:n,column:o,width:r});default:throw Error(`useTableModel.resizeColumn, invalid resizePhase ${t}`)}}function hl(e,{tableSchema:o}){let{columns:t}=e;if(t.some(cl)){let r=t.map(n=>{var i;let l=jo(n,o);return{...n,align:(i=n.align)!=null?i:qo(l),serverDataType:l}});return{...e,columns:r}}else return e}function vl(e,o){let{columns:t}=e,{column:r,pin:n}=o,l=t.find(i=>i.name===r.name);return l?(t=ee(t,{...l,pin:n}),t=Zo(t),{...e,columns:t}):e}function se(e,o){let{columns:t,tableConfig:r}=e,{align:n,column:l,hidden:i,label:a,resizing:s,width:u}=o,m=t.find(c=>c.name===l.name);if(m&&((n==="left"||n==="right")&&(t=ee(t,{...m,align:n})),typeof a=="string"&&(t=ee(t,{...m,label:a})),typeof s=="boolean"&&(t=ee(t,{...m,resizing:s})),typeof i=="boolean"&&(t=ee(t,{...m,hidden:i})),typeof u=="number")){t=ee(t,{...m,width:u});let c=r.columns.find(C=>C.name===l.name);c&&(r={...r,columns:ee(r.columns,{...c,width:u})})}return{...e,columns:t,tableConfig:r}}function lt(e,{confirmed:o,filter:t,groupBy:r,sort:n}){let l=r!==void 0,i=typeof(t==null?void 0:t.filter)=="string",a=n&&n.sortDefs.length>0,s=e;return l&&(s={...e,columns:Jr(s.columns,r,o)}),a&&(s={...e,columns:Xr(s.columns,n)}),i?s={...e,columns:_r(s.columns,t)}:s.columns.some(qr)&&(s={...e,columns:rl(s.columns)}),s}import{useCallback as Y,useRef as me}from"react";var it=e=>{let{scrollLeft:o,scrollTop:t}=e,{clientHeight:r,clientWidth:n,scrollHeight:l,scrollWidth:i}=e,a=o/(i-n),s=t/(l-r);return[a,s]},st=({onAttach:e,onDetach:o})=>{let t=me(null);return Y(n=>{if(n)t.current=n,e==null||e(n);else if(t.current){let{current:l}=t;t.current=n,o==null||o(l)}},[e,o])},at=({maxScrollLeft:e,maxScrollTop:o,onHorizontalScroll:t,onVerticalScroll:r,rowHeight:n,viewportRowCount:l})=>{let i=me(!1),a=me({scrollTop:0,scrollLeft:0}),s=me(null),u=me(null),m=Y(()=>{let{current:g}=u,{current:M}=s,{current:w}=i;if(w)i.current=!1;else if(g&&M){let[y,E]=it(M),S=Math.round(y*e),z=Math.round(E*o);g.scrollTo({left:S,top:z,behavior:"auto"})}},[e,o]),c=Y(()=>{let{current:g}=u,{current:M}=s,{current:w}=a;if(g&&M){let{scrollLeft:y,scrollTop:E}=g,[S,z]=it(g);i.current=!0,M.scrollLeft=Math.round(S*e),M.scrollTop=Math.round(z*o),w.scrollTop!==E&&(w.scrollTop=E,r==null||r(E,z)),w.scrollLeft!==y&&(w.scrollLeft=y,t==null||t(y))}},[e,o,t,r]),C=Y(g=>{s.current=g,g.addEventListener("scroll",m,{passive:!0})},[m]),f=Y(g=>{s.current=null,g.removeEventListener("scroll",m)},[m]),v=Y(g=>{u.current=g,g.addEventListener("scroll",c,{passive:!0})},[c]),R=Y(g=>{u.current=null,g.removeEventListener("scroll",c)},[c]),d=st({onAttach:v,onDetach:R}),D=st({onAttach:C,onDetach:f}),H=Y(g=>{let{current:M}=u;if(M){let{scrollLeft:w,scrollTop:y}=M;if(i.current=!1,g.type==="scroll-distance"){let E=w,S=y;g.direction==="up"||g.direction==="down"?S=Math.min(Math.max(0,y+g.distance),o):E=Math.min(Math.max(0,w+g.distance),e),M.scrollTo({top:S,left:E,behavior:"smooth"})}else if(g.type==="scroll-page"){let{direction:E}=g,S=l*(E==="down"?n:-n),z=Math.min(Math.max(0,y+S),o);M.scrollTo({top:z,left:w,behavior:"auto"})}else if(g.type==="scroll-end"){let{direction:E}=g,S=E==="end"?o:0;M.scrollTo({top:S,left:M.scrollLeft,behavior:"auto"})}}},[e,o,n,l]);return{scrollbarContainerRef:D,contentContainerRef:d,requestScroll:H}};import{useCallback as Rl,useMemo as Te,useRef as Tl}from"react";import{actualRowPositioning as Dl,virtualRowPositioning as wl}from"@vuu-ui/vuu-utils";var yl=15e5,Ml={contentHeight:0,contentWidth:0,getRowAtPosition:()=>-1,getRowOffset:()=>-1,horizontalScrollbarHeight:0,maxScrollContainerScrollHorizontal:0,maxScrollContainerScrollVertical:0,pinnedWidthLeft:0,pinnedWidthRight:0,rowCount:0,setPctScrollTop:()=>{},totalHeaderHeight:0,verticalScrollbarWidth:0,viewportBodyHeight:0},xl=e=>{let o=0,t=0,r=0;for(let n of e){let{hidden:l,pin:i,width:a}=n,s=l?0:a;i==="left"?o+=s:i==="right"?t+=s:r+=s}return{pinnedWidthLeft:o+4,pinnedWidthRight:t+4,unpinnedWidth:r}},ut=({columns:e,headerHeight:o,headings:t,rowCount:r,rowHeight:n,size:l})=>{let i=Tl(0),s=Math.min(r,yl)*n,m=r*n-s,{pinnedWidthLeft:c,pinnedWidthRight:C,unpinnedWidth:f}=Te(()=>xl(e),[e]),[v,R]=Te(()=>Dl(n),[n]),[d,D]=Te(()=>m?wl(n,m,i):[v,R],[R,v,m,n]),H=Rl(g=>{i.current=g},[]);return Te(()=>{var g;if(l){let M=t.length,w=15,y=c+f+C,E=y>l.width?w:0,S=o*(1+M),z=s-(((g=l==null?void 0:l.height)!=null?g:0)-E)+S,G=y-l.width+c,$=(l.height-o)/n,O=Number.isInteger($)?$+1:Math.ceil($),x=l.height-S,U=s>x?w:0;return{contentHeight:s,getRowAtPosition:D,getRowOffset:d,horizontalScrollbarHeight:E,maxScrollContainerScrollHorizontal:G,maxScrollContainerScrollVertical:z,pinnedWidthLeft:c,pinnedWidthRight:C,rowCount:O,contentWidth:y,setPctScrollTop:H,totalHeaderHeight:S,verticalScrollbarWidth:U,viewportBodyHeight:x}}else return Ml},[l,t.length,c,f,C,s,o,n,D,d,H])};import{useCallback as Hl,useEffect as Pl,useRef as El}from"react";var ct=({columns:e,getRowAtPosition:o,setRange:t,viewportMeasurements:r})=>{let n=El(0),{contentWidth:l,rowCount:i}=r,a=Hl(s=>{let u=o(s);u!==n.current&&(n.current=u,t({from:u,to:u+i}))},[o,t,i]);return Pl(()=>{let{current:s}=n,u={from:s,to:s+i};t(u)},[t,i]),{onVerticalScroll:a}};var De=e=>e,{KEY:Kl,IS_EXPANDED:Ct,IS_LEAF:bt}=zl,Fl={draggable:void 0,onMouseDown:void 0},$l=()=>Fl,Ol=(e,o)=>({...e,columns:e.columns.concat(o)}),gt=({allowDragDrop:e=!1,availableColumns:o,config:t,containerRef:r,dataSource:n,disableFocus:l,headerHeight:i=25,highlightedIndex:a,id:s,navigationStyle:u="cell",onAvailableColumnsChange:m,onConfigChange:c,onDragStart:C,onDrop:f,onFeatureInvocation:v,onHighlight:R,onRowClick:d,onSelect:D,onSelectionChange:H,renderBufferSize:g=0,rowHeight:M=20,selectionModel:w,size:y})=>{let[E,S]=ft(n.size);if(n===void 0)throw Error("no data source provided to Vuu Table");let z=e?Al:$l,G=Ze(()=>Po(n),[n]),$=L(p=>{S(p)},[]),{columns:O,dispatchColumnAction:x,headings:U,tableAttributes:ae,tableConfig:k}=tt(t,n);mt(()=>{x({type:"init",dataSource:n,tableConfig:k})},[k,n,x]);let W=L(p=>{x({type:"init",tableConfig:p,dataSource:n}),c==null||c(De(p))},[n,x,c]),[b,h]=ft(),[T,A]=Ze(()=>{let p=(P,I)=>{let K=dt(O,P,{width:I});h(K)};return[b!=null?b:O,p]},[O,b]),N=Ze(()=>kl(n.columns),[n.columns]),{getRowAtPosition:ue,getRowOffset:qe,setPctScrollTop:eo,..._}=ut({columns:T,headerHeight:i,headings:U,rowCount:E,rowHeight:M,size:y}),oe=Oo({from:0,to:_.rowCount}),Me=L(({tableSchema:p})=>{p?x({type:"setTableSchema",tableSchema:p}):console.log("subscription message with no schema")},[x]),{data:B,dataRef:pe,getSelectedRows:xe,range:de,setRange:te}=$o({dataSource:n,onFeatureInvocation:v,renderBufferSize:g,onSizeChange:$,onSubscribed:Me,range:oe}),St=L(p=>{console.log("settings changed"),x({type:"init",tableConfig:p,dataSource:n}),c==null||c(De(p))},[n,x,c]),At=L(p=>{n.config={...n.config,...p}},[n]);Vl(()=>{n.on("config",(p,P)=>{x({type:"tableConfig",...p,confirmed:P})})},[n,x]);let Lt=L(p=>{n.columns=n.columns.concat(p.name),W(Ol(k,p))},[n,k,W]),oo=L(p=>{let{columns:P}=p,I=P.map(V=>V.name),K={...k,columns:k.columns.map(V=>I.includes(V.name)?{...V,hidden:!0}:V)};W(K)},[k,W]),to=L(p=>{W({...k,columns:dt(k.columns,{...p.column,pin:p.pin})})},[k,W]),{showColumnSettingsPanel:no,showTableSettingsPanel:ro}=Sl({availableColumns:o!=null?o:k.columns.map(({name:p,serverDataType:P="string"})=>({name:p,serverDataType:P})),onAvailableColumnsChange:m,onConfigChange:St,onCreateCalculatedColumn:Lt,onDataSourceConfigChange:At,tableConfig:k}),kt=L(p=>{if(et(p))no(p);else if(ot(p))ro();else switch(p.type){case"hideColumns":return oo(p);case"pinColumn":return to(p);default:x(p)}},[x,oo,to,no,ro]),It=Lo({dataSource:n,onPersistentColumnOperation:kt}),Nt=L((p,P=!1,I)=>{n&&(n.sort=Ll(n.sort,p,P,I))},[n]),zt=L((p,P,I)=>{let K=T.find(V=>V.name===P);if(K)p==="resize"?pt(I)&&A(P,I):p==="end"?pt(I)&&(x({type:"resizeColumn",phase:p,column:K,width:I}),h(void 0),c==null||c(De(ko(k,{type:"col-size",column:K,width:I})))):(h(void 0),x({type:"resizeColumn",phase:p,column:K,width:I}));else throw Error(`useDataTable.handleColumnResize, column ${P} not found`)},[T,k,x,c,A]),Vt=L((p,P)=>{let I=Nl(P,p),K=p[Kl];if(p[Ct]){if(n.closeTreeNode(K,!0),I){let V=T.indexOf(P);n.getRowsAtDepth(V+1).some(ne=>ne[Ct]||ne[bt])||x({type:"hideColumns",columns:T.slice(V+2)})}}else if(n.openTreeNode(K),I){let V=n.getChildRows(K),ce=T.indexOf(P)+1,ne=[T[ce]];V.some(He=>He[bt])&&ne.push(T[ce+1]),ne.some(He=>He.hidden)&&x({type:"showColumns",columns:ne})}},[T,n,x]),{onVerticalScroll:lo}=ct({columns:T,getRowAtPosition:ue,setRange:te,viewportMeasurements:_}),Kt=L(p=>{lo(p)},[lo]),{requestScroll:Ft,...$t}=at({maxScrollLeft:_.maxScrollContainerScrollHorizontal,maxScrollTop:_.maxScrollContainerScrollVertical,rowHeight:M,onVerticalScroll:Kt,viewportRowCount:_.rowCount}),{highlightedIndexRef:io,navigate:Ot,onFocus:so,onKeyDown:ao,...Bt}=Jo({columnCount:T.filter(p=>p.hidden!==!0).length,containerRef:r,disableFocus:l,highlightedIndex:a,navigationStyle:u,requestScroll:Ft,rowCount:n==null?void 0:n.size,onHighlight:R,viewportRange:de,viewportRowCount:_.rowCount}),{onBlur:Wt,onDoubleClick:Gt,onKeyDown:uo,onFocus:co}=Vo({navigate:Ot}),Ut=L(p=>{so(),p.defaultPrevented||co(p)},[co,so]),_t=Yo({columns:T,data:B,dataSource:n,getSelectedRows:xe}),Jt=L(p=>{n.groupBy=p.map(P=>P.name)},[n]),Xt=L(p=>{Il(p)?n.groupBy=[]:n&&n.groupBy.includes(p.name)&&(n.groupBy=n.groupBy.filter(P=>P!==p.name))},[n]),Qt=L(p=>{n.select(p),H==null||H(p)},[n,H]),{onKeyDown:mo,onRowClick:po}=Qo({highlightedIndexRef:io,onSelect:D,onSelectionChange:Qt,selectionModel:w}),Yt=L(p=>{ao(p),p.defaultPrevented||uo(p),p.defaultPrevented||mo(p)},[ao,uo,mo]),Zt=L((p,P,I)=>{po(p,P,I),d==null||d(p)},[d,po]);mt(()=>{x({type:"init",tableConfig:t,dataSource:n})},[t,n,x]);let jt=L(p=>{let P={...k,columns:p};x({type:"init",tableConfig:P,dataSource:n}),c==null||c(De(P))},[n,x,c,k]),qt=L(p=>{f==null||f(p)},[f]),en=L(async(p,P,I)=>n.applyEdit(p,P,I),[n]),on=L(p=>{let{initialDragElement:P}=p,I=P.ariaRowIndex;if(I){let K=parseInt(I),V=pe.current.find(ce=>ce[0]===K);V&&p.setPayload(V)}C==null||C(p)},[pe,C]),{onMouseDown:tn,draggable:nn}=z({allowDragDrop:e,containerRef:r,draggableClassName:"vuuTable",id:s,onDragStart:on,onDrop:qt,orientation:"vertical",itemQuery:".vuuTableRow"});return{...Bt,draggableRow:nn,onBlur:Wt,onDoubleClick:Gt,onFocus:Ut,onKeyDown:Yt,onMouseDown:tn,columnMap:N,columns:T,data:B,handleContextMenuAction:It,headings:U,highlightedIndex:io.current,menuBuilder:G,onContextMenu:_t,onDataEdited:en,onMoveColumn:jt,onMoveGroupColumn:Jt,onRemoveGroupColumn:Xt,onRowClick:Zt,onSortColumn:Nt,onResizeColumn:zt,onToggleGroup:Vt,scrollProps:$t,tableAttributes:ae,tableConfig:k,viewportMeasurements:_}};import{isGroupColumn as Ul,isNotHidden as _l}from"@vuu-ui/vuu-utils";import Jl from"classnames";import{useDragDropNext as Bl}from"@vuu-ui/vuu-ui-controls";import{moveColumnTo as ht,visibleColumnAtIndex as Wl}from"@vuu-ui/vuu-utils";import{useCallback as vt,useRef as Gl}from"react";var Rt=({columns:e,onMoveColumn:o,onSortColumn:t,tableConfig:r})=>{let n=Gl(null),l=vt((m,c)=>{let C=e[m],f=ht(e,C,c),v=({name:H})=>g=>g.name===H,R=f.findIndex(v(C)),d=f[R+1],D=d?r.columns.findIndex(v(d)):-1;o(ht(r.columns,C,D))},[e,o,r.columns]),i=vt(m=>{var d;let C=m.target.closest(".vuuTableHeaderCell"),f=parseInt((d=C==null?void 0:C.dataset.index)!=null?d:"-1"),v=Wl(e,f),R=m.shiftKey;v&&t(v,R)},[e,t]),{onMouseDown:a,draggable:s,...u}=Bl({allowDragDrop:!0,containerRef:n,draggableClassName:"vuuTable",onDrop:l,orientation:"horizontal",itemQuery:".vuuTableHeaderCell"});return{containerRef:n,draggableColumn:s,draggedColumnIndex:u.draggedItemIndex,onClick:i,onMouseDown:a}};import{jsx as we,jsxs as Tt}from"react/jsx-runtime";var Dt=({classBase:e="vuuTable",columns:o,headings:t,onMoveColumn:r,onMoveGroupColumn:n,onRemoveGroupColumn:l,onResizeColumn:i,onSortColumn:a,tableConfig:s,tableId:u})=>{let{containerRef:m,draggableColumn:c,draggedColumnIndex:C,onClick:f,onMouseDown:v}=Rt({columns:o,onMoveColumn:r,onSortColumn:a,tableConfig:s});return Tt("div",{className:`${e}-col-headings`,ref:m,children:[t.map((R,d)=>we("div",{className:"vuuTable-heading",children:R.map(({label:D,width:H},g)=>we("div",{className:"vuuTable-headingCell",style:{width:H},children:D},g))},d)),Tt("div",{className:`${e}-col-headers`,role:"row",children:[o.filter(_l).map((R,d)=>Ul(R)?we(ke,{column:R,"data-index":d,onMoveColumn:n,onRemoveColumn:l,onResize:i},R.name):we(To,{className:Jl({"vuuDraggable-dragAway":d===C}),column:R,"data-index":d,id:`${u}-col-${d}`,onClick:f,onMouseDown:v,onResize:i},R.name)),c]})]})};import{jsx as Z,jsxs as yt}from"react/jsx-runtime";var X="vuuTable",{IDX:wt,RENDER_IDX:ti}=Zl,ni=({Row:e=Ve,allowDragDrop:o,availableColumns:t,config:r,containerRef:n,dataSource:l,disableFocus:i=!1,highlightedIndex:a,id:s,navigationStyle:u="cell",onAvailableColumnsChange:m,onConfigChange:c,onDragStart:C,onDrop:f,onFeatureInvocation:v,onHighlight:R,onRowClick:d,onSelect:D,onSelectionChange:H,renderBufferSize:g=0,rowHeight:M=20,selectionModel:w="extended",showColumnHeaders:y=!0,headerHeight:E=y?25:0,size:S})=>{let z=Ql(s),{columnMap:G,columns:$,data:O,draggableRow:x,handleContextMenuAction:U,headings:ae,highlightedIndex:k,onDataEdited:W,onMoveColumn:b,onMoveGroupColumn:h,onRemoveGroupColumn:T,onResizeColumn:A,onRowClick:N,onSortColumn:ue,onToggleGroup:qe,menuBuilder:eo,scrollProps:_,tableAttributes:oe,tableConfig:Me,viewportMeasurements:B,...pe}=gt({allowDragDrop:o,availableColumns:t,config:r,containerRef:n,dataSource:l,disableFocus:i,headerHeight:E,highlightedIndex:a,id:z,navigationStyle:u,onAvailableColumnsChange:m,onConfigChange:c,onDragStart:C,onDrop:f,onFeatureInvocation:v,onHighlight:R,onRowClick:d,onSelect:D,onSelectionChange:H,renderBufferSize:g,rowHeight:M,selectionModel:w,size:S}),xe=Mt(`${X}-contentContainer`,{[`${X}-colLines`]:oe.columnSeparators,[`${X}-rowLines`]:oe.rowSeparators,[`${X}-zebra`]:oe.zebraStripes}),de={"--content-height":`${B.contentHeight}px`,"--content-width":`${B.contentWidth}px`,"--horizontal-scrollbar-height":`${B.horizontalScrollbarHeight}px`,"--pinned-width-left":`${B.pinnedWidthLeft}px`,"--pinned-width-right":`${B.pinnedWidthRight}px`,"--header-height":`${E}px`,"--row-height":`${M}px`,"--total-header-height":`${B.totalHeaderHeight}px`,"--vertical-scrollbar-width":`${B.verticalScrollbarWidth}px`,"--viewport-body-height":`${B.viewportBodyHeight}px`};return yt(Yl,{menuActionHandler:U,menuBuilder:eo,children:[Z("div",{className:`${X}-scrollbarContainer`,ref:_.scrollbarContainerRef,style:de,children:Z("div",{className:`${X}-scrollbarContent`})}),Z("div",{className:xe,ref:_.contentContainerRef,style:de,children:yt("div",{...pe,className:`${X}-table`,tabIndex:i?void 0:-1,children:[y?Z(Dt,{columns:$,headings:ae,onMoveColumn:b,onMoveGroupColumn:h,onRemoveGroupColumn:T,onResizeColumn:A,onSortColumn:ue,tableConfig:Me,tableId:z}):null,Z("div",{className:`${X}-body`,children:O.map(te=>Z(e,{columnMap:G,columns:$,highlighted:k===te[wt],onClick:N,onDataEdited:W,row:te,offset:M*te[wt]+B.totalHeaderHeight,onToggleGroup:qe,zebraStripes:oe.zebraStripes},te[ti]))})]})}),x]})},hm=ql(function({Row:o,allowDragDrop:t,availableColumns:r,className:n,config:l,dataSource:i,disableFocus:a,highlightedIndex:s,id:u,navigationStyle:m,onAvailableColumnsChange:c,onConfigChange:C,onDragStart:f,onDrop:v,onFeatureInvocation:R,onHighlight:d,onRowClick:D,onSelect:H,onSelectionChange:g,renderBufferSize:M,rowHeight:w,selectionModel:y,showColumnHeaders:E,headerHeight:S,style:z,...G},$){let O=ei(null),[x,U]=oi();return Z(Xl,{...G,className:Mt(X,n),id:u,onResize:U,ref:jl(O,$),children:x?Z(ni,{Row:o,allowDragDrop:t,availableColumns:r,config:l,containerRef:O,dataSource:i,disableFocus:a,headerHeight:S,highlightedIndex:s,id:u,navigationStyle:m,onAvailableColumnsChange:c,onConfigChange:C,onDragStart:f,onDrop:v,onFeatureInvocation:R,onHighlight:d,onRowClick:D,onSelect:H,onSelectionChange:g,renderBufferSize:M,rowHeight:w,selectionModel:y,showColumnHeaders:E,size:x}):null})});import{memo as ri,useCallback as li}from"react";import{CheckboxIcon as ii,WarnCommit as si}from"@vuu-ui/vuu-ui-controls";import{Checkbox as ai}from"@salt-ds/core";var j=(e,o)=>e.column===o.column&&e.row[e.columnMap[e.column.name]]===o.row[o.columnMap[o.column.name]];import{dispatchCustomEvent as ui,registerComponent as ci}from"@vuu-ui/vuu-utils";import{jsx as xt}from"react/jsx-runtime";var Ht=ri(({column:e,columnMap:o,onCommit:t=si,row:r})=>{let n=o[e.name],l=r[n],i=li(a=>async s=>{let u=await t(a);return u===!0&&ui(s.target,"vuu-commit"),u},[t]);return e.editable?xt(ai,{checked:l,onClick:i(!l)}):xt(ii,{checked:l,disabled:!0})},j);Ht.displayName="CheckboxCell";ci("checkbox-cell",Ht,"cell-renderer",{serverDataType:"boolean"});import{useLookupValues as mi}from"@vuu-ui/vuu-data-react";import{Dropdown as pi,WarnCommit as di}from"@vuu-ui/vuu-ui-controls";import{dispatchCustomEvent as fi,registerComponent as Ci}from"@vuu-ui/vuu-utils";import{memo as bi,useCallback as gi,useState as hi}from"react";import{jsx as Di}from"react/jsx-runtime";var vi="vuuTableDropdownCell",Ri=["Enter"," "],Ti=bi(function({column:o,columnMap:t,onCommit:r=di,row:n}){let l=t[o.name],{initialValue:i,values:a}=mi(o,n[l]),[s,u]=hi(null),m=gi((c,C)=>{C&&(u(C),r(C.value).then(f=>{f===!0&&c&&fi(c.target,"vuu-commit")}))},[r]);return Di(pi,{className:vi,onSelectionChange:m,openKeys:Ri,selected:s!=null?s:i,source:a,width:o.width-17})},j);Ci("dropdown-cell",Ti,"cell-renderer",{});import{registerComponent as wi}from"@vuu-ui/vuu-utils";import{Input as yi}from"@salt-ds/core";import{useEditableText as Mi}from"@vuu-ui/vuu-ui-controls";import xi from"classnames";import{jsx as je}from"react/jsx-runtime";var ye="vuuTableInputCell",Hi=()=>(console.warn("onCommit handler has not been provided to InputCell cell renderer"),Promise.resolve(!0)),Pi=({column:e,columnMap:o,onCommit:t=Hi,row:r})=>{let n=o[e.name],{align:l="left",clientSideEditValidationCheck:i,valueFormatter:a}=e,{warningMessage:s,...u}=Mi({initialValue:a(r[n]),onCommit:t,clientSideEditValidationCheck:i}),m=s&&l==="left"?je("span",{className:`${ye}-icon`,"data-icon":"error"}):void 0,c=s&&l==="right"?je("span",{className:`${ye}-icon`,"data-icon":"error"}):void 0;return je(yi,{...u,className:xi(ye,{[`${ye}-error`]:s!==void 0}),endAdornment:m,startAdornment:c})};wi("input-cell",Pi,"cell-renderer",{});import{useLookupValues as Ei}from"@vuu-ui/vuu-data-react";import{registerComponent as Si}from"@vuu-ui/vuu-utils";import{memo as Ai}from"react";import{jsx as ki}from"react/jsx-runtime";var Li=Ai(function({column:o,columnMap:t,row:r}){let n=t[o.name],{initialValue:l}=Ei(o,r[n]);return ki("span",{children:l==null?void 0:l.label})},j);Si("lookup-cell",Li,"cell-renderer",{});import{WarnCommit as Ii}from"@vuu-ui/vuu-ui-controls";import{dispatchCustomEvent as Ni,isTypeDescriptor as zi,isValueListRenderer as Vi,registerComponent as Ki}from"@vuu-ui/vuu-utils";import Fi from"classnames";import{memo as $i,useCallback as Oi}from"react";import{CycleStateButton as Bi}from"@vuu-ui/vuu-ui-controls";import{jsx as Ui}from"react/jsx-runtime";var Pt="vuuTableToggleCell",Wi=({name:e,type:o})=>{if(zi(o)&&Vi(o.renderer))return o.renderer.values;throw Error(`useLookupValues column ${e} has not been configured with a values list`)},Gi=$i(function({column:o,columnMap:t,onCommit:r=Ii,row:n}){let l=Wi(o),i=t[o.name],a=n[i],s=Oi((u,m)=>r(m).then(c=>(c===!0&&Ni(u.target,"vuu-commit"),c)),[r]);return Ui(Bi,{className:Fi(Pt,`${Pt}-${o.name}`),onCommit:s,value:a,values:l,variant:"cta",children:a})},j);Ki("toggle-cell",Gi,"cell-renderer",{});import{useStateRef as _i}from"@vuu-ui/vuu-ui-controls";import{dispatchMouseEvent as Ji}from"@vuu-ui/vuu-utils";import{useCallback as Et,useRef as Xi}from"react";var Np=(e,o)=>{let t=Xi(null),[r,n]=_i(e),l=Et(a=>{var s;if(a.key==="ArrowDown")n((u=-1)=>Math.min(o-1,u+1));else if(a.key==="ArrowUp")n((u=-1)=>Math.max(0,u-1));else if(a.key==="Enter"||a.key===" "){let{current:u}=r,m=(s=t.current)==null?void 0:s.querySelector(`[aria-rowindex="${u}"]`);m&&Ji(m,"click")}},[r,o,n]),i=Et(a=>{n(a)},[n]);return{highlightedIndexRef:r,onHighlight:i,onKeyDown:l,tableRef:t}};export{Ht as CheckboxCell,Ti as DropdownCell,ke as GroupHeaderCellNext,To as HeaderCell,Pi as InputCell,Li as LookupCell,hm as Table,Gi as ToggleCell,et as isShowColumnSettings,ot as isShowTableSettings,ko as updateTableConfig,Np as useControlledTableNavigation,tt as useTableModel,ut as useTableViewport};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|