@deephaven/iris-grid 0.21.2-dhe-vite.5 → 0.22.0
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/dist/AdvancedFilterCreator.d.ts +1 -1
- package/dist/AdvancedFilterCreator.d.ts.map +1 -1
- package/dist/AdvancedFilterCreator.js +56 -58
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +8 -9
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +5 -6
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/ColumnStatistics.js +12 -11
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/FilterInputField.d.ts.map +1 -1
- package/dist/FilterInputField.js +4 -3
- package/dist/FilterInputField.js.map +1 -1
- package/dist/IrisGrid.d.ts +1 -1
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +30 -22
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridCopyHandler.d.ts.map +1 -1
- package/dist/IrisGridCopyHandler.js +4 -6
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridShortcuts.js +1 -1
- package/dist/IrisGridShortcuts.js.map +1 -1
- package/dist/sidebar/ChartBuilder.js +19 -19
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +14 -17
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +8 -8
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.d.ts.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +16 -15
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +4 -4
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +48 -41
- package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +7 -7
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/package.json +17 -25
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VisibilityOrderingBuilder.js","names":["React","Component","classNames","GridUtils","TextUtils","assertNotNull","FontAwesomeIcon","dhEye","dhEyeSlash","dhSortAlphaDown","dhSortAlphaUp","dhArrowToTop","dhArrowToBottom","vsChevronUp","vsChevronDown","vsGripper","DragDropContext","Draggable","Droppable","memoize","debounce","SearchInput","Tooltip","Log","log","module","DEBOUNCE_SEARCH_COLUMN","VisibilityOrderingBuilder","constructor","props","searchColumns","model","columns","i","length","isColumnMovable","columnName","modelIndex","visibleIndex","isHidden","isSelected","isDragging","isDragged","columnsDragged","provided","innerRef","draggableProps","event","handleVisibilityDraggingStart","VISIBILITY_OPTIONS","SHOW","HIDE","handleMouseEnter","handleVisibilityDraggingEnd","handleItemClick","key","handleVisibilityKeyDown","stopPropagation","preventDefault","dragHandleProps","handleSearchInputChange","bind","handleOrderDraggingStart","handleOrderDraggingEnd","state","selectedColumns","lastSelectedColumns","isDraggingVisibility","visibilityDraggingOption","undefined","visibilityDraggingStartColumn","isDraggingOrder","orderDraggingColumn","searchFilter","list","componentWillUnmount","debouncedSearchColumns","cancel","resetVisibilityOrdering","onColumnVisibilityChanged","onMovedColumnsChanged","map","column","index","getColumnIndexByName","name","setState","resetSelection","target","value","movedColumns","columnsMatch","visibleIndexToFocus","forEach","toLowerCase","includes","push","Math","min","getVisibleIndex","addColumnToSelected","columnItemToFocus","querySelectorAll","scrollIntoView","block","visibilityOption","isModifierKeyDown","isShiftKeyDown","shiftKey","focus","start","document","documentElement","classList","add","draggableId","source","startIndex","parseInt","result","remove","destination","destinationIndex","selectedColumnsSortByVisibleIndex","sort","columnA","columnB","newMoves","draggingVisibleIndex","upper","lower","moveItem","columnVisibleIndex","bottomDestinationIndex","reverse","debug","targetModelIndex","userColumnWidths","draggingStartVisibleIndex","targetVisibleIndex","columnsToChangeVisibility","checkDownward","visibleIndexToCheck","modelIndexToCheck","getModelIndex","checkColumnHidden","handleMoveColumns","option","firstMovableIndex","getFirstMovableIndex","lastMovableIndex","getLastMovableIndex","sortedSelectedColumns","MOVE_OPTIONS","TOP","UP","scrollListAfterMove","columnModelIndex","scrollTop","BOTTOM","scrollHeight","DOWN","concat","handleSortColumns","movableColumns","immovableColumns","movableColumnsSorted","a","b","isAscending","SORTING_OPTIONS","ASC","aName","toUpperCase","bName","modelIndexAlphaSorted","insertIndex","modelIndexClicked","removeSelectionOnClick","currentTarget","columnsToBeAdded","removeColumnFromSelected","lastSelectedColumn","lastSelectedColumnVisibleIndex","visibleIndexToBeSelected","columnsInBetween","addToExisting","newSelectedColumns","newLastSelectedColumns","splice","findIndex","selected","pop","makeVisibilityOrderingList","elements","wasMovable","isMovable","get","renderVisibilityOrderingItem","renderImmovableItem","render","noSelection","columnsToToggle","c","filter","toggleToShow","checkAllColumnsHidden","selectedToggleText","columnItems","DSC","snapshot","draggingFromThisWith","droppableProps","placeholder","ALL","SELECTION"],"sources":["../../src/sidebar/VisibilityOrderingBuilder.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { ChangeEvent, Component, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport {\n GridUtils,\n ModelIndex,\n ModelSizeMap,\n MoveOperation,\n VisibleIndex,\n} from '@deephaven/grid';\nimport { TextUtils, assertNotNull } from '@deephaven/utils';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n dhEye,\n dhEyeSlash,\n dhSortAlphaDown,\n dhSortAlphaUp,\n dhArrowToTop,\n dhArrowToBottom,\n vsChevronUp,\n vsChevronDown,\n vsGripper,\n} from '@deephaven/icons';\nimport {\n DragDropContext,\n Draggable,\n DragStart,\n Droppable,\n DropResult,\n} from 'react-beautiful-dnd';\nimport memoize from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport { SearchInput, Tooltip } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport './VisibilityOrderingBuilder.scss';\nimport IrisGridModel from '../IrisGridModel';\nimport { ColumnName } from '../CommonTypes';\n\nconst log = Log.module('VisibilityOrderingBuilder');\nconst DEBOUNCE_SEARCH_COLUMN = 150;\n\ninterface VisibilityOrderingBuilderProps {\n model: IrisGridModel;\n movedColumns: MoveOperation[];\n userColumnWidths: ModelSizeMap;\n onColumnVisibilityChanged: (\n columns: VisibleIndex[],\n options?: VisibilityOptionType\n ) => void;\n onMovedColumnsChanged: (operations: MoveOperation[], cb?: () => void) => void;\n}\n\ninterface VisibilityOrderingBuilderState {\n selectedColumns: ModelIndex[]; // model index of selected column(s)\n lastSelectedColumns: ModelIndex[];\n isDraggingVisibility: boolean;\n visibilityDraggingOption?: VisibilityOptionType;\n visibilityDraggingStartColumn: number | null;\n isDraggingOrder: boolean;\n orderDraggingColumn: number | null;\n searchFilter: string;\n}\n\ntype Values<T> = T[keyof T];\n\nexport type VisibilityOptionType = Values<\n typeof VisibilityOrderingBuilder.VISIBILITY_OPTIONS\n>;\n\nclass VisibilityOrderingBuilder extends Component<\n VisibilityOrderingBuilderProps,\n VisibilityOrderingBuilderState\n> {\n static VISIBILITY_OPTIONS = { SHOW: 'SHOW', HIDE: 'HIDE' } as const;\n\n static SORTING_OPTIONS = { DSC: 'DSC', ASC: 'ASC' };\n\n static MOVE_OPTIONS = {\n TOP: 'TOP',\n BOTTOM: 'BOTTOM',\n UP: 'UP',\n DOWN: 'DOWN',\n };\n\n static COLUMN_CHANGE_OPTIONS = { ALL: 'ALL', SELECTION: 'SELECTION' };\n\n static defaultProps = {\n movedColumns: [],\n onColumnVisibilityChanged: (): void => undefined,\n onMovedColumnsChanged: (): void => undefined,\n };\n\n constructor(props: VisibilityOrderingBuilderProps) {\n super(props);\n\n this.handleSearchInputChange = this.handleSearchInputChange.bind(this);\n this.searchColumns = this.searchColumns.bind(this);\n this.handleOrderDraggingStart = this.handleOrderDraggingStart.bind(this);\n this.handleOrderDraggingEnd = this.handleOrderDraggingEnd.bind(this);\n\n this.state = {\n selectedColumns: [], // model index of selected column(s)\n lastSelectedColumns: [],\n isDraggingVisibility: false,\n visibilityDraggingOption: undefined,\n visibilityDraggingStartColumn: null,\n isDraggingOrder: false,\n orderDraggingColumn: null,\n searchFilter: '',\n };\n\n this.list = null;\n }\n\n componentWillUnmount(): void {\n this.debouncedSearchColumns.cancel();\n }\n\n list: HTMLDivElement | null;\n\n debouncedSearchColumns = debounce(this.searchColumns, DEBOUNCE_SEARCH_COLUMN);\n\n resetVisibilityOrdering(): void {\n const {\n model,\n onColumnVisibilityChanged,\n onMovedColumnsChanged,\n } = this.props;\n const { columns } = model;\n\n onColumnVisibilityChanged(\n columns.map(column => {\n const index = model.getColumnIndexByName(column.name);\n assertNotNull(index);\n return index;\n }),\n VisibilityOrderingBuilder.VISIBILITY_OPTIONS.SHOW\n );\n this.setState({\n selectedColumns: [],\n lastSelectedColumns: [],\n searchFilter: '',\n });\n onMovedColumnsChanged([]);\n }\n\n resetSelection(): void {\n const { isDraggingOrder } = this.state;\n // don't reset selection if user is dragging column(s)\n if (isDraggingOrder) {\n return;\n }\n this.setState({ selectedColumns: [], lastSelectedColumns: [] });\n }\n\n handleSearchInputChange(event: ChangeEvent<HTMLInputElement>): void {\n const searchFilter = event.target.value;\n this.setState({ searchFilter });\n if (!searchFilter) {\n this.debouncedSearchColumns.cancel();\n this.resetSelection();\n return;\n }\n this.debouncedSearchColumns(searchFilter);\n }\n\n searchColumns(searchFilter: string): void {\n const { model, movedColumns } = this.props;\n const { columns } = model;\n\n const columnsMatch = [] as number[];\n let visibleIndexToFocus = columns.length;\n columns.forEach((column, index) => {\n const columnName = column.name.toLowerCase();\n if (\n model.isColumnMovable(index) &&\n columnName.includes(searchFilter.toLowerCase())\n ) {\n columnsMatch.push(index);\n visibleIndexToFocus = Math.min(\n visibleIndexToFocus,\n GridUtils.getVisibleIndex(index, movedColumns)\n );\n }\n });\n this.addColumnToSelected(columnsMatch, false);\n if (columnsMatch.length > 0) {\n const columnItemToFocus = this.list?.querySelectorAll('.column-item')[\n visibleIndexToFocus\n ];\n columnItemToFocus?.scrollIntoView({ block: 'center' });\n }\n }\n\n handleVisibilityKeyDown(\n modelIndex: ModelIndex,\n visibilityOption: VisibilityOptionType\n ): void {\n const { onColumnVisibilityChanged } = this.props;\n onColumnVisibilityChanged([modelIndex], visibilityOption);\n }\n\n handleVisibilityDraggingStart(\n modelIndex: ModelIndex,\n visibilityOption: VisibilityOptionType,\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ): void {\n const { onColumnVisibilityChanged, movedColumns } = this.props;\n\n const isModifierKeyDown = GridUtils.isModifierKeyDown(event);\n const isShiftKeyDown = event.shiftKey;\n\n if (isModifierKeyDown || isShiftKeyDown) return;\n\n onColumnVisibilityChanged([modelIndex], visibilityOption);\n\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n\n this.setState({\n isDraggingVisibility: true,\n visibilityDraggingOption: visibilityOption,\n visibilityDraggingStartColumn: visibleIndex,\n });\n\n this.addColumnToSelected([modelIndex]);\n }\n\n handleVisibilityDraggingEnd(\n event: React.MouseEvent<HTMLButtonElement, MouseEvent> | null = null\n ): void {\n if (event) (event.target as HTMLButtonElement).focus();\n\n const { isDraggingVisibility } = this.state;\n if (isDraggingVisibility) {\n this.setState({\n isDraggingVisibility: false,\n visibilityDraggingOption: undefined,\n visibilityDraggingStartColumn: null,\n });\n }\n }\n\n handleOrderDraggingStart(start: DragStart): void {\n document.documentElement.classList.add('drag-pointer-events-none');\n\n const { selectedColumns } = this.state;\n const {\n draggableId,\n source: { index: startIndex },\n } = start;\n const orderDraggingColumn = parseInt(draggableId, 10);\n\n // we want to clear focus from any eye toggles\n // however to maintain react-beautiful-dnd keyboard functionality the only valid\n // focus target is the drag target itself, so we set it there instead of blurring\n (this.list?.querySelectorAll('.column-item')[\n startIndex\n ] as HTMLDivElement).focus();\n\n if (!selectedColumns.includes(orderDraggingColumn)) {\n this.setState({\n isDraggingOrder: true,\n orderDraggingColumn,\n selectedColumns: [orderDraggingColumn],\n });\n return;\n }\n this.setState({ isDraggingOrder: true, orderDraggingColumn });\n }\n\n handleOrderDraggingEnd(result: DropResult): void {\n document.documentElement.classList.remove('drag-pointer-events-none');\n\n const { movedColumns, onMovedColumnsChanged } = this.props;\n const { selectedColumns, orderDraggingColumn } = this.state;\n\n // reset dragging state\n this.setState({ isDraggingOrder: false, orderDraggingColumn: null });\n\n // if dropped outside the list, re-focus on the dragged item if necessary\n if (!result.destination) {\n return;\n }\n\n const { index: destinationIndex } = result.destination;\n\n const selectedColumnsSortByVisibleIndex = [...selectedColumns].sort(\n (columnA, columnB) =>\n GridUtils.getVisibleIndex(columnA, movedColumns) -\n GridUtils.getVisibleIndex(columnB, movedColumns)\n );\n\n let newMoves = [...movedColumns];\n assertNotNull(orderDraggingColumn);\n const draggingVisibleIndex = GridUtils.getVisibleIndex(\n orderDraggingColumn,\n newMoves\n );\n const upper: number[] = [];\n const lower: number[] = [];\n\n // move the dragged column to destination first,\n newMoves = GridUtils.moveItem(\n draggingVisibleIndex,\n destinationIndex,\n newMoves\n );\n\n // split selected columns into two parts on drop destination index: top & bottom\n selectedColumnsSortByVisibleIndex.forEach(column => {\n const columnVisibleIndex = GridUtils.getVisibleIndex(column, newMoves);\n if (column === orderDraggingColumn) {\n return;\n }\n if (columnVisibleIndex < destinationIndex) {\n upper.push(column);\n } else {\n lower.push(column);\n }\n });\n\n // for the top part, move column(s) to the destination index\n upper.forEach(column => {\n const visibleIndex = GridUtils.getVisibleIndex(column, newMoves);\n newMoves = GridUtils.moveItem(visibleIndex, destinationIndex, newMoves);\n });\n\n // for the bottom part, in reverse order, move column(s) to the drop destination index if there's no top column(s) or the dragged column is not dropped upside\n // otherwise, move column(s) under the dropping destination index\n const bottomDestinationIndex =\n upper.length > 0 || draggingVisibleIndex > destinationIndex\n ? destinationIndex + 1\n : destinationIndex;\n\n lower.reverse().forEach(column => {\n const visibleIndex = GridUtils.getVisibleIndex(column, newMoves);\n newMoves = GridUtils.moveItem(\n visibleIndex,\n bottomDestinationIndex,\n newMoves\n );\n });\n\n onMovedColumnsChanged(newMoves);\n log.debug('move column order by drag & drop', newMoves);\n }\n\n handleMouseEnter(\n targetModelIndex: ModelIndex,\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ): void {\n const {\n onColumnVisibilityChanged,\n movedColumns,\n userColumnWidths,\n } = this.props;\n const {\n isDraggingVisibility,\n visibilityDraggingOption,\n visibilityDraggingStartColumn: draggingStartVisibleIndex,\n } = this.state;\n const targetVisibleIndex = GridUtils.getVisibleIndex(\n targetModelIndex,\n movedColumns\n );\n const isModifierKeyDown = GridUtils.isModifierKeyDown(event);\n const isShiftKeyDown = event.shiftKey;\n\n if (!isDraggingVisibility || isModifierKeyDown || isShiftKeyDown) {\n return;\n }\n\n (event.target as HTMLButtonElement).focus();\n\n // browser can skip mouseEnter / mouseMove event if user moves the mouse too fast\n // try to check columns between dragging start index to current index to compensate missing event,\n const columnsToChangeVisibility = [targetModelIndex];\n assertNotNull(draggingStartVisibleIndex);\n const checkDownward = targetVisibleIndex > draggingStartVisibleIndex;\n\n for (\n let visibleIndexToCheck = draggingStartVisibleIndex;\n checkDownward\n ? visibleIndexToCheck < targetVisibleIndex\n : visibleIndexToCheck > targetVisibleIndex;\n checkDownward ? (visibleIndexToCheck += 1) : (visibleIndexToCheck -= 1)\n ) {\n const modelIndexToCheck = GridUtils.getModelIndex(\n visibleIndexToCheck,\n movedColumns\n );\n const isHidden = GridUtils.checkColumnHidden(\n modelIndexToCheck,\n userColumnWidths\n );\n if (\n isHidden &&\n visibilityDraggingOption ===\n VisibilityOrderingBuilder.VISIBILITY_OPTIONS.SHOW\n ) {\n columnsToChangeVisibility.push(modelIndexToCheck);\n } else if (\n !isHidden &&\n visibilityDraggingOption ===\n VisibilityOrderingBuilder.VISIBILITY_OPTIONS.HIDE\n ) {\n columnsToChangeVisibility.push(modelIndexToCheck);\n }\n }\n\n this.addColumnToSelected(columnsToChangeVisibility, true);\n\n onColumnVisibilityChanged(\n columnsToChangeVisibility,\n visibilityDraggingOption\n );\n }\n\n handleMoveColumns(option: string): void {\n const { movedColumns, onMovedColumnsChanged, model } = this.props;\n const { columns } = model;\n const { selectedColumns } = this.state;\n if (selectedColumns.length === 0) {\n return;\n }\n\n const firstMovableIndex = this.getFirstMovableIndex(model, columns);\n const lastMovableIndex = this.getLastMovableIndex(model, columns);\n if (firstMovableIndex == null || lastMovableIndex == null) {\n return;\n }\n\n // for moving up and to the top, move column(s) in visibility index order\n // for moving down and to the bottom, move column(s) in reverse visibility index order\n const sortedSelectedColumns = [\n ...selectedColumns,\n ].sort((columnA, columnB) =>\n option === VisibilityOrderingBuilder.MOVE_OPTIONS.TOP ||\n option === VisibilityOrderingBuilder.MOVE_OPTIONS.UP\n ? GridUtils.getVisibleIndex(columnA, movedColumns) -\n GridUtils.getVisibleIndex(columnB, movedColumns)\n : GridUtils.getVisibleIndex(columnB, movedColumns) -\n GridUtils.getVisibleIndex(columnA, movedColumns)\n );\n\n let newMoves = [] as MoveOperation[];\n let scrollListAfterMove: () => void = () => undefined;\n\n switch (option) {\n case VisibilityOrderingBuilder.MOVE_OPTIONS.TOP:\n sortedSelectedColumns.forEach((columnModelIndex, index) => {\n const visibleIndex = GridUtils.getVisibleIndex(\n columnModelIndex,\n movedColumns\n );\n newMoves = GridUtils.moveItem(\n visibleIndex,\n firstMovableIndex + index,\n newMoves\n );\n });\n scrollListAfterMove = () => {\n assertNotNull(this.list);\n this.list.scrollTop = 0;\n };\n break;\n case VisibilityOrderingBuilder.MOVE_OPTIONS.BOTTOM:\n sortedSelectedColumns.forEach((columnModelIndex, index) => {\n const visibleIndex = GridUtils.getVisibleIndex(\n columnModelIndex,\n movedColumns\n );\n newMoves = GridUtils.moveItem(\n visibleIndex,\n lastMovableIndex - index,\n newMoves\n );\n });\n scrollListAfterMove = () => {\n assertNotNull(this.list);\n this.list.scrollTop = this.list.scrollHeight;\n };\n\n break;\n case VisibilityOrderingBuilder.MOVE_OPTIONS.UP:\n if (\n GridUtils.getVisibleIndex(sortedSelectedColumns[0], movedColumns) !==\n firstMovableIndex // check if the first visible column has reached top\n ) {\n sortedSelectedColumns.forEach(columnModelIndex => {\n const visibleIndex = GridUtils.getVisibleIndex(\n columnModelIndex,\n movedColumns\n );\n newMoves = GridUtils.moveItem(\n visibleIndex,\n visibleIndex - 1,\n newMoves\n );\n });\n }\n break;\n case VisibilityOrderingBuilder.MOVE_OPTIONS.DOWN:\n if (\n GridUtils.getVisibleIndex(sortedSelectedColumns[0], movedColumns) !==\n lastMovableIndex // check if the last visible column has reached bottom\n ) {\n sortedSelectedColumns.forEach(columnModelIndex => {\n const visibleIndex = GridUtils.getVisibleIndex(\n columnModelIndex,\n movedColumns\n );\n newMoves = GridUtils.moveItem(\n visibleIndex,\n visibleIndex + 1,\n newMoves\n );\n });\n }\n break;\n default:\n break;\n }\n if (newMoves.length > 0) {\n onMovedColumnsChanged(movedColumns.concat(newMoves), scrollListAfterMove);\n }\n }\n\n handleSortColumns(option: string): void {\n const { model, onMovedColumnsChanged } = this.props;\n const { columns } = model;\n\n // We can't move the immovable columns when sorting, so separate them out first\n const movableColumns = [];\n const immovableColumns = [];\n for (let modelIndex = 0; modelIndex < columns.length; modelIndex += 1) {\n if (model.isColumnMovable(modelIndex)) {\n movableColumns.push(modelIndex);\n } else {\n immovableColumns.push(modelIndex);\n }\n }\n\n // Sort all the movable columns\n const movableColumnsSorted = movableColumns.sort((a, b) => {\n const isAscending =\n option === VisibilityOrderingBuilder.SORTING_OPTIONS.ASC;\n const aName = columns[a].name.toUpperCase();\n const bName = columns[b].name.toUpperCase();\n return TextUtils.sort(aName, bName, isAscending);\n });\n\n // Place all the immovable columns where they need to be\n const modelIndexAlphaSorted = [];\n for (let i = 0; i < immovableColumns.length; i += 1) {\n const modelIndex = immovableColumns[i];\n modelIndexAlphaSorted[modelIndex] = modelIndex;\n }\n\n // Then the rest of the sorted columns can be put in the empty spaces\n let insertIndex = 0;\n for (let i = 0; i < movableColumnsSorted.length; i += 1) {\n while (modelIndexAlphaSorted[insertIndex] != null) {\n insertIndex += 1;\n }\n\n modelIndexAlphaSorted[insertIndex] = movableColumnsSorted[i];\n }\n\n let newMoves = [] as MoveOperation[];\n modelIndexAlphaSorted.forEach((modelIndex, index) => {\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, newMoves);\n newMoves = GridUtils.moveItem(visibleIndex, index, newMoves);\n });\n onMovedColumnsChanged(newMoves);\n }\n\n handleItemClick(\n modelIndexClicked: ModelIndex,\n event: React.MouseEvent<HTMLDivElement | HTMLButtonElement, MouseEvent>,\n removeSelectionOnClick = true\n ): void {\n event.stopPropagation();\n event.currentTarget.focus();\n\n const { selectedColumns, lastSelectedColumns } = this.state;\n const isModifierKeyDown = GridUtils.isModifierKeyDown(event);\n const isShiftKeyDown = event.shiftKey;\n const isSelected = selectedColumns.includes(modelIndexClicked);\n const columnsToBeAdded = [modelIndexClicked];\n\n if (isSelected && isModifierKeyDown) {\n this.removeColumnFromSelected(modelIndexClicked);\n return;\n }\n\n if (isSelected && selectedColumns.length === 1 && removeSelectionOnClick) {\n this.removeColumnFromSelected(modelIndexClicked);\n return;\n }\n\n if (isShiftKeyDown) {\n const { movedColumns } = this.props;\n const lastSelectedColumn =\n lastSelectedColumns[lastSelectedColumns.length - 1];\n const lastSelectedColumnVisibleIndex = GridUtils.getVisibleIndex(\n lastSelectedColumn,\n movedColumns\n );\n const visibleIndexToBeSelected = GridUtils.getVisibleIndex(\n modelIndexClicked,\n movedColumns\n );\n const checkDownward =\n visibleIndexToBeSelected > lastSelectedColumnVisibleIndex;\n const columnsInBetween = [];\n for (\n let i = lastSelectedColumnVisibleIndex;\n checkDownward\n ? i < visibleIndexToBeSelected\n : i > visibleIndexToBeSelected;\n checkDownward ? (i += 1) : (i -= 1)\n ) {\n columnsInBetween.push(GridUtils.getModelIndex(i, movedColumns));\n }\n columnsInBetween.forEach(column => {\n if (!selectedColumns.includes(column)) {\n columnsToBeAdded.push(column);\n }\n });\n }\n\n this.addColumnToSelected(\n columnsToBeAdded,\n isModifierKeyDown || isShiftKeyDown\n );\n }\n\n addColumnToSelected(\n columnsToBeAdded: ModelIndex[],\n addToExisting = false\n ): void {\n const { selectedColumns, lastSelectedColumns } = this.state;\n const newSelectedColumns = addToExisting\n ? selectedColumns.concat(columnsToBeAdded)\n : columnsToBeAdded;\n const newLastSelectedColumns = addToExisting\n ? lastSelectedColumns.concat(columnsToBeAdded)\n : columnsToBeAdded;\n\n this.setState({\n selectedColumns: newSelectedColumns,\n lastSelectedColumns: newLastSelectedColumns,\n });\n }\n\n removeColumnFromSelected(modelIndex: ModelIndex): void {\n const { selectedColumns, lastSelectedColumns } = this.state;\n const newSelectedColumns = [...selectedColumns];\n\n newSelectedColumns.splice(\n newSelectedColumns.findIndex(selected => selected === modelIndex),\n 1\n );\n const lastSelectedColumn =\n lastSelectedColumns[lastSelectedColumns.length - 1];\n const newLastSelectedColumns = [...lastSelectedColumns];\n if (lastSelectedColumn === modelIndex) {\n newLastSelectedColumns.pop();\n }\n this.setState({\n selectedColumns: newSelectedColumns,\n lastSelectedColumns: newLastSelectedColumns,\n });\n }\n\n makeVisibilityOrderingList(): ReactElement[] {\n const { model, userColumnWidths, movedColumns } = this.props;\n const { columns } = model;\n const {\n selectedColumns,\n isDraggingOrder,\n orderDraggingColumn,\n } = this.state;\n\n const elements = [];\n let wasMovable = false;\n for (\n let visibleIndex = 0;\n visibleIndex < columns.length;\n visibleIndex += 1\n ) {\n const modelIndex = GridUtils.getModelIndex(visibleIndex, movedColumns);\n const column = columns[modelIndex];\n const isMovable = model.isColumnMovable(modelIndex);\n if (visibleIndex > 0 && isMovable !== wasMovable) {\n elements.push(<hr />);\n }\n if (isMovable) {\n const isHidden = userColumnWidths.get(modelIndex) === 0;\n const isSelected = selectedColumns.includes(modelIndex);\n const isDragged = orderDraggingColumn === modelIndex;\n const columnsDragged =\n isDraggingOrder && isDragged && selectedColumns.length > 1\n ? selectedColumns.length\n : null;\n elements.push(\n this.renderVisibilityOrderingItem(\n column.name,\n modelIndex,\n visibleIndex,\n isHidden,\n isSelected,\n isDraggingOrder,\n isDragged,\n columnsDragged\n )\n );\n } else {\n elements.push(this.renderImmovableItem(column.name));\n }\n\n wasMovable = isMovable;\n }\n\n return elements;\n }\n\n getFirstMovableIndex = memoize((model: IrisGridModel, columns) => {\n for (let i = 0; i < columns.length; i += 1) {\n if (model.isColumnMovable(i)) {\n return i;\n }\n }\n\n return null;\n });\n\n getLastMovableIndex = memoize((model: IrisGridModel, columns) => {\n for (let i = columns.length - 1; i >= 0; i -= 1) {\n if (model.isColumnMovable(i)) {\n return i;\n }\n }\n\n return null;\n });\n\n renderImmovableItem = memoize(\n (columnName: ColumnName): ReactElement => (\n <div className=\"visibility-ordering-list-item immovable\" key={columnName}>\n <div className=\"column-item\">\n <span className=\"column-name\">{columnName}</span>\n </div>\n </div>\n )\n );\n\n renderVisibilityOrderingItem = memoize(\n (\n columnName: ColumnName,\n modelIndex: ModelIndex,\n visibleIndex: VisibleIndex,\n isHidden: boolean,\n isSelected: boolean,\n isDragging: boolean,\n isDragged: boolean,\n columnsDragged: number | null\n ) => (\n <Draggable\n draggableId={`${modelIndex}`} // draggableId requires string input\n index={visibleIndex}\n key={columnName}\n disableInteractiveElementBlocking\n >\n {provided => (\n <div\n className=\"visibility-ordering-list-item\"\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.draggableProps}\n >\n <button\n type=\"button\"\n className=\"visibility btn btn-link btn-link-icon\"\n onMouseDown={event => {\n this.handleVisibilityDraggingStart(\n modelIndex,\n isHidden\n ? VisibilityOrderingBuilder.VISIBILITY_OPTIONS.SHOW\n : VisibilityOrderingBuilder.VISIBILITY_OPTIONS.HIDE,\n event\n );\n }}\n onMouseEnter={event => {\n this.handleMouseEnter(modelIndex, event);\n }}\n onMouseUp={event => {\n this.handleVisibilityDraggingEnd(event);\n }}\n onClick={event => {\n this.handleItemClick(modelIndex, event, false);\n }}\n onKeyDown={event => {\n // trigger on keyboard enter or space keys\n if (event.key === 'Enter' || event.key === ' ') {\n this.handleVisibilityKeyDown(\n modelIndex,\n isHidden\n ? VisibilityOrderingBuilder.VISIBILITY_OPTIONS.SHOW\n : VisibilityOrderingBuilder.VISIBILITY_OPTIONS.HIDE\n );\n event.stopPropagation();\n event.preventDefault();\n }\n }}\n >\n <FontAwesomeIcon icon={isHidden ? dhEyeSlash : dhEye} />\n </button>\n <div\n role=\"menuitem\"\n tabIndex={0}\n className={classNames(\n 'ordering column-item',\n {\n isSelected,\n },\n { isDragging },\n { isDragged },\n { 'two-dragged': columnsDragged === 2 },\n {\n 'multiple-dragged':\n columnsDragged != null && columnsDragged > 2,\n }\n )}\n onClick={event => {\n this.handleItemClick(modelIndex, event);\n }}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.dragHandleProps}\n >\n <span className=\"column-name\">{columnName}</span>\n <div>\n {columnsDragged != null && columnsDragged !== 0 && (\n <span className=\"number-badge\">{columnsDragged}</span>\n )}\n <Tooltip>Drag to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </div>\n </div>\n </div>\n )}\n </Draggable>\n )\n );\n\n render(): ReactElement {\n const { model, userColumnWidths, onColumnVisibilityChanged } = this.props;\n const { selectedColumns, searchFilter } = this.state;\n const { columns } = model;\n const noSelection = selectedColumns.length === 0;\n const columnsToToggle = noSelection\n ? columns.map((c, i) => i).filter(i => model.isColumnMovable(i))\n : [...selectedColumns];\n const toggleToShow = GridUtils.checkAllColumnsHidden(\n columnsToToggle,\n userColumnWidths\n );\n const selectedToggleText = toggleToShow ? 'Show Selected' : 'Hide Selected';\n\n const columnItems = this.makeVisibilityOrderingList();\n\n return (\n <div\n role=\"menu\"\n className=\"visibility-ordering-builder\"\n tabIndex={0}\n onMouseUp={() => {\n this.handleVisibilityDraggingEnd();\n }}\n onMouseLeave={() => {\n this.handleVisibilityDraggingEnd();\n }}\n >\n <div className=\"top-menu\">\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={() => {\n onColumnVisibilityChanged(\n columnsToToggle,\n toggleToShow\n ? VisibilityOrderingBuilder.VISIBILITY_OPTIONS.SHOW\n : VisibilityOrderingBuilder.VISIBILITY_OPTIONS.HIDE\n );\n }}\n >\n <FontAwesomeIcon icon={toggleToShow ? dhEyeSlash : dhEye} />\n <Tooltip>Toggle column visibility</Tooltip>\n {noSelection ? 'Toggle All' : selectedToggleText}\n </button>\n\n <div>\n <button\n type=\"button\"\n className=\"btn btn-link text-muted\"\n onClick={() => {\n this.resetVisibilityOrdering();\n }}\n >\n Reset\n <Tooltip>Reset to default</Tooltip>\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon\"\n onClick={() => {\n this.handleSortColumns(\n VisibilityOrderingBuilder.SORTING_OPTIONS.ASC\n );\n }}\n >\n <FontAwesomeIcon icon={dhSortAlphaDown} />\n <Tooltip>Sort ascending</Tooltip>\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon\"\n onClick={() => {\n this.handleSortColumns(\n VisibilityOrderingBuilder.SORTING_OPTIONS.DSC\n );\n }}\n >\n <FontAwesomeIcon icon={dhSortAlphaUp} />\n <Tooltip>Sort descending</Tooltip>\n </button>\n <span className=\"vertical-divider\" />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon\"\n onClick={() => {\n this.handleMoveColumns(\n VisibilityOrderingBuilder.MOVE_OPTIONS.UP\n );\n }}\n disabled={noSelection}\n >\n <FontAwesomeIcon icon={vsChevronUp} />\n <Tooltip>Move selection up</Tooltip>\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon\"\n onClick={() => {\n this.handleMoveColumns(\n VisibilityOrderingBuilder.MOVE_OPTIONS.DOWN\n );\n }}\n disabled={noSelection}\n >\n <FontAwesomeIcon icon={vsChevronDown} />\n <Tooltip>Move selection down</Tooltip>\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon\"\n onClick={() => {\n this.handleMoveColumns(\n VisibilityOrderingBuilder.MOVE_OPTIONS.TOP\n );\n }}\n disabled={noSelection}\n >\n <FontAwesomeIcon icon={dhArrowToTop} />\n <Tooltip>Move selection to top</Tooltip>\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon\"\n onClick={() => {\n this.handleMoveColumns(\n VisibilityOrderingBuilder.MOVE_OPTIONS.BOTTOM\n );\n }}\n disabled={noSelection}\n >\n <FontAwesomeIcon icon={dhArrowToBottom} />\n <Tooltip>Move selection to bottom</Tooltip>\n </button>\n </div>\n </div>\n <div className=\"top-menu\">\n <SearchInput\n className=\"w-100\"\n value={searchFilter}\n matchCount={searchFilter ? selectedColumns.length : undefined}\n onChange={this.handleSearchInputChange}\n />\n </div>\n <DragDropContext\n onDragStart={this.handleOrderDraggingStart}\n onDragEnd={this.handleOrderDraggingEnd}\n >\n <Droppable droppableId=\"droppable-visibility-order-list\">\n {(provided, snapshot) => (\n // eslint-disable-next-line jsx-a11y/interactive-supports-focus\n <div\n role=\"menu\"\n className={classNames('visibility-ordering-list', {\n isDragging: snapshot.draggingFromThisWith,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n >\n <div\n className=\"column-list\"\n ref={list => {\n this.list = list;\n }}\n >\n {columnItems}\n {provided.placeholder}\n </div>\n </div>\n )}\n </Droppable>\n </DragDropContext>\n </div>\n );\n }\n}\n\nexport default VisibilityOrderingBuilder;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VisibilityOrderingBuilder.js","names":["React","Component","classNames","GridUtils","TextUtils","assertNotNull","FontAwesomeIcon","dhEye","dhEyeSlash","dhSortAlphaDown","dhSortAlphaUp","dhArrowToTop","dhArrowToBottom","vsChevronUp","vsChevronDown","vsGripper","DragDropContext","Draggable","Droppable","memoize","debounce","Button","SearchInput","Tooltip","Log","log","module","DEBOUNCE_SEARCH_COLUMN","VisibilityOrderingBuilder","constructor","props","searchColumns","model","columns","i","length","isColumnMovable","columnName","modelIndex","visibleIndex","isHidden","isSelected","isDragging","isDragged","columnsDragged","provided","innerRef","draggableProps","event","handleVisibilityDraggingStart","VISIBILITY_OPTIONS","SHOW","HIDE","handleMouseEnter","handleVisibilityDraggingEnd","handleItemClick","key","handleVisibilityKeyDown","stopPropagation","preventDefault","dragHandleProps","handleSearchInputChange","bind","handleOrderDraggingStart","handleOrderDraggingEnd","state","selectedColumns","lastSelectedColumns","isDraggingVisibility","visibilityDraggingOption","undefined","visibilityDraggingStartColumn","isDraggingOrder","orderDraggingColumn","searchFilter","list","componentWillUnmount","debouncedSearchColumns","cancel","resetVisibilityOrdering","onColumnVisibilityChanged","onMovedColumnsChanged","map","column","index","getColumnIndexByName","name","setState","resetSelection","target","value","movedColumns","columnsMatch","visibleIndexToFocus","forEach","toLowerCase","includes","push","Math","min","getVisibleIndex","addColumnToSelected","columnItemToFocus","querySelectorAll","scrollIntoView","block","visibilityOption","isModifierKeyDown","isShiftKeyDown","shiftKey","focus","start","document","documentElement","classList","add","draggableId","source","startIndex","parseInt","result","remove","destination","destinationIndex","selectedColumnsSortByVisibleIndex","sort","columnA","columnB","newMoves","draggingVisibleIndex","upper","lower","moveItem","columnVisibleIndex","bottomDestinationIndex","reverse","debug","targetModelIndex","userColumnWidths","draggingStartVisibleIndex","targetVisibleIndex","columnsToChangeVisibility","checkDownward","visibleIndexToCheck","modelIndexToCheck","getModelIndex","checkColumnHidden","handleMoveColumns","option","firstMovableIndex","getFirstMovableIndex","lastMovableIndex","getLastMovableIndex","sortedSelectedColumns","MOVE_OPTIONS","TOP","UP","scrollListAfterMove","columnModelIndex","scrollTop","BOTTOM","scrollHeight","DOWN","concat","handleSortColumns","movableColumns","immovableColumns","movableColumnsSorted","a","b","isAscending","SORTING_OPTIONS","ASC","aName","toUpperCase","bName","modelIndexAlphaSorted","insertIndex","modelIndexClicked","removeSelectionOnClick","currentTarget","columnsToBeAdded","removeColumnFromSelected","lastSelectedColumn","lastSelectedColumnVisibleIndex","visibleIndexToBeSelected","columnsInBetween","addToExisting","newSelectedColumns","newLastSelectedColumns","splice","findIndex","selected","pop","makeVisibilityOrderingList","elements","wasMovable","isMovable","get","renderVisibilityOrderingItem","renderImmovableItem","render","noSelection","columnsToToggle","c","filter","toggleToShow","checkAllColumnsHidden","selectedToggleText","columnItems","DSC","snapshot","draggingFromThisWith","droppableProps","placeholder","ALL","SELECTION"],"sources":["../../src/sidebar/VisibilityOrderingBuilder.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { ChangeEvent, Component, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport {\n GridUtils,\n ModelIndex,\n ModelSizeMap,\n MoveOperation,\n VisibleIndex,\n} from '@deephaven/grid';\nimport { TextUtils, assertNotNull } from '@deephaven/utils';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n dhEye,\n dhEyeSlash,\n dhSortAlphaDown,\n dhSortAlphaUp,\n dhArrowToTop,\n dhArrowToBottom,\n vsChevronUp,\n vsChevronDown,\n vsGripper,\n} from '@deephaven/icons';\nimport {\n DragDropContext,\n Draggable,\n DragStart,\n Droppable,\n DropResult,\n} from 'react-beautiful-dnd';\nimport memoize from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport { Button, SearchInput, Tooltip } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport './VisibilityOrderingBuilder.scss';\nimport IrisGridModel from '../IrisGridModel';\nimport { ColumnName } from '../CommonTypes';\n\nconst log = Log.module('VisibilityOrderingBuilder');\nconst DEBOUNCE_SEARCH_COLUMN = 150;\n\ninterface VisibilityOrderingBuilderProps {\n model: IrisGridModel;\n movedColumns: MoveOperation[];\n userColumnWidths: ModelSizeMap;\n onColumnVisibilityChanged: (\n columns: VisibleIndex[],\n options?: VisibilityOptionType\n ) => void;\n onMovedColumnsChanged: (operations: MoveOperation[], cb?: () => void) => void;\n}\n\ninterface VisibilityOrderingBuilderState {\n selectedColumns: ModelIndex[]; // model index of selected column(s)\n lastSelectedColumns: ModelIndex[];\n isDraggingVisibility: boolean;\n visibilityDraggingOption?: VisibilityOptionType;\n visibilityDraggingStartColumn: number | null;\n isDraggingOrder: boolean;\n orderDraggingColumn: number | null;\n searchFilter: string;\n}\n\ntype Values<T> = T[keyof T];\n\nexport type VisibilityOptionType = Values<\n typeof VisibilityOrderingBuilder.VISIBILITY_OPTIONS\n>;\n\nclass VisibilityOrderingBuilder extends Component<\n VisibilityOrderingBuilderProps,\n VisibilityOrderingBuilderState\n> {\n static VISIBILITY_OPTIONS = { SHOW: 'SHOW', HIDE: 'HIDE' } as const;\n\n static SORTING_OPTIONS = { DSC: 'DSC', ASC: 'ASC' };\n\n static MOVE_OPTIONS = {\n TOP: 'TOP',\n BOTTOM: 'BOTTOM',\n UP: 'UP',\n DOWN: 'DOWN',\n };\n\n static COLUMN_CHANGE_OPTIONS = { ALL: 'ALL', SELECTION: 'SELECTION' };\n\n static defaultProps = {\n movedColumns: [],\n onColumnVisibilityChanged: (): void => undefined,\n onMovedColumnsChanged: (): void => undefined,\n };\n\n constructor(props: VisibilityOrderingBuilderProps) {\n super(props);\n\n this.handleSearchInputChange = this.handleSearchInputChange.bind(this);\n this.searchColumns = this.searchColumns.bind(this);\n this.handleOrderDraggingStart = this.handleOrderDraggingStart.bind(this);\n this.handleOrderDraggingEnd = this.handleOrderDraggingEnd.bind(this);\n\n this.state = {\n selectedColumns: [], // model index of selected column(s)\n lastSelectedColumns: [],\n isDraggingVisibility: false,\n visibilityDraggingOption: undefined,\n visibilityDraggingStartColumn: null,\n isDraggingOrder: false,\n orderDraggingColumn: null,\n searchFilter: '',\n };\n\n this.list = null;\n }\n\n componentWillUnmount(): void {\n this.debouncedSearchColumns.cancel();\n }\n\n list: HTMLDivElement | null;\n\n debouncedSearchColumns = debounce(this.searchColumns, DEBOUNCE_SEARCH_COLUMN);\n\n resetVisibilityOrdering(): void {\n const {\n model,\n onColumnVisibilityChanged,\n onMovedColumnsChanged,\n } = this.props;\n const { columns } = model;\n\n onColumnVisibilityChanged(\n columns.map(column => {\n const index = model.getColumnIndexByName(column.name);\n assertNotNull(index);\n return index;\n }),\n VisibilityOrderingBuilder.VISIBILITY_OPTIONS.SHOW\n );\n this.setState({\n selectedColumns: [],\n lastSelectedColumns: [],\n searchFilter: '',\n });\n onMovedColumnsChanged([]);\n }\n\n resetSelection(): void {\n const { isDraggingOrder } = this.state;\n // don't reset selection if user is dragging column(s)\n if (isDraggingOrder) {\n return;\n }\n this.setState({ selectedColumns: [], lastSelectedColumns: [] });\n }\n\n handleSearchInputChange(event: ChangeEvent<HTMLInputElement>): void {\n const searchFilter = event.target.value;\n this.setState({ searchFilter });\n if (!searchFilter) {\n this.debouncedSearchColumns.cancel();\n this.resetSelection();\n return;\n }\n this.debouncedSearchColumns(searchFilter);\n }\n\n searchColumns(searchFilter: string): void {\n const { model, movedColumns } = this.props;\n const { columns } = model;\n\n const columnsMatch = [] as number[];\n let visibleIndexToFocus = columns.length;\n columns.forEach((column, index) => {\n const columnName = column.name.toLowerCase();\n if (\n model.isColumnMovable(index) &&\n columnName.includes(searchFilter.toLowerCase())\n ) {\n columnsMatch.push(index);\n visibleIndexToFocus = Math.min(\n visibleIndexToFocus,\n GridUtils.getVisibleIndex(index, movedColumns)\n );\n }\n });\n this.addColumnToSelected(columnsMatch, false);\n if (columnsMatch.length > 0) {\n const columnItemToFocus = this.list?.querySelectorAll('.column-item')[\n visibleIndexToFocus\n ];\n columnItemToFocus?.scrollIntoView({ block: 'center' });\n }\n }\n\n handleVisibilityKeyDown(\n modelIndex: ModelIndex,\n visibilityOption: VisibilityOptionType\n ): void {\n const { onColumnVisibilityChanged } = this.props;\n onColumnVisibilityChanged([modelIndex], visibilityOption);\n }\n\n handleVisibilityDraggingStart(\n modelIndex: ModelIndex,\n visibilityOption: VisibilityOptionType,\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ): void {\n const { onColumnVisibilityChanged, movedColumns } = this.props;\n\n const isModifierKeyDown = GridUtils.isModifierKeyDown(event);\n const isShiftKeyDown = event.shiftKey;\n\n if (isModifierKeyDown || isShiftKeyDown) return;\n\n onColumnVisibilityChanged([modelIndex], visibilityOption);\n\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n\n this.setState({\n isDraggingVisibility: true,\n visibilityDraggingOption: visibilityOption,\n visibilityDraggingStartColumn: visibleIndex,\n });\n\n this.addColumnToSelected([modelIndex]);\n }\n\n handleVisibilityDraggingEnd(\n event: React.MouseEvent<HTMLButtonElement, MouseEvent> | null = null\n ): void {\n if (event) (event.target as HTMLButtonElement).focus();\n\n const { isDraggingVisibility } = this.state;\n if (isDraggingVisibility) {\n this.setState({\n isDraggingVisibility: false,\n visibilityDraggingOption: undefined,\n visibilityDraggingStartColumn: null,\n });\n }\n }\n\n handleOrderDraggingStart(start: DragStart): void {\n document.documentElement.classList.add('drag-pointer-events-none');\n\n const { selectedColumns } = this.state;\n const {\n draggableId,\n source: { index: startIndex },\n } = start;\n const orderDraggingColumn = parseInt(draggableId, 10);\n\n // we want to clear focus from any eye toggles\n // however to maintain react-beautiful-dnd keyboard functionality the only valid\n // focus target is the drag target itself, so we set it there instead of blurring\n (this.list?.querySelectorAll('.column-item')[\n startIndex\n ] as HTMLDivElement).focus();\n\n if (!selectedColumns.includes(orderDraggingColumn)) {\n this.setState({\n isDraggingOrder: true,\n orderDraggingColumn,\n selectedColumns: [orderDraggingColumn],\n });\n return;\n }\n this.setState({ isDraggingOrder: true, orderDraggingColumn });\n }\n\n handleOrderDraggingEnd(result: DropResult): void {\n document.documentElement.classList.remove('drag-pointer-events-none');\n\n const { movedColumns, onMovedColumnsChanged } = this.props;\n const { selectedColumns, orderDraggingColumn } = this.state;\n\n // reset dragging state\n this.setState({ isDraggingOrder: false, orderDraggingColumn: null });\n\n // if dropped outside the list, re-focus on the dragged item if necessary\n if (!result.destination) {\n return;\n }\n\n const { index: destinationIndex } = result.destination;\n\n const selectedColumnsSortByVisibleIndex = [...selectedColumns].sort(\n (columnA, columnB) =>\n GridUtils.getVisibleIndex(columnA, movedColumns) -\n GridUtils.getVisibleIndex(columnB, movedColumns)\n );\n\n let newMoves = [...movedColumns];\n assertNotNull(orderDraggingColumn);\n const draggingVisibleIndex = GridUtils.getVisibleIndex(\n orderDraggingColumn,\n newMoves\n );\n const upper: number[] = [];\n const lower: number[] = [];\n\n // move the dragged column to destination first,\n newMoves = GridUtils.moveItem(\n draggingVisibleIndex,\n destinationIndex,\n newMoves\n );\n\n // split selected columns into two parts on drop destination index: top & bottom\n selectedColumnsSortByVisibleIndex.forEach(column => {\n const columnVisibleIndex = GridUtils.getVisibleIndex(column, newMoves);\n if (column === orderDraggingColumn) {\n return;\n }\n if (columnVisibleIndex < destinationIndex) {\n upper.push(column);\n } else {\n lower.push(column);\n }\n });\n\n // for the top part, move column(s) to the destination index\n upper.forEach(column => {\n const visibleIndex = GridUtils.getVisibleIndex(column, newMoves);\n newMoves = GridUtils.moveItem(visibleIndex, destinationIndex, newMoves);\n });\n\n // for the bottom part, in reverse order, move column(s) to the drop destination index if there's no top column(s) or the dragged column is not dropped upside\n // otherwise, move column(s) under the dropping destination index\n const bottomDestinationIndex =\n upper.length > 0 || draggingVisibleIndex > destinationIndex\n ? destinationIndex + 1\n : destinationIndex;\n\n lower.reverse().forEach(column => {\n const visibleIndex = GridUtils.getVisibleIndex(column, newMoves);\n newMoves = GridUtils.moveItem(\n visibleIndex,\n bottomDestinationIndex,\n newMoves\n );\n });\n\n onMovedColumnsChanged(newMoves);\n log.debug('move column order by drag & drop', newMoves);\n }\n\n handleMouseEnter(\n targetModelIndex: ModelIndex,\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ): void {\n const {\n onColumnVisibilityChanged,\n movedColumns,\n userColumnWidths,\n } = this.props;\n const {\n isDraggingVisibility,\n visibilityDraggingOption,\n visibilityDraggingStartColumn: draggingStartVisibleIndex,\n } = this.state;\n const targetVisibleIndex = GridUtils.getVisibleIndex(\n targetModelIndex,\n movedColumns\n );\n const isModifierKeyDown = GridUtils.isModifierKeyDown(event);\n const isShiftKeyDown = event.shiftKey;\n\n if (!isDraggingVisibility || isModifierKeyDown || isShiftKeyDown) {\n return;\n }\n\n (event.target as HTMLButtonElement).focus();\n\n // browser can skip mouseEnter / mouseMove event if user moves the mouse too fast\n // try to check columns between dragging start index to current index to compensate missing event,\n const columnsToChangeVisibility = [targetModelIndex];\n assertNotNull(draggingStartVisibleIndex);\n const checkDownward = targetVisibleIndex > draggingStartVisibleIndex;\n\n for (\n let visibleIndexToCheck = draggingStartVisibleIndex;\n checkDownward\n ? visibleIndexToCheck < targetVisibleIndex\n : visibleIndexToCheck > targetVisibleIndex;\n checkDownward ? (visibleIndexToCheck += 1) : (visibleIndexToCheck -= 1)\n ) {\n const modelIndexToCheck = GridUtils.getModelIndex(\n visibleIndexToCheck,\n movedColumns\n );\n const isHidden = GridUtils.checkColumnHidden(\n modelIndexToCheck,\n userColumnWidths\n );\n if (\n isHidden &&\n visibilityDraggingOption ===\n VisibilityOrderingBuilder.VISIBILITY_OPTIONS.SHOW\n ) {\n columnsToChangeVisibility.push(modelIndexToCheck);\n } else if (\n !isHidden &&\n visibilityDraggingOption ===\n VisibilityOrderingBuilder.VISIBILITY_OPTIONS.HIDE\n ) {\n columnsToChangeVisibility.push(modelIndexToCheck);\n }\n }\n\n this.addColumnToSelected(columnsToChangeVisibility, true);\n\n onColumnVisibilityChanged(\n columnsToChangeVisibility,\n visibilityDraggingOption\n );\n }\n\n handleMoveColumns(option: string): void {\n const { movedColumns, onMovedColumnsChanged, model } = this.props;\n const { columns } = model;\n const { selectedColumns } = this.state;\n if (selectedColumns.length === 0) {\n return;\n }\n\n const firstMovableIndex = this.getFirstMovableIndex(model, columns);\n const lastMovableIndex = this.getLastMovableIndex(model, columns);\n if (firstMovableIndex == null || lastMovableIndex == null) {\n return;\n }\n\n // for moving up and to the top, move column(s) in visibility index order\n // for moving down and to the bottom, move column(s) in reverse visibility index order\n const sortedSelectedColumns = [\n ...selectedColumns,\n ].sort((columnA, columnB) =>\n option === VisibilityOrderingBuilder.MOVE_OPTIONS.TOP ||\n option === VisibilityOrderingBuilder.MOVE_OPTIONS.UP\n ? GridUtils.getVisibleIndex(columnA, movedColumns) -\n GridUtils.getVisibleIndex(columnB, movedColumns)\n : GridUtils.getVisibleIndex(columnB, movedColumns) -\n GridUtils.getVisibleIndex(columnA, movedColumns)\n );\n\n let newMoves = [] as MoveOperation[];\n let scrollListAfterMove: () => void = () => undefined;\n\n switch (option) {\n case VisibilityOrderingBuilder.MOVE_OPTIONS.TOP:\n sortedSelectedColumns.forEach((columnModelIndex, index) => {\n const visibleIndex = GridUtils.getVisibleIndex(\n columnModelIndex,\n movedColumns\n );\n newMoves = GridUtils.moveItem(\n visibleIndex,\n firstMovableIndex + index,\n newMoves\n );\n });\n scrollListAfterMove = () => {\n assertNotNull(this.list);\n this.list.scrollTop = 0;\n };\n break;\n case VisibilityOrderingBuilder.MOVE_OPTIONS.BOTTOM:\n sortedSelectedColumns.forEach((columnModelIndex, index) => {\n const visibleIndex = GridUtils.getVisibleIndex(\n columnModelIndex,\n movedColumns\n );\n newMoves = GridUtils.moveItem(\n visibleIndex,\n lastMovableIndex - index,\n newMoves\n );\n });\n scrollListAfterMove = () => {\n assertNotNull(this.list);\n this.list.scrollTop = this.list.scrollHeight;\n };\n\n break;\n case VisibilityOrderingBuilder.MOVE_OPTIONS.UP:\n if (\n GridUtils.getVisibleIndex(sortedSelectedColumns[0], movedColumns) !==\n firstMovableIndex // check if the first visible column has reached top\n ) {\n sortedSelectedColumns.forEach(columnModelIndex => {\n const visibleIndex = GridUtils.getVisibleIndex(\n columnModelIndex,\n movedColumns\n );\n newMoves = GridUtils.moveItem(\n visibleIndex,\n visibleIndex - 1,\n newMoves\n );\n });\n }\n break;\n case VisibilityOrderingBuilder.MOVE_OPTIONS.DOWN:\n if (\n GridUtils.getVisibleIndex(sortedSelectedColumns[0], movedColumns) !==\n lastMovableIndex // check if the last visible column has reached bottom\n ) {\n sortedSelectedColumns.forEach(columnModelIndex => {\n const visibleIndex = GridUtils.getVisibleIndex(\n columnModelIndex,\n movedColumns\n );\n newMoves = GridUtils.moveItem(\n visibleIndex,\n visibleIndex + 1,\n newMoves\n );\n });\n }\n break;\n default:\n break;\n }\n if (newMoves.length > 0) {\n onMovedColumnsChanged(movedColumns.concat(newMoves), scrollListAfterMove);\n }\n }\n\n handleSortColumns(option: string): void {\n const { model, onMovedColumnsChanged } = this.props;\n const { columns } = model;\n\n // We can't move the immovable columns when sorting, so separate them out first\n const movableColumns = [];\n const immovableColumns = [];\n for (let modelIndex = 0; modelIndex < columns.length; modelIndex += 1) {\n if (model.isColumnMovable(modelIndex)) {\n movableColumns.push(modelIndex);\n } else {\n immovableColumns.push(modelIndex);\n }\n }\n\n // Sort all the movable columns\n const movableColumnsSorted = movableColumns.sort((a, b) => {\n const isAscending =\n option === VisibilityOrderingBuilder.SORTING_OPTIONS.ASC;\n const aName = columns[a].name.toUpperCase();\n const bName = columns[b].name.toUpperCase();\n return TextUtils.sort(aName, bName, isAscending);\n });\n\n // Place all the immovable columns where they need to be\n const modelIndexAlphaSorted = [];\n for (let i = 0; i < immovableColumns.length; i += 1) {\n const modelIndex = immovableColumns[i];\n modelIndexAlphaSorted[modelIndex] = modelIndex;\n }\n\n // Then the rest of the sorted columns can be put in the empty spaces\n let insertIndex = 0;\n for (let i = 0; i < movableColumnsSorted.length; i += 1) {\n while (modelIndexAlphaSorted[insertIndex] != null) {\n insertIndex += 1;\n }\n\n modelIndexAlphaSorted[insertIndex] = movableColumnsSorted[i];\n }\n\n let newMoves = [] as MoveOperation[];\n modelIndexAlphaSorted.forEach((modelIndex, index) => {\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, newMoves);\n newMoves = GridUtils.moveItem(visibleIndex, index, newMoves);\n });\n onMovedColumnsChanged(newMoves);\n }\n\n handleItemClick(\n modelIndexClicked: ModelIndex,\n event: React.MouseEvent<HTMLDivElement | HTMLButtonElement, MouseEvent>,\n removeSelectionOnClick = true\n ): void {\n event.stopPropagation();\n event.currentTarget.focus();\n\n const { selectedColumns, lastSelectedColumns } = this.state;\n const isModifierKeyDown = GridUtils.isModifierKeyDown(event);\n const isShiftKeyDown = event.shiftKey;\n const isSelected = selectedColumns.includes(modelIndexClicked);\n const columnsToBeAdded = [modelIndexClicked];\n\n if (isSelected && isModifierKeyDown) {\n this.removeColumnFromSelected(modelIndexClicked);\n return;\n }\n\n if (isSelected && selectedColumns.length === 1 && removeSelectionOnClick) {\n this.removeColumnFromSelected(modelIndexClicked);\n return;\n }\n\n if (isShiftKeyDown) {\n const { movedColumns } = this.props;\n const lastSelectedColumn =\n lastSelectedColumns[lastSelectedColumns.length - 1];\n const lastSelectedColumnVisibleIndex = GridUtils.getVisibleIndex(\n lastSelectedColumn,\n movedColumns\n );\n const visibleIndexToBeSelected = GridUtils.getVisibleIndex(\n modelIndexClicked,\n movedColumns\n );\n const checkDownward =\n visibleIndexToBeSelected > lastSelectedColumnVisibleIndex;\n const columnsInBetween = [];\n for (\n let i = lastSelectedColumnVisibleIndex;\n checkDownward\n ? i < visibleIndexToBeSelected\n : i > visibleIndexToBeSelected;\n checkDownward ? (i += 1) : (i -= 1)\n ) {\n columnsInBetween.push(GridUtils.getModelIndex(i, movedColumns));\n }\n columnsInBetween.forEach(column => {\n if (!selectedColumns.includes(column)) {\n columnsToBeAdded.push(column);\n }\n });\n }\n\n this.addColumnToSelected(\n columnsToBeAdded,\n isModifierKeyDown || isShiftKeyDown\n );\n }\n\n addColumnToSelected(\n columnsToBeAdded: ModelIndex[],\n addToExisting = false\n ): void {\n const { selectedColumns, lastSelectedColumns } = this.state;\n const newSelectedColumns = addToExisting\n ? selectedColumns.concat(columnsToBeAdded)\n : columnsToBeAdded;\n const newLastSelectedColumns = addToExisting\n ? lastSelectedColumns.concat(columnsToBeAdded)\n : columnsToBeAdded;\n\n this.setState({\n selectedColumns: newSelectedColumns,\n lastSelectedColumns: newLastSelectedColumns,\n });\n }\n\n removeColumnFromSelected(modelIndex: ModelIndex): void {\n const { selectedColumns, lastSelectedColumns } = this.state;\n const newSelectedColumns = [...selectedColumns];\n\n newSelectedColumns.splice(\n newSelectedColumns.findIndex(selected => selected === modelIndex),\n 1\n );\n const lastSelectedColumn =\n lastSelectedColumns[lastSelectedColumns.length - 1];\n const newLastSelectedColumns = [...lastSelectedColumns];\n if (lastSelectedColumn === modelIndex) {\n newLastSelectedColumns.pop();\n }\n this.setState({\n selectedColumns: newSelectedColumns,\n lastSelectedColumns: newLastSelectedColumns,\n });\n }\n\n makeVisibilityOrderingList(): ReactElement[] {\n const { model, userColumnWidths, movedColumns } = this.props;\n const { columns } = model;\n const {\n selectedColumns,\n isDraggingOrder,\n orderDraggingColumn,\n } = this.state;\n\n const elements = [];\n let wasMovable = false;\n for (\n let visibleIndex = 0;\n visibleIndex < columns.length;\n visibleIndex += 1\n ) {\n const modelIndex = GridUtils.getModelIndex(visibleIndex, movedColumns);\n const column = columns[modelIndex];\n const isMovable = model.isColumnMovable(modelIndex);\n if (visibleIndex > 0 && isMovable !== wasMovable) {\n elements.push(<hr />);\n }\n if (isMovable) {\n const isHidden = userColumnWidths.get(modelIndex) === 0;\n const isSelected = selectedColumns.includes(modelIndex);\n const isDragged = orderDraggingColumn === modelIndex;\n const columnsDragged =\n isDraggingOrder && isDragged && selectedColumns.length > 1\n ? selectedColumns.length\n : null;\n elements.push(\n this.renderVisibilityOrderingItem(\n column.name,\n modelIndex,\n visibleIndex,\n isHidden,\n isSelected,\n isDraggingOrder,\n isDragged,\n columnsDragged\n )\n );\n } else {\n elements.push(this.renderImmovableItem(column.name));\n }\n\n wasMovable = isMovable;\n }\n\n return elements;\n }\n\n getFirstMovableIndex = memoize((model: IrisGridModel, columns) => {\n for (let i = 0; i < columns.length; i += 1) {\n if (model.isColumnMovable(i)) {\n return i;\n }\n }\n\n return null;\n });\n\n getLastMovableIndex = memoize((model: IrisGridModel, columns) => {\n for (let i = columns.length - 1; i >= 0; i -= 1) {\n if (model.isColumnMovable(i)) {\n return i;\n }\n }\n\n return null;\n });\n\n renderImmovableItem = memoize(\n (columnName: ColumnName): ReactElement => (\n <div className=\"visibility-ordering-list-item immovable\" key={columnName}>\n <div className=\"column-item\">\n <span className=\"column-name\">{columnName}</span>\n </div>\n </div>\n )\n );\n\n renderVisibilityOrderingItem = memoize(\n (\n columnName: ColumnName,\n modelIndex: ModelIndex,\n visibleIndex: VisibleIndex,\n isHidden: boolean,\n isSelected: boolean,\n isDragging: boolean,\n isDragged: boolean,\n columnsDragged: number | null\n ) => (\n <Draggable\n draggableId={`${modelIndex}`} // draggableId requires string input\n index={visibleIndex}\n key={columnName}\n disableInteractiveElementBlocking\n >\n {provided => (\n <div\n className=\"visibility-ordering-list-item\"\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.draggableProps}\n >\n <Button\n kind=\"ghost\"\n className=\"btn-link-icon visibility\"\n onMouseDown={event => {\n this.handleVisibilityDraggingStart(\n modelIndex,\n isHidden\n ? VisibilityOrderingBuilder.VISIBILITY_OPTIONS.SHOW\n : VisibilityOrderingBuilder.VISIBILITY_OPTIONS.HIDE,\n event\n );\n }}\n onMouseEnter={event => {\n this.handleMouseEnter(modelIndex, event);\n }}\n onMouseUp={event => {\n this.handleVisibilityDraggingEnd(event);\n }}\n onClick={event => {\n this.handleItemClick(modelIndex, event, false);\n }}\n onKeyDown={event => {\n // trigger on keyboard enter or space keys\n if (event.key === 'Enter' || event.key === ' ') {\n this.handleVisibilityKeyDown(\n modelIndex,\n isHidden\n ? VisibilityOrderingBuilder.VISIBILITY_OPTIONS.SHOW\n : VisibilityOrderingBuilder.VISIBILITY_OPTIONS.HIDE\n );\n event.stopPropagation();\n event.preventDefault();\n }\n }}\n tooltip={isHidden ? 'Show' : 'Hide'}\n >\n <FontAwesomeIcon icon={isHidden ? dhEyeSlash : dhEye} />\n </Button>\n <div\n role=\"menuitem\"\n tabIndex={0}\n className={classNames(\n 'ordering column-item',\n {\n isSelected,\n },\n { isDragging },\n { isDragged },\n { 'two-dragged': columnsDragged === 2 },\n {\n 'multiple-dragged':\n columnsDragged != null && columnsDragged > 2,\n }\n )}\n onClick={event => {\n this.handleItemClick(modelIndex, event);\n }}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.dragHandleProps}\n >\n <span className=\"column-name\">{columnName}</span>\n <div>\n {columnsDragged != null && columnsDragged !== 0 && (\n <span className=\"number-badge\">{columnsDragged}</span>\n )}\n <Tooltip>Drag to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </div>\n </div>\n </div>\n )}\n </Draggable>\n )\n );\n\n render(): ReactElement {\n const { model, userColumnWidths, onColumnVisibilityChanged } = this.props;\n const { selectedColumns, searchFilter } = this.state;\n const { columns } = model;\n const noSelection = selectedColumns.length === 0;\n const columnsToToggle = noSelection\n ? columns.map((c, i) => i).filter(i => model.isColumnMovable(i))\n : [...selectedColumns];\n const toggleToShow = GridUtils.checkAllColumnsHidden(\n columnsToToggle,\n userColumnWidths\n );\n const selectedToggleText = toggleToShow ? 'Show Selected' : 'Hide Selected';\n\n const columnItems = this.makeVisibilityOrderingList();\n\n return (\n <div\n role=\"menu\"\n className=\"visibility-ordering-builder\"\n tabIndex={0}\n onMouseUp={() => {\n this.handleVisibilityDraggingEnd();\n }}\n onMouseLeave={() => {\n this.handleVisibilityDraggingEnd();\n }}\n >\n <div className=\"top-menu\">\n <Button\n kind=\"ghost\"\n onClick={() => {\n onColumnVisibilityChanged(\n columnsToToggle,\n toggleToShow\n ? VisibilityOrderingBuilder.VISIBILITY_OPTIONS.SHOW\n : VisibilityOrderingBuilder.VISIBILITY_OPTIONS.HIDE\n );\n }}\n icon={toggleToShow ? dhEyeSlash : dhEye}\n tooltip=\"Toggle column visibility\"\n >\n {noSelection ? 'Toggle All' : selectedToggleText}\n </Button>\n\n <div>\n <Button\n kind=\"ghost\"\n className=\"text-muted\"\n onClick={() => {\n this.resetVisibilityOrdering();\n }}\n tooltip=\"Reset to default\"\n >\n Reset\n </Button>\n <Button\n kind=\"ghost\"\n className=\"btn-link-icon\"\n onClick={() => {\n this.handleSortColumns(\n VisibilityOrderingBuilder.SORTING_OPTIONS.ASC\n );\n }}\n tooltip=\"Sort ascending\"\n >\n <FontAwesomeIcon icon={dhSortAlphaDown} />\n </Button>\n <Button\n kind=\"ghost\"\n className=\"btn-link-icon\"\n onClick={() => {\n this.handleSortColumns(\n VisibilityOrderingBuilder.SORTING_OPTIONS.DSC\n );\n }}\n tooltip=\"Sort descending\"\n >\n <FontAwesomeIcon icon={dhSortAlphaUp} />\n </Button>\n <span className=\"vertical-divider\" />\n <Button\n kind=\"ghost\"\n className=\"btn-link-icon\"\n onClick={() => {\n this.handleMoveColumns(\n VisibilityOrderingBuilder.MOVE_OPTIONS.UP\n );\n }}\n disabled={noSelection}\n tooltip=\"Move selection up\"\n >\n <FontAwesomeIcon icon={vsChevronUp} />\n </Button>\n <Button\n kind=\"ghost\"\n className=\"btn-link-icon\"\n onClick={() => {\n this.handleMoveColumns(\n VisibilityOrderingBuilder.MOVE_OPTIONS.DOWN\n );\n }}\n disabled={noSelection}\n tooltip=\"Move selection down\"\n >\n <FontAwesomeIcon icon={vsChevronDown} />\n </Button>\n <Button\n kind=\"ghost\"\n className=\"btn-link-icon\"\n onClick={() => {\n this.handleMoveColumns(\n VisibilityOrderingBuilder.MOVE_OPTIONS.TOP\n );\n }}\n disabled={noSelection}\n tooltip=\"Move selection to top\"\n >\n <FontAwesomeIcon icon={dhArrowToTop} />\n </Button>\n <Button\n kind=\"ghost\"\n className=\"btn-link-icon\"\n onClick={() => {\n this.handleMoveColumns(\n VisibilityOrderingBuilder.MOVE_OPTIONS.BOTTOM\n );\n }}\n disabled={noSelection}\n tooltip=\"Move selection to bottom\"\n >\n <FontAwesomeIcon icon={dhArrowToBottom} />\n </Button>\n </div>\n </div>\n <div className=\"top-menu\">\n <SearchInput\n className=\"w-100\"\n value={searchFilter}\n matchCount={searchFilter ? selectedColumns.length : undefined}\n onChange={this.handleSearchInputChange}\n />\n </div>\n <DragDropContext\n onDragStart={this.handleOrderDraggingStart}\n onDragEnd={this.handleOrderDraggingEnd}\n >\n <Droppable droppableId=\"droppable-visibility-order-list\">\n {(provided, snapshot) => (\n // eslint-disable-next-line jsx-a11y/interactive-supports-focus\n <div\n role=\"menu\"\n className={classNames('visibility-ordering-list', {\n isDragging: snapshot.draggingFromThisWith,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n >\n <div\n className=\"column-list\"\n ref={list => {\n this.list = list;\n }}\n >\n {columnItems}\n {provided.placeholder}\n </div>\n </div>\n )}\n </Droppable>\n </DragDropContext>\n </div>\n );\n }\n}\n\nexport default VisibilityOrderingBuilder;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionalFormattingMenu.d.ts","sourceRoot":"","sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingMenu.tsx"],"names":[],"mappings":";AAaA,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAEL,cAAc,EAQf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI/C,oBAAY,cAAc,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;AAE/D,oBAAY,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAErD,oBAAY,cAAc,GAAG,MAAM,IAAI,CAAC;AAExC,oBAAY,8BAA8B,GAAG;IAC3C,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAoDF,QAAA,MAAM,yBAAyB,UACtB,8BAA8B,KACpC,
|
|
1
|
+
{"version":3,"file":"ConditionalFormattingMenu.d.ts","sourceRoot":"","sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingMenu.tsx"],"names":[],"mappings":";AAaA,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAEL,cAAc,EAQf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI/C,oBAAY,cAAc,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;AAE/D,oBAAY,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAErD,oBAAY,cAAc,GAAG,MAAM,IAAI,CAAC;AAExC,oBAAY,8BAA8B,GAAG;IAC3C,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAoDF,QAAA,MAAM,yBAAyB,UACtB,8BAA8B,KACpC,WAwJF,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
|
|
@@ -136,13 +136,13 @@ var ConditionalFormattingMenu = props => {
|
|
|
136
136
|
}
|
|
137
137
|
}, rule.type === FormatterType.ROWS ? 'row' : 'col')), /*#__PURE__*/React.createElement("div", {
|
|
138
138
|
className: "rule-title"
|
|
139
|
-
}, getRuleTitle(rule.config)), /*#__PURE__*/React.createElement(
|
|
140
|
-
|
|
141
|
-
className: "
|
|
142
|
-
onClick: e => handleDeleteClick(e, rule, index)
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
})
|
|
139
|
+
}, getRuleTitle(rule.config)), /*#__PURE__*/React.createElement(Button, {
|
|
140
|
+
kind: "ghost",
|
|
141
|
+
className: "ml-1 px-2",
|
|
142
|
+
onClick: e => handleDeleteClick(e, rule, index),
|
|
143
|
+
icon: vsTrash,
|
|
144
|
+
tooltip: "Delete rule"
|
|
145
|
+
}), /*#__PURE__*/React.createElement("button", _extends({
|
|
146
146
|
type: "button",
|
|
147
147
|
className: "btn btn-link btn-link-icon px-2 btn-drag-handle",
|
|
148
148
|
onClick: handleDragHandlerClick // eslint-disable-next-line react/jsx-props-no-spreading
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionalFormattingMenu.js","names":["React","useCallback","DragDropContext","Draggable","Droppable","classNames","FontAwesomeIcon","dhNewCircleLargeFilled","vsGripper","vsTrash","Button","DragUtils","Tooltip","TableUtils","Log","FormatterType","getBackgroundForStyleConfig","getColorForStyleConfig","getShortLabelForConditionType","NumberCondition","StringCondition","DateCondition","log","module","DEFAULT_CALLBACK","undefined","getRuleValue","config","column","type","isNumberType","condition","IS_NULL","IS_NOT_NULL","value","isCharType","isStringType","isDateType","isBooleanType","Error","getRuleTitle","IS_BETWEEN","start","name","end","ConditionalFormattingMenu","props","rules","onChange","onCreate","onSelect","handleRuleClick","e","rule","index","stopPropagation","debug","handleDeleteClick","updatedRules","splice","handleDragHandlerClick","handleDragEnd","result","stopDragging","destination","sourceIndex","source","destinationIndex","sourceInput","startDragging","provided","snapshot","innerRef","droppableProps","dragging","draggingFromThisWith","length","map","isDragging","draggableProps","backgroundColor","style","color","ROWS","dragHandleProps","placeholder"],"sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingMenu.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport {\n DragDropContext,\n Draggable,\n Droppable,\n DropResult,\n} from 'react-beautiful-dnd';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsGripper, vsTrash } from '@deephaven/icons';\nimport { Button, DragUtils, Tooltip } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport './ConditionalFormattingMenu.scss';\nimport {\n BaseFormatConfig,\n FormattingRule,\n FormatterType,\n getBackgroundForStyleConfig,\n getColorForStyleConfig,\n getShortLabelForConditionType,\n NumberCondition,\n StringCondition,\n DateCondition,\n} from './ConditionalFormattingUtils';\nimport { ColumnName } from '../../CommonTypes';\n\nconst log = Log.module('ConditionalFormattingMenu');\n\nexport type ChangeCallback = (rules: FormattingRule[]) => void;\n\nexport type SelectCallback = (index: number) => void;\n\nexport type CreateCallback = () => void;\n\nexport type ConditionalFormattingMenuProps = {\n rules: FormattingRule[];\n selectedColumn?: ColumnName;\n onChange?: ChangeCallback;\n onCreate?: CreateCallback;\n onSelect?: SelectCallback;\n};\n\nconst DEFAULT_CALLBACK = () => undefined;\n\nfunction getRuleValue(config: BaseFormatConfig): string {\n const {\n column: { type },\n } = config;\n if (TableUtils.isNumberType(type)) {\n return config.condition === NumberCondition.IS_NULL ||\n config.condition === NumberCondition.IS_NOT_NULL\n ? ''\n : `${config.value}`;\n }\n if (TableUtils.isCharType(type)) {\n return config.condition === DateCondition.IS_NULL ||\n config.condition === DateCondition.IS_NOT_NULL\n ? ''\n : `${config.value}`;\n }\n if (TableUtils.isStringType(type)) {\n return config.condition === StringCondition.IS_NULL ||\n config.condition === StringCondition.IS_NOT_NULL\n ? ''\n : `\"${config.value}\"`;\n }\n if (TableUtils.isDateType(type)) {\n return config.condition === DateCondition.IS_NULL ||\n config.condition === DateCondition.IS_NOT_NULL\n ? ''\n : `${config.value}`;\n }\n if (TableUtils.isBooleanType(type)) {\n return '';\n }\n throw new Error(`Invalid column type ${type} in getRuleValue`);\n}\n\nfunction getRuleTitle(config: BaseFormatConfig): string {\n if (\n TableUtils.isNumberType(config.column.type) &&\n config.condition === NumberCondition.IS_BETWEEN\n ) {\n return `${config.start} < ${config.column.name} < ${config.end}`;\n }\n return `${config.column.name} ${getShortLabelForConditionType(\n (config as BaseFormatConfig).column.type,\n (config as BaseFormatConfig).condition\n )} \n ${getRuleValue(config as BaseFormatConfig)}`;\n}\n\nconst ConditionalFormattingMenu = (\n props: ConditionalFormattingMenuProps\n): JSX.Element => {\n const {\n rules = [],\n onChange = DEFAULT_CALLBACK,\n onCreate = DEFAULT_CALLBACK,\n onSelect = DEFAULT_CALLBACK,\n } = props;\n\n const handleRuleClick = useCallback(\n (e, rule, index) => {\n e.stopPropagation();\n log.debug('Rule clicked', rule, index);\n onSelect(index);\n },\n [onSelect]\n );\n\n const handleDeleteClick = useCallback(\n (e, rule, index) => {\n e.stopPropagation();\n log.debug('Delete button clicked', rule, index);\n const updatedRules = [...rules];\n updatedRules.splice(index, 1);\n onChange(updatedRules);\n },\n [onChange, rules]\n );\n\n const handleDragHandlerClick = useCallback(e => {\n e.stopPropagation();\n }, []);\n\n const handleDragEnd = useCallback(\n (result: DropResult) => {\n DragUtils.stopDragging();\n\n // if dropped outside the list\n if (result.destination == null) {\n return;\n }\n const sourceIndex = result.source.index;\n const destinationIndex = result.destination.index;\n const updatedRules = [...rules];\n const sourceInput = rules[sourceIndex];\n\n updatedRules.splice(sourceIndex, 1);\n updatedRules.splice(destinationIndex, 0, sourceInput);\n\n onChange(updatedRules);\n },\n [onChange, rules]\n );\n\n // Display list of rules\n return (\n <div className=\"conditional-formatting-rules\">\n <DragDropContext\n onDragStart={DragUtils.startDragging}\n onDragEnd={handleDragEnd}\n >\n <Droppable droppableId=\"droppable-custom-columns\">\n {(provided, snapshot) => (\n <div\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n className={classNames('droppable-container', {\n dragging: snapshot.draggingFromThisWith,\n })}\n >\n {rules.length === 0 && (\n <div className=\"text-muted pl-2\">No formats defined</div>\n )}\n {rules.map((rule, index) => (\n <Draggable\n // eslint-disable-next-line react/no-array-index-key\n key={`${index}-${rule.type}`}\n draggableId={`${index}-${rule.type}`}\n index={index}\n disableInteractiveElementBlocking\n >\n {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n (provided, snapshot) => (\n <div\n role=\"menuitem\"\n tabIndex={0}\n onClick={e => handleRuleClick(e, rule, index)}\n className={classNames('draggable-container', {\n dragging: snapshot.isDragging,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.draggableProps}\n >\n <div className=\"conditional-formatting-list-item\">\n <div className=\"formatting-item\">\n <div className=\"rule-icon\">\n <span\n className=\"rule-icon-bg\"\n style={{\n backgroundColor: getBackgroundForStyleConfig(\n (rule.config as BaseFormatConfig).style\n ),\n color: getColorForStyleConfig(\n (rule.config as BaseFormatConfig).style\n ),\n }}\n >\n {rule.type === FormatterType.ROWS\n ? 'row'\n : 'col'}\n </span>\n </div>\n <div className=\"rule-title\">\n {getRuleTitle(rule.config as BaseFormatConfig)}\n </div>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon ml-1 px-2\"\n onClick={e => handleDeleteClick(e, rule, index)}\n >\n <Tooltip>Delete rule</Tooltip>\n <FontAwesomeIcon icon={vsTrash} />\n </button>\n\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2 btn-drag-handle\"\n onClick={handleDragHandlerClick}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.dragHandleProps}\n >\n <Tooltip>Drag to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </button>\n </div>\n </div>\n </div>\n )\n }\n </Draggable>\n ))}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n <hr />\n <Button kind=\"ghost\" onClick={onCreate} icon={dhNewCircleLargeFilled}>\n Add New Rule\n </Button>\n </div>\n );\n};\n\nexport default ConditionalFormattingMenu;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConditionalFormattingMenu.js","names":["React","useCallback","DragDropContext","Draggable","Droppable","classNames","FontAwesomeIcon","dhNewCircleLargeFilled","vsGripper","vsTrash","Button","DragUtils","Tooltip","TableUtils","Log","FormatterType","getBackgroundForStyleConfig","getColorForStyleConfig","getShortLabelForConditionType","NumberCondition","StringCondition","DateCondition","log","module","DEFAULT_CALLBACK","undefined","getRuleValue","config","column","type","isNumberType","condition","IS_NULL","IS_NOT_NULL","value","isCharType","isStringType","isDateType","isBooleanType","Error","getRuleTitle","IS_BETWEEN","start","name","end","ConditionalFormattingMenu","props","rules","onChange","onCreate","onSelect","handleRuleClick","e","rule","index","stopPropagation","debug","handleDeleteClick","updatedRules","splice","handleDragHandlerClick","handleDragEnd","result","stopDragging","destination","sourceIndex","source","destinationIndex","sourceInput","startDragging","provided","snapshot","innerRef","droppableProps","dragging","draggingFromThisWith","length","map","isDragging","draggableProps","backgroundColor","style","color","ROWS","dragHandleProps","placeholder"],"sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingMenu.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport {\n DragDropContext,\n Draggable,\n Droppable,\n DropResult,\n} from 'react-beautiful-dnd';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsGripper, vsTrash } from '@deephaven/icons';\nimport { Button, DragUtils, Tooltip } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport './ConditionalFormattingMenu.scss';\nimport {\n BaseFormatConfig,\n FormattingRule,\n FormatterType,\n getBackgroundForStyleConfig,\n getColorForStyleConfig,\n getShortLabelForConditionType,\n NumberCondition,\n StringCondition,\n DateCondition,\n} from './ConditionalFormattingUtils';\nimport { ColumnName } from '../../CommonTypes';\n\nconst log = Log.module('ConditionalFormattingMenu');\n\nexport type ChangeCallback = (rules: FormattingRule[]) => void;\n\nexport type SelectCallback = (index: number) => void;\n\nexport type CreateCallback = () => void;\n\nexport type ConditionalFormattingMenuProps = {\n rules: FormattingRule[];\n selectedColumn?: ColumnName;\n onChange?: ChangeCallback;\n onCreate?: CreateCallback;\n onSelect?: SelectCallback;\n};\n\nconst DEFAULT_CALLBACK = () => undefined;\n\nfunction getRuleValue(config: BaseFormatConfig): string {\n const {\n column: { type },\n } = config;\n if (TableUtils.isNumberType(type)) {\n return config.condition === NumberCondition.IS_NULL ||\n config.condition === NumberCondition.IS_NOT_NULL\n ? ''\n : `${config.value}`;\n }\n if (TableUtils.isCharType(type)) {\n return config.condition === DateCondition.IS_NULL ||\n config.condition === DateCondition.IS_NOT_NULL\n ? ''\n : `${config.value}`;\n }\n if (TableUtils.isStringType(type)) {\n return config.condition === StringCondition.IS_NULL ||\n config.condition === StringCondition.IS_NOT_NULL\n ? ''\n : `\"${config.value}\"`;\n }\n if (TableUtils.isDateType(type)) {\n return config.condition === DateCondition.IS_NULL ||\n config.condition === DateCondition.IS_NOT_NULL\n ? ''\n : `${config.value}`;\n }\n if (TableUtils.isBooleanType(type)) {\n return '';\n }\n throw new Error(`Invalid column type ${type} in getRuleValue`);\n}\n\nfunction getRuleTitle(config: BaseFormatConfig): string {\n if (\n TableUtils.isNumberType(config.column.type) &&\n config.condition === NumberCondition.IS_BETWEEN\n ) {\n return `${config.start} < ${config.column.name} < ${config.end}`;\n }\n return `${config.column.name} ${getShortLabelForConditionType(\n (config as BaseFormatConfig).column.type,\n (config as BaseFormatConfig).condition\n )} \n ${getRuleValue(config as BaseFormatConfig)}`;\n}\n\nconst ConditionalFormattingMenu = (\n props: ConditionalFormattingMenuProps\n): JSX.Element => {\n const {\n rules = [],\n onChange = DEFAULT_CALLBACK,\n onCreate = DEFAULT_CALLBACK,\n onSelect = DEFAULT_CALLBACK,\n } = props;\n\n const handleRuleClick = useCallback(\n (e, rule, index) => {\n e.stopPropagation();\n log.debug('Rule clicked', rule, index);\n onSelect(index);\n },\n [onSelect]\n );\n\n const handleDeleteClick = useCallback(\n (e, rule, index) => {\n e.stopPropagation();\n log.debug('Delete button clicked', rule, index);\n const updatedRules = [...rules];\n updatedRules.splice(index, 1);\n onChange(updatedRules);\n },\n [onChange, rules]\n );\n\n const handleDragHandlerClick = useCallback(e => {\n e.stopPropagation();\n }, []);\n\n const handleDragEnd = useCallback(\n (result: DropResult) => {\n DragUtils.stopDragging();\n\n // if dropped outside the list\n if (result.destination == null) {\n return;\n }\n const sourceIndex = result.source.index;\n const destinationIndex = result.destination.index;\n const updatedRules = [...rules];\n const sourceInput = rules[sourceIndex];\n\n updatedRules.splice(sourceIndex, 1);\n updatedRules.splice(destinationIndex, 0, sourceInput);\n\n onChange(updatedRules);\n },\n [onChange, rules]\n );\n\n // Display list of rules\n return (\n <div className=\"conditional-formatting-rules\">\n <DragDropContext\n onDragStart={DragUtils.startDragging}\n onDragEnd={handleDragEnd}\n >\n <Droppable droppableId=\"droppable-custom-columns\">\n {(provided, snapshot) => (\n <div\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n className={classNames('droppable-container', {\n dragging: snapshot.draggingFromThisWith,\n })}\n >\n {rules.length === 0 && (\n <div className=\"text-muted pl-2\">No formats defined</div>\n )}\n {rules.map((rule, index) => (\n <Draggable\n // eslint-disable-next-line react/no-array-index-key\n key={`${index}-${rule.type}`}\n draggableId={`${index}-${rule.type}`}\n index={index}\n disableInteractiveElementBlocking\n >\n {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n (provided, snapshot) => (\n <div\n role=\"menuitem\"\n tabIndex={0}\n onClick={e => handleRuleClick(e, rule, index)}\n className={classNames('draggable-container', {\n dragging: snapshot.isDragging,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.draggableProps}\n >\n <div className=\"conditional-formatting-list-item\">\n <div className=\"formatting-item\">\n <div className=\"rule-icon\">\n <span\n className=\"rule-icon-bg\"\n style={{\n backgroundColor: getBackgroundForStyleConfig(\n (rule.config as BaseFormatConfig).style\n ),\n color: getColorForStyleConfig(\n (rule.config as BaseFormatConfig).style\n ),\n }}\n >\n {rule.type === FormatterType.ROWS\n ? 'row'\n : 'col'}\n </span>\n </div>\n <div className=\"rule-title\">\n {getRuleTitle(rule.config as BaseFormatConfig)}\n </div>\n <Button\n kind=\"ghost\"\n className=\"ml-1 px-2\"\n onClick={e => handleDeleteClick(e, rule, index)}\n icon={vsTrash}\n tooltip=\"Delete rule\"\n />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2 btn-drag-handle\"\n onClick={handleDragHandlerClick}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.dragHandleProps}\n >\n <Tooltip>Drag to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </button>\n </div>\n </div>\n </div>\n )\n }\n </Draggable>\n ))}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n <hr />\n <Button kind=\"ghost\" onClick={onCreate} icon={dhNewCircleLargeFilled}>\n Add New Rule\n </Button>\n </div>\n );\n};\n\nexport default ConditionalFormattingMenu;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/iris-grid",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"description": "Deephaven Iris Grid",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -19,29 +19,21 @@
|
|
|
19
19
|
},
|
|
20
20
|
"scripts": {
|
|
21
21
|
"build": "cross-env NODE_ENV=production run-p build:*",
|
|
22
|
-
"build
|
|
23
|
-
"
|
|
24
|
-
"sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist",
|
|
25
|
-
"build:babel": "npm run babel",
|
|
26
|
-
"build:sass": "npm run sass",
|
|
27
|
-
"watch": "run-p watch:*",
|
|
28
|
-
"watch:babel": "npm run babel -- -w --skip-initial-build",
|
|
29
|
-
"watch:sass": "npm run sass -- --watch --update",
|
|
30
|
-
"prestart": "npm run build-dev",
|
|
31
|
-
"start": "cross-env NODE_ENV=development npm run watch"
|
|
22
|
+
"build:babel": "babel ./src --out-dir ./dist --extensions \".ts,.tsx,.js,.jsx\" --source-maps --root-mode upward",
|
|
23
|
+
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
32
24
|
},
|
|
33
25
|
"dependencies": {
|
|
34
|
-
"@deephaven/components": "^0.
|
|
35
|
-
"@deephaven/console": "^0.
|
|
36
|
-
"@deephaven/filters": "^0.
|
|
37
|
-
"@deephaven/grid": "^0.
|
|
38
|
-
"@deephaven/icons": "^0.
|
|
39
|
-
"@deephaven/jsapi-shim": "^0.
|
|
40
|
-
"@deephaven/jsapi-utils": "^0.
|
|
41
|
-
"@deephaven/log": "^0.
|
|
42
|
-
"@deephaven/react-hooks": "^0.
|
|
43
|
-
"@deephaven/storage": "^0.
|
|
44
|
-
"@deephaven/utils": "^0.
|
|
26
|
+
"@deephaven/components": "^0.22.0",
|
|
27
|
+
"@deephaven/console": "^0.22.0",
|
|
28
|
+
"@deephaven/filters": "^0.22.0",
|
|
29
|
+
"@deephaven/grid": "^0.22.0",
|
|
30
|
+
"@deephaven/icons": "^0.22.0",
|
|
31
|
+
"@deephaven/jsapi-shim": "^0.22.0",
|
|
32
|
+
"@deephaven/jsapi-utils": "^0.22.0",
|
|
33
|
+
"@deephaven/log": "^0.22.0",
|
|
34
|
+
"@deephaven/react-hooks": "^0.22.0",
|
|
35
|
+
"@deephaven/storage": "^0.22.0",
|
|
36
|
+
"@deephaven/utils": "^0.22.0",
|
|
45
37
|
"@fortawesome/react-fontawesome": "^0.1.18",
|
|
46
38
|
"classnames": "^2.3.1",
|
|
47
39
|
"deep-equal": "^2.0.5",
|
|
@@ -61,8 +53,8 @@
|
|
|
61
53
|
"react": "^17.x"
|
|
62
54
|
},
|
|
63
55
|
"devDependencies": {
|
|
64
|
-
"@deephaven/mocks": "^0.
|
|
65
|
-
"@deephaven/tsconfig": "^0.
|
|
56
|
+
"@deephaven/mocks": "^0.22.0",
|
|
57
|
+
"@deephaven/tsconfig": "^0.22.0"
|
|
66
58
|
},
|
|
67
59
|
"files": [
|
|
68
60
|
"dist"
|
|
@@ -73,5 +65,5 @@
|
|
|
73
65
|
"publishConfig": {
|
|
74
66
|
"access": "public"
|
|
75
67
|
},
|
|
76
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "c2f10a395058a78c527eb9e0e9750411279eebd2"
|
|
77
69
|
}
|