@vuu-ui/vuu-table-extras 0.8.26-debug → 0.8.26

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/esm/index.js.map CHANGED
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../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/background-cell/BackgroundCell.tsx", "../../../packages/vuu-table-extras/src/cell-renderers/background-cell/useDirection.ts", "../../../packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCellConfigurationEditor.tsx", "../../../packages/vuu-table-extras/src/cell-renderers/dropdown-cell/DropdownCell.tsx", "../../../packages/vuu-table-extras/src/cell-renderers/lookup-cell/LookupCell.tsx", "../../../packages/vuu-table-extras/src/cell-renderers/pct-progress-cell/PctProgressCell.tsx", "../../../packages/vuu-table-extras/src/cell-renderers/progress-cell/ProgressCell.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/BaseNumericFormattingSettings.tsx", "../../../packages/vuu-table-extras/src/column-formatting-settings/LongTypeFormattingSettings.tsx", "../../../packages/vuu-table-extras/src/column-formatting-settings/DateTimeFormattingSettings.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"],
4
4
  "sourcesContent": ["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 { ColumnType, TableCellProps } from \"@vuu-ui/vuu-table-types\";\nimport {\n dataAndColumnUnchanged,\n DOWN1,\n DOWN2,\n isTypeDescriptor,\n metadataKeys,\n registerComponent,\n UP1,\n UP2,\n} from \"@vuu-ui/vuu-utils\";\nimport cx from \"clsx\";\nimport { memo } from \"react\";\nimport { useDirection } from \"./useDirection\";\n\nimport \"./BackgroundCell.css\";\nimport \"./BackgroundKeyframes.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\nexport const BackgroundCell = memo(function BackgroundCell({\n column,\n columnMap,\n row,\n}: 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}-arrow`}>{arrow}</div>\n {valueFormatter(row[dataIdx])}\n </div>\n );\n},\ndataAndColumnUnchanged);\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 type { ColumnDescriptorCustomRenderer } from \"@vuu-ui/vuu-table-types\";\nimport { Dropdown, SingleSelectionHandler } from \"@vuu-ui/vuu-ui-controls\";\nimport {\n ConfigurationEditorProps,\n registerConfigurationEditor,\n} from \"@vuu-ui/vuu-utils\";\nimport { FormField, FormFieldLabel } from \"@salt-ds/core\";\nimport { useCallback, useState } from \"react\";\n\nimport \"./BackgroundCellConfigurationEditor.css\";\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 { getSelectedOption, useLookupValues } from \"@vuu-ui/vuu-data-react\";\nimport type { VuuColumnDataType } from \"@vuu-ui/vuu-protocol-types\";\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 {\n dataColumnAndKeyUnchanged,\n dispatchCustomEvent,\n registerComponent,\n} from \"@vuu-ui/vuu-utils\";\nimport { memo, useCallback, useMemo, useRef } from \"react\";\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 const dataValue = row[dataIdx] as string | number;\n const { values } = useLookupValues(column, dataValue);\n const valueRef = useRef<ListOption | null>(null);\n\n useMemo(() => {\n valueRef.current = getSelectedOption(values, dataValue);\n }, [dataValue, values]);\n\n const handleSelectionChange = useCallback<SingleSelectionHandler<ListOption>>(\n (evt, selectedOption) => {\n if (selectedOption) {\n // Note, we do not setState locally when a selection is made, we just send the update\n // to the server. We rely on the update coming back in from a server response which\n // we handle in the useMemo above. If we worry that server repsonses might be too slow\n // we can extend this logic with some kind of pending update state.\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={valueRef.current}\n source={values}\n width={column.width - 17} // temp hack\n />\n );\n},\ndataColumnAndKeyUnchanged);\n\nregisterComponent(\"dropdown-cell\", DropdownCell, \"cell-renderer\", {\n userCanAssign: false,\n});\n", "import { useLookupValues } from \"@vuu-ui/vuu-data-react\";\nimport { TableCellRendererProps } from \"@vuu-ui/vuu-table-types\";\nimport { dataAndColumnUnchanged, registerComponent } from \"@vuu-ui/vuu-utils\";\nimport { memo } from \"react\";\n\nexport const LookupCell = memo(function LookupCell({\n column,\n columnMap,\n row,\n}: TableCellRendererProps) {\n const dataIdx = columnMap[column.name];\n const dataValue = row[dataIdx] as string | number;\n const { initialValue: value } = useLookupValues(column, dataValue);\n return <span>{value?.label}</span>;\n},\ndataAndColumnUnchanged);\n\nregisterComponent(\"lookup-cell\", LookupCell, \"cell-renderer\", {\n userCanAssign: false,\n});\n", "import { TableCellProps } from \"@vuu-ui/vuu-table-types\";\nimport { registerComponent } from \"@vuu-ui/vuu-utils\";\nimport cx from \"clsx\";\nimport { CSSProperties } from \"react\";\n\nimport \"./PctProgressCell.css\";\n\nconst classBase = \"vuuPctProgressCell\";\n\nconst getPercentageValue = (value: number) => {\n if (value >= 0 && value <= 1) {\n return value * 100;\n } else if (value > 2) {\n return 0;\n } else if (value > 1) {\n return 100;\n } else {\n return 0;\n }\n};\n\nexport const PctProgressCell = ({ column, columnMap, row }: TableCellProps) => {\n const value = row[columnMap[column.name]] as number;\n const percentageValue = getPercentageValue(value);\n const className = cx(classBase, {});\n\n return (\n <div\n className={cx(className, {\n [`${classBase}-zero`]: percentageValue === 0,\n [`${classBase}-complete`]: percentageValue >= 100,\n })}\n tabIndex={-1}\n >\n <span\n className={`${classBase}-progressBar`}\n style={{ \"--progress-bar-pct\": `${percentageValue}%` } as CSSProperties}\n />\n <span className={`${classBase}-text`}>{`${percentageValue.toFixed(\n 2\n )} %`}</span>\n </div>\n );\n};\n\nregisterComponent(\"vuu.pct-progress\", PctProgressCell, \"cell-renderer\", {\n description: \"Percentage formatter\",\n label: \"Percentage formatter\",\n serverDataType: \"double\",\n});\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 \"clsx\";\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 { name, type } = column;\n const value = row[columnMap[name]];\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 (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 // Not until we provide settings for associaetd field\n userCanAssign: false,\n});\n", "import { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport {\n Icon,\n List,\n ListItem,\n ListItemProps,\n ListProps,\n} from \"@vuu-ui/vuu-ui-controls\";\nimport { Checkbox, Switch } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport {\n HTMLAttributes,\n MouseEventHandler,\n SyntheticEvent,\n useCallback,\n} from \"react\";\nimport { ColumnItem } from \"../table-settings\";\nimport { getColumnLabel, queryClosest } from \"@vuu-ui/vuu-utils\";\n\nimport \"./ColumnList.css\";\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 <Icon name=\"draggable\" size={16} />\n {item?.isCalculated ? (\n <Icon name=\"function\" />\n ) : (\n <Checkbox\n className={`${classBase}-checkBox`}\n checked={item?.subscribed}\n />\n )}\n <span className={`${classBase}-text`}>\n {getColumnLabel(item as ColumnDescriptor)}\n </span>\n <Switch\n className={`${classBase}-switch`}\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 ({ target }: SyntheticEvent) => {\n const input = target as HTMLInputElement;\n const listItem = queryClosest(target, `.${classBaseListItem}`);\n const {\n dataset: { name },\n } = listItem;\n if (name) {\n const saltCheckbox = queryClosest(target, `.${classBase}-checkBox`);\n const saltSwitch = queryClosest(target, `.${classBase}-switch`);\n\n if (saltCheckbox) {\n onChange(name, \"subscribed\", input.checked);\n } else if (saltSwitch) {\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, ColumnSettingsProps } from \"@vuu-ui/vuu-table-types\";\nimport { Icon, 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 \"clsx\";\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 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 onChangeServerDataType,\n onChangeToggleButton,\n onChangeType,\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 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 onChangeServerDataType={onChangeServerDataType}\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 onChange={onChangeToggleButton} value={align}>\n <ToggleButton value=\"left\">\n <Icon name=\"align-left\" size={16} />\n </ToggleButton>\n <ToggleButton value=\"right\">\n <Icon name=\"align-right\" size={16} />\n </ToggleButton>\n </ToggleButtonGroup>\n </FormField>\n <FormField data-field=\"column-pin\">\n <FormFieldLabel>Pin Column</FormFieldLabel>\n <ToggleButtonGroup onChange={onChangeToggleButton} value={pin ?? \"\"}>\n <ToggleButton value=\"\">\n <Icon name=\"cross-circle\" size={16} />\n </ToggleButton>\n <ToggleButton value=\"left\">\n <Icon name=\"pin-left\" size={16} />\n </ToggleButton>\n <ToggleButton value=\"floating\">\n <Icon name=\"pin-float\" size={16} />\n </ToggleButton>\n <ToggleButton value=\"right\">\n <Icon name=\"pin-right\" size={16} />\n </ToggleButton>\n </ToggleButtonGroup>\n </FormField>\n <ColumnFormattingPanel\n availableRenderers={availableRenderers}\n column={column}\n onChangeFormatting={onChangeFormatting}\n onChangeRendering={onChangeRendering}\n onChangeColumnType={onChangeType}\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, ColumnSettingsProps } 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 { VuuColumnDataType } from \"@vuu-ui/vuu-protocol-types\";\nimport { HTMLAttributes, useCallback, useRef } from \"react\";\nimport {\n ColumnExpressionInput,\n ColumnExpressionSubmitHandler,\n useColumnExpressionSuggestionProvider,\n} from \"../column-expression-input\";\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 onChangeServerDataType?: (name: VuuColumnDataType) => void;\n}\n\nexport const ColumnExpressionPanel = ({\n column: columnProp,\n onChangeName: onChangeNameProp,\n onChangeServerDataType: onChangeServerDataTypeProp,\n tableConfig,\n vuuTable,\n}: ColumnExpressionPanelProps) => {\n const typeRef = useRef<HTMLDivElement>(null);\n const { column, onChangeExpression, onChangeName, onChangeServerDataType } =\n useColumnExpression({\n column: columnProp,\n onChangeName: onChangeNameProp,\n onChangeServerDataType: onChangeServerDataTypeProp,\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={onChangeServerDataType}\n ref={typeRef}\n selected={getCalculatedColumnType(column) || null}\n source={[\"double\", \"long\", \"string\", \"boolean\"]}\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 { 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\";\nimport {\n ColumnExpressionOperator,\n ColumnExpressionSuggestionType,\n IExpressionSuggestionProvider,\n} from \"./useColumnExpressionEditor\";\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 isVuuColumnDataType,\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\" | \"onChangeServerDataType\"\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 onChangeServerDataType: onChangeServerDataTypeProp,\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 onChangeServerDataType = useCallback(\n (evt, value: string | null) => {\n if (isVuuColumnDataType(value)) {\n const newColumn = setCalculatedColumnType(column, value);\n setColumn(newColumn);\n onChangeNameProp?.(newColumn.name);\n onChangeServerDataTypeProp?.(value);\n }\n },\n [column, onChangeNameProp, onChangeServerDataTypeProp, setColumn]\n );\n\n return {\n column,\n onChangeExpression,\n onChangeName,\n onChangeServerDataType,\n };\n};\n", "import {\n ColumnDescriptor,\n ColumnDescriptorCustomRenderer,\n ColumnTypeRendering,\n FormattingSettingsProps,\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 \"clsx\";\nimport { HTMLAttributes, useCallback, useMemo } from \"react\";\nimport { BaseNumericFormattingSettings } from \"./BaseNumericFormattingSettings\";\nimport { LongTypeFormattingSettings } from \"./LongTypeFormattingSettings\";\n\nconst classBase = \"vuuColumnFormattingPanel\";\n\nexport interface ColumnFormattingPanelProps\n extends HTMLAttributes<HTMLDivElement>,\n FormattingSettingsProps {\n availableRenderers: CellRendererDescriptor[];\n column: ColumnDescriptor;\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 onChangeColumnType,\n onChangeRendering,\n ...htmlAttributes\n}: ColumnFormattingPanelProps) => {\n const formattingSettingsComponent = useMemo(\n () =>\n getFormattingSettingsComponent({\n column,\n onChangeFormatting,\n onChangeColumnType,\n }),\n [column, onChangeColumnType, onChangeFormatting]\n );\n\n console.log({ formattingSettingsComponent });\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 (_, 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 {formattingSettingsComponent}\n {ConfigEditor ? (\n <ConfigEditor\n column={column as ColumnDescriptorCustomRenderer}\n onChangeRendering={onChangeRendering}\n />\n ) : null}\n </div>\n </div>\n );\n};\n\nfunction getFormattingSettingsComponent(props: FormattingSettingsProps) {\n const { column } = props;\n\n switch (column.serverDataType) {\n case \"double\":\n case \"int\":\n return <BaseNumericFormattingSettings {...props} />;\n case \"long\":\n return <LongTypeFormattingSettings {...props} />;\n default:\n return null;\n }\n}\n", "import { FormField, FormFieldLabel, Input, Switch } from \"@salt-ds/core\";\nimport {\n ColumnTypeFormatting,\n FormattingSettingsProps,\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 const BaseNumericFormattingSettings = ({\n column,\n onChangeFormatting: onChange,\n}: FormattingSettingsProps) => {\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 React, { useCallback } from \"react\";\nimport {\n FormField,\n FormFieldLabel,\n ToggleButton,\n ToggleButtonGroup,\n} from \"@salt-ds/core\";\nimport { isDateTimeColumn, isTypeDescriptor } from \"@vuu-ui/vuu-utils\";\nimport { DateTimeFormattingSettings } from \"./DateTimeFormattingSettings\";\nimport { BaseNumericFormattingSettings } from \"./BaseNumericFormattingSettings\";\nimport { FormattingSettingsProps } from \"@vuu-ui/vuu-table-types\";\n\nimport \"./LongTypeFormattingSettings.css\";\n\nconst classBase = \"vuuLongColumnFormattingSettings\";\n\nexport const LongTypeFormattingSettings = (props: FormattingSettingsProps) => {\n const { column, onChangeColumnType: onChangeType } = props;\n const type = isTypeDescriptor(column.type) ? column.type.name : column.type;\n\n const handleToggleChange = useCallback(\n (event: React.SyntheticEvent<HTMLButtonElement, Event>) => {\n const value = event.currentTarget.value as ToggleValue;\n onChangeType(value);\n },\n [onChangeType]\n );\n\n return (\n <div className={classBase}>\n <FormField>\n <FormFieldLabel>{\"Type inferred as\"}</FormFieldLabel>\n <ToggleButtonGroup\n className=\"vuuToggleButtonGroup\"\n onChange={handleToggleChange}\n value={type ?? \"number\"}\n >\n {toggleValues.map((v) => (\n <ToggleButton key={v} value={v}>\n {v.toUpperCase()}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n </FormField>\n\n {isDateTimeColumn(column) ? (\n <DateTimeFormattingSettings {...props} column={column} />\n ) : (\n <BaseNumericFormattingSettings {...props} />\n )}\n </div>\n );\n};\n\nconst toggleValues = [\"number\", \"date/time\"] as const;\ntype ToggleValue = (typeof toggleValues)[number];\n", "import React, { SyntheticEvent, useCallback, useMemo, useState } from \"react\";\nimport { Dropdown, SingleSelectionHandler } from \"@vuu-ui/vuu-ui-controls\";\nimport {\n DateTimePattern,\n defaultPatternsByType,\n fallbackDateTimePattern,\n getTypeFormattingFromColumn,\n supportedDateTimePatterns,\n} from \"@vuu-ui/vuu-utils\";\nimport {\n FormField,\n FormFieldLabel,\n ToggleButton,\n ToggleButtonGroup,\n} from \"@salt-ds/core\";\nimport {\n DateTimeColumnDescriptor,\n FormattingSettingsProps,\n} from \"@vuu-ui/vuu-table-types\";\n\nexport const DateTimeFormattingSettings: React.FC<\n FormattingSettingsProps<DateTimeColumnDescriptor>\n> = ({ column, onChangeFormatting: onChange }) => {\n const formatting = getTypeFormattingFromColumn(column);\n const { pattern = fallbackDateTimePattern } = formatting;\n const toggleValue = useMemo(() => getToggleValue(pattern), [pattern]);\n\n const [fallbackState, setFallbackState] = useState<Required<DateTimePattern>>(\n {\n time: pattern.time ?? defaultPatternsByType.time,\n date: pattern.date ?? defaultPatternsByType.date,\n }\n );\n\n const onPatternChange = useCallback(\n (pattern: DateTimePattern) => onChange({ ...formatting, pattern }),\n [onChange, formatting]\n );\n\n const onDropdownChange = useCallback<\n <T extends keyof DateTimePattern>(\n key: T\n ) => SingleSelectionHandler<Required<DateTimePattern>[T]>\n >(\n (key) => (_, p) => {\n const updatedPattern = { ...(pattern ?? {}), [key]: p };\n setFallbackState((s) => ({\n time: updatedPattern.time ?? s.time,\n date: updatedPattern.date ?? s.date,\n }));\n onPatternChange(updatedPattern);\n },\n [onPatternChange, pattern]\n );\n\n const onToggleChange = useCallback(\n (evnt: SyntheticEvent<HTMLButtonElement, Event>) => {\n const value = evnt.currentTarget.value as ToggleValue;\n switch (value) {\n case \"time\":\n return onPatternChange({\n [value]: pattern[value] ?? fallbackState[value],\n });\n case \"date\":\n return onPatternChange({\n [value]: pattern[value] ?? fallbackState[value],\n });\n case \"both\":\n return onPatternChange({\n time: pattern.time ?? fallbackState.time,\n date: pattern.date ?? fallbackState.date,\n });\n }\n },\n [onPatternChange, pattern, fallbackState]\n );\n\n return (\n <>\n <FormField labelPlacement=\"top\">\n <FormFieldLabel>{\"Display\"}</FormFieldLabel>\n <ToggleButtonGroup\n className=\"vuuToggleButtonGroup\"\n onChange={onToggleChange}\n value={toggleValue}\n data-variant=\"primary\"\n >\n {toggleValues.map((v) => (\n <ToggleButton key={v} value={v}>\n {v.toUpperCase()}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n </FormField>\n\n {([\"date\", \"time\"] as const)\n .filter((v) => !!pattern[v])\n .map((v) => (\n <FormField labelPlacement=\"top\" key={v}>\n <FormFieldLabel>{`${labelByType[v]} pattern`}</FormFieldLabel>\n <Dropdown<Required<DateTimePattern>[typeof v]>\n onSelectionChange={onDropdownChange(v)}\n selected={pattern[v]}\n source={supportedDateTimePatterns[v]}\n width=\"100%\"\n />\n </FormField>\n ))}\n </>\n );\n};\n\nconst labelByType = { date: \"Date\", time: \"Time\" } as const;\n\nconst toggleValues = [\"date\", \"time\", \"both\"] as const;\n\ntype ToggleValue = (typeof toggleValues)[number];\n\nfunction getToggleValue(pattern: DateTimePattern): ToggleValue {\n return !pattern.time ? \"date\" : !pattern.date ? \"time\" : \"both\";\n}\n", "import { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport cx from \"clsx\";\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 ColumnSettingsProps,\n ColumnTypeSimple,\n} from \"@vuu-ui/vuu-table-types\";\n\nimport {\n CellRendererDescriptor,\n ColumnRenderPropsChangeHandler,\n getRegisteredCellRenderers,\n isValidColumnAlignment,\n isValidPinLocation,\n setCalculatedColumnName,\n updateColumnRenderProps,\n updateColumnFormatting,\n updateColumnType,\n queryClosest,\n} from \"@vuu-ui/vuu-utils\";\nimport { VuuColumnDataType } from \"@vuu-ui/vuu-protocol-types\";\nimport {\n FormEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\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];\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];\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];\n\nconst booleanCellRenderers: CellRendererDescriptor[] = [];\n\nconst getAvailableCellRenderers = (\n column: ColumnDescriptor\n): CellRendererDescriptor[] => {\n switch (column.serverDataType) {\n case \"char\":\n case \"string\":\n return stringCellRenderers.concat(getRegisteredCellRenderers(\"string\"));\n case \"int\":\n case \"long\":\n return integerCellRenderers.concat(getRegisteredCellRenderers(\"int\"));\n case \"double\":\n return doubleCellRenderers.concat(getRegisteredCellRenderers(\"double\"));\n case \"boolean\":\n return booleanCellRenderers.concat(getRegisteredCellRenderers(\"boolean\"));\n default:\n return stringCellRenderers;\n }\n};\n\nconst getFieldName = (input: HTMLInputElement | HTMLButtonElement): 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 handleChangeToggleButton = useCallback<FormEventHandler>(\n (evt) => {\n const button = queryClosest<HTMLButtonElement>(evt.target, \"button\");\n if (button) {\n const fieldName = getFieldName(button);\n const { value } = button;\n switch (fieldName) {\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 },\n [column, onConfigChange, tableConfig]\n );\n\n const handleChange = useCallback<FormEventHandler>((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 }\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 = updateColumnFormatting(column, formatting);\n setColumn(newColumn);\n onConfigChange(replaceColumn(tableConfig, newColumn));\n },\n [column, onConfigChange, tableConfig]\n );\n\n const handleChangeType = useCallback(\n (type: ColumnTypeSimple) => {\n const updatedColumn = updateColumnType(column, type);\n setColumn(updatedColumn);\n onConfigChange(replaceColumn(tableConfig, updatedColumn));\n },\n [column, onConfigChange, tableConfig]\n );\n\n // Changing the server data type applies only to calculated columns\n const handleChangeServerDataType = useCallback(\n (serverDataType: VuuColumnDataType) => {\n setColumn((col) => ({ ...col, serverDataType }));\n },\n []\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 onChangeServerDataType: handleChangeServerDataType,\n onChangeToggleButton: handleChangeToggleButton,\n onChangeType: handleChangeType,\n onEditCalculatedColumn: handleEditCalculatedcolumn,\n onInputCommit: handleInputCommit,\n onSave: handleSaveCalculatedColumn,\n };\n};\n", "import { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\nimport cx from \"clsx\";\nimport { HTMLAttributes, useEffect, useState } from \"react\";\n\nimport \"./DatasourceStats.css\";\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 dataSource.on(\"resize\", setSize);\n dataSource.on(\"range\", setRange);\n return () => {\n dataSource.removeListener(\"resize\", setSize);\n dataSource.removeListener(\"range\", setRange);\n };\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 ToggleButton,\n ToggleButtonGroup,\n} from \"@salt-ds/core\";\nimport { TableSettingsProps } from \"@vuu-ui/vuu-table-types\";\nimport { ColumnList } from \"../column-list\";\nimport { useTableSettings } from \"./useTableSettings\";\nimport { Icon } from \"@vuu-ui/vuu-ui-controls\";\nimport { VuuInput } from \"@vuu-ui/vuu-ui-controls\";\n\nimport \"./TableSettingsPanel.css\";\n\nconst classBase = \"vuuTableSettingsPanel\";\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 allowColumnLabelCase = true,\n allowColumnDefaultWidth = true,\n allowGridRowStyling = true,\n availableColumns,\n onAddCalculatedColumn,\n onConfigChange,\n onDataSourceConfigChange,\n onNavigateToColumn,\n tableConfig: tableConfigProp,\n}: TableSettingsProps) => {\n const {\n columnItems,\n columnLabelsValue,\n onChangeColumnLabels,\n onChangeTableAttribute,\n onColumnChange,\n onCommitColumnWidth,\n onMoveListItem,\n tableConfig,\n } = useTableSettings({\n availableColumns,\n onConfigChange,\n onDataSourceConfigChange,\n tableConfig: tableConfigProp,\n });\n\n return (\n <div className={classBase}>\n {allowColumnLabelCase ||\n allowColumnDefaultWidth ||\n allowGridRowStyling ? (\n <div className={`${classBase}-header`}>\n <span>Column Settings</span>\n </div>\n ) : null}\n\n {allowColumnLabelCase ? (\n <FormField>\n <FormFieldLabel>Column Labels</FormFieldLabel>\n <ToggleButtonGroup\n className=\"vuuToggleButtonGroup\"\n onChange={onChangeColumnLabels}\n value={columnLabelsValue}\n >\n <ToggleButton className=\"vuuIconToggleButton\" value={0}>\n <Icon name=\"text-strikethrough\" size={48} />\n </ToggleButton>\n <ToggleButton className=\"vuuIconToggleButton\" value={1}>\n <Icon name=\"text-Tt\" size={48} />\n </ToggleButton>\n <ToggleButton className=\"vuuIconToggleButton\" value={2}>\n <Icon name=\"text-T\" size={48} />\n </ToggleButton>\n </ToggleButtonGroup>\n </FormField>\n ) : null}\n\n {allowGridRowStyling ? (\n <FormField>\n <FormFieldLabel>Grid separators</FormFieldLabel>\n <div className=\"saltToggleButtonGroup vuuStateButtonGroup saltToggleButtonGroup-horizontal\">\n <ToggleButton\n selected={tableConfig.zebraStripes ?? false}\n onChange={onChangeTableAttribute}\n value=\"zebraStripes\"\n >\n <Icon name=\"row-striping\" size={16} />\n </ToggleButton>\n <ToggleButton\n selected={tableConfig.rowSeparators ?? false}\n onChange={onChangeTableAttribute}\n value=\"rowSeparators\"\n >\n <Icon name=\"row-lines\" size={16} />\n </ToggleButton>\n <ToggleButton\n selected={tableConfig.columnSeparators ?? false}\n onChange={onChangeTableAttribute}\n value=\"columnSeparators\"\n >\n <Icon name=\"col-lines\" size={16} />\n </ToggleButton>\n </div>\n </FormField>\n ) : null}\n\n {allowColumnDefaultWidth ? (\n <FormField>\n <FormFieldLabel>Default Column Width</FormFieldLabel>\n <VuuInput className=\"vuuInput\" onCommit={onCommitColumnWidth} />\n </FormField>\n ) : null}\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-types\";\nimport { updateTableConfig } from \"@vuu-ui/vuu-table\";\nimport {\n ColumnDescriptor,\n TableConfig,\n TableSettingsProps,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n addColumnToSubscribedColumns,\n queryClosest,\n isCalculatedColumn,\n moveItem,\n subscribedOnly,\n useLayoutEffectSkipFirst,\n} from \"@vuu-ui/vuu-utils\";\nimport { Commithandler } from \"@vuu-ui/vuu-ui-controls/src\";\nimport {\n MouseEvent,\n SyntheticEvent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { ColumnChangeHandler } from \"../column-list\";\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 button = queryClosest<HTMLButtonElement>(evt.target, \"button\");\n if (button) {\n const value = parseInt(button.value);\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\n const handleChangeTableAttribute = useCallback(\n (evt: MouseEvent<HTMLButtonElement>) => {\n const button = queryClosest<HTMLButtonElement>(evt.target, \"button\");\n const { ariaPressed, value } = button;\n console.log({ ariaPressed, value, button });\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...state.tableConfig,\n [value]: ariaPressed !== \"true\",\n },\n }));\n },\n []\n );\n\n const handleCommitColumnWidth = useCallback<Commithandler>((_, value) => {\n const columnDefaultWidth = parseInt(value);\n if (!isNaN(columnDefaultWidth)) {\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...state.tableConfig,\n columnDefaultWidth,\n },\n }));\n }\n console.log({ value });\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 onCommitColumnWidth: handleCommitColumnWidth,\n onMoveListItem: handleMoveListItem,\n tableConfig,\n };\n};\n"],
5
- "mappings": "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",
6
- "names": ["registerComponent", "isString", "isTypeDescriptor", "registerComponent", "isTypeDescriptor", "BackgroundCell", "name", "registerComponent", "jsx", "jsxs", "classBase", "Dropdown", "registerComponent", "memo", "useCallback", "useRef", "jsx", "classBase", "memo", "DropdownCell", "useRef", "useCallback", "Dropdown", "registerComponent", "useLookupValues", "dataAndColumnUnchanged", "registerComponent", "memo", "jsx", "LookupCell", "registerComponent", "cx", "jsx", "jsxs", "classBase", "cx", "registerComponent", "isTypeDescriptor", "isValidNumber", "registerComponent", "cx", "jsx", "jsxs", "classBase", "name", "isTypeDescriptor", "isValidNumber", "cx", "registerComponent", "cx", "useCallback", "jsx", "jsxs", "classBase", "cx", "useCallback", "name", "Icon", "getCalculatedColumnName", "isCalculatedColumn", "FormField", "FormFieldLabel", "ToggleButton", "ToggleButtonGroup", "cx", "Dropdown", "FormField", "FormFieldLabel", "useCallback", "useRef", "memo", "EditorState", "EditorView", "useCallback", "useEffect", "useMemo", "useRef", "_expressions", "_op", "name", "useCallback", "makeSuggestions", "useCallback", "useRef", "useMemo", "source", "clearInput", "createState", "EditorState", "EditorView", "useEffect", "useCallback", "jsx", "classBase", "memo", "useCallback", "useRef", "createEl", "name", "useCallback", "name", "useRef", "useCallback", "useRef", "useState", "name", "column", "jsx", "jsxs", "classBase", "useRef", "useCallback", "FormField", "FormFieldLabel", "Dropdown", "Dropdown", "isColumnTypeRenderer", "isTypeDescriptor", "FormField", "FormFieldLabel", "cx", "useCallback", "useMemo", "FormField", "FormFieldLabel", "Input", "Switch", "useCallback", "useState", "jsx", "jsxs", "classBase", "useCallback", "FormField", "FormFieldLabel", "ToggleButton", "ToggleButtonGroup", "isTypeDescriptor", "useCallback", "useMemo", "useState", "Dropdown", "getTypeFormattingFromColumn", "FormField", "FormFieldLabel", "jsx", "jsxs", "pattern", "_a", "_b", "jsx", "jsxs", "classBase", "isTypeDescriptor", "useCallback", "FormField", "FormFieldLabel", "ToggleButtonGroup", "toggleValues", "ToggleButton", "jsx", "jsxs", "classBase", "useMemo", "isTypeDescriptor", "isColumnTypeRenderer", "useCallback", "FormField", "FormFieldLabel", "Dropdown", "cx", "cx", "getCalculatedColumnDetails", "jsx", "jsxs", "classBase", "name", "getCalculatedColumnDetails", "cx", "setCalculatedColumnName", "queryClosest", "useCallback", "useEffect", "useMemo", "useRef", "useState", "col", "name", "jsx", "jsxs", "classBase", "getColumnLabel", "name", "isCalculatedColumn", "getCalculatedColumnName", "cx", "FormField", "FormFieldLabel", "ToggleButtonGroup", "ToggleButton", "Icon", "cx", "useEffect", "useState", "jsx", "jsxs", "classBase", "useState", "useEffect", "cx", "Button", "FormField", "FormFieldLabel", "ToggleButton", "ToggleButtonGroup", "queryClosest", "isCalculatedColumn", "useCallback", "useMemo", "useState", "name", "Icon", "VuuInput", "jsx", "jsxs", "classBase", "FormField", "FormFieldLabel", "ToggleButtonGroup", "ToggleButton", "Icon", "VuuInput", "Button"]
5
+ "mappings": "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",
6
+ "names": ["registerComponent", "isString", "value", "CaseValidator", "rule", "registerComponent", "isString", "value", "defaultMessage", "PatternValidator", "rule", "message", "dataAndColumnUnchanged", "DOWN1", "DOWN2", "isTypeDescriptor", "metadataKeys", "registerComponent", "UP1", "UP2", "cx", "memo", "getMovingValueDirection", "isTypeDescriptor", "isValidNumber", "useEffect", "useRef", "INITIAL_VALUE", "useDirection", "key", "value", "column", "_a", "ref", "prevKey", "prevValue", "prevColumn", "prevDirection", "dataType", "decimals", "direction", "jsx", "jsxs", "CHAR_ARROW_UP", "CHAR_ARROW_DOWN", "KEY", "metadataKeys", "classBase", "FlashStyle", "getFlashStyle", "colType", "isTypeDescriptor", "BackgroundCell", "memo", "column", "columnMap", "row", "name", "type", "valueFormatter", "dataIdx", "value", "flashStyle", "direction", "useDirection", "arrow", "UP1", "UP2", "DOWN1", "DOWN2", "dirClass", "className", "cx", "dataAndColumnUnchanged", "registerComponent", "Dropdown", "registerConfigurationEditor", "FormField", "FormFieldLabel", "useCallback", "useState", "jsx", "jsxs", "classBase", "flashOptions", "defaultFlashOption", "valueFromColumn", "column", "flashStyle", "BackgroundCellConfigurationEditor", "onChangeRendering", "setFlashStyle", "useState", "handleSelectionChange", "useCallback", "_", "flashOption", "_a", "renderProps", "FormField", "FormFieldLabel", "Dropdown", "registerConfigurationEditor", "getSelectedOption", "useLookupValues", "Dropdown", "WarnCommit", "dataColumnAndKeyUnchanged", "dispatchCustomEvent", "registerComponent", "memo", "useCallback", "useMemo", "useRef", "jsx", "classBase", "openKeys", "DropdownCell", "memo", "column", "columnMap", "onCommit", "WarnCommit", "row", "dataIdx", "dataValue", "values", "useLookupValues", "valueRef", "useRef", "useMemo", "getSelectedOption", "handleSelectionChange", "useCallback", "evt", "selectedOption", "response", "dispatchCustomEvent", "Dropdown", "dataColumnAndKeyUnchanged", "registerComponent", "useLookupValues", "dataAndColumnUnchanged", "registerComponent", "memo", "jsx", "LookupCell", "column", "columnMap", "row", "dataIdx", "dataValue", "value", "registerComponent", "cx", "jsx", "jsxs", "classBase", "getPercentageValue", "value", "PctProgressCell", "column", "columnMap", "row", "percentageValue", "className", "cx", "registerComponent", "isColumnTypeRenderer", "isTypeDescriptor", "isValidNumber", "registerComponent", "cx", "jsx", "jsxs", "classBase", "ProgressCell", "column", "columnMap", "row", "name", "type", "value", "showProgress", "percentage", "isTypeDescriptor", "isColumnTypeRenderer", "associatedField", "associatedValue", "isValidNumber", "floatValue", "floatOtherValue", "className", "cx", "registerComponent", "Icon", "List", "ListItem", "Checkbox", "Switch", "cx", "useCallback", "getColumnLabel", "queryClosest", "jsx", "jsxs", "classBase", "classBaseListItem", "ColumnListItem", "classNameProp", "item", "listItemProps", "ListItem", "cx", "Icon", "Checkbox", "getColumnLabel", "Switch", "ColumnList", "columnItems", "onChange", "onMoveListItem", "onNavigateToColumn", "htmlAttributes", "handleChange", "useCallback", "target", "input", "listItem", "queryClosest", "name", "saltCheckbox", "saltSwitch", "handleClick", "evt", "targetEl", "listItemEl", "List", "Icon", "VuuInput", "getCalculatedColumnName", "getDefaultAlignment", "isCalculatedColumn", "Button", "FormField", "FormFieldLabel", "ToggleButton", "ToggleButtonGroup", "cx", "Dropdown", "getCalculatedColumnExpression", "getCalculatedColumnName", "getCalculatedColumnType", "FormField", "FormFieldLabel", "Input", "useCallback", "useRef", "memo", "autocompletion", "defaultKeymap", "EditorState", "EditorView", "ensureSyntaxTree", "keymap", "minimalSetup", "startCompletion", "createEl", "useCallback", "useEffect", "useMemo", "useRef", "LanguageSupport", "LRLanguage", "styleTags", "tag", "LRParser", "parser", "columnExpressionLanguage", "LRLanguage", "parser", "styleTags", "tag", "columnExpressionLanguageSupport", "LanguageSupport", "LiteralExpressionImpl", "value", "ColumnExpressionImpl", "columnName", "_expressions", "_op", "ArithmeticExpressionImpl", "op", "__privateAdd", "__privateSet", "__privateGet", "CallExpressionImpl", "functionName", "_a", "RelationalExpressionImpl", "BooleanConditionImp", "booleanOperator", "ConditionalExpressionImpl", "expression", "_b", "_c", "_d", "_e", "isUnknown", "e", "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", "HighlightStyle", "syntaxHighlighting", "tags", "myHighlightStyle", "vuuHighlighting", "EditorView", "vuuTheme", "booleanJoinSuggestions", "getNamedParentNode", "getPreviousNode", "getValue", "syntaxTree", "useCallback", "applyPrefix", "completions", "prefix", "completion", "_a", "isOperator", "node", "completionDone", "onSubmit", "getLastChild", "context", "childNode", "pos", "ColumnNamedTerms", "expression", "getFunctionName", "state", "functionNode", "getValue", "maybeFunction", "getRelationalOperator", "lastNode", "lastNamedChild", "prevNode", "getColumnName", "makeSuggestions", "suggestionProvider", "suggestionType", "optionalArgs", "options", "startsWith", "handleConditionalExpression", "maybeComplete", "lastChild", "promptToSave", "useColumnAutoComplete", "useCallback", "_b", "word", "nodeBefore", "syntaxTree", "text", "isCompleteExpression", "prevChild", "getPreviousNode", "isCompleteRelationalExpression", "booleanJoinSuggestions", "operator", "columnName", "from", "to", "functionName", "lastArgument", "columnOptions", "lastExpressionChild", "suggestions", "parentNode", "getNamedParentNode", "getView", "ref", "getOptionClass", "noop", "hasExpressionType", "completion", "injectOptionContent", "div", "createEl", "span", "useColumnExpressionEditor", "onChange", "onSubmitExpression", "source", "suggestionProvider", "editorRef", "useRef", "onSubmitRef", "viewRef", "completionFn", "useColumnAutoComplete", "createState", "clearInput", "submit", "useMemo", "parseExpression", "view", "tree", "ensureSyntaxTree", "expression", "walkTree", "submitExpression", "showSuggestions", "key", "keymap", "startCompletion", "EditorState", "minimalSetup", "autocompletion", "columnExpressionLanguageSupport", "defaultKeymap", "EditorView", "v", "tr", "vuuTheme", "vuuHighlighting", "useEffect", "_a", "handleBlur", "useCallback", "jsx", "classBase", "ColumnExpressionInput", "memo", "onChange", "onSubmitExpression", "source", "suggestionProvider", "editorRef", "onBlur", "useColumnExpressionEditor", "prevProps", "newProps", "AnnotationType", "getRelationalOperators", "numericOperators", "stringOperators", "toSuggestions", "getTypeaheadParams", "useTypeaheadSuggestions", "isNumericColumn", "isTextColumn", "useCallback", "useRef", "columnFunctionDescriptors", "createEl", "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", "isNumericColumn", "fn", "columnFunctionDescriptors", "f", "isTextColumn", "getColumns", "options", "column", "label", "arithmeticOperators", "getOperators", "getConditionOperators", "stringOperators", "numericOperators", "toFunctionCompletion", "functionDescriptor", "functionDocInfo", "getAcceptedTypes", "s", "functions", "getFunctions", "acceptedTypes", "NONE", "useColumnExpressionSuggestionProvider", "table", "findColumn", "useCallback", "name", "col", "latestSuggestionsRef", "useRef", "getTypeaheadSuggestions", "useTypeaheadSuggestions", "getSuggestions", "suggestionType", "columnName", "prefix", "getRelationalOperators", "params", "getTypeaheadParams", "toSuggestions", "view", "completion", "from", "annotation", "AnnotationType", "cursorPos", "isPartialMatch", "valueType", "pattern", "latestSuggestions", "maybe", "option", "getCalculatedColumnDetails", "isVuuColumnDataType", "setCalculatedColumnExpression", "setCalculatedColumnName", "setCalculatedColumnType", "useCallback", "useRef", "useState", "applyDefaults", "column", "name", "expression", "type", "useColumnExpression", "columnProp", "onChangeNameProp", "onChangeServerDataTypeProp", "_setColumn", "columnRef", "setColumn", "onChangeName", "evt", "value", "newColumn", "onChangeExpression", "onChangeServerDataType", "jsx", "jsxs", "classBase", "ColumnExpressionPanel", "columnProp", "onChangeNameProp", "onChangeServerDataTypeProp", "tableConfig", "vuuTable", "typeRef", "useRef", "column", "onChangeExpression", "onChangeName", "onChangeServerDataType", "useColumnExpression", "initialExpressionRef", "getCalculatedColumnExpression", "suggestionProvider", "useColumnExpressionSuggestionProvider", "handleSubmitExpression", "useCallback", "_a", "_b", "FormField", "FormFieldLabel", "Input", "getCalculatedColumnName", "ColumnExpressionInput", "Dropdown", "getCalculatedColumnType", "Dropdown", "getCellRendererOptions", "getConfigurationEditor", "isColumnTypeRenderer", "isTypeDescriptor", "FormField", "FormFieldLabel", "cx", "useCallback", "useMemo", "FormField", "FormFieldLabel", "Input", "Switch", "getTypeFormattingFromColumn", "useCallback", "useState", "jsx", "jsxs", "classBase", "BaseNumericFormattingSettings", "column", "onChange", "_a", "_b", "_c", "formattingSettings", "setFormattingSettings", "handleInputKeyDown", "evt", "handleChangeDecimals", "value", "numericValue", "newFormattingSettings", "handleChangeAlignDecimals", "checked", "handleChangeZeroPad", "useCallback", "FormField", "FormFieldLabel", "ToggleButton", "ToggleButtonGroup", "isDateTimeColumn", "isTypeDescriptor", "useCallback", "useMemo", "useState", "Dropdown", "defaultPatternsByType", "fallbackDateTimePattern", "getTypeFormattingFromColumn", "supportedDateTimePatterns", "FormField", "FormFieldLabel", "ToggleButton", "ToggleButtonGroup", "Fragment", "jsx", "jsxs", "DateTimeFormattingSettings", "column", "onChange", "_a", "_b", "formatting", "pattern", "toggleValue", "getToggleValue", "fallbackState", "setFallbackState", "onPatternChange", "onDropdownChange", "key", "_", "p", "updatedPattern", "s", "onToggleChange", "evnt", "_c", "_d", "value", "toggleValues", "v", "labelByType", "jsx", "jsxs", "classBase", "LongTypeFormattingSettings", "props", "column", "onChangeType", "type", "isTypeDescriptor", "handleToggleChange", "useCallback", "event", "value", "FormField", "FormFieldLabel", "ToggleButtonGroup", "toggleValues", "v", "ToggleButton", "isDateTimeColumn", "DateTimeFormattingSettings", "BaseNumericFormattingSettings", "jsx", "jsxs", "classBase", "itemToString", "item", "_a", "ColumnFormattingPanel", "availableRenderers", "className", "column", "onChangeFormatting", "onChangeColumnType", "onChangeRendering", "htmlAttributes", "formattingSettingsComponent", "useMemo", "getFormattingSettingsComponent", "ConfigEditor", "type", "isTypeDescriptor", "isColumnTypeRenderer", "cellRendererOptions", "getCellRendererOptions", "getConfigurationEditor", "selectedCellRenderer", "defaultRenderer", "rendererName", "configuredRenderer", "renderer", "handleChangeRenderer", "useCallback", "_", "cellRendererDescriptor", "renderProps", "serverDataType", "FormField", "FormFieldLabel", "Dropdown", "cx", "props", "BaseNumericFormattingSettings", "LongTypeFormattingSettings", "cx", "getCalculatedColumnDetails", "isCalculatedColumn", "jsx", "jsxs", "classBase", "ColumnNameLabel", "column", "onClick", "isCalculatedColumn", "name", "type", "expression", "getCalculatedColumnDetails", "displayName", "displayExpression", "nameClass", "expressionClass", "cx", "getRegisteredCellRenderers", "isValidColumnAlignment", "isValidPinLocation", "setCalculatedColumnName", "updateColumnRenderProps", "updateColumnFormatting", "updateColumnType", "queryClosest", "useCallback", "useEffect", "useMemo", "useRef", "useState", "integerCellRenderers", "doubleCellRenderers", "stringCellRenderers", "booleanCellRenderers", "getAvailableCellRenderers", "column", "getFieldName", "input", "saltFormField", "field", "getColumn", "columns", "col", "replaceColumn", "tableConfig", "useColumnSettings", "columnProp", "onCancelCreateColumn", "onConfigChange", "onCreateCalculatedColumn", "setColumn", "columnRef", "inEditMode", "setEditMode", "handleEditCalculatedcolumn", "availableRenderers", "handleInputCommit", "handleChangeToggleButton", "evt", "button", "fieldName", "value", "newColumn", "handleChange", "state", "handleChangeCalculatedColumnName", "name", "handleChangeFormatting", "formatting", "handleChangeType", "type", "updatedColumn", "handleChangeServerDataType", "serverDataType", "handleChangeRendering", "renderProps", "navigateColumn", "moveBy", "index", "navigateNextColumn", "navigatePrevColumn", "handleSaveCalculatedColumn", "handleCancelEdit", "jsx", "jsxs", "classBase", "getColumnLabel", "column", "name", "label", "isCalculatedColumn", "getCalculatedColumnName", "ColumnSettingsPanel", "columnProp", "onCancelCreateColumn", "onConfigChange", "onCreateCalculatedColumn", "tableConfig", "vuuTable", "isNewCalculatedColumn", "availableRenderers", "editCalculatedColumn", "navigateNextColumn", "navigatePrevColumn", "onCancel", "onChange", "onChangeCalculatedColumnName", "onChangeFormatting", "onChangeRendering", "onChangeServerDataType", "onChangeToggleButton", "onChangeType", "onEditCalculatedColumn", "onInputCommit", "onSave", "useColumnSettings", "serverDataType", "align", "getDefaultAlignment", "pin", "width", "cx", "ColumnNameLabel", "ColumnExpressionPanel", "FormField", "FormFieldLabel", "VuuInput", "ToggleButtonGroup", "ToggleButton", "Icon", "ColumnFormattingPanel", "Button", "cx", "useEffect", "useState", "jsx", "jsxs", "classBase", "numberFormatter", "DataSourceStats", "classNameProp", "dataSource", "range", "setRange", "useState", "size", "setSize", "useEffect", "className", "cx", "from", "to", "value", "Button", "FormField", "FormFieldLabel", "ToggleButton", "ToggleButtonGroup", "updateTableConfig", "addColumnToSubscribedColumns", "queryClosest", "isCalculatedColumn", "moveItem", "subscribedOnly", "useLayoutEffectSkipFirst", "useCallback", "useMemo", "useState", "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", "handleChangeColumnLabels", "evt", "button", "columnFormatHeader", "handleChangeTableAttribute", "ariaPressed", "handleCommitColumnWidth", "_", "columnDefaultWidth", "columnLabelsValue", "Icon", "VuuInput", "jsx", "jsxs", "classBase", "TableSettingsPanel", "allowColumnLabelCase", "allowColumnDefaultWidth", "allowGridRowStyling", "availableColumns", "onAddCalculatedColumn", "onConfigChange", "onDataSourceConfigChange", "onNavigateToColumn", "tableConfigProp", "_a", "_b", "_c", "columnItems", "columnLabelsValue", "onChangeColumnLabels", "onChangeTableAttribute", "onColumnChange", "onCommitColumnWidth", "onMoveListItem", "tableConfig", "useTableSettings", "FormField", "FormFieldLabel", "ToggleButtonGroup", "ToggleButton", "Icon", "VuuInput", "ColumnList", "Button"]
7
7
  }