@vuu-ui/vuu-table-extras 0.8.13 → 0.8.14-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 +6692 -1
- package/cjs/index.js.map +2 -2
- package/esm/index.js +6875 -1
- package/esm/index.js.map +2 -2
- package/index.css +1128 -1
- package/index.css.map +3 -3
- package/package.json +11 -11
- package/LICENSE +0 -201
package/cjs/index.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/vuu-table-extras/src/index.ts", "../../../packages/vuu-table-extras/src/cell-edit-validators/CaseValidator.ts", "../../../packages/vuu-table-extras/src/cell-edit-validators/PatternValidator.ts", "../../../packages/vuu-table-extras/src/cell-renderers/progress-cell/ProgressCell.tsx", "../../../packages/vuu-table-extras/src/cell-renderers-next/background-cell/BackgroundCell.tsx", "../../../packages/vuu-table-extras/src/cell-renderers-next/background-cell/useDirection.ts", "../../../packages/vuu-table-extras/src/cell-renderers-next/background-cell/BackgroundCellConfigurationEditor.tsx", "../../../packages/vuu-table-extras/src/column-list/ColumnList.tsx", "../../../packages/vuu-table-extras/src/column-settings/ColumnSettingsPanel.tsx", "../../../packages/vuu-table-extras/src/column-expression-panel/ColumnExpressionPanel.tsx", "../../../packages/vuu-table-extras/src/column-expression-input/ColumnExpressionInput.tsx", "../../../packages/vuu-table-extras/src/column-expression-input/useColumnExpressionEditor.ts", "../../../packages/vuu-table-extras/src/column-expression-input/column-language-parser/ColumnExpressionLanguage.ts", "../../../packages/vuu-table-extras/src/column-expression-input/column-language-parser/generated/column-parser.js", "../../../packages/vuu-table-extras/src/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.ts", "../../../packages/vuu-table-extras/src/column-expression-input/column-language-parser/column-expression-parse-utils.ts", "../../../packages/vuu-table-extras/src/column-expression-input/highlighting.ts", "../../../packages/vuu-table-extras/src/column-expression-input/theme.ts", "../../../packages/vuu-table-extras/src/column-expression-input/useColumnAutoComplete.ts", "../../../packages/vuu-table-extras/src/column-expression-input/useColumnExpressionSuggestionProvider.ts", "../../../packages/vuu-table-extras/src/column-expression-input/column-function-descriptors.ts", "../../../packages/vuu-table-extras/src/column-expression-input/functionDocInfo.ts", "../../../packages/vuu-table-extras/src/column-expression-panel/useColumnExpression.ts", "../../../packages/vuu-table-extras/src/column-formatting-settings/ColumnFormattingPanel.tsx", "../../../packages/vuu-table-extras/src/column-formatting-settings/NumericFormattingSettings.tsx", "../../../packages/vuu-table-extras/src/column-settings/ColumnNameLabel.tsx", "../../../packages/vuu-table-extras/src/column-settings/useColumnSettings.ts", "../../../packages/vuu-table-extras/src/datasource-stats/DatasourceStats.tsx", "../../../packages/vuu-table-extras/src/table-settings/TableSettingsPanel.tsx", "../../../packages/vuu-table-extras/src/table-settings/useTableSettings.ts", "../../../packages/vuu-table/src/header-cell/GroupHeaderCellNext.tsx", "../../../packages/vuu-table/src/column-resizing/ColumnResizer.tsx", "../../../packages/vuu-table/src/column-resizing/useTableColumnResize.tsx", "../../../packages/vuu-table/src/useCell.ts", "../../../packages/vuu-table/src/column-header-pill/ColumnHeaderPill.tsx", "../../../packages/vuu-table/src/column-header-pill/GroupColumnPill.tsx", "../../../packages/vuu-table/src/column-header-pill/SortIndicator.tsx", "../../../packages/vuu-table/src/header-cell/HeaderCell.tsx", "../../../packages/vuu-table/src/column-menu/ColumnMenu.tsx", "../../../packages/vuu-table/src/Table.tsx", "../../../packages/vuu-table/src/Row.tsx", "../../../packages/vuu-table/src/table-cell/TableCell.tsx", "../../../packages/vuu-table/src/table-cell/TableGroupCell.tsx", "../../../packages/vuu-table/src/useTable.ts", "../../../packages/vuu-table/src/context-menu/buildContextMenuDescriptors.ts", "../../../packages/vuu-table/src/context-menu/useHandleTableContextMenu.ts", "../../../packages/vuu-table/src/table-config.ts", "../../../packages/vuu-table/src/useCellEditing.ts", "../../../packages/vuu-table/src/table-dom-utils.ts", "../../../packages/vuu-table/src/useDataSource.ts", "../../../packages/vuu-table/src/moving-window.ts", "../../../packages/vuu-table/src/useInitialValue.ts", "../../../packages/vuu-table/src/useKeyboardNavigation.ts", "../../../packages/vuu-table/src/useSelection.ts", "../../../packages/vuu-table/src/useTableContextMenu.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/table-header/TableHeader.tsx", "../../../packages/vuu-table/src/table-header/useTableHeader.ts", "../../../packages/vuu-table/src/cell-renderers/checkbox-cell/CheckboxCell.tsx", "../../../packages/vuu-table/src/cell-renderers/cell-utils.ts", "../../../packages/vuu-table/src/cell-renderers/dropdown-cell/DropdownCell.tsx", "../../../packages/vuu-table/src/cell-renderers/input-cell/InputCell.tsx", "../../../packages/vuu-table/src/cell-renderers/lookup-cell/LookupCell.tsx", "../../../packages/vuu-table/src/cell-renderers/toggle-cell/ToggleCell.tsx", "../../../packages/vuu-table/src/useControlledTableNavigation.ts", "../../../packages/vuu-table-extras/src/useTableAndColumnSettings.ts"],
|
|
4
4
|
"sourcesContent": ["export * from \"./cell-edit-validators\";\nexport * from \"./cell-renderers\";\nexport * from \"./cell-renderers-next\";\nexport * from \"./column-list\";\nexport * from \"./column-settings\";\nexport * from \"./column-expression-input\";\nexport * from \"./column-expression-panel\";\nexport * from \"./column-formatting-settings\";\nexport * from \"./datasource-stats\";\nexport * from \"./table-settings\";\nexport * from \"./useTableAndColumnSettings\";\n", "import { EditRuleValidator, registerComponent } from \"@vuu-ui/vuu-utils\";\nimport { VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\n\nconst isString = (value?: VuuRowDataItemType): value is string =>\n typeof value === \"string\";\n\nexport const CaseValidator: EditRuleValidator = (rule, value) => {\n if (isString(value)) {\n if (value === \"\") {\n return true;\n } else if (rule.value === \"lower\" && value.toLowerCase() !== value) {\n return \"value must be all lowercase\";\n } else if (rule.value === \"upper\" && value.toUpperCase() !== value) {\n return \"value must be all uppercase\";\n } else {\n return true;\n }\n } else {\n return \"value must be a string\";\n }\n};\n\nregisterComponent(\"vuu-case\", CaseValidator, \"data-edit-validator\", {});\n", "import { EditRuleValidator, registerComponent } from \"@vuu-ui/vuu-utils\";\nimport { VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\n\nconst isString = (value?: VuuRowDataItemType): value is string =>\n typeof value === \"string\";\n\nconst defaultMessage = \"value does not match expected pattern\";\n\nexport const PatternValidator: EditRuleValidator = (rule, value) => {\n if (typeof rule.value !== \"string\") {\n throw Error(\"Pattern validation rule must provide pattern\");\n }\n if (isString(value)) {\n if (value === \"\") {\n return true;\n } else {\n const { message = defaultMessage } = rule;\n const pattern = new RegExp(rule.value);\n return pattern.test(value) || message;\n }\n } else {\n return \"value must be a string\";\n }\n};\n\nregisterComponent(\"vuu-pattern\", PatternValidator, \"data-edit-validator\", {});\n", "import { TableCellProps } from \"@vuu-ui/vuu-table-types\";\nimport {\n isColumnTypeRenderer,\n isTypeDescriptor,\n isValidNumber,\n registerComponent,\n} from \"@vuu-ui/vuu-utils\";\nimport cx from \"classnames\";\nimport { CSSProperties } from \"react\";\n\nimport \"./ProgressCell.css\";\n\nconst classBase = \"vuuProgressCell\";\n\nconst ProgressCell = ({ column, columnMap, row }: TableCellProps) => {\n //TODO what about click handling\n\n const { type } = column;\n const value = row[column.key];\n let showProgress = false;\n let percentage = 0;\n\n if (isTypeDescriptor(type) && isColumnTypeRenderer(type.renderer)) {\n const { associatedField } = type.renderer;\n if (associatedField) {\n const associatedValue = row[columnMap[associatedField]];\n if (typeof isValidNumber(value) && isValidNumber(associatedValue)) {\n percentage = Math.min(Math.round((value / associatedValue) * 100), 100);\n percentage = Math.min(Math.round((value / associatedValue) * 100), 100);\n showProgress = isFinite(percentage);\n } else {\n // Temp workaround for bug on server that sends aggregated values as strings\n const floatValue = parseFloat(value as string);\n if (Number.isFinite(floatValue)) {\n const floatOtherValue = parseFloat(associatedValue as string);\n if (Number.isFinite(floatOtherValue)) {\n percentage = Math.min(\n Math.round((floatValue / floatOtherValue) * 100),\n 100\n );\n showProgress = isFinite(percentage);\n }\n }\n }\n } else {\n throw Error(\"ProgressCell associatedField is required to render\");\n }\n }\n\n const className = cx(classBase, {});\n\n return (\n <div className={className} tabIndex={-1}>\n {showProgress ? (\n <span className={`${classBase}-track`}>\n <span className={`${classBase}-bg`} />\n <span\n className={`${classBase}-bar`}\n style={\n { \"--progress-bar-pct\": `-${100 - percentage}%` } as CSSProperties\n }\n />\n </span>\n ) : null}\n <span className={`${classBase}-text`}>{`${percentage} %`}</span>\n </div>\n );\n};\n\nregisterComponent(\"vuu.progress\", ProgressCell, \"cell-renderer\", {\n description: \"Progress formatter\",\n label: \"Progress formatter\",\n serverDataType: [\"long\", \"int\", \"double\"],\n});\n", "import { ColumnType, TableCellProps } from \"@vuu-ui/vuu-table-types\";\nimport {\n DOWN1,\n DOWN2,\n isTypeDescriptor,\n metadataKeys,\n registerComponent,\n UP1,\n UP2,\n} from \"@vuu-ui/vuu-utils\";\nimport cx from \"classnames\";\nimport { useDirection } from \"./useDirection\";\n\nimport \"./BackgroundCell.css\";\nimport \"./FlashingBackground.css\";\n\nconst CHAR_ARROW_UP = String.fromCharCode(11014);\nconst CHAR_ARROW_DOWN = String.fromCharCode(11015);\n\nconst { KEY } = metadataKeys;\n\nconst classBase = \"vuuBackgroundCell\";\n\n// TODO these sre repeated from PriceFormatter - where shoud they live ?\nconst FlashStyle = {\n ArrowOnly: \"arrow\",\n BackgroundOnly: \"bg-only\",\n ArrowBackground: \"arrow-bg\",\n};\n\nconst getFlashStyle = (colType?: ColumnType) => {\n if (isTypeDescriptor(colType) && colType.renderer) {\n if (\"flashStyle\" in colType.renderer) {\n return colType.renderer[\"flashStyle\"];\n }\n }\n return FlashStyle.BackgroundOnly;\n};\n\n// export to avoid tree shaking, component is not consumed directly\nexport const BackgroundCell = ({ column, columnMap, row }: TableCellProps) => {\n //TODO what about click handling\n\n const { name, type, valueFormatter } = column;\n const dataIdx = columnMap[name];\n const value = row[dataIdx];\n const flashStyle = getFlashStyle(type);\n const direction = useDirection(row[KEY], value, column);\n const arrow =\n flashStyle === FlashStyle.ArrowOnly ||\n flashStyle === FlashStyle.ArrowBackground\n ? direction === UP1 || direction === UP2\n ? CHAR_ARROW_UP\n : direction === DOWN1 || direction === DOWN2\n ? CHAR_ARROW_DOWN\n : null\n : null;\n\n const dirClass = direction ? ` ` + direction : \"\";\n\n const className = cx(classBase, dirClass, {\n [`${classBase}-backgroundOnly`]: flashStyle === FlashStyle.BackgroundOnly,\n [`${classBase}-arrowOnly`]: flashStyle === FlashStyle.ArrowOnly,\n [`${classBase}-arrowBackground`]: flashStyle === FlashStyle.ArrowBackground,\n });\n\n return (\n <div className={className} tabIndex={-1}>\n <div className={`${classBase}-flasher`}>{arrow}</div>\n {valueFormatter(row[dataIdx])}\n </div>\n );\n};\n\nregisterComponent(\n \"vuu.price-move-background\",\n BackgroundCell,\n \"cell-renderer\",\n {\n description: \"Change background color of cell when value changes\",\n configEditor: \"BackgroundCellConfigurationEditor\",\n label: \"Background Flash\",\n serverDataType: [\"long\", \"int\", \"double\"],\n }\n);\n", "import { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport {\n getMovingValueDirection,\n isTypeDescriptor,\n isValidNumber,\n valueChangeDirection,\n} from \"@vuu-ui/vuu-utils\";\nimport { useEffect, useRef } from \"react\";\n\nconst INITIAL_VALUE = [undefined, undefined, undefined, undefined];\n\ntype State = [string, unknown, RuntimeColumnDescriptor, valueChangeDirection];\n\nexport function useDirection(\n key: string,\n value: unknown,\n column: RuntimeColumnDescriptor\n) {\n const ref = useRef<State>();\n const [prevKey, prevValue, prevColumn, prevDirection] =\n ref.current || INITIAL_VALUE;\n\n const { type: dataType } = column;\n const decimals = isTypeDescriptor(dataType)\n ? dataType.formatting?.decimals\n : undefined;\n\n const direction =\n key === prevKey &&\n isValidNumber(value) &&\n isValidNumber(prevValue) &&\n column === prevColumn\n ? getMovingValueDirection(value, prevDirection, prevValue, decimals)\n : \"\";\n\n useEffect(() => {\n ref.current = [key, value, column, direction];\n });\n\n return direction;\n}\n", "import {\n ConfigurationEditorProps,\n registerConfigurationEditor,\n} from \"@vuu-ui/vuu-utils\";\nimport { FormField, FormFieldLabel } from \"@salt-ds/core\";\nimport { Dropdown, SingleSelectionHandler } from \"@vuu-ui/vuu-ui-controls\";\n\nimport \"./BackgroundCellConfigurationEditor.css\";\nimport { useCallback, useState } from \"react\";\nimport { ColumnDescriptorCustomRenderer } from \"packages/vuu-table-types\";\n\nconst classBase = \"vuuBackgroundCellConfiguration\";\n\ntype FlashOption = {\n label: string;\n value: \"arrow\" | \"bg-only\" | \"arrow-bg\";\n};\n\nconst flashOptions: FlashOption[] = [\n { label: \"Background Only\", value: \"bg-only\" },\n { label: \"Background and Arrow\", value: \"arrow-bg\" },\n { label: \"Arrow Only\", value: \"arrow\" },\n];\n\nconst [defaultFlashOption] = flashOptions;\n\nconst valueFromColumn = (column: ColumnDescriptorCustomRenderer) => {\n const { flashStyle } = column.type.renderer;\n return flashOptions.find((o) => o.value === flashStyle) || defaultFlashOption;\n};\n\nexport const BackgroundCellConfigurationEditor = ({\n column,\n onChangeRendering,\n}: ConfigurationEditorProps) => {\n const [flashStyle, setFlashStyle] = useState<FlashOption | null>(\n valueFromColumn(column)\n );\n const handleSelectionChange = useCallback<\n SingleSelectionHandler<FlashOption>\n >(\n (_, flashOption) => {\n setFlashStyle(flashOption);\n const renderProps = column.type.renderer;\n onChangeRendering({\n ...renderProps,\n flashStyle: flashOption?.value ?? defaultFlashOption.value,\n });\n },\n [column.type, onChangeRendering]\n );\n\n return (\n <FormField>\n <FormFieldLabel>Flash Style</FormFieldLabel>\n <Dropdown<FlashOption>\n className={`${classBase}-flashStyle`}\n onSelectionChange={handleSelectionChange}\n selected={flashStyle}\n source={flashOptions}\n width=\"100%\"\n />\n </FormField>\n );\n};\n\nregisterConfigurationEditor(\n \"BackgroundCellConfigurationEditor\",\n BackgroundCellConfigurationEditor\n);\n", "import {\n List,\n ListItem,\n ListItemProps,\n ListProps,\n} from \"@vuu-ui/vuu-ui-controls\";\nimport { Checkbox } from \"@salt-ds/core\";\nimport { Switch } from \"@salt-ds/lab\";\nimport cx from \"classnames\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport {\n HTMLAttributes,\n MouseEventHandler,\n SyntheticEvent,\n useCallback,\n} from \"react\";\nimport { ColumnItem } from \"../table-settings\";\n\nimport \"./ColumnList.css\";\nimport { getColumnLabel } from \"@vuu-ui/vuu-utils\";\n\nconst classBase = \"vuuColumnList\";\nconst classBaseListItem = \"vuuColumnListItem\";\n\nexport type ColumnChangeHandler = (\n columnName: string,\n propertyName: keyof ColumnDescriptor | \"subscribed\",\n value: string | number | boolean\n) => void;\n\nexport interface ColumnListProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n columnItems: ColumnItem[];\n onChange: ColumnChangeHandler;\n onMoveListItem: ListProps[\"onMoveListItem\"];\n onNavigateToColumn?: (columnName: string) => void;\n}\n\nconst ColumnListItem = ({\n className: classNameProp,\n item,\n ...listItemProps\n}: ListItemProps<ColumnItem>) => {\n return (\n <ListItem\n {...listItemProps}\n className={cx(classNameProp, classBaseListItem)}\n data-name={item?.name}\n >\n <span className={`${classBase}-icon`} data-icon=\"draggable\" />\n {item?.isCalculated ? (\n <span className={`${classBase}-icon`} data-icon=\"function\" />\n ) : (\n <Switch className={`${classBase}-switch`} checked={item?.subscribed} />\n )}\n <span className={`${classBase}-text`}>\n {getColumnLabel(item as ColumnDescriptor)}\n </span>\n <Checkbox\n className={`${classBase}-checkBox`}\n checked={item?.hidden !== true}\n disabled={item?.subscribed !== true}\n />\n </ListItem>\n );\n};\n\nexport const ColumnList = ({\n columnItems,\n onChange,\n onMoveListItem,\n onNavigateToColumn,\n ...htmlAttributes\n}: ColumnListProps) => {\n const handleChange = useCallback(\n (evt: SyntheticEvent) => {\n const input = evt.target as HTMLInputElement;\n const listItem = input.closest(`.${classBaseListItem}`) as HTMLElement;\n const {\n dataset: { name },\n } = listItem;\n if (name) {\n const saltSwitch = input.closest(`.${classBase}-switch`) as HTMLElement;\n const saltCheckbox = input.closest(\n `.${classBase}-checkBox`\n ) as HTMLElement;\n\n if (saltSwitch) {\n onChange(name, \"subscribed\", input.checked);\n } else if (saltCheckbox) {\n onChange(name, \"hidden\", input.checked === false);\n }\n }\n },\n [onChange]\n );\n\n const handleClick = useCallback<MouseEventHandler>((evt) => {\n const targetEl = evt.target as HTMLElement;\n if (targetEl.classList.contains(\"vuuColumnList-text\")) {\n const listItemEl = targetEl.closest(\".vuuListItem\") as HTMLElement;\n if (listItemEl?.dataset.name) {\n onNavigateToColumn?.(listItemEl.dataset.name);\n }\n }\n }, []);\n\n return (\n <div {...htmlAttributes} className={classBase}>\n <div className={`${classBase}-header`}>\n <span>Column Selection</span>\n </div>\n <div className={`${classBase}-colHeadings`}>\n <span>Column subscription</span>\n <span>Visibility</span>\n </div>\n <List<ColumnItem, \"none\">\n ListItem={ColumnListItem}\n allowDragDrop\n height=\"auto\"\n onChange={handleChange}\n onClick={handleClick}\n onMoveListItem={onMoveListItem}\n selectionStrategy=\"none\"\n source={columnItems}\n itemHeight={33}\n />\n </div>\n );\n};\n", "import { ColumnDescriptor, TableConfig } from \"@vuu-ui/vuu-table-types\";\nimport { VuuTable } from \"@vuu-ui/vuu-protocol-types\";\nimport { VuuInput } from \"@vuu-ui/vuu-ui-controls\";\nimport {\n getCalculatedColumnName,\n getDefaultAlignment,\n isCalculatedColumn,\n} from \"@vuu-ui/vuu-utils\";\nimport {\n Button,\n FormField,\n FormFieldLabel,\n ToggleButton,\n ToggleButtonGroup,\n} from \"@salt-ds/core\";\nimport cx from \"classnames\";\nimport { HTMLAttributes } from \"react\";\nimport { ColumnExpressionPanel } from \"../column-expression-panel\";\nimport { ColumnFormattingPanel } from \"../column-formatting-settings\";\nimport { ColumnNameLabel } from \"./ColumnNameLabel\";\nimport { useColumnSettings } from \"./useColumnSettings\";\n\nimport \"./ColumnSettingsPanel.css\";\n\nconst classBase = \"vuuColumnSettingsPanel\";\n\nconst getColumnLabel = (column: ColumnDescriptor) => {\n const { name, label } = column;\n if (isCalculatedColumn(name)) {\n return label ?? getCalculatedColumnName(column);\n } else {\n return label ?? name;\n }\n};\n\nexport interface ColumnSettingsProps extends HTMLAttributes<HTMLDivElement> {\n column: ColumnDescriptor;\n onConfigChange: (config: TableConfig) => void;\n onCancelCreateColumn: () => void;\n onCreateCalculatedColumn: (column: ColumnDescriptor) => void;\n tableConfig: TableConfig;\n vuuTable: VuuTable;\n}\n\nexport const ColumnSettingsPanel = ({\n column: columnProp,\n onCancelCreateColumn,\n onConfigChange,\n onCreateCalculatedColumn,\n tableConfig,\n vuuTable,\n}: ColumnSettingsProps) => {\n const isNewCalculatedColumn = columnProp.name === \"::\";\n const {\n availableRenderers,\n editCalculatedColumn,\n column,\n navigateNextColumn,\n navigatePrevColumn,\n onCancel,\n onChange,\n onChangeCalculatedColumnName,\n onChangeFormatting,\n onChangeRendering,\n onEditCalculatedColumn,\n onInputCommit,\n onSave,\n } = useColumnSettings({\n column: columnProp,\n onCancelCreateColumn,\n onConfigChange,\n onCreateCalculatedColumn,\n tableConfig,\n });\n\n const {\n serverDataType,\n align = getDefaultAlignment(serverDataType),\n name,\n pin,\n width,\n } = column;\n\n return (\n <div\n className={cx(classBase, {\n [`${classBase}-editing`]: editCalculatedColumn,\n })}\n >\n <div className={`${classBase}-header`}>\n <ColumnNameLabel column={column} onClick={onEditCalculatedColumn} />\n </div>\n\n {editCalculatedColumn ? (\n <ColumnExpressionPanel\n column={column}\n onChangeName={onChangeCalculatedColumnName}\n tableConfig={tableConfig}\n vuuTable={vuuTable}\n />\n ) : null}\n\n <FormField data-field=\"column-label\">\n <FormFieldLabel>Column Label</FormFieldLabel>\n <VuuInput\n className=\"vuuInput\"\n onChange={onChange}\n onCommit={onInputCommit}\n value={getColumnLabel(column)}\n />\n </FormField>\n\n <FormField data-field=\"column-width\">\n <FormFieldLabel>Column Width</FormFieldLabel>\n <VuuInput\n className=\"vuuInput\"\n onChange={onChange}\n value={width}\n onCommit={onInputCommit}\n />\n </FormField>\n <FormField data-field=\"column-alignment\">\n <FormFieldLabel>Alignment</FormFieldLabel>\n <ToggleButtonGroup\n className=\"vuuToggleButtonGroup\"\n onChange={onChange}\n value={align}\n >\n <ToggleButton\n data-icon=\"align-left\"\n className=\"vuuIconToggleButton\"\n value=\"left\"\n />\n <ToggleButton\n data-icon=\"align-right\"\n className=\"vuuIconToggleButton\"\n value=\"right\"\n />\n </ToggleButtonGroup>\n </FormField>\n <FormField data-field=\"column-pin\">\n <FormFieldLabel>Pin Column</FormFieldLabel>\n <ToggleButtonGroup\n className=\"vuuToggleButtonGroup\"\n onChange={onChange}\n value={pin ?? \"\"}\n >\n <ToggleButton\n className=\"vuuIconToggleButton\"\n data-icon=\"cross-circle\"\n value=\"\"\n />\n <ToggleButton\n className=\"vuuIconToggleButton\"\n data-icon=\"pin-left\"\n value=\"left\"\n />\n <ToggleButton\n className=\"vuuIconToggleButton\"\n data-icon=\"pin-float\"\n value=\"floating\"\n />\n <ToggleButton\n className=\"vuuIconToggleButton\"\n data-icon=\"pin-right\"\n value=\"right\"\n />\n </ToggleButtonGroup>\n </FormField>\n <ColumnFormattingPanel\n availableRenderers={availableRenderers}\n column={column}\n onChangeFormatting={onChangeFormatting}\n onChangeRendering={onChangeRendering}\n />\n\n {editCalculatedColumn ? (\n <div className=\"vuuColumnSettingsPanel-buttonBar\" data-align=\"right\">\n <Button\n className={`${classBase}-buttonCancel`}\n onClick={onCancel}\n tabIndex={-1}\n >\n cancel\n </Button>\n <Button\n className={`${classBase}-buttonSave`}\n onClick={onSave}\n variant=\"cta\"\n >\n save\n </Button>\n </div>\n ) : (\n <div\n className={`${classBase}-buttonBar`}\n data-align={isNewCalculatedColumn ? \"right\" : undefined}\n >\n <Button\n className={`${classBase}-buttonNavPrev`}\n variant=\"secondary\"\n data-icon=\"arrow-left\"\n onClick={navigatePrevColumn}\n >\n PREVIOUS\n </Button>\n <Button\n className={`${classBase}-buttonNavNext`}\n variant=\"secondary\"\n data-icon=\"arrow-right\"\n onClick={navigateNextColumn}\n >\n NEXT\n </Button>\n </div>\n )}\n </div>\n );\n};\n", "import { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { Dropdown } from \"@vuu-ui/vuu-ui-controls\";\nimport {\n getCalculatedColumnExpression,\n getCalculatedColumnName,\n getCalculatedColumnType,\n} from \"@vuu-ui/vuu-utils\";\nimport { FormField, FormFieldLabel, Input } from \"@salt-ds/core\";\nimport { HTMLAttributes, useCallback, useRef } from \"react\";\nimport {\n ColumnExpressionInput,\n ColumnExpressionSubmitHandler,\n useColumnExpressionSuggestionProvider,\n} from \"../column-expression-input\";\nimport { ColumnSettingsProps } from \"../column-settings\";\nimport { useColumnExpression } from \"./useColumnExpression\";\n\nconst classBase = \"vuuColumnExpressionPanel\";\n\nexport interface ColumnExpressionPanelProps\n extends HTMLAttributes<HTMLDivElement>,\n Pick<ColumnSettingsProps, \"tableConfig\" | \"vuuTable\"> {\n column: ColumnDescriptor;\n /**\n * Callback prop, invoked on every change to calculated column definition\n * @param calculatedColumnName the full calculated column name\n */\n onChangeName?: (name: string) => void;\n}\n\nexport const ColumnExpressionPanel = ({\n column: columnProp,\n onChangeName: onChangeNameProp,\n tableConfig,\n vuuTable,\n}: ColumnExpressionPanelProps) => {\n const typeRef = useRef<HTMLDivElement>(null);\n const { column, onChangeExpression, onChangeName, onChangeType } =\n useColumnExpression({\n column: columnProp,\n onChangeName: onChangeNameProp,\n });\n // The initial value to pass into the Expression Input. That is a\n // CodeMirror editor and will manage its own state once initialised.\n const initialExpressionRef = useRef<string>(\n getCalculatedColumnExpression(column)\n );\n\n const suggestionProvider = useColumnExpressionSuggestionProvider({\n columns: tableConfig.columns,\n table: vuuTable,\n });\n\n const handleSubmitExpression =\n useCallback<ColumnExpressionSubmitHandler>(() => {\n if (typeRef.current) {\n (\n typeRef.current?.querySelector(\"button\") as HTMLButtonElement\n )?.focus();\n }\n }, []);\n\n return (\n <div className={classBase}>\n <div className=\"vuuColumnSettingsPanel-header\">\n <span>Calculation</span>\n </div>\n\n <FormField data-field=\"column-name\">\n <FormFieldLabel>Column Name</FormFieldLabel>\n <Input\n className=\"vuuInput\"\n onChange={onChangeName}\n value={getCalculatedColumnName(column)}\n />\n </FormField>\n\n <FormField data-field=\"column-expression\">\n <FormFieldLabel>Expression</FormFieldLabel>\n <ColumnExpressionInput\n onChange={onChangeExpression}\n onSubmitExpression={handleSubmitExpression}\n source={initialExpressionRef.current}\n suggestionProvider={suggestionProvider}\n />\n </FormField>\n <FormField data-field=\"type\">\n <FormFieldLabel>Column type</FormFieldLabel>\n <Dropdown\n className={`${classBase}-type`}\n onSelectionChange={onChangeType}\n ref={typeRef}\n selected={getCalculatedColumnType(column) || null}\n source={[\"double\", \"long\", \"string\"]}\n width=\"100%\"\n />\n </FormField>\n </div>\n );\n};\n", "import { HTMLAttributes, memo } from \"react\";\nimport { ColumnDefinitionExpression } from \"./column-language-parser\";\nimport {\n ExpressionSuggestionConsumer,\n useColumnExpressionEditor,\n} from \"./useColumnExpressionEditor\";\n\nimport \"./ColumnExpressionInput.css\";\n\nconst classBase = \"vuuColumnExpressionInput\";\n\nexport type ColumnExpressionSubmitHandler = (\n source: string,\n expression: ColumnDefinitionExpression | undefined\n) => void;\n\nexport interface ColumnExpressionInputProps\n extends ExpressionSuggestionConsumer,\n Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n onChange?: (source: string) => void;\n onSubmitExpression?: ColumnExpressionSubmitHandler;\n source?: string;\n}\n\nexport const ColumnExpressionInput = memo(\n ({\n onChange,\n onSubmitExpression,\n source = \"\",\n suggestionProvider,\n }: ColumnExpressionInputProps) => {\n const { editorRef, onBlur } = useColumnExpressionEditor({\n onChange,\n onSubmitExpression,\n source,\n suggestionProvider,\n });\n\n return <div className={`${classBase}`} onBlur={onBlur} ref={editorRef} />;\n },\n (prevProps, newProps) => {\n return prevProps.source === newProps.source;\n }\n);\nColumnExpressionInput.displayName = \"ColumnExpressionInput\";\n", "import {\n autocompletion,\n Completion,\n defaultKeymap,\n EditorState,\n EditorView,\n ensureSyntaxTree,\n keymap,\n minimalSetup,\n startCompletion,\n} from \"@vuu-ui/vuu-codemirror\";\nimport { createEl } from \"@vuu-ui/vuu-utils\";\nimport {\n FocusEventHandler,\n MutableRefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport { columnExpressionLanguageSupport } from \"./column-language-parser\";\nimport {\n ColumnDefinitionExpression,\n walkTree,\n} from \"./column-language-parser/ColumnExpressionTreeWalker\";\nimport { ColumnExpressionInputProps } from \"./ColumnExpressionInput\";\nimport { vuuHighlighting } from \"./highlighting\";\nimport { vuuTheme } from \"./theme\";\nimport {\n ApplyCompletion,\n useColumnAutoComplete,\n} from \"./useColumnAutoComplete\";\n\nexport type ColumnExpressionOperator = \"Times\" | \"Divide\" | \"Minus\" | \"Plus\";\n\nexport type ColumnExpressionSuggestionType =\n | \"column\"\n | \"columnValue\"\n | \"expression\"\n | \"condition-operator\"\n | \"operator\"\n | \"relational-operator\";\n\nexport type ColumnExpressionSuggestionOptions = {\n columnName?: string;\n functionName?: string;\n operator?: ColumnExpressionOperator;\n prefix?: string;\n startsWith?: string;\n selection?: string[];\n};\n\n// TODO move this somewhere neutral\nexport interface IExpressionSuggestionProvider {\n getSuggestions: (\n valueType: ColumnExpressionSuggestionType,\n options?: ColumnExpressionSuggestionOptions\n ) => Promise<Completion[]>;\n isPartialMatch: (\n valueType: ColumnExpressionSuggestionType,\n columnName?: string,\n text?: string | undefined\n ) => Promise<boolean>;\n}\n\nexport interface ExpressionSuggestionConsumer {\n suggestionProvider: IExpressionSuggestionProvider;\n}\n\nconst getView = (ref: MutableRefObject<EditorView | undefined>): EditorView => {\n if (ref.current == undefined) {\n throw Error(\"EditorView not defined\");\n }\n return ref.current;\n};\n\nconst getOptionClass = (/*completion: Completion*/) => {\n return \"vuuSuggestion\";\n};\n\nconst noop = () => console.log(\"noooop\");\n\nconst hasExpressionType = (\n completion: Completion\n): completion is Completion & { expressionType: string } =>\n \"expressionType\" in completion;\n\nconst injectOptionContent = (\n completion: Completion /*, state: EditorState*/\n) => {\n if (hasExpressionType(completion)) {\n const div = createEl(\"div\", \"expression-type-container\");\n const span = createEl(\"span\", \"expression-type\", completion.expressionType);\n div.appendChild(span);\n return div;\n } else {\n return null;\n }\n};\n\nexport const useColumnExpressionEditor = ({\n onChange,\n onSubmitExpression,\n source,\n suggestionProvider,\n}: ColumnExpressionInputProps) => {\n const editorRef = useRef<HTMLDivElement>(null);\n const onSubmitRef = useRef<ApplyCompletion>(noop);\n const viewRef = useRef<EditorView>();\n const completionFn = useColumnAutoComplete(suggestionProvider, onSubmitRef);\n\n const [createState, clearInput, submit] = useMemo(() => {\n const parseExpression = ():\n | [string, ColumnDefinitionExpression]\n | [\"\", undefined] => {\n const view = getView(viewRef);\n const source = view.state.doc.toString();\n const tree = ensureSyntaxTree(view.state, view.state.doc.length, 5000);\n if (tree) {\n const expression = walkTree(tree, source);\n return [source, expression];\n } else {\n return [\"\", undefined];\n }\n };\n\n const clearInput = () => {\n getView(viewRef).setState(createState());\n };\n\n const submitExpression = () => {\n const [source, expression] = parseExpression();\n onSubmitExpression?.(source, expression);\n };\n\n const showSuggestions = (key: string) => {\n return keymap.of([\n {\n key,\n run() {\n startCompletion(getView(viewRef));\n return true;\n },\n },\n ]);\n };\n\n const createState = (): EditorState =>\n EditorState.create({\n doc: source,\n extensions: [\n minimalSetup,\n autocompletion({\n addToOptions: [\n {\n render: injectOptionContent,\n position: 70,\n },\n ],\n override: [completionFn],\n optionClass: getOptionClass,\n }),\n columnExpressionLanguageSupport(),\n keymap.of(defaultKeymap),\n showSuggestions(\"ArrowDown\"),\n EditorView.updateListener.of((v) => {\n const view = getView(viewRef);\n if (v.docChanged) {\n startCompletion(view);\n const source = view.state.doc.toString();\n onChange?.(source);\n }\n }),\n // Enforces single line view\n EditorState.transactionFilter.of((tr) =>\n tr.newDoc.lines > 1 ? [] : tr\n ),\n vuuTheme,\n vuuHighlighting,\n ],\n });\n\n onSubmitRef.current = () => {\n submitExpression();\n };\n\n return [createState, clearInput, submitExpression];\n }, [completionFn, onChange, onSubmitExpression, source]);\n\n useEffect(() => {\n if (!editorRef.current) {\n throw Error(\"editor not in dom\");\n }\n\n viewRef.current = new EditorView({\n state: createState(),\n parent: editorRef.current,\n });\n\n return () => {\n viewRef.current?.destroy();\n };\n }, [completionFn, createState]);\n\n const handleBlur = useCallback<FocusEventHandler>(() => {\n submit();\n }, [submit]);\n\n return { editorRef, clearInput, onBlur: handleBlur };\n};\n", "import {\n LanguageSupport,\n LRLanguage,\n styleTags,\n tags as tag,\n} from \"@vuu-ui/vuu-codemirror\";\nimport { parser } from \"./generated/column-parser\";\n\nconst columnExpressionLanguage = LRLanguage.define({\n name: \"VuuColumnExpression\",\n parser: parser.configure({\n props: [\n styleTags({\n Column: tag.attributeValue,\n Function: tag.variableName,\n String: tag.string,\n Or: tag.emphasis,\n Operator: tag.operator,\n }),\n ],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }) as any,\n});\n\nexport const columnExpressionLanguageSupport = () => {\n return new LanguageSupport(\n columnExpressionLanguage /*, [exampleCompletion]*/\n );\n};\n", "// This file was generated by lezer-generator. You probably shouldn't edit it.\nimport {LRParser} from \"@lezer/lr\"\nexport const parser = LRParser.deserialize({\n version: 14,\n states: \"&xOVQPOOO!fQPO'#C^OVQPO'#CcQ!pQPOOO#bQPO'#CkO#gQPO'#CrOOQO'#Cy'#CyO#lQPO,58}OVQPO,59QOVQPO,59QOOQO'#Cn'#CnOVQPO,59XOVQPO,59VOVQPO'#CtOOQO,59^,59^OOQO1G.i1G.iOOQO1G.l1G.lO$bQPO1G.lO%ZQPO1G.sO!pQPO'#CmO%qQQO1G.qO%|QQO'#C{OOQO'#C{'#C{O&wQPO,59`OVQPO,59ZOVQPO,59[OVQPO7+$]OVQPO'#CuO'RQPO1G.zOOQO1G.z1G.zO'ZQQO'#C^O'eQQO1G.sO'{QQO1G.uOOQO1G.v1G.vO(WQPO<<GwO(_QPO,59aOOQO-E6s-E6sOOQO7+$f7+$fOVQPOAN=cO(iQQO1G.lO(yQPOG22}OOQOLD(iLD(iO)QQPO,59QO)QQPO,59QO)QQPO,59X\",\n stateData: \")n~OlOS~ORUOSUOTUOUUOWQO`SOnPO~OWgXZQX[QX]QX^QXpQXqQXrQXsQXtQXuQXeQX~OjQXXQX~PnOZWO[WO]XO^XOpYOqYOrYOsYOtYOuYO~OW[O~OW]O~OX_O~P!pO]Yi^YipYiqYirYisYitYiuYieYi~OZWO[WOjYiXYi~P#sOpaiqairaisaitaiuaieai~OZWO[WO]XO^XOjaiXai~P$rOejOvhOwiO~OZmX[mX]mX^mXeoXpmXqmXrmXsmXtmXumXvoXwoX~OXmOekO~P!pOXuOekO~OvQXwQX~PnOZzO[zO]{O^{Ovaiwai~P$rOwiOecivci~OevO~P!pOXiaeia~P!pOZzO[zOvYiwYi~P#sOXyO~P!pORUOSUOTUOUUOWQO`SOnnO~O`UTn~\",\n goto: \"$epPPqPPPPqPPqPPPPqP!S!g!r!rPq!w#Y#]PPP#cP$[oUOQWXZ[]hijkvz{|hUOQWXZ]jkvz{|Ve[hi[ZRVgrsxR|cVf[hioTOQWXZ[]hijkvz{|R^TQlgRtlQROQVQS`WzQaXQbZUc[hiQg]Qo|QrjQskQw{RxvQd[QphRqi\",\n nodeNames: \"\u26A0 ColumnDefinitionExpression Column Number String True False ParenthesizedExpression OpenBrace CloseBrace ArithmeticExpression Divide Times Plus Minus ConditionalExpression If RelationalExpression RelationalOperator AndCondition OrCondition Comma CallExpression Function ArgList\",\n maxTerm: 39,\n skippedNodes: [0],\n repeatNodeCount: 1,\n tokenData: \".^~RnXY#PYZ#P]^#Ppq#Pqr#brs#mxy$eyz$jz{$o{|$t|}$y}!O%O!O!P%T!P!Q%c!Q![%h!^!_%s!_!`&Q!`!a&V!c!}&d#R#S&d#T#U&u#U#Y&d#Y#Z(Y#Z#]&d#]#^*j#^#c&d#c#d+f#d#h&d#h#i,b#i#o&d~#USl~XY#PYZ#P]^#Ppq#P~#eP!_!`#h~#mOu~~#pWOX#mZ]#m^r#mrs$Ys#O#m#P;'S#m;'S;=`$_<%lO#m~$_OS~~$bP;=`<%l#m~$jOW~~$oOX~~$tO[~~$yO]~~%OOe~~%TO^~~%WP!Q![%Z~%`PR~!Q![%Z~%hOZ~~%mQR~!O!P%Z!Q![%h~%xPr~!_!`%{~&QOt~~&VOp~~&[Pq~!_!`&_~&dOs~P&iSnP!Q![&d!c!}&d#R#S&d#T#o&dR&zUnP!Q![&d!c!}&d#R#S&d#T#b&d#b#c'^#c#o&dR'cUnP!Q![&d!c!}&d#R#S&d#T#W&d#W#X'u#X#o&dR'|SvQnP!Q![&d!c!}&d#R#S&d#T#o&d~(_TnP!Q![&d!c!}&d#R#S&d#T#U(n#U#o&d~(sUnP!Q![&d!c!}&d#R#S&d#T#`&d#`#a)V#a#o&d~)[UnP!Q![&d!c!}&d#R#S&d#T#g&d#g#h)n#h#o&d~)sUnP!Q![&d!c!}&d#R#S&d#T#X&d#X#Y*V#Y#o&d~*^SU~nP!Q![&d!c!}&d#R#S&d#T#o&d~*oUnP!Q![&d!c!}&d#R#S&d#T#Y&d#Y#Z+R#Z#o&d~+YS`~nP!Q![&d!c!}&d#R#S&d#T#o&dR+kUnP!Q![&d!c!}&d#R#S&d#T#f&d#f#g+}#g#o&dR,USwQnP!Q![&d!c!}&d#R#S&d#T#o&d~,gUnP!Q![&d!c!}&d#R#S&d#T#f&d#f#g,y#g#o&d~-OUnP!Q![&d!c!}&d#R#S&d#T#i&d#i#j-b#j#o&d~-gUnP!Q![&d!c!}&d#R#S&d#T#X&d#X#Y-y#Y#o&d~.QST~nP!Q![&d!c!}&d#R#S&d#T#o&d\",\n tokenizers: [0, 1],\n topRules: {\"ColumnDefinitionExpression\":[0,1]},\n tokenPrec: 393\n})\n", "import { Tree } from \"@vuu-ui/vuu-codemirror\";\nimport { RelationalExpression } from \"./generated/column-parser.terms\";\ntype expressionType =\n | \"arithmeticExpression\"\n | \"booleanCondition\"\n | \"booleanLiteralExpression\"\n | \"callExpression\"\n | \"colExpression\"\n | \"conditionalExpression\"\n | \"numericLiteralExpression\"\n | \"relationalExpression\"\n | \"stringLiteralExpression\"\n | \"unknown\";\n\ntype arithmeticOp = \"*\" | \"/\" | \"+\" | \"-\" | \"unknown\";\ntype booleanOp = \"and\" | \"or\";\ntype relationalOp = \"=\" | \"!=\" | \">\" | \">=\" | \"<\" | \"<=\" | \"unknown\";\n\nexport interface Expression {\n type: expressionType;\n expressions?: Expression[];\n toJSON?: () => unknown;\n value?: string | number | boolean;\n}\n\ninterface UnknownExpression extends Expression {\n type: \"unknown\";\n}\n\ninterface BooleanLiteralExpression {\n type: \"booleanLiteralExpression\";\n value: boolean;\n}\n\ninterface NumericLiteralExpression {\n type: \"numericLiteralExpression\";\n value: number;\n}\ninterface StringLiteralExpression {\n type: \"stringLiteralExpression\";\n value: string;\n}\n\ninterface ArithmeticExpression extends Expression {\n expressions: [Expression, Expression];\n op: arithmeticOp;\n type: \"arithmeticExpression\";\n}\n\ninterface BooleanCondition extends Expression {\n expressions: Expression[];\n op: booleanOp;\n type: \"booleanCondition\";\n}\ninterface RelationalExpression extends Expression {\n expressions: Expression[];\n op: relationalOp;\n type: \"relationalExpression\";\n}\n\ninterface ColExpression extends Expression {\n column?: string;\n type: \"colExpression\";\n}\n\ninterface CallExpression extends Expression {\n arguments: Expression[];\n functionName?: string;\n type: \"callExpression\";\n}\n\ntype ConditionExpression = RelationalExpression | BooleanCondition;\n\ninterface ConditionalExpression extends Expression {\n type: \"conditionalExpression\";\n condition: ConditionExpression;\n truthyExpression: Expression;\n falsyExpression: Expression;\n}\n\nexport type ColumnDefinitionExpression =\n | ArithmeticExpression\n | BooleanLiteralExpression\n | CallExpression\n | ColExpression\n | ConditionalExpression\n | NumericLiteralExpression\n | StringLiteralExpression;\n\nclass LiteralExpressionImpl implements Expression {\n type:\n | \"booleanLiteralExpression\"\n | \"numericLiteralExpression\"\n | \"stringLiteralExpression\";\n value: boolean | number | string;\n constructor(value: boolean | number | string) {\n this.value = value;\n switch (typeof value) {\n case \"boolean\":\n this.type = \"booleanLiteralExpression\";\n break;\n case \"number\":\n this.type = \"numericLiteralExpression\";\n break;\n default:\n this.type = \"stringLiteralExpression\";\n }\n }\n toJSON() {\n return {\n type: this.type,\n value: this.value,\n } as\n | StringLiteralExpression\n | BooleanLiteralExpression\n | NumericLiteralExpression;\n }\n}\nclass ColumnExpressionImpl implements ColExpression {\n type = \"colExpression\" as const;\n column: string;\n constructor(columnName: string) {\n this.column = columnName;\n }\n toJSON() {\n return {\n type: this.type,\n column: this.column,\n } as ColExpression;\n }\n}\nclass ArithmeticExpressionImpl implements ArithmeticExpression {\n #expressions: [Expression, Expression] = [\n { type: \"unknown\" },\n { type: \"unknown\" },\n ];\n #op: arithmeticOp | \"unknown\";\n type = \"arithmeticExpression\" as const;\n constructor(op: arithmeticOp | \"unknown\" = \"unknown\") {\n this.#op = op;\n }\n get op() {\n return this.#op;\n }\n set op(op: arithmeticOp) {\n this.#op = op;\n }\n get expressions() {\n return this.#expressions;\n }\n\n toJSON() {\n return {\n type: this.type,\n op: this.#op,\n expressions: this.#expressions,\n };\n }\n}\n\nclass CallExpressionImpl implements CallExpression {\n #expressions: Expression[] = [];\n functionName: string;\n type = \"callExpression\" as const;\n constructor(functionName: string) {\n this.functionName = functionName;\n }\n\n get expressions() {\n return this.#expressions;\n }\n get arguments() {\n return this.#expressions;\n }\n\n toJSON() {\n return {\n type: this.type,\n functionName: this.functionName,\n arguments: this.#expressions.map((e) => e.toJSON?.()),\n } as CallExpression;\n }\n}\n\nclass RelationalExpressionImpl implements RelationalExpression {\n #expressions: [Expression, Expression] = [\n { type: \"unknown\" },\n { type: \"unknown\" },\n ];\n #op: relationalOp = \"unknown\";\n type = \"relationalExpression\" as const;\n\n get op() {\n return this.#op;\n }\n set op(op: relationalOp) {\n this.#op = op;\n }\n get expressions() {\n return this.#expressions;\n }\n\n toJSON() {\n return {\n type: this.type,\n op: this.#op,\n expressions: this.#expressions,\n } as RelationalExpression;\n }\n}\n\nclass BooleanConditionImp implements BooleanCondition {\n #expressions: [Expression, Expression] = [\n { type: \"unknown\" },\n { type: \"unknown\" },\n ];\n #op: \"and\" | \"or\";\n type = \"booleanCondition\" as const;\n constructor(booleanOperator: \"and\" | \"or\") {\n this.#op = booleanOperator;\n }\n get op() {\n return this.#op;\n }\n get expressions() {\n return this.#expressions;\n }\n toJSON() {\n return {\n type: this.type,\n op: this.#op,\n expressions: this.#expressions.map((e) => e.toJSON?.()),\n };\n }\n}\n\nclass ConditionalExpressionImpl implements ConditionalExpression {\n #expressions: [ConditionExpression, Expression, Expression];\n type = \"conditionalExpression\" as const;\n\n constructor(booleanOperator?: \"and\" | \"or\") {\n this.#expressions = [\n booleanOperator\n ? new BooleanConditionImp(booleanOperator)\n : new RelationalExpressionImpl(),\n { type: \"unknown\" },\n { type: \"unknown\" },\n ];\n }\n\n get expressions() {\n return this.#expressions;\n }\n\n get condition(): ConditionExpression {\n return this.#expressions[0];\n }\n get truthyExpression(): Expression {\n return this.#expressions[1];\n }\n set truthyExpression(expression: Expression) {\n this.#expressions[1] = expression;\n }\n get falsyExpression(): Expression {\n return this.#expressions[2];\n }\n set falsyExpression(expression: Expression) {\n this.#expressions[2] = expression;\n }\n\n toJSON() {\n return {\n type: this.type,\n condition: this.condition.toJSON?.(),\n truthyExpression: this.truthyExpression,\n falsyExpression: this.falsyExpression?.toJSON?.() ?? this.falsyExpression,\n };\n }\n}\n\ntype PartialExpression =\n | ArithmeticExpression\n | RelationalExpression\n | ColExpression\n | CallExpression\n | BooleanCondition\n | Partial<ConditionalExpression>;\n\nconst isUnknown = (e: Expression): e is UnknownExpression =>\n e.type === \"unknown\";\n\nconst isArithmeticExpression = (\n expression: PotentiallyUnresolvedExpression\n): expression is ArithmeticExpression =>\n expression.type === \"arithmeticExpression\";\n\nconst isCallExpression = (\n expression: PotentiallyUnresolvedExpression\n): expression is CallExpression => expression.type === \"callExpression\";\n\nconst isConditionalExpression = (\n expression: PotentiallyUnresolvedExpression\n): expression is ConditionalExpression =>\n expression.type === \"conditionalExpression\";\n\nconst isCondition = (\n expression: Expression | PartialExpression\n): expression is ConditionExpression =>\n expression.type === \"relationalExpression\" ||\n expression.type === \"booleanCondition\";\n\nconst booleanConditionIsIncomplete = (\n condition: ConditionExpression\n): boolean =>\n condition.expressions.length < 2 ||\n condition.expressions.some((e) => conditionIsIncomplete(e));\n\nconst isBooleanCondition = (\n expression: Expression\n): expression is BooleanCondition => expression.type === \"booleanCondition\";\n\nconst isRelationalExpression = (\n expression?: Expression\n): expression is RelationalExpression =>\n expression?.type === \"relationalExpression\";\n\nconst conditionIsIncomplete = (\n condition: Expression\n): condition is ConditionExpression =>\n (isBooleanCondition(condition) && booleanConditionIsIncomplete(condition)) ||\n (isRelationalExpression(condition) && condition.expressions.length < 2);\n\nconst firstIncompleteExpression = (\n expression: Expression\n): Expression | undefined => {\n if (isUnknown(expression)) {\n return expression;\n } else if (isRelationalExpression(expression)) {\n const [operand1, operand2] = expression.expressions;\n if (expressionIsIncomplete(operand1)) {\n return firstIncompleteExpression(operand1);\n } else if (expression.op === \"unknown\") {\n return expression;\n } else if (expressionIsIncomplete(operand2)) {\n return firstIncompleteExpression(operand2);\n }\n } else if (isCondition(expression)) {\n const { expressions = [] } = expression;\n for (const e of expressions) {\n if (expressionIsIncomplete(e)) {\n return firstIncompleteExpression(e);\n }\n }\n } else if (isConditionalExpression(expression)) {\n const { condition, truthyExpression, falsyExpression } = expression;\n if (expressionIsIncomplete(condition)) {\n return firstIncompleteExpression(condition);\n } else if (expressionIsIncomplete(truthyExpression)) {\n return firstIncompleteExpression(truthyExpression);\n } else if (expressionIsIncomplete(falsyExpression)) {\n return firstIncompleteExpression(falsyExpression);\n }\n } else if (isArithmeticExpression(expression)) {\n const { expressions = [] } = expression;\n for (const e of expressions) {\n if (expressionIsIncomplete(e)) {\n return firstIncompleteExpression(e);\n }\n }\n }\n};\nconst replaceUnknownExpression = (\n incompleteExpression: Expression,\n unknownExpression: UnknownExpression,\n expression: Expression\n): boolean => {\n const { expressions = [] } = incompleteExpression;\n if (expressions.includes(unknownExpression)) {\n const pos = expressions.indexOf(unknownExpression);\n expressions.splice(pos, 1, expression);\n return true;\n } else {\n for (const e of expressions) {\n if (replaceUnknownExpression(e, unknownExpression, expression)) {\n return true;\n }\n }\n }\n return false;\n};\n\nconst expressionIsIncomplete = (expression: Expression): boolean => {\n if (isUnknown(expression)) {\n return true;\n } else if (isConditionalExpression(expression)) {\n return (\n expressionIsIncomplete(expression.condition) ||\n expressionIsIncomplete(expression.truthyExpression) ||\n expressionIsIncomplete(expression.falsyExpression)\n );\n } else if (\n isRelationalExpression(expression) ||\n isBooleanCondition(expression)\n ) {\n return (\n expression.op === undefined ||\n expression.expressions.some((e) => expressionIsIncomplete(e))\n );\n }\n // TODO missing cases\n return false;\n};\n\ntype ExpressionImpl =\n | ArithmeticExpressionImpl\n | CallExpressionImpl\n | ColumnExpressionImpl\n | ConditionalExpressionImpl\n | LiteralExpressionImpl;\n\ntype PotentiallyUnresolvedExpression = Expression | PartialExpression;\n\nconst addExpression = (\n expression: Expression,\n subExpression: PartialExpression | Expression\n) => {\n const targetExpression = firstIncompleteExpression(expression);\n if (targetExpression) {\n if (targetExpression.expressions) {\n targetExpression.expressions.push(subExpression as Expression);\n } else {\n console.warn(\"don't know how to treat targetExpression\");\n }\n } else {\n console.error(\"no target expression found\");\n }\n};\n\nclass ColumnExpression {\n #expression: ExpressionImpl | undefined;\n\n #callStack: CallExpression[] = [];\n\n setCondition(booleanOperator?: \"and\" | \"or\") {\n if (this.#expression === undefined) {\n this.addExpression(new ConditionalExpressionImpl(booleanOperator));\n } else if (isConditionalExpression(this.#expression)) {\n if (expressionIsIncomplete(this.#expression.condition)) {\n const condition = booleanOperator\n ? new BooleanConditionImp(booleanOperator)\n : new RelationalExpressionImpl();\n this.addExpression(condition);\n } else if (isUnknown(this.#expression.truthyExpression)) {\n this.#expression.truthyExpression = new ConditionalExpressionImpl(\n booleanOperator\n );\n } else if (expressionIsIncomplete(this.#expression.truthyExpression)) {\n const condition = booleanOperator\n ? new BooleanConditionImp(booleanOperator)\n : new RelationalExpressionImpl();\n this.addExpression(condition);\n } else if (isUnknown(this.#expression.falsyExpression)) {\n this.#expression.falsyExpression = new ConditionalExpressionImpl(\n booleanOperator\n );\n } else if (expressionIsIncomplete(this.#expression.falsyExpression)) {\n const condition = booleanOperator\n ? new BooleanConditionImp(booleanOperator)\n : new RelationalExpressionImpl();\n this.addExpression(condition);\n }\n } /*else if (isCallExpression(this.#expression)) {\n this.addExpression(new RelationalExpressionImpl());\n } */ else {\n console.error(\"setCondition called unexpectedly\");\n }\n }\n\n addExpression(expression: ExpressionImpl | Expression) {\n if (this.#callStack.length > 0) {\n const currentCallExpression = this.#callStack.at(-1);\n currentCallExpression?.arguments.push(expression as Expression);\n } else if (this.#expression === undefined) {\n this.#expression = expression as ExpressionImpl;\n } else if (isArithmeticExpression(this.#expression)) {\n const targetExpression = firstIncompleteExpression(this.#expression);\n if (targetExpression && isUnknown(targetExpression)) {\n replaceUnknownExpression(\n this.#expression,\n targetExpression,\n expression\n );\n }\n } else if (isConditionalExpression(this.#expression)) {\n if (expressionIsIncomplete(this.#expression)) {\n const targetExpression = firstIncompleteExpression(this.#expression);\n if (targetExpression && isUnknown(targetExpression)) {\n replaceUnknownExpression(\n this.#expression,\n targetExpression,\n expression\n );\n } else if (targetExpression) {\n addExpression(targetExpression, expression);\n }\n }\n }\n }\n\n setFunction(functionName: string) {\n const callExpression = new CallExpressionImpl(functionName);\n this.addExpression(callExpression);\n this.#callStack.push(callExpression);\n }\n\n setColumn(columnName: string) {\n this.addExpression(new ColumnExpressionImpl(columnName));\n }\n\n setArithmeticOp(value: string) {\n const op = value as arithmeticOp;\n const expression = this.#expression as Expression;\n if (isArithmeticExpression(expression)) {\n expression.op = op;\n }\n // else {\n // const targetExpression = firstIncompleteExpression(this.#expression);\n // if (targetExpression) {\n // targetExpression.op = op;\n // }\n // }\n }\n\n setRelationalOperator(value: string) {\n const op = value as relationalOp;\n if (this.#expression && isConditionalExpression(this.#expression)) {\n const targetExpression = firstIncompleteExpression(this.#expression);\n if (isRelationalExpression(targetExpression)) {\n targetExpression.op = op;\n } else {\n console.error(`no target expression found (op = ${value})`);\n }\n }\n }\n\n setValue(value: string | number | boolean) {\n const literalExpression = new LiteralExpressionImpl(value);\n if (this.#expression === undefined) {\n this.#expression = literalExpression;\n } else if (isArithmeticExpression(this.#expression)) {\n this.addExpression(literalExpression);\n } else if (isCallExpression(this.#expression)) {\n // TODO this might not be correct if call arguments include nested expression(s)\n this.#expression.arguments.push(literalExpression);\n } else if (isConditionalExpression(this.#expression)) {\n if (expressionIsIncomplete(this.#expression)) {\n const targetExpression = firstIncompleteExpression(this.#expression);\n if (targetExpression && isUnknown(targetExpression)) {\n replaceUnknownExpression(\n this.#expression,\n targetExpression,\n literalExpression\n );\n } else if (targetExpression) {\n addExpression(targetExpression, literalExpression);\n }\n } else {\n console.log(\"what do we do with value, in a complete expression\");\n }\n }\n }\n\n closeBrace() {\n this.#callStack.pop();\n }\n\n get expression() {\n return this.#expression;\n }\n\n toJSON() {\n return this.#expression?.toJSON() as ColumnDefinitionExpression;\n }\n}\n\nexport const walkTree = (tree: Tree, source: string) => {\n const columnExpression = new ColumnExpression();\n const cursor = tree.cursor();\n do {\n const { name, from, to } = cursor;\n switch (name) {\n case \"AndCondition\":\n columnExpression.setCondition(\"and\");\n break;\n\n case \"OrCondition\":\n columnExpression.setCondition(\"or\");\n break;\n\n case \"RelationalExpression\":\n // TODO this breaks when the relationalexpression is an argument to a CallExpression\n columnExpression.setCondition();\n break;\n\n case \"ArithmeticExpression\":\n columnExpression.addExpression(new ArithmeticExpressionImpl());\n break;\n\n case \"Column\":\n {\n const columnName = source.substring(from, to);\n columnExpression.setColumn(columnName);\n }\n break;\n\n case \"Function\":\n {\n const functionName = source.substring(from, to);\n columnExpression.setFunction(functionName);\n }\n break;\n\n case \"Times\":\n case \"Divide\":\n case \"Plus\":\n case \"Minus\":\n {\n const op = source.substring(from, to);\n columnExpression.setArithmeticOp(op);\n }\n break;\n\n case \"RelationalOperator\":\n {\n const op = source.substring(from, to);\n columnExpression.setRelationalOperator(op);\n }\n break;\n\n case \"False\":\n case \"True\":\n {\n const value = source.substring(from, to);\n columnExpression.setValue(value === \"true\" ? true : false);\n }\n break;\n\n case \"String\":\n columnExpression.setValue(source.substring(from + 1, to - 1));\n break;\n\n case \"Number\":\n columnExpression.setValue(parseFloat(source.substring(from, to)));\n break;\n\n case \"CloseBrace\":\n columnExpression.closeBrace();\n break;\n\n default:\n }\n } while (cursor.next());\n\n return columnExpression.toJSON();\n};\n", "import type { SyntaxNode } from \"@vuu-ui/vuu-codemirror\";\nimport { parser } from \"./generated/column-parser\";\n\nconst strictParser = parser.configure({ strict: true });\n\nconst RelationalOperands = [\"Number\", \"String\"];\n\nexport const ColumnNamedTerms: readonly string[] = [\n ...RelationalOperands,\n \"AndCondition\",\n \"ArithmeticExpression\",\n \"BooleanOperator\",\n \"RelationalOperatorOperator\",\n \"CallExpression\",\n \"CloseBrace\",\n \"Column\",\n \"Comma\",\n \"ConditionalExpression\",\n \"Divide\",\n \"Equal\",\n \"If\",\n \"Minus\",\n \"OpenBrace\",\n \"OrCondition\",\n \"ParenthesizedExpression\",\n \"Plus\",\n \"RelationalExpression\",\n \"RelationalOperator\",\n \"Times\",\n];\n\nexport const isCompleteExpression = (src: string) => {\n try {\n strictParser.parse(src);\n return true;\n } catch (err) {\n return false;\n }\n};\n\nexport const lastNamedChild = (node: SyntaxNode): SyntaxNode | null => {\n let { lastChild } = node;\n while (lastChild && !ColumnNamedTerms.includes(lastChild.name)) {\n lastChild = lastChild.prevSibling;\n console.log(lastChild?.name);\n }\n return lastChild;\n};\n\nexport const isCompleteRelationalExpression = (node?: SyntaxNode) => {\n if (node?.name === \"RelationalExpression\") {\n const { firstChild } = node;\n const lastChild = lastNamedChild(node);\n if (\n firstChild?.name === \"Column\" &&\n typeof lastChild?.name === \"string\" &&\n RelationalOperands.includes(lastChild.name)\n ) {\n return true;\n }\n }\n\n return false;\n};\n", "import {\n HighlightStyle,\n syntaxHighlighting,\n tags,\n} from \"@vuu-ui/vuu-codemirror\";\n\nconst myHighlightStyle = HighlightStyle.define([\n {\n tag: tags.attributeValue,\n color: \"var(--vuuFilterEditor-variableColor);font-weight: bold\",\n },\n { tag: tags.variableName, color: \"var(--vuuFilterEditor-variableColor)\" },\n { tag: tags.comment, color: \"green\", fontStyle: \"italic\" },\n]);\n\nexport const vuuHighlighting = syntaxHighlighting(myHighlightStyle);\n", "import { EditorView } from \"@vuu-ui/vuu-codemirror\";\n\nexport const vuuTheme = EditorView.theme(\n {\n \"&\": {\n border: \"solid 1px var(--salt-container-primary-borderColor)\",\n color: \"var(--vuuFilterEditor-color)\",\n backgroundColor: \"var(--vuuFilterEditor-background)\",\n },\n \".cm-content\": {\n caretColor: \"var(--vuuFilterEditor-cursorColor)\",\n },\n \"&.cm-focused .cm-cursor\": {\n borderLeftColor: \"var(--vuuFilterEditor-cursorColor)\",\n },\n \"&.cm-focused .cm-selectionBackground, ::selection\": {\n backgroundColor: \"var(--vuuFilterEditor-selectionBackground)\",\n },\n \".cm-selectionBackground, ::selection\": {\n backgroundColor: \"var(--vuuFilterEditor-selectionBackground)\",\n },\n \".cm-scroller\": {\n fontFamily: \"var(--vuuFilterEditor-fontFamily)\",\n },\n \".cm-completionLabel\": {\n color: \"var(--vuu-color-gray-50)\",\n },\n \".cm-completionMatchedText\": {\n color: \"var(--vuu-color-gray-80)\",\n fontWeight: 700,\n textDecoration: \"none\",\n },\n \".cm-tooltip\": {\n background: \"var(--vuuFilterEditor-tooltipBackground)\",\n border: \"var(--vuuFilterEditor-tooltipBorder)\",\n borderRadius: \"4px\",\n boxShadow: \"var(--vuuFilterEditor-tooltipElevation)\",\n \"&.cm-tooltip-autocomplete > ul\": {\n fontFamily: \"var(--vuuFilterEditor-fontFamily)\",\n fontSize: \"var(--vuuFilterEditor-fontSize)\",\n maxHeight: \"240px\",\n },\n \"&.cm-tooltip-autocomplete > ul > li\": {\n height: \"var(--vuuFilterEditor-suggestion-height)\",\n padding: \"0 3px\",\n lineHeight: \"var(--vuuFilterEditor-suggestion-height)\",\n },\n \"&.cm-tooltip-autocomplete li[aria-selected]\": {\n background: \"var(--vuuFilterEditor-suggestion-selectedBackground)\",\n color: \"var(--vuuFilterEditor-suggestion-selectedColor)\",\n },\n \"&.cm-tooltip-autocomplete li .cm-completionDetail\": {\n color: \"var(--vuuFilterEditor-suggestion-detailColor)\",\n },\n },\n },\n { dark: false }\n);\n", "import {\n booleanJoinSuggestions,\n Completion,\n CompletionContext,\n CompletionSource,\n EditorState,\n getNamedParentNode,\n getPreviousNode,\n getValue,\n SyntaxNode,\n syntaxTree,\n} from \"@vuu-ui/vuu-codemirror\";\nimport { MutableRefObject, useCallback } from \"react\";\nimport {\n ColumnNamedTerms,\n isCompleteExpression,\n isCompleteRelationalExpression,\n} from \"./column-language-parser\";\nimport {\n ColumnExpressionOperator,\n ColumnExpressionSuggestionOptions,\n ColumnExpressionSuggestionType,\n IExpressionSuggestionProvider,\n} from \"./useColumnExpressionEditor\";\nimport { lastNamedChild } from \"./column-language-parser\";\n\nexport type ApplyCompletion = (mode?: \"add\" | \"replace\") => void;\n\nexport type Operator = \"\";\n\nconst applyPrefix = (completions: Completion[], prefix?: string) =>\n prefix\n ? completions.map((completion) => ({\n ...completion,\n apply:\n typeof completion.apply === \"function\"\n ? completion.apply\n : `${prefix}${completion.apply ?? completion.label}`,\n }))\n : completions;\n\nconst isOperator = (node?: SyntaxNode): node is SyntaxNode =>\n node === undefined\n ? false\n : [\"Times\", \"Divide\", \"Plus\", \"Minus\"].includes(node.name);\n\nconst completionDone = (onSubmit?: () => void): Completion => ({\n apply: () => {\n onSubmit?.();\n },\n label: \"Done\",\n boost: 10,\n});\n\nconst getLastChild = (node: SyntaxNode, context: CompletionContext) => {\n let { lastChild: childNode } = node;\n const { pos } = context;\n while (childNode) {\n const isBeforeCursor = childNode.from < pos;\n if (isBeforeCursor && ColumnNamedTerms.includes(childNode.name)) {\n if (childNode.name === \"ParenthesizedExpression\") {\n // extract the parenthesized expression\n const expression = childNode.firstChild?.nextSibling;\n if (expression) {\n childNode = expression;\n }\n }\n return childNode;\n } else {\n childNode = childNode.prevSibling;\n }\n }\n};\nconst getFunctionName = (node: SyntaxNode, state: EditorState) => {\n if (node.name === \"ArgList\") {\n const functionNode = node.prevSibling;\n if (functionNode) {\n return getValue(functionNode, state);\n }\n } else if (node.name === \"OpenBrace\") {\n const maybeFunction = node.parent?.prevSibling;\n if (maybeFunction?.name === \"Function\") {\n return getValue(maybeFunction, state);\n }\n }\n};\n\nconst getRelationalOperator = (node: SyntaxNode, state: EditorState) => {\n if (node.name === \"RelationalExpression\") {\n const lastNode = lastNamedChild(node);\n if (lastNode?.name === \"RelationalOperator\") {\n return getValue(lastNode, state);\n }\n } else {\n const prevNode = node.prevSibling;\n if (prevNode?.name === \"RelationalOperator\") {\n return getValue(prevNode, state) as ColumnExpressionOperator;\n }\n }\n};\n\nconst getColumnName = (\n node: SyntaxNode,\n state: EditorState\n): string | undefined => {\n if (node.name === \"RelationalExpression\") {\n if (node.firstChild?.name === \"Column\") {\n return getValue(node.firstChild, state);\n }\n } else {\n const prevNode = node.prevSibling;\n if (prevNode?.name === \"Column\") {\n return getValue(prevNode, state);\n } else if (prevNode?.name === \"RelationalOperator\") {\n return getColumnName(prevNode, state);\n }\n }\n};\n\nconst makeSuggestions = async (\n context: CompletionContext,\n suggestionProvider: IExpressionSuggestionProvider,\n suggestionType: ColumnExpressionSuggestionType,\n optionalArgs: ColumnExpressionSuggestionOptions = {}\n) => {\n const options = await suggestionProvider.getSuggestions(\n suggestionType,\n optionalArgs\n );\n const { startsWith = \"\" } = optionalArgs;\n return { from: context.pos - startsWith.length, options };\n};\n\nconst handleConditionalExpression = (\n node: SyntaxNode,\n context: CompletionContext,\n suggestionProvider: IExpressionSuggestionProvider,\n maybeComplete?: boolean,\n onSubmit?: () => void\n) => {\n const lastChild = getLastChild(node, context);\n switch (lastChild?.name) {\n case \"If\":\n return makeSuggestions(context, suggestionProvider, \"expression\", {\n prefix: \"( \",\n });\n case \"OpenBrace\":\n return makeSuggestions(context, suggestionProvider, \"expression\");\n case \"Condition\":\n return makeSuggestions(context, suggestionProvider, \"expression\", {\n prefix: \", \",\n });\n case \"CloseBrace\":\n if (maybeComplete) {\n const options: Completion[] = [completionDone(onSubmit)];\n return { from: context.pos, options };\n }\n }\n};\n\nconst promptToSave = (context: CompletionContext, onSubmit: () => void) => {\n const options: Completion[] = [completionDone(onSubmit)];\n return { from: context.pos, options };\n};\n\nexport const useColumnAutoComplete = (\n suggestionProvider: IExpressionSuggestionProvider,\n onSubmit: MutableRefObject<ApplyCompletion>\n) => {\n const makeSuggestions = useCallback(\n async (\n context: CompletionContext,\n suggestionType: ColumnExpressionSuggestionType,\n optionalArgs: ColumnExpressionSuggestionOptions = {}\n ) => {\n const options = await suggestionProvider.getSuggestions(\n suggestionType,\n optionalArgs\n );\n const { startsWith = \"\" } = optionalArgs;\n return { from: context.pos - startsWith.length, options };\n },\n [suggestionProvider]\n );\n\n return useCallback(\n async (context: CompletionContext) => {\n const { state, pos } = context;\n const word = context.matchBefore(/\\w*/) ?? {\n from: 0,\n to: 0,\n text: undefined,\n };\n\n const tree = syntaxTree(state);\n const nodeBefore = tree.resolveInner(pos, -1);\n const text = state.doc.toString();\n const maybeComplete = isCompleteExpression(text);\n\n switch (nodeBefore.name) {\n case \"If\": {\n return makeSuggestions(context, \"expression\", { prefix: \"( \" });\n }\n case \"Condition\":\n {\n const lastChild = getLastChild(nodeBefore, context);\n if (lastChild?.name === \"Column\") {\n // is this the first term ?\n const prevChild = getPreviousNode(lastChild);\n if (prevChild?.name !== \"RelationalOperator\") {\n return makeSuggestions(context, \"condition-operator\", {\n columnName: getValue(lastChild, state),\n });\n }\n } else if (lastChild?.name === \"RelationalOperator\") {\n // we need the type of the expression on the other side of the operator\n return makeSuggestions(context, \"expression\");\n }\n }\n break;\n case \"ConditionalExpression\":\n return handleConditionalExpression(\n nodeBefore,\n context,\n suggestionProvider\n );\n case \"RelationalExpression\":\n {\n if (isCompleteRelationalExpression(nodeBefore)) {\n return {\n from: context.pos,\n options: booleanJoinSuggestions.concat({\n label: \", <truthy expression>, <falsy expression>\",\n apply: \", \",\n }),\n };\n } else {\n const operator = getRelationalOperator(nodeBefore, state);\n const columnName = getColumnName(nodeBefore, state);\n if (!operator) {\n const options = await suggestionProvider.getSuggestions(\n \"condition-operator\",\n {\n columnName,\n }\n );\n return { from: context.pos, options };\n } else {\n return makeSuggestions(context, \"expression\");\n }\n }\n }\n break;\n\n case \"RelationalOperator\":\n // we need the type of the expression on the other side of the operator\n return makeSuggestions(context, \"expression\");\n\n case \"String\":\n {\n // we only encounter a string as the right hand operand of a conditional expression\n const operator = getRelationalOperator(\n nodeBefore,\n state\n ) as ColumnExpressionOperator;\n const columnName = getColumnName(nodeBefore, state);\n // are we inside the string or immediately after it\n const { from, to } = nodeBefore;\n if (to - from === 2 && context.pos === from + 1) {\n // We are in an empty string, i.e between two quotes\n if (columnName && operator) {\n return makeSuggestions(context, \"columnValue\", {\n columnName,\n operator,\n startsWith: word.text,\n });\n }\n } else if (to - from > 2 && context.pos === to) {\n // NOte we couls also offer AND/OR to extend the condition\n return makeSuggestions(context, \"expression\", {\n prefix: \", \",\n });\n }\n }\n break;\n\n case \"ArithmeticExpression\":\n {\n const lastChild = getLastChild(nodeBefore, context);\n if (lastChild?.name === \"Column\") {\n return makeSuggestions(context, \"expression\");\n } else if (isOperator(lastChild)) {\n const operator = lastChild.name as ColumnExpressionOperator;\n return makeSuggestions(context, \"column\", { operator });\n }\n }\n\n break;\n case \"OpenBrace\":\n {\n // Might be a function expression, might be parenthesized\n const functionName = getFunctionName(nodeBefore, state);\n // If not function, what came before - if it's an operator\n // we restrict to numerics\n return makeSuggestions(context, \"expression\", { functionName });\n }\n break;\n case \"ArgList\": {\n const functionName = getFunctionName(nodeBefore, state);\n const lastArgument = getLastChild(nodeBefore, context);\n\n const prefix =\n lastArgument?.name === \"OpenBrace\" || lastArgument?.name === \"Comma\"\n ? undefined\n : \",\";\n let options = await suggestionProvider.getSuggestions(\"expression\", {\n functionName,\n });\n options = prefix ? applyPrefix(options, \", \") : options;\n\n // TODO per function check for number of arguments expected\n if (\n lastArgument?.name !== \"OpenBrace\" &&\n lastArgument?.name !== \"Comma\"\n ) {\n options = [\n {\n apply: \") \",\n boost: 10,\n label: \"Done - no more arguments\",\n } as Completion,\n ].concat(options);\n }\n return { from: context.pos, options };\n }\n case \"Equal\":\n if (text.trim() === \"=\") {\n return makeSuggestions(context, \"expression\");\n }\n break;\n case \"ParenthesizedExpression\":\n case \"ColumnDefinitionExpression\":\n if (context.pos === 0) {\n return makeSuggestions(context, \"expression\");\n } else {\n const lastChild = getLastChild(nodeBefore, context);\n if (lastChild?.name === \"Column\") {\n if (maybeComplete) {\n // We come in here is the columns IS complete, too (ie has space after)\n const options: Completion[] = [\n completionDone(onSubmit.current),\n ];\n const columnName = getValue(lastChild, state);\n const columnOptions: Completion[] =\n await suggestionProvider.getSuggestions(\"operator\", {\n columnName,\n });\n\n return {\n from: context.pos,\n options: options.concat(columnOptions),\n };\n }\n } else if (lastChild?.name === \"CallExpression\") {\n if (maybeComplete) {\n return {\n from: context.pos,\n options: [completionDone(onSubmit.current)],\n };\n }\n } else if (lastChild?.name === \"ArithmeticExpression\") {\n if (maybeComplete) {\n let options: Completion[] = [completionDone(onSubmit.current)];\n\n const lastExpressionChild = getLastChild(lastChild, context);\n if (lastExpressionChild?.name === \"Column\") {\n const columnName = getValue(lastExpressionChild, state);\n // TODO need to exclude columns already included in expression\n\n const suggestions = await suggestionProvider.getSuggestions(\n \"operator\",\n { columnName }\n );\n options = options.concat(suggestions);\n }\n\n return {\n from: context.pos,\n options,\n };\n }\n } else if (lastChild?.name === \"ConditionalExpression\") {\n return handleConditionalExpression(\n lastChild,\n context,\n suggestionProvider,\n maybeComplete,\n onSubmit.current\n );\n }\n break;\n }\n case \"Column\":\n {\n const isPartialMatch = await suggestionProvider.isPartialMatch(\n \"expression\",\n undefined,\n word.text\n );\n\n if (isPartialMatch) {\n return makeSuggestions(context, \"expression\", {\n startsWith: word.text,\n });\n }\n }\n break;\n case \"Comma\":\n {\n const parentNode = getNamedParentNode(nodeBefore);\n if (parentNode?.name === \"ConditionalExpression\") {\n return makeSuggestions(context, \"expression\");\n }\n }\n break;\n\n case \"CloseBrace\":\n {\n const parentNode = getNamedParentNode(nodeBefore);\n if (parentNode?.name === \"ConditionalExpression\") {\n return handleConditionalExpression(\n parentNode,\n context,\n suggestionProvider,\n maybeComplete,\n onSubmit.current\n );\n } else if (parentNode?.name === \"ArgList\") {\n if (maybeComplete) {\n return promptToSave(context, onSubmit.current);\n }\n }\n }\n break;\n\n default: {\n if (nodeBefore?.prevSibling?.name === \"FilterClause\") {\n console.log(\"looks like we ight be a or|and operator\");\n }\n }\n }\n },\n [makeSuggestions, onSubmit, suggestionProvider]\n ) as CompletionSource;\n};\n", "import {\n AnnotationType,\n Completion,\n EditorView,\n getRelationalOperators,\n numericOperators,\n stringOperators,\n toSuggestions,\n} from \"@vuu-ui/vuu-codemirror\";\nimport {\n getTypeaheadParams,\n useTypeaheadSuggestions,\n} from \"@vuu-ui/vuu-data-react\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { VuuTable } from \"@vuu-ui/vuu-protocol-types\";\nimport {\n ColumnExpressionOperator,\n ColumnExpressionSuggestionType,\n IExpressionSuggestionProvider,\n} from \"@vuu-ui/vuu-table-extras\";\nimport { isNumericColumn, isTextColumn } from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useRef } from \"react\";\nimport {\n ColumnFunctionDescriptor,\n columnFunctionDescriptors,\n} from \"./column-function-descriptors\";\nimport { functionDocInfo } from \"./functionDocInfo\";\n\nconst NO_OPERATORS = [] as Completion[];\n\nconst withApplySpace = (suggestions: Completion[]): Completion[] =>\n suggestions.map((suggestion) => ({\n ...suggestion,\n apply: (suggestion.apply ?? suggestion.label) + \" \",\n }));\n\ntype ColumnOptions = {\n functionName?: string;\n operator?: ColumnExpressionOperator;\n prefix?: string;\n};\n\nconst getValidColumns = (\n columns: ColumnDescriptor[],\n { functionName, operator }: ColumnOptions\n) => {\n if (operator) {\n return columns.filter(isNumericColumn);\n } else if (functionName) {\n const fn = columnFunctionDescriptors.find((f) => f.name === functionName);\n if (fn) {\n switch (fn.accepts) {\n case \"string\":\n return columns.filter(isTextColumn);\n case \"number\":\n return columns.filter(isNumericColumn);\n default:\n return columns;\n }\n }\n }\n return columns;\n};\n\nconst getColumns = (columns: ColumnDescriptor[], options: ColumnOptions) => {\n const validColumns = getValidColumns(columns, options);\n return validColumns.map((column) => {\n const label = column.label ?? column.name;\n return {\n apply: options.prefix ? `${options.prefix}${column.name}` : column.name,\n label,\n boost: 5,\n type: \"column\",\n expressionType: column.serverDataType,\n };\n });\n};\n\n// prettier-ignore\nconst arithmeticOperators = [\n { apply: \"* \", boost: 2, label: \"*\", type: \"operator\" },\n { apply: \"/ \", boost: 2, label: \"/\", type: \"operator\" },\n { apply: \"+ \", boost: 2, label: \"+\", type: \"operator\" },\n { apply: \"- \", boost: 2, label: \"-\", type: \"operator\" },\n];\n\nconst getOperators = (column?: ColumnDescriptor) => {\n if (column === undefined || isNumericColumn(column)) {\n return arithmeticOperators;\n } else {\n return NO_OPERATORS;\n }\n};\n\nconst getConditionOperators = (column: ColumnDescriptor) => {\n switch (column.serverDataType) {\n case \"string\":\n case \"char\":\n return withApplySpace(stringOperators /*, startsWith*/);\n case \"int\":\n case \"long\":\n case \"double\":\n return withApplySpace(numericOperators);\n }\n};\n\nconst toFunctionCompletion = (\n functionDescriptor: ColumnFunctionDescriptor\n) => ({\n apply: `${functionDescriptor.name}( `,\n boost: 2,\n expressionType: functionDescriptor.type,\n info: () => functionDocInfo(functionDescriptor),\n label: functionDescriptor.name,\n type: \"function\",\n});\n\nconst getAcceptedTypes = (fn?: ColumnFunctionDescriptor) => {\n if (fn) {\n if (typeof fn.accepts === \"string\") {\n return fn.accepts;\n } else if (Array.isArray(fn.accepts)) {\n if (fn.accepts.every((s) => s === \"string\")) {\n return \"string\";\n } else {\n return \"any\";\n }\n }\n }\n return \"any\";\n};\n\nconst functions: Completion[] =\n columnFunctionDescriptors.map(toFunctionCompletion);\n\nconst getFunctions = ({ functionName }: ColumnOptions) => {\n if (functionName) {\n const fn = columnFunctionDescriptors.find((f) => f.name === functionName);\n const acceptedTypes = getAcceptedTypes(fn);\n if (fn) {\n switch (acceptedTypes) {\n case \"string\":\n return columnFunctionDescriptors\n .filter((f) => f.type === \"string\" || f.type === \"variable\")\n .map(toFunctionCompletion);\n case \"number\":\n return columnFunctionDescriptors\n .filter((f) => f.type === \"number\" || f.type === \"variable\")\n .map(toFunctionCompletion);\n default:\n }\n }\n }\n return functions;\n};\n\nexport interface SuggestionProviderHookProps {\n columns: ColumnDescriptor[];\n table: VuuTable;\n}\n\nconst NONE = {};\n\nexport const useColumnExpressionSuggestionProvider = ({\n columns,\n table,\n}: SuggestionProviderHookProps): IExpressionSuggestionProvider => {\n const findColumn = useCallback(\n (name?: string) =>\n name ? columns.find((col) => col.name === name) : undefined,\n [columns]\n );\n\n const latestSuggestionsRef = useRef<Completion[]>();\n const getTypeaheadSuggestions = useTypeaheadSuggestions();\n\n const getSuggestions: IExpressionSuggestionProvider[\"getSuggestions\"] =\n useCallback(\n async (suggestionType, options = NONE): Promise<Completion[]> => {\n const { columnName, functionName, operator, prefix } = options;\n\n switch (suggestionType) {\n case \"expression\": {\n const suggestions = await withApplySpace(\n getColumns(columns, { functionName, prefix })\n ).concat(getFunctions(options));\n return (latestSuggestionsRef.current = suggestions);\n }\n case \"column\": {\n const suggestions = await getColumns(columns, options);\n return (latestSuggestionsRef.current = withApplySpace(suggestions));\n }\n case \"operator\": {\n const suggestions = await getOperators(findColumn(columnName));\n return (latestSuggestionsRef.current = withApplySpace(suggestions));\n }\n case \"relational-operator\": {\n const suggestions = await getRelationalOperators(\n findColumn(columnName)\n );\n return (latestSuggestionsRef.current = withApplySpace(suggestions));\n }\n case \"condition-operator\":\n {\n const column = findColumn(columnName);\n if (column) {\n const suggestions = await getConditionOperators(column);\n if (suggestions) {\n return (latestSuggestionsRef.current =\n withApplySpace(suggestions));\n }\n }\n }\n break;\n case \"columnValue\":\n if (columnName && operator) {\n // const column = findColumn(columnName);\n const params = getTypeaheadParams(\n table,\n columnName /*, startsWith*/\n );\n const suggestions = await getTypeaheadSuggestions(params);\n latestSuggestionsRef.current = toSuggestions(suggestions, {\n suffix: \"\",\n });\n\n latestSuggestionsRef.current.forEach((suggestion) => {\n suggestion.apply = (\n view: EditorView,\n completion: Completion,\n from: number\n ) => {\n const annotation = new AnnotationType<Completion>();\n const cursorPos = from + completion.label.length + 1;\n view.dispatch({\n changes: { from, insert: completion.label },\n selection: { anchor: cursorPos, head: cursorPos },\n annotations: annotation.of(completion),\n });\n };\n });\n return latestSuggestionsRef.current;\n }\n break;\n }\n\n return [];\n },\n [columns, findColumn, getTypeaheadSuggestions, table]\n );\n\n const isPartialMatch = useCallback(\n async (\n valueType: ColumnExpressionSuggestionType,\n columnName?: string,\n pattern?: string\n ) => {\n const { current: latestSuggestions } = latestSuggestionsRef;\n let maybe = false;\n const suggestions =\n latestSuggestions || (await getSuggestions(valueType, { columnName }));\n if (pattern && suggestions) {\n for (const option of suggestions) {\n if (option.label === pattern) {\n return false;\n } else if (option.label.startsWith(pattern)) {\n maybe = true;\n }\n }\n }\n return maybe;\n },\n [getSuggestions]\n );\n\n return {\n getSuggestions,\n isPartialMatch,\n };\n};\n", "export type ColumnFunctionDescriptor = {\n accepts:\n | \"string\"\n | \"number\"\n | \"boolean\"\n | \"any\"\n | Array<\"string\" | \"number\" | \"boolean\">;\n description: string;\n example: {\n expression: string;\n result: string;\n };\n name: string;\n params: {\n count?: number;\n description: string;\n };\n type: \"string\" | \"number\" | \"boolean\" | \"variable\";\n};\n\nexport const columnFunctionDescriptors: ColumnFunctionDescriptor[] = [\n /**\n * and\n */\n {\n accepts: [\"boolean\"],\n description:\n \"Applies boolean and operator across supplied parameters to returns a single boolean result\",\n example: {\n expression: 'and(ccy=\"EUR\",quantity=0)',\n result: \"true | false\",\n },\n name: \"and\",\n params: {\n description: \"( boolean, [ boolean* ] )\",\n },\n type: \"boolean\",\n },\n\n /**\n * concatenate()\n */\n {\n accepts: \"string\",\n description:\n \"Returns multiple string values as a single joined string. Arguments may be string literal values, string columns or other string expressions. Non string arguments may also be included, these will be converted to strings.\",\n example: {\n expression: 'concatenate(\"example\", \"-test\")',\n result: '\"example-test\"',\n },\n name: \"concatenate\",\n params: {\n description: \"( string, string, [ string* ] )\",\n },\n type: \"string\",\n },\n /**\n * contains()\n */\n {\n accepts: [\"string\", \"string\"],\n description:\n \"Tests a string value to determine whether it contains a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> contains one or more occurrences of <target subscring>\",\n example: {\n expression: 'contains(\"Royal Bank of Scotland\", \"bank\")',\n result: \"true\",\n },\n name: \"contains\",\n params: {\n description: \"( string )\",\n },\n type: \"boolean\",\n },\n\n /**\n * left()\n */\n {\n accepts: [\"string\", \"number\"],\n description:\n \"Returns the leftmost <number> characters from <string>. First argument may be a string literal, string column or other string expression.\",\n example: {\n expression: 'left(\"USD Benchmark Report\", 3)',\n result: '\"USD\"',\n },\n name: \"left\",\n params: {\n count: 2,\n description: \"( string, number )\",\n },\n type: \"string\",\n },\n /**\n * len()\n */\n {\n accepts: \"string\",\n description:\n \"Returns the number of characters in <string>. Argument may be a string literal, string column or other string expression.\",\n example: {\n expression: 'len(\"example\")',\n result: \"7\",\n },\n name: \"len\",\n params: {\n description: \"(string)\",\n },\n type: \"number\",\n },\n /**\n * lower()\n */\n {\n accepts: \"string\",\n description:\n \"Convert a string value to lowercase. Argument may be a string column or other string expression.\",\n example: {\n expression: 'lower(\"examPLE\")',\n result: '\"example\"',\n },\n name: \"lower\",\n params: {\n description: \"( string )\",\n },\n type: \"string\",\n },\n /**\n * or\n */\n {\n accepts: [\"boolean\"],\n description:\n \"Applies boolean or operator across supplied parameters to returns a single boolean result\",\n example: {\n expression: 'or(status=\"cancelled\",quantity=0)',\n result: \"true | false\",\n },\n name: \"or\",\n params: {\n description: \"( boolean, [ boolean* ] )\",\n },\n type: \"boolean\",\n },\n\n /**\n * upper()\n */\n {\n accepts: \"string\",\n description:\n \"Convert a string value to uppercase. Argument may be a string column or other string expression.\",\n example: {\n expression: 'upper(\"example\")',\n result: '\"EXAMPLE\"',\n },\n name: \"upper\",\n params: {\n description: \"( string )\",\n },\n type: \"string\",\n },\n /**\n * right()\n */\n {\n accepts: [\"string\", \"number\"],\n description:\n \"Returns the rightmost <number> characters from <string>. First argument may be a string literal, string column or other string expression.\",\n example: {\n expression: \"blah\",\n result: \"blah\",\n },\n name: \"right\",\n params: {\n description: \"( string )\",\n },\n type: \"string\",\n },\n /**\n * replace()\n */\n {\n accepts: [\"string\", \"string\", \"string\"],\n description:\n \"Replace characters within a string. Accepts three arguments: source text, text to replace and replacement text. Returns a copy of <source text> with any occurrences of <text to replace> replaced by <replacement text>\",\n example: {\n expression: \"blah\",\n result: \"blah\",\n },\n name: \"replace\",\n params: {\n description: \"( string )\",\n },\n type: \"string\",\n },\n /**\n * text()\n */\n {\n accepts: \"number\",\n description: \"Converts a number to a string.\",\n example: {\n expression: \"blah\",\n result: \"blah\",\n },\n name: \"text\",\n params: {\n description: \"( string )\",\n },\n type: \"string\",\n },\n /**\n * starts()\n */\n {\n accepts: \"string\",\n description:\n \"Tests a string value to determine whether it starts with a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> starts with <target subscring>.\",\n example: {\n expression: \"blah\",\n result: \"blah\",\n },\n name: \"starts\",\n params: {\n description: \"( string )\",\n },\n type: \"boolean\",\n },\n /**\n * starts()\n */\n {\n accepts: \"string\",\n description:\n \"Tests a string value to determine whether it ends with a given substring. Accepts two arguments: source text and target substring. Returns true if <source text> ends with <target subscring>.\",\n example: {\n expression: \"blah\",\n result: \"blah\",\n },\n name: \"ends\",\n params: {\n description: \"( string )\",\n },\n type: \"boolean\",\n },\n {\n accepts: \"number\",\n description: \"blah\",\n example: {\n expression: \"blah\",\n result: \"blah\",\n },\n name: \"min\",\n params: {\n description: \"( string )\",\n },\n type: \"number\",\n },\n {\n accepts: \"number\",\n description: \"blah\",\n example: {\n expression: \"blah\",\n result: \"blah\",\n },\n name: \"max\",\n params: {\n description: \"( string )\",\n },\n type: \"number\",\n },\n {\n accepts: \"number\",\n description: \"blah\",\n example: {\n expression: \"blah\",\n result: \"blah\",\n },\n name: \"sum\",\n params: {\n description: \"( string )\",\n },\n type: \"number\",\n },\n {\n accepts: \"number\",\n description: \"blah\",\n example: {\n expression: \"blah\",\n result: \"blah\",\n },\n name: \"round\",\n params: {\n description: \"( string )\",\n },\n type: \"number\",\n },\n {\n accepts: \"any\",\n description: \"blah\",\n example: {\n expression: \"blah\",\n result: \"blah\",\n },\n name: \"or\",\n params: {\n description: \"( string )\",\n },\n type: \"boolean\",\n },\n {\n accepts: \"any\",\n description: \"blah\",\n example: {\n expression: \"blah\",\n result: \"blah\",\n },\n name: \"and\",\n params: {\n description: \"( string )\",\n },\n type: \"boolean\",\n },\n {\n accepts: \"any\",\n description:\n \"Return one of two possible result values, depending on the evaluation of a filter expression. If <filterExpression> resolves to true, result is <expression1>, otherwise <expression2>. \",\n example: {\n expression: \"blah\",\n result: \"blah\",\n },\n name: \"if\",\n params: {\n description: \"( filterExpression, expression1, expression 2)\",\n },\n type: \"variable\",\n },\n];\n", "import { createEl } from \"@vuu-ui/vuu-utils\";\nimport { ColumnFunctionDescriptor } from \"./column-function-descriptors\";\n\nexport const functionDocInfo = ({\n name,\n description,\n example,\n params,\n type,\n}: ColumnFunctionDescriptor) => {\n const rootElement = createEl(\"div\", \"vuuFunctionDoc\");\n const headingElement = createEl(\"div\", \"function-heading\");\n\n const nameElement = createEl(\"span\", \"function-name\", name);\n const paramElement = createEl(\"span\", \"param-list\", params.description);\n const typeElement = createEl(\"span\", \"function-type\", type);\n\n headingElement.appendChild(nameElement);\n headingElement.appendChild(paramElement);\n headingElement.appendChild(typeElement);\n\n const child2 = createEl(\"p\", undefined, description);\n\n rootElement.appendChild(headingElement);\n rootElement.appendChild(child2);\n\n if (example) {\n const exampleElement = createEl(\"div\", \"example-container\");\n const expressionElement = createEl(\n \"div\",\n \"example-expression\",\n example.expression\n );\n const resultElement = createEl(\"div\", \"example-result\", example.result);\n\n exampleElement.appendChild(expressionElement);\n\n rootElement.appendChild(exampleElement);\n rootElement.appendChild(resultElement);\n }\n\n return rootElement;\n};\n", "import { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport {\n getCalculatedColumnDetails,\n setCalculatedColumnExpression,\n setCalculatedColumnName,\n setCalculatedColumnType,\n} from \"@vuu-ui/vuu-utils\";\nimport { FormEventHandler, useCallback, useRef, useState } from \"react\";\nimport { ColumnExpressionPanelProps } from \"./ColumnExpressionPanel\";\n\nexport type ColumnExpressionHookProps = Pick<\n ColumnExpressionPanelProps,\n \"column\" | \"onChangeName\"\n>;\n\nconst applyDefaults = (column: ColumnDescriptor) => {\n const [name, expression, type] = getCalculatedColumnDetails(column);\n if (type === \"\") {\n return {\n ...column,\n name: `${name}:string:${expression}`,\n };\n } else {\n return column;\n }\n};\n\nexport const useColumnExpression = ({\n column: columnProp,\n onChangeName: onChangeNameProp,\n}: ColumnExpressionHookProps) => {\n const [column, _setColumn] = useState<ColumnDescriptor>(\n applyDefaults(columnProp)\n );\n const columnRef = useRef<ColumnDescriptor>(columnProp);\n const setColumn = useCallback((column: ColumnDescriptor) => {\n columnRef.current = column;\n _setColumn(column);\n }, []);\n\n // We need to track column name in a ref because ColunExpressionInput\n // is not a pure React component, it hosts a CodeMirror editor. We\n // do not want to cause it to render mid-edit. Therefore it uses memo\n // and only renders on initial load. onChangeExpression must be stable.\n // const columnNameRef = useRef<string>(column.name);\n // const expressionRef = useRef(getCalculatedColumnDetails(column)[1]);\n\n const onChangeName = useCallback<FormEventHandler>(\n (evt) => {\n const { value } = evt.target as HTMLInputElement;\n const newColumn = setCalculatedColumnName(column, value);\n // columnNameRef.current = newColumn.name;\n setColumn(newColumn);\n onChangeNameProp?.(newColumn.name);\n },\n [column, onChangeNameProp, setColumn]\n );\n\n const onChangeExpression = useCallback(\n (value: string) => {\n // we do not set state when this changes as the codemirror editor\n // manages state of the expression for us until complete\n const expression = value.trim();\n // expressionRef.current = expression;\n // const [name, , type] = column.name.split(\":\");\n // columnNameRef.current = `${name}:${expression}:${type}`;\n\n const { current: column } = columnRef;\n const newColumn = setCalculatedColumnExpression(column, expression);\n setColumn(newColumn);\n\n onChangeNameProp?.(newColumn.name);\n\n // console.log(`calculatedColumnName ${columnNameRef.current}`);\n },\n [onChangeNameProp, setColumn]\n );\n\n const onChangeType = useCallback(\n (evt, value: string | null) => {\n if (typeof value === \"string\") {\n const newColumn = setCalculatedColumnType(column, value);\n setColumn(newColumn);\n onChangeNameProp?.(newColumn.name);\n }\n },\n [column, onChangeNameProp, setColumn]\n );\n\n return {\n column,\n onChangeExpression,\n onChangeName,\n onChangeType,\n };\n};\n", "import {\n ColumnDescriptor,\n ColumnDescriptorCustomRenderer,\n ColumnTypeFormatting,\n ColumnTypeRendering,\n} from \"@vuu-ui/vuu-table-types\";\nimport { Dropdown, SingleSelectionHandler } from \"@vuu-ui/vuu-ui-controls\";\nimport {\n CellRendererDescriptor,\n ConfigurationEditorProps,\n getCellRendererOptions,\n getConfigurationEditor,\n isColumnTypeRenderer,\n isTypeDescriptor,\n} from \"@vuu-ui/vuu-utils\";\nimport { FormField, FormFieldLabel } from \"@salt-ds/core\";\nimport cx from \"classnames\";\nimport { HTMLAttributes, useCallback, useMemo } from \"react\";\nimport { NumericFormattingSettings } from \"./NumericFormattingSettings\";\n\nconst classBase = \"vuuColumnFormattingPanel\";\n\nexport interface ColumnFormattingPanelProps\n extends HTMLAttributes<HTMLDivElement> {\n availableRenderers: CellRendererDescriptor[];\n column: ColumnDescriptor;\n onChangeFormatting: (formatting: ColumnTypeFormatting) => void;\n onChangeRendering: (renderProps: ColumnTypeRendering) => void;\n}\n\nconst itemToString = (item: CellRendererDescriptor) => item.label ?? item.name;\n\nexport const ColumnFormattingPanel = ({\n availableRenderers,\n className,\n column,\n onChangeFormatting,\n onChangeRendering,\n ...htmlAttributes\n}: ColumnFormattingPanelProps) => {\n const contentForType = useMemo(() => {\n switch (column.serverDataType) {\n case \"double\":\n case \"int\":\n case \"long\":\n return (\n <NumericFormattingSettings\n column={column}\n onChange={onChangeFormatting}\n />\n );\n default:\n return null;\n }\n }, [column, onChangeFormatting]);\n\n const ConfigEditor = useMemo<\n React.FC<ConfigurationEditorProps> | undefined\n >(() => {\n const { type } = column;\n if (isTypeDescriptor(type) && isColumnTypeRenderer(type.renderer)) {\n const cellRendererOptions = getCellRendererOptions(type.renderer.name);\n return getConfigurationEditor(cellRendererOptions?.configEditor);\n }\n return undefined;\n }, [column]);\n\n const selectedCellRenderer = useMemo(() => {\n const { type } = column;\n const [defaultRenderer] = availableRenderers;\n const rendererName =\n isTypeDescriptor(type) && isColumnTypeRenderer(type.renderer)\n ? type.renderer.name\n : undefined;\n const configuredRenderer = availableRenderers.find(\n (renderer) => renderer.name === rendererName\n );\n return configuredRenderer ?? defaultRenderer;\n }, [availableRenderers, column]);\n\n const handleChangeRenderer = useCallback<\n SingleSelectionHandler<CellRendererDescriptor>\n >(\n (evt, cellRendererDescriptor) => {\n const renderProps: ColumnTypeRendering = {\n name: cellRendererDescriptor.name,\n };\n onChangeRendering?.(renderProps);\n },\n [onChangeRendering]\n );\n\n const { serverDataType = \"string\" } = column;\n\n return (\n <div {...htmlAttributes} className={`vuuColumnSettingsPanel-header`}>\n <div>Formatting</div>\n\n <FormField>\n <FormFieldLabel>\n {`Renderer (data type ${column.serverDataType})`}\n </FormFieldLabel>\n <Dropdown<CellRendererDescriptor>\n className={cx(`${classBase}-renderer`)}\n itemToString={itemToString}\n onSelectionChange={handleChangeRenderer}\n selected={selectedCellRenderer}\n source={availableRenderers}\n width=\"100%\"\n />\n </FormField>\n <div\n className={cx(classBase, className, `${classBase}-${serverDataType}`)}\n >\n {contentForType}\n {ConfigEditor ? (\n <ConfigEditor\n column={column as ColumnDescriptorCustomRenderer}\n onChangeRendering={onChangeRendering}\n />\n ) : null}\n </div>\n </div>\n );\n};\n", "import { FormField, FormFieldLabel, Input } from \"@salt-ds/core\";\nimport { Switch } from \"@salt-ds/lab\";\nimport {\n ColumnDescriptor,\n ColumnTypeFormatting,\n} from \"@vuu-ui/vuu-table-types\";\nimport { getTypeFormattingFromColumn } from \"@vuu-ui/vuu-utils\";\nimport {\n ChangeEvent,\n KeyboardEvent,\n SyntheticEvent,\n useCallback,\n useState,\n} from \"react\";\n\nconst classBase = \"vuuFormattingSettings\";\n\nexport interface NumericFormattingSettingsProps {\n column: ColumnDescriptor;\n onChange: (formatting: ColumnTypeFormatting) => void;\n}\n\nexport const NumericFormattingSettings = ({\n column,\n onChange,\n}: NumericFormattingSettingsProps) => {\n const [formattingSettings, setFormattingSettings] =\n useState<ColumnTypeFormatting>(getTypeFormattingFromColumn(column));\n\n const handleInputKeyDown = useCallback(\n (evt: KeyboardEvent<HTMLInputElement>) => {\n if (evt.key === \"Enter\" || evt.key === \"Tab\") {\n onChange(formattingSettings);\n }\n },\n [formattingSettings, onChange]\n );\n\n const handleChangeDecimals = useCallback(\n (evt: SyntheticEvent) => {\n const { value } = evt.target as HTMLFormElement;\n const numericValue: number | undefined =\n value === \"\"\n ? undefined\n : isNaN(parseInt(value))\n ? undefined\n : parseInt(value);\n\n const newFormattingSettings = {\n ...formattingSettings,\n decimals: numericValue,\n };\n setFormattingSettings(newFormattingSettings);\n },\n [formattingSettings]\n );\n\n const handleChangeAlignDecimals = useCallback(\n (evt: ChangeEvent<HTMLInputElement>) => {\n const { checked } = evt.target as HTMLInputElement;\n const newFormattingSettings = {\n ...formattingSettings,\n alignOnDecimals: checked,\n };\n setFormattingSettings(newFormattingSettings);\n onChange(newFormattingSettings);\n },\n [formattingSettings, onChange]\n );\n\n const handleChangeZeroPad = useCallback(\n (evt: ChangeEvent<HTMLInputElement>) => {\n const { checked } = evt.target as HTMLInputElement;\n const newFormattingSettings = {\n ...formattingSettings,\n zeroPad: checked,\n };\n setFormattingSettings(newFormattingSettings);\n onChange(newFormattingSettings);\n },\n [formattingSettings, onChange]\n );\n\n return (\n <div className={classBase}>\n <FormField data-field=\"decimals\">\n <FormFieldLabel>Number of decimals</FormFieldLabel>\n <Input\n className=\"vuuInput\"\n onChange={handleChangeDecimals}\n onKeyDown={handleInputKeyDown}\n value={formattingSettings.decimals ?? \"\"}\n />\n </FormField>\n\n <FormField labelPlacement=\"left\">\n <FormFieldLabel>Align on decimals</FormFieldLabel>\n <Switch\n checked={formattingSettings.alignOnDecimals ?? false}\n onChange={handleChangeAlignDecimals}\n value=\"align-decimals\"\n />\n </FormField>\n <FormField labelPlacement=\"left\">\n <FormFieldLabel>Zero pad decimals</FormFieldLabel>\n <Switch\n checked={formattingSettings.zeroPad ?? false}\n onChange={handleChangeZeroPad}\n value=\"zero-pad\"\n />\n </FormField>\n </div>\n );\n};\n", "import { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport cx from \"classnames\";\n\nimport {\n getCalculatedColumnDetails,\n isCalculatedColumn,\n} from \"@vuu-ui/vuu-utils\";\n\nimport \"./ColumnNameLabel.css\";\nimport { MouseEventHandler } from \"react\";\n\nconst classBase = \"vuuColumnNameLabel\";\n\nexport interface ColumnNameLabelProps {\n column: ColumnDescriptor;\n onClick: MouseEventHandler;\n}\n\nexport const ColumnNameLabel = ({ column, onClick }: ColumnNameLabelProps) => {\n if (isCalculatedColumn(column.name)) {\n const [name, type, expression] = getCalculatedColumnDetails(column);\n const displayName = name || \"name\";\n const displayExpression = \"=expression\";\n\n const nameClass =\n displayName === \"name\" ? `${classBase}-placeholder` : undefined;\n const expressionClass =\n expression === \"\" ? `${classBase}-placeholder` : undefined;\n return (\n <div\n className={cx(classBase, `${classBase}-calculated`)}\n onClick={onClick}\n >\n <span className={nameClass}>{displayName}</span>\n <span>:</span>\n <span>{type || \"string\"}</span>\n <span>:</span>\n <span className={expressionClass}>{displayExpression}</span>\n <span className={`${classBase}-edit`} data-icon=\"edit\" />\n </div>\n );\n } else {\n return <div className={classBase}>{column.name}</div>;\n }\n};\n", "import {\n ColumnDescriptor,\n TableConfig,\n ColumnTypeFormatting,\n} from \"@vuu-ui/vuu-table-types\";\n\nimport {\n CellRendererDescriptor,\n ColumnRenderPropsChangeHandler,\n getRegisteredCellRenderers,\n isValidColumnAlignment,\n isValidPinLocation,\n setCalculatedColumnName,\n updateColumnRenderProps,\n updateColumnType,\n} from \"@vuu-ui/vuu-utils\";\nimport {\n FormEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { ColumnSettingsProps } from \"./ColumnSettingsPanel\";\n\nconst integerCellRenderers: CellRendererDescriptor[] = [\n {\n description: \"Default formatter for columns with data type integer\",\n label: \"Default Renderer (int, long)\",\n name: \"default-int\",\n },\n ...getRegisteredCellRenderers(\"int\"),\n];\nconst doubleCellRenderers: CellRendererDescriptor[] = [\n {\n description: \"Default formatter for columns with data type double\",\n label: \"Default Renderer (double)\",\n name: \"default-double\",\n },\n ...getRegisteredCellRenderers(\"double\"),\n];\n\nconst stringCellRenderers: CellRendererDescriptor[] = [\n {\n description: \"Default formatter for columns with data type string\",\n label: \"Default Renderer (string)\",\n name: \"default-string\",\n },\n ...getRegisteredCellRenderers(\"string\"),\n];\n\nconst getAvailableCellRenderers = (\n column: ColumnDescriptor\n): CellRendererDescriptor[] => {\n switch (column.serverDataType) {\n case \"char\":\n case \"string\":\n return stringCellRenderers;\n case \"int\":\n case \"long\":\n return integerCellRenderers;\n case \"double\":\n return doubleCellRenderers;\n default:\n return stringCellRenderers;\n }\n};\n\nconst getFieldName = (input: HTMLInputElement): string => {\n const saltFormField = input.closest(\".saltFormField\") as HTMLElement;\n if (saltFormField && saltFormField.dataset.field) {\n const {\n dataset: { field },\n } = saltFormField;\n return field;\n } else {\n throw Error(\"named form field not found\");\n }\n};\n\nconst getColumn = (columns: ColumnDescriptor[], column: ColumnDescriptor) => {\n if (column.name === \"::\") {\n // this is a new calculated column\n return column;\n } else {\n const col = columns.find((col) => col.name === column.name);\n if (col) {\n return col;\n }\n throw Error(`columns does not contain column ${name}`);\n }\n};\n\nconst replaceColumn = (\n tableConfig: TableConfig,\n column: ColumnDescriptor\n): TableConfig => ({\n ...tableConfig,\n columns: tableConfig.columns.map((col) =>\n col.name === column.name ? column : col\n ),\n});\n\nexport const useColumnSettings = ({\n column: columnProp,\n onCancelCreateColumn,\n onConfigChange,\n onCreateCalculatedColumn,\n tableConfig,\n}: Omit<ColumnSettingsProps, \"vuuTable\">) => {\n const [column, setColumn] = useState<ColumnDescriptor>(\n getColumn(tableConfig.columns, columnProp)\n );\n const columnRef = useRef<ColumnDescriptor>(column);\n const [inEditMode, setEditMode] = useState(column.name === \"::\");\n\n const handleEditCalculatedcolumn = useCallback(() => {\n columnRef.current = column;\n setEditMode(true);\n }, [column]);\n\n useEffect(() => {\n setColumn(columnProp);\n setEditMode(columnProp.name === \"::\");\n }, [columnProp]);\n\n const availableRenderers = useMemo(() => {\n return getAvailableCellRenderers(column);\n }, [column]);\n\n const handleInputCommit = useCallback(() => {\n onConfigChange(replaceColumn(tableConfig, column));\n }, [column, onConfigChange, tableConfig]);\n\n const handleChange = useCallback<FormEventHandler>(\n (evt) => {\n const input = evt.target as HTMLInputElement;\n const fieldName = getFieldName(input);\n const { value } = input;\n switch (fieldName) {\n case \"column-label\":\n setColumn((state) => ({ ...state, label: value }));\n break;\n case \"column-name\":\n setColumn((state) => setCalculatedColumnName(state, value));\n break;\n case \"column-width\":\n setColumn((state) => ({ ...state, width: parseInt(value) }));\n break;\n case \"column-alignment\":\n if (isValidColumnAlignment(value)) {\n const newColumn: ColumnDescriptor = {\n ...column,\n align: value || undefined,\n };\n setColumn(newColumn);\n onConfigChange(replaceColumn(tableConfig, newColumn));\n }\n break;\n case \"column-pin\":\n if (isValidPinLocation(value)) {\n const newColumn: ColumnDescriptor = {\n ...column,\n pin: value || undefined,\n };\n setColumn(newColumn);\n onConfigChange(replaceColumn(tableConfig, newColumn));\n\n break;\n }\n }\n },\n [column, onConfigChange, tableConfig]\n );\n\n const handleChangeCalculatedColumnName = useCallback((name: string) => {\n setColumn((state) => ({ ...state, name }));\n }, []);\n\n const handleChangeFormatting = useCallback(\n (formatting: ColumnTypeFormatting) => {\n const newColumn: ColumnDescriptor = updateColumnType(column, formatting);\n setColumn(newColumn);\n onConfigChange(replaceColumn(tableConfig, newColumn));\n },\n [column, onConfigChange, tableConfig]\n );\n\n const handleChangeRendering = useCallback<ColumnRenderPropsChangeHandler>(\n (renderProps) => {\n if (renderProps) {\n const newColumn: ColumnDescriptor = updateColumnRenderProps(\n column,\n renderProps\n );\n setColumn(newColumn);\n onConfigChange(replaceColumn(tableConfig, newColumn));\n }\n },\n [column, onConfigChange, tableConfig]\n );\n\n const navigateColumn = useCallback(\n ({ moveBy }: { moveBy: number }) => {\n const { columns } = tableConfig;\n const index = columns.indexOf(column) + moveBy;\n const newColumn = columns[index];\n if (newColumn) {\n setColumn(newColumn);\n }\n },\n [column, tableConfig]\n );\n const navigateNextColumn = useCallback(() => {\n navigateColumn({ moveBy: 1 });\n }, [navigateColumn]);\n\n const navigatePrevColumn = useCallback(() => {\n navigateColumn({ moveBy: -1 });\n }, [navigateColumn]);\n\n const handleSaveCalculatedColumn = useCallback(() => {\n // TODO validate expression, unique name\n onCreateCalculatedColumn(column);\n }, [column, onCreateCalculatedColumn]);\n\n const handleCancelEdit = useCallback(() => {\n if (columnProp.name === \"::\") {\n onCancelCreateColumn();\n } else {\n if (columnRef.current !== undefined && columnRef.current !== column) {\n setColumn(columnRef.current);\n }\n setEditMode(false);\n }\n }, [column, columnProp.name, onCancelCreateColumn]);\n\n return {\n availableRenderers,\n editCalculatedColumn: inEditMode,\n column,\n navigateNextColumn,\n navigatePrevColumn,\n onCancel: handleCancelEdit,\n onChange: handleChange,\n onChangeCalculatedColumnName: handleChangeCalculatedColumnName,\n onChangeFormatting: handleChangeFormatting,\n onChangeRendering: handleChangeRendering,\n onEditCalculatedColumn: handleEditCalculatedcolumn,\n onInputCommit: handleInputCommit,\n onSave: handleSaveCalculatedColumn,\n };\n};\n", "import { DataSource } from \"@vuu-ui/vuu-data\";\nimport { HTMLAttributes, useEffect, useState } from \"react\";\nimport cx from \"classnames\";\n\nimport \"./DatasourceStats.css\";\nimport { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\n\ninterface DataSourceStatsProps extends HTMLAttributes<HTMLSpanElement> {\n dataSource: DataSource;\n}\n\nconst classBase = \"vuuDatasourceStats\";\n\nconst numberFormatter = new Intl.NumberFormat();\n\nexport const DataSourceStats = ({\n className: classNameProp,\n dataSource,\n}: DataSourceStatsProps) => {\n const [range, setRange] = useState<VuuRange>(dataSource.range);\n const [size, setSize] = useState(dataSource.size);\n useEffect(() => {\n setSize(dataSource.size);\n\n dataSource.on(\"resize\", setSize);\n dataSource.on(\"range\", setRange);\n }, [dataSource]);\n\n const className = cx(classBase, classNameProp);\n const from = numberFormatter.format(range.from + 1);\n const to = numberFormatter.format(Math.min(range.to, size));\n const value = numberFormatter.format(size);\n return (\n <div className={className}>\n <span className={`${classBase}-label`}>Row count</span>\n <span className={`${classBase}-range`}>{from}</span>\n <span>-</span>\n <span className={`${classBase}-range`}>{to}</span>\n <span>of</span>\n <span className={`${classBase}-size`}>{value}</span>\n </div>\n );\n};\n", "import {\n Button,\n FormField,\n FormFieldLabel,\n Input,\n ToggleButton,\n ToggleButtonGroup,\n} from \"@salt-ds/core\";\nimport { DataSourceConfig, SchemaColumn } from \"@vuu-ui/vuu-data\";\nimport { TableConfig } from \"@vuu-ui/vuu-table-types\";\nimport { HTMLAttributes } from \"react\";\nimport { ColumnList } from \"../column-list\";\nimport { useTableSettings } from \"./useTableSettings\";\n\nimport \"./TableSettingsPanel.css\";\n\nconst classBase = \"vuuTableSettingsPanel\";\n\nexport interface TableSettingsProps extends HTMLAttributes<HTMLDivElement> {\n availableColumns: SchemaColumn[];\n onAddCalculatedColumn: () => void;\n onConfigChange: (config: TableConfig) => void;\n onDataSourceConfigChange: (dataSOurceConfig: DataSourceConfig) => void;\n onNavigateToColumn?: (columnName: string) => void;\n tableConfig: TableConfig;\n}\n\n/**\n The TableSettingsPanel assumes 'ownership' of the tableSettings.\n It updates the settings in state locally and notifies caller of\n every change via onChange callback\n */\nexport const TableSettingsPanel = ({\n availableColumns,\n onAddCalculatedColumn,\n onConfigChange,\n onDataSourceConfigChange,\n onNavigateToColumn,\n tableConfig: tableConfigProp,\n ...htmlAttributes\n}: TableSettingsProps) => {\n const {\n columnItems,\n columnLabelsValue,\n onChangeColumnLabels,\n onChangeTableAttribute,\n onColumnChange,\n onMoveListItem,\n tableConfig,\n } = useTableSettings({\n availableColumns,\n onConfigChange,\n onDataSourceConfigChange,\n tableConfig: tableConfigProp,\n });\n\n return (\n <div {...htmlAttributes} className={classBase}>\n <FormField>\n <FormFieldLabel>Column Labels</FormFieldLabel>\n <ToggleButtonGroup\n className=\"vuuToggleButtonGroup\"\n onChange={onChangeColumnLabels}\n value={columnLabelsValue}\n >\n <ToggleButton\n className=\"vuuIconToggleButton\"\n data-icon=\"text-strikethrough\"\n value={0}\n />\n <ToggleButton\n className=\"vuuIconToggleButton\"\n data-icon=\"text-Tt\"\n value={1}\n />\n <ToggleButton\n className=\"vuuIconToggleButton\"\n data-icon=\"text-T\"\n value={2}\n />\n </ToggleButtonGroup>\n </FormField>\n\n <FormField>\n <FormFieldLabel>Grid separators</FormFieldLabel>\n <div className=\"saltToggleButtonGroup vuuToggleButtonGroup saltToggleButtonGroup-horizontal vuuGridSeparators\">\n <ToggleButton\n className=\"vuuIconToggleButton\"\n data-icon=\"row-striping\"\n selected={tableConfig.zebraStripes ?? false}\n onChange={onChangeTableAttribute}\n value=\"zebraStripes\"\n />\n <ToggleButton\n className=\"vuuIconToggleButton\"\n data-icon=\"row-lines\"\n selected={tableConfig.rowSeparators ?? false}\n onChange={onChangeTableAttribute}\n value=\"rowSeparators\"\n />\n <ToggleButton\n className=\"vuuIconToggleButton\"\n data-icon=\"col-lines\"\n selected={tableConfig.columnSeparators ?? false}\n onChange={onChangeTableAttribute}\n value=\"columnSeparators\"\n />\n </div>\n </FormField>\n\n <FormField>\n <FormFieldLabel>Default Column Width</FormFieldLabel>\n <Input className=\"vuuInput\" />\n </FormField>\n\n <ColumnList\n columnItems={columnItems}\n onChange={onColumnChange}\n onMoveListItem={onMoveListItem}\n onNavigateToColumn={onNavigateToColumn}\n />\n\n <div className={`${classBase}-calculatedButtonbar`}>\n <Button data-icon=\"plus\" onClick={onAddCalculatedColumn} />\n <span className={`${classBase}-calculatedLabel`}>\n Add calculated column\n </span>\n </div>\n </div>\n );\n};\n", "import { SchemaColumn } from \"@vuu-ui/vuu-data\";\nimport { ColumnDescriptor, TableConfig } from \"@vuu-ui/vuu-table-types\";\nimport { useLayoutEffectSkipFirst } from \"@vuu-ui/vuu-layout\";\nimport { updateTableConfig } from \"@vuu-ui/vuu-table\";\nimport {\n addColumnToSubscribedColumns,\n isCalculatedColumn,\n moveItem,\n subscribedOnly,\n} from \"@vuu-ui/vuu-utils\";\nimport {\n MouseEvent,\n SyntheticEvent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { ColumnChangeHandler } from \"../column-list\";\nimport { TableSettingsProps } from \"./TableSettingsPanel\";\n\nconst sortOrderFromAvailableColumns = (\n availableColumns: SchemaColumn[],\n columns: ColumnDescriptor[]\n) => {\n const sortedColumns: ColumnDescriptor[] = [];\n for (const { name } of availableColumns) {\n const column = columns.find((col) => col.name === name);\n if (column) {\n sortedColumns.push(column);\n }\n }\n return sortedColumns;\n};\n\nexport type ColumnItem = Pick<\n ColumnDescriptor,\n \"hidden\" | \"label\" | \"name\" | \"serverDataType\"\n> & {\n isCalculated: boolean;\n subscribed: boolean;\n};\n\nconst buildColumnItems = (\n availableColumns: SchemaColumn[],\n configuredColumns: ColumnDescriptor[]\n): ColumnItem[] => {\n return availableColumns.map<ColumnItem>(({ name, serverDataType }) => {\n const configuredColumn = configuredColumns.find((col) => col.name === name);\n return {\n hidden: configuredColumn?.hidden,\n isCalculated: isCalculatedColumn(name),\n label: configuredColumn?.label,\n name,\n serverDataType,\n subscribed: configuredColumn !== undefined,\n };\n });\n};\n\ntype ColumnState = {\n availableColumns: SchemaColumn[];\n tableConfig: TableConfig;\n};\n\nexport const useTableSettings = ({\n availableColumns: availableColumnsProp,\n onConfigChange,\n onDataSourceConfigChange,\n tableConfig: tableConfigProp,\n}: Omit<TableSettingsProps, \"onAddCalculatedColumn\">) => {\n const [{ availableColumns, tableConfig }, setColumnState] =\n useState<ColumnState>({\n availableColumns: availableColumnsProp,\n tableConfig: tableConfigProp,\n });\n\n const columnItems = useMemo(\n () => buildColumnItems(availableColumns, tableConfig.columns),\n [availableColumns, tableConfig.columns]\n );\n\n const handleMoveListItem = useCallback(\n (fromIndex: number, toIndex: number) => {\n setColumnState((state) => {\n const newAvailableColumns = moveItem(\n state.availableColumns,\n fromIndex,\n toIndex\n );\n const newColumns = sortOrderFromAvailableColumns(\n newAvailableColumns,\n tableConfig.columns\n );\n\n return {\n availableColumns: newAvailableColumns,\n tableConfig: {\n ...state.tableConfig,\n columns: newColumns,\n },\n };\n });\n },\n [tableConfig.columns]\n );\n\n const handleColumnChange = useCallback<ColumnChangeHandler>(\n (name, property, value) => {\n // to be applied immediately\n const columnItem = columnItems.find((col) => col.name === name);\n if (property === \"subscribed\") {\n if (columnItem?.subscribed) {\n const subscribedColumns = tableConfig.columns\n .filter((col) => col.name !== name)\n .map((col) => col.name);\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...tableConfig,\n columns: tableConfig.columns.filter(\n subscribedOnly(subscribedColumns)\n ),\n },\n }));\n onDataSourceConfigChange({\n columns: subscribedColumns,\n });\n } else {\n const newConfig = {\n ...tableConfig,\n columns: addColumnToSubscribedColumns(\n tableConfig.columns,\n availableColumns,\n name\n ),\n };\n setColumnState((state) => ({\n ...state,\n tableConfig: newConfig,\n }));\n\n const subscribedColumns = newConfig.columns.map((col) => col.name);\n\n onDataSourceConfigChange({\n columns: subscribedColumns,\n });\n }\n } else if (columnItem?.subscribed) {\n const column = tableConfig.columns.find((col) => col.name === name);\n if (column) {\n const newConfig = updateTableConfig(tableConfig, {\n type: \"column-prop\",\n property,\n column,\n value,\n });\n setColumnState((state) => ({\n ...state,\n tableConfig: newConfig,\n }));\n }\n }\n },\n [availableColumns, columnItems, onDataSourceConfigChange, tableConfig]\n );\n\n const handleChangeColumnLabels = useCallback((evt: SyntheticEvent) => {\n const { value } = evt.target as HTMLFormElement;\n const columnFormatHeader =\n value === \"0\" ? undefined : value === \"1\" ? \"capitalize\" : \"uppercase\";\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...state.tableConfig,\n columnFormatHeader,\n },\n }));\n }, []);\n\n const handleChangeTableAttribute = useCallback(\n (evt: MouseEvent<HTMLButtonElement>) => {\n const { ariaChecked, value } = evt.target as HTMLInputElement;\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...state.tableConfig,\n [value]: ariaChecked !== \"true\",\n },\n }));\n },\n []\n );\n\n useLayoutEffectSkipFirst(() => {\n onConfigChange?.(tableConfig);\n }, [onConfigChange, tableConfig]);\n\n const columnLabelsValue =\n tableConfig.columnFormatHeader === undefined\n ? 0\n : tableConfig.columnFormatHeader === \"capitalize\"\n ? 1\n : 2;\n\n return {\n columnItems,\n columnLabelsValue,\n onChangeColumnLabels: handleChangeColumnLabels,\n onChangeTableAttribute: handleChangeTableAttribute,\n onColumnChange: handleColumnChange,\n onMoveListItem: handleMoveListItem,\n tableConfig,\n };\n};\n", "import {\n ColumnDescriptor,\n GroupColumnDescriptor,\n RuntimeColumnDescriptor,\n} from \"@vuu-ui/vuu-table-types\";\nimport cx from \"classnames\";\nimport { useCallback, useRef, useState } from \"react\";\nimport { ColumnResizer, useTableColumnResize } from \"../column-resizing\";\nimport { HeaderCellProps } from \"./HeaderCell\";\nimport { useCell } from \"../useCell\";\nimport { ColumnHeaderPill, GroupColumnPill } from \"../column-header-pill\";\nimport {\n OverflowContainer,\n useLayoutEffectSkipFirst,\n} from \"@vuu-ui/vuu-layout\";\n\nimport \"./GroupHeaderCell.css\";\n\nconst classBase = \"vuuTableGroupHeaderCell\";\n\nconst switchIfChanged = (\n columns: RuntimeColumnDescriptor[],\n newColumns: RuntimeColumnDescriptor[]\n) => {\n if (columns === newColumns) {\n return columns;\n } else {\n return newColumns;\n }\n};\n\nexport interface GroupHeaderCellNextProps\n extends Omit<HeaderCellProps, \"onDragStart\" | \"onDrag\" | \"onDragEnd\"> {\n column: GroupColumnDescriptor;\n onMoveColumn?: (columns: ColumnDescriptor[]) => void;\n onRemoveColumn: (column: RuntimeColumnDescriptor) => void;\n}\n\nexport const GroupHeaderCellNext = ({\n column: groupColumn,\n className: classNameProp,\n onMoveColumn,\n onRemoveColumn,\n onResize,\n ...htmlAttributes\n}: GroupHeaderCellNextProps) => {\n const rootRef = useRef<HTMLTableCellElement>(null);\n const { isResizing, ...resizeProps } = useTableColumnResize({\n column: groupColumn,\n onResize,\n rootRef,\n });\n\n const [columns, setColumns] = useState(groupColumn.columns);\n const { className, style } = useCell(groupColumn, classBase, true);\n const columnPillProps =\n columns.length > 1\n ? {\n removable: true,\n onRemove: onRemoveColumn,\n }\n : undefined;\n\n const handleMoveItem = useCallback(\n (fromIndex, toIndex) => {\n setColumns((cols) => {\n const newCols = cols.slice();\n const [tab] = newCols.splice(fromIndex, 1);\n if (toIndex === -1) {\n const result = newCols.concat(tab);\n onMoveColumn?.(result);\n return result;\n } else {\n newCols.splice(toIndex, 0, tab);\n onMoveColumn?.(newCols);\n return newCols;\n }\n });\n },\n [onMoveColumn]\n );\n\n useLayoutEffectSkipFirst(() => {\n setColumns((cols) => switchIfChanged(cols, groupColumn.columns));\n }, [groupColumn.columns]);\n\n return (\n <div\n {...htmlAttributes}\n className={cx(className, classNameProp, {\n [`${classBase}-pending`]: groupColumn.groupConfirmed === false,\n })}\n ref={rootRef}\n role=\"columnheader\"\n style={style}\n >\n <OverflowContainer\n allowDragDrop\n className={`${classBase}-inner`}\n height={24}\n onMoveItem={handleMoveItem}\n overflowPosition=\"start\"\n >\n {columns.map((column) => {\n return (\n <GroupColumnPill\n {...columnPillProps}\n column={column}\n key={column.key}\n />\n );\n })}\n </OverflowContainer>\n <ColumnHeaderPill\n column={groupColumn}\n removable\n onRemove={onRemoveColumn}\n />\n\n {groupColumn.resizeable !== false ? (\n <ColumnResizer {...resizeProps} />\n ) : null}\n </div>\n );\n};\n", "import { useCallback, useRef } from \"react\";\n\nimport \"./ColumnResizer.css\";\n\nconst NOOP = () => undefined;\n\nconst baseClass = \"vuuColumnResizerNext\";\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 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 { Heading, RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { RefObject, useCallback, useRef, useState } from \"react\";\nimport { ResizePhase } from \"../useTableModel\";\n\nexport type TableColumnResizeHandler = (\n phase: ResizePhase,\n columnName: string,\n width?: number\n) => void;\n\nexport type ResizeHandler = (evt: MouseEvent, moveBy: number) => void;\nexport interface CellResizeHookProps {\n column: RuntimeColumnDescriptor | Heading;\n onResize?: (phase: ResizePhase, columnName: string, width?: number) => void;\n rootRef: RefObject<HTMLDivElement>;\n}\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, setResizing] = useState(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 setResizing(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 // clickHandler in HeaderCell checks isResizing before firing. Because onMouseUp\n // fires before click, we need to delay setting isResizing back to false, just\n // long enough that the click ghandler will have fired.\n setResizing(false);\n }, 80);\n }\n }, [name, onResize]);\n\n return {\n isResizing,\n onDrag: handleResize,\n onDragStart: handleResizeStart,\n onDragEnd: handleResizeEnd,\n };\n};\n", "import { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { getColumnStyle } from \"@vuu-ui/vuu-utils\";\nimport cx from \"classnames\";\nimport { useMemo } from \"react\";\n\nexport const useCell = (\n column: RuntimeColumnDescriptor,\n classBase: string,\n isHeader?: boolean\n) =>\n // TODO measure perf without the memo, might not be worth the cost\n useMemo(() => {\n const className = cx(classBase, {\n vuuPinFloating: column.pin === \"floating\",\n vuuPinLeft: column.pin === \"left\",\n vuuPinRight: column.pin === \"right\",\n vuuEndPin: isHeader && column.endPin,\n // [`${classBase}-resizing`]: column.resizing,\n [`${classBase}-editable`]: column.editable,\n [`${classBase}-right`]: column.align === \"right\",\n });\n\n const style = getColumnStyle(column);\n return {\n className,\n style,\n };\n }, [column, classBase, isHeader]);\n", "import cx from \"classnames\";\nimport { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { HTMLAttributes, MouseEvent, useCallback } from \"react\";\n\nimport \"./ColumnHeaderPill.css\";\n\nexport interface ColumnHeaderPillProps extends HTMLAttributes<HTMLDivElement> {\n column: RuntimeColumnDescriptor;\n removable?: boolean;\n onRemove?: (column: RuntimeColumnDescriptor) => void;\n}\n\nconst classBase = \"vuuColumnHeaderPill\";\n\nexport const ColumnHeaderPill = ({\n children,\n className,\n column,\n onRemove,\n removable,\n ...htmlAttributes\n}: ColumnHeaderPillProps) => {\n if (removable && typeof onRemove !== \"function\") {\n throw Error(\n \"ColumnHeaderPill onRemove prop must be provided if Pill is removable\"\n );\n }\n\n const handleClickRemove = useCallback(\n (evt: MouseEvent<HTMLSpanElement>) => {\n evt.preventDefault();\n evt.stopPropagation();\n onRemove?.(column);\n },\n [column, onRemove]\n );\n\n return (\n <div {...htmlAttributes} className={cx(classBase, className)}>\n {children}\n {removable ? (\n <span\n className={`${classBase}-removeButton`}\n role=\"button\"\n data-icon=\"cross\"\n onClick={handleClickRemove}\n />\n ) : null}\n </div>\n );\n};\n", "import { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { ColumnHeaderPill, ColumnHeaderPillProps } from \"./ColumnHeaderPill\";\n\nimport \"./GroupColumnPill.css\";\n\nexport interface GroupColumnPillProps extends ColumnHeaderPillProps {\n column: RuntimeColumnDescriptor;\n}\n\nexport const GroupColumnPill = ({\n column,\n ...columnHeaderProps\n}: GroupColumnPillProps) => {\n const { name, sorted } = column;\n const icon =\n typeof sorted === \"number\"\n ? sorted < 0\n ? \"arrow-down\"\n : \"arrow-up\"\n : sorted === \"A\"\n ? \"arrow-up\"\n : sorted === \"D\"\n ? \"arrow-down\"\n : undefined;\n\n return (\n <ColumnHeaderPill {...columnHeaderProps} column={column}>\n <span className=\"vuuGroupColumnPill-label\">{name}</span>\n {icon !== undefined ? <span data-icon={icon} /> : null}\n {typeof sorted === \"number\" ? (\n <span className={\"vuuSortPosition\"}>{Math.abs(sorted)}</span>\n ) : null}\n </ColumnHeaderPill>\n );\n};\n", "import { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { ColumnHeaderPill } from \"./ColumnHeaderPill\";\n\nimport \"./SortIndicator.css\";\n\nexport interface SortIndicatorProps {\n column: RuntimeColumnDescriptor;\n}\n\nexport const SortIndicator = ({ column }: SortIndicatorProps) => {\n if (!column.sorted) {\n return null;\n }\n\n const icon =\n typeof column.sorted === \"number\"\n ? column.sorted < 0\n ? \"arrow-down\"\n : \"arrow-up\"\n : column.sorted === \"A\"\n ? \"arrow-up\"\n : \"arrow-down\";\n\n return (\n <ColumnHeaderPill column={column}>\n <span data-icon={icon} />\n {typeof column.sorted === \"number\" ? (\n <span className={\"vuuSortPosition\"}>{Math.abs(column.sorted)}</span>\n ) : null}\n </ColumnHeaderPill>\n );\n};\n", "import { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { HTMLAttributes, MouseEventHandler, useCallback, useRef } from \"react\";\nimport { useCell } from \"../useCell\";\nimport { ColumnMenu } from \"../column-menu\";\nimport { SortIndicator } from \"../column-header-pill\";\nimport cx from \"classnames\";\nimport {\n ColumnResizer,\n TableColumnResizeHandler,\n useTableColumnResize,\n} from \"../column-resizing\";\n\nimport \"./HeaderCell.css\";\n\nconst classBase = \"vuuTableHeaderCell\";\n\nexport interface HeaderCellProps extends HTMLAttributes<HTMLDivElement> {\n classBase?: string;\n column: RuntimeColumnDescriptor;\n onResize?: TableColumnResizeHandler;\n}\n\nexport const HeaderCell = ({\n className: classNameProp,\n column,\n onClick,\n onResize,\n ...htmlAttributes\n}: HeaderCellProps) => {\n const { HeaderCellContentRenderer, HeaderCellLabelRenderer } = column;\n const rootRef = useRef<HTMLDivElement>(null);\n const { isResizing, ...resizeProps } = useTableColumnResize({\n column,\n onResize,\n rootRef,\n });\n\n const handleClick = useCallback<MouseEventHandler<HTMLDivElement>>(\n (evt) => {\n !isResizing && onClick?.(evt);\n },\n [isResizing, onClick]\n );\n\n const { className, style } = useCell(column, classBase, true);\n\n const columnMenu = <ColumnMenu column={column} />;\n const columnLabel = HeaderCellLabelRenderer ? (\n <HeaderCellLabelRenderer className={`${classBase}-label`} column={column} />\n ) : (\n <div className={`${classBase}-label`}>{column.label ?? column.name}</div>\n );\n\n const columnContent = HeaderCellContentRenderer\n ? [<HeaderCellContentRenderer column={column} key=\"content\" />]\n : [];\n\n const sortIndicator = <SortIndicator column={column} />;\n const headerItems =\n column.align === \"right\"\n ? [sortIndicator, columnLabel].concat(columnContent).concat(columnMenu)\n : [columnMenu, columnLabel, sortIndicator].concat(columnContent);\n\n return (\n <div\n {...htmlAttributes}\n className={cx(className, classNameProp, {\n [`${classBase}-resizing`]: isResizing,\n })}\n onClick={handleClick}\n ref={rootRef}\n role=\"columnheader\"\n style={style}\n >\n {...headerItems}\n {column.resizeable !== false ? <ColumnResizer {...resizeProps} /> : null}\n </div>\n );\n};\n", "import { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { useContextMenu } from \"@vuu-ui/vuu-popups\";\nimport cx from \"classnames\";\nimport {\n HTMLAttributes,\n MouseEvent,\n useCallback,\n useRef,\n useState,\n} from \"react\";\n\nimport \"./ColumnMenu.css\";\n\nexport interface ColumnMenuProps extends HTMLAttributes<HTMLSpanElement> {\n column: RuntimeColumnDescriptor;\n}\n\nconst getPosition = (element: HTMLElement | null) => {\n if (element) {\n const { bottom, left } = element.getBoundingClientRect();\n return { x: left, y: bottom + 6 };\n }\n};\n\nexport const ColumnMenu = ({\n className,\n column,\n ...props\n}: ColumnMenuProps) => {\n const rootRef = useRef<HTMLSpanElement>(null);\n const [menuOpen, setMenuOpen] = useState(false);\n const [showContextMenu] = useContextMenu();\n\n const handleMenuClose = useCallback(() => {\n setMenuOpen(false);\n }, []);\n\n const showColumnMenu = useCallback(\n (e: MouseEvent<HTMLElement>) => {\n setMenuOpen(true);\n showContextMenu(e, \"column-menu\", {\n column,\n ContextMenuProps: {\n onClose: handleMenuClose,\n position: getPosition(rootRef.current),\n },\n });\n },\n [column, handleMenuClose, showContextMenu]\n );\n\n return (\n <span\n {...props}\n className={cx(\"vuuTable-columnMenu\", className, {\n \"vuuTable-columnMenu-open\": menuOpen,\n })}\n data-icon=\"more-vert\"\n onClick={showColumnMenu}\n ref={rootRef}\n />\n );\n};\n", "import {\n DataSource,\n SchemaColumn,\n VuuFeatureInvocationMessage,\n} from \"@vuu-ui/vuu-data\";\nimport {\n SelectionChangeHandler,\n TableConfig,\n TableRowClickHandler,\n TableSelectionModel,\n} from \"@vuu-ui/vuu-table-types\";\nimport { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport {\n MeasuredContainer,\n MeasuredContainerProps,\n MeasuredSize,\n useId,\n} from \"@vuu-ui/vuu-layout\";\nimport { ContextMenuProvider } from \"@vuu-ui/vuu-popups\";\nimport { DragStartHandler, dragStrategy } from \"@vuu-ui/vuu-ui-controls\";\nimport { metadataKeys } from \"@vuu-ui/vuu-utils\";\nimport { useForkRef } from \"@salt-ds/core\";\nimport cx from \"classnames\";\nimport {\n CSSProperties,\n FC,\n ForwardedRef,\n forwardRef,\n RefObject,\n useRef,\n useState,\n} from \"react\";\nimport { Row as DefaultRow, RowProps } from \"./Row\";\nimport { useTable } from \"./useTable\";\nimport { TableHeader } from \"./table-header/TableHeader\";\n\nimport \"./Table.css\";\nimport { DragDropState } from \"packages/vuu-ui-controls/src/drag-drop/DragDropState\";\n\nconst classBase = \"vuuTable\";\n\nconst { IDX, RENDER_IDX } = metadataKeys;\n\n// TODO implement a Model object to represent a row data for better API\nexport type TableRowSelectHandler = (row: DataSourceRow) => void;\n\nexport type TableNavigationStyle = \"none\" | \"cell\" | \"row\";\n\nexport interface TableProps\n extends Omit<MeasuredContainerProps, \"onDragStart\" | \"onDrop\" | \"onSelect\"> {\n Row?: FC<RowProps>;\n allowConfigEditing?: boolean;\n allowDragDrop?: boolean | dragStrategy;\n /**\n * required if a fully featured column picker is to be available\n */\n availableColumns?: SchemaColumn[];\n config: TableConfig;\n dataSource: DataSource;\n disableFocus?: boolean;\n headerHeight?: number;\n /**\n * Defined how focus navigation within data cells will be handled by table.\n * Default is cell.\n */\n highlightedIndex?: number;\n navigationStyle?: TableNavigationStyle;\n /**\n * required if a fully featured column picker is to be available.\n * Available columns can be changed by the addition or removal of\n * one or more calculated columns.\n */\n onAvailableColumnsChange?: (columns: SchemaColumn[]) => void;\n /**\n * This callback will be invoked any time a config attribute of TableConfig\n * is changed. By persisting this value and providing it to the Table as a\n * prop, table state can be persisted across sessions.\n */\n onConfigChange?: (config: TableConfig) => void;\n onDragStart?: DragStartHandler;\n onDrop?: (dragDropState: DragDropState) => void;\n /**\n * When a Vuu feature e.g. context menu action, has been invoked, the Vuu server\n * response must be handled. This callback provides that response.\n */\n onFeatureInvocation?: (message: VuuFeatureInvocationMessage) => void;\n\n onHighlight?: (idx: number) => void;\n /**\n * callback invoked when user 'clicks' a table row. CLick triggered either\n * via mouse click or keyboard (default ENTER);\n */\n onRowClick?: TableRowClickHandler;\n onSelect?: TableRowSelectHandler;\n onSelectionChange?: SelectionChangeHandler;\n renderBufferSize?: number;\n rowHeight?: number;\n /**\n * Selection Bookends style the left and right edge of a selection block.\n * They are optional, value defaults to zero.\n * TODO this should just live in CSS\n */\n selectionBookendWidth?: number;\n selectionModel?: TableSelectionModel;\n /**\n * if false, table rendered without headers. Useful when table is being included in a\n * composite component.\n */\n showColumnHeaders?: boolean;\n}\n\nconst TableCore = ({\n Row = DefaultRow,\n allowDragDrop,\n availableColumns,\n config,\n containerRef,\n dataSource,\n disableFocus = false,\n highlightedIndex: highlightedIndexProp,\n id: idProp,\n navigationStyle = \"cell\",\n onAvailableColumnsChange,\n onConfigChange,\n onDragStart,\n onDrop,\n onFeatureInvocation,\n onHighlight,\n onRowClick: onRowClickProp,\n onSelect,\n onSelectionChange,\n renderBufferSize = 0,\n rowHeight = 20,\n selectionModel = \"extended\",\n showColumnHeaders = true,\n headerHeight = showColumnHeaders ? 25 : 0,\n size,\n}: TableProps & {\n containerRef: RefObject<HTMLDivElement>;\n size: MeasuredSize;\n}) => {\n const id = useId(idProp);\n const {\n columnMap,\n columns,\n data,\n draggableRow,\n handleContextMenuAction,\n headings,\n highlightedIndex,\n onDataEdited,\n onMoveColumn,\n onMoveGroupColumn,\n onRemoveGroupColumn,\n onResizeColumn,\n onRowClick,\n onSortColumn,\n onToggleGroup,\n menuBuilder,\n scrollProps,\n tableAttributes,\n tableConfig,\n viewportMeasurements,\n ...tableProps\n } = useTable({\n allowDragDrop,\n availableColumns,\n config,\n containerRef,\n dataSource,\n disableFocus,\n headerHeight,\n highlightedIndex: highlightedIndexProp,\n id,\n navigationStyle,\n onAvailableColumnsChange,\n onConfigChange,\n onDragStart,\n onDrop,\n onFeatureInvocation,\n onHighlight,\n onRowClick: onRowClickProp,\n onSelect,\n onSelectionChange,\n renderBufferSize,\n rowHeight,\n selectionModel,\n size,\n });\n\n const className = cx(`${classBase}-contentContainer`, {\n [`${classBase}-colLines`]: tableAttributes.columnSeparators,\n [`${classBase}-rowLines`]: tableAttributes.rowSeparators,\n // [`${classBase}-highlight`]: tableAttributes.showHighlightedRow,\n [`${classBase}-zebra`]: tableAttributes.zebraStripes,\n // [`${classBase}-loading`]: isDataLoading(tableProps.columns),\n });\n\n const cssVariables = {\n \"--content-height\": `${viewportMeasurements.contentHeight}px`,\n \"--content-width\": `${viewportMeasurements.contentWidth}px`,\n \"--horizontal-scrollbar-height\": `${viewportMeasurements.horizontalScrollbarHeight}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 \"--total-header-height\": `${viewportMeasurements.totalHeaderHeight}px`,\n \"--vertical-scrollbar-width\": `${viewportMeasurements.verticalScrollbarWidth}px`,\n \"--viewport-body-height\": `${viewportMeasurements.viewportBodyHeight}px`,\n } as CSSProperties;\n\n return (\n <ContextMenuProvider\n menuActionHandler={handleContextMenuAction}\n menuBuilder={menuBuilder}\n >\n <div\n className={`${classBase}-scrollbarContainer`}\n ref={scrollProps.scrollbarContainerRef}\n style={cssVariables}\n >\n <div className={`${classBase}-scrollbarContent`} />\n </div>\n <div\n className={className}\n ref={scrollProps.contentContainerRef}\n style={cssVariables}\n >\n <div\n {...tableProps}\n className={`${classBase}-table`}\n tabIndex={disableFocus ? undefined : -1}\n >\n {showColumnHeaders ? (\n <TableHeader\n columns={columns}\n headings={headings}\n onMoveColumn={onMoveColumn}\n onMoveGroupColumn={onMoveGroupColumn}\n onRemoveGroupColumn={onRemoveGroupColumn}\n onResizeColumn={onResizeColumn}\n onSortColumn={onSortColumn}\n tableConfig={tableConfig}\n tableId={id}\n />\n ) : null}\n <div className={`${classBase}-body`}>\n {data.map((data) => (\n <Row\n columnMap={columnMap}\n columns={columns}\n highlighted={highlightedIndex === data[IDX]}\n key={data[RENDER_IDX]}\n onClick={onRowClick}\n onDataEdited={onDataEdited}\n row={data}\n offset={\n rowHeight * data[IDX] + viewportMeasurements.totalHeaderHeight\n }\n onToggleGroup={onToggleGroup}\n zebraStripes={tableAttributes.zebraStripes}\n />\n ))}\n </div>\n </div>\n </div>\n {draggableRow}\n </ContextMenuProvider>\n );\n};\n\nexport const Table = forwardRef(function TableNext(\n {\n Row,\n allowDragDrop,\n availableColumns,\n className: classNameProp,\n config,\n dataSource,\n disableFocus,\n highlightedIndex,\n id,\n navigationStyle,\n onAvailableColumnsChange,\n onConfigChange,\n onDragStart,\n onDrop,\n onFeatureInvocation,\n onHighlight,\n onRowClick,\n onSelect,\n onSelectionChange,\n renderBufferSize,\n rowHeight,\n selectionModel,\n showColumnHeaders,\n headerHeight,\n style: styleProp,\n ...htmlAttributes\n }: TableProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const containerRef = useRef<HTMLDivElement>(null);\n\n const [size, setSize] = useState<MeasuredSize>();\n\n return (\n <MeasuredContainer\n {...htmlAttributes}\n className={cx(classBase, classNameProp)}\n id={id}\n onResize={setSize}\n ref={useForkRef(containerRef, forwardedRef)}\n >\n {size ? (\n <TableCore\n Row={Row}\n allowDragDrop={allowDragDrop}\n availableColumns={availableColumns}\n config={config}\n containerRef={containerRef}\n dataSource={dataSource}\n disableFocus={disableFocus}\n headerHeight={headerHeight}\n highlightedIndex={highlightedIndex}\n id={id}\n navigationStyle={navigationStyle}\n onAvailableColumnsChange={onAvailableColumnsChange}\n onConfigChange={onConfigChange}\n onDragStart={onDragStart}\n onDrop={onDrop}\n onFeatureInvocation={onFeatureInvocation}\n onHighlight={onHighlight}\n onRowClick={onRowClick}\n onSelect={onSelect}\n onSelectionChange={onSelectionChange}\n renderBufferSize={renderBufferSize}\n rowHeight={rowHeight}\n selectionModel={selectionModel}\n showColumnHeaders={showColumnHeaders}\n size={size}\n />\n ) : null}\n </MeasuredContainer>\n );\n});\n", "import { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport {\n DataCellEditHandler,\n RuntimeColumnDescriptor,\n RowClickHandler,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n ColumnMap,\n isGroupColumn,\n isJsonColumn,\n isJsonGroup,\n metadataKeys,\n isNotHidden,\n RowSelected,\n} from \"@vuu-ui/vuu-utils\";\nimport cx from \"classnames\";\nimport { CSSProperties, memo, MouseEvent, useCallback } from \"react\";\nimport { TableCell, TableGroupCell } from \"./table-cell\";\n\nimport \"./Row.css\";\n\nexport interface RowProps {\n className?: string;\n columnMap: ColumnMap;\n columns: RuntimeColumnDescriptor[];\n highlighted?: boolean;\n row: DataSourceRow;\n offset: number;\n onClick?: RowClickHandler;\n onDataEdited?: DataCellEditHandler;\n onToggleGroup?: (row: DataSourceRow, column: RuntimeColumnDescriptor) => void;\n style?: CSSProperties;\n zebraStripes?: boolean;\n}\n\nconst { IDX, IS_EXPANDED, SELECTED } = metadataKeys;\nconst classBase = \"vuuTableRow\";\n\n// export const Row = memo(\nexport const Row = memo(\n ({\n className: classNameProp,\n columnMap,\n columns,\n highlighted,\n row,\n offset,\n onClick,\n onDataEdited,\n onToggleGroup,\n zebraStripes = false,\n ...htmlAttributes\n }: RowProps) => {\n const {\n [IDX]: rowIndex,\n [IS_EXPANDED]: isExpanded,\n [SELECTED]: selectionStatus,\n } = row;\n\n const handleRowClick = useCallback(\n (evt: MouseEvent<HTMLDivElement>) => {\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 { True, First, Last } = RowSelected;\n\n const className = cx(classBase, classNameProp, {\n [`${classBase}-even`]: zebraStripes && rowIndex % 2 === 0,\n [`${classBase}-expanded`]: isExpanded,\n [`${classBase}-highlighted`]: highlighted,\n [`${classBase}-selected`]: selectionStatus & True,\n [`${classBase}-selectedStart`]: selectionStatus & First,\n [`${classBase}-selectedEnd`]: selectionStatus & Last,\n });\n\n const style = { transform: `translate3d(0px, ${offset}px, 0px)` };\n\n const handleGroupCellClick = useCallback(\n (evt: MouseEvent, column: RuntimeColumnDescriptor) => {\n if (isGroupColumn(column) || isJsonGroup(column, row)) {\n evt.stopPropagation();\n onToggleGroup?.(row, column);\n }\n },\n [onToggleGroup, row]\n );\n\n return (\n <div\n {...htmlAttributes}\n aria-rowindex={row[0]}\n key={`row-${row[0]}`}\n role=\"row\"\n className={className}\n onClick={handleRowClick}\n style={style}\n >\n <span className={`${classBase}-selectionDecorator vuuStickyLeft`} />\n {columns.filter(isNotHidden).map((column) => {\n const isGroup = isGroupColumn(column);\n const isJsonCell = isJsonColumn(column);\n const Cell = isGroup ? TableGroupCell : TableCell;\n\n return (\n <Cell\n column={column}\n columnMap={columnMap}\n key={column.key}\n onClick={isGroup || isJsonCell ? handleGroupCellClick : undefined}\n onDataEdited={onDataEdited}\n row={row}\n />\n );\n })}\n <span className={`${classBase}-selectionDecorator vuuStickyRight`} />\n </div>\n );\n }\n);\nRow.displayName = \"Row\";\n", "import { DataItemCommitHandler, TableCellProps } from \"@vuu-ui/vuu-table-types\";\nimport { isNumericColumn } from \"@vuu-ui/vuu-utils\";\nimport { MouseEventHandler, useCallback } from \"react\";\nimport { useCell } from \"../useCell\";\n\nimport \"./TableCell.css\";\n\nconst classBase = \"vuuTableCell\";\n\nexport const TableCell = ({\n column,\n columnMap,\n onClick,\n onDataEdited,\n row,\n}: TableCellProps) => {\n const { className, style } = useCell(column, classBase);\n const { CellRenderer, name, valueFormatter } = column;\n const dataIdx = columnMap[name];\n\n const handleDataItemEdited = useCallback<DataItemCommitHandler>(\n (value) => {\n if (onDataEdited) {\n let typedValue = value;\n if (isNumericColumn(column) && typeof value === \"string\") {\n typedValue =\n column.serverDataType === \"double\"\n ? parseFloat(value)\n : parseInt(value);\n }\n return onDataEdited?.(row, name, typedValue);\n } else {\n throw Error(\n \"TableCell onDataEdited prop not supplied for an editable cell\"\n );\n }\n },\n [column, name, onDataEdited, row]\n );\n\n const handleClick = useCallback<MouseEventHandler>(\n (evt) => {\n onClick?.(evt, column);\n },\n [column, onClick]\n );\n\n return (\n <div\n className={className}\n onClick={onClick ? handleClick : undefined}\n role=\"cell\"\n style={style}\n >\n {CellRenderer ? (\n <CellRenderer\n column={column}\n columnMap={columnMap}\n onCommit={handleDataItemEdited}\n row={row}\n />\n ) : (\n valueFormatter(row[dataIdx])\n )}\n </div>\n );\n};\n", "import { GroupColumnDescriptor, TableCellProps } from \"@vuu-ui/vuu-table-types\";\nimport { getGroupValueAndOffset, metadataKeys } from \"@vuu-ui/vuu-utils\";\nimport { MouseEvent, useCallback } from \"react\";\nimport { useCell } from \"../useCell\";\nimport cx from \"classnames\";\n\nimport \"./TableGroupCell.css\";\n\nconst { IS_LEAF } = metadataKeys;\n\nconst classBase = \"vuuTableGroupCell\";\n\nexport const TableGroupCell = ({ column, onClick, row }: TableCellProps) => {\n const { columns } = column as GroupColumnDescriptor;\n const [value, offset] = getGroupValueAndOffset(columns, row);\n const { className, style } = useCell(column, classBase);\n\n const handleClick = useCallback(\n (evt: MouseEvent<HTMLDivElement>) => {\n onClick?.(evt, column);\n },\n [column, onClick]\n );\n\n const isLeaf = row[IS_LEAF];\n const spacers = Array(offset)\n .fill(0)\n .map((n, i) => <span className={`${classBase}-spacer`} key={i} />);\n\n return (\n <div\n className={cx(className, \"vuuTableCell\")}\n role=\"cell\"\n style={style}\n onClick={isLeaf ? undefined : handleClick}\n >\n {spacers}\n {isLeaf ? null : (\n <span className={`${classBase}-toggle`} data-icon=\"triangle-right\" />\n )}\n <span>{value}</span>\n </div>\n );\n};\n", "import {\n DataSourceConfig,\n DataSourceSubscribedMessage,\n JsonDataSource,\n} from \"@vuu-ui/vuu-data\";\nimport { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport {\n ColumnDescriptor,\n DataCellEditHandler,\n RowClickHandler,\n RuntimeColumnDescriptor,\n SelectionChangeHandler,\n TableConfig,\n TableSelectionModel,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n MeasuredProps,\n MeasuredSize,\n useLayoutEffectSkipFirst,\n} from \"@vuu-ui/vuu-layout\";\nimport { VuuRange, VuuSortType } from \"@vuu-ui/vuu-protocol-types\";\nimport { useTableAndColumnSettings } from \"@vuu-ui/vuu-table-extras\";\nimport {\n DragStartHandler,\n useDragDropNext as useDragDrop,\n} from \"@vuu-ui/vuu-ui-controls\";\nimport {\n applySort,\n buildColumnMap,\n isGroupColumn,\n isJsonGroup,\n isValidNumber,\n metadataKeys,\n updateColumn,\n} from \"@vuu-ui/vuu-utils\";\nimport {\n FocusEvent,\n KeyboardEvent,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { TableColumnResizeHandler } from \"./column-resizing\";\nimport {\n buildContextMenuDescriptors,\n useHandleTableContextMenu,\n} from \"./context-menu\";\nimport { TableProps } from \"./Table\";\nimport { updateTableConfig } from \"./table-config\";\nimport { useCellEditing } from \"./useCellEditing\";\nimport { useDataSource } from \"./useDataSource\";\nimport { useInitialValue } from \"./useInitialValue\";\nimport { useKeyboardNavigation } from \"./useKeyboardNavigation\";\nimport { useSelection } from \"./useSelection\";\nimport { useTableContextMenu } from \"./useTableContextMenu\";\nimport {\n ColumnActionHide,\n ColumnActionPin,\n isShowColumnSettings,\n isShowTableSettings,\n PersistentColumnAction,\n useTableModel,\n} from \"./useTableModel\";\nimport { useTableScroll } from \"./useTableScroll\";\nimport { useTableViewport } from \"./useTableViewport\";\nimport { useVirtualViewport } from \"./useVirtualViewport\";\n\nconst stripInternalProperties = (tableConfig: TableConfig): TableConfig => {\n return tableConfig;\n};\n\nexport interface TableHookProps\n extends MeasuredProps,\n Pick<\n TableProps,\n | \"allowDragDrop\"\n | \"availableColumns\"\n | \"config\"\n | \"dataSource\"\n | \"disableFocus\"\n | \"highlightedIndex\"\n | \"id\"\n | \"navigationStyle\"\n | \"onAvailableColumnsChange\"\n | \"onConfigChange\"\n | \"onDragStart\"\n | \"onDrop\"\n | \"onFeatureInvocation\"\n | \"onHighlight\"\n | \"onSelect\"\n | \"onSelectionChange\"\n | \"onRowClick\"\n | \"renderBufferSize\"\n > {\n containerRef: RefObject<HTMLDivElement>;\n headerHeight: number;\n rowHeight: number;\n selectionModel: TableSelectionModel;\n size: MeasuredSize;\n}\n\nconst { KEY, IS_EXPANDED, IS_LEAF } = metadataKeys;\n\nconst NULL_DRAG_DROP = {\n draggable: undefined,\n onMouseDown: undefined,\n};\nconst useNullDragDrop = () => NULL_DRAG_DROP;\n\nconst addColumn = (\n tableConfig: TableConfig,\n column: ColumnDescriptor\n): TableConfig => ({\n ...tableConfig,\n columns: tableConfig.columns.concat(column),\n});\n\nexport const useTable = ({\n allowDragDrop = false,\n availableColumns,\n config,\n containerRef,\n dataSource,\n disableFocus,\n headerHeight = 25,\n highlightedIndex: highlightedIndexProp,\n id,\n navigationStyle = \"cell\",\n onAvailableColumnsChange,\n onConfigChange,\n onDragStart,\n onDrop,\n onFeatureInvocation,\n onHighlight,\n onRowClick: onRowClickProp,\n onSelect,\n onSelectionChange,\n renderBufferSize = 0,\n rowHeight = 20,\n selectionModel,\n size,\n}: TableHookProps) => {\n const [rowCount, setRowCount] = useState<number>(dataSource.size);\n if (dataSource === undefined) {\n throw Error(\"no data source provided to Vuu Table\");\n }\n\n const useRowDragDrop = allowDragDrop ? useDragDrop : useNullDragDrop;\n\n const menuBuilder = useMemo(\n () => buildContextMenuDescriptors(dataSource),\n [dataSource]\n );\n\n const onDataRowcountChange = useCallback((size: number) => {\n setRowCount(size);\n }, []);\n\n const {\n columns: runtimeColumns,\n dispatchColumnAction,\n headings,\n tableAttributes,\n tableConfig,\n } = useTableModel(config, dataSource);\n\n useLayoutEffectSkipFirst(() => {\n dispatchColumnAction({\n type: \"init\",\n dataSource,\n tableConfig,\n });\n }, [tableConfig, dataSource, dispatchColumnAction]);\n\n const applyTableConfigChange = useCallback(\n (config: TableConfig) => {\n dispatchColumnAction({\n type: \"init\",\n tableConfig: config,\n dataSource,\n });\n onConfigChange?.(stripInternalProperties(config));\n },\n [dataSource, dispatchColumnAction, onConfigChange]\n );\n\n /**\n stateColumns are required only for the duration of a column resize operation.\n We want to minimize the scope of rendering whilst a resize operation is in progress\n and we do not need to persist transient size values. When the resize is complete, we\n trigger a config change, clear the stateColumns and revert to using the runtimeColumns\n managed by the table model, to which the ersize change will have been applied.\n */\n const [stateColumns, setStateColumns] = useState<RuntimeColumnDescriptor[]>();\n const [columns, setColumnSize] = useMemo(() => {\n const setSize = (columnName: string, width: number) => {\n const cols = updateColumn(runtimeColumns, columnName, { width });\n setStateColumns(cols);\n };\n return [stateColumns ?? runtimeColumns, setSize];\n }, [runtimeColumns, stateColumns]);\n\n // console.log({\n // config,\n // tableConfig,\n // runtimeColumns,\n // columns,\n // });\n\n const columnMap = useMemo(\n () => buildColumnMap(dataSource.columns),\n [dataSource.columns]\n );\n\n const {\n getRowAtPosition,\n getRowOffset,\n setPctScrollTop,\n ...viewportMeasurements\n } = useTableViewport({\n columns,\n headerHeight,\n headings,\n rowCount,\n rowHeight,\n size: size,\n });\n\n const initialRange = useInitialValue<VuuRange>({\n from: 0,\n to: viewportMeasurements.rowCount,\n });\n\n const onSubscribed = useCallback(\n ({ tableSchema }: DataSourceSubscribedMessage) => {\n if (tableSchema) {\n dispatchColumnAction({\n type: \"setTableSchema\",\n tableSchema,\n });\n } else {\n console.log(\"subscription message with no schema\");\n }\n },\n [dispatchColumnAction]\n );\n\n const { data, dataRef, getSelectedRows, range, setRange } = useDataSource({\n dataSource,\n onFeatureInvocation,\n renderBufferSize,\n onSizeChange: onDataRowcountChange,\n onSubscribed,\n range: initialRange,\n });\n\n const handleConfigEditedInSettingsPanel = useCallback(\n (tableConfig: TableConfig) => {\n console.log(`settings changed`);\n dispatchColumnAction({\n type: \"init\",\n tableConfig,\n dataSource,\n });\n onConfigChange?.(stripInternalProperties(tableConfig));\n },\n [dataSource, dispatchColumnAction, onConfigChange]\n );\n\n const handleDataSourceConfigChanged = useCallback(\n (dataSourceConfig: DataSourceConfig) => {\n dataSource.config = {\n ...dataSource.config,\n ...dataSourceConfig,\n };\n },\n [dataSource]\n );\n\n useEffect(() => {\n dataSource.on(\"config\", (config, confirmed) => {\n dispatchColumnAction({\n type: \"tableConfig\",\n ...config,\n confirmed,\n });\n });\n }, [dataSource, dispatchColumnAction]);\n\n const handleCreateCalculatedColumn = useCallback(\n (column: ColumnDescriptor) => {\n dataSource.columns = dataSource.columns.concat(column.name);\n applyTableConfigChange(addColumn(tableConfig, column));\n },\n [dataSource, tableConfig, applyTableConfigChange]\n );\n\n const hideColumns = useCallback(\n (action: ColumnActionHide) => {\n const { columns } = action;\n const hiddenColumns = columns.map((c) => c.name);\n const newTableConfig = {\n ...tableConfig,\n columns: tableConfig.columns.map((col) =>\n hiddenColumns.includes(col.name) ? { ...col, hidden: true } : col\n ),\n };\n applyTableConfigChange(newTableConfig);\n },\n [tableConfig, applyTableConfigChange]\n );\n\n const pinColumn = useCallback(\n (action: ColumnActionPin) => {\n applyTableConfigChange({\n ...tableConfig,\n columns: updateColumn(tableConfig.columns, {\n ...action.column,\n pin: action.pin,\n }),\n });\n },\n [tableConfig, applyTableConfigChange]\n );\n\n const { showColumnSettingsPanel, showTableSettingsPanel } =\n useTableAndColumnSettings({\n availableColumns:\n availableColumns ??\n tableConfig.columns.map(({ name, serverDataType = \"string\" }) => ({\n name,\n serverDataType,\n })),\n onAvailableColumnsChange,\n onConfigChange: handleConfigEditedInSettingsPanel,\n onCreateCalculatedColumn: handleCreateCalculatedColumn,\n onDataSourceConfigChange: handleDataSourceConfigChanged,\n tableConfig,\n });\n\n const onPersistentColumnOperation = useCallback(\n (action: PersistentColumnAction) => {\n if (isShowColumnSettings(action)) {\n showColumnSettingsPanel(action);\n } else if (isShowTableSettings(action)) {\n showTableSettingsPanel();\n } else {\n switch (action.type) {\n case \"hideColumns\":\n return hideColumns(action);\n case \"pinColumn\":\n return pinColumn(action);\n default:\n dispatchColumnAction(action);\n }\n }\n },\n [\n dispatchColumnAction,\n hideColumns,\n pinColumn,\n showColumnSettingsPanel,\n showTableSettingsPanel,\n ]\n );\n\n const handleContextMenuAction = useHandleTableContextMenu({\n dataSource,\n onPersistentColumnOperation,\n });\n\n const handleSort = useCallback(\n (column: ColumnDescriptor, extendSort = false, sortType?: VuuSortType) => {\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 onResizeColumn: TableColumnResizeHandler = useCallback(\n (phase, columnName, width) => {\n const column = columns.find((column) => column.name === columnName);\n if (column) {\n if (phase === \"resize\") {\n if (isValidNumber(width)) {\n setColumnSize(columnName, width);\n }\n } else if (phase === \"end\") {\n if (isValidNumber(width)) {\n dispatchColumnAction({\n type: \"resizeColumn\",\n phase,\n column,\n width,\n });\n setStateColumns(undefined);\n onConfigChange?.(\n stripInternalProperties(\n updateTableConfig(tableConfig, {\n type: \"col-size\",\n column,\n width,\n })\n )\n );\n }\n } else {\n setStateColumns(undefined);\n dispatchColumnAction({\n type: \"resizeColumn\",\n phase,\n column,\n width,\n });\n }\n } else {\n throw Error(\n `useDataTable.handleColumnResize, column ${columnName} not found`\n );\n }\n },\n [columns, tableConfig, dispatchColumnAction, onConfigChange, setColumnSize]\n );\n\n const onToggleGroup = useCallback(\n (row: DataSourceRow, column: RuntimeColumnDescriptor) => {\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 { onVerticalScroll } = useVirtualViewport({\n columns,\n getRowAtPosition,\n setRange,\n viewportMeasurements,\n });\n\n const handleVerticalScroll = useCallback(\n (scrollTop: number) => {\n onVerticalScroll(scrollTop);\n },\n [onVerticalScroll]\n );\n\n const { requestScroll, ...scrollProps } = useTableScroll({\n maxScrollLeft: viewportMeasurements.maxScrollContainerScrollHorizontal,\n maxScrollTop: viewportMeasurements.maxScrollContainerScrollVertical,\n rowHeight,\n onVerticalScroll: handleVerticalScroll,\n viewportRowCount: viewportMeasurements.rowCount,\n });\n\n const {\n highlightedIndexRef,\n navigate,\n onFocus: navigationFocus,\n onKeyDown: navigationKeyDown,\n ...containerProps\n } = useKeyboardNavigation({\n columnCount: columns.filter((c) => c.hidden !== true).length,\n containerRef,\n disableFocus,\n highlightedIndex: highlightedIndexProp,\n navigationStyle,\n requestScroll,\n rowCount: dataSource?.size,\n onHighlight,\n viewportRange: range,\n viewportRowCount: viewportMeasurements.rowCount,\n });\n\n const {\n onBlur: editingBlur,\n onDoubleClick: editingDoubleClick,\n onKeyDown: editingKeyDown,\n onFocus: editingFocus,\n } = useCellEditing({\n navigate,\n });\n\n const handleFocus = useCallback(\n (e: FocusEvent<HTMLElement>) => {\n navigationFocus();\n if (!e.defaultPrevented) {\n editingFocus(e);\n }\n },\n [editingFocus, navigationFocus]\n );\n\n const onContextMenu = useTableContextMenu({\n columns,\n data,\n dataSource,\n getSelectedRows,\n });\n\n const onMoveGroupColumn = useCallback(\n (columns: ColumnDescriptor[]) => {\n dataSource.groupBy = columns.map((col) => col.name);\n },\n [dataSource]\n );\n\n const onRemoveGroupColumn = useCallback(\n (column: RuntimeColumnDescriptor) => {\n if (isGroupColumn(column)) {\n dataSource.groupBy = [];\n } else {\n if (dataSource && dataSource.groupBy.includes(column.name)) {\n dataSource.groupBy = dataSource.groupBy.filter(\n (columnName) => columnName !== column.name\n );\n }\n }\n },\n [dataSource]\n );\n\n const handleSelectionChange: SelectionChangeHandler = useCallback(\n (selected) => {\n dataSource.select(selected);\n onSelectionChange?.(selected);\n },\n [dataSource, onSelectionChange]\n );\n\n const {\n onKeyDown: selectionHookKeyDown,\n onRowClick: selectionHookOnRowClick,\n } = useSelection({\n highlightedIndexRef,\n onSelect,\n onSelectionChange: handleSelectionChange,\n selectionModel,\n });\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLElement>) => {\n navigationKeyDown(e);\n if (!e.defaultPrevented) {\n editingKeyDown(e);\n }\n if (!e.defaultPrevented) {\n selectionHookKeyDown(e);\n }\n },\n [navigationKeyDown, editingKeyDown, selectionHookKeyDown]\n );\n\n const handleRowClick = useCallback<RowClickHandler>(\n (row, rangeSelect, keepExistingSelection) => {\n selectionHookOnRowClick(row, rangeSelect, keepExistingSelection);\n onRowClickProp?.(row);\n },\n [onRowClickProp, selectionHookOnRowClick]\n );\n\n useLayoutEffectSkipFirst(() => {\n dispatchColumnAction({\n type: \"init\",\n tableConfig: config,\n dataSource,\n });\n }, [config, dataSource, dispatchColumnAction]);\n\n const onMoveColumn = useCallback(\n (columns: ColumnDescriptor[]) => {\n const newTableConfig = {\n ...tableConfig,\n columns,\n };\n\n dispatchColumnAction({\n type: \"init\",\n tableConfig: newTableConfig,\n dataSource,\n });\n onConfigChange?.(stripInternalProperties(newTableConfig));\n },\n [dataSource, dispatchColumnAction, onConfigChange, tableConfig]\n );\n\n const handleDropRow = useCallback(\n (dragDropState) => {\n onDrop?.(dragDropState);\n },\n [onDrop]\n );\n\n const handleDataEdited = useCallback<DataCellEditHandler>(\n async (row, columnName, value) =>\n dataSource.applyEdit(row, columnName, value),\n [dataSource]\n );\n\n const handleDragStartRow = useCallback<DragStartHandler>(\n (dragDropState) => {\n const { initialDragElement } = dragDropState;\n const rowIndex = initialDragElement.ariaRowIndex;\n if (rowIndex) {\n const index = parseInt(rowIndex);\n const row = dataRef.current.find((row) => row[0] === index);\n if (row) {\n dragDropState.setPayload(row);\n } else {\n // should we abort the operation ?\n }\n }\n onDragStart?.(dragDropState);\n },\n [dataRef, onDragStart]\n );\n\n // Drag Drop rows\n const { onMouseDown: rowDragMouseDown, draggable: draggableRow } =\n useRowDragDrop({\n allowDragDrop,\n containerRef,\n draggableClassName: `vuuTable`,\n id,\n onDragStart: handleDragStartRow,\n onDrop: handleDropRow,\n orientation: \"vertical\",\n itemQuery: \".vuuTableRow\",\n });\n\n // console.log({\n // tableAttributes,\n // config: tableConfig,\n // });\n\n return {\n ...containerProps,\n draggableRow,\n onBlur: editingBlur,\n onDoubleClick: editingDoubleClick,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n onMouseDown: rowDragMouseDown,\n columnMap,\n columns,\n data,\n handleContextMenuAction,\n headings,\n highlightedIndex: highlightedIndexRef.current,\n menuBuilder,\n onContextMenu,\n onDataEdited: handleDataEdited,\n onMoveColumn,\n onMoveGroupColumn,\n onRemoveGroupColumn,\n onRowClick: handleRowClick,\n onSortColumn: handleSort,\n onResizeColumn,\n onToggleGroup,\n scrollProps,\n // TODO don't think we need these ...\n tableAttributes,\n tableConfig,\n viewportMeasurements,\n };\n};\n", "import { DataSource } from \"@vuu-ui/vuu-data\";\nimport { ContextMenuItemDescriptor, MenuBuilder } from \"@vuu-ui/vuu-data-types\";\nimport { RuntimeColumnDescriptor, PinLocation } from \"@vuu-ui/vuu-table-types\";\nimport { Filter } from \"@vuu-ui/vuu-filter-types\";\nimport { isNumericColumn } from \"@vuu-ui/vuu-utils\";\n\nexport type ContextMenuLocation = \"header\" | \"filter\" | \"grid\";\n\ntype MaybeColumn = { column?: RuntimeColumnDescriptor };\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 //TODO which should it be ?\n if (location === \"header\" || location === \"column-menu\") {\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 descriptors.push({\n action: \"column-settings\",\n icon: \"cog\",\n label: `Column Settings`,\n options,\n });\n descriptors.push({\n action: \"table-settings\",\n icon: \"cog\",\n label: `DataGrid Settings`,\n options,\n });\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: [\n { label: \"Count\", action: \"agg-count\", options },\n { label: \"Distinct\", action: \"agg-distinct\", options },\n ].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 { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { Filter } from \"@vuu-ui/vuu-filter-types\";\nimport { removeColumnFromFilter } from \"@vuu-ui/vuu-utils\";\nimport { VuuFilter } from \"@vuu-ui/vuu-protocol-types\";\nimport { DataSourceFilter, MenuActionHandler } 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?: RuntimeColumnDescriptor;\n filter?: Filter;\n sort?: VuuFilter;\n}\nexport interface ContextMenuHookProps {\n dataSource?: DataSource;\n /**\n * A persistent Column Operation is any manipulation of a table column that should be\n * persisted across user sessions. e.g. if user pins a column, column should still be\n * pinned next time user opens app.\n */\n onPersistentColumnOperation: (action: PersistentColumnAction) => void;\n}\n\nconst removeFilterColumn = (\n dataSourceFilter: DataSourceFilter,\n column: RuntimeColumnDescriptor\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, Distinct, High, Low, Sum } = AggregationType;\n\nexport const useHandleTableContextMenu = ({\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 = (action): boolean => {\n const gridOptions = action.options as ContextMenuOptions;\n if (gridOptions.column && dataSource) {\n const { column } = gridOptions;\n // prettier-ignore\n switch(action.menuId){\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-distinct\": return dataSource.aggregations = (setAggregations(dataSource.aggregations, column, Distinct)), 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 case \"column-settings\": return onPersistentColumnOperation({type: \"columnSettings\", column}), true\n case \"table-settings\": return onPersistentColumnOperation({type: \"tableSettings\"}), true\n default:\n }\n }\n return false;\n };\n\n return handleContextMenuAction;\n};\n", "import { ColumnDescriptor, TableConfig } from \"@vuu-ui/vuu-table-types\";\n\nexport type MoveColumnTableConfigAction = {\n type: \"col-move\";\n column: ColumnDescriptor;\n fromIndex: number;\n toIndex: number;\n};\n\nexport type ResizeColumnTableConfigAction = {\n type: \"col-size\";\n column: ColumnDescriptor;\n width: number;\n};\n\nexport type SubscribeColumnTableConfigAction = {\n type: \"subscribed\";\n column: ColumnDescriptor;\n value: boolean;\n};\n\nexport type UpdateColumnPropertyTableConfigAction = {\n type: \"column-prop\";\n column: ColumnDescriptor;\n property: keyof ColumnDescriptor;\n value: boolean | number | string;\n};\n\nexport type TableConfigAction =\n | MoveColumnTableConfigAction\n | ResizeColumnTableConfigAction\n | UpdateColumnPropertyTableConfigAction;\n\nexport const updateTableConfig = (\n config: TableConfig,\n action: TableConfigAction\n): TableConfig => {\n switch (action.type) {\n case \"col-size\":\n return {\n ...config,\n columns: config.columns.map((col) =>\n col.name === action.column.name\n ? { ...col, width: action.width }\n : col\n ),\n };\n case \"column-prop\":\n return {\n ...config,\n columns: config.columns.map((col) =>\n col.name === action.column.name\n ? { ...col, [action.property]: action.value }\n : col\n ),\n };\n\n default:\n return config;\n }\n};\n", "import { isCharacterKey } from \"@vuu-ui/vuu-utils\";\nimport {\n FocusEventHandler,\n KeyboardEvent as ReactKeyboardEvent,\n MouseEvent,\n useCallback,\n} from \"react\";\nimport { cellIsTextInput } from \"./table-dom-utils\";\n\nexport interface CellEditingHookProps {\n navigate: () => void;\n}\n\nexport const useCellEditing = ({ navigate }: CellEditingHookProps) => {\n const commitHandler = useCallback(() => {\n navigate();\n }, [navigate]);\n\n const editInput = useCallback(\n (evt: MouseEvent<HTMLElement> | ReactKeyboardEvent<HTMLElement>) => {\n const cellEl = evt.target as HTMLDivElement;\n const input = cellEl.matches(\"input\")\n ? (cellEl as HTMLInputElement)\n : cellEl.querySelector(\"input\");\n\n if (input) {\n input.focus();\n input.select();\n }\n },\n []\n );\n\n const focusInput = useCallback(\n (evt: MouseEvent<HTMLElement> | ReactKeyboardEvent<HTMLElement>) => {\n const cellEl = evt.target as HTMLDivElement;\n const input = cellEl.querySelector(\"input\");\n if (input) {\n input.focus();\n input.select();\n }\n },\n []\n );\n\n const handleKeyDown = useCallback(\n (e: ReactKeyboardEvent<HTMLElement>) => {\n const el = e.target as HTMLElement;\n if (cellIsTextInput(el)) {\n if (isCharacterKey(e.key)) {\n editInput(e);\n } else if (e.key === \"Enter\") {\n focusInput(e);\n }\n }\n },\n [editInput, focusInput]\n );\n\n const handleDoubleClick = useCallback(\n (e: MouseEvent<HTMLElement>) => {\n const el = e.target as HTMLElement;\n if (el.matches(\"input\") || el.querySelector(\"input\")) {\n editInput(e);\n e.stopPropagation();\n }\n },\n [editInput]\n );\n\n const handleBlur = useCallback<FocusEventHandler>(\n (e) => {\n const el = e.target as HTMLElement;\n el.removeEventListener(\"vuu-commit\", commitHandler, true);\n },\n [commitHandler]\n );\n\n const handleFocus = useCallback<FocusEventHandler>(\n (e) => {\n const el = e.target as HTMLElement;\n el.addEventListener(\"vuu-commit\", commitHandler, true);\n },\n [commitHandler]\n );\n\n return {\n onBlur: handleBlur,\n onDoubleClick: handleDoubleClick,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n };\n};\n", "import { RefObject } from \"react\";\n\nexport type CellPos = [number, number];\n\nexport const headerCellQuery = (colIdx: number) =>\n `.vuuTable-col-headers .vuuTableHeaderCell:nth-child(${colIdx})`;\n\nexport const dataCellQuery = (rowIdx: number, colIdx: number) =>\n `.vuuTable-body > [aria-rowindex='${rowIdx}'] > [role='cell']:nth-child(${\n colIdx + 1\n })`;\n\nexport const getTableCell = (\n containerRef: RefObject<HTMLElement>,\n\n [rowIdx, colIdx]: CellPos\n) => {\n const cssQuery =\n rowIdx === -1 ? headerCellQuery(colIdx) : dataCellQuery(rowIdx, colIdx);\n const cell = containerRef.current?.querySelector(\n cssQuery\n ) as HTMLTableCellElement;\n\n if (cellIsEditable(cell)) {\n // Dropdown gets focus, Input does not\n const focusableContent = cell.querySelector(\"button\") as HTMLElement;\n return focusableContent || cell;\n } else {\n return cell;\n }\n};\n\nexport const cellIsEditable = (cell: HTMLDivElement) =>\n cell.classList.contains(\"vuuTableCell-editable\");\n\nexport const cellIsTextInput = (cell: HTMLElement) =>\n cell.querySelector(\".vuuTableInputCell\") !== null;\n\nexport function getRowIndex(rowEl?: HTMLElement) {\n if (rowEl) {\n const idx: string | null = rowEl.ariaRowIndex;\n if (idx !== null) {\n return parseInt(idx, 10);\n }\n }\n return -1;\n}\n\nconst closestRow = (el: HTMLElement) =>\n el.closest('[role=\"row\"]') as HTMLElement;\n\nexport const closestRowIndex = (el: HTMLElement) => getRowIndex(closestRow(el));\n", "import {\n DataSource,\n DataSourceSubscribedMessage,\n isVuuFeatureInvocation,\n SubscribeCallback,\n VuuFeatureInvocationMessage,\n} from \"@vuu-ui/vuu-data\";\nimport { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\nimport { getFullRange, NULL_RANGE } from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { MovingWindow } from \"./moving-window\";\n\nexport interface DataSourceHookProps {\n dataSource: DataSource;\n // onConfigChange?: (message: DataSourceConfigMessage) => void;\n onFeatureInvocation?: (message: VuuFeatureInvocationMessage) => void;\n onSizeChange: (size: number) => void;\n onSubscribed: (subscription: DataSourceSubscribedMessage) => void;\n range?: VuuRange;\n renderBufferSize?: number;\n}\n\nexport const useDataSource = ({\n dataSource,\n onFeatureInvocation,\n onSizeChange,\n onSubscribed,\n range = NULL_RANGE,\n renderBufferSize = 0,\n}: DataSourceHookProps) => {\n const [, forceUpdate] = useState<unknown>(null);\n const data = useRef<DataSourceRow[]>([]);\n const isMounted = useRef(true);\n const hasUpdated = useRef(false);\n // const rafHandle = useRef<number | null>(null);\n const rangeRef = useRef<VuuRange>(NULL_RANGE);\n\n const dataWindow = useMemo(\n () => new MovingWindow(getFullRange(range, renderBufferSize)),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n const setData = useCallback(\n (updates: DataSourceRow[]) => {\n for (const row of updates) {\n dataWindow.add(row);\n }\n data.current = dataWindow.data;\n if (isMounted.current) {\n // TODO do we ever need to worry about missing updates here ?\n forceUpdate({});\n } else {\n console.log(`ignore update as we're not mounted`);\n }\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 data.current = dataWindow.data;\n hasUpdated.current = true;\n }\n } else if (isVuuFeatureInvocation(message)) {\n onFeatureInvocation?.(message);\n } else {\n console.log(`useDataSource unexpected message ${message.type}`);\n }\n },\n [dataWindow, onFeatureInvocation, onSizeChange, onSubscribed, setData]\n );\n\n const getSelectedRows = useCallback(() => {\n return dataWindow.getSelectedRows();\n }, [dataWindow]);\n\n useEffect(() => {\n isMounted.current = true;\n dataSource.resume?.();\n return () => {\n isMounted.current = false;\n dataSource.suspend?.();\n };\n }, [dataSource]);\n\n // Keep until we'tre sure we don't need it for updates\n // const refreshIfUpdated = useCallback(() => {\n // if (isMounted.current) {\n // console.log(`RAF updated data ? ${hasUpdated.current}`);\n // if (hasUpdated.current) {\n // forceUpdate({});\n // hasUpdated.current = false;\n // }\n // rafHandle.current = requestAnimationFrame(refreshIfUpdated);\n // }\n // }, [forceUpdate]);\n // useEffect(() => {\n // rafHandle.current = requestAnimationFrame(refreshIfUpdated);\n // }, [refreshIfUpdated]);\n\n useEffect(() => {\n if (dataSource.status === \"disabled\") {\n dataSource.enable?.(datasourceMessageHandler);\n } else {\n //TODO could we improve this by using a ref for range ?\n dataSource?.subscribe(\n { range: getFullRange(range, renderBufferSize) },\n datasourceMessageHandler\n );\n }\n }, [dataSource, datasourceMessageHandler, range, renderBufferSize]);\n\n const setRange = useCallback(\n (range: VuuRange) => {\n const fullRange = getFullRange(range, renderBufferSize);\n dataWindow.setRange(fullRange);\n dataSource.range = rangeRef.current = fullRange;\n dataSource.emit(\"range\", range);\n },\n [dataSource, dataWindow, renderBufferSize]\n );\n\n return {\n data: data.current,\n dataRef: data,\n getSelectedRows,\n range: rangeRef.current,\n setRange,\n };\n};\n", "import { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport {\n isRowSelectedLast,\n metadataKeys,\n WindowRange,\n} from \"@vuu-ui/vuu-utils\";\nimport { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\n\nconst { SELECTED } = metadataKeys;\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(Math.max(0, 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 // Hack until we can deal with this more elegantly. When we have a block\n // select operation, first row is selected (and updated via server), then\n // remaining rows are selected when we select the block-end row. We get an\n // update for all rows except first. Because we're extending the select status\n // on the client, we have to adjust the first row selected (its still selected\n // but is no longer the 'last selected row in block')\n // Maybe answer is to apply ALL the selection status code here, not in Viewport\n if (data[SELECTED]) {\n const previousRow = this.data[internalIndex - 1];\n if (isRowSelectedLast(previousRow)) {\n this.data[internalIndex - 1] = previousRow.slice() as DataSourceRow;\n this.data[internalIndex - 1][SELECTED] -= 4;\n }\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(Math.max(0, 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] !== 0);\n }\n}\n", "import { useMemo, useRef } from \"react\";\n\nexport const useInitialValue = <T = unknown>(value: T): T => {\n const ref = useRef<T>(value);\n return useMemo(() => ref.current, []);\n};\n", "import { useControlled } from \"@salt-ds/core\";\nimport { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\nimport {\n KeyboardEvent,\n MouseEvent,\n RefObject,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { ScrollDirection, ScrollRequestHandler } from \"./useTableScroll\";\nimport {\n CellPos,\n closestRowIndex,\n dataCellQuery,\n getTableCell,\n headerCellQuery,\n} from \"./table-dom-utils\";\nimport { TableNavigationStyle } from \"./Table\";\n\nconst rowNavigationKeys = new Set<NavigationKey>([\n \"Home\",\n \"End\",\n \"PageUp\",\n \"PageDown\",\n \"ArrowDown\",\n \"ArrowUp\",\n]);\n\nconst cellNavigationKeys = new Set(rowNavigationKeys);\ncellNavigationKeys.add(\"ArrowLeft\");\ncellNavigationKeys.add(\"ArrowRight\");\n\nexport const isNavigationKey = (\n key: string,\n navigationStyle: TableNavigationStyle\n): key is NavigationKey => {\n switch (navigationStyle) {\n case \"cell\":\n return cellNavigationKeys.has(key as NavigationKey);\n case \"row\":\n return rowNavigationKeys.has(key as NavigationKey);\n default:\n return false;\n }\n};\n\ntype ArrowKey = \"ArrowUp\" | \"ArrowDown\" | \"ArrowLeft\" | \"ArrowRight\";\ntype PageKey = \"Home\" | \"End\" | \"PageUp\" | \"PageDown\";\ntype NavigationKey = PageKey | ArrowKey;\n\nconst PageKeys = [\"Home\", \"End\", \"PageUp\", \"PageDown\"];\nexport const isPagingKey = (key: string): key is PageKey =>\n PageKeys.includes(key);\n\nconst NULL_CELL_POS: CellPos = [-1, -1];\n\nconst NO_SCROLL_NECESSARY = [undefined, undefined] as const;\n\nconst howFarIsRowOutsideViewport = (\n rowEl: HTMLElement,\n contentContainer = rowEl.closest(\".vuuTable-contentContainer\")\n): readonly [ScrollDirection | undefined, number | undefined] => {\n //TODO lots of scope for optimisation here\n if (contentContainer) {\n const viewport = contentContainer?.getBoundingClientRect();\n const row = rowEl.getBoundingClientRect();\n if (row) {\n if (row.bottom > viewport.bottom) {\n return [\"down\", row.bottom - viewport.bottom];\n } else if (row.top < viewport.top) {\n return [\"up\", row.top - viewport.top];\n } else {\n return NO_SCROLL_NECESSARY;\n }\n } else {\n throw Error(\"Whats going on, row not found\");\n }\n } else {\n throw Error(\"Whats going on, scrollbar container not found\");\n }\n};\n\nconst howFarIsCellOutsideViewport = (\n cellEl: HTMLElement\n): readonly [ScrollDirection | undefined, number | undefined] => {\n //TODO lots of scope for optimisation here\n const contentContainer = cellEl.closest(\".vuuTable-contentContainer\");\n if (contentContainer) {\n const rowEl = cellEl.closest(\".vuuTableRow\") as HTMLElement;\n if (rowEl) {\n const result = howFarIsRowOutsideViewport(rowEl, contentContainer);\n if (result !== NO_SCROLL_NECESSARY) {\n return result;\n }\n const viewport = contentContainer?.getBoundingClientRect();\n const cell = cellEl.closest(\".vuuTableCell\")?.getBoundingClientRect();\n if (cell) {\n if (cell.right > viewport.right) {\n return [\"right\", cell.right + 6 - viewport.right];\n } else if (cell.left < viewport.left) {\n return [\"left\", cell.left - viewport.left];\n }\n } else {\n throw Error(\"Whats going on, cell not found\");\n }\n }\n }\n return NO_SCROLL_NECESSARY;\n};\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 // The colIdx is 1 based, because of the selection decorator\n if (colIdx < columnCount) {\n return [rowIdx, colIdx + 1];\n } else {\n return [rowIdx, colIdx];\n }\n } else if (key === \"ArrowLeft\") {\n if (colIdx > 1) {\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 defaultHighlightedIndex?: number;\n disableFocus?: boolean;\n disableHighlightOnFocus?: boolean;\n highlightedIndex?: number;\n label?: string;\n navigationStyle: TableNavigationStyle;\n viewportRange: VuuRange;\n onHighlight?: (idx: number) => void;\n requestScroll?: ScrollRequestHandler;\n restoreLastFocus?: boolean;\n rowCount?: number;\n selected?: unknown;\n viewportRowCount: number;\n}\n\nexport const useKeyboardNavigation = ({\n columnCount = 0,\n containerRef,\n disableFocus = false,\n defaultHighlightedIndex,\n disableHighlightOnFocus,\n highlightedIndex: highlightedIndexProp,\n navigationStyle,\n requestScroll,\n onHighlight,\n rowCount = 0,\n viewportRowCount,\n}: // viewportRange,\nNavigationHookProps) => {\n // const { from: viewportFirstRow, to: viewportLastRow } = viewportRange;\n const focusedCellPos = useRef<CellPos>([-1, -1]);\n const focusableCell = useRef<HTMLElement>();\n const activeCellPos = useRef<CellPos>([-1, 0]);\n // Keep this in sync with state value. This can be used by functions that need\n // to reference highlightedIndex at call time but do not need to be regenerated\n // every time it changes (i.e keep highlightedIndex out of their dependency\n // arrays, as it can update frequently)\n const highlightedIndexRef = useRef<number | undefined>();\n\n const [highlightedIndex, setHighlightedIdx] = useControlled({\n controlled: highlightedIndexProp,\n default: defaultHighlightedIndex,\n name: \"UseKeyboardNavigation\",\n });\n highlightedIndexRef.current = highlightedIndex;\n const setHighlightedIndex = useCallback(\n (idx: number, fromKeyboard = false) => {\n onHighlight?.(idx);\n setHighlightedIdx(idx);\n if (fromKeyboard) {\n // lastFocus.current = idx;\n }\n },\n [onHighlight, setHighlightedIdx]\n );\n\n const getFocusedCell = (element: HTMLElement | Element | null) =>\n element?.closest(\n \"[role='columnHeader'],[role='cell']\"\n ) as HTMLDivElement | null;\n\n const getTableCellPos = (tableCell: HTMLDivElement): CellPos => {\n if (tableCell.role === \"columnHeader\") {\n const colIdx = parseInt(tableCell.dataset.idx ?? \"-1\", 10);\n return [-1, colIdx];\n } else {\n const focusedRow = tableCell.closest(\"[role='row']\");\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(containerRef, cellPos);\n if (activeCell) {\n if (activeCell !== focusableCell.current) {\n focusableCell.current?.removeAttribute(\"tabindex\");\n focusableCell.current = activeCell;\n activeCell.setAttribute(\"tabindex\", \"0\");\n }\n const [direction, distance] = howFarIsCellOutsideViewport(activeCell);\n if (direction && distance) {\n requestScroll?.({ type: \"scroll-distance\", distance, direction });\n }\n console.log(`activeCell focus`);\n activeCell.focus({ preventScroll: true });\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, requestScroll]\n );\n\n const setActiveCell = useCallback(\n (rowIdx: number, colIdx: number, fromKeyboard = false) => {\n const pos: CellPos = [rowIdx, colIdx];\n activeCellPos.current = pos;\n if (navigationStyle === \"row\") {\n setHighlightedIdx(rowIdx);\n } else {\n focusCell(pos);\n }\n if (fromKeyboard) {\n focusedCellPos.current = pos;\n }\n },\n [focusCell, navigationStyle, setHighlightedIdx]\n );\n\n const nextPageItemIdx = useCallback(\n (\n key: \"PageDown\" | \"PageUp\" | \"Home\" | \"End\",\n [rowIdx, colIdx]: CellPos\n ): Promise<CellPos> =>\n new Promise((resolve) => {\n let newRowIdx = rowIdx;\n switch (key) {\n case \"PageDown\":\n newRowIdx = Math.min(rowCount - 1, rowIdx + viewportRowCount);\n requestScroll?.({ type: \"scroll-page\", direction: \"down\" });\n break;\n case \"PageUp\":\n newRowIdx = Math.max(0, rowIdx - viewportRowCount);\n requestScroll?.({ type: \"scroll-page\", direction: \"up\" });\n break;\n case \"Home\":\n newRowIdx = 0;\n requestScroll?.({ type: \"scroll-end\", direction: \"home\" });\n break;\n case \"End\":\n newRowIdx = rowCount - 1;\n requestScroll?.({ type: \"scroll-end\", direction: \"end\" });\n break;\n }\n setTimeout(() => {\n resolve([newRowIdx, colIdx]);\n }, 90);\n }),\n [requestScroll, rowCount, viewportRowCount]\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 if (navigationStyle === \"row\") {\n setHighlightedIdx(focusedCellPos.current[0]);\n }\n }\n }\n }\n }, [\n disableHighlightOnFocus,\n containerRef,\n navigationStyle,\n setHighlightedIdx,\n ]);\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 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 scrollRowIntoViewIfNecessary = useCallback(\n (rowIndex: number) => {\n const { current: container } = containerRef;\n const activeRow = container?.querySelector(\n `[aria-rowindex=\"${rowIndex}\"]`\n ) as HTMLElement;\n if (activeRow) {\n const [direction, distance] = howFarIsRowOutsideViewport(activeRow);\n if (direction && distance) {\n requestScroll?.({ type: \"scroll-distance\", distance, direction });\n }\n }\n },\n [containerRef, requestScroll]\n );\n\n const moveHighlightedRow = useCallback(\n async (key: NavigationKey) => {\n const { current: highlighted } = highlightedIndexRef;\n const [nextRowIdx] = isPagingKey(key)\n ? await nextPageItemIdx(key, [highlighted ?? -1, 0])\n : nextCellPos(key, [highlighted ?? -1, 0], columnCount, rowCount);\n if (nextRowIdx !== highlighted) {\n setHighlightedIndex(nextRowIdx);\n scrollRowIntoViewIfNecessary(nextRowIdx);\n }\n },\n [\n columnCount,\n nextPageItemIdx,\n rowCount,\n scrollRowIntoViewIfNecessary,\n setHighlightedIndex,\n ]\n );\n\n useEffect(() => {\n if (highlightedIndexProp !== undefined && highlightedIndexProp !== -1) {\n scrollRowIntoViewIfNecessary(highlightedIndexProp);\n }\n }, [highlightedIndexProp, scrollRowIntoViewIfNecessary]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (rowCount > 0 && isNavigationKey(e.key, navigationStyle)) {\n e.preventDefault();\n e.stopPropagation();\n if (navigationStyle === \"row\") {\n moveHighlightedRow(e.key);\n } else {\n void navigateChildItems(e.key);\n }\n }\n },\n [rowCount, navigationStyle, moveHighlightedRow, 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 handleMouseLeave = useCallback(() => {\n setHighlightedIndex(-1);\n }, [setHighlightedIndex]);\n\n const handleMouseMove = useCallback(\n (evt: MouseEvent) => {\n const idx = closestRowIndex(evt.target as HTMLElement);\n if (idx !== -1 && idx !== highlightedIndexRef.current) {\n setHighlightedIndex(idx);\n }\n },\n [setHighlightedIndex]\n );\n\n const navigate = useCallback(() => {\n navigateChildItems(\"ArrowDown\");\n }, [navigateChildItems]);\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 && !disableFocus) {\n const { current: container } = containerRef;\n const cell = (container?.querySelector(headerCellQuery(0)) ||\n container?.querySelector(dataCellQuery(0, 0))) as HTMLElement;\n if (cell) {\n cell.setAttribute(\"tabindex\", \"0\");\n focusableCell.current = cell;\n }\n }\n }, [containerRef, disableFocus, fullyRendered]);\n\n return {\n highlightedIndexRef,\n navigate,\n onClick: handleClick,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n onMouseLeave: navigationStyle === \"row\" ? handleMouseLeave : undefined,\n onMouseMove: navigationStyle === \"row\" ? handleMouseMove : undefined,\n };\n};\n", "import {\n RowClickHandler,\n Selection,\n SelectionChangeHandler,\n TableSelectionModel,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n deselectItem,\n dispatchMouseEvent,\n isRowSelected,\n metadataKeys,\n selectItem,\n} from \"@vuu-ui/vuu-utils\";\nimport { DataSourceRow } from \"packages/vuu-data-types\";\nimport {\n KeyboardEvent,\n KeyboardEventHandler,\n MutableRefObject,\n useCallback,\n useRef,\n} from \"react\";\n\nconst { IDX } = metadataKeys;\n\nconst NO_SELECTION: Selection = [];\n\nconst defaultSelectionKeys = [\"Enter\", \" \"];\n\nexport interface SelectionHookProps {\n highlightedIndexRef: MutableRefObject<number | undefined>;\n selectionKeys?: string[];\n selectionModel: TableSelectionModel;\n onSelect?: (row: DataSourceRow) => void;\n onSelectionChange: SelectionChangeHandler;\n}\n\nexport const useSelection = ({\n highlightedIndexRef,\n selectionKeys = defaultSelectionKeys,\n selectionModel,\n onSelect,\n onSelectionChange,\n}: SelectionHookProps) => {\n selectionModel === \"extended\" || selectionModel === \"checkbox\";\n const lastActiveRef = useRef(-1);\n const selectedRef = useRef<Selection>(NO_SELECTION);\n\n const isSelectionEvent = useCallback(\n (evt: KeyboardEvent<HTMLElement>) => selectionKeys.includes(evt.key),\n [selectionKeys]\n );\n\n const handleRowClick = useCallback<RowClickHandler>(\n (row, rangeSelect, keepExistingSelection) => {\n const { [IDX]: idx } = row;\n const { current: active } = lastActiveRef;\n const { current: selected } = selectedRef;\n\n const selectOperation = isRowSelected(row) ? 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 onSelect?.(row);\n onSelectionChange?.(newSelected);\n },\n [onSelect, onSelectionChange, selectionModel]\n );\n\n const handleKeyDown = useCallback<KeyboardEventHandler<HTMLElement>>(\n (e) => {\n if (isSelectionEvent(e)) {\n const { current: rowIndex } = highlightedIndexRef;\n if (rowIndex !== undefined && rowIndex !== -1) {\n const rowEl = (e.target as HTMLElement).querySelector(\n `[aria-rowindex=\"${rowIndex}\"]`\n ) as HTMLElement;\n if (rowEl) {\n dispatchMouseEvent(rowEl, \"click\");\n }\n }\n }\n },\n [highlightedIndexRef, isSelectionEvent]\n );\n\n return {\n onKeyDown: handleKeyDown,\n onRowClick: handleRowClick,\n };\n};\n", "import { DataSource } from \"@vuu-ui/vuu-data\";\nimport { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { useContextMenu as usePopupContextMenu } from \"@vuu-ui/vuu-popups\";\nimport { buildColumnMap } from \"@vuu-ui/vuu-utils\";\nimport { MouseEvent, useCallback } from \"react\";\n\nexport interface TableContextMenuHookProps {\n columns: RuntimeColumnDescriptor[];\n data: DataSourceRow[];\n dataSource: DataSource;\n getSelectedRows: () => DataSourceRow[];\n}\n\nconst NO_ROWS = [] as const;\n\nexport const useTableContextMenu = ({\n columns,\n data,\n dataSource,\n getSelectedRows,\n}: TableContextMenuHookProps) => {\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(\"div[role='cell']\");\n const rowEl = target?.closest(\"div[role='row']\");\n if (cellEl && rowEl /*&& currentData && currentDataSource*/) {\n const { selectedRowsCount } = dataSource;\n const columnMap = buildColumnMap(columns);\n const rowIndex = parseInt(rowEl.ariaRowIndex ?? \"-1\");\n const cellIndex = Array.from(rowEl.childNodes).indexOf(cellEl);\n const row = data.find(([idx]) => idx === rowIndex);\n const columnName = columns[cellIndex];\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 [columns, data, dataSource, getSelectedRows, showContextMenu]\n );\n\n return onContextMenu;\n};\n", "import {\n ColumnDescriptor,\n RuntimeColumnDescriptor,\n PinLocation,\n TableAttributes,\n TableConfig,\n TableHeadings,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n applyFilterToColumns,\n applyGroupByToColumns,\n applySortToColumns,\n getCellRenderer,\n getColumnLabel,\n getTableHeadings,\n getValueFormatter,\n hasValidationRules,\n isFilteredColumn,\n isGroupColumn,\n isPinned,\n logger,\n metadataKeys,\n replaceColumn,\n sortPinnedColumns,\n stripFilterFromColumns,\n subscribedOnly,\n} from \"@vuu-ui/vuu-utils\";\n\nimport { DataSource, DataSourceConfig } from \"@vuu-ui/vuu-data\";\nimport { TableSchema } from \"@vuu-ui/vuu-data/src/message-utils\";\nimport { VuuColumnDataType, VuuTable } from \"@vuu-ui/vuu-protocol-types\";\nimport { buildValidationChecker } from \"@vuu-ui/vuu-ui-controls\";\nimport { Reducer, useReducer } from \"react\";\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 getDataType = (\n column: ColumnDescriptor,\n tableSchema?: TableSchema\n): VuuColumnDataType | undefined => {\n const schemaColumn = tableSchema?.columns.find(\n ({ name }) => name === column.name\n );\n if (schemaColumn) {\n return schemaColumn.serverDataType;\n } else {\n return column.serverDataType;\n }\n};\n\n/**\n * TableModel represents state used internally to manage Table. It is\n * derived initially from the TableConfig provided by user, along with the\n * data-related config from DataSource.\n */\nexport interface TableModel extends TableAttributes {\n columns: RuntimeColumnDescriptor[];\n headings: TableHeadings;\n}\n\n/**\n * InternalTableModel describes the state managed within the TableModel\n * reducer. It is the same as TableModel but with the addition of a\n * readonly copy of the original TableConfig.\n */\ninterface InternalTableModel extends TableModel {\n tableConfig: Readonly<TableConfig>;\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: TableConfig;\n dataSource: DataSource;\n}\n\nexport interface ColumnActionHide {\n type: \"hideColumns\";\n columns: RuntimeColumnDescriptor[];\n}\n\nexport interface ColumnActionShow {\n type: \"showColumns\";\n columns: RuntimeColumnDescriptor[];\n}\nexport interface ColumnActionMove {\n type: \"moveColumn\";\n column: RuntimeColumnDescriptor;\n moveBy?: 1 | -1;\n}\n\nexport interface ColumnActionPin {\n type: \"pinColumn\";\n column: ColumnDescriptor;\n pin?: PinLocation;\n}\n\nexport type ResizePhase = \"begin\" | \"resize\" | \"end\";\n\nexport interface ColumnActionResize {\n type: \"resizeColumn\";\n column: RuntimeColumnDescriptor;\n phase: ResizePhase;\n width?: number;\n}\n\nexport interface ColumnActionSetTableSchema {\n type: \"setTableSchema\";\n tableSchema: TableSchema;\n}\n\nexport interface ColumnActionUpdate {\n type: \"updateColumn\";\n column: ColumnDescriptor;\n}\n\nexport interface ColumnActionUpdateProp {\n align?: ColumnDescriptor[\"align\"];\n column: RuntimeColumnDescriptor;\n hidden?: ColumnDescriptor[\"hidden\"];\n label?: ColumnDescriptor[\"label\"];\n resizing?: RuntimeColumnDescriptor[\"resizing\"];\n type: \"updateColumnProp\";\n width?: ColumnDescriptor[\"width\"];\n}\n\nexport interface ColumnActionTableConfig extends DataSourceConfig {\n confirmed?: boolean;\n type: \"tableConfig\";\n}\n\nexport interface ColumnActionColumnSettings extends DataSourceConfig {\n type: \"columnSettings\";\n column: ColumnDescriptor;\n /** required only for calculated coplumns */\n vuuTable?: VuuTable;\n}\n\nexport interface ColumnActionTableSettings extends DataSourceConfig {\n type: \"tableSettings\";\n}\n\nexport const isShowColumnSettings = (\n action: PersistentColumnAction\n): action is ColumnActionColumnSettings => action.type === \"columnSettings\";\n\nexport const isShowTableSettings = (\n action: PersistentColumnAction\n): action is ColumnActionTableSettings => action.type === \"tableSettings\";\n\n/**\n * PersistentColumnActions are those actions that require us to persist user changes across sessions\n */\nexport type PersistentColumnAction =\n | ColumnActionPin\n | ColumnActionHide\n | ColumnActionColumnSettings\n | ColumnActionTableSettings;\n\nexport type GridModelAction =\n | ColumnActionHide\n | ColumnActionInit\n | ColumnActionMove\n | ColumnActionPin\n | ColumnActionResize\n | ColumnActionSetTableSchema\n | ColumnActionShow\n | ColumnActionUpdate\n | ColumnActionUpdateProp\n | ColumnActionTableConfig;\n\nexport type GridModelReducer = Reducer<InternalTableModel, GridModelAction>;\n\nexport type ColumnActionDispatch = (action: GridModelAction) => void;\n\nconst columnReducer: GridModelReducer = (state, action) => {\n info?.(`TableModelReducer ${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 \"setTableSchema\":\n return setTableSchema(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 tableConfigProp: TableConfig,\n dataSource: DataSource\n) => {\n const [state, dispatchColumnAction] = useReducer<\n GridModelReducer,\n InitialConfig\n >(columnReducer, { tableConfig: tableConfigProp, dataSource }, init);\n\n const { columns, headings, tableConfig, ...tableAttributes } = state;\n\n return {\n columns,\n dispatchColumnAction,\n headings,\n tableAttributes,\n tableConfig,\n };\n};\n\ntype InitialConfig = {\n dataSource: DataSource;\n tableConfig: TableConfig;\n};\n\nfunction init({ dataSource, tableConfig }: InitialConfig): InternalTableModel {\n const { columns, ...tableAttributes } = tableConfig;\n console.log(JSON.stringify(tableAttributes, null, 2));\n const { config: dataSourceConfig, tableSchema } = dataSource;\n const runtimeColumns = columns\n .filter(subscribedOnly(dataSourceConfig?.columns))\n .map(\n columnDescriptorToRuntimeColumDescriptor(tableAttributes, tableSchema)\n );\n\n const maybePinnedColumns = runtimeColumns.some(isPinned)\n ? sortPinnedColumns(runtimeColumns)\n : runtimeColumns;\n let state: InternalTableModel = {\n columns: maybePinnedColumns,\n headings: getTableHeadings(maybePinnedColumns),\n tableConfig,\n ...tableAttributes,\n };\n if (dataSourceConfig) {\n const { columns: _, ...rest } = dataSourceConfig;\n state = updateTableConfig(state, {\n type: \"tableConfig\",\n ...rest,\n });\n }\n return state;\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 columnDescriptorToRuntimeColumDescriptor =\n (tableAttributes: TableAttributes, tableSchema?: TableSchema) =>\n (\n column: ColumnDescriptor & { key?: number },\n index: number\n ): RuntimeColumnDescriptor => {\n const { columnDefaultWidth = DEFAULT_COLUMN_WIDTH, columnFormatHeader } =\n tableAttributes;\n const serverDataType = getDataType(column, tableSchema);\n const {\n align = getDefaultAlignment(serverDataType),\n key,\n name,\n label = getColumnLabel(column),\n width = columnDefaultWidth,\n ...rest\n } = column;\n\n const runtimeColumnWithDefaults = {\n ...rest,\n align,\n CellRenderer: getCellRenderer(column),\n HeaderCellLabelRenderer: getCellRenderer(column, \"col-label\"),\n HeaderCellContentRenderer: getCellRenderer(column, \"col-content\"),\n clientSideEditValidationCheck: hasValidationRules(column.type)\n ? buildValidationChecker(column.type.renderer.rules)\n : undefined,\n label: getLabel(label, columnFormatHeader),\n key: key ?? index + KEY_OFFSET,\n name,\n originalIdx: index,\n serverDataType,\n valueFormatter: getValueFormatter(column, serverDataType),\n width: width,\n };\n\n if (isGroupColumn(runtimeColumnWithDefaults)) {\n runtimeColumnWithDefaults.columns = runtimeColumnWithDefaults.columns.map(\n (col) =>\n columnDescriptorToRuntimeColumDescriptor(tableAttributes)(\n col,\n col.key\n )\n );\n }\n\n return runtimeColumnWithDefaults;\n };\n\nfunction moveColumn(\n state: InternalTableModel,\n // TODO do we ever use this ?\n { column, moveBy }: 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 }\n return state;\n}\n\nfunction hideColumns(state: InternalTableModel, { columns }: ColumnActionHide) {\n if (columns.some((col) => col.hidden !== true)) {\n return columns.reduce<InternalTableModel>((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: InternalTableModel, { columns }: ColumnActionShow) {\n if (columns.some((col) => col.hidden)) {\n return columns.reduce<InternalTableModel>((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: InternalTableModel,\n { column, phase, width }: ColumnActionResize\n) {\n const type = \"updateColumnProp\";\n const resizing = phase !== \"end\";\n switch (phase) {\n case \"begin\":\n return updateColumnProp(state, { type, column, resizing });\n case \"end\":\n return updateColumnProp(state, { type, column, resizing, width });\n case \"resize\":\n return updateColumnProp(state, { type, column, width });\n default:\n throw Error(`useTableModel.resizeColumn, invalid resizePhase ${phase}`);\n }\n}\n\nfunction setTableSchema(\n state: InternalTableModel,\n { tableSchema }: ColumnActionSetTableSchema\n) {\n const { columns } = state;\n if (columns.some(columnWithoutDataType)) {\n const cols = columns.map((column) => {\n const serverDataType = getDataType(column, tableSchema);\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: InternalTableModel, 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(\n state: InternalTableModel,\n action: ColumnActionUpdateProp\n) {\n let { columns, tableConfig } = 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 const targetConfigColumn = tableConfig.columns.find(\n (col) => col.name === column.name\n );\n if (targetConfigColumn) {\n tableConfig = {\n ...tableConfig,\n columns: replaceColumn<ColumnDescriptor>(tableConfig.columns, {\n ...targetConfigColumn,\n width,\n }),\n };\n }\n }\n }\n return {\n ...state,\n columns,\n tableConfig,\n } as InternalTableModel;\n}\n\nfunction updateTableConfig(\n state: InternalTableModel,\n { confirmed, filter, groupBy, sort }: ColumnActionTableConfig\n) {\n const hasGroupBy = groupBy !== undefined;\n const hasFilter = typeof filter?.filter === \"string\";\n const hasSort = sort && sort.sortDefs.length > 0;\n\n let result = state;\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", "import { useCallback, useRef } from \"react\";\n\nexport type ScrollDirectionVertical = \"up\" | \"down\";\nexport type ScrollDirectionHorizontal = \"left\" | \"right\";\nexport type ScrollDirection =\n | ScrollDirectionVertical\n | ScrollDirectionHorizontal;\n\nexport interface ScrollRequestEnd {\n type: \"scroll-end\";\n direction: \"home\" | \"end\";\n}\n\nexport interface ScrollRequestPage {\n type: \"scroll-page\";\n direction: ScrollDirectionVertical;\n}\n\nexport interface ScrollRequestDistance {\n direction: ScrollDirection;\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];\n};\n\ninterface CallbackRefHookProps<T = HTMLElement> {\n onAttach?: (el: T) => void;\n onDetach: (el: T) => void;\n label?: string;\n}\n\nconst useCallbackRef = <T = HTMLElement>({\n onAttach,\n onDetach,\n}: CallbackRefHookProps<T>) => {\n const ref = useRef<T | null>(null);\n const callbackRef = useCallback(\n (el: T | null) => {\n if (el) {\n ref.current = el;\n onAttach?.(el);\n } else if (ref.current) {\n const { current: originalRef } = ref;\n ref.current = el;\n onDetach?.(originalRef);\n }\n },\n [onAttach, onDetach]\n );\n return callbackRef;\n};\n\nexport interface TableScrollHookProps {\n maxScrollLeft: number;\n maxScrollTop: number;\n onHorizontalScroll?: (scrollLeft: number) => void;\n onVerticalScroll?: (scrollTop: number, pctScrollTop: number) => void;\n rowHeight: number;\n viewportRowCount: number;\n}\n\nexport const useTableScroll = ({\n maxScrollLeft,\n maxScrollTop,\n onHorizontalScroll,\n onVerticalScroll,\n rowHeight,\n viewportRowCount,\n}: TableScrollHookProps) => {\n const contentContainerScrolledRef = useRef(false);\n const scrollPosRef = useRef({ scrollTop: 0, scrollLeft: 0 });\n const scrollbarContainerRef = useRef<HTMLDivElement | null>(null);\n const contentContainerRef = useRef<HTMLDivElement | null>(null);\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 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 }\n }, [maxScrollLeft, maxScrollTop]);\n\n const handleContentContainerScroll = useCallback(() => {\n const { current: contentContainer } = contentContainerRef;\n const { current: scrollbarContainer } = scrollbarContainerRef;\n const { current: scrollPos } = scrollPosRef;\n\n if (contentContainer && scrollbarContainer) {\n const { scrollLeft, scrollTop } = contentContainer;\n const [pctScrollLeft, pctScrollTop] = getPctScroll(contentContainer);\n contentContainerScrolledRef.current = true;\n\n scrollbarContainer.scrollLeft = Math.round(pctScrollLeft * maxScrollLeft);\n scrollbarContainer.scrollTop = Math.round(pctScrollTop * maxScrollTop);\n\n if (scrollPos.scrollTop !== scrollTop) {\n scrollPos.scrollTop = scrollTop;\n onVerticalScroll?.(scrollTop, pctScrollTop);\n }\n if (scrollPos.scrollLeft !== scrollLeft) {\n scrollPos.scrollLeft = scrollLeft;\n onHorizontalScroll?.(scrollLeft);\n }\n }\n }, [maxScrollLeft, maxScrollTop, onHorizontalScroll, onVerticalScroll]);\n\n const handleAttachScrollbarContainer = useCallback(\n (el: HTMLDivElement) => {\n scrollbarContainerRef.current = el;\n el.addEventListener(\"scroll\", handleScrollbarContainerScroll, {\n passive: true,\n });\n },\n [handleScrollbarContainerScroll]\n );\n\n const handleDetachScrollbarContainer = useCallback(\n (el: HTMLDivElement) => {\n scrollbarContainerRef.current = null;\n el.removeEventListener(\"scroll\", handleScrollbarContainerScroll);\n },\n [handleScrollbarContainerScroll]\n );\n\n const handleAttachContentContainer = useCallback(\n (el: HTMLDivElement) => {\n contentContainerRef.current = el;\n el.addEventListener(\"scroll\", handleContentContainerScroll, {\n passive: true,\n });\n },\n [handleContentContainerScroll]\n );\n\n const handleDetachContentContainer = useCallback(\n (el: HTMLDivElement) => {\n contentContainerRef.current = null;\n el.removeEventListener(\"scroll\", handleContentContainerScroll);\n },\n [handleContentContainerScroll]\n );\n\n const contentContainerCallbackRef = useCallbackRef({\n onAttach: handleAttachContentContainer,\n onDetach: handleDetachContentContainer,\n });\n\n const scrollbarContainerCallbackRef = useCallbackRef({\n onAttach: handleAttachScrollbarContainer,\n onDetach: handleDetachScrollbarContainer,\n });\n\n //TODO should this be async ?\n const requestScroll: ScrollRequestHandler = useCallback(\n (scrollRequest) => {\n const { current: scrollbarContainer } = contentContainerRef;\n if (scrollbarContainer) {\n const { scrollLeft, scrollTop } = scrollbarContainer;\n contentContainerScrolledRef.current = false;\n if (scrollRequest.type === \"scroll-distance\") {\n let newScrollLeft = scrollLeft;\n let newScrollTop = scrollTop;\n if (\n scrollRequest.direction === \"up\" ||\n scrollRequest.direction === \"down\"\n ) {\n newScrollTop = Math.min(\n Math.max(0, scrollTop + scrollRequest.distance),\n maxScrollTop\n );\n } else {\n newScrollLeft = Math.min(\n Math.max(0, scrollLeft + scrollRequest.distance),\n maxScrollLeft\n );\n }\n scrollbarContainer.scrollTo({\n top: newScrollTop,\n left: newScrollLeft,\n behavior: \"smooth\",\n });\n } else if (scrollRequest.type === \"scroll-page\") {\n const { direction } = scrollRequest;\n const scrollBy =\n viewportRowCount * (direction === \"down\" ? rowHeight : -rowHeight);\n const newScrollTop = Math.min(\n Math.max(0, scrollTop + scrollBy),\n maxScrollTop\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 = direction === \"end\" ? maxScrollTop : 0;\n scrollbarContainer.scrollTo({\n top: scrollTo,\n left: scrollbarContainer.scrollLeft,\n behavior: \"auto\",\n });\n }\n }\n },\n [maxScrollLeft, maxScrollTop, rowHeight, viewportRowCount]\n );\n\n return {\n /** Ref to be assigned to ScrollbarContainer */\n scrollbarContainerRef: scrollbarContainerCallbackRef,\n /** Ref to be assigned to ContentContainer */\n contentContainerRef: contentContainerCallbackRef,\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 RuntimeColumnDescriptor,\n TableHeadings,\n} from \"@vuu-ui/vuu-table-types\";\nimport { useCallback, useMemo, useRef } from \"react\";\nimport { MeasuredSize } from \"@vuu-ui/vuu-layout\";\nimport {\n actualRowPositioning,\n RowAtPositionFunc,\n RowOffsetFunc,\n RowPositioning,\n virtualRowPositioning,\n} from \"@vuu-ui/vuu-utils\";\n\nexport interface TableViewportHookProps {\n columns: RuntimeColumnDescriptor[];\n headerHeight: number;\n headings: TableHeadings;\n rowCount: number;\n rowHeight: number;\n size: MeasuredSize | undefined;\n}\n\nexport interface ViewportMeasurements {\n contentHeight: number;\n horizontalScrollbarHeight: number;\n maxScrollContainerScrollHorizontal: number;\n maxScrollContainerScrollVertical: number;\n pinnedWidthLeft: number;\n pinnedWidthRight: number;\n rowCount: number;\n contentWidth: number;\n totalHeaderHeight: number;\n verticalScrollbarWidth: number;\n viewportBodyHeight: number;\n}\n\nexport interface TableViewportHookResult extends ViewportMeasurements {\n getRowAtPosition: RowAtPositionFunc;\n getRowOffset: RowOffsetFunc;\n setPctScrollTop: (scrollPct: number) => void;\n}\n\n// Too simplistic, it depends on rowHeight\nconst MAX_RAW_ROWS = 1_500_000;\n\nconst UNMEASURED_VIEWPORT: TableViewportHookResult = {\n contentHeight: 0,\n contentWidth: 0,\n getRowAtPosition: () => -1,\n getRowOffset: () => -1,\n horizontalScrollbarHeight: 0,\n maxScrollContainerScrollHorizontal: 0,\n maxScrollContainerScrollVertical: 0,\n pinnedWidthLeft: 0,\n pinnedWidthRight: 0,\n rowCount: 0,\n setPctScrollTop: () => undefined,\n totalHeaderHeight: 0,\n verticalScrollbarWidth: 0,\n viewportBodyHeight: 0,\n};\n\nconst measurePinnedColumns = (columns: RuntimeColumnDescriptor[]) => {\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 {\n pinnedWidthLeft: pinnedWidthLeft + 4,\n pinnedWidthRight: pinnedWidthRight + 4,\n unpinnedWidth,\n };\n};\n\nexport const useTableViewport = ({\n columns,\n headerHeight,\n headings,\n rowCount,\n rowHeight,\n size,\n}: TableViewportHookProps): TableViewportHookResult => {\n const pctScrollTopRef = useRef(0);\n const appliedRowCount = Math.min(rowCount, MAX_RAW_ROWS);\n const appliedContentHeight = appliedRowCount * rowHeight;\n const virtualContentHeight = rowCount * rowHeight;\n const virtualisedExtent = virtualContentHeight - appliedContentHeight;\n\n const { pinnedWidthLeft, pinnedWidthRight, unpinnedWidth } = useMemo(\n () => measurePinnedColumns(columns),\n [columns]\n );\n\n const [actualRowOffset, actualRowAtPosition] = useMemo<RowPositioning>(\n () => actualRowPositioning(rowHeight),\n [rowHeight]\n );\n\n const [getRowOffset, getRowAtPosition] = useMemo<RowPositioning>(() => {\n if (virtualisedExtent) {\n return virtualRowPositioning(\n rowHeight,\n virtualisedExtent,\n pctScrollTopRef\n );\n } else {\n return [actualRowOffset, actualRowAtPosition];\n }\n }, [actualRowAtPosition, actualRowOffset, virtualisedExtent, rowHeight]);\n\n const setPctScrollTop = useCallback((scrollPct: number) => {\n pctScrollTopRef.current = scrollPct;\n }, []);\n\n return useMemo(() => {\n if (size) {\n const headingsDepth = headings.length;\n const scrollbarSize = 15;\n const contentWidth = pinnedWidthLeft + unpinnedWidth + pinnedWidthRight;\n const horizontalScrollbarHeight =\n contentWidth > size.width ? scrollbarSize : 0;\n const totalHeaderHeight = headerHeight * (1 + headingsDepth);\n const maxScrollContainerScrollVertical =\n appliedContentHeight -\n ((size?.height ?? 0) - horizontalScrollbarHeight) +\n totalHeaderHeight;\n const maxScrollContainerScrollHorizontal =\n contentWidth - size.width + pinnedWidthLeft;\n const visibleRows = (size.height - headerHeight) / rowHeight;\n const count = Number.isInteger(visibleRows)\n ? visibleRows + 1\n : Math.ceil(visibleRows);\n const viewportBodyHeight = size.height - totalHeaderHeight;\n const verticalScrollbarWidth =\n appliedContentHeight > viewportBodyHeight ? scrollbarSize : 0;\n\n return {\n contentHeight: appliedContentHeight,\n getRowAtPosition,\n getRowOffset,\n horizontalScrollbarHeight,\n maxScrollContainerScrollHorizontal,\n maxScrollContainerScrollVertical,\n pinnedWidthLeft,\n pinnedWidthRight,\n rowCount: count,\n contentWidth,\n setPctScrollTop,\n totalHeaderHeight,\n verticalScrollbarWidth,\n viewportBodyHeight,\n };\n } else {\n return UNMEASURED_VIEWPORT;\n }\n }, [\n size,\n headings.length,\n pinnedWidthLeft,\n unpinnedWidth,\n pinnedWidthRight,\n appliedContentHeight,\n headerHeight,\n rowHeight,\n getRowAtPosition,\n getRowOffset,\n setPctScrollTop,\n ]);\n};\n", "import { RuntimeColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\nimport { RowAtPositionFunc } from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useEffect, useRef } from \"react\";\nimport { ViewportMeasurements } from \"@vuu-ui/vuu-table\";\n\nexport interface VirtualViewportHookProps {\n columns: RuntimeColumnDescriptor[];\n getRowAtPosition: RowAtPositionFunc;\n setRange: (range: VuuRange) => void;\n viewportMeasurements: ViewportMeasurements;\n}\n\nexport const useVirtualViewport = ({\n columns,\n getRowAtPosition,\n setRange,\n viewportMeasurements,\n}: VirtualViewportHookProps) => {\n const firstRowRef = useRef<number>(0);\n const { contentWidth, rowCount: viewportRowCount } = viewportMeasurements;\n\n const handleVerticalScroll = useCallback(\n (scrollTop: number) => {\n const firstRow = getRowAtPosition(scrollTop);\n if (firstRow !== firstRowRef.current) {\n firstRowRef.current = firstRow;\n setRange({ from: firstRow, to: firstRow + viewportRowCount });\n }\n },\n [getRowAtPosition, setRange, viewportRowCount]\n );\n\n useEffect(() => {\n const { current: from } = firstRowRef;\n const rowRange = { from, to: from + viewportRowCount };\n setRange(rowRange);\n }, [setRange, viewportRowCount]);\n\n return {\n onVerticalScroll: handleVerticalScroll,\n };\n};\n", "import {\n ColumnDescriptor,\n RuntimeColumnDescriptor,\n TableConfig,\n TableHeadings,\n} from \"@vuu-ui/vuu-table-types\";\nimport { isGroupColumn, isNotHidden } from \"@vuu-ui/vuu-utils\";\nimport cx from \"classnames\";\nimport { VuuSortType } from \"packages/vuu-protocol-types\";\nimport { TableColumnResizeHandler } from \"../column-resizing\";\nimport { GroupHeaderCellNext, HeaderCell } from \"../header-cell\";\nimport { useTableHeader } from \"./useTableHeader\";\n\nexport type ColumnSortHandler = (\n column: ColumnDescriptor,\n addToExistingSort: boolean,\n sortType?: VuuSortType\n) => void;\n\nexport interface TableHeaderProps {\n classBase?: string;\n columns: RuntimeColumnDescriptor[];\n headings: TableHeadings;\n onResizeColumn: TableColumnResizeHandler;\n onMoveColumn: (columns: ColumnDescriptor[]) => void;\n onMoveGroupColumn: (columns: ColumnDescriptor[]) => void;\n onRemoveGroupColumn: (column: RuntimeColumnDescriptor) => void;\n onSortColumn: ColumnSortHandler;\n tableConfig: TableConfig;\n tableId: string;\n}\n\nexport const TableHeader = ({\n classBase = \"vuuTable\",\n columns,\n headings,\n onMoveColumn,\n onMoveGroupColumn,\n onRemoveGroupColumn,\n onResizeColumn,\n onSortColumn,\n tableConfig,\n tableId,\n}: TableHeaderProps) => {\n const {\n containerRef,\n draggableColumn,\n draggedColumnIndex,\n onClick,\n onMouseDown,\n } = useTableHeader({\n columns,\n onMoveColumn,\n onSortColumn,\n tableConfig,\n });\n\n return (\n <div className={`${classBase}-col-headings`} ref={containerRef}>\n {headings.map((colHeaders, i) => (\n <div className=\"vuuTable-heading\" key={i}>\n {colHeaders.map(({ label, width }, j) => (\n <div key={j} className=\"vuuTable-headingCell\" style={{ width }}>\n {label}\n </div>\n ))}\n </div>\n ))}\n <div className={`${classBase}-col-headers`} role=\"row\">\n {columns.filter(isNotHidden).map((col, i) =>\n isGroupColumn(col) ? (\n <GroupHeaderCellNext\n column={col}\n data-index={i}\n key={col.name}\n onMoveColumn={onMoveGroupColumn}\n onRemoveColumn={onRemoveGroupColumn}\n onResize={onResizeColumn}\n />\n ) : (\n <HeaderCell\n className={cx({\n \"vuuDraggable-dragAway\": i === draggedColumnIndex,\n })}\n column={col}\n data-index={i}\n id={`${tableId}-col-${i}`}\n key={col.name}\n onClick={onClick}\n onMouseDown={onMouseDown}\n onResize={onResizeColumn}\n />\n )\n )}\n {draggableColumn}\n </div>\n </div>\n );\n};\n", "import { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { useDragDropNext as useDragDrop } from \"@vuu-ui/vuu-ui-controls\";\nimport { moveColumnTo, visibleColumnAtIndex } from \"@vuu-ui/vuu-utils\";\nimport { MouseEventHandler, useCallback, useRef } from \"react\";\nimport { TableHeaderProps } from \"./TableHeader\";\n\nexport interface TableHeaderHookProps\n extends Pick<\n TableHeaderProps,\n \"columns\" | \"onMoveColumn\" | \"onSortColumn\" | \"tableConfig\"\n > {\n label?: string;\n onMoveColumn: (columns: ColumnDescriptor[]) => void;\n onSortColumn: (column: ColumnDescriptor, addToExistingSort: boolean) => void;\n}\n\nexport const useTableHeader = ({\n columns,\n onMoveColumn,\n onSortColumn,\n tableConfig,\n}: TableHeaderHookProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n\n const handleDropColumnHeader = useCallback(\n (moveFrom: number, moveTo: number) => {\n const column = columns[moveFrom];\n // columns are what get rendered, so these are the columns that\n // the drop operation relates to. We must translate these into\n // columns within the table config. Grouping complicates this\n // as the group columns are not present in columns but ARE in\n // config.columns\n const orderedColumns = moveColumnTo(columns, column, moveTo);\n\n const ofColumn =\n ({ name }: ColumnDescriptor) =>\n (col: ColumnDescriptor) =>\n col.name === name;\n\n const targetIndex = orderedColumns.findIndex(ofColumn(column));\n const nextColumn = orderedColumns[targetIndex + 1];\n const insertPos = nextColumn\n ? tableConfig.columns.findIndex(ofColumn(nextColumn))\n : -1;\n\n onMoveColumn(moveColumnTo(tableConfig.columns, column, insertPos));\n },\n [columns, onMoveColumn, tableConfig.columns]\n );\n\n const handleColumnHeaderClick = useCallback<\n MouseEventHandler<HTMLDivElement>\n >(\n (evt) => {\n const targetElement = evt.target as HTMLElement;\n const headerCell = targetElement.closest(\n \".vuuTableHeaderCell\"\n ) as HTMLElement;\n const colIdx = parseInt(headerCell?.dataset.index ?? \"-1\");\n const column = visibleColumnAtIndex(columns, colIdx);\n const isAdditive = evt.shiftKey;\n column && onSortColumn(column, isAdditive);\n },\n [columns, onSortColumn]\n );\n\n // Drag Drop column headers\n const {\n onMouseDown: columnHeaderDragMouseDown,\n draggable: draggableColumn,\n ...dragDropHook\n } = useDragDrop({\n allowDragDrop: true,\n containerRef,\n draggableClassName: `vuuTable`,\n onDrop: handleDropColumnHeader,\n orientation: \"horizontal\",\n itemQuery: \".vuuTableHeaderCell\",\n });\n\n return {\n containerRef,\n draggableColumn,\n draggedColumnIndex: dragDropHook.draggedItemIndex,\n onClick: handleColumnHeaderClick,\n onMouseDown: columnHeaderDragMouseDown,\n };\n};\n", "import React, { memo, useCallback } from \"react\";\nimport { TableCellRendererProps } from \"@vuu-ui/vuu-table-types\";\nimport { CheckboxIcon, WarnCommit } from \"@vuu-ui/vuu-ui-controls\";\nimport { Checkbox } from \"@salt-ds/core\";\nimport { dataAndColumnUnchanged } from \"../cell-utils\";\nimport { dispatchCustomEvent, registerComponent } from \"@vuu-ui/vuu-utils\";\n\nexport const CheckboxCell: React.FC<TableCellRendererProps> = memo(\n ({ column, columnMap, onCommit = WarnCommit, row }) => {\n const dataIdx = columnMap[column.name];\n const isChecked = row[dataIdx];\n\n const handleCommit = useCallback(\n (value) => async (evt: React.MouseEvent) => {\n const res = await onCommit(value);\n if (res === true) {\n dispatchCustomEvent(evt.target as HTMLElement, \"vuu-commit\");\n }\n return res;\n },\n [onCommit]\n );\n\n return !!column.editable ? (\n <Checkbox checked={isChecked} onClick={handleCommit(!isChecked)} />\n ) : (\n <CheckboxIcon checked={isChecked} disabled={true} />\n );\n },\n dataAndColumnUnchanged\n);\nCheckboxCell.displayName = \"CheckboxCell\";\n\nregisterComponent(\"checkbox-cell\", CheckboxCell, \"cell-renderer\", {\n serverDataType: \"boolean\",\n});\n", "import { TableCellRendererProps } from \"packages/vuu-table-types\";\n/**\n * A memo compare function for cell renderers. Can be used to suppress\n * render where column and data are both unchanged. Avoids render\n * when row changes, where changes in row are unrelated to this cell.\n */\nexport const dataAndColumnUnchanged = (\n p: TableCellRendererProps,\n p1: TableCellRendererProps\n) =>\n p.column === p1.column &&\n p.row[p.columnMap[p.column.name]] === p1.row[p1.columnMap[p1.column.name]];\n", "import { useLookupValues } from \"@vuu-ui/vuu-data-react\";\nimport { ListOption, TableCellRendererProps } from \"@vuu-ui/vuu-table-types\";\nimport {\n Dropdown,\n DropdownOpenKey,\n SingleSelectionHandler,\n WarnCommit,\n} from \"@vuu-ui/vuu-ui-controls\";\nimport { dispatchCustomEvent, registerComponent } from \"@vuu-ui/vuu-utils\";\nimport { VuuColumnDataType } from \"@vuu-ui/vuu-protocol-types\";\nimport { memo, useCallback, useState } from \"react\";\nimport { dataAndColumnUnchanged } from \"../cell-utils\";\n\nimport \"./DropdownCell.css\";\n\nconst classBase = \"vuuTableDropdownCell\";\n\nconst openKeys: DropdownOpenKey[] = [\"Enter\", \" \"];\n\nexport const DropdownCell = memo(function DropdownCell({\n column,\n columnMap,\n onCommit = WarnCommit,\n row,\n}: TableCellRendererProps) {\n const dataIdx = columnMap[column.name];\n\n const { initialValue, values } = useLookupValues(column, row[dataIdx]);\n\n const [value, setValue] = useState<ListOption | null>(null);\n\n const handleSelectionChange = useCallback<SingleSelectionHandler<ListOption>>(\n (evt, selectedOption) => {\n if (selectedOption) {\n setValue(selectedOption);\n onCommit(selectedOption.value as VuuColumnDataType).then((response) => {\n if (response === true && evt) {\n dispatchCustomEvent(evt.target as HTMLElement, \"vuu-commit\");\n }\n });\n }\n },\n [onCommit]\n );\n\n return (\n <Dropdown<ListOption>\n className={classBase}\n onSelectionChange={handleSelectionChange}\n openKeys={openKeys}\n selected={value ?? initialValue}\n source={values}\n width={column.width - 17} // temp hack\n />\n );\n},\ndataAndColumnUnchanged);\n\nregisterComponent(\"dropdown-cell\", DropdownCell, \"cell-renderer\", {});\n", "import { TableCellRendererProps } from \"@vuu-ui/vuu-table-types\";\nimport { registerComponent } from \"@vuu-ui/vuu-utils\";\nimport { Input } from \"@salt-ds/core\";\nimport { useEditableText } from \"@vuu-ui/vuu-ui-controls\";\nimport cx from \"classnames\";\n// make sure all validators are loaded - how do we manage this ?\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { CaseValidator, PatternValidator } from \"@vuu-ui/vuu-table-extras\";\n\nimport \"./InputCell.css\";\n\nconst classBase = \"vuuTableInputCell\";\n\nconst WarnCommit = (): Promise<true> => {\n console.warn(\n \"onCommit handler has not been provided to InputCell cell renderer\"\n );\n return Promise.resolve(true);\n};\nexport const InputCell = ({\n column,\n columnMap,\n onCommit = WarnCommit,\n row,\n}: TableCellRendererProps) => {\n const dataIdx = columnMap[column.name];\n const {\n align = \"left\",\n clientSideEditValidationCheck,\n valueFormatter,\n } = column;\n\n const { warningMessage, ...editProps } = useEditableText({\n initialValue: valueFormatter(row[dataIdx]),\n onCommit,\n clientSideEditValidationCheck,\n });\n\n const endAdornment =\n warningMessage && align === \"left\" ? (\n <span className={`${classBase}-icon`} data-icon=\"error\" />\n ) : undefined;\n\n const startAdornment =\n warningMessage && align === \"right\" ? (\n <span className={`${classBase}-icon`} data-icon=\"error\" />\n ) : undefined;\n\n return (\n <Input\n {...editProps}\n className={cx(classBase, {\n [`${classBase}-error`]: warningMessage !== undefined,\n })}\n endAdornment={endAdornment}\n startAdornment={startAdornment}\n />\n );\n};\n\nregisterComponent(\"input-cell\", InputCell, \"cell-renderer\", {});\n", "import { useLookupValues } from \"@vuu-ui/vuu-data-react\";\nimport { TableCellRendererProps } from \"@vuu-ui/vuu-table-types\";\nimport { registerComponent } from \"@vuu-ui/vuu-utils\";\nimport { memo } from \"react\";\nimport { dataAndColumnUnchanged } from \"../cell-utils\";\n\n// const classBase = \"vuuTableLookupCell\";\n\nexport const LookupCell = memo(function LookupCell({\n column,\n columnMap,\n row,\n}: TableCellRendererProps) {\n const dataIdx = columnMap[column.name];\n const { initialValue: value } = useLookupValues(column, row[dataIdx]);\n return <span>{value?.label}</span>;\n},\ndataAndColumnUnchanged);\n\nregisterComponent(\"lookup-cell\", LookupCell, \"cell-renderer\", {});\n", "import {\n ColumnDescriptor,\n TableCellRendererProps,\n} from \"@vuu-ui/vuu-table-types\";\nimport { CycleStateButtonProps, WarnCommit } from \"@vuu-ui/vuu-ui-controls\";\nimport {\n dispatchCustomEvent,\n isTypeDescriptor,\n isValueListRenderer,\n registerComponent,\n} from \"@vuu-ui/vuu-utils\";\nimport cx from \"classnames\";\n\nimport { memo, useCallback } from \"react\";\nimport { dataAndColumnUnchanged } from \"../cell-utils\";\nimport { CycleStateButton } from \"@vuu-ui/vuu-ui-controls\";\n\nimport \"./ToggleCell.css\";\n\nconst classBase = \"vuuTableToggleCell\";\n\nconst getValueList = ({ name, type }: ColumnDescriptor) => {\n if (isTypeDescriptor(type) && isValueListRenderer(type.renderer)) {\n return type.renderer.values;\n } else {\n throw Error(\n `useLookupValues column ${name} has not been configured with a values list`\n );\n }\n};\n\nexport const ToggleCell = memo(function ToggleCell({\n column,\n columnMap,\n onCommit = WarnCommit,\n row,\n}: TableCellRendererProps) {\n const values = getValueList(column);\n const dataIdx = columnMap[column.name];\n const value = row[dataIdx];\n\n const handleCommit = useCallback<CycleStateButtonProps[\"onCommit\"]>(\n (evt, value) => {\n return onCommit(value).then((response) => {\n if (response === true) {\n dispatchCustomEvent(evt.target as HTMLElement, \"vuu-commit\");\n }\n return response;\n });\n },\n [onCommit]\n );\n\n return (\n <CycleStateButton\n className={cx(classBase, `${classBase}-${column.name}`)}\n onCommit={handleCommit}\n value={value}\n values={values}\n variant=\"cta\"\n >\n {value}\n </CycleStateButton>\n );\n},\ndataAndColumnUnchanged);\n\nregisterComponent(\"toggle-cell\", ToggleCell, \"cell-renderer\", {});\n", "import { useStateRef } from \"@vuu-ui/vuu-ui-controls\";\nimport { dispatchMouseEvent } from \"@vuu-ui/vuu-utils\";\nimport { KeyboardEventHandler, useCallback, useRef } from \"react\";\n\nexport const useControlledTableNavigation = (\n initialValue: number,\n rowCount: number\n) => {\n const tableRef = useRef<HTMLDivElement>(null);\n\n const [highlightedIndexRef, setHighlightedIndex] = useStateRef<\n number | undefined\n >(initialValue);\n\n const handleKeyDown = useCallback<KeyboardEventHandler>(\n (e) => {\n if (e.key === \"ArrowDown\") {\n setHighlightedIndex((index = -1) => Math.min(rowCount - 1, index + 1));\n } else if (e.key === \"ArrowUp\") {\n setHighlightedIndex((index = -1) => Math.max(0, index - 1));\n } else if (e.key === \"Enter\" || e.key === \" \") {\n const { current: rowIdx } = highlightedIndexRef;\n // induce an onSelect event by 'clicking' the row\n const rowEl = tableRef.current?.querySelector(\n `[aria-rowindex=\"${rowIdx}\"]`\n ) as HTMLElement;\n if (rowEl) {\n dispatchMouseEvent(rowEl, \"click\");\n }\n }\n },\n [highlightedIndexRef, rowCount, setHighlightedIndex]\n );\n\n const handleHighlight = useCallback(\n (idx: number) => {\n setHighlightedIndex(idx);\n },\n [setHighlightedIndex]\n );\n\n return {\n highlightedIndexRef,\n onHighlight: handleHighlight,\n onKeyDown: handleKeyDown,\n tableRef,\n };\n};\n", "import { DataSourceConfig, SchemaColumn } from \"@vuu-ui/vuu-data\";\nimport { ColumnDescriptor, TableConfig } from \"@vuu-ui/vuu-table-types\";\nimport { useLayoutProviderDispatch } from \"@vuu-ui/vuu-layout\";\nimport {\n ColumnSettingsProps,\n TableSettingsProps,\n} from \"@vuu-ui/vuu-table-extras\";\nimport { ColumnActionColumnSettings } from \"@vuu-ui/vuu-table\";\nimport { getCalculatedColumnType } from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useRef, useState } from \"react\";\n\nexport interface TableAndColumnSettingsHookProps {\n availableColumns: SchemaColumn[];\n onAvailableColumnsChange?: (columns: SchemaColumn[]) => void;\n onConfigChange: (config: TableConfig) => void;\n onCreateCalculatedColumn: (column: ColumnDescriptor) => void;\n onDataSourceConfigChange: (dataSourceConfig: DataSourceConfig) => void;\n tableConfig: TableConfig;\n}\nexport const useTableAndColumnSettings = ({\n availableColumns: availableColumnsProps,\n onAvailableColumnsChange,\n onConfigChange,\n onCreateCalculatedColumn,\n onDataSourceConfigChange,\n tableConfig,\n}: TableAndColumnSettingsHookProps) => {\n const dispatchLayoutAction = useLayoutProviderDispatch();\n const showTableSettingsRef = useRef<() => void>();\n\n const [availableColumns, setAvailableColumns] = useState<SchemaColumn[]>(\n availableColumnsProps\n );\n\n const showContextPanel = useCallback(\n (\n componentType: string,\n title: string,\n props: TableSettingsProps | ColumnSettingsProps\n ) => {\n dispatchLayoutAction({\n type: \"set-props\",\n path: \"#context-panel\",\n props: {\n expanded: true,\n content: {\n type: componentType,\n props,\n },\n title,\n },\n });\n },\n [dispatchLayoutAction]\n );\n\n const handleCancelCreateColumn = useCallback(() => {\n requestAnimationFrame(() => {\n showTableSettingsRef.current?.();\n });\n }, []);\n\n const handleCreateCalculatedColumn = useCallback(\n (column: ColumnDescriptor) => {\n const newAvailableColumns = availableColumns.concat({\n name: column.name,\n serverDataType: getCalculatedColumnType(column),\n });\n setAvailableColumns(newAvailableColumns);\n onAvailableColumnsChange?.(newAvailableColumns);\n requestAnimationFrame(() => {\n showTableSettingsRef.current?.();\n });\n onCreateCalculatedColumn(column);\n },\n [availableColumns, onAvailableColumnsChange, onCreateCalculatedColumn]\n );\n\n const showColumnSettingsPanel = useCallback(\n (action: ColumnActionColumnSettings) => {\n showContextPanel(\"ColumnSettings\", \"Column Settings\", {\n column: action.column,\n onCancelCreateColumn: handleCancelCreateColumn,\n onConfigChange,\n onCreateCalculatedColumn: handleCreateCalculatedColumn,\n tableConfig,\n vuuTable: action.vuuTable,\n } as ColumnSettingsProps);\n },\n [\n handleCancelCreateColumn,\n handleCreateCalculatedColumn,\n onConfigChange,\n showContextPanel,\n tableConfig,\n ]\n );\n\n const handleAddCalculatedColumn = useCallback(() => {\n showColumnSettingsPanel({\n column: {\n name: \"::\",\n serverDataType: \"string\",\n },\n type: \"columnSettings\",\n vuuTable: { module: \"SIMUL\", table: \"instruments\" },\n });\n }, [showColumnSettingsPanel]);\n\n const handleNavigateToColumn = useCallback(\n (columnName: string) => {\n const column = tableConfig.columns.find((c) => c.name === columnName);\n if (column) {\n showColumnSettingsPanel({\n type: \"columnSettings\",\n column,\n //TODO where do we get this from\n vuuTable: { module: \"SIMUL\", table: \"instruments\" },\n });\n }\n },\n [showColumnSettingsPanel, tableConfig.columns]\n );\n\n showTableSettingsRef.current = useCallback(() => {\n showContextPanel(\"TableSettings\", \"DataGrid Settings\", {\n availableColumns:\n availableColumns ??\n tableConfig.columns.map(({ name, serverDataType }) => ({\n name,\n serverDataType,\n })),\n onAddCalculatedColumn: handleAddCalculatedColumn,\n onConfigChange,\n onDataSourceConfigChange,\n onNavigateToColumn: handleNavigateToColumn,\n tableConfig,\n } as TableSettingsProps);\n }, [\n availableColumns,\n handleAddCalculatedColumn,\n handleNavigateToColumn,\n onConfigChange,\n onDataSourceConfigChange,\n showContextPanel,\n tableConfig,\n ]);\n\n return {\n showColumnSettingsPanel,\n showTableSettingsPanel: showTableSettingsRef.current,\n };\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["src_exports", "__export", "BackgroundCell", "BackgroundCellConfigurationEditor", "CaseValidator", "ColumnExpressionInput", "ColumnExpressionPanel", "ColumnFormattingPanel", "ColumnList", "ColumnNamedTerms", "ColumnSettingsPanel", "DataSourceStats", "NumericFormattingSettings", "PatternValidator", "TableSettingsPanel", "columnExpressionLanguageSupport", "isCompleteExpression", "isCompleteRelationalExpression", "lastNamedChild", "useColumnExpressionEditor", "useColumnExpressionSuggestionProvider", "useTableAndColumnSettings", "useTableSettings", "walkTree", "__toCommonJS", "import_vuu_utils", "isString", "value", "CaseValidator", "rule", "import_vuu_utils", "isString", "value", "defaultMessage", "PatternValidator", "rule", "message", "import_vuu_utils", "import_classnames", "import_jsx_runtime", "classBase", "ProgressCell", "column", "columnMap", "row", "type", "value", "showProgress", "percentage", "associatedField", "associatedValue", "floatValue", "floatOtherValue", "className", "cx", "import_vuu_utils", "import_classnames", "import_vuu_utils", "import_react", "INITIAL_VALUE", "useDirection", "key", "value", "column", "_a", "ref", "prevKey", "prevValue", "prevColumn", "prevDirection", "dataType", "decimals", "direction", "import_jsx_runtime", "CHAR_ARROW_UP", "CHAR_ARROW_DOWN", "KEY", "classBase", "FlashStyle", "getFlashStyle", "colType", "BackgroundCell", "column", "columnMap", "row", "name", "type", "valueFormatter", "dataIdx", "value", "flashStyle", "direction", "useDirection", "arrow", "dirClass", "className", "cx", "import_vuu_utils", "import_core", "import_vuu_ui_controls", "import_react", "import_jsx_runtime", "classBase", "flashOptions", "defaultFlashOption", "valueFromColumn", "column", "flashStyle", "BackgroundCellConfigurationEditor", "onChangeRendering", "setFlashStyle", "handleSelectionChange", "_", "flashOption", "_a", "renderProps", "import_vuu_ui_controls", "import_core", "import_lab", "import_classnames", "import_react", "import_vuu_utils", "import_jsx_runtime", "classBase", "classBaseListItem", "ColumnListItem", "classNameProp", "item", "listItemProps", "cx", "ColumnList", "columnItems", "onChange", "onMoveListItem", "onNavigateToColumn", "htmlAttributes", "handleChange", "evt", "input", "listItem", "name", "saltSwitch", "saltCheckbox", "handleClick", "targetEl", "listItemEl", "import_vuu_ui_controls", "import_vuu_utils", "import_core", "import_classnames", "import_vuu_ui_controls", "import_vuu_utils", "import_core", "import_react", "import_react", "import_vuu_codemirror", "import_vuu_utils", "import_react", "import_vuu_codemirror", "import_lr", "parser", "columnExpressionLanguage", "parser", "tag", "columnExpressionLanguageSupport", "LiteralExpressionImpl", "value", "ColumnExpressionImpl", "columnName", "_expressions", "_op", "ArithmeticExpressionImpl", "op", "__privateAdd", "__privateSet", "__privateGet", "CallExpressionImpl", "functionName", "e", "_a", "RelationalExpressionImpl", "BooleanConditionImp", "booleanOperator", "ConditionalExpressionImpl", "expression", "_b", "_c", "_d", "_e", "isUnknown", "isArithmeticExpression", "isCallExpression", "isConditionalExpression", "isCondition", "isBooleanCondition", "expression", "isRelationalExpression", "firstIncompleteExpression", "expression", "isUnknown", "isRelationalExpression", "operand1", "operand2", "expressionIsIncomplete", "isCondition", "expressions", "e", "isConditionalExpression", "condition", "truthyExpression", "falsyExpression", "isArithmeticExpression", "replaceUnknownExpression", "incompleteExpression", "unknownExpression", "pos", "isBooleanCondition", "addExpression", "subExpression", "targetExpression", "_expression", "_callStack", "ColumnExpression", "__privateAdd", "booleanOperator", "__privateGet", "ConditionalExpressionImpl", "BooleanConditionImp", "RelationalExpressionImpl", "currentCallExpression", "__privateSet", "functionName", "callExpression", "CallExpressionImpl", "columnName", "ColumnExpressionImpl", "value", "op", "literalExpression", "LiteralExpressionImpl", "isCallExpression", "_a", "walkTree", "tree", "source", "columnExpression", "cursor", "name", "from", "to", "ArithmeticExpressionImpl", "strictParser", "parser", "RelationalOperands", "ColumnNamedTerms", "isCompleteExpression", "src", "lastNamedChild", "node", "lastChild", "isCompleteRelationalExpression", "firstChild", "import_vuu_codemirror", "myHighlightStyle", "vuuHighlighting", "import_vuu_codemirror", "vuuTheme", "import_vuu_codemirror", "import_react", "applyPrefix", "completions", "prefix", "completion", "_a", "isOperator", "node", "completionDone", "onSubmit", "getLastChild", "context", "childNode", "pos", "ColumnNamedTerms", "expression", "getFunctionName", "state", "functionNode", "maybeFunction", "getRelationalOperator", "lastNode", "lastNamedChild", "prevNode", "getColumnName", "makeSuggestions", "suggestionProvider", "suggestionType", "optionalArgs", "options", "startsWith", "handleConditionalExpression", "maybeComplete", "lastChild", "promptToSave", "useColumnAutoComplete", "_b", "word", "nodeBefore", "text", "isCompleteExpression", "prevChild", "isCompleteRelationalExpression", "operator", "columnName", "from", "to", "functionName", "lastArgument", "columnOptions", "lastExpressionChild", "suggestions", "parentNode", "getView", "ref", "getOptionClass", "noop", "hasExpressionType", "completion", "injectOptionContent", "div", "span", "useColumnExpressionEditor", "onChange", "onSubmitExpression", "source", "suggestionProvider", "editorRef", "onSubmitRef", "viewRef", "completionFn", "useColumnAutoComplete", "createState", "clearInput", "submit", "parseExpression", "view", "tree", "expression", "walkTree", "submitExpression", "showSuggestions", "key", "columnExpressionLanguageSupport", "v", "tr", "vuuTheme", "vuuHighlighting", "_a", "handleBlur", "import_jsx_runtime", "classBase", "ColumnExpressionInput", "onChange", "onSubmitExpression", "source", "suggestionProvider", "editorRef", "onBlur", "useColumnExpressionEditor", "prevProps", "newProps", "import_vuu_codemirror", "import_vuu_data_react", "import_vuu_utils", "import_react", "columnFunctionDescriptors", "import_vuu_utils", "functionDocInfo", "name", "description", "example", "params", "type", "rootElement", "headingElement", "nameElement", "paramElement", "typeElement", "child2", "exampleElement", "expressionElement", "resultElement", "NO_OPERATORS", "withApplySpace", "suggestions", "suggestion", "_a", "getValidColumns", "columns", "functionName", "operator", "fn", "columnFunctionDescriptors", "f", "getColumns", "options", "column", "label", "arithmeticOperators", "getOperators", "getConditionOperators", "toFunctionCompletion", "functionDescriptor", "functionDocInfo", "getAcceptedTypes", "s", "functions", "getFunctions", "acceptedTypes", "NONE", "useColumnExpressionSuggestionProvider", "table", "findColumn", "name", "col", "latestSuggestionsRef", "getTypeaheadSuggestions", "getSuggestions", "suggestionType", "columnName", "prefix", "params", "view", "completion", "from", "annotation", "cursorPos", "isPartialMatch", "valueType", "pattern", "latestSuggestions", "maybe", "option", "import_vuu_utils", "import_react", "applyDefaults", "column", "name", "expression", "type", "useColumnExpression", "columnProp", "onChangeNameProp", "_setColumn", "columnRef", "setColumn", "onChangeName", "evt", "value", "newColumn", "onChangeExpression", "onChangeType", "import_jsx_runtime", "classBase", "ColumnExpressionPanel", "columnProp", "onChangeNameProp", "tableConfig", "vuuTable", "typeRef", "column", "onChangeExpression", "onChangeName", "onChangeType", "useColumnExpression", "initialExpressionRef", "suggestionProvider", "useColumnExpressionSuggestionProvider", "handleSubmitExpression", "_a", "_b", "ColumnExpressionInput", "import_vuu_ui_controls", "import_vuu_utils", "import_core", "import_classnames", "import_react", "import_core", "import_lab", "import_vuu_utils", "import_react", "import_jsx_runtime", "classBase", "NumericFormattingSettings", "column", "onChange", "_a", "_b", "_c", "formattingSettings", "setFormattingSettings", "handleInputKeyDown", "evt", "handleChangeDecimals", "value", "numericValue", "newFormattingSettings", "handleChangeAlignDecimals", "checked", "handleChangeZeroPad", "import_jsx_runtime", "classBase", "itemToString", "item", "_a", "ColumnFormattingPanel", "availableRenderers", "className", "column", "onChangeFormatting", "onChangeRendering", "htmlAttributes", "contentForType", "NumericFormattingSettings", "ConfigEditor", "type", "cellRendererOptions", "selectedCellRenderer", "defaultRenderer", "rendererName", "configuredRenderer", "renderer", "handleChangeRenderer", "evt", "cellRendererDescriptor", "renderProps", "serverDataType", "cx", "import_classnames", "import_vuu_utils", "import_jsx_runtime", "classBase", "ColumnNameLabel", "column", "onClick", "name", "type", "expression", "displayName", "displayExpression", "nameClass", "expressionClass", "cx", "import_vuu_utils", "import_react", "integerCellRenderers", "doubleCellRenderers", "stringCellRenderers", "getAvailableCellRenderers", "column", "getFieldName", "input", "saltFormField", "field", "getColumn", "columns", "col", "replaceColumn", "tableConfig", "useColumnSettings", "columnProp", "onCancelCreateColumn", "onConfigChange", "onCreateCalculatedColumn", "setColumn", "columnRef", "inEditMode", "setEditMode", "handleEditCalculatedcolumn", "availableRenderers", "handleInputCommit", "handleChange", "evt", "fieldName", "value", "state", "newColumn", "handleChangeCalculatedColumnName", "name", "handleChangeFormatting", "formatting", "handleChangeRendering", "renderProps", "navigateColumn", "moveBy", "index", "navigateNextColumn", "navigatePrevColumn", "handleSaveCalculatedColumn", "handleCancelEdit", "import_jsx_runtime", "classBase", "getColumnLabel", "column", "name", "label", "ColumnSettingsPanel", "columnProp", "onCancelCreateColumn", "onConfigChange", "onCreateCalculatedColumn", "tableConfig", "vuuTable", "isNewCalculatedColumn", "availableRenderers", "editCalculatedColumn", "navigateNextColumn", "navigatePrevColumn", "onCancel", "onChange", "onChangeCalculatedColumnName", "onChangeFormatting", "onChangeRendering", "onEditCalculatedColumn", "onInputCommit", "onSave", "useColumnSettings", "serverDataType", "align", "pin", "width", "cx", "ColumnNameLabel", "ColumnExpressionPanel", "ColumnFormattingPanel", "import_react", "import_classnames", "import_jsx_runtime", "classBase", "numberFormatter", "DataSourceStats", "classNameProp", "dataSource", "range", "setRange", "size", "setSize", "className", "cx", "from", "to", "value", "import_core", "import_vuu_layout", "import_classnames", "import_react", "import_react", "import_jsx_runtime", "NOOP", "baseClass", "ColumnResizer", "onDrag", "onDragEnd", "onDragStart", "position", "onMouseMove", "e", "x", "moveBy", "onMouseUp", "handleMouseDown", "import_react", "useTableColumnResize", "column", "onResize", "rootRef", "widthRef", "isResizing", "setResizing", "name", "handleResizeStart", "width", "handleResize", "_evt", "moveBy", "newWidth", "handleResizeEnd", "import_vuu_utils", "import_classnames", "import_react", "useCell", "column", "classBase", "isHeader", "className", "cx", "style", "import_classnames", "import_react", "import_jsx_runtime", "classBase", "ColumnHeaderPill", "children", "className", "column", "onRemove", "removable", "htmlAttributes", "handleClickRemove", "evt", "cx", "import_jsx_runtime", "GroupColumnPill", "column", "columnHeaderProps", "name", "sorted", "icon", "ColumnHeaderPill", "import_jsx_runtime", "SortIndicator", "column", "icon", "ColumnHeaderPill", "import_vuu_layout", "import_jsx_runtime", "import_react", "classBase", "switchIfChanged", "columns", "newColumns", "GroupHeaderCellNext", "groupColumn", "classNameProp", "onMoveColumn", "onRemoveColumn", "onResize", "htmlAttributes", "rootRef", "isResizing", "resizeProps", "useTableColumnResize", "setColumns", "className", "style", "useCell", "columnPillProps", "handleMoveItem", "fromIndex", "toIndex", "cols", "newCols", "tab", "result", "cx", "column", "GroupColumnPill", "ColumnHeaderPill", "ColumnResizer", "import_react", "import_vuu_popups", "import_classnames", "import_react", "import_jsx_runtime", "getPosition", "element", "bottom", "left", "ColumnMenu", "className", "column", "props", "rootRef", "menuOpen", "setMenuOpen", "showContextMenu", "handleMenuClose", "showColumnMenu", "e", "cx", "import_classnames", "import_jsx_runtime", "classBase", "HeaderCell", "classNameProp", "column", "onClick", "onResize", "htmlAttributes", "_a", "HeaderCellContentRenderer", "HeaderCellLabelRenderer", "rootRef", "isResizing", "resizeProps", "useTableColumnResize", "handleClick", "evt", "className", "style", "useCell", "columnMenu", "ColumnMenu", "columnLabel", "columnContent", "sortIndicator", "SortIndicator", "headerItems", "cx", "ColumnResizer", "import_vuu_layout", "import_vuu_popups", "import_vuu_utils", "import_core", "import_classnames", "import_react", "import_vuu_utils", "import_classnames", "import_react", "import_vuu_utils", "import_react", "import_jsx_runtime", "classBase", "TableCell", "column", "columnMap", "onClick", "onDataEdited", "row", "className", "style", "useCell", "CellRenderer", "name", "valueFormatter", "dataIdx", "handleDataItemEdited", "value", "typedValue", "handleClick", "evt", "import_vuu_utils", "import_react", "import_classnames", "import_jsx_runtime", "IS_LEAF", "classBase", "TableGroupCell", "column", "onClick", "row", "columns", "value", "offset", "className", "style", "useCell", "handleClick", "evt", "isLeaf", "spacers", "n", "i", "cx", "import_jsx_runtime", "import_react", "IDX", "IS_EXPANDED", "SELECTED", "classBase", "Row", "classNameProp", "columnMap", "columns", "highlighted", "row", "offset", "onClick", "onDataEdited", "onToggleGroup", "zebraStripes", "htmlAttributes", "rowIndex", "isExpanded", "selectionStatus", "handleRowClick", "evt", "rangeSelect", "keepExistingSelection", "True", "First", "Last", "className", "cx", "style", "handleGroupCellClick", "column", "isGroup", "isJsonCell", "TableGroupCell", "TableCell", "import_vuu_layout", "import_vuu_ui_controls", "import_vuu_utils", "import_react", "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_utils", "removeFilterColumn", "dataSourceFilter", "column", "filterStruct", "filter", "Average", "Count", "Distinct", "High", "Low", "Sum", "useHandleTableContextMenu", "dataSource", "onPersistentColumnOperation", "action", "gridOptions", "name", "updateTableConfig", "config", "action", "col", "import_vuu_utils", "import_react", "headerCellQuery", "colIdx", "dataCellQuery", "rowIdx", "getTableCell", "containerRef", "_a", "cssQuery", "cell", "cellIsEditable", "cellIsTextInput", "getRowIndex", "rowEl", "idx", "closestRow", "el", "closestRowIndex", "useCellEditing", "navigate", "commitHandler", "editInput", "evt", "cellEl", "input", "focusInput", "handleKeyDown", "e", "el", "cellIsTextInput", "handleDoubleClick", "handleBlur", "handleFocus", "import_vuu_data", "import_vuu_utils", "import_react", "import_vuu_utils", "SELECTED", "MovingWindow", "from", "to", "rowCount", "data", "index", "internalIndex", "previousRow", "overlapFrom", "overlapTo", "newData", "row", "useDataSource", "dataSource", "onFeatureInvocation", "onSizeChange", "onSubscribed", "range", "renderBufferSize", "forceUpdate", "data", "isMounted", "hasUpdated", "rangeRef", "dataWindow", "MovingWindow", "setData", "updates", "row", "datasourceMessageHandler", "message", "getSelectedRows", "_a", "setRange", "fullRange", "import_react", "useInitialValue", "value", "ref", "import_core", "import_react", "rowNavigationKeys", "cellNavigationKeys", "isNavigationKey", "key", "navigationStyle", "PageKeys", "isPagingKey", "NULL_CELL_POS", "NO_SCROLL_NECESSARY", "howFarIsRowOutsideViewport", "rowEl", "contentContainer", "viewport", "row", "howFarIsCellOutsideViewport", "cellEl", "_a", "result", "cell", "nextCellPos", "rowIdx", "colIdx", "columnCount", "rowCount", "useKeyboardNavigation", "containerRef", "disableFocus", "defaultHighlightedIndex", "disableHighlightOnFocus", "highlightedIndexProp", "requestScroll", "onHighlight", "viewportRowCount", "focusedCellPos", "focusableCell", "activeCellPos", "highlightedIndexRef", "highlightedIndex", "setHighlightedIdx", "setHighlightedIndex", "idx", "fromKeyboard", "getFocusedCell", "element", "getTableCellPos", "tableCell", "_b", "focusedRow", "focusCell", "cellPos", "activeCell", "getTableCell", "direction", "distance", "setActiveCell", "pos", "nextPageItemIdx", "resolve", "newRowIdx", "handleFocus", "focusedCell", "navigateChildItems", "nextRowIdx", "nextColIdx", "scrollRowIntoViewIfNecessary", "rowIndex", "container", "activeRow", "moveHighlightedRow", "highlighted", "handleKeyDown", "e", "handleClick", "evt", "target", "handleMouseLeave", "handleMouseMove", "closestRowIndex", "navigate", "fullyRendered", "headerCellQuery", "dataCellQuery", "import_vuu_utils", "import_react", "IDX", "NO_SELECTION", "defaultSelectionKeys", "useSelection", "highlightedIndexRef", "selectionKeys", "selectionModel", "onSelect", "onSelectionChange", "lastActiveRef", "selectedRef", "isSelectionEvent", "evt", "handleRowClick", "row", "rangeSelect", "keepExistingSelection", "idx", "active", "selected", "newSelected", "e", "rowIndex", "rowEl", "import_vuu_popups", "import_vuu_utils", "import_react", "NO_ROWS", "useTableContextMenu", "columns", "data", "dataSource", "getSelectedRows", "showContextMenu", "usePopupContextMenu", "evt", "_a", "target", "cellEl", "rowEl", "selectedRowsCount", "columnMap", "rowIndex", "cellIndex", "row", "idx", "columnName", "import_vuu_utils", "import_vuu_ui_controls", "import_react", "info", "DEFAULT_COLUMN_WIDTH", "KEY_OFFSET", "columnWithoutDataType", "serverDataType", "getDataType", "column", "tableSchema", "schemaColumn", "name", "numericTypes", "getDefaultAlignment", "isShowColumnSettings", "action", "isShowTableSettings", "columnReducer", "state", "init", "moveColumn", "resizeColumn", "setTableSchema", "hideColumns", "showColumns", "pinColumn", "updateColumnProp", "updateTableConfig", "useTableModel", "tableConfigProp", "dataSource", "dispatchColumnAction", "columns", "headings", "tableConfig", "tableAttributes", "dataSourceConfig", "runtimeColumns", "columnDescriptorToRuntimeColumDescriptor", "maybePinnedColumns", "_", "rest", "getLabel", "label", "columnFormatHeader", "index", "columnDefaultWidth", "align", "key", "width", "runtimeColumnWithDefaults", "col", "moveBy", "idx", "newColumns", "movedColumns", "s", "c", "phase", "type", "resizing", "cols", "_a", "pin", "targetColumn", "hidden", "targetConfigColumn", "confirmed", "filter", "groupBy", "sort", "hasGroupBy", "hasFilter", "hasSort", "result", "import_react", "getPctScroll", "container", "scrollLeft", "scrollTop", "clientHeight", "clientWidth", "scrollHeight", "scrollWidth", "pctScrollLeft", "pctScrollTop", "useCallbackRef", "onAttach", "onDetach", "ref", "el", "originalRef", "useTableScroll", "maxScrollLeft", "maxScrollTop", "onHorizontalScroll", "onVerticalScroll", "rowHeight", "viewportRowCount", "contentContainerScrolledRef", "scrollPosRef", "scrollbarContainerRef", "contentContainerRef", "handleScrollbarContainerScroll", "contentContainer", "scrollbarContainer", "contentContainerScrolled", "rootScrollLeft", "rootScrollTop", "handleContentContainerScroll", "scrollPos", "handleAttachScrollbarContainer", "handleDetachScrollbarContainer", "handleAttachContentContainer", "handleDetachContentContainer", "contentContainerCallbackRef", "scrollbarContainerCallbackRef", "requestScroll", "scrollRequest", "newScrollLeft", "newScrollTop", "direction", "scrollBy", "scrollTo", "import_react", "import_vuu_utils", "MAX_RAW_ROWS", "UNMEASURED_VIEWPORT", "measurePinnedColumns", "columns", "pinnedWidthLeft", "pinnedWidthRight", "unpinnedWidth", "column", "hidden", "pin", "width", "visibleWidth", "useTableViewport", "headerHeight", "headings", "rowCount", "rowHeight", "size", "pctScrollTopRef", "appliedContentHeight", "virtualisedExtent", "actualRowOffset", "actualRowAtPosition", "getRowOffset", "getRowAtPosition", "setPctScrollTop", "scrollPct", "_a", "headingsDepth", "scrollbarSize", "contentWidth", "horizontalScrollbarHeight", "totalHeaderHeight", "maxScrollContainerScrollVertical", "maxScrollContainerScrollHorizontal", "visibleRows", "count", "viewportBodyHeight", "verticalScrollbarWidth", "import_react", "useVirtualViewport", "columns", "getRowAtPosition", "setRange", "viewportMeasurements", "firstRowRef", "contentWidth", "viewportRowCount", "handleVerticalScroll", "scrollTop", "firstRow", "from", "rowRange", "stripInternalProperties", "tableConfig", "KEY", "IS_EXPANDED", "IS_LEAF", "NULL_DRAG_DROP", "useNullDragDrop", "addColumn", "column", "useTable", "allowDragDrop", "availableColumns", "config", "containerRef", "dataSource", "disableFocus", "headerHeight", "highlightedIndexProp", "id", "navigationStyle", "onAvailableColumnsChange", "onConfigChange", "onDragStart", "onDrop", "onFeatureInvocation", "onHighlight", "onRowClickProp", "onSelect", "onSelectionChange", "renderBufferSize", "rowHeight", "selectionModel", "size", "rowCount", "setRowCount", "useRowDragDrop", "useDragDrop", "menuBuilder", "buildContextMenuDescriptors", "onDataRowcountChange", "runtimeColumns", "dispatchColumnAction", "headings", "tableAttributes", "useTableModel", "applyTableConfigChange", "stateColumns", "setStateColumns", "columns", "setColumnSize", "setSize", "columnName", "width", "cols", "columnMap", "getRowAtPosition", "getRowOffset", "setPctScrollTop", "viewportMeasurements", "useTableViewport", "initialRange", "useInitialValue", "onSubscribed", "tableSchema", "data", "dataRef", "getSelectedRows", "range", "setRange", "useDataSource", "handleConfigEditedInSettingsPanel", "handleDataSourceConfigChanged", "dataSourceConfig", "confirmed", "handleCreateCalculatedColumn", "hideColumns", "action", "hiddenColumns", "c", "newTableConfig", "col", "pinColumn", "showColumnSettingsPanel", "showTableSettingsPanel", "useTableAndColumnSettings", "name", "serverDataType", "onPersistentColumnOperation", "isShowColumnSettings", "isShowTableSettings", "handleContextMenuAction", "useHandleTableContextMenu", "handleSort", "extendSort", "sortType", "onResizeColumn", "phase", "updateTableConfig", "onToggleGroup", "row", "isJson", "key", "idx", "childRows", "columnsToShow", "onVerticalScroll", "useVirtualViewport", "handleVerticalScroll", "scrollTop", "requestScroll", "scrollProps", "useTableScroll", "highlightedIndexRef", "navigate", "navigationFocus", "navigationKeyDown", "containerProps", "useKeyboardNavigation", "editingBlur", "editingDoubleClick", "editingKeyDown", "editingFocus", "useCellEditing", "handleFocus", "e", "onContextMenu", "useTableContextMenu", "onMoveGroupColumn", "onRemoveGroupColumn", "handleSelectionChange", "selected", "selectionHookKeyDown", "selectionHookOnRowClick", "useSelection", "handleKeyDown", "handleRowClick", "rangeSelect", "keepExistingSelection", "onMoveColumn", "handleDropRow", "dragDropState", "handleDataEdited", "value", "handleDragStartRow", "initialDragElement", "rowIndex", "index", "rowDragMouseDown", "draggableRow", "import_vuu_utils", "import_classnames", "import_vuu_ui_controls", "import_vuu_utils", "import_react", "useTableHeader", "columns", "onMoveColumn", "onSortColumn", "tableConfig", "containerRef", "handleDropColumnHeader", "moveFrom", "moveTo", "column", "orderedColumns", "ofColumn", "name", "col", "targetIndex", "nextColumn", "insertPos", "handleColumnHeaderClick", "evt", "_a", "headerCell", "colIdx", "isAdditive", "columnHeaderDragMouseDown", "draggableColumn", "dragDropHook", "useDragDrop", "import_jsx_runtime", "TableHeader", "classBase", "columns", "headings", "onMoveColumn", "onMoveGroupColumn", "onRemoveGroupColumn", "onResizeColumn", "onSortColumn", "tableConfig", "tableId", "containerRef", "draggableColumn", "draggedColumnIndex", "onClick", "onMouseDown", "useTableHeader", "colHeaders", "i", "label", "width", "j", "col", "GroupHeaderCellNext", "HeaderCell", "cx", "import_jsx_runtime", "classBase", "IDX", "RENDER_IDX", "TableCore", "Row", "allowDragDrop", "availableColumns", "config", "containerRef", "dataSource", "disableFocus", "highlightedIndexProp", "idProp", "navigationStyle", "onAvailableColumnsChange", "onConfigChange", "onDragStart", "onDrop", "onFeatureInvocation", "onHighlight", "onRowClickProp", "onSelect", "onSelectionChange", "renderBufferSize", "rowHeight", "selectionModel", "showColumnHeaders", "headerHeight", "size", "id", "columnMap", "columns", "data", "draggableRow", "handleContextMenuAction", "headings", "highlightedIndex", "onDataEdited", "onMoveColumn", "onMoveGroupColumn", "onRemoveGroupColumn", "onResizeColumn", "onRowClick", "onSortColumn", "onToggleGroup", "menuBuilder", "scrollProps", "tableAttributes", "tableConfig", "viewportMeasurements", "tableProps", "useTable", "className", "cx", "cssVariables", "TableHeader", "Table", "classNameProp", "styleProp", "htmlAttributes", "forwardedRef", "setSize", "import_react", "import_vuu_ui_controls", "import_core", "dataAndColumnUnchanged", "p", "p1", "import_vuu_utils", "import_jsx_runtime", "CheckboxCell", "column", "columnMap", "onCommit", "row", "dataIdx", "isChecked", "handleCommit", "value", "evt", "res", "dataAndColumnUnchanged", "import_vuu_data_react", "import_vuu_ui_controls", "import_vuu_utils", "import_react", "import_jsx_runtime", "classBase", "openKeys", "DropdownCell", "column", "columnMap", "onCommit", "row", "dataIdx", "initialValue", "values", "value", "setValue", "handleSelectionChange", "evt", "selectedOption", "response", "dataAndColumnUnchanged", "import_vuu_utils", "import_core", "import_vuu_ui_controls", "import_classnames", "import_jsx_runtime", "classBase", "WarnCommit", "InputCell", "column", "columnMap", "onCommit", "row", "dataIdx", "align", "clientSideEditValidationCheck", "valueFormatter", "warningMessage", "editProps", "endAdornment", "startAdornment", "cx", "import_vuu_data_react", "import_vuu_utils", "import_react", "import_jsx_runtime", "LookupCell", "column", "columnMap", "row", "dataIdx", "value", "dataAndColumnUnchanged", "import_vuu_ui_controls", "import_vuu_utils", "import_classnames", "import_react", "import_vuu_ui_controls", "import_jsx_runtime", "classBase", "getValueList", "name", "type", "ToggleCell", "column", "columnMap", "onCommit", "row", "values", "dataIdx", "value", "handleCommit", "evt", "response", "cx", "dataAndColumnUnchanged", "import_vuu_ui_controls", "import_vuu_utils", "import_react", "import_vuu_utils", "import_react", "sortOrderFromAvailableColumns", "availableColumns", "columns", "sortedColumns", "name", "column", "col", "buildColumnItems", "configuredColumns", "serverDataType", "configuredColumn", "useTableSettings", "availableColumnsProp", "onConfigChange", "onDataSourceConfigChange", "tableConfigProp", "tableConfig", "setColumnState", "columnItems", "handleMoveListItem", "fromIndex", "toIndex", "state", "newAvailableColumns", "newColumns", "handleColumnChange", "property", "value", "columnItem", "subscribedColumns", "newConfig", "updateTableConfig", "handleChangeColumnLabels", "evt", "columnFormatHeader", "handleChangeTableAttribute", "ariaChecked", "columnLabelsValue", "import_jsx_runtime", "classBase", "TableSettingsPanel", "availableColumns", "onAddCalculatedColumn", "onConfigChange", "onDataSourceConfigChange", "onNavigateToColumn", "tableConfigProp", "htmlAttributes", "_a", "_b", "_c", "columnItems", "columnLabelsValue", "onChangeColumnLabels", "onChangeTableAttribute", "onColumnChange", "onMoveListItem", "tableConfig", "useTableSettings", "ColumnList", "import_vuu_layout", "import_vuu_utils", "import_react", "useTableAndColumnSettings", "availableColumnsProps", "onAvailableColumnsChange", "onConfigChange", "onCreateCalculatedColumn", "onDataSourceConfigChange", "tableConfig", "dispatchLayoutAction", "showTableSettingsRef", "availableColumns", "setAvailableColumns", "showContextPanel", "componentType", "title", "props", "handleCancelCreateColumn", "_a", "handleCreateCalculatedColumn", "column", "newAvailableColumns", "showColumnSettingsPanel", "action", "handleAddCalculatedColumn", "handleNavigateToColumn", "columnName", "c", "name", "serverDataType"]
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_vuu_utils", "isString", "import_vuu_utils", "cx", "import_vuu_utils", "import_classnames", "import_vuu_utils", "import_jsx_runtime", "classBase", "name", "cx", "import_vuu_utils", "import_react", "import_jsx_runtime", "classBase", "import_vuu_ui_controls", "import_core", "import_classnames", "import_react", "import_vuu_utils", "import_jsx_runtime", "classBase", "cx", "name", "import_vuu_ui_controls", "import_vuu_utils", "import_core", "import_classnames", "import_vuu_ui_controls", "import_vuu_utils", "import_core", "import_react", "import_react", "import_vuu_codemirror", "import_vuu_utils", "import_react", "tag", "_expressions", "_op", "name", "import_vuu_codemirror", "import_vuu_codemirror", "import_vuu_codemirror", "import_react", "makeSuggestions", "source", "clearInput", "createState", "import_jsx_runtime", "classBase", "import_vuu_codemirror", "import_vuu_utils", "import_react", "import_vuu_utils", "name", "name", "import_vuu_utils", "import_react", "name", "column", "import_jsx_runtime", "classBase", "import_vuu_ui_controls", "import_vuu_utils", "import_core", "import_classnames", "import_react", "import_core", "import_lab", "import_vuu_utils", "import_react", "import_jsx_runtime", "classBase", "import_jsx_runtime", "classBase", "cx", "import_classnames", "import_vuu_utils", "import_jsx_runtime", "classBase", "name", "cx", "import_vuu_utils", "import_react", "col", "name", "import_jsx_runtime", "classBase", "getColumnLabel", "name", "cx", "import_react", "import_classnames", "import_jsx_runtime", "classBase", "cx", "import_core", "import_vuu_layout", "import_classnames", "import_react", "import_react", "import_jsx_runtime", "import_react", "name", "import_vuu_utils", "import_classnames", "import_react", "classBase", "cx", "import_classnames", "import_react", "import_jsx_runtime", "classBase", "cx", "import_jsx_runtime", "name", "import_jsx_runtime", "import_jsx_runtime", "import_react", "classBase", "cx", "import_react", "import_classnames", "import_react", "import_jsx_runtime", "cx", "import_classnames", "import_jsx_runtime", "classBase", "cx", "import_vuu_layout", "import_vuu_popups", "import_vuu_utils", "import_core", "import_classnames", "import_react", "import_vuu_utils", "import_classnames", "import_react", "import_vuu_utils", "import_react", "import_jsx_runtime", "classBase", "name", "import_vuu_utils", "import_react", "import_classnames", "import_jsx_runtime", "classBase", "cx", "import_jsx_runtime", "import_react", "classBase", "cx", "import_vuu_layout", "import_vuu_ui_controls", "import_vuu_utils", "import_react", "import_vuu_utils", "name", "import_vuu_utils", "name", "import_vuu_utils", "import_react", "import_vuu_utils", "import_react", "import_vuu_utils", "SELECTED", "_a", "range", "import_react", "import_core", "import_react", "_a", "import_vuu_utils", "import_react", "IDX", "import_vuu_popups", "import_vuu_utils", "import_react", "usePopupContextMenu", "import_vuu_utils", "import_vuu_ui_controls", "import_react", "name", "getDefaultAlignment", "pinColumn", "updateTableConfig", "import_react", "import_react", "import_vuu_utils", "import_react", "KEY", "IS_EXPANDED", "IS_LEAF", "useDragDrop", "size", "config", "tableConfig", "hideColumns", "columns", "pinColumn", "name", "column", "row", "import_vuu_utils", "import_classnames", "import_vuu_ui_controls", "import_vuu_utils", "import_react", "name", "useDragDrop", "import_jsx_runtime", "classBase", "cx", "import_jsx_runtime", "classBase", "IDX", "Row", "cx", "data", "import_react", "import_vuu_ui_controls", "import_core", "import_vuu_utils", "import_jsx_runtime", "import_vuu_data_react", "import_vuu_ui_controls", "import_vuu_utils", "import_react", "import_jsx_runtime", "classBase", "DropdownCell", "import_vuu_utils", "import_core", "import_vuu_ui_controls", "import_classnames", "import_jsx_runtime", "classBase", "WarnCommit", "cx", "import_vuu_data_react", "import_vuu_utils", "import_react", "import_jsx_runtime", "LookupCell", "import_vuu_ui_controls", "import_vuu_utils", "import_classnames", "import_react", "import_vuu_ui_controls", "import_jsx_runtime", "classBase", "name", "ToggleCell", "value", "cx", "import_vuu_ui_controls", "import_vuu_utils", "import_react", "import_vuu_utils", "import_react", "name", "import_jsx_runtime", "classBase", "import_vuu_layout", "import_vuu_utils", "import_react", "name"]
|
|
7
7
|
}
|