@vuu-ui/vuu-table 0.6.21 → 0.6.22-debug
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 +2760 -1
- package/cjs/index.js.map +2 -2
- package/esm/index.js +2792 -1
- package/esm/index.js.map +2 -2
- package/index.css +513 -1
- package/index.css.map +1 -1
- package/package.json +5 -5
package/cjs/index.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/vuu-table/src/index.ts", "../../../packages/vuu-table/src/Table.tsx", "../../../packages/vuu-table/src/ColumnBasedTable.tsx", "../../../packages/vuu-table/src/TableRow.tsx", "../../../packages/vuu-table/src/TableCell.tsx", "../../../packages/vuu-table/src/TableGroupCell.tsx", "../../../packages/vuu-table/src/TableHeaderCell.tsx", "../../../packages/vuu-table/src/ColumnResizer.tsx", "../../../packages/vuu-table/src/SortIndicator.tsx", "../../../packages/vuu-table/src/useTableColumnResize.tsx", "../../../packages/vuu-table/src/filter-indicator.tsx", "../../../packages/vuu-table/src/context-menu/buildContextMenuDescriptors.ts", "../../../packages/vuu-table/src/context-menu/useContextMenu.ts", "../../../packages/vuu-table/src/RowBasedTable.tsx", "../../../packages/vuu-table/src/TableGroupHeaderCell.tsx", "../../../packages/vuu-table/src/useDataTable.ts", "../../../packages/vuu-table/src/useDataSource.ts", "../../../packages/vuu-table/src/useDraggableColumn.ts", "../../../packages/vuu-table/src/useKeyboardNavigation.ts", "../../../packages/vuu-table/src/keyUtils.ts", "../../../packages/vuu-table/src/useMeasuredContainer.ts", "../../../packages/vuu-table/src/useResizeObserver.ts", "../../../packages/vuu-table/src/useSelection.ts", "../../../packages/vuu-table/src/useTableModel.ts", "../../../packages/vuu-table/src/useTableScroll.ts", "../../../packages/vuu-table/src/useTableViewport.ts", "../../../packages/vuu-table/src/useVirtualViewport.ts", "../../../packages/vuu-table/src/cell-renderers/json-cell/JsonCell.tsx"],
|
|
4
4
|
"sourcesContent": ["export * from \"./dataTableTypes\";\nexport * from \"./Table\";\nexport * from \"./useMeasuredContainer\";\nexport * from \"./cell-renderers\";\n", "import { ContextMenuProvider } from \"@vuu-ui/vuu-popups\";\nimport { Button, useIdMemo } from \"@salt-ds/core\";\nimport { CSSProperties } from \"react\";\nimport { ColumnBasedTable } from \"./ColumnBasedTable\";\nimport { buildContextMenuDescriptors } from \"./context-menu\";\nimport { TableProps } from \"./dataTableTypes\";\nimport { RowBasedTable } from \"./RowBasedTable\";\nimport { useDataTable } from \"./useDataTable\";\nimport cx from \"classnames\";\n\nimport \"./Table.css\";\nimport { isDataLoading } from \"@vuu-ui/vuu-utils\";\n\nconst classBase = \"vuuTable\";\n\nexport const Table = ({\n allowConfigEditing: showSettings = false,\n className: classNameProp,\n config,\n dataSource,\n headerHeight = 25,\n height,\n id: idProp,\n onConfigChange,\n onFeatureEnabled,\n onFeatureInvocation,\n onSelectionChange,\n onShowConfigEditor: onShowSettings,\n renderBufferSize = 0,\n rowHeight = 20,\n selectionModel = \"extended\",\n style: styleProp,\n tableLayout: tableLayoutProp = \"row\",\n width,\n zebraStripes = false,\n ...props\n}: TableProps) => {\n const id = useIdMemo(idProp);\n const {\n containerMeasurements: { containerRef, innerSize, outerSize },\n containerProps,\n dispatchColumnAction,\n draggable,\n draggedItemIndex,\n handleContextMenuAction,\n scrollProps,\n tableLayout,\n viewportMeasurements,\n ...tableProps\n } = useDataTable({\n config,\n dataSource,\n renderBufferSize,\n headerHeight,\n height,\n onConfigChange,\n onFeatureEnabled,\n onFeatureInvocation,\n onSelectionChange,\n rowHeight,\n selectionModel,\n tableLayout: tableLayoutProp,\n width,\n });\n\n const style = {\n ...outerSize,\n \"--content-height\": `${viewportMeasurements.scrollContentHeight}px`,\n \"--content-width\": `${viewportMeasurements.scrollContentWidth}px`,\n \"--filler-height\": `${viewportMeasurements.fillerHeight}px`,\n \"--pinned-width-left\": `${viewportMeasurements.pinnedWidthLeft}px`,\n \"--pinned-width-right\": `${viewportMeasurements.pinnedWidthRight}px`,\n \"--header-height\": `${headerHeight}px`,\n \"--row-height\": `${rowHeight}px`,\n \"--scrollbar-size\": `${viewportMeasurements.scrollbarSize}px`,\n \"--table-height\": `${innerSize?.height}px`,\n \"--table-width\": `${innerSize?.width}px`,\n \"--total-header-height\": `${viewportMeasurements?.totalHeaderHeight}px`,\n } as CSSProperties;\n\n const scrollbarContainerStyle: CSSProperties = {\n left: viewportMeasurements.pinnedWidthLeft - 1,\n // The -1 is to align the top border, might cause innaccuracy\n // It is compensated by a hardcoded adjustment in css\n // top: measurements.top - 1 + headerHeight,\n top: viewportMeasurements?.totalHeaderHeight - 1,\n };\n\n const Table = tableLayout === \"column\" ? ColumnBasedTable : RowBasedTable;\n\n const className = cx(classBase, classNameProp, {\n [`${classBase}-zebra`]: zebraStripes,\n [`${classBase}-loading`]: isDataLoading(tableProps.columns),\n });\n\n // TODO this is going to go\n // const nonDraggedColumns = useMemo(() => {\n // return columns.filter((col, i) => i !== draggedItemIndex);\n // }, [columns, draggedItemIndex]);\n // console.log({ nonDraggedColumns });\n\n return (\n <ContextMenuProvider\n menuActionHandler={handleContextMenuAction}\n menuBuilder={buildContextMenuDescriptors(dataSource)}\n >\n <div\n {...containerProps}\n className={className}\n id={id}\n ref={containerRef}\n style={style}\n tabIndex={-1}\n >\n {innerSize ? (\n <div\n className={`${classBase}-scrollbarContainer`}\n onScroll={scrollProps.onScrollbarContainerScroll}\n ref={scrollProps.scrollbarContainerRef}\n style={scrollbarContainerStyle}\n >\n <div className={`${classBase}-scrollContent`} />\n </div>\n ) : null}\n {innerSize ? (\n <div\n className={`${classBase}-contentContainer`}\n onScroll={scrollProps.onContentContainerScroll}\n ref={scrollProps.contentContainerRef}\n {...props}\n >\n <div className={`${classBase}-scrollContent`} />\n <div\n className={`${classBase}-tableContainer`}\n onScroll={scrollProps.onTableContainerScroll}\n ref={scrollProps.tableContainerRef}\n >\n <Table\n {...tableProps}\n headerHeight={headerHeight}\n rowHeight={rowHeight}\n />\n </div>\n {draggable}\n </div>\n ) : null}\n {showSettings && innerSize ? (\n <Button\n className={`${classBase}-settings`}\n data-icon=\"settings\"\n onClick={onShowSettings}\n variant=\"secondary\"\n />\n ) : null}\n </div>\n </ContextMenuProvider>\n );\n};\n", "import { metadataKeys } from \"@vuu-ui/vuu-utils\";\nimport { CSSProperties, useCallback } from \"react\";\nimport { TableImplementationProps } from \"./dataTableTypes\";\nimport cx from \"classnames\";\nimport { TableRow } from \"./TableRow\";\nimport { TableHeaderCell } from \"./TableHeaderCell\";\n\nconst classBase = \"vuuTable\";\nconst { RENDER_IDX } = metadataKeys;\n\nexport const ColumnBasedTable = ({\n columns,\n data,\n headerHeight,\n onHeaderCellDragEnd,\n rowHeight,\n}: TableImplementationProps) => {\n const handleDragEnd = useCallback(() => {\n onHeaderCellDragEnd?.();\n }, [onHeaderCellDragEnd]);\n\n console.log(`ColumnBasedTable render`);\n return (\n <>\n {columns.map((column, i) => (\n <table\n className={cx(`${classBase}-table`, `${classBase}-columnBased`, {\n vuuPinLeft: column.pin === \"left\",\n })}\n data-idx={i}\n id={`col-${i}`}\n key={column.name}\n style={\n {\n width: column.width,\n left: column.pinnedOffset,\n \"--vuuTableHeaderHeight\": `${headerHeight}px`,\n \"--row-height\": `${rowHeight}px`,\n } as CSSProperties\n }\n >\n <tbody>\n <tr key=\"header\">\n <TableHeaderCell\n column={column}\n data-idx={i}\n key={i}\n onDragEnd={handleDragEnd}\n />\n </tr>\n {data.map((row, j) => (\n <TableRow\n columns={[column]}\n height={rowHeight}\n index={j}\n key={row[RENDER_IDX]}\n row={row}\n />\n ))}\n <tr className=\"vuuTable-filler\" />\n </tbody>\n </table>\n ))}\n </>\n );\n};\n", "import { DataSourceRow } from \"@vuu-ui/vuu-data\";\nimport { KeyedColumnDescriptor } from \"@vuu-ui/vuu-datagrid-types\";\nimport {\n isGroupColumn,\n isJsonColumn,\n isJsonGroup,\n metadataKeys,\n notHidden,\n} from \"@vuu-ui/vuu-utils\";\nimport cx from \"classnames\";\nimport { HTMLAttributes, memo, MouseEvent, useCallback } from \"react\";\nimport { RowClickHandler } from \"./dataTableTypes\";\nimport { TableCell } from \"./TableCell\";\nimport { TableGroupCell } from \"./TableGroupCell\";\n\nimport \"./TableRow.css\";\n\nconst { IDX, IS_EXPANDED, SELECTED } = metadataKeys;\nconst classBase = \"vuuTableRow\";\n\nexport interface RowProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"children\" | \"onClick\"> {\n columns: KeyedColumnDescriptor[];\n height: number;\n index: number;\n onClick?: RowClickHandler;\n onToggleGroup?: (row: DataSourceRow, column: KeyedColumnDescriptor) => void;\n row: DataSourceRow;\n virtualColSpan?: number;\n}\n\nexport const TableRow = memo(function Row({\n columns,\n height,\n index,\n onClick,\n onToggleGroup,\n virtualColSpan = 0,\n row,\n}: RowProps) {\n const {\n [IDX]: rowIndex,\n [IS_EXPANDED]: isExpanded,\n [SELECTED]: isSelected,\n } = row;\n\n const className = cx(classBase, {\n [`${classBase}-even`]: rowIndex % 2 === 0,\n [`${classBase}-expanded`]: isExpanded,\n [`${classBase}-preSelected`]: isSelected === 2,\n });\n const offset = rowIndex - index;\n\n const handleRowClick = useCallback(\n (evt: MouseEvent) => {\n const rangeSelect = evt.shiftKey;\n const keepExistingSelection = evt.ctrlKey || evt.metaKey; /* mac only */\n onClick?.(row, rangeSelect, keepExistingSelection);\n },\n [onClick, row]\n );\n\n const handleGroupCellClick = useCallback(\n (column: KeyedColumnDescriptor) => {\n if (isGroupColumn(column) || isJsonGroup(column, row)) {\n onToggleGroup?.(row, column);\n }\n },\n [onToggleGroup, row]\n );\n\n return (\n <tr\n aria-selected={isSelected === 1 ? true : undefined}\n aria-rowindex={rowIndex}\n className={className}\n onClick={handleRowClick}\n style={{\n transform: `translate(0px, ${offset * height}px)`,\n }}\n >\n {virtualColSpan > 0 ? <td colSpan={virtualColSpan} /> : null}\n {columns.filter(notHidden).map((column) => {\n const isGroup = isGroupColumn(column);\n const isJsonCell = isJsonColumn(column);\n const Cell = isGroup ? TableGroupCell : TableCell;\n return (\n <Cell\n column={column}\n key={column.name}\n onClick={isGroup || isJsonCell ? handleGroupCellClick : undefined}\n row={row}\n />\n );\n })}\n </tr>\n );\n});\n", "import { TableCellProps } from \"@vuu-ui/vuu-datagrid-types\";\nimport { getColumnPinStyle, metadataKeys } from \"@vuu-ui/vuu-utils\";\nimport { EditableLabel } from \"@heswell/salt-lab\";\nimport cx from \"classnames\";\nimport { KeyboardEvent, memo, useCallback, useRef, useState } from \"react\";\n\nimport \"./TableCell.css\";\n\nconst { KEY } = metadataKeys;\n\nexport const TableCell = memo(\n ({ className: classNameProp, column, onClick, row }: TableCellProps) => {\n const labelFieldRef = useRef<HTMLDivElement>(null);\n const {\n align,\n CellRenderer,\n key,\n pin,\n editable,\n resizing,\n valueFormatter,\n } = column;\n const [editing, setEditing] = useState<boolean>(false);\n const value = valueFormatter(row[key]);\n const [editableValue, setEditableValue] = useState<string>(value);\n const handleTitleMouseDown = () => {\n labelFieldRef.current?.focus();\n };\n const handleTitleKeyDown = (evt: KeyboardEvent<HTMLTableCellElement>) => {\n if (evt.key === \"Enter\") {\n setEditing(true);\n }\n };\n\n const handleClick = useCallback(() => {\n onClick?.(column);\n }, [column, onClick]);\n\n const handleEnterEditMode = () => {\n setEditing(true);\n };\n\n const handleExitEditMode = (\n originalValue = \"\",\n finalValue = \"\",\n allowDeactivation = true,\n editCancelled = false\n ) => {\n setEditing(false);\n if (editCancelled) {\n setEditableValue(originalValue);\n } else if (finalValue !== originalValue) {\n setEditableValue(finalValue);\n }\n if (allowDeactivation === false) {\n labelFieldRef.current?.focus();\n }\n };\n\n // might want to useMemo here, this won't change often\n const className =\n cx(classNameProp, {\n vuuAlignRight: align === \"right\",\n vuuPinFloating: pin === \"floating\",\n vuuPinLeft: pin === \"left\",\n vuuPinRight: pin === \"right\",\n \"vuuTableCell-resizing\": resizing,\n }) || undefined;\n const pinnedStyle = getColumnPinStyle(column);\n return editable ? (\n <td\n className={className}\n data-editable\n style={pinnedStyle}\n onKeyDown={handleTitleKeyDown}\n >\n <EditableLabel\n editing={editing}\n key=\"title\"\n value={editableValue}\n onChange={setEditableValue}\n onMouseDownCapture={handleTitleMouseDown}\n onEnterEditMode={handleEnterEditMode}\n onExitEditMode={handleExitEditMode}\n onKeyDown={handleTitleKeyDown}\n ref={labelFieldRef}\n tabIndex={0}\n />\n </td>\n ) : (\n <td className={className} style={pinnedStyle} onClick={handleClick}>\n {CellRenderer ? <CellRenderer column={column} row={row} /> : value}\n </td>\n );\n },\n cellValuesAreEqual\n);\nTableCell.displayName = \"TableCell\";\n\nfunction cellValuesAreEqual(prev: TableCellProps, next: TableCellProps) {\n return (\n prev.column === next.column &&\n prev.onClick === next.onClick &&\n prev.row[KEY] === next.row[KEY] &&\n prev.row[prev.column.key] === next.row[next.column.key]\n );\n}\n", "import { DataSourceRow } from \"@vuu-ui/vuu-data\";\nimport {\n GroupColumnDescriptor,\n KeyedColumnDescriptor,\n TableCellProps,\n} from \"@vuu-ui/vuu-datagrid-types\";\nimport { metadataKeys } from \"@vuu-ui/vuu-utils\";\nimport { useCallback } from \"react\";\n\nimport \"./TableGroupCell.css\";\n\nconst { DEPTH, IS_LEAF } = metadataKeys;\n\nexport const getGroupValueAndOffset = (\n columns: KeyedColumnDescriptor[],\n row: DataSourceRow\n): [unknown, number] => {\n const { [DEPTH]: depth, [IS_LEAF]: isLeaf } = row;\n // Depth can be greater tha group columns when we have just removed a column from groupby\n // but new data has not yet been received.\n if (isLeaf || depth > columns.length) {\n return [null, depth === null ? 0 : depth - 1];\n } else if (depth === 0) {\n return [\"$root\", 0];\n } else {\n // offset 1 for now to allow for $root\n const column = columns[depth - 1];\n return [row[column.key], depth - 1];\n }\n};\n\nexport const TableGroupCell = ({ column, onClick, row }: TableCellProps) => {\n const { columns } = column as GroupColumnDescriptor;\n const [value, offset] = getGroupValueAndOffset(columns, row);\n\n const handleClick = useCallback(() => {\n onClick?.(column);\n }, [column, onClick]);\n\n const style = {\n left: column.pin == \"left\" ? column.pinnedOffset : undefined,\n };\n const isLeaf = row[IS_LEAF];\n const spacers = Array(offset)\n .fill(0)\n .map((n, i) => <span className=\"vuuTableGroupCell-spacer\" key={i} />);\n return (\n <td\n className={\"vuuTableGroupCell vuuPinLeft\"}\n onClick={isLeaf ? undefined : handleClick}\n style={style}\n >\n {spacers}\n {isLeaf ? null : (\n <span className=\"vuuTableGroupCell-toggle\" data-icon=\"triangle-right\" />\n )}\n <span>{value}</span>\n </td>\n );\n};\n", "import { KeyedColumnDescriptor } from \"@vuu-ui/vuu-datagrid-types\";\nimport cx from \"classnames\";\nimport { HTMLAttributes, MouseEvent, useCallback, useRef } from \"react\";\nimport { ColumnResizer } from \"./ColumnResizer\";\nimport { SortIndicator } from \"./SortIndicator\";\nimport { useTableColumnResize } from \"./useTableColumnResize\";\nimport { TableColumnResizeHandler } from \"./dataTableTypes\";\n\nimport \"./TableHeaderCell.css\";\nimport { useContextMenu } from \"@vuu-ui/vuu-popups\";\nimport { FilterIndicator } from \"./filter-indicator\";\n\nconst classBase = \"vuuTable-headerCell\";\n\nexport interface TableHeaderCellProps\n extends HTMLAttributes<HTMLTableCellElement> {\n column: KeyedColumnDescriptor;\n debugString?: string;\n onDragStart?: (evt: MouseEvent) => void;\n onResize?: TableColumnResizeHandler;\n}\n\nexport const TableHeaderCell = ({\n column,\n className: classNameProp,\n onClick,\n onDragStart,\n onResize,\n ...props\n}: TableHeaderCellProps) => {\n const rootRef = useRef<HTMLTableCellElement>(null);\n const { isResizing, ...resizeProps } = useTableColumnResize({\n column,\n onResize,\n rootRef,\n });\n\n const showContextMenu = useContextMenu();\n const dragTimerRef = useRef<number | null>(null);\n\n const handleContextMenu = (e: MouseEvent<HTMLElement>) => {\n showContextMenu(e, \"header\", { column });\n };\n\n const handleClick = useCallback(\n (evt: MouseEvent<HTMLTableCellElement>) => !isResizing && onClick?.(evt),\n [isResizing, onClick]\n );\n\n const handleMouseDown = useCallback(\n (evt: MouseEvent) => {\n dragTimerRef.current = window.setTimeout(() => {\n onDragStart?.(evt);\n dragTimerRef.current = null;\n }, 250);\n },\n [onDragStart]\n );\n const handleMouseUp = useCallback(() => {\n if (dragTimerRef.current !== null) {\n window.clearTimeout(dragTimerRef.current);\n dragTimerRef.current = null;\n }\n }, []);\n\n const className = cx(classBase, classNameProp, {\n vuuPinFloating: column.pin === \"floating\",\n vuuPinLeft: column.pin === \"left\",\n vuuPinRight: column.pin === \"right\",\n vuuEndPin: column.endPin,\n [`${classBase}-resizing`]: column.resizing,\n [`${classBase}-right`]: column.align === \"right\",\n });\n return (\n <th\n className={className}\n {...props}\n onClick={handleClick}\n onContextMenu={handleContextMenu}\n onMouseDown={handleMouseDown}\n onMouseUp={handleMouseUp}\n ref={rootRef}\n >\n <div className={`${classBase}-inner`}>\n <FilterIndicator column={column} />\n <div className={`${classBase}-label`}>{column.label}</div>\n <SortIndicator sorted={column.sorted} />\n {column.resizeable !== false ? (\n <ColumnResizer {...resizeProps} />\n ) : null}\n </div>\n </th>\n );\n};\n", "// export interface ColumnResizerProps {}\nimport { useCallback, useRef } from \"react\";\nimport \"./ColumnResizer.css\";\n\nconst NOOP = () => undefined;\n\nconst baseClass = \"vuuColumnResizer\";\nexport interface TableColumnResizerProps {\n onDrag: (evt: MouseEvent, moveBy: number) => void;\n onDragEnd: (evt: MouseEvent) => void;\n onDragStart: (evt: React.MouseEvent) => void;\n}\n\nexport const ColumnResizer = ({\n onDrag,\n onDragEnd = NOOP,\n onDragStart = NOOP,\n}: TableColumnResizerProps) => {\n const position = useRef(0);\n\n const onMouseMove = useCallback(\n (e: MouseEvent) => {\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n\n if (e.preventDefault) {\n e.preventDefault();\n }\n\n const x = Math.round(e.clientX);\n const moveBy = x - position.current;\n position.current = x;\n\n if (moveBy !== 0) {\n onDrag(e, moveBy);\n }\n },\n [onDrag]\n );\n\n const onMouseUp = useCallback(\n (e: MouseEvent) => {\n window.removeEventListener(\"mouseup\", onMouseUp);\n window.removeEventListener(\"mousemove\", onMouseMove);\n onDragEnd(e);\n },\n [onDragEnd, onMouseMove]\n );\n\n const handleMouseDown = useCallback(\n (e: React.MouseEvent) => {\n onDragStart(e);\n\n position.current = Math.round(e.clientX);\n\n window.addEventListener(\"mouseup\", onMouseUp);\n window.addEventListener(\"mousemove\", onMouseMove);\n\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n\n if (e.preventDefault) {\n e.preventDefault();\n }\n },\n [onDragStart, onMouseMove, onMouseUp]\n );\n\n return <div className={baseClass} onMouseDown={handleMouseDown} />;\n};\n", "import { ColumnSort } from \"@vuu-ui/vuu-datagrid-types\";\nimport cx from \"classnames\";\n\nimport \"./SortIndicator.css\";\n\nexport interface SortIndicatorProps {\n sorted?: ColumnSort;\n}\n\nconst classBase = \"vuuSortIndicator\";\n\nexport const SortIndicator = ({ sorted }: SortIndicatorProps) => {\n if (!sorted) {\n return null;\n }\n\n const direction =\n typeof sorted === \"number\"\n ? sorted < 0\n ? \"dsc\"\n : \"asc\"\n : sorted === \"A\"\n ? \"asc\"\n : \"dsc\";\n\n return typeof sorted === \"number\" ? (\n <div className={cx(classBase, \"multi-col\", direction)}>\n <span data-icon={`sorted-${direction}`} />\n <span className={\"vuuSortPosition\"}>{Math.abs(sorted)}</span>\n </div>\n ) : (\n <div className={cx(classBase, \"single-col\")}>\n <span data-icon={`sorted-${direction}`} />\n </div>\n );\n};\n", "import { Heading, KeyedColumnDescriptor } from \"@vuu-ui/vuu-datagrid-types\";\nimport { RefObject, useCallback, useRef } from \"react\";\n\nexport type ResizeHandler = (evt: MouseEvent, moveBy: number) => void;\nexport interface CellResizeHookProps {\n column: KeyedColumnDescriptor | Heading;\n onResize?: (phase: resizePhase, columnName: string, width?: number) => void;\n rootRef: RefObject<HTMLDivElement>;\n}\n\ntype resizePhase = \"begin\" | \"resize\" | \"end\";\n\nexport interface CellResizeHookResult {\n isResizing: boolean;\n onDrag: (evt: MouseEvent, moveBy: number) => void;\n onDragStart: (evt: React.MouseEvent) => void;\n onDragEnd: (evt: MouseEvent) => void;\n}\n\nexport const useTableColumnResize = ({\n column,\n onResize,\n rootRef,\n}: CellResizeHookProps): CellResizeHookResult => {\n const widthRef = useRef(0);\n const isResizing = useRef(false);\n const { name } = column;\n\n const handleResizeStart = useCallback(() => {\n if (onResize && rootRef.current) {\n const { width } = rootRef.current.getBoundingClientRect();\n widthRef.current = Math.round(width);\n isResizing.current = true;\n onResize?.(\"begin\", name);\n }\n }, [name, onResize, rootRef]);\n\n const handleResize = useCallback(\n (_evt: MouseEvent, moveBy: number) => {\n if (rootRef.current) {\n if (onResize) {\n const { width } = rootRef.current.getBoundingClientRect();\n const newWidth = Math.round(width) + moveBy;\n if (newWidth !== widthRef.current && newWidth > 0) {\n onResize(\"resize\", name, newWidth);\n widthRef.current = newWidth;\n }\n }\n }\n },\n [name, onResize, rootRef]\n );\n\n const handleResizeEnd = useCallback(() => {\n if (onResize) {\n onResize(\"end\", name, widthRef.current);\n setTimeout(() => {\n // set in a timeout to prevent the click event from firing and triggering a sort\n isResizing.current = false;\n }, 100);\n }\n }, [name, onResize]);\n\n return {\n isResizing: isResizing.current,\n onDrag: handleResize,\n onDragStart: handleResizeStart,\n onDragEnd: handleResizeEnd,\n };\n};\n", "import { KeyedColumnDescriptor } from \"@vuu-ui/vuu-datagrid-types\";\nimport { Filter } from \"@vuu-ui/vuu-filter-types\";\nimport { useContextMenu } from \"@vuu-ui/vuu-popups\";\nimport cx from \"classnames\";\nimport { HTMLAttributes, useCallback } from \"react\";\n\nimport \"./filter-indicator.css\";\n\nexport const Direction = {\n ASC: \"asc\",\n DSC: \"dsc\",\n};\n\nexport interface FilterIndicatorProps extends HTMLAttributes<HTMLDivElement> {\n column: KeyedColumnDescriptor;\n filter?: Filter;\n}\n\nexport const FilterIndicator = ({ column, filter }: FilterIndicatorProps) => {\n //TODO handle this at header level\n const showContextMenu = useContextMenu();\n\n const handleClick = useCallback(\n (evt) => {\n // if we do this through keyboard, need to get co-ords\n evt.stopPropagation();\n showContextMenu(evt, \"filter\", { column, filter });\n },\n [column, filter, showContextMenu]\n );\n\n if (!column.filter) {\n return null;\n }\n\n return (\n <div\n className={cx(\"vuuFilterIndicator\")}\n data-icon=\"filter\"\n onClick={handleClick}\n />\n );\n};\n", "import { DataSource } from \"@vuu-ui/vuu-data\";\nimport { KeyedColumnDescriptor, PinLocation } from \"@vuu-ui/vuu-datagrid-types\";\nimport { Filter } from \"@vuu-ui/vuu-filter-types\";\nimport { ContextMenuItemDescriptor, MenuBuilder } from \"@vuu-ui/vuu-popups\";\nimport { isNumericColumn } from \"@vuu-ui/vuu-utils\";\n\nexport type ContextMenuLocation = \"header\" | \"filter\" | \"grid\";\n\ntype MaybeColumn = { column?: KeyedColumnDescriptor };\ntype MaybeFilter = { filter?: Filter };\n\nexport const buildContextMenuDescriptors =\n (dataSource?: DataSource): MenuBuilder =>\n (location, options) => {\n const descriptors: ContextMenuItemDescriptor[] = [];\n if (dataSource === undefined) {\n return descriptors;\n }\n if (location === \"header\") {\n descriptors.push(\n ...buildSortMenuItems(options as MaybeColumn, dataSource)\n );\n descriptors.push(\n ...buildGroupMenuItems(options as MaybeColumn, dataSource)\n );\n descriptors.push(\n ...buildAggregationMenuItems(options as MaybeColumn, dataSource)\n );\n descriptors.push(...buildColumnDisplayMenuItems(options as MaybeColumn));\n } else if (location === \"filter\") {\n const { column, filter } = options as MaybeFilter & MaybeColumn;\n const colIsOnlyFilter = filter?.column === column?.name;\n descriptors.push({\n label: \"Edit filter\",\n action: \"filter-edit\",\n options,\n });\n\n descriptors.push({\n label: \"Remove filter\",\n action: \"filter-remove-column\",\n options,\n });\n\n if (column && !colIsOnlyFilter) {\n // TODO col might still be the only column in the filter if it is\n // involved in all clauses\n descriptors.push({\n label: `Remove all filters`,\n action: \"remove-filters\",\n options,\n });\n }\n }\n\n // if (options?.selectedRowCount){\n // // TODO pass the table name\n // const rpcActions = getRpcActions();\n // for (let {label, method} of rpcActions){\n // descriptors.push({action: Action.RpcCall, label, options: {method}})\n // }\n // }\n\n return descriptors;\n };\n\nfunction buildSortMenuItems(\n options: MaybeColumn,\n { sort: { sortDefs } }: DataSource\n): ContextMenuItemDescriptor[] {\n const { column } = options;\n const menuItems: ContextMenuItemDescriptor[] = [];\n if (column === undefined) {\n return menuItems;\n }\n\n const hasSort = sortDefs.length > 0;\n\n if (column.sorted === \"A\") {\n menuItems.push({\n label: \"Reverse Sort (DSC)\",\n action: \"sort-dsc\",\n options,\n });\n } else if (column.sorted === \"D\") {\n menuItems.push({\n label: \"Reverse Sort (ASC)\",\n action: \"sort-asc\",\n options,\n });\n } else if (typeof column.sorted === \"number\") {\n if (column.sorted > 0) {\n menuItems.push({\n label: \"Reverse Sort (DSC)\",\n action: \"sort-add-dsc\",\n options,\n });\n } else {\n menuItems.push({\n label: \"Reverse Sort (ASC)\",\n action: \"sort-add-asc\",\n options,\n });\n }\n\n // removing the last column from a sort would be a no-op, so pointless\n if (hasSort && Math.abs(column.sorted) < sortDefs.length) {\n menuItems.push({\n label: \"Remove from sort\",\n action: \"sort-remove\",\n options,\n });\n }\n\n menuItems.push({\n label: \"New Sort\",\n children: [\n { label: \"Ascending\", action: \"sort-asc\", options },\n { label: \"Descending\", action: \"sort-dsc\", options },\n ],\n });\n } else if (hasSort) {\n menuItems.push({\n label: \"Add to sort\",\n children: [\n { label: \"Ascending\", action: \"sort-add-asc\", options },\n { label: \"Descending\", action: \"sort-add-dsc\", options },\n ],\n });\n menuItems.push({\n label: \"New Sort\",\n children: [\n { label: \"Ascending\", action: \"sort-asc\", options },\n { label: \"Descending\", action: \"sort-dsc\", options },\n ],\n });\n } else {\n menuItems.push({\n label: \"Sort\",\n children: [\n { label: \"Ascending\", action: \"sort-asc\", options },\n { label: \"Descending\", action: \"sort-dsc\", options },\n ],\n });\n }\n return menuItems;\n}\n\nfunction buildAggregationMenuItems(\n options: MaybeColumn,\n dataSource: DataSource\n): ContextMenuItemDescriptor[] {\n const { column } = options;\n if (column === undefined || dataSource.groupBy.length === 0) {\n return [];\n }\n const { name, label = name } = column;\n\n return [\n {\n label: `Aggregate ${label}`,\n children: [{ label: \"Count\", action: \"agg-count\", options }].concat(\n isNumericColumn(column)\n ? [\n { label: \"Sum\", action: \"agg-sum\", options },\n { label: \"Avg\", action: \"agg-avg\", options },\n { label: \"High\", action: \"agg-high\", options },\n { label: \"Low\", action: \"agg-low\", options },\n ]\n : []\n ),\n },\n ];\n}\n\nconst pinColumn = (options: unknown, pinLocation: PinLocation) =>\n ({\n label: `Pin ${pinLocation}`,\n action: `column-pin-${pinLocation}`,\n options,\n } as ContextMenuItemDescriptor);\n\nconst pinLeft = (options: unknown) => pinColumn(options, \"left\");\nconst pinFloating = (options: unknown) => pinColumn(options, \"floating\");\nconst pinRight = (options: unknown) => pinColumn(options, \"right\");\n\nfunction buildColumnDisplayMenuItems(\n options: MaybeColumn\n): ContextMenuItemDescriptor[] {\n const { column } = options;\n if (column === undefined) {\n return [];\n }\n const { pin } = column;\n\n const menuItems: ContextMenuItemDescriptor[] = [\n {\n label: `Hide column`,\n action: \"column-hide\",\n options,\n },\n {\n label: `Remove column`,\n action: \"column-remove\",\n options,\n },\n ];\n\n if (pin === undefined) {\n menuItems.push({\n label: `Pin column`,\n children: [pinLeft(options), pinFloating(options), pinRight(options)],\n });\n } else if (pin === \"left\") {\n menuItems.push(\n { label: \"Unpin column\", action: \"column-unpin\", options },\n {\n label: `Pin column`,\n children: [pinFloating(options), pinRight(options)],\n }\n );\n } else if (pin === \"right\") {\n menuItems.push(\n { label: \"Unpin column\", action: \"column-unpin\", options },\n {\n label: `Pin column`,\n children: [pinLeft(options), pinFloating(options)],\n }\n );\n } else if (pin === \"floating\") {\n menuItems.push(\n { label: \"Unpin column\", action: \"column-unpin\", options },\n {\n label: `Pin column`,\n children: [pinLeft(options), pinRight(options)],\n }\n );\n }\n\n return menuItems;\n}\n\nfunction buildGroupMenuItems(\n options: MaybeColumn,\n { groupBy }: DataSource\n): ContextMenuItemDescriptor[] {\n const { column } = options;\n const menuItems: ContextMenuItemDescriptor[] = [];\n if (column === undefined) {\n return menuItems;\n }\n\n const { name, label = name } = column;\n\n if (groupBy.length === 0) {\n menuItems.push({\n label: `Group by ${label}`,\n action: \"group\",\n options,\n });\n } else {\n menuItems.push({\n label: `Add ${label} to group by`,\n action: \"group-add\",\n options,\n });\n }\n\n return menuItems;\n}\n", "/* eslint-disable no-sequences */\nimport { DataSource } from \"@vuu-ui/vuu-data\";\nimport { KeyedColumnDescriptor } from \"@vuu-ui/vuu-datagrid-types\";\nimport { Filter } from \"@vuu-ui/vuu-filter-types\";\nimport { removeColumnFromFilter } from \"@vuu-ui/vuu-filters\";\nimport { MenuActionHandler } from \"@vuu-ui/vuu-popups\";\nimport { VuuFilter } from \"@vuu-ui/vuu-protocol-types\";\nimport { DataSourceFilter } from \"@vuu-ui/vuu-data-types\";\nimport { PersistentColumnAction } from \"../useTableModel\";\nimport {\n addGroupColumn,\n addSortColumn,\n AggregationType,\n setAggregations,\n setSortColumn,\n} from \"@vuu-ui/vuu-utils\";\n\nexport interface ContextMenuOptions {\n column?: KeyedColumnDescriptor;\n filter?: Filter;\n sort?: VuuFilter;\n}\nexport interface ContextMenuHookProps {\n dataSource?: DataSource;\n onPersistentColumnOperation: (action: PersistentColumnAction) => void;\n}\n\nconst removeFilterColumn = (\n dataSourceFilter: DataSourceFilter,\n column: KeyedColumnDescriptor\n) => {\n if (dataSourceFilter.filterStruct && column) {\n const [filterStruct, filter] = removeColumnFromFilter(\n column,\n dataSourceFilter.filterStruct\n );\n return {\n filter,\n filterStruct,\n };\n } else {\n return dataSourceFilter;\n }\n};\n\nconst { Average, Count, High, Low, Sum } = AggregationType;\n\nexport const useContextMenu = ({\n dataSource,\n onPersistentColumnOperation,\n}: ContextMenuHookProps) => {\n /** return {boolean} used by caller to determine whether to forward to additional installed context menu handlers */\n const handleContextMenuAction: MenuActionHandler = (\n type,\n options\n ): boolean => {\n const gridOptions = options as ContextMenuOptions;\n if (gridOptions.column && dataSource) {\n const { column } = gridOptions;\n // prettier-ignore\n switch(type){\n case \"sort-asc\": return (dataSource.sort = setSortColumn(dataSource.sort, column, \"A\")), true;\n case \"sort-dsc\": return (dataSource.sort = setSortColumn(dataSource.sort, column, \"D\")), true;\n case \"sort-add-asc\": return (dataSource.sort = addSortColumn(dataSource.sort, column, \"A\")), true;\n case \"sort-add-dsc\": return (dataSource.sort = addSortColumn(dataSource.sort, column, \"D\")), true;\n case \"group\": return (dataSource.groupBy = addGroupColumn(dataSource.groupBy, column)), true;\n case \"group-add\": return (dataSource.groupBy = addGroupColumn(dataSource.groupBy, column)), true;\n case \"column-hide\": return onPersistentColumnOperation({type: \"hideColumns\", columns: [column]}), true;\n case \"column-remove\": return (dataSource.columns = dataSource.columns.filter(name => name !== column.name)), true\n case \"filter-remove-column\": return (dataSource.filter = removeFilterColumn(dataSource.filter, column)), true;\n case \"remove-filters\": return (dataSource.filter = {filter:\"\"}), true;\n case \"agg-avg\": return dataSource.aggregations = (setAggregations(dataSource.aggregations, column, Average)), true;\n case \"agg-high\": return dataSource.aggregations = (setAggregations(dataSource.aggregations, column, High)), true;\n case \"agg-low\": return dataSource.aggregations = (setAggregations(dataSource.aggregations, column, Low)), true;\n case \"agg-count\": return dataSource.aggregations = (setAggregations(dataSource.aggregations, column, Count)), true;\n case \"agg-sum\": return dataSource.aggregations = (setAggregations(dataSource.aggregations, column, Sum)), true;\n case \"column-pin-floating\": return onPersistentColumnOperation({type: \"pinColumn\", column, pin: \"floating\"}), true;\n case \"column-pin-left\": return onPersistentColumnOperation({type: \"pinColumn\", column, pin: \"left\"}), true;\n case \"column-pin-right\": return onPersistentColumnOperation({type: \"pinColumn\", column, pin: \"right\"}), true;\n case \"column-unpin\": return onPersistentColumnOperation({type: \"pinColumn\", column, pin: undefined}), true\n default:\n }\n }\n return false;\n };\n\n return handleContextMenuAction;\n};\n", "import {\n getColumnPinStyle,\n isGroupColumn,\n metadataKeys,\n notHidden,\n visibleColumnAtIndex,\n} from \"@vuu-ui/vuu-utils\";\nimport { MouseEvent, useCallback, useMemo } from \"react\";\nimport { TableImplementationProps } from \"./dataTableTypes\";\nimport { TableRow } from \"./TableRow\";\nimport { TableGroupHeaderCell } from \"./TableGroupHeaderCell\";\nimport { TableHeaderCell } from \"./TableHeaderCell\";\n\nconst classBase = \"vuuTable\";\nconst { RENDER_IDX } = metadataKeys;\n\nexport const RowBasedTable = ({\n columns,\n columnsWithinViewport,\n data,\n headings,\n onColumnResize,\n onHeaderCellDragStart,\n onContextMenu,\n onRemoveColumnFromGroupBy,\n onRowClick,\n onSort,\n onToggleGroup,\n virtualColSpan = 0,\n rowCount,\n rowHeight,\n}: TableImplementationProps) => {\n const handleDragStart = useCallback(\n (evt: MouseEvent) => {\n onHeaderCellDragStart?.(evt);\n },\n [onHeaderCellDragStart]\n );\n\n const visibleColumns = useMemo(() => {\n return columns.filter(notHidden);\n }, [columns]);\n\n const handleHeaderClick = useCallback(\n (evt: MouseEvent) => {\n const targetElement = evt.target as HTMLElement;\n const headerCell = targetElement.closest(\n \".vuuTable-headerCell\"\n ) as HTMLElement;\n const colIdx = parseInt(headerCell?.dataset.idx ?? \"-1\");\n const column = visibleColumnAtIndex(columns, colIdx);\n const isAdditive = evt.shiftKey;\n column && onSort(column, isAdditive);\n },\n [columns, onSort]\n );\n\n return (\n <table aria-rowcount={rowCount} className={`${classBase}-table`}>\n <colgroup>\n {visibleColumns.map((column, i) => (\n <col key={i} width={`${column.width}px`} />\n ))}\n </colgroup>\n <thead>\n {headings.map((colHeaders, i) => (\n <tr className=\"vuuTable-heading\" key={i}>\n {colHeaders.map(({ label, span }, j) => (\n <th colSpan={span} key={j} className=\"vuuTable-headingCell\">\n {label}\n </th>\n ))}\n </tr>\n ))}\n <tr>\n {visibleColumns.map((column, i) => {\n const style = getColumnPinStyle(column);\n return isGroupColumn(column) ? (\n <TableGroupHeaderCell\n column={column}\n data-idx={i}\n key={i}\n onRemoveColumn={onRemoveColumnFromGroupBy}\n onResize={onColumnResize}\n style={style}\n />\n ) : (\n <TableHeaderCell\n column={column}\n data-idx={i}\n key={i}\n onClick={handleHeaderClick}\n onDragStart={handleDragStart}\n onResize={onColumnResize}\n style={style}\n />\n );\n })}\n </tr>\n </thead>\n <tbody onContextMenu={onContextMenu}>\n {data?.map((row, i) => (\n <TableRow\n columns={columnsWithinViewport}\n height={rowHeight}\n index={i}\n key={row[RENDER_IDX]}\n onClick={onRowClick}\n virtualColSpan={virtualColSpan}\n onToggleGroup={onToggleGroup}\n row={row}\n />\n ))}\n <tr className={`${classBase}-filler`} />\n </tbody>\n </table>\n );\n};\n", "import cx from \"classnames\";\nimport { HTMLAttributes, useRef } from \"react\";\nimport { ColumnResizer } from \"./ColumnResizer\";\nimport { TableHeaderCellProps } from \"./TableHeaderCell\";\n\nimport \"./TableGroupHeaderCell.css\";\nimport {\n GroupColumnDescriptor,\n KeyedColumnDescriptor,\n} from \"@vuu-ui/vuu-datagrid-types\";\nimport { useTableColumnResize } from \"./useTableColumnResize\";\n\nconst classBase = \"vuuTable-groupHeaderCell\";\n\nexport interface ColHeaderProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onClick\"> {\n column: KeyedColumnDescriptor;\n onRemoveColumn?: (column: KeyedColumnDescriptor) => void;\n}\n\nconst ColHeader = (props: ColHeaderProps) => {\n const { column, className, onRemoveColumn } = props;\n return (\n <div className={cx(`${classBase}-col`, className)} role=\"columnheader\">\n <span className={`${classBase}-label`}>{column.name}</span>\n <span\n className={`${classBase}-close`}\n data-icon=\"close-circle\"\n onClick={() => onRemoveColumn?.(column)}\n />\n </div>\n );\n};\n\nexport interface TableGroupHeaderCellProps\n extends Omit<TableHeaderCellProps, \"onDragStart\" | \"onDrag\" | \"onDragEnd\"> {\n column: GroupColumnDescriptor;\n onRemoveColumn?: (column: KeyedColumnDescriptor) => void;\n}\n\nexport const TableGroupHeaderCell = ({\n column: groupColumn,\n className: classNameProp,\n onRemoveColumn,\n onResize,\n ...props\n}: TableGroupHeaderCellProps) => {\n const rootRef = useRef<HTMLTableCellElement>(null);\n const { isResizing, ...resizeProps } = useTableColumnResize({\n column: groupColumn,\n onResize,\n rootRef,\n });\n const className = cx(classBase, classNameProp, {\n vuuPinLeft: groupColumn.pin === \"left\",\n [`${classBase}-right`]: groupColumn.align === \"right\",\n [`${classBase}-resizing`]: groupColumn.resizing,\n [`${classBase}-pending`]: groupColumn.groupConfirmed === false,\n });\n const { columns } = groupColumn;\n\n return (\n <th className={className} ref={rootRef} {...props}>\n <div className={`${classBase}-inner`}>\n {columns.map((column) => (\n <ColHeader\n key={column.key}\n column={column}\n onRemoveColumn={onRemoveColumn}\n />\n ))}\n {groupColumn.resizeable !== false ? (\n <ColumnResizer {...resizeProps} />\n ) : null}\n </div>\n </th>\n );\n};\n", "import {\n DataSource,\n DataSourceRow,\n DataSourceSubscribedMessage,\n JsonDataSource,\n VuuFeatureInvocationMessage,\n VuuFeatureMessage,\n} from \"@vuu-ui/vuu-data\";\nimport {\n GridConfig,\n KeyedColumnDescriptor,\n SelectionChangeHandler,\n TableSelectionModel,\n} from \"@vuu-ui/vuu-datagrid-types\";\nimport { useContextMenu as usePopupContextMenu } from \"@vuu-ui/vuu-popups\";\nimport { VuuSortType } from \"@vuu-ui/vuu-protocol-types\";\nimport {\n applySort,\n buildColumnMap,\n isJsonGroup,\n metadataKeys,\n moveItem,\n} from \"@vuu-ui/vuu-utils\";\nimport {\n MouseEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useContextMenu } from \"./context-menu\";\nimport { TableColumnResizeHandler, tableLayoutType } from \"./dataTableTypes\";\nimport { useDataSource } from \"./useDataSource\";\nimport { useDraggableColumn } from \"./useDraggableColumn\";\nimport { useKeyboardNavigation } from \"./useKeyboardNavigation\";\nimport { MeasuredProps, useMeasuredContainer } from \"./useMeasuredContainer\";\nimport { useSelection } from \"./useSelection\";\nimport { PersistentColumnAction, useTableModel } from \"./useTableModel\";\nimport { useTableScroll } from \"./useTableScroll\";\nimport { useTableViewport } from \"./useTableViewport\";\nimport { useVirtualViewport } from \"./useVirtualViewport\";\n\nconst NO_ROWS = [] as const;\n\nexport interface DataTableHookProps extends MeasuredProps {\n config: Omit<GridConfig, \"headings\">;\n dataSource: DataSource;\n headerHeight: number;\n onConfigChange?: (config: Omit<GridConfig, \"headings\">) => void;\n onFeatureEnabled?: (message: VuuFeatureMessage) => void;\n onFeatureInvocation?: (message: VuuFeatureInvocationMessage) => void;\n renderBufferSize?: number;\n rowHeight: number;\n onSelectionChange?: SelectionChangeHandler;\n selectionModel: TableSelectionModel;\n tableLayout: tableLayoutType;\n}\n\nconst { KEY, IS_EXPANDED, IS_LEAF } = metadataKeys;\n\nexport const useDataTable = ({\n config,\n dataSource,\n headerHeight,\n onConfigChange,\n onFeatureEnabled,\n onFeatureInvocation,\n onSelectionChange,\n renderBufferSize = 0,\n rowHeight,\n selectionModel,\n tableLayout,\n ...measuredProps\n}: DataTableHookProps) => {\n const [rowCount, setRowCount] = useState<number>(0);\n const expectConfigChangeRef = useRef(false);\n\n // When we detect and respond to changes to config below, we need\n // to include current dataSource config when we refresh the model.\n const dataSourceRef = useRef<DataSource>();\n dataSourceRef.current = dataSource;\n\n if (dataSource === undefined) {\n throw Error(\"no data source provided to DataTable\");\n }\n\n const containerMeasurements = useMeasuredContainer(measuredProps);\n\n const onDataRowcountChange = useCallback((size: number) => {\n setRowCount(size);\n }, []);\n\n const { columns, dispatchColumnAction, headings } = useTableModel(\n config,\n dataSource.config\n );\n\n const handlePersistentColumnOperation = useCallback(\n (action: PersistentColumnAction) => {\n expectConfigChangeRef.current = true;\n dispatchColumnAction(action);\n },\n [dispatchColumnAction]\n );\n\n const handleContextMenuAction = useContextMenu({\n dataSource,\n onPersistentColumnOperation: handlePersistentColumnOperation,\n });\n\n const viewportMeasurements = useTableViewport({\n columns,\n headerHeight,\n headings,\n rowCount,\n rowHeight,\n size: containerMeasurements.innerSize,\n });\n\n const onSubscribed = useCallback(\n (subscription: DataSourceSubscribedMessage) => {\n if (subscription.tableMeta) {\n const { columns: columnNames, dataTypes: serverDataTypes } =\n subscription.tableMeta;\n expectConfigChangeRef.current = true;\n dispatchColumnAction({\n type: \"setTypes\",\n columnNames,\n serverDataTypes,\n });\n }\n },\n [dispatchColumnAction]\n );\n\n const handleSelectionChange: SelectionChangeHandler = useCallback(\n (selected) => {\n dataSource.select(selected);\n onSelectionChange?.(selected);\n },\n [dataSource, onSelectionChange]\n );\n\n const handleRowClick = useSelection({\n onSelectionChange: handleSelectionChange,\n selectionModel,\n });\n\n const { data, getSelectedRows, range, setRange } = useDataSource({\n dataSource,\n onFeatureEnabled,\n onFeatureInvocation,\n onSubscribed,\n onSizeChange: onDataRowcountChange,\n renderBufferSize,\n viewportRowCount: viewportMeasurements.rowCount,\n });\n\n // Keep a ref to current data. We use it to provide row for context menu actions.\n // We don't want to introduce data as a dependency on the context menu handler, just\n // needs to be correct at runtime when the row is right clicked.\n const dataRef = useRef<DataSourceRow[]>();\n dataRef.current = data;\n\n const handleSort = useCallback(\n (\n column: KeyedColumnDescriptor,\n extendSort = false,\n sortType?: VuuSortType\n ) => {\n if (dataSource) {\n dataSource.sort = applySort(\n dataSource.sort,\n column,\n extendSort,\n sortType\n );\n }\n },\n [dataSource]\n );\n\n const handleColumnResize: TableColumnResizeHandler = useCallback(\n (phase, columnName, width) => {\n const column = columns.find((column) => column.name === columnName);\n if (column) {\n if (phase === \"end\") {\n expectConfigChangeRef.current = true;\n }\n dispatchColumnAction({\n type: \"resizeColumn\",\n phase,\n column,\n width,\n });\n } else {\n throw Error(\n `useDataTable.handleColumnResize, column ${columnName} not found`\n );\n }\n },\n [columns, dispatchColumnAction]\n );\n\n const handleToggleGroup = useCallback(\n (row: DataSourceRow, column: KeyedColumnDescriptor) => {\n const isJson = isJsonGroup(column, row);\n const key = row[KEY];\n\n if (row[IS_EXPANDED]) {\n (dataSource as JsonDataSource).closeTreeNode(key, true);\n if (isJson) {\n const idx = columns.indexOf(column);\n const rows = (dataSource as JsonDataSource).getRowsAtDepth(idx + 1);\n if (!rows.some((row) => row[IS_EXPANDED] || row[IS_LEAF])) {\n dispatchColumnAction({\n type: \"hideColumns\",\n columns: columns.slice(idx + 2),\n });\n }\n }\n } else {\n dataSource.openTreeNode(key);\n if (isJson) {\n const childRows = (dataSource as JsonDataSource).getChildRows(key);\n const idx = columns.indexOf(column) + 1;\n const columnsToShow = [columns[idx]];\n if (childRows.some((row) => row[IS_LEAF])) {\n columnsToShow.push(columns[idx + 1]);\n }\n if (columnsToShow.some((col) => col.hidden)) {\n dispatchColumnAction({\n type: \"showColumns\",\n columns: columnsToShow,\n });\n }\n }\n }\n },\n [columns, dataSource, dispatchColumnAction]\n );\n\n const {\n onVerticalScroll,\n onHorizontalScroll,\n columnsWithinViewport,\n virtualColSpan,\n } = useVirtualViewport({\n columns,\n rowHeight,\n setRange,\n viewportMeasurements,\n });\n\n const { requestScroll, ...scrollProps } = useTableScroll({\n onHorizontalScroll,\n // onRangeChange: setRange,\n onVerticalScroll,\n\n viewport: viewportMeasurements,\n viewportHeight:\n (containerMeasurements.innerSize?.height ?? 0) - headerHeight,\n });\n\n const containerProps = useKeyboardNavigation({\n columnCount: columns.length,\n containerRef: containerMeasurements.containerRef,\n data,\n requestScroll,\n rowCount: dataSource?.size,\n viewportRange: range,\n });\n\n const handleRemoveColumnFromGroupBy = useCallback(\n (column: KeyedColumnDescriptor) => {\n if (dataSource && dataSource.groupBy.includes(column.name)) {\n dataSource.groupBy = dataSource.groupBy.filter(\n (columnName) => columnName !== column.name\n );\n }\n },\n [dataSource]\n );\n\n const handleDropColumn = useCallback(\n (fromIndex: number, toIndex: number) => {\n const column = dataSource.columns[fromIndex];\n const columns = moveItem(dataSource.columns, column, toIndex);\n if (columns !== dataSource.columns) {\n dataSource.columns = columns;\n dispatchColumnAction({ type: \"tableConfig\", columns });\n }\n },\n [dataSource, dispatchColumnAction]\n );\n\n const draggableHook = useDraggableColumn({\n onDrop: handleDropColumn,\n tableContainerRef: scrollProps.tableContainerRef,\n tableLayout,\n });\n\n useEffect(() => {\n // External config has changed\n if (dataSourceRef.current) {\n expectConfigChangeRef.current = true;\n dispatchColumnAction({\n type: \"init\",\n tableConfig: config,\n dataSourceConfig: dataSourceRef.current.config,\n });\n }\n }, [config, dispatchColumnAction]);\n\n useEffect(() => {\n dataSource.on(\"config\", (config, confirmed) => {\n expectConfigChangeRef.current = true;\n dispatchColumnAction({\n type: \"tableConfig\",\n ...config,\n confirmed,\n });\n });\n }, [dataSource, dispatchColumnAction]);\n\n useMemo(() => {\n if (expectConfigChangeRef.current) {\n onConfigChange?.({\n ...config,\n columns,\n });\n expectConfigChangeRef.current = false;\n }\n }, [columns, config, onConfigChange]);\n\n const showContextMenu = usePopupContextMenu();\n\n const onContextMenu = useCallback(\n (evt: MouseEvent<HTMLElement>) => {\n const { current: currentData } = dataRef;\n const { current: currentDataSource } = dataSourceRef;\n const target = evt.target as HTMLElement;\n const cellEl = target?.closest(\"td\");\n const rowEl = target?.closest(\"tr\");\n\n if (cellEl && rowEl && currentData && currentDataSource) {\n const { columns, selectedRowsCount } = currentDataSource;\n const columnMap = buildColumnMap(columns);\n const rowIndex = parseInt(rowEl.ariaRowIndex ?? \"-1\");\n const cellIndex = Array.from(rowEl.childNodes).indexOf(cellEl);\n const row = currentData.find(([idx]) => idx === rowIndex);\n const columnName = columns[cellIndex];\n\n showContextMenu(evt, \"grid\", {\n columnMap,\n columnName,\n row,\n selectedRows: selectedRowsCount === 0 ? NO_ROWS : getSelectedRows(),\n viewport: dataSource?.viewport,\n });\n }\n },\n [dataSource?.viewport, getSelectedRows, showContextMenu]\n );\n\n return {\n containerMeasurements,\n containerProps,\n columns,\n columnsWithinViewport,\n data,\n dispatchColumnAction,\n handleContextMenuAction,\n headings,\n onColumnResize: handleColumnResize,\n onContextMenu,\n onRemoveColumnFromGroupBy: handleRemoveColumnFromGroupBy,\n onRowClick: handleRowClick,\n onSort: handleSort,\n onToggleGroup: handleToggleGroup,\n virtualColSpan,\n scrollProps,\n rowCount,\n viewportMeasurements,\n ...draggableHook,\n };\n};\n", "import {\n DataSource,\n DataSourceConfigMessage,\n DataSourceRow,\n DataSourceSubscribedMessage,\n SubscribeCallback,\n VuuFeatureMessage,\n isVuuFeatureAction,\n VuuFeatureInvocationMessage,\n isVuuFeatureInvocation,\n} from \"@vuu-ui/vuu-data\";\nimport { VuuRange, VuuSortCol } from \"@vuu-ui/vuu-protocol-types\";\nimport { getFullRange, metadataKeys, WindowRange } from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nconst { SELECTED } = metadataKeys;\n\n// const byKey = (row1: VuuDataRow, row2: VuuDataRow) =>\n// ((row1[RENDER_IDX] as number) - row2[RENDER_IDX]) as number;\n\nexport type SubscriptionDetails = {\n columnNames?: string[];\n range: { from: number; to: number };\n sort?: VuuSortCol[];\n};\n\nexport interface DataSourceHookProps {\n dataSource: DataSource;\n onConfigChange?: (message: DataSourceConfigMessage) => void;\n onFeatureEnabled?: (message: VuuFeatureMessage) => void;\n onFeatureInvocation?: (message: VuuFeatureInvocationMessage) => void;\n onSizeChange: (size: number) => void;\n onSubscribed: (subscription: DataSourceSubscribedMessage) => void;\n range?: VuuRange;\n renderBufferSize?: number;\n viewportRowCount: number;\n}\n\n//TODO allow subscription details to be set before subscribe call\nexport function useDataSource({\n dataSource,\n onConfigChange,\n onFeatureEnabled,\n onFeatureInvocation,\n onSizeChange,\n onSubscribed,\n range = { from: 0, to: 0 },\n renderBufferSize = 0,\n viewportRowCount,\n}: DataSourceHookProps) {\n const [, forceUpdate] = useState<unknown>(null);\n const isMounted = useRef(true);\n const hasUpdated = useRef(false);\n const rangeRef = useRef<VuuRange>({ from: 0, to: 0 });\n const rafHandle = useRef<number | null>(null);\n const data = useRef<DataSourceRow[]>([]);\n\n const dataWindow = useMemo(\n () => new MovingWindow(getFullRange(range)),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n const setData = useCallback(\n (updates: DataSourceRow[]) => {\n // onsole.log(`%c[useDataSource] setData\n // [${updates.map(d => d[0]).join(',')}]`,'color:blue')\n for (const row of updates) {\n dataWindow.add(row);\n }\n\n // Why bother with the slice ?\n // data.current = dataWindow.data.slice().sort(byKey);\n data.current = dataWindow.data;\n // onsole.log(`%c[useDataSource] data.current has ${data.current.length} records\n // [${data.current.map(d => d[0]).join(',')}]\n // `, 'color:blue;')\n hasUpdated.current = true;\n },\n [dataWindow]\n );\n\n const datasourceMessageHandler: SubscribeCallback = useCallback(\n (message) => {\n if (message.type === \"subscribed\") {\n onSubscribed?.(message);\n } else if (message.type === \"viewport-update\") {\n if (typeof message.size === \"number\") {\n onSizeChange?.(message.size);\n dataWindow.setRowCount(message.size);\n }\n if (message.rows) {\n setData(message.rows);\n } else if (typeof message.size === \"number\") {\n // TODO is this right ??????\n data.current = dataWindow.data;\n // data.current = dataWindow.data.slice().sort(byKey);\n hasUpdated.current = true;\n }\n } else if (isVuuFeatureAction(message)) {\n onFeatureEnabled?.(message);\n } else if (isVuuFeatureInvocation(message)) {\n onFeatureInvocation?.(message);\n } else {\n console.log(`useDataSource unexpected message ${message.type}`);\n }\n },\n [\n dataWindow,\n onFeatureEnabled,\n onFeatureInvocation,\n onSizeChange,\n onSubscribed,\n setData,\n ]\n );\n\n useEffect(\n () => () => {\n if (rafHandle.current) {\n cancelAnimationFrame(rafHandle.current);\n rafHandle.current = null;\n }\n isMounted.current = false;\n },\n []\n );\n\n const refreshIfUpdated = useCallback(() => {\n if (isMounted.current) {\n if (hasUpdated.current) {\n forceUpdate({});\n hasUpdated.current = false;\n }\n rafHandle.current = requestAnimationFrame(refreshIfUpdated);\n }\n }, [forceUpdate]);\n\n useEffect(() => {\n rafHandle.current = requestAnimationFrame(refreshIfUpdated);\n }, [refreshIfUpdated]);\n\n const adjustRange = useCallback(\n (rowCount: number) => {\n const { from } = dataSource.range;\n const rowRange = { from, to: from + rowCount };\n const fullRange = getFullRange(rowRange, renderBufferSize);\n dataSource.range = rangeRef.current = fullRange;\n // seems a bit naughty to emit from outside, but the datasource doesn't\n // know about the buffer size we add to the base range\n dataSource.emit(\"range\", rowRange);\n dataWindow.setRange(fullRange);\n },\n [dataSource, dataWindow, renderBufferSize]\n );\n\n const setRange = useCallback(\n (range: VuuRange) => {\n const fullRange = getFullRange(range, renderBufferSize);\n dataSource.range = rangeRef.current = fullRange;\n dataWindow.setRange(fullRange);\n dataSource.emit(\"range\", range);\n },\n [dataSource, dataWindow, renderBufferSize]\n );\n\n const getSelectedRows = useCallback(() => {\n return dataWindow.getSelectedRows();\n }, [dataWindow]);\n\n // Note: we do not call unsubscribe in a cleanup function here.\n // Thats because we do not want to unsubscribe in the event that\n // our view is unmounts due to a layout drag drop operation. In\n // that scenario, we disable the viewport. THis is handles at the\n // View level. Might need to revisit this - what if Table is not\n // nested within a View ?\n useEffect(() => {\n dataSource?.subscribe(\n {\n range: rangeRef.current,\n },\n datasourceMessageHandler\n );\n }, [dataSource, datasourceMessageHandler, onConfigChange]);\n\n useEffect(() => {\n adjustRange(viewportRowCount);\n }, [adjustRange, viewportRowCount]);\n\n return {\n data: data.current,\n getSelectedRows,\n range: rangeRef.current,\n setRange,\n dataSource,\n };\n}\n\nexport class MovingWindow {\n public data: DataSourceRow[];\n public rowCount = 0;\n private range: WindowRange;\n\n constructor({ from, to }: VuuRange) {\n this.range = new WindowRange(from, to);\n //internal data is always 0 based, we add range.from to determine an offset\n this.data = new Array(to - from);\n this.rowCount = 0;\n }\n\n setRowCount = (rowCount: number) => {\n if (rowCount < this.data.length) {\n this.data.length = rowCount;\n }\n\n this.rowCount = rowCount;\n };\n\n add(data: DataSourceRow) {\n const [index] = data;\n if (this.isWithinRange(index)) {\n const internalIndex = index - this.range.from;\n this.data[internalIndex] = data;\n\n // assign 'pre-selected' selection state. This allows us to assign a className\n // to a non selected row that immediately precedes a selected row. Useful for\n // styling. This cannot be achieved any other way as document order of row\n // elements does not necessarily reflect data order.\n const isSelected = data[SELECTED];\n const preSelected = this.data[internalIndex - 1]?.[SELECTED];\n if (preSelected === 0 && isSelected) {\n this.data[internalIndex - 1][SELECTED] = 2;\n } else if (preSelected === 2 && !isSelected) {\n this.data[internalIndex - 1][SELECTED] = 0;\n }\n }\n }\n\n getAtIndex(index: number) {\n return this.range.isWithin(index) &&\n this.data[index - this.range.from] != null\n ? this.data[index - this.range.from]\n : undefined;\n }\n\n isWithinRange(index: number) {\n return this.range.isWithin(index);\n }\n\n setRange({ from, to }: VuuRange) {\n if (from !== this.range.from || to !== this.range.to) {\n const [overlapFrom, overlapTo] = this.range.overlap(from, to);\n const newData = new Array(to - from);\n for (let i = overlapFrom; i < overlapTo; i++) {\n const data = this.getAtIndex(i);\n if (data) {\n const index = i - from;\n newData[index] = data;\n }\n }\n this.data = newData;\n this.range.from = from;\n this.range.to = to;\n }\n }\n\n getSelectedRows() {\n return this.data.filter((row) => row[SELECTED] === 1);\n }\n}\n", "import { useDragDrop } from \"@heswell/salt-lab\";\nimport {\n MouseEvent,\n RefObject,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\n\ntype MousePos = {\n clientX: number;\n clientY: number;\n idx: string;\n};\n\nexport interface DraggableColumnHookProps {\n onDrop: (fromIndex: number, toIndex: number) => void;\n tableContainerRef: RefObject<HTMLDivElement>;\n tableLayout: \"column\" | \"row\";\n}\n\nexport const useDraggableColumn = ({\n onDrop,\n tableContainerRef,\n tableLayout: tableLayoutProp,\n}: DraggableColumnHookProps) => {\n const [tableLayout, setTableLayout] = useState(tableLayoutProp);\n const mousePosRef = useRef<MousePos>();\n\n const handleDropSettle = useCallback(() => {\n console.log(`handleDropSettle`);\n mousePosRef.current = undefined;\n setTableLayout(\"row\");\n }, []);\n\n const { draggable, draggedItemIndex, onMouseDown } = useDragDrop({\n allowDragDrop: true,\n draggableClassName: \"table-column\",\n orientation: \"horizontal\",\n containerRef: tableContainerRef,\n itemQuery: \".vuuTable-table\",\n onDrop,\n onDropSettle: handleDropSettle,\n });\n\n const handleHeaderCellDragStart = useCallback((evt: MouseEvent) => {\n const { clientX, clientY } = evt;\n console.log(\n `useDraggableColumn handleHeaderCellDragStart means mouseDown fired on a column in RowBasedTable`\n );\n const sourceElement = evt.target as HTMLElement;\n const thElement = sourceElement.closest(\".vuuTable-headerCell\");\n const {\n dataset: { idx = \"-1\" },\n } = thElement as HTMLElement;\n mousePosRef.current = {\n clientX,\n clientY,\n idx,\n };\n setTableLayout(\"column\");\n }, []);\n\n useLayoutEffect(() => {\n if (tableLayout === \"column\" && mousePosRef.current && !draggable) {\n const { clientX, clientY, idx } = mousePosRef.current;\n const target = tableContainerRef.current?.querySelector(\n `.vuuTable-table[data-idx=\"${idx}\"]`\n ) as HTMLElement;\n if (target) {\n const evt = {\n persist: () => undefined,\n nativeEvent: {\n clientX,\n clientY,\n target,\n },\n };\n onMouseDown?.(evt as unknown as MouseEvent);\n }\n }\n }, [draggable, onMouseDown, tableContainerRef, tableLayout]);\n\n return {\n draggable,\n draggedItemIndex,\n tableLayout,\n onHeaderCellDragStart:\n tableLayout === \"row\" ? handleHeaderCellDragStart : undefined,\n };\n};\n", "import { DataSourceRow } from \"@vuu-ui/vuu-data\";\nimport { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\nimport { withinRange } from \"@vuu-ui/vuu-utils\";\nimport {\n KeyboardEvent,\n MouseEvent,\n RefObject,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport {\n ArrowDown,\n ArrowKey,\n ArrowLeft,\n ArrowRight,\n ArrowUp,\n End,\n Home,\n isNavigationKey,\n isPagingKey,\n NavigationKey,\n PageDown,\n PageUp,\n} from \"./keyUtils\";\nimport { ScrollRequestHandler } from \"./useTableScroll\";\n\nexport type CellPos = [number, number];\n\nconst headerCellQuery = (colIdx: number) => `thead th:nth-child(${colIdx + 1})`;\nconst dataCellQuery = (rowIdx: number, colIdx: number) =>\n `tbody > tr[aria-rowindex='${rowIdx}'] > td:nth-child(${colIdx + 1})`;\n\nconst NULL_CELL_POS: CellPos = [-1, -1];\n\nfunction nextCellPos(\n key: ArrowKey,\n [rowIdx, colIdx]: CellPos,\n columnCount: number,\n rowCount: number\n): CellPos {\n if (key === ArrowUp) {\n if (rowIdx > -1) {\n return [rowIdx - 1, colIdx];\n } else {\n return [rowIdx, colIdx];\n }\n } else if (key === ArrowDown) {\n if (rowIdx === -1) {\n return [0, colIdx];\n } else if (rowIdx === rowCount - 1) {\n return [rowIdx, colIdx];\n } else {\n return [rowIdx + 1, colIdx];\n }\n } else if (key === ArrowRight) {\n if (colIdx < columnCount - 1) {\n return [rowIdx, colIdx + 1];\n } else {\n return [rowIdx, colIdx];\n }\n } else if (key === ArrowLeft) {\n if (colIdx > 0) {\n return [rowIdx, colIdx - 1];\n } else {\n return [rowIdx, colIdx];\n }\n }\n return [rowIdx, colIdx];\n}\n\nexport interface NavigationHookProps {\n containerRef: RefObject<HTMLElement>;\n columnCount?: number;\n data: DataSourceRow[];\n disableHighlightOnFocus?: boolean;\n label?: string;\n viewportRange: VuuRange;\n requestScroll?: ScrollRequestHandler;\n restoreLastFocus?: boolean;\n rowCount?: number;\n selected?: unknown;\n}\n\nexport const useKeyboardNavigation = ({\n columnCount = 0,\n containerRef,\n disableHighlightOnFocus,\n data,\n requestScroll,\n rowCount = 0,\n viewportRange,\n}: NavigationHookProps) => {\n const { from: viewportFirstRow, to: viewportLastRow } = viewportRange;\n const focusedCellPos = useRef<CellPos>([-1, -1]);\n const focusableCell = useRef<HTMLTableCellElement>();\n const activeCellPos = useRef<CellPos>([-1, 0]);\n\n const getTableCell = useCallback(\n ([rowIdx, colIdx]: CellPos) => {\n const cssQuery =\n rowIdx === -1 ? headerCellQuery(colIdx) : dataCellQuery(rowIdx, colIdx);\n return containerRef.current?.querySelector(\n cssQuery\n ) as HTMLTableCellElement;\n },\n [containerRef]\n );\n\n const getFocusedCell = (element: HTMLElement | Element | null) =>\n element?.closest(\"th,td\") as HTMLTableCellElement | null;\n\n const getTableCellPos = (tableCell: HTMLTableCellElement): CellPos => {\n if (tableCell.tagName === \"TH\") {\n const colIdx = parseInt(tableCell.dataset.idx ?? \"-1\", 10);\n return [-1, colIdx];\n } else {\n const focusedRow = tableCell.closest(\"tr\");\n if (focusedRow) {\n const rowIdx = parseInt(focusedRow.ariaRowIndex ?? \"-1\", 10);\n // TODO will get trickier when we introduce horizontal virtualisation\n const colIdx = Array.from(focusedRow.childNodes).indexOf(tableCell);\n return [rowIdx, colIdx];\n }\n }\n return NULL_CELL_POS;\n };\n\n const focusCell = useCallback(\n (cellPos: CellPos) => {\n if (containerRef.current) {\n const activeCell = getTableCell(cellPos);\n if (activeCell) {\n if (activeCell !== focusableCell.current) {\n focusableCell.current?.setAttribute(\"tabindex\", \"\");\n focusableCell.current = activeCell;\n activeCell.setAttribute(\"tabindex\", \"0\");\n }\n activeCell.focus();\n } else if (!withinRange(cellPos[0], viewportRange)) {\n focusableCell.current = undefined;\n requestScroll?.({ type: \"scroll-page\", direction: \"up\" });\n }\n }\n },\n // TODO we recreate this function whenever viewportRange changes, which will\n // be often whilst scrolling - store range in a a ref ?\n [containerRef, getTableCell, requestScroll, viewportRange]\n );\n\n const setActiveCell = useCallback(\n (rowIdx: number, colIdx: number, fromKeyboard = false) => {\n const pos: CellPos = [rowIdx, colIdx];\n activeCellPos.current = pos;\n focusCell(pos);\n if (fromKeyboard) {\n focusedCellPos.current = pos;\n }\n },\n [focusCell]\n );\n\n const virtualizeActiveCell = useCallback(() => {\n focusableCell.current?.setAttribute(\"tabindex\", \"\");\n focusableCell.current = undefined;\n }, []);\n\n const nextPageItemIdx = useCallback(\n async (\n key: \"PageDown\" | \"PageUp\" | \"Home\" | \"End\",\n cellPos: CellPos\n ): Promise<CellPos> => {\n switch (key) {\n case PageDown:\n requestScroll?.({ type: \"scroll-page\", direction: \"down\" });\n break;\n case PageUp:\n requestScroll?.({ type: \"scroll-page\", direction: \"up\" });\n break;\n case Home:\n requestScroll?.({ type: \"scroll-end\", direction: \"home\" });\n break;\n case End:\n requestScroll?.({ type: \"scroll-end\", direction: \"end\" });\n break;\n }\n // TODO set up a scroll listener here, reset focused cell once scroll completes\n return cellPos;\n },\n [requestScroll]\n );\n\n const handleFocus = useCallback(() => {\n if (disableHighlightOnFocus !== true) {\n if (containerRef.current?.contains(document.activeElement)) {\n // IF focus arrives via keyboard, a cell will have received focus,\n // we handle that here. If focus arrives via click on a cell with\n // no tabindex (i.e all cells except one) we leave that to the\n // click handler.\n const focusedCell = getFocusedCell(document.activeElement);\n if (focusedCell) {\n focusedCellPos.current = getTableCellPos(focusedCell);\n }\n }\n }\n }, [disableHighlightOnFocus, containerRef]);\n\n const navigateChildItems = useCallback(\n async (key: NavigationKey) => {\n const [nextRowIdx, nextColIdx] = isPagingKey(key)\n ? await nextPageItemIdx(key, activeCellPos.current)\n : nextCellPos(key, activeCellPos.current, columnCount, rowCount);\n\n const [rowIdx, colIdx] = activeCellPos.current;\n if (nextRowIdx !== rowIdx || nextColIdx !== colIdx) {\n setActiveCell(nextRowIdx, nextColIdx, true);\n }\n },\n [columnCount, nextPageItemIdx, rowCount, setActiveCell]\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (data.length > 0 && isNavigationKey(e.key)) {\n e.preventDefault();\n e.stopPropagation();\n void navigateChildItems(e.key);\n }\n },\n [data, navigateChildItems]\n );\n\n const handleClick = useCallback(\n // Might not be a cell e.g the Settings button\n (evt: MouseEvent) => {\n const target = evt.target as HTMLElement;\n const focusedCell = getFocusedCell(target);\n if (focusedCell) {\n const [rowIdx, colIdx] = getTableCellPos(focusedCell);\n setActiveCell(rowIdx, colIdx);\n }\n },\n [setActiveCell]\n );\n\n const containerProps = useMemo(() => {\n return {\n onClick: handleClick,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n };\n }, [handleClick, handleFocus, handleKeyDown]);\n\n useLayoutEffect(() => {\n const { current: cellPos } = activeCellPos;\n const withinViewport =\n cellPos[0] >= viewportFirstRow && cellPos[0] <= viewportLastRow;\n\n if (focusableCell.current && !withinViewport) {\n virtualizeActiveCell();\n } else if (!focusableCell.current && withinViewport) {\n focusCell(cellPos);\n }\n }, [focusCell, viewportFirstRow, viewportLastRow, virtualizeActiveCell]);\n\n // First render will only render the outer container when explicit\n // sizing has not been provided. Outer container is measured and\n // only then, on second render, is content rendered.\n const fullyRendered = containerRef.current?.firstChild != null;\n useEffect(() => {\n if (fullyRendered && focusableCell.current === undefined) {\n const headerCell = containerRef.current?.querySelector(\n headerCellQuery(0)\n ) as HTMLTableCellElement;\n if (headerCell) {\n headerCell.setAttribute(\"tabindex\", \"0\");\n focusableCell.current = headerCell;\n }\n }\n }, [containerRef, fullyRendered]);\n\n return containerProps;\n};\n", "import React from \"react\";\n\nfunction union<T>(set1: Set<T>, ...sets: Set<T>[]) {\n const result = new Set(set1);\n for (let set of sets) {\n for (let element of set) {\n result.add(element);\n }\n }\n return result;\n}\n\nexport const ArrowUp = \"ArrowUp\";\nexport const ArrowDown = \"ArrowDown\";\nexport const ArrowLeft = \"ArrowLeft\";\nexport const ArrowRight = \"ArrowRight\";\nexport const Enter = \"Enter\";\nexport const Escape = \"Escape\";\nexport const Home = \"Home\";\nexport const End = \"End\";\nexport const PageUp = \"PageUp\";\nexport const PageDown = \"PageDown\";\nexport const Space = \" \";\nexport const Tab = \"Tab\";\n\nconst actionKeys = new Set([\"Enter\", \"Delete\", \" \"]);\nconst focusKeys = new Set([\"Tab\"]);\nconst arrowLeftRightKeys = new Set([\"ArrowRight\", \"ArrowLeft\"]);\nconst navigationKeys = new Set<NavigationKey>([\n Home,\n End,\n PageUp,\n PageDown,\n ArrowDown,\n ArrowLeft,\n ArrowRight,\n ArrowUp,\n]);\nconst functionKeys = new Set([\n \"F1\",\n \"F2\",\n \"F3\",\n \"F4\",\n \"F5\",\n \"F6\",\n \"F7\",\n \"F8\",\n \"F9\",\n \"F10\",\n \"F11\",\n \"F12\",\n]);\nconst specialKeys = union(\n actionKeys,\n navigationKeys,\n arrowLeftRightKeys,\n functionKeys,\n focusKeys\n);\nexport const isCharacterKey = (evt: React.KeyboardEvent): boolean => {\n if (specialKeys.has(evt.key)) {\n return false;\n }\n return evt.key.length === 1 && !evt.ctrlKey && !evt.metaKey && !evt.altKey;\n};\n\nexport type ArrowKey = \"ArrowUp\" | \"ArrowDown\" | \"ArrowLeft\" | \"ArrowRight\";\nexport type PageKey = \"Home\" | \"End\" | \"PageUp\" | \"PageDown\";\nexport type NavigationKey = PageKey | ArrowKey;\nconst PageKeys = [\"Home\", \"End\", \"PageUp\", \"PageDown\"];\nexport const isPagingKey = (key: string): key is PageKey =>\n PageKeys.includes(key);\n\nexport const isNavigationKey = (key: string): key is NavigationKey => {\n return navigationKeys.has(key as NavigationKey);\n};\n", "import { RefObject, useCallback, useRef, useState } from \"react\";\nimport { useResizeObserver, ResizeHandler } from \"./useResizeObserver\";\n\nconst ClientWidthHeight = [\"clientHeight\", \"clientWidth\"];\n\nexport interface ClientSize {\n clientHeight: number;\n clientWidth: number;\n}\n\nexport interface MeasuredProps {\n defaultHeight?: number;\n defaultWidth?: number;\n height?: number;\n width?: number;\n}\n\nexport interface Size {\n height: number | \"100%\";\n width: number | \"100%\";\n}\n\nexport interface MeasuredSize {\n height: number;\n width: number;\n}\n\ninterface MeasuredState {\n outer: Size;\n inner?: MeasuredSize;\n}\n\nconst isNumber = (val: unknown): val is number => Number.isFinite(val);\n\nexport interface MeasuredContainerHookResult {\n containerRef: RefObject<HTMLDivElement>;\n outerSize: Size;\n innerSize?: MeasuredSize;\n}\n\nexport const useMeasuredContainer = ({\n defaultHeight = 0,\n defaultWidth = 0,\n height,\n width,\n}: MeasuredProps): MeasuredContainerHookResult => {\n const containerRef = useRef<HTMLDivElement>(null);\n\n const [size, setSize] = useState<MeasuredState>({\n outer: {\n height: height ?? \"100%\",\n width: width ?? \"100%\",\n },\n });\n\n const onResize: ResizeHandler = useCallback(\n ({ clientWidth, clientHeight }: Partial<ClientSize>) => {\n setSize((currentSize) => {\n const { inner, outer } = currentSize;\n return isNumber(clientHeight) &&\n isNumber(clientWidth) &&\n (clientWidth !== inner?.width || clientHeight !== inner?.height)\n ? {\n outer,\n inner: {\n width: Math.floor(clientWidth) || defaultWidth,\n height: Math.floor(clientHeight) || defaultHeight,\n },\n }\n : currentSize;\n });\n },\n [defaultHeight, defaultWidth]\n );\n\n useResizeObserver(containerRef, ClientWidthHeight, onResize, true);\n\n return {\n containerRef,\n outerSize: size.outer,\n innerSize: size.inner,\n };\n};\n", "import { RefObject, useCallback, useEffect, useRef } from \"react\";\n\nexport const WidthHeight = [\"height\", \"width\"];\nexport const WidthOnly = [\"width\"];\n\nexport type measurements<T = string | number> = {\n height?: T;\n clientHeight?: number;\n clientWidth?: number;\n contentHeight?: number;\n contentWidth?: number;\n scrollHeight?: number;\n scrollWidth?: number;\n width?: T;\n};\ntype measuredDimension = keyof measurements<number>;\n\nexport type ResizeHandler = (measurements: measurements<number>) => void;\n\ntype observedDetails = {\n onResize?: ResizeHandler;\n measurements: measurements<number>;\n};\nconst observedMap = new Map<HTMLElement, observedDetails>();\n\nconst getTargetSize = (\n element: HTMLElement,\n size: {\n height: number;\n width: number;\n contentHeight: number;\n contentWidth: number;\n },\n dimension: measuredDimension\n): number => {\n switch (dimension) {\n case \"height\":\n return size.height;\n case \"clientHeight\":\n return element.clientHeight;\n case \"clientWidth\":\n return element.clientWidth;\n case \"contentHeight\":\n return size.contentHeight;\n case \"contentWidth\":\n return size.contentWidth;\n case \"scrollHeight\":\n return Math.ceil(element.scrollHeight);\n case \"scrollWidth\":\n return Math.ceil(element.scrollWidth);\n case \"width\":\n return size.width;\n default:\n return 0;\n }\n};\n\n// TODO should we make this create-on-demand\nconst resizeObserver = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n for (const entry of entries) {\n const { target, borderBoxSize, contentBoxSize } = entry;\n const observedTarget = observedMap.get(target as HTMLElement);\n if (observedTarget) {\n const [{ blockSize: height, inlineSize: width }] = borderBoxSize;\n const [{ blockSize: contentHeight, inlineSize: contentWidth }] =\n contentBoxSize;\n const { onResize, measurements } = observedTarget;\n let sizeChanged = false;\n for (const [dimension, size] of Object.entries(measurements)) {\n const newSize = getTargetSize(\n target as HTMLElement,\n { height, width, contentHeight, contentWidth },\n dimension as measuredDimension\n );\n\n if (newSize !== size) {\n sizeChanged = true;\n measurements[dimension as measuredDimension] = newSize;\n }\n }\n if (sizeChanged) {\n // TODO only return measured sizes\n onResize && onResize(measurements);\n }\n }\n }\n});\n\n// TODO use an optional lag (default to false) to ask to fire onResize\n// with initial size\nexport function useResizeObserver(\n ref: RefObject<Element | HTMLElement | null>,\n dimensions: string[],\n onResize: ResizeHandler,\n reportInitialSize = false\n) {\n const dimensionsRef = useRef(dimensions);\n\n const measure = useCallback((target: HTMLElement): measurements<number> => {\n const { width, height } = target.getBoundingClientRect();\n const { clientWidth: contentWidth, clientHeight: contentHeight } = target;\n return dimensionsRef.current.reduce(\n (map: { [key: string]: number }, dim) => {\n map[dim] = getTargetSize(\n target,\n { width, height, contentHeight, contentWidth },\n dim as measuredDimension\n );\n return map;\n },\n {}\n );\n }, []);\n\n // TODO use ref to store resizeHandler here\n // resize handler registered with REsizeObserver will never change\n // use ref to store user onResize callback here\n // resizeHandler will call user callback.current\n\n // Keep this effect separate in case user inadvertently passes different\n // dimensions or callback instance each time - we only ever want to\n // initiate new observation when ref changes.\n useEffect(() => {\n const target = ref.current as HTMLElement;\n async function registerObserver() {\n // Create the map entry immediately. useEffect may fire below\n // before fonts are ready and attempt to update entry\n observedMap.set(target, { measurements: {} as measurements<number> });\n await document.fonts.ready;\n const observedTarget = observedMap.get(target);\n if (observedTarget) {\n const measurements = measure(target);\n observedTarget.measurements = measurements;\n resizeObserver.observe(target);\n if (reportInitialSize) {\n onResize(measurements);\n }\n } else {\n console.log(\n `%cuseResizeObserver an target expected to be under observation wa snot found. This warrants investigation`,\n \"font-weight:bold; color:red;\"\n );\n }\n }\n\n if (target) {\n // TODO might we want multiple callers to attach a listener to the same element ?\n if (observedMap.has(target)) {\n throw Error(\n \"useResizeObserver attemping to observe same element twice\"\n );\n }\n // TODO set a pending entry on map\n registerObserver();\n }\n return () => {\n if (target && observedMap.has(target)) {\n resizeObserver.unobserve(target);\n observedMap.delete(target);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [measure, ref]);\n\n useEffect(() => {\n const target = ref.current as HTMLElement;\n const record = observedMap.get(target);\n if (record) {\n if (dimensionsRef.current !== dimensions) {\n dimensionsRef.current = dimensions;\n const measurements = measure(target);\n record.measurements = measurements;\n }\n // Might not have changed, but no harm ...\n record.onResize = onResize;\n }\n }, [dimensions, measure, ref, onResize]);\n}\n", "import {\n Selection,\n SelectionChangeHandler,\n TableSelectionModel,\n} from \"@vuu-ui/vuu-datagrid-types\";\nimport { deselectItem, metadataKeys, selectItem } from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useRef } from \"react\";\nimport { RowClickHandler } from \"./dataTableTypes\";\n\nconst { IDX, SELECTED } = metadataKeys;\n\nconst NO_SELECTION: Selection = [];\n\nexport interface SelectionHookProps {\n selectionModel: TableSelectionModel;\n onSelectionChange: SelectionChangeHandler;\n}\n\nexport const useSelection = ({\n selectionModel,\n onSelectionChange,\n}: SelectionHookProps) => {\n selectionModel === \"extended\" || selectionModel === \"checkbox\";\n const lastActiveRef = useRef(-1);\n const selectedRef = useRef<Selection>(NO_SELECTION);\n\n const handleSelectionChange: RowClickHandler = useCallback(\n (row, rangeSelect, keepExistingSelection) => {\n const { [IDX]: idx, [SELECTED]: isSelected } = row;\n const { current: active } = lastActiveRef;\n const { current: selected } = selectedRef;\n\n const selectOperation = isSelected ? deselectItem : selectItem;\n\n const newSelected = selectOperation(\n selectionModel,\n selected,\n idx,\n rangeSelect,\n keepExistingSelection,\n active\n );\n\n selectedRef.current = newSelected;\n lastActiveRef.current = idx;\n\n if (onSelectionChange) {\n onSelectionChange(newSelected);\n }\n },\n [onSelectionChange, selectionModel]\n );\n\n return handleSelectionChange;\n};\n", "import {\n ColumnDescriptor,\n GridConfig,\n KeyedColumnDescriptor,\n PinLocation,\n} from \"@vuu-ui/vuu-datagrid-types\";\nimport { moveItem } from \"@heswell/salt-lab\";\nimport {\n applyFilterToColumns,\n applyGroupByToColumns,\n applySortToColumns,\n findColumn,\n getCellRenderer,\n getColumnName,\n getTableHeadings,\n getValueFormatter,\n isFilteredColumn,\n isGroupColumn,\n isPinned,\n isTypeDescriptor,\n logger,\n metadataKeys,\n sortPinnedColumns,\n stripFilterFromColumns,\n} from \"@vuu-ui/vuu-utils\";\n\nimport { Reducer, useReducer } from \"react\";\nimport { VuuColumnDataType } from \"@vuu-ui/vuu-protocol-types\";\nimport { DataSourceConfig } from \"@vuu-ui/vuu-data\";\n\nconst { info } = logger(\"useTableModel\");\n\nconst DEFAULT_COLUMN_WIDTH = 100;\nconst KEY_OFFSET = metadataKeys.count;\n\nconst columnWithoutDataType = ({ serverDataType }: ColumnDescriptor) =>\n serverDataType === undefined;\n\nconst getCellRendererForColumn = (column: ColumnDescriptor) => {\n if (isTypeDescriptor(column.type)) {\n return getCellRenderer(column.type?.renderer?.name);\n }\n};\n\nconst getDataType = (\n column: ColumnDescriptor,\n columnNames: string[],\n dataTypes: VuuColumnDataType[]\n): VuuColumnDataType => {\n const index = columnNames.indexOf(column.name);\n if (index !== -1 && dataTypes[index]) {\n return dataTypes[index];\n } else {\n return column.serverDataType ?? \"string\";\n }\n};\n\nexport interface GridModel extends Omit<GridConfig, \"columns\"> {\n columns: KeyedColumnDescriptor[];\n}\n\nconst numericTypes = [\"int\", \"long\", \"double\"];\nconst getDefaultAlignment = (serverDataType?: VuuColumnDataType) =>\n serverDataType === undefined\n ? undefined\n : numericTypes.includes(serverDataType)\n ? \"right\"\n : \"left\";\n\nexport interface ColumnActionInit {\n type: \"init\";\n tableConfig: Omit<GridConfig, \"headings\">;\n dataSourceConfig?: DataSourceConfig;\n}\n\nexport interface ColumnActionHide {\n type: \"hideColumns\";\n columns: KeyedColumnDescriptor[];\n}\n\nexport interface ColumnActionShow {\n type: \"showColumns\";\n columns: KeyedColumnDescriptor[];\n}\nexport interface ColumnActionMove {\n type: \"moveColumn\";\n column: KeyedColumnDescriptor;\n moveBy?: 1 | -1;\n moveTo?: number;\n}\n\nexport interface ColumnActionPin {\n type: \"pinColumn\";\n column: ColumnDescriptor;\n pin?: PinLocation;\n}\nexport interface ColumnActionResize {\n type: \"resizeColumn\";\n column: KeyedColumnDescriptor;\n phase: \"begin\" | \"resize\" | \"end\";\n width?: number;\n}\n\nexport interface ColumnActionSetTypes {\n type: \"setTypes\";\n columnNames: string[];\n serverDataTypes: VuuColumnDataType[];\n}\n\nexport interface ColumnActionUpdate {\n type: \"updateColumn\";\n column: ColumnDescriptor;\n}\n\nexport interface ColumnActionUpdateProp {\n align?: ColumnDescriptor[\"align\"];\n column: KeyedColumnDescriptor;\n hidden?: ColumnDescriptor[\"hidden\"];\n label?: ColumnDescriptor[\"label\"];\n resizing?: KeyedColumnDescriptor[\"resizing\"];\n type: \"updateColumnProp\";\n width?: ColumnDescriptor[\"width\"];\n}\n\nexport interface ColumnActionTableConfig extends DataSourceConfig {\n confirmed?: boolean;\n type: \"tableConfig\";\n}\n\n/**\n * PersistentColumnActions are those actions that require us to persist user changes across sessions\n */\nexport type PersistentColumnAction = ColumnActionPin | ColumnActionHide;\n\nexport type GridModelAction =\n | ColumnActionHide\n | ColumnActionInit\n | ColumnActionMove\n | ColumnActionPin\n | ColumnActionResize\n | ColumnActionSetTypes\n | ColumnActionShow\n | ColumnActionUpdate\n | ColumnActionUpdateProp\n | ColumnActionTableConfig;\n\nexport type GridModelReducer = Reducer<GridModel, GridModelAction>;\n\nexport type ColumnActionDispatch = (action: GridModelAction) => void;\n\nconst columnReducer: GridModelReducer = (state, action) => {\n info?.(`GridModelReducer ${action.type}`);\n switch (action.type) {\n case \"init\":\n return init(action);\n case \"moveColumn\":\n return moveColumn(state, action);\n case \"resizeColumn\":\n return resizeColumn(state, action);\n case \"setTypes\":\n return setTypes(state, action);\n case \"hideColumns\":\n return hideColumns(state, action);\n case \"showColumns\":\n return showColumns(state, action);\n case \"pinColumn\":\n return pinColumn(state, action);\n case \"updateColumnProp\":\n return updateColumnProp(state, action);\n case \"tableConfig\":\n return updateTableConfig(state, action);\n default:\n console.log(`unhandled action ${action.type}`);\n return state;\n }\n};\n\nexport const useTableModel = (\n tableConfig: Omit<GridConfig, \"headings\">,\n dataSourceConfig?: DataSourceConfig\n) => {\n const [state, dispatchColumnAction] = useReducer<\n GridModelReducer,\n InitialConfig\n >(columnReducer, { tableConfig, dataSourceConfig }, init);\n\n return {\n columns: state.columns,\n dispatchColumnAction,\n headings: state.headings,\n };\n};\n\ntype InitialConfig = {\n dataSourceConfig?: DataSourceConfig;\n tableConfig: Omit<GridConfig, \"headings\">;\n};\n\nfunction init({ dataSourceConfig, tableConfig }: InitialConfig): GridModel {\n const columns = tableConfig.columns.map(\n toKeyedColumWithDefaults(tableConfig)\n );\n const maybePinnedColumns = columns.some(isPinned)\n ? sortPinnedColumns(columns)\n : columns;\n const state = {\n columns: maybePinnedColumns,\n headings: getTableHeadings(maybePinnedColumns),\n };\n if (dataSourceConfig) {\n const { columns, ...rest } = dataSourceConfig;\n return updateTableConfig(state, {\n type: \"tableConfig\",\n ...rest,\n });\n } else {\n return state;\n }\n}\n\nconst getLabel = (\n label: string,\n columnFormatHeader?: \"uppercase\" | \"capitalize\"\n): string => {\n if (columnFormatHeader === \"uppercase\") {\n return label.toUpperCase();\n } else if (columnFormatHeader === \"capitalize\") {\n return label[0].toUpperCase() + label.slice(1).toLowerCase();\n }\n return label;\n};\n\nconst toKeyedColumWithDefaults =\n (options: Omit<GridConfig, \"headings\">) =>\n (\n column: ColumnDescriptor & { key?: number },\n index: number\n ): KeyedColumnDescriptor => {\n const { columnDefaultWidth = DEFAULT_COLUMN_WIDTH, columnFormatHeader } =\n options;\n const {\n align = getDefaultAlignment(column.serverDataType),\n key,\n name,\n label = name,\n width = columnDefaultWidth,\n ...rest\n } = column;\n\n const keyedColumnWithDefaults = {\n ...rest,\n align,\n CellRenderer: getCellRendererForColumn(column),\n label: getLabel(label, columnFormatHeader),\n key: key ?? index + KEY_OFFSET,\n name,\n originalIdx: index,\n valueFormatter: getValueFormatter(column),\n width: width,\n };\n\n if (isGroupColumn(keyedColumnWithDefaults)) {\n keyedColumnWithDefaults.columns = keyedColumnWithDefaults.columns.map(\n (col) => toKeyedColumWithDefaults(options)(col, col.key)\n );\n }\n\n return keyedColumnWithDefaults;\n };\n\nfunction moveColumn(\n state: GridModel,\n { column, moveBy, moveTo }: ColumnActionMove\n) {\n const { columns } = state;\n if (typeof moveBy === \"number\") {\n const idx = columns.indexOf(column);\n const newColumns = columns.slice();\n const [movedColumns] = newColumns.splice(idx, 1);\n newColumns.splice(idx + moveBy, 0, movedColumns);\n return {\n ...state,\n columns: newColumns,\n };\n } else if (typeof moveTo === \"number\") {\n const index = columns.indexOf(column);\n return {\n ...state,\n columns: moveItem(columns, index, moveTo),\n };\n }\n return state;\n}\n\nfunction hideColumns(state: GridModel, { columns }: ColumnActionHide) {\n if (columns.some((col) => col.hidden !== true)) {\n return columns.reduce<GridModel>((s, c) => {\n if (c.hidden !== true) {\n return updateColumnProp(s, {\n type: \"updateColumnProp\",\n column: c,\n hidden: true,\n });\n } else {\n return s;\n }\n }, state);\n } else {\n return state;\n }\n}\nfunction showColumns(state: GridModel, { columns }: ColumnActionShow) {\n if (columns.some((col) => col.hidden)) {\n return columns.reduce<GridModel>((s, c) => {\n if (c.hidden) {\n return updateColumnProp(s, {\n type: \"updateColumnProp\",\n column: c,\n hidden: false,\n });\n } else {\n return s;\n }\n }, state);\n } else {\n return state;\n }\n}\n\nfunction resizeColumn(\n state: GridModel,\n { column, phase, width }: ColumnActionResize\n) {\n const type = \"updateColumnProp\";\n const resizing = phase !== \"end\";\n\n switch (phase) {\n case \"begin\":\n case \"end\":\n return updateColumnProp(state, { type, column, resizing });\n case \"resize\":\n return updateColumnProp(state, { type, column, width });\n default:\n throw Error(`useTableModel.resizeColumn, invalid resizePhase ${phase}`);\n }\n}\n\nfunction setTypes(\n state: GridModel,\n { columnNames, serverDataTypes }: ColumnActionSetTypes\n) {\n const { columns } = state;\n if (columns.some(columnWithoutDataType)) {\n const cols = columns.map((column) => {\n const serverDataType = getDataType(column, columnNames, serverDataTypes);\n return {\n ...column,\n align: column.align ?? getDefaultAlignment(serverDataType),\n serverDataType,\n };\n });\n\n return {\n ...state,\n columns: cols,\n };\n } else {\n return state;\n }\n}\n\nfunction pinColumn(state: GridModel, action: ColumnActionPin) {\n let { columns } = state;\n const { column, pin } = action;\n const targetColumn = columns.find((col) => col.name === column.name);\n if (targetColumn) {\n columns = replaceColumn(columns, { ...targetColumn, pin });\n columns = sortPinnedColumns(columns);\n return {\n ...state,\n columns,\n };\n } else {\n return state;\n }\n}\nfunction updateColumnProp(state: GridModel, action: ColumnActionUpdateProp) {\n let { columns } = state;\n const { align, column, hidden, label, resizing, width } = action;\n const targetColumn = columns.find((col) => col.name === column.name);\n if (targetColumn) {\n if (align === \"left\" || align === \"right\") {\n columns = replaceColumn(columns, { ...targetColumn, align });\n }\n if (typeof label === \"string\") {\n columns = replaceColumn(columns, { ...targetColumn, label });\n }\n if (typeof resizing === \"boolean\") {\n columns = replaceColumn(columns, { ...targetColumn, resizing });\n }\n if (typeof hidden === \"boolean\") {\n columns = replaceColumn(columns, { ...targetColumn, hidden });\n }\n if (typeof width === \"number\") {\n columns = replaceColumn(columns, { ...targetColumn, width });\n }\n }\n return {\n ...state,\n columns,\n };\n}\n\nfunction updateTableConfig(\n state: GridModel,\n { columns, confirmed, filter, groupBy, sort }: ColumnActionTableConfig\n) {\n const hasColumns = columns && columns.length > 0;\n const hasGroupBy = groupBy !== undefined;\n const hasFilter = typeof filter?.filter === \"string\";\n const hasSort = sort && sort.sortDefs.length > 0;\n\n //TODO check if just confirmed has changed\n\n let result = state;\n\n if (hasColumns) {\n result = {\n ...state,\n columns: columns.map((colName, index) => {\n const columnName = getColumnName(colName);\n const key = index + KEY_OFFSET;\n const col = findColumn(result.columns, columnName);\n if (col) {\n if (col.key === key) {\n return col;\n } else {\n return {\n ...col,\n key,\n };\n }\n }\n throw Error(`useTableModel column ${colName} not found`);\n }),\n };\n }\n\n if (hasGroupBy) {\n result = {\n ...state,\n columns: applyGroupByToColumns(result.columns, groupBy, confirmed),\n };\n }\n\n if (hasSort) {\n result = {\n ...state,\n columns: applySortToColumns(result.columns, sort),\n };\n }\n\n if (hasFilter) {\n result = {\n ...state,\n columns: applyFilterToColumns(result.columns, filter),\n };\n } else if (result.columns.some(isFilteredColumn)) {\n result = {\n ...state,\n columns: stripFilterFromColumns(result.columns),\n };\n }\n\n return result;\n}\n\nfunction replaceColumn(\n state: KeyedColumnDescriptor[],\n column: KeyedColumnDescriptor\n) {\n return state.map((col) => (col.name === column.name ? column : col));\n}\n", "import { useCallback, useRef } from \"react\";\nimport { Viewport } from \"./dataTableTypes\";\n\nexport interface ScrollRequestEnd {\n type: \"scroll-end\";\n direction: \"home\" | \"end\";\n}\n\nexport interface ScrollRequestPage {\n type: \"scroll-page\";\n direction: \"up\" | \"down\";\n}\n\nexport interface ScrollRequestDistance {\n type: \"scroll-distance\";\n distance: number;\n}\n\nexport type ScrollRequest =\n | ScrollRequestPage\n | ScrollRequestDistance\n | ScrollRequestEnd;\n\nexport type ScrollRequestHandler = (request: ScrollRequest) => void;\n\nconst getPctScroll = (container: HTMLElement) => {\n const { scrollLeft, scrollTop } = container;\n const { clientHeight, clientWidth, scrollHeight, scrollWidth } = container;\n const pctScrollLeft = scrollLeft / (scrollWidth - clientWidth);\n const pctScrollTop = scrollTop / (scrollHeight - clientHeight);\n return [pctScrollLeft, pctScrollTop, scrollLeft, scrollTop];\n};\n\nconst getMaxScroll = (container: HTMLElement) => {\n const { clientHeight, clientWidth, scrollHeight, scrollWidth } = container;\n return [scrollWidth - clientWidth, scrollHeight - clientHeight];\n};\n\nexport interface TableScrollHookProps {\n onHorizontalScroll?: (scrollLeft: number) => void;\n onVerticalScroll?: (scrollTop: number) => void;\n viewportHeight: number;\n viewport: Viewport;\n}\n\nexport const useTableScroll = ({\n onHorizontalScroll,\n onVerticalScroll,\n viewport,\n}: TableScrollHookProps) => {\n const scrollPosRef = useRef({ scrollTop: 0, scrollLeft: 0 });\n const scrollbarContainerRef = useRef<HTMLDivElement>(null);\n const contentContainerRef = useRef<HTMLDivElement>(null);\n const tableContainerRef = useRef<HTMLDivElement>(null);\n\n const contentContainerScrolledRef = useRef(false);\n const {\n maxScrollContainerScrollHorizontal: maxScrollLeft,\n maxScrollContainerScrollVertical: maxScrollTop,\n } = viewport;\n\n const scrollTable = useCallback(\n (scrollLeft, scrollTop) => {\n const { current: tableContainer } = tableContainerRef;\n if (tableContainer) {\n tableContainer.scrollTo({\n top: scrollTop,\n left: scrollLeft,\n behavior: \"auto\",\n });\n }\n },\n [tableContainerRef]\n );\n\n const handleTableContainerScroll = useCallback(() => {\n const { current: tableContainer } = tableContainerRef;\n if (tableContainer) {\n const { current: scrollPos } = scrollPosRef;\n const { scrollLeft, scrollTop } = tableContainer;\n if (scrollPos.scrollTop !== scrollTop) {\n scrollPos.scrollTop = scrollTop;\n onVerticalScroll?.(scrollTop);\n }\n if (scrollPos.scrollLeft !== scrollLeft) {\n scrollPos.scrollLeft = scrollLeft;\n onHorizontalScroll?.(scrollLeft);\n }\n }\n }, [onHorizontalScroll, onVerticalScroll]);\n\n const handleContentContainerScroll = useCallback(() => {\n const { current: rootContainer } = contentContainerRef;\n const { current: scrollContainer } = scrollbarContainerRef;\n if (rootContainer && scrollContainer) {\n const [pctScrollLeft, pctScrollTop, scrollLeft, scrollTop] =\n getPctScroll(rootContainer);\n contentContainerScrolledRef.current = true;\n scrollContainer.scrollLeft = Math.round(pctScrollLeft * maxScrollLeft);\n scrollContainer.scrollTop = Math.round(pctScrollTop * maxScrollTop);\n scrollTable(scrollLeft, scrollTop);\n }\n }, [\n maxScrollLeft,\n maxScrollTop,\n contentContainerRef,\n scrollbarContainerRef,\n scrollTable,\n ]);\n\n const handleScrollbarContainerScroll = useCallback(() => {\n const { current: contentContainer } = contentContainerRef;\n const { current: scrollbarContainer } = scrollbarContainerRef;\n const { current: contentContainerScrolled } = contentContainerScrolledRef;\n if (contentContainerScrolled) {\n contentContainerScrolledRef.current = false;\n } else if (contentContainer && scrollbarContainer) {\n const [pctScrollLeft, pctScrollTop] = getPctScroll(scrollbarContainer);\n const [maxScrollLeft, maxScrollTop] = getMaxScroll(contentContainer);\n const rootScrollLeft = Math.round(pctScrollLeft * maxScrollLeft);\n const rootScrollTop = Math.round(pctScrollTop * maxScrollTop);\n contentContainer.scrollTo({\n left: rootScrollLeft,\n top: rootScrollTop,\n behavior: \"auto\",\n });\n scrollTable(rootScrollLeft, rootScrollTop);\n }\n }, [contentContainerRef, scrollbarContainerRef, scrollTable]);\n\n const requestScroll: ScrollRequestHandler = useCallback(\n (scrollRequest) => {\n const { current: scrollbarContainer } = scrollbarContainerRef;\n if (scrollbarContainer) {\n contentContainerScrolledRef.current = false;\n if (scrollRequest.type === \"scroll-page\") {\n const { clientHeight, scrollLeft, scrollTop } = scrollbarContainer;\n const { direction } = scrollRequest;\n const scrollBy = direction === \"down\" ? clientHeight : -clientHeight;\n const newScrollTop = Math.min(\n Math.max(0, scrollTop + scrollBy),\n viewport.maxScrollContainerScrollVertical\n );\n scrollbarContainer.scrollTo({\n top: newScrollTop,\n left: scrollLeft,\n behavior: \"auto\",\n });\n } else if (scrollRequest.type === \"scroll-end\") {\n const { direction } = scrollRequest;\n const scrollTo =\n direction === \"end\" ? viewport.maxScrollContainerScrollVertical : 0;\n scrollbarContainer.scrollTo({\n top: scrollTo,\n left: scrollbarContainer.scrollLeft,\n behavior: \"auto\",\n });\n }\n }\n },\n [viewport.maxScrollContainerScrollVertical]\n );\n\n return {\n /** Ref to be assigned to ScrollbarContainer */\n scrollbarContainerRef,\n /** Scroll handler to be attached to ScrollbarContainer */\n onScrollbarContainerScroll: handleScrollbarContainerScroll,\n /** Ref to be assigned to ContentContainer */\n contentContainerRef,\n /** Scroll handler to be attached to ContentContainer */\n onContentContainerScroll: handleContentContainerScroll,\n /** Ref to be assigned to TableContainer */\n tableContainerRef,\n /** Scroll handler to be attached to TableContainer */\n onTableContainerScroll: handleTableContainerScroll,\n /** Scroll the table */\n requestScroll,\n };\n};\n", "/**\n * This hook measures and calculates the values needed to manage layout\n * and virtualisation of the table. This includes measurements required\n * to support pinned columns.\n */\nimport {\n KeyedColumnDescriptor,\n TableHeadings,\n} from \"@vuu-ui/vuu-datagrid-types\";\nimport { useMemo } from \"react\";\nimport { MeasuredSize } from \"./useMeasuredContainer\";\n\nexport interface TableViewportHookProps {\n columns: KeyedColumnDescriptor[];\n headerHeight: number;\n headings: TableHeadings;\n rowCount: number;\n rowHeight: number;\n size?: MeasuredSize;\n}\n\nexport interface ViewportMeasurements {\n fillerHeight: number;\n maxScrollContainerScrollHorizontal: number;\n maxScrollContainerScrollVertical: number;\n pinnedWidthLeft: number;\n pinnedWidthRight: number;\n rowCount: number;\n scrollContentHeight: number;\n scrollbarSize: number;\n scrollContentWidth: number;\n totalHeaderHeight: number;\n}\n\nconst UNMEASURED_VIEWPORT = {\n fillerHeight: 0,\n maxScrollContainerScrollHorizontal: 0,\n maxScrollContainerScrollVertical: 0,\n pinnedWidthLeft: 0,\n pinnedWidthRight: 0,\n rowCount: 0,\n scrollContentHeight: 0,\n scrollbarSize: 0,\n scrollContentWidth: 0,\n totalHeaderHeight: 0,\n};\n\nconst measurePinnedColumns = (columns: KeyedColumnDescriptor[]) => {\n let pinnedWidthLeft = 0;\n let pinnedWidthRight = 0;\n let unpinnedWidth = 0;\n for (const column of columns) {\n const { hidden, pin, width } = column;\n const visibleWidth = hidden ? 0 : width;\n if (pin === \"left\") {\n pinnedWidthLeft += visibleWidth;\n } else if (pin === \"right\") {\n pinnedWidthRight += visibleWidth;\n } else {\n unpinnedWidth += visibleWidth;\n }\n }\n return { pinnedWidthLeft, pinnedWidthRight, unpinnedWidth };\n};\n\nexport const useTableViewport = ({\n columns,\n headerHeight,\n headings,\n rowCount,\n rowHeight,\n size,\n}: TableViewportHookProps): ViewportMeasurements => {\n const { pinnedWidthLeft, pinnedWidthRight, unpinnedWidth } = useMemo(\n () => measurePinnedColumns(columns),\n [columns]\n );\n\n const viewportMeasurements = useMemo(() => {\n if (size) {\n const headingsDepth = headings.length;\n const scrollbarSize = 15;\n const contentHeight = rowCount * rowHeight;\n const scrollContentWidth =\n pinnedWidthLeft + unpinnedWidth + pinnedWidthRight;\n const maxScrollContainerScrollVertical =\n contentHeight +\n headerHeight -\n ((size?.height ?? 0) - headerHeight - scrollbarSize);\n const maxScrollContainerScrollHorizontal =\n scrollContentWidth - size.width + pinnedWidthLeft;\n\n const visibleRows = (size.height - headerHeight) / rowHeight;\n const count = Number.isInteger(visibleRows)\n ? visibleRows + 1\n : Math.ceil(visibleRows);\n return {\n fillerHeight: (rowCount - count) * rowHeight,\n maxScrollContainerScrollHorizontal,\n maxScrollContainerScrollVertical,\n pinnedWidthLeft,\n pinnedWidthRight,\n rowCount: count,\n scrollContentHeight: headerHeight + contentHeight + scrollbarSize,\n scrollbarSize,\n scrollContentWidth,\n totalHeaderHeight: headerHeight * (1 + headingsDepth),\n };\n } else {\n return UNMEASURED_VIEWPORT;\n }\n }, [\n headerHeight,\n headings.length,\n pinnedWidthLeft,\n pinnedWidthRight,\n rowCount,\n rowHeight,\n size,\n unpinnedWidth,\n ]);\n\n return viewportMeasurements;\n};\n", "import { KeyedColumnDescriptor } from \"@vuu-ui/vuu-datagrid-types\";\nimport { getColumnsInViewport, itemsChanged } from \"@vuu-ui/vuu-utils\";\nimport { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { ViewportMeasurements } from \"./useTableViewport\";\n\nexport interface VirtualViewportHookProps {\n columns: KeyedColumnDescriptor[];\n rowHeight: number;\n setRange: (range: VuuRange) => void;\n viewportMeasurements: ViewportMeasurements;\n}\nexport interface VirtualViewportHookResult {\n onHorizontalScroll: (scrollLeft: number) => void;\n onVerticalScroll: (scrollTop: number) => void;\n columnsWithinViewport: KeyedColumnDescriptor[];\n virtualColSpan: number;\n}\n\nexport const useVirtualViewport = ({\n columns,\n rowHeight,\n setRange,\n viewportMeasurements,\n}: VirtualViewportHookProps): VirtualViewportHookResult => {\n const firstRowRef = useRef<number>(-1);\n const {\n rowCount: viewportRowCount,\n scrollContentWidth: contentWidth,\n maxScrollContainerScrollHorizontal,\n } = viewportMeasurements;\n const availableWidth = contentWidth - maxScrollContainerScrollHorizontal;\n const scrollLeftRef = useRef(0);\n\n const [visibleColumns, preSpan] = useMemo(\n () =>\n getColumnsInViewport(\n columns,\n scrollLeftRef.current,\n scrollLeftRef.current + availableWidth\n ),\n [availableWidth, columns]\n );\n\n const preSpanRef = useRef(preSpan);\n\n useEffect(() => {\n setColumnsWithinViewport(visibleColumns);\n }, [visibleColumns]);\n\n const [columnsWithinViewport, setColumnsWithinViewport] =\n useState<KeyedColumnDescriptor[]>(visibleColumns);\n\n const handleHorizontalScroll = useCallback(\n (scrollLeft: number) => {\n scrollLeftRef.current = scrollLeft;\n const [visibleColumns, pre] = getColumnsInViewport(\n columns,\n scrollLeft,\n scrollLeft + availableWidth\n );\n if (itemsChanged(columnsWithinViewport, visibleColumns)) {\n preSpanRef.current = pre;\n\n setColumnsWithinViewport(visibleColumns);\n }\n },\n [availableWidth, columns, columnsWithinViewport]\n );\n\n const handleVerticalScroll = useCallback(\n (scrollTop: number) => {\n const firstRow = Math.floor(scrollTop / rowHeight);\n if (firstRow !== firstRowRef.current) {\n firstRowRef.current = firstRow;\n setRange({ from: firstRow, to: firstRow + viewportRowCount });\n }\n },\n [rowHeight, setRange, viewportRowCount]\n );\n\n return {\n columnsWithinViewport,\n onHorizontalScroll: handleHorizontalScroll,\n onVerticalScroll: handleVerticalScroll,\n /** number of leading columns not rendered because of virtualization */\n virtualColSpan: preSpanRef.current,\n };\n};\n", "import { TableCellProps } from \"@vuu-ui/vuu-datagrid-types\";\nimport cx from \"classnames\";\nimport {\n isJsonAttribute,\n metadataKeys,\n registerComponent,\n} from \"@vuu-ui/vuu-utils\";\n\nimport \"./JsonCell.css\";\n\nconst classBase = \"vuuJsonCell\";\n\nconst { IS_EXPANDED, KEY } = metadataKeys;\n\nconst localKey = (key: string) => {\n const pos = key.lastIndexOf(\"|\");\n if (pos === -1) {\n return \"\";\n } else {\n return key.slice(pos + 1);\n }\n};\n\nconst JsonCell = ({ column, row }: TableCellProps) => {\n const { key: columnKey /*, type, valueFormatter */ } = column;\n let value = row[columnKey];\n let isToggle = false;\n if (isJsonAttribute(value)) {\n value = value.slice(0, -1);\n isToggle = true;\n }\n const rowKey = localKey(row[KEY]);\n const className = cx({\n [`${classBase}-name`]: rowKey === value,\n [`${classBase}-value`]: rowKey !== value,\n [`${classBase}-group`]: isToggle,\n });\n\n if (isToggle) {\n const toggleIcon = row[IS_EXPANDED] ? \"minus-box\" : \"plus-box\";\n return (\n <span className={className}>\n <span className={`${classBase}-value`}>{value}</span>\n <span className={`${classBase}-toggle`} data-icon={toggleIcon} />\n </span>\n );\n } else if (value) {\n return <span className={className}>{value}</span>;\n } else {\n return null;\n }\n};\n\nregisterComponent(\"json\", JsonCell, \"cell-renderer\", {});\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["src_exports", "__export", "Table", "useMeasuredContainer", "__toCommonJS", "import_vuu_popups", "import_core", "import_vuu_utils", "import_react", "import_classnames", "import_vuu_utils", "import_classnames", "import_react", "import_vuu_utils", "import_salt_lab", "import_classnames", "import_react", "import_jsx_runtime", "KEY", "TableCell", "classNameProp", "column", "onClick", "row", "labelFieldRef", "align", "CellRenderer", "key", "pin", "editable", "resizing", "valueFormatter", "editing", "setEditing", "value", "editableValue", "setEditableValue", "handleTitleMouseDown", "_a", "handleTitleKeyDown", "evt", "handleClick", "handleEnterEditMode", "handleExitEditMode", "originalValue", "finalValue", "allowDeactivation", "editCancelled", "className", "cx", "pinnedStyle", "cellValuesAreEqual", "prev", "next", "import_vuu_utils", "import_react", "import_jsx_runtime", "DEPTH", "IS_LEAF", "getGroupValueAndOffset", "columns", "row", "depth", "isLeaf", "column", "TableGroupCell", "onClick", "value", "offset", "handleClick", "style", "spacers", "n", "i", "import_jsx_runtime", "IDX", "IS_EXPANDED", "SELECTED", "classBase", "TableRow", "columns", "height", "index", "onClick", "onToggleGroup", "virtualColSpan", "row", "rowIndex", "isExpanded", "isSelected", "className", "cx", "offset", "handleRowClick", "evt", "rangeSelect", "keepExistingSelection", "handleGroupCellClick", "column", "isGroup", "isJsonCell", "TableGroupCell", "TableCell", "import_classnames", "import_react", "import_react", "import_jsx_runtime", "NOOP", "baseClass", "ColumnResizer", "onDrag", "onDragEnd", "onDragStart", "position", "onMouseMove", "e", "x", "moveBy", "onMouseUp", "handleMouseDown", "import_classnames", "import_jsx_runtime", "classBase", "SortIndicator", "sorted", "direction", "cx", "import_react", "useTableColumnResize", "column", "onResize", "rootRef", "widthRef", "isResizing", "name", "handleResizeStart", "width", "handleResize", "_evt", "moveBy", "newWidth", "handleResizeEnd", "import_vuu_popups", "import_vuu_popups", "import_classnames", "import_react", "import_jsx_runtime", "FilterIndicator", "column", "filter", "showContextMenu", "handleClick", "evt", "cx", "import_jsx_runtime", "classBase", "TableHeaderCell", "column", "classNameProp", "onClick", "onDragStart", "onResize", "props", "rootRef", "isResizing", "resizeProps", "useTableColumnResize", "showContextMenu", "dragTimerRef", "handleContextMenu", "e", "handleClick", "evt", "handleMouseDown", "handleMouseUp", "className", "cx", "FilterIndicator", "SortIndicator", "ColumnResizer", "import_jsx_runtime", "classBase", "RENDER_IDX", "ColumnBasedTable", "columns", "data", "headerHeight", "onHeaderCellDragEnd", "rowHeight", "handleDragEnd", "column", "cx", "TableHeaderCell", "row", "j", "TableRow", "import_vuu_utils", "buildContextMenuDescriptors", "dataSource", "location", "options", "descriptors", "buildSortMenuItems", "buildGroupMenuItems", "buildAggregationMenuItems", "buildColumnDisplayMenuItems", "column", "filter", "colIsOnlyFilter", "sortDefs", "menuItems", "hasSort", "name", "label", "pinColumn", "pinLocation", "pinLeft", "pinFloating", "pinRight", "pin", "groupBy", "import_vuu_filters", "import_vuu_utils", "removeFilterColumn", "dataSourceFilter", "column", "filterStruct", "filter", "Average", "Count", "High", "Low", "Sum", "useContextMenu", "dataSource", "onPersistentColumnOperation", "type", "options", "gridOptions", "name", "import_vuu_utils", "import_react", "import_classnames", "import_react", "import_jsx_runtime", "classBase", "ColHeader", "props", "column", "className", "onRemoveColumn", "cx", "TableGroupHeaderCell", "groupColumn", "classNameProp", "onResize", "rootRef", "isResizing", "resizeProps", "useTableColumnResize", "columns", "ColumnResizer", "import_jsx_runtime", "classBase", "RENDER_IDX", "RowBasedTable", "columns", "columnsWithinViewport", "data", "headings", "onColumnResize", "onHeaderCellDragStart", "onContextMenu", "onRemoveColumnFromGroupBy", "onRowClick", "onSort", "onToggleGroup", "virtualColSpan", "rowCount", "rowHeight", "handleDragStart", "evt", "visibleColumns", "handleHeaderClick", "_a", "headerCell", "colIdx", "column", "isAdditive", "i", "colHeaders", "label", "span", "j", "style", "TableGroupHeaderCell", "TableHeaderCell", "row", "TableRow", "import_vuu_popups", "import_vuu_utils", "import_react", "import_vuu_data", "import_vuu_utils", "import_react", "SELECTED", "useDataSource", "dataSource", "onConfigChange", "onFeatureEnabled", "onFeatureInvocation", "onSizeChange", "onSubscribed", "range", "renderBufferSize", "viewportRowCount", "forceUpdate", "isMounted", "hasUpdated", "rangeRef", "rafHandle", "data", "dataWindow", "MovingWindow", "setData", "updates", "row", "datasourceMessageHandler", "message", "refreshIfUpdated", "adjustRange", "rowCount", "from", "rowRange", "fullRange", "setRange", "getSelectedRows", "to", "_a", "index", "internalIndex", "isSelected", "preSelected", "overlapFrom", "overlapTo", "newData", "i", "import_salt_lab", "import_react", "useDraggableColumn", "onDrop", "tableContainerRef", "tableLayoutProp", "tableLayout", "setTableLayout", "mousePosRef", "handleDropSettle", "draggable", "draggedItemIndex", "onMouseDown", "handleHeaderCellDragStart", "evt", "clientX", "clientY", "thElement", "idx", "_a", "target", "import_vuu_utils", "import_react", "union", "set1", "sets", "result", "set", "element", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "Home", "End", "PageUp", "PageDown", "actionKeys", "focusKeys", "arrowLeftRightKeys", "navigationKeys", "Home", "End", "PageUp", "PageDown", "ArrowDown", "ArrowLeft", "ArrowRight", "ArrowUp", "functionKeys", "specialKeys", "union", "PageKeys", "isPagingKey", "key", "isNavigationKey", "navigationKeys", "headerCellQuery", "colIdx", "dataCellQuery", "rowIdx", "NULL_CELL_POS", "nextCellPos", "key", "columnCount", "rowCount", "ArrowUp", "ArrowDown", "ArrowRight", "ArrowLeft", "useKeyboardNavigation", "containerRef", "disableHighlightOnFocus", "data", "requestScroll", "viewportRange", "_a", "viewportFirstRow", "viewportLastRow", "focusedCellPos", "focusableCell", "activeCellPos", "getTableCell", "cssQuery", "getFocusedCell", "element", "getTableCellPos", "tableCell", "_b", "focusedRow", "focusCell", "cellPos", "activeCell", "setActiveCell", "fromKeyboard", "pos", "virtualizeActiveCell", "nextPageItemIdx", "PageDown", "PageUp", "Home", "End", "handleFocus", "focusedCell", "navigateChildItems", "nextRowIdx", "nextColIdx", "isPagingKey", "handleKeyDown", "e", "isNavigationKey", "handleClick", "evt", "target", "containerProps", "withinViewport", "fullyRendered", "headerCell", "import_react", "import_react", "observedMap", "getTargetSize", "element", "size", "dimension", "resizeObserver", "entries", "entry", "target", "borderBoxSize", "contentBoxSize", "observedTarget", "height", "width", "contentHeight", "contentWidth", "onResize", "measurements", "sizeChanged", "newSize", "useResizeObserver", "ref", "dimensions", "reportInitialSize", "dimensionsRef", "measure", "map", "dim", "registerObserver", "record", "ClientWidthHeight", "isNumber", "val", "useMeasuredContainer", "defaultHeight", "defaultWidth", "height", "width", "containerRef", "size", "setSize", "onResize", "clientWidth", "clientHeight", "currentSize", "inner", "outer", "useResizeObserver", "import_vuu_utils", "import_react", "IDX", "SELECTED", "NO_SELECTION", "useSelection", "selectionModel", "onSelectionChange", "lastActiveRef", "selectedRef", "row", "rangeSelect", "keepExistingSelection", "idx", "isSelected", "active", "selected", "newSelected", "import_salt_lab", "import_vuu_utils", "import_react", "info", "DEFAULT_COLUMN_WIDTH", "KEY_OFFSET", "columnWithoutDataType", "serverDataType", "getCellRendererForColumn", "column", "_a", "_b", "getDataType", "columnNames", "dataTypes", "index", "numericTypes", "getDefaultAlignment", "columnReducer", "state", "action", "init", "moveColumn", "resizeColumn", "setTypes", "hideColumns", "showColumns", "pinColumn", "updateColumnProp", "updateTableConfig", "useTableModel", "tableConfig", "dataSourceConfig", "dispatchColumnAction", "columns", "toKeyedColumWithDefaults", "maybePinnedColumns", "rest", "getLabel", "label", "columnFormatHeader", "options", "columnDefaultWidth", "align", "key", "name", "width", "keyedColumnWithDefaults", "col", "moveBy", "moveTo", "idx", "newColumns", "movedColumns", "s", "c", "phase", "type", "resizing", "serverDataTypes", "cols", "pin", "targetColumn", "replaceColumn", "hidden", "confirmed", "filter", "groupBy", "sort", "hasColumns", "hasGroupBy", "hasFilter", "hasSort", "result", "colName", "columnName", "import_react", "getPctScroll", "container", "scrollLeft", "scrollTop", "clientHeight", "clientWidth", "scrollHeight", "scrollWidth", "pctScrollLeft", "pctScrollTop", "getMaxScroll", "useTableScroll", "onHorizontalScroll", "onVerticalScroll", "viewport", "scrollPosRef", "scrollbarContainerRef", "contentContainerRef", "tableContainerRef", "contentContainerScrolledRef", "maxScrollLeft", "maxScrollTop", "scrollTable", "tableContainer", "handleTableContainerScroll", "scrollPos", "handleContentContainerScroll", "rootContainer", "scrollContainer", "handleScrollbarContainerScroll", "contentContainer", "scrollbarContainer", "contentContainerScrolled", "rootScrollLeft", "rootScrollTop", "requestScroll", "scrollRequest", "direction", "scrollBy", "newScrollTop", "scrollTo", "import_react", "UNMEASURED_VIEWPORT", "measurePinnedColumns", "columns", "pinnedWidthLeft", "pinnedWidthRight", "unpinnedWidth", "column", "hidden", "pin", "width", "visibleWidth", "useTableViewport", "headerHeight", "headings", "rowCount", "rowHeight", "size", "_a", "headingsDepth", "scrollbarSize", "contentHeight", "scrollContentWidth", "maxScrollContainerScrollVertical", "maxScrollContainerScrollHorizontal", "visibleRows", "count", "import_vuu_utils", "import_react", "useVirtualViewport", "columns", "rowHeight", "setRange", "viewportMeasurements", "firstRowRef", "viewportRowCount", "contentWidth", "maxScrollContainerScrollHorizontal", "availableWidth", "scrollLeftRef", "visibleColumns", "preSpan", "preSpanRef", "setColumnsWithinViewport", "columnsWithinViewport", "handleHorizontalScroll", "scrollLeft", "pre", "handleVerticalScroll", "scrollTop", "firstRow", "NO_ROWS", "KEY", "IS_EXPANDED", "IS_LEAF", "useDataTable", "config", "dataSource", "headerHeight", "onConfigChange", "onFeatureEnabled", "onFeatureInvocation", "onSelectionChange", "renderBufferSize", "rowHeight", "selectionModel", "tableLayout", "measuredProps", "_a", "_b", "rowCount", "setRowCount", "expectConfigChangeRef", "dataSourceRef", "containerMeasurements", "useMeasuredContainer", "onDataRowcountChange", "size", "columns", "dispatchColumnAction", "headings", "useTableModel", "handlePersistentColumnOperation", "action", "handleContextMenuAction", "useContextMenu", "viewportMeasurements", "useTableViewport", "onSubscribed", "subscription", "columnNames", "serverDataTypes", "handleSelectionChange", "selected", "handleRowClick", "useSelection", "data", "getSelectedRows", "range", "setRange", "useDataSource", "dataRef", "handleSort", "column", "extendSort", "sortType", "handleColumnResize", "phase", "columnName", "width", "handleToggleGroup", "row", "isJson", "key", "idx", "childRows", "columnsToShow", "col", "onVerticalScroll", "onHorizontalScroll", "columnsWithinViewport", "virtualColSpan", "useVirtualViewport", "requestScroll", "scrollProps", "useTableScroll", "containerProps", "useKeyboardNavigation", "handleRemoveColumnFromGroupBy", "handleDropColumn", "fromIndex", "toIndex", "draggableHook", "useDraggableColumn", "confirmed", "showContextMenu", "usePopupContextMenu", "onContextMenu", "evt", "currentData", "currentDataSource", "target", "cellEl", "rowEl", "selectedRowsCount", "columnMap", "rowIndex", "cellIndex", "import_classnames", "import_vuu_utils", "import_jsx_runtime", "classBase", "Table", "showSettings", "classNameProp", "config", "dataSource", "headerHeight", "height", "idProp", "onConfigChange", "onFeatureEnabled", "onFeatureInvocation", "onSelectionChange", "onShowSettings", "renderBufferSize", "rowHeight", "selectionModel", "styleProp", "tableLayoutProp", "width", "zebraStripes", "props", "id", "containerRef", "innerSize", "outerSize", "containerProps", "dispatchColumnAction", "draggable", "draggedItemIndex", "handleContextMenuAction", "scrollProps", "tableLayout", "viewportMeasurements", "tableProps", "useDataTable", "style", "scrollbarContainerStyle", "ColumnBasedTable", "RowBasedTable", "className", "cx", "buildContextMenuDescriptors", "import_classnames", "import_vuu_utils", "import_jsx_runtime", "classBase", "IS_EXPANDED", "KEY", "localKey", "key", "pos", "JsonCell", "column", "row", "columnKey", "value", "isToggle", "rowKey", "className", "cx", "toggleIcon"]
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_vuu_popups", "import_vuu_utils", "import_react", "import_classnames", "import_vuu_utils", "import_classnames", "import_react", "cx", "import_vuu_utils", "import_react", "import_jsx_runtime", "import_jsx_runtime", "cx", "import_classnames", "import_react", "import_react", "import_jsx_runtime", "import_classnames", "import_jsx_runtime", "classBase", "cx", "import_react", "import_vuu_popups", "import_classnames", "import_react", "import_jsx_runtime", "cx", "import_jsx_runtime", "classBase", "cx", "import_jsx_runtime", "classBase", "cx", "import_vuu_utils", "import_vuu_utils", "useContextMenu", "import_vuu_utils", "import_react", "import_classnames", "import_react", "import_jsx_runtime", "classBase", "cx", "import_jsx_runtime", "classBase", "RENDER_IDX", "import_vuu_popups", "import_vuu_utils", "import_react", "import_vuu_utils", "import_react", "SELECTED", "range", "import_salt_lab", "import_react", "import_vuu_utils", "import_react", "_a", "import_react", "import_react", "import_vuu_utils", "import_react", "IDX", "SELECTED", "import_salt_lab", "import_vuu_utils", "import_react", "pinColumn", "columns", "import_react", "maxScrollLeft", "maxScrollTop", "import_react", "import_vuu_utils", "import_react", "visibleColumns", "KEY", "IS_EXPANDED", "IS_LEAF", "useContextMenu", "column", "row", "columns", "config", "usePopupContextMenu", "_a", "import_classnames", "import_vuu_utils", "import_jsx_runtime", "classBase", "Table", "cx", "import_classnames", "import_vuu_utils", "import_jsx_runtime", "classBase", "IS_EXPANDED", "KEY", "cx"]
|
|
7
7
|
}
|