@deephaven/grid 0.22.3-beta.18 → 0.22.3-beta.21
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/CellInputField.d.ts +5 -5
- package/dist/CellInputField.d.ts.map +1 -1
- package/dist/CellInputField.js +6 -23
- package/dist/CellInputField.js.map +1 -1
- package/dist/EditableGridModel.js +1 -0
- package/dist/EditableGridModel.js.map +1 -1
- package/dist/ExpandableGridModel.js +1 -0
- package/dist/ExpandableGridModel.js.map +1 -1
- package/dist/Grid.js +77 -315
- package/dist/Grid.js.map +1 -1
- package/dist/GridAxisRange.js.map +1 -1
- package/dist/GridColorUtils.js +1 -2
- package/dist/GridColorUtils.js.map +1 -1
- package/dist/GridMetricCalculator.js +83 -240
- package/dist/GridMetricCalculator.js.map +1 -1
- package/dist/GridModel.js +13 -31
- package/dist/GridModel.js.map +1 -1
- package/dist/GridMouseHandler.js +2 -15
- package/dist/GridMouseHandler.js.map +1 -1
- package/dist/GridRange.js +46 -160
- package/dist/GridRange.js.map +1 -1
- package/dist/GridRenderer.js +126 -407
- package/dist/GridRenderer.js.map +1 -1
- package/dist/GridTestUtils.js +0 -5
- package/dist/GridTestUtils.js.map +1 -1
- package/dist/GridTheme.js.map +1 -1
- package/dist/GridUtils.js +68 -217
- package/dist/GridUtils.js.map +1 -1
- package/dist/KeyHandler.js +2 -8
- package/dist/KeyHandler.js.map +1 -1
- package/dist/MockGridData.js.map +1 -1
- package/dist/MockGridModel.js +0 -42
- package/dist/MockGridModel.js.map +1 -1
- package/dist/MockTreeGridModel.js +6 -55
- package/dist/MockTreeGridModel.js.map +1 -1
- package/dist/StaticDataGridModel.js +0 -15
- package/dist/StaticDataGridModel.js.map +1 -1
- package/dist/ThemeContext.js.map +1 -1
- package/dist/ViewportDataGridModel.js +0 -14
- package/dist/ViewportDataGridModel.js.map +1 -1
- package/dist/errors/AssertionError.js +0 -3
- package/dist/errors/AssertionError.js.map +1 -1
- package/dist/errors/PasteError.js +0 -3
- package/dist/errors/PasteError.js.map +1 -1
- package/dist/errors/assertIsDefined.js.map +1 -1
- package/dist/errors/index.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/EditKeyHandler.js +0 -12
- package/dist/key-handlers/EditKeyHandler.js.map +1 -1
- package/dist/key-handlers/PasteKeyHandler.js +15 -33
- package/dist/key-handlers/PasteKeyHandler.js.map +1 -1
- package/dist/key-handlers/SelectionKeyHandler.js +6 -53
- package/dist/key-handlers/SelectionKeyHandler.js.map +1 -1
- package/dist/key-handlers/TreeKeyHandler.js +0 -11
- package/dist/key-handlers/TreeKeyHandler.js.map +1 -1
- package/dist/key-handlers/index.js.map +1 -1
- package/dist/memoizeClear.js +1 -4
- package/dist/memoizeClear.js.map +1 -1
- package/dist/mouse-handlers/EditMouseHandler.js +0 -5
- package/dist/mouse-handlers/EditMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.js +35 -123
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js +2 -27
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js +0 -28
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridRowMoveMouseHandler.js +0 -27
- package/dist/mouse-handlers/GridRowMoveMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js +0 -23
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridRowTreeMouseHandler.js +0 -10
- package/dist/mouse-handlers/GridRowTreeMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js +0 -6
- package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridSelectionMouseHandler.js +8 -38
- package/dist/mouse-handlers/GridSelectionMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridSeparatorMouseHandler.js +5 -54
- package/dist/mouse-handlers/GridSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js +0 -28
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridColumnMoveMouseHandler.js","names":["clamp","GridUtils","GridMouseHandler","SLOPPY_CLICK_DISTANCE","SCROLL_INTERVAL","SCROLL_DELTA","getColumnInfo","visibleIndex","depth","metrics","model","modelColumns","movedColumns","visibleColumnXs","columnCount","visibleColumnWidths","userColumnWidths","calculatedColumnWidths","floatingLeftWidth","maxX","modelIndex","get","getModelIndex","group","getColumnHeaderGroup","isColumnGroup","left","right","range","startVisibleIndex","endVisibleIndex","getVisibleRange","possibleLeft","width","GridColumnMoveMouseHandler","setScrollInterval","grid","direction","scrollingInterval","scrollingDirection","window","setInterval","lastLeft","leftOffset","nextLeft","nextOffset","prevColumnWidth","undefined","leftColumnWidth","mouseX","mouseY","state","moveDraggingColumn","setState","clearScrollInterval","clearInterval","onLeave","onDown","gridPoint","props","x","column","columnHeaderDepth","Error","columnInfo","rowHeaderWidth","initialGridPoint","draggingColumn","cursor","isColumnMovable","draggingOffset","initialOffset","onDrag","event","y","Math","abs","initialColumnInfo","startColumn","endColumn","isDragging","movementX","deltaX","draggingColumnDepth","columnHeaderMaxDepth","isDraggingLeft","floatingDraggingLeft","floatingDraggingRight","swapColumn","getColumnAtX","parentGroup","getColumnHeaderParentGroup","parentVisibleRange","newMovedColumns","moveColumn","parentRight","toVisibleIndex","toColumnInfo","switchPoint","draggingParentGroup","maxDepthSwapGroup","maxSwapDepth","to","moveRange","moveItem","moveDistance","newDraggingRange","onUp"],"sources":["../../src/mouse-handlers/GridColumnMoveMouseHandler.ts"],"sourcesContent":["import clamp from 'lodash.clamp';\nimport Grid from '../Grid';\nimport GridUtils, { GridPoint } from '../GridUtils';\nimport GridMouseHandler, { GridMouseEvent } from '../GridMouseHandler';\nimport { EventHandlerResult } from '../EventHandlerResult';\nimport type {\n VisibleIndex,\n ModelIndex,\n GridMetrics,\n MoveOperation,\n Coordinate,\n} from '../GridMetrics';\nimport type { BoundedAxisRange } from '../GridAxisRange';\nimport type GridModel from '../GridModel';\nimport type { IColumnHeaderGroup } from '../ColumnHeaderGroup';\n\nconst SLOPPY_CLICK_DISTANCE = 5;\nconst SCROLL_INTERVAL = 1000 / 60;\nconst SCROLL_DELTA = 10;\n\nexport interface DraggingColumn {\n range: BoundedAxisRange;\n depth: number;\n left: Coordinate;\n width: number;\n}\n\ninterface ColumnInfo {\n visibleIndex: VisibleIndex;\n modelIndex: ModelIndex;\n left: number;\n right: number;\n width: number;\n isColumnGroup: boolean;\n range: BoundedAxisRange;\n depth: number;\n}\n\n/**\n * Gets info about a visible column\n * @param visibleIndex The visible index to get info for\n * @param depth The header depth to get info for\n * @param metrics Grid metrics\n * @param model Grid model\n * @returns The column info at the depth.\n * If the column is not in a group at that depth, returns the info for the base column.\n * Returns null if the column is not visible.\n */\nfunction getColumnInfo(\n visibleIndex: VisibleIndex | null,\n depth: number | undefined,\n metrics: GridMetrics,\n model: GridModel\n): ColumnInfo | null {\n const {\n modelColumns,\n movedColumns,\n visibleColumnXs,\n columnCount,\n visibleColumnWidths,\n userColumnWidths,\n calculatedColumnWidths,\n floatingLeftWidth,\n maxX,\n } = metrics;\n\n if (\n depth == null ||\n visibleIndex == null ||\n visibleIndex > columnCount ||\n visibleIndex < 0\n ) {\n return null;\n }\n\n const modelIndex =\n modelColumns.get(visibleIndex) ??\n GridUtils.getModelIndex(visibleIndex, movedColumns);\n\n const group = model.getColumnHeaderGroup(modelIndex, depth);\n const isColumnGroup = group != null;\n\n let left: number;\n let right: number;\n let range: BoundedAxisRange;\n\n if (group != null) {\n const [startVisibleIndex, endVisibleIndex] = group.getVisibleRange(\n movedColumns\n );\n\n left = visibleColumnXs.get(startVisibleIndex) ?? floatingLeftWidth;\n right =\n (visibleColumnXs.get(endVisibleIndex) ?? maxX) +\n (visibleColumnWidths.get(endVisibleIndex) ?? 0);\n range = [startVisibleIndex, endVisibleIndex];\n } else {\n const possibleLeft = visibleColumnXs.get(visibleIndex);\n if (possibleLeft == null) {\n return null;\n }\n\n left = possibleLeft;\n right =\n left +\n (visibleColumnWidths.get(visibleIndex) ??\n userColumnWidths.get(modelIndex) ??\n calculatedColumnWidths.get(modelIndex) ??\n 0);\n range = [visibleIndex, visibleIndex];\n }\n\n return {\n visibleIndex,\n modelIndex,\n left,\n right,\n width: right - left,\n isColumnGroup,\n range,\n depth,\n };\n}\n\nclass GridColumnMoveMouseHandler extends GridMouseHandler {\n cursor: string | null = null;\n\n private draggingOffset?: number;\n\n private initialOffset?: number;\n\n private initialGridPoint?: GridPoint;\n\n private scrollingInterval?: number;\n\n private scrollingDirection?: 'left' | 'right';\n\n private draggingColumn: DraggingColumn | null = null;\n\n private setScrollInterval(grid: Grid, direction: 'left' | 'right'): void {\n if (\n this.scrollingInterval != null &&\n direction === this.scrollingDirection\n ) {\n return;\n }\n\n this.scrollingDirection = direction;\n this.scrollingInterval = window.setInterval(() => {\n const { metrics } = grid;\n if (!metrics) {\n return;\n }\n\n const {\n left,\n lastLeft,\n leftOffset,\n userColumnWidths,\n calculatedColumnWidths,\n movedColumns,\n visibleColumnWidths,\n } = metrics;\n\n let nextLeft = left;\n let nextOffset = leftOffset;\n if (direction === 'left') {\n nextOffset -= SCROLL_DELTA;\n while (nextOffset < 0) {\n nextLeft -= 1;\n const modelIndex = GridUtils.getModelIndex(left - 1, movedColumns);\n const prevColumnWidth =\n userColumnWidths.get(modelIndex) ??\n calculatedColumnWidths.get(modelIndex);\n if (prevColumnWidth === undefined) {\n nextOffset = 0;\n } else {\n nextOffset += prevColumnWidth;\n }\n if (nextLeft < 0) {\n nextOffset = 0;\n nextLeft = 0;\n }\n }\n } else {\n nextOffset += SCROLL_DELTA;\n let leftColumnWidth = visibleColumnWidths.get(left);\n while (leftColumnWidth !== undefined && nextOffset > leftColumnWidth) {\n nextLeft += 1;\n nextOffset -= leftColumnWidth;\n const modelIndex = GridUtils.getModelIndex(left + 1, movedColumns);\n leftColumnWidth =\n userColumnWidths.get(modelIndex) ??\n calculatedColumnWidths.get(modelIndex);\n\n if (nextLeft > lastLeft) {\n nextOffset = 0;\n nextLeft = lastLeft;\n }\n }\n }\n\n const { mouseX, mouseY } = grid.state;\n\n if (metrics == null || mouseX == null || mouseY == null) {\n return;\n }\n\n this.moveDraggingColumn(\n mouseX,\n grid,\n direction === 'left' ? -SCROLL_DELTA : SCROLL_DELTA\n );\n grid.setState({ left: nextLeft, leftOffset: nextOffset });\n\n if (\n (direction === 'left' && nextLeft === 0 && leftOffset === 0) ||\n (direction === 'right' && nextLeft === lastLeft)\n ) {\n this.clearScrollInterval();\n }\n }, SCROLL_INTERVAL);\n }\n\n private clearScrollInterval(): void {\n this.scrollingDirection = undefined;\n window.clearInterval(this.scrollingInterval);\n this.scrollingInterval = undefined;\n }\n\n onLeave(): EventHandlerResult {\n this.clearScrollInterval();\n return false;\n }\n\n onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n const { model } = grid.props;\n const { x, column, columnHeaderDepth } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('Metrics not set');\n\n const columnInfo = getColumnInfo(column, columnHeaderDepth, metrics, model);\n\n if (column == null || columnInfo == null || columnHeaderDepth == null) {\n return false;\n }\n\n // Can't drag a base column from the empty group area\n if (columnHeaderDepth > 0 && !columnInfo.isColumnGroup) {\n return false;\n }\n\n const { rowHeaderWidth } = metrics;\n\n this.initialGridPoint = gridPoint;\n this.draggingColumn = null;\n this.cursor = null;\n\n if (\n columnInfo.modelIndex != null &&\n columnHeaderDepth != null &&\n model.isColumnMovable(columnInfo.modelIndex, columnHeaderDepth)\n ) {\n this.draggingOffset = x - columnInfo.left - rowHeaderWidth;\n this.initialOffset = this.draggingOffset;\n }\n return false;\n }\n\n onDrag(\n gridPoint: GridPoint,\n grid: Grid,\n event: GridMouseEvent\n ): EventHandlerResult {\n if (\n this.draggingOffset === undefined ||\n this.initialGridPoint === undefined ||\n this.initialOffset === undefined\n ) {\n return false;\n }\n\n const { x: mouseX, y: mouseY } = gridPoint;\n const { columnHeaderDepth } = this.initialGridPoint;\n\n const { model } = grid.props;\n let { draggingColumn } = this;\n const { metrics } = grid;\n\n if (!metrics) throw new Error('Metrics not set');\n\n // before considering it a drag, the mouse must have moved a minimum distance\n // this prevents click actions from triggering a drag state\n if (\n !draggingColumn &&\n Math.abs(this.initialGridPoint.x - mouseX) < SLOPPY_CLICK_DISTANCE &&\n Math.abs(this.initialGridPoint.y - mouseY) < SLOPPY_CLICK_DISTANCE\n ) {\n return false;\n }\n\n // Get the initial dragging column info\n if (draggingColumn == null) {\n const initialColumnInfo = getColumnInfo(\n this.initialGridPoint.column,\n columnHeaderDepth,\n metrics,\n model\n );\n\n if (!initialColumnInfo || columnHeaderDepth == null) {\n return false;\n }\n\n if (!model.isColumnMovable(initialColumnInfo.modelIndex)) {\n return false;\n }\n\n // Disallow dragging from the blank space in column header groups\n if (columnHeaderDepth > 0 && !initialColumnInfo.isColumnGroup) {\n return false;\n }\n\n if (initialColumnInfo.range[0] == null) {\n return false;\n }\n\n draggingColumn = {\n range: initialColumnInfo.range,\n depth: columnHeaderDepth,\n left: initialColumnInfo.left,\n width: initialColumnInfo.width,\n };\n\n const startColumn = getColumnInfo(\n draggingColumn.range[0],\n 0,\n metrics,\n model\n );\n const endColumn = getColumnInfo(\n draggingColumn.range[1],\n 0,\n metrics,\n model\n );\n\n // Group goes off the table. Drag and drop could be wonky here\n // Column draws only use columns that are partially visible too\n // So this could cause rendering errors if we tried dragging it\n if (!startColumn || !endColumn) {\n return false;\n }\n\n this.draggingColumn = draggingColumn;\n grid.setState({ draggingColumn, isDragging: true });\n }\n\n /**\n * At this point, we have determined we are actually dragging a column\n */\n this.cursor = 'move';\n\n this.moveDraggingColumn(gridPoint.x, grid, event.movementX);\n\n return true;\n }\n\n /**\n * Moves a dragging column, if possible, the specified distance\n * @param mouseX The point the move was initiated from\n * @param grid The Grid component\n * @param deltaX The distance of the move\n */\n moveDraggingColumn(mouseX: number, grid: Grid, deltaX: number): void {\n if (\n this.draggingOffset === undefined ||\n this.initialGridPoint === undefined ||\n this.initialOffset === undefined ||\n this.draggingColumn == null ||\n deltaX === 0\n ) {\n return;\n }\n\n // Cursor has moved past the column drag bounds, don't move the column until we hit the initial offset point again\n if (this.initialOffset !== this.draggingOffset) {\n // Pre move < Initial < Post move or vice-versa\n // User crossed back past the iniital offset point, so we can start moving again\n if (\n (this.draggingOffset < this.initialOffset &&\n this.initialOffset < this.draggingOffset + deltaX) ||\n (this.draggingOffset > this.initialOffset &&\n this.initialOffset > this.draggingOffset + deltaX)\n ) {\n this.draggingOffset = this.initialOffset;\n } else {\n // Column can't move since we aren't back at the initial offset yet\n this.draggingOffset += deltaX;\n }\n\n this.draggingColumn = {\n ...this.draggingColumn,\n left: mouseX - this.draggingOffset,\n };\n grid.setState({ draggingColumn: this.draggingColumn });\n return;\n }\n\n const { depth: draggingColumnDepth } = this.draggingColumn;\n\n const { model } = grid.props;\n const { movedColumns } = grid.state;\n const { metrics } = grid;\n if (!metrics) throw new Error('Metrics not set');\n\n const {\n floatingLeftWidth,\n width,\n columnHeaderMaxDepth,\n visibleColumnXs,\n } = metrics;\n\n const isDraggingLeft = deltaX < 0;\n\n const draggingColumn = getColumnInfo(\n this.draggingColumn.range[0],\n draggingColumnDepth,\n metrics,\n model\n );\n\n if (!draggingColumn) {\n return;\n }\n\n // The returned left/right are the original position, not dragged position\n // This is where the dragging column's floating position accounting for dragged distance\n const floatingDraggingLeft = mouseX - this.draggingOffset;\n const floatingDraggingRight = floatingDraggingLeft + draggingColumn.width;\n\n this.draggingColumn = {\n ...this.draggingColumn,\n left: floatingDraggingLeft,\n };\n grid.setState({\n draggingColumn: this.draggingColumn,\n });\n\n const swapColumn = getColumnInfo(\n GridUtils.getColumnAtX(\n clamp(\n isDraggingLeft ? floatingDraggingLeft : floatingDraggingRight,\n floatingLeftWidth,\n width\n ),\n metrics,\n true\n ),\n draggingColumnDepth,\n metrics,\n model\n );\n\n const parentGroup = model.getColumnHeaderParentGroup(\n draggingColumn.modelIndex,\n draggingColumn.depth\n );\n\n if (!swapColumn) {\n return;\n }\n\n // Check if we should pin to the edge of the parent\n if (parentGroup !== undefined) {\n const parentVisibleRange = parentGroup.getVisibleRange(movedColumns);\n // Cannot move to this left position, pin to left of parent\n if (swapColumn.visibleIndex < parentVisibleRange[0]) {\n const newMovedColumns = this.moveColumn(\n draggingColumn,\n parentVisibleRange[0],\n movedColumns\n );\n\n this.draggingOffset =\n mouseX - (visibleColumnXs.get(parentVisibleRange[0]) ?? 0);\n this.draggingColumn = {\n ...this.draggingColumn,\n left: mouseX - this.draggingOffset,\n };\n this.clearScrollInterval();\n grid.setState({\n draggingColumn: this.draggingColumn,\n movedColumns: newMovedColumns,\n });\n return;\n }\n\n // Pin to the right of parent\n if (swapColumn.visibleIndex > parentVisibleRange[1]) {\n const newMovedColumns = this.moveColumn(\n draggingColumn,\n parentVisibleRange[1] -\n (draggingColumn.range[1] - draggingColumn.range[0]),\n movedColumns\n );\n\n const { right: parentRight = 0 } =\n getColumnInfo(parentVisibleRange[1], 0, metrics, model) ?? {};\n\n this.draggingOffset = mouseX - (parentRight - draggingColumn.width);\n this.draggingColumn = {\n ...this.draggingColumn,\n left: mouseX - this.draggingOffset,\n };\n this.clearScrollInterval();\n grid.setState({\n draggingColumn: this.draggingColumn,\n movedColumns: newMovedColumns,\n });\n return;\n }\n }\n\n // Hit an unmovable column, move to the first available position next to it\n if (!model.isColumnMovable(swapColumn.modelIndex)) {\n let toVisibleIndex = swapColumn.visibleIndex;\n if (isDraggingLeft) {\n toVisibleIndex += 1;\n while (\n toVisibleIndex < draggingColumn.visibleIndex &&\n !model.isColumnMovable(\n GridUtils.getModelIndex(toVisibleIndex, movedColumns)\n )\n ) {\n toVisibleIndex += 1;\n }\n } else {\n toVisibleIndex -= 1;\n while (\n toVisibleIndex > draggingColumn.visibleIndex &&\n !model.isColumnMovable(\n GridUtils.getModelIndex(toVisibleIndex, movedColumns)\n )\n ) {\n toVisibleIndex -= 1;\n }\n }\n\n if (toVisibleIndex !== draggingColumn.visibleIndex) {\n if (!isDraggingLeft) {\n // Offset for range if dragging right\n toVisibleIndex -= draggingColumn.range[1] - draggingColumn.range[0];\n }\n\n const newMovedColumns = this.moveColumn(\n draggingColumn,\n toVisibleIndex,\n movedColumns\n );\n\n grid.setState({\n movedColumns: newMovedColumns,\n draggingColumn: this.draggingColumn,\n });\n }\n\n const toColumnInfo = getColumnInfo(toVisibleIndex, 0, metrics, model);\n if (isDraggingLeft) {\n this.draggingOffset = mouseX - (toColumnInfo?.left ?? 0);\n } else {\n this.draggingOffset =\n mouseX - ((toColumnInfo?.right ?? 0) - draggingColumn.width);\n }\n\n this.draggingColumn = {\n ...this.draggingColumn,\n left: mouseX - this.draggingOffset,\n };\n\n grid.setState({\n draggingColumn: this.draggingColumn,\n });\n\n return;\n }\n\n if (floatingDraggingLeft <= floatingLeftWidth) {\n this.setScrollInterval(grid, 'left');\n } else if (floatingDraggingRight > width) {\n this.setScrollInterval(grid, 'right');\n } else {\n this.clearScrollInterval();\n }\n\n // Can't swap a column with itself\n if (swapColumn.visibleIndex === draggingColumn.visibleIndex) {\n return;\n }\n\n // Can't swap a column to the left when dragging right or vice versa\n if (\n (isDraggingLeft &&\n draggingColumn.visibleIndex < swapColumn.visibleIndex) ||\n (!isDraggingLeft && draggingColumn.visibleIndex > swapColumn.visibleIndex)\n ) {\n return;\n }\n\n const switchPoint = swapColumn.left + swapColumn.width * 0.5;\n const draggingParentGroup = model.getColumnHeaderParentGroup(\n draggingColumn.modelIndex,\n draggingColumn.depth\n );\n\n // Get the highest level group that is not the common base group\n // This group is what we need to drag past\n let maxDepthSwapGroup: IColumnHeaderGroup | undefined;\n let maxSwapDepth = (draggingParentGroup?.depth ?? columnHeaderMaxDepth) - 1;\n while (maxSwapDepth >= 0 && maxDepthSwapGroup === undefined) {\n maxDepthSwapGroup = model.getColumnHeaderGroup(\n swapColumn.modelIndex,\n maxSwapDepth\n );\n maxSwapDepth -= 1;\n }\n\n let newMovedColumns: MoveOperation[] | undefined;\n\n if (\n isDraggingLeft &&\n floatingDraggingLeft < switchPoint &&\n (!maxDepthSwapGroup ||\n swapColumn.visibleIndex ===\n maxDepthSwapGroup.getVisibleRange(movedColumns)[0])\n ) {\n newMovedColumns = this.moveColumn(\n draggingColumn,\n swapColumn.range[0],\n movedColumns\n );\n }\n\n if (\n !isDraggingLeft &&\n floatingDraggingRight > switchPoint &&\n (!maxDepthSwapGroup ||\n swapColumn.visibleIndex ===\n maxDepthSwapGroup.getVisibleRange(movedColumns)[1])\n ) {\n newMovedColumns = this.moveColumn(\n draggingColumn,\n swapColumn.range[1] -\n (draggingColumn.range[1] - draggingColumn.range[0]),\n movedColumns\n );\n }\n\n if (!newMovedColumns) {\n return;\n }\n\n this.draggingColumn = {\n ...this.draggingColumn,\n left: floatingDraggingLeft,\n };\n\n grid.setState({\n movedColumns: newMovedColumns,\n draggingColumn: this.draggingColumn,\n });\n }\n\n /**\n * Applies the column move and updates draggingColumn in the mouse handler\n * Does not check if the move is valid\n * @param draggingColumn The dragging column info\n * @param to The index to move the column or range to\n * @param movedColumns The array of column moves\n * @returns A new array of column moves\n */\n moveColumn(\n draggingColumn: ColumnInfo,\n to: number,\n movedColumns: MoveOperation[]\n ): MoveOperation[] {\n const newMovedColumns = draggingColumn.isColumnGroup\n ? GridUtils.moveRange(draggingColumn.range, to, movedColumns)\n : GridUtils.moveItem(draggingColumn.visibleIndex, to, movedColumns);\n\n const moveDistance = to - draggingColumn.range[0];\n const newDraggingRange: BoundedAxisRange = [\n draggingColumn.range[0] + moveDistance,\n draggingColumn.range[1] + moveDistance,\n ];\n\n if (this.draggingColumn) {\n this.draggingColumn = {\n ...this.draggingColumn,\n range: newDraggingRange,\n };\n }\n\n return newMovedColumns;\n }\n\n onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n this.cursor = null;\n\n this.clearScrollInterval();\n\n if (this.draggingOffset != null) {\n this.draggingOffset = undefined;\n grid.setState({\n draggingColumn: null,\n isDragging: false,\n });\n return true;\n }\n\n return false;\n }\n}\n\nexport default GridColumnMoveMouseHandler;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GridColumnMoveMouseHandler.js","names":["clamp","GridUtils","GridMouseHandler","SLOPPY_CLICK_DISTANCE","SCROLL_INTERVAL","SCROLL_DELTA","getColumnInfo","visibleIndex","depth","metrics","model","modelColumns","movedColumns","visibleColumnXs","columnCount","visibleColumnWidths","userColumnWidths","calculatedColumnWidths","floatingLeftWidth","maxX","modelIndex","get","getModelIndex","group","getColumnHeaderGroup","isColumnGroup","left","right","range","startVisibleIndex","endVisibleIndex","getVisibleRange","possibleLeft","width","GridColumnMoveMouseHandler","setScrollInterval","grid","direction","scrollingInterval","scrollingDirection","window","setInterval","lastLeft","leftOffset","nextLeft","nextOffset","prevColumnWidth","undefined","leftColumnWidth","mouseX","mouseY","state","moveDraggingColumn","setState","clearScrollInterval","clearInterval","onLeave","onDown","gridPoint","props","x","column","columnHeaderDepth","Error","columnInfo","rowHeaderWidth","initialGridPoint","draggingColumn","cursor","isColumnMovable","draggingOffset","initialOffset","onDrag","event","y","Math","abs","initialColumnInfo","startColumn","endColumn","isDragging","movementX","deltaX","draggingColumnDepth","columnHeaderMaxDepth","isDraggingLeft","floatingDraggingLeft","floatingDraggingRight","swapColumn","getColumnAtX","parentGroup","getColumnHeaderParentGroup","parentVisibleRange","newMovedColumns","moveColumn","parentRight","toVisibleIndex","toColumnInfo","switchPoint","draggingParentGroup","maxDepthSwapGroup","maxSwapDepth","to","moveRange","moveItem","moveDistance","newDraggingRange","onUp"],"sources":["../../src/mouse-handlers/GridColumnMoveMouseHandler.ts"],"sourcesContent":["import clamp from 'lodash.clamp';\nimport Grid from '../Grid';\nimport GridUtils, { GridPoint } from '../GridUtils';\nimport GridMouseHandler, { GridMouseEvent } from '../GridMouseHandler';\nimport { EventHandlerResult } from '../EventHandlerResult';\nimport type {\n VisibleIndex,\n ModelIndex,\n GridMetrics,\n MoveOperation,\n Coordinate,\n} from '../GridMetrics';\nimport type { BoundedAxisRange } from '../GridAxisRange';\nimport type GridModel from '../GridModel';\nimport type { IColumnHeaderGroup } from '../ColumnHeaderGroup';\n\nconst SLOPPY_CLICK_DISTANCE = 5;\nconst SCROLL_INTERVAL = 1000 / 60;\nconst SCROLL_DELTA = 10;\n\nexport interface DraggingColumn {\n range: BoundedAxisRange;\n depth: number;\n left: Coordinate;\n width: number;\n}\n\ninterface ColumnInfo {\n visibleIndex: VisibleIndex;\n modelIndex: ModelIndex;\n left: number;\n right: number;\n width: number;\n isColumnGroup: boolean;\n range: BoundedAxisRange;\n depth: number;\n}\n\n/**\n * Gets info about a visible column\n * @param visibleIndex The visible index to get info for\n * @param depth The header depth to get info for\n * @param metrics Grid metrics\n * @param model Grid model\n * @returns The column info at the depth.\n * If the column is not in a group at that depth, returns the info for the base column.\n * Returns null if the column is not visible.\n */\nfunction getColumnInfo(\n visibleIndex: VisibleIndex | null,\n depth: number | undefined,\n metrics: GridMetrics,\n model: GridModel\n): ColumnInfo | null {\n const {\n modelColumns,\n movedColumns,\n visibleColumnXs,\n columnCount,\n visibleColumnWidths,\n userColumnWidths,\n calculatedColumnWidths,\n floatingLeftWidth,\n maxX,\n } = metrics;\n\n if (\n depth == null ||\n visibleIndex == null ||\n visibleIndex > columnCount ||\n visibleIndex < 0\n ) {\n return null;\n }\n\n const modelIndex =\n modelColumns.get(visibleIndex) ??\n GridUtils.getModelIndex(visibleIndex, movedColumns);\n\n const group = model.getColumnHeaderGroup(modelIndex, depth);\n const isColumnGroup = group != null;\n\n let left: number;\n let right: number;\n let range: BoundedAxisRange;\n\n if (group != null) {\n const [startVisibleIndex, endVisibleIndex] = group.getVisibleRange(\n movedColumns\n );\n\n left = visibleColumnXs.get(startVisibleIndex) ?? floatingLeftWidth;\n right =\n (visibleColumnXs.get(endVisibleIndex) ?? maxX) +\n (visibleColumnWidths.get(endVisibleIndex) ?? 0);\n range = [startVisibleIndex, endVisibleIndex];\n } else {\n const possibleLeft = visibleColumnXs.get(visibleIndex);\n if (possibleLeft == null) {\n return null;\n }\n\n left = possibleLeft;\n right =\n left +\n (visibleColumnWidths.get(visibleIndex) ??\n userColumnWidths.get(modelIndex) ??\n calculatedColumnWidths.get(modelIndex) ??\n 0);\n range = [visibleIndex, visibleIndex];\n }\n\n return {\n visibleIndex,\n modelIndex,\n left,\n right,\n width: right - left,\n isColumnGroup,\n range,\n depth,\n };\n}\n\nclass GridColumnMoveMouseHandler extends GridMouseHandler {\n cursor: string | null = null;\n\n private draggingOffset?: number;\n\n private initialOffset?: number;\n\n private initialGridPoint?: GridPoint;\n\n private scrollingInterval?: number;\n\n private scrollingDirection?: 'left' | 'right';\n\n private draggingColumn: DraggingColumn | null = null;\n\n private setScrollInterval(grid: Grid, direction: 'left' | 'right'): void {\n if (\n this.scrollingInterval != null &&\n direction === this.scrollingDirection\n ) {\n return;\n }\n\n this.scrollingDirection = direction;\n this.scrollingInterval = window.setInterval(() => {\n const { metrics } = grid;\n if (!metrics) {\n return;\n }\n\n const {\n left,\n lastLeft,\n leftOffset,\n userColumnWidths,\n calculatedColumnWidths,\n movedColumns,\n visibleColumnWidths,\n } = metrics;\n\n let nextLeft = left;\n let nextOffset = leftOffset;\n if (direction === 'left') {\n nextOffset -= SCROLL_DELTA;\n while (nextOffset < 0) {\n nextLeft -= 1;\n const modelIndex = GridUtils.getModelIndex(left - 1, movedColumns);\n const prevColumnWidth =\n userColumnWidths.get(modelIndex) ??\n calculatedColumnWidths.get(modelIndex);\n if (prevColumnWidth === undefined) {\n nextOffset = 0;\n } else {\n nextOffset += prevColumnWidth;\n }\n if (nextLeft < 0) {\n nextOffset = 0;\n nextLeft = 0;\n }\n }\n } else {\n nextOffset += SCROLL_DELTA;\n let leftColumnWidth = visibleColumnWidths.get(left);\n while (leftColumnWidth !== undefined && nextOffset > leftColumnWidth) {\n nextLeft += 1;\n nextOffset -= leftColumnWidth;\n const modelIndex = GridUtils.getModelIndex(left + 1, movedColumns);\n leftColumnWidth =\n userColumnWidths.get(modelIndex) ??\n calculatedColumnWidths.get(modelIndex);\n\n if (nextLeft > lastLeft) {\n nextOffset = 0;\n nextLeft = lastLeft;\n }\n }\n }\n\n const { mouseX, mouseY } = grid.state;\n\n if (metrics == null || mouseX == null || mouseY == null) {\n return;\n }\n\n this.moveDraggingColumn(\n mouseX,\n grid,\n direction === 'left' ? -SCROLL_DELTA : SCROLL_DELTA\n );\n grid.setState({ left: nextLeft, leftOffset: nextOffset });\n\n if (\n (direction === 'left' && nextLeft === 0 && leftOffset === 0) ||\n (direction === 'right' && nextLeft === lastLeft)\n ) {\n this.clearScrollInterval();\n }\n }, SCROLL_INTERVAL);\n }\n\n private clearScrollInterval(): void {\n this.scrollingDirection = undefined;\n window.clearInterval(this.scrollingInterval);\n this.scrollingInterval = undefined;\n }\n\n onLeave(): EventHandlerResult {\n this.clearScrollInterval();\n return false;\n }\n\n onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n const { model } = grid.props;\n const { x, column, columnHeaderDepth } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('Metrics not set');\n\n const columnInfo = getColumnInfo(column, columnHeaderDepth, metrics, model);\n\n if (column == null || columnInfo == null || columnHeaderDepth == null) {\n return false;\n }\n\n // Can't drag a base column from the empty group area\n if (columnHeaderDepth > 0 && !columnInfo.isColumnGroup) {\n return false;\n }\n\n const { rowHeaderWidth } = metrics;\n\n this.initialGridPoint = gridPoint;\n this.draggingColumn = null;\n this.cursor = null;\n\n if (\n columnInfo.modelIndex != null &&\n columnHeaderDepth != null &&\n model.isColumnMovable(columnInfo.modelIndex, columnHeaderDepth)\n ) {\n this.draggingOffset = x - columnInfo.left - rowHeaderWidth;\n this.initialOffset = this.draggingOffset;\n }\n return false;\n }\n\n onDrag(\n gridPoint: GridPoint,\n grid: Grid,\n event: GridMouseEvent\n ): EventHandlerResult {\n if (\n this.draggingOffset === undefined ||\n this.initialGridPoint === undefined ||\n this.initialOffset === undefined\n ) {\n return false;\n }\n\n const { x: mouseX, y: mouseY } = gridPoint;\n const { columnHeaderDepth } = this.initialGridPoint;\n\n const { model } = grid.props;\n let { draggingColumn } = this;\n const { metrics } = grid;\n\n if (!metrics) throw new Error('Metrics not set');\n\n // before considering it a drag, the mouse must have moved a minimum distance\n // this prevents click actions from triggering a drag state\n if (\n !draggingColumn &&\n Math.abs(this.initialGridPoint.x - mouseX) < SLOPPY_CLICK_DISTANCE &&\n Math.abs(this.initialGridPoint.y - mouseY) < SLOPPY_CLICK_DISTANCE\n ) {\n return false;\n }\n\n // Get the initial dragging column info\n if (draggingColumn == null) {\n const initialColumnInfo = getColumnInfo(\n this.initialGridPoint.column,\n columnHeaderDepth,\n metrics,\n model\n );\n\n if (!initialColumnInfo || columnHeaderDepth == null) {\n return false;\n }\n\n if (!model.isColumnMovable(initialColumnInfo.modelIndex)) {\n return false;\n }\n\n // Disallow dragging from the blank space in column header groups\n if (columnHeaderDepth > 0 && !initialColumnInfo.isColumnGroup) {\n return false;\n }\n\n if (initialColumnInfo.range[0] == null) {\n return false;\n }\n\n draggingColumn = {\n range: initialColumnInfo.range,\n depth: columnHeaderDepth,\n left: initialColumnInfo.left,\n width: initialColumnInfo.width,\n };\n\n const startColumn = getColumnInfo(\n draggingColumn.range[0],\n 0,\n metrics,\n model\n );\n const endColumn = getColumnInfo(\n draggingColumn.range[1],\n 0,\n metrics,\n model\n );\n\n // Group goes off the table. Drag and drop could be wonky here\n // Column draws only use columns that are partially visible too\n // So this could cause rendering errors if we tried dragging it\n if (!startColumn || !endColumn) {\n return false;\n }\n\n this.draggingColumn = draggingColumn;\n grid.setState({ draggingColumn, isDragging: true });\n }\n\n /**\n * At this point, we have determined we are actually dragging a column\n */\n this.cursor = 'move';\n\n this.moveDraggingColumn(gridPoint.x, grid, event.movementX);\n\n return true;\n }\n\n /**\n * Moves a dragging column, if possible, the specified distance\n * @param mouseX The point the move was initiated from\n * @param grid The Grid component\n * @param deltaX The distance of the move\n */\n moveDraggingColumn(mouseX: number, grid: Grid, deltaX: number): void {\n if (\n this.draggingOffset === undefined ||\n this.initialGridPoint === undefined ||\n this.initialOffset === undefined ||\n this.draggingColumn == null ||\n deltaX === 0\n ) {\n return;\n }\n\n // Cursor has moved past the column drag bounds, don't move the column until we hit the initial offset point again\n if (this.initialOffset !== this.draggingOffset) {\n // Pre move < Initial < Post move or vice-versa\n // User crossed back past the iniital offset point, so we can start moving again\n if (\n (this.draggingOffset < this.initialOffset &&\n this.initialOffset < this.draggingOffset + deltaX) ||\n (this.draggingOffset > this.initialOffset &&\n this.initialOffset > this.draggingOffset + deltaX)\n ) {\n this.draggingOffset = this.initialOffset;\n } else {\n // Column can't move since we aren't back at the initial offset yet\n this.draggingOffset += deltaX;\n }\n\n this.draggingColumn = {\n ...this.draggingColumn,\n left: mouseX - this.draggingOffset,\n };\n grid.setState({ draggingColumn: this.draggingColumn });\n return;\n }\n\n const { depth: draggingColumnDepth } = this.draggingColumn;\n\n const { model } = grid.props;\n const { movedColumns } = grid.state;\n const { metrics } = grid;\n if (!metrics) throw new Error('Metrics not set');\n\n const {\n floatingLeftWidth,\n width,\n columnHeaderMaxDepth,\n visibleColumnXs,\n } = metrics;\n\n const isDraggingLeft = deltaX < 0;\n\n const draggingColumn = getColumnInfo(\n this.draggingColumn.range[0],\n draggingColumnDepth,\n metrics,\n model\n );\n\n if (!draggingColumn) {\n return;\n }\n\n // The returned left/right are the original position, not dragged position\n // This is where the dragging column's floating position accounting for dragged distance\n const floatingDraggingLeft = mouseX - this.draggingOffset;\n const floatingDraggingRight = floatingDraggingLeft + draggingColumn.width;\n\n this.draggingColumn = {\n ...this.draggingColumn,\n left: floatingDraggingLeft,\n };\n grid.setState({\n draggingColumn: this.draggingColumn,\n });\n\n const swapColumn = getColumnInfo(\n GridUtils.getColumnAtX(\n clamp(\n isDraggingLeft ? floatingDraggingLeft : floatingDraggingRight,\n floatingLeftWidth,\n width\n ),\n metrics,\n true\n ),\n draggingColumnDepth,\n metrics,\n model\n );\n\n const parentGroup = model.getColumnHeaderParentGroup(\n draggingColumn.modelIndex,\n draggingColumn.depth\n );\n\n if (!swapColumn) {\n return;\n }\n\n // Check if we should pin to the edge of the parent\n if (parentGroup !== undefined) {\n const parentVisibleRange = parentGroup.getVisibleRange(movedColumns);\n // Cannot move to this left position, pin to left of parent\n if (swapColumn.visibleIndex < parentVisibleRange[0]) {\n const newMovedColumns = this.moveColumn(\n draggingColumn,\n parentVisibleRange[0],\n movedColumns\n );\n\n this.draggingOffset =\n mouseX - (visibleColumnXs.get(parentVisibleRange[0]) ?? 0);\n this.draggingColumn = {\n ...this.draggingColumn,\n left: mouseX - this.draggingOffset,\n };\n this.clearScrollInterval();\n grid.setState({\n draggingColumn: this.draggingColumn,\n movedColumns: newMovedColumns,\n });\n return;\n }\n\n // Pin to the right of parent\n if (swapColumn.visibleIndex > parentVisibleRange[1]) {\n const newMovedColumns = this.moveColumn(\n draggingColumn,\n parentVisibleRange[1] -\n (draggingColumn.range[1] - draggingColumn.range[0]),\n movedColumns\n );\n\n const { right: parentRight = 0 } =\n getColumnInfo(parentVisibleRange[1], 0, metrics, model) ?? {};\n\n this.draggingOffset = mouseX - (parentRight - draggingColumn.width);\n this.draggingColumn = {\n ...this.draggingColumn,\n left: mouseX - this.draggingOffset,\n };\n this.clearScrollInterval();\n grid.setState({\n draggingColumn: this.draggingColumn,\n movedColumns: newMovedColumns,\n });\n return;\n }\n }\n\n // Hit an unmovable column, move to the first available position next to it\n if (!model.isColumnMovable(swapColumn.modelIndex)) {\n let toVisibleIndex = swapColumn.visibleIndex;\n if (isDraggingLeft) {\n toVisibleIndex += 1;\n while (\n toVisibleIndex < draggingColumn.visibleIndex &&\n !model.isColumnMovable(\n GridUtils.getModelIndex(toVisibleIndex, movedColumns)\n )\n ) {\n toVisibleIndex += 1;\n }\n } else {\n toVisibleIndex -= 1;\n while (\n toVisibleIndex > draggingColumn.visibleIndex &&\n !model.isColumnMovable(\n GridUtils.getModelIndex(toVisibleIndex, movedColumns)\n )\n ) {\n toVisibleIndex -= 1;\n }\n }\n\n if (toVisibleIndex !== draggingColumn.visibleIndex) {\n if (!isDraggingLeft) {\n // Offset for range if dragging right\n toVisibleIndex -= draggingColumn.range[1] - draggingColumn.range[0];\n }\n\n const newMovedColumns = this.moveColumn(\n draggingColumn,\n toVisibleIndex,\n movedColumns\n );\n\n grid.setState({\n movedColumns: newMovedColumns,\n draggingColumn: this.draggingColumn,\n });\n }\n\n const toColumnInfo = getColumnInfo(toVisibleIndex, 0, metrics, model);\n if (isDraggingLeft) {\n this.draggingOffset = mouseX - (toColumnInfo?.left ?? 0);\n } else {\n this.draggingOffset =\n mouseX - ((toColumnInfo?.right ?? 0) - draggingColumn.width);\n }\n\n this.draggingColumn = {\n ...this.draggingColumn,\n left: mouseX - this.draggingOffset,\n };\n\n grid.setState({\n draggingColumn: this.draggingColumn,\n });\n\n return;\n }\n\n if (floatingDraggingLeft <= floatingLeftWidth) {\n this.setScrollInterval(grid, 'left');\n } else if (floatingDraggingRight > width) {\n this.setScrollInterval(grid, 'right');\n } else {\n this.clearScrollInterval();\n }\n\n // Can't swap a column with itself\n if (swapColumn.visibleIndex === draggingColumn.visibleIndex) {\n return;\n }\n\n // Can't swap a column to the left when dragging right or vice versa\n if (\n (isDraggingLeft &&\n draggingColumn.visibleIndex < swapColumn.visibleIndex) ||\n (!isDraggingLeft && draggingColumn.visibleIndex > swapColumn.visibleIndex)\n ) {\n return;\n }\n\n const switchPoint = swapColumn.left + swapColumn.width * 0.5;\n const draggingParentGroup = model.getColumnHeaderParentGroup(\n draggingColumn.modelIndex,\n draggingColumn.depth\n );\n\n // Get the highest level group that is not the common base group\n // This group is what we need to drag past\n let maxDepthSwapGroup: IColumnHeaderGroup | undefined;\n let maxSwapDepth = (draggingParentGroup?.depth ?? columnHeaderMaxDepth) - 1;\n while (maxSwapDepth >= 0 && maxDepthSwapGroup === undefined) {\n maxDepthSwapGroup = model.getColumnHeaderGroup(\n swapColumn.modelIndex,\n maxSwapDepth\n );\n maxSwapDepth -= 1;\n }\n\n let newMovedColumns: MoveOperation[] | undefined;\n\n if (\n isDraggingLeft &&\n floatingDraggingLeft < switchPoint &&\n (!maxDepthSwapGroup ||\n swapColumn.visibleIndex ===\n maxDepthSwapGroup.getVisibleRange(movedColumns)[0])\n ) {\n newMovedColumns = this.moveColumn(\n draggingColumn,\n swapColumn.range[0],\n movedColumns\n );\n }\n\n if (\n !isDraggingLeft &&\n floatingDraggingRight > switchPoint &&\n (!maxDepthSwapGroup ||\n swapColumn.visibleIndex ===\n maxDepthSwapGroup.getVisibleRange(movedColumns)[1])\n ) {\n newMovedColumns = this.moveColumn(\n draggingColumn,\n swapColumn.range[1] -\n (draggingColumn.range[1] - draggingColumn.range[0]),\n movedColumns\n );\n }\n\n if (!newMovedColumns) {\n return;\n }\n\n this.draggingColumn = {\n ...this.draggingColumn,\n left: floatingDraggingLeft,\n };\n\n grid.setState({\n movedColumns: newMovedColumns,\n draggingColumn: this.draggingColumn,\n });\n }\n\n /**\n * Applies the column move and updates draggingColumn in the mouse handler\n * Does not check if the move is valid\n * @param draggingColumn The dragging column info\n * @param to The index to move the column or range to\n * @param movedColumns The array of column moves\n * @returns A new array of column moves\n */\n moveColumn(\n draggingColumn: ColumnInfo,\n to: number,\n movedColumns: MoveOperation[]\n ): MoveOperation[] {\n const newMovedColumns = draggingColumn.isColumnGroup\n ? GridUtils.moveRange(draggingColumn.range, to, movedColumns)\n : GridUtils.moveItem(draggingColumn.visibleIndex, to, movedColumns);\n\n const moveDistance = to - draggingColumn.range[0];\n const newDraggingRange: BoundedAxisRange = [\n draggingColumn.range[0] + moveDistance,\n draggingColumn.range[1] + moveDistance,\n ];\n\n if (this.draggingColumn) {\n this.draggingColumn = {\n ...this.draggingColumn,\n range: newDraggingRange,\n };\n }\n\n return newMovedColumns;\n }\n\n onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n this.cursor = null;\n\n this.clearScrollInterval();\n\n if (this.draggingOffset != null) {\n this.draggingOffset = undefined;\n grid.setState({\n draggingColumn: null,\n isDragging: false,\n });\n return true;\n }\n\n return false;\n }\n}\n\nexport default GridColumnMoveMouseHandler;\n"],"mappings":"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"}
|
|
@@ -1,47 +1,29 @@
|
|
|
1
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
-
|
|
3
2
|
/* eslint class-methods-use-this: "off" */
|
|
4
3
|
import GridUtils from "../GridUtils.js";
|
|
5
4
|
import GridSeparatorMouseHandler from "./GridSeparatorMouseHandler.js";
|
|
6
|
-
|
|
7
5
|
class GridColumnSeparatorMouseHandler extends GridSeparatorMouseHandler {
|
|
8
6
|
constructor() {
|
|
9
7
|
super(...arguments);
|
|
10
|
-
|
|
11
8
|
_defineProperty(this, "hiddenCursor", 'e-resize');
|
|
12
|
-
|
|
13
9
|
_defineProperty(this, "defaultCursor", 'col-resize');
|
|
14
|
-
|
|
15
10
|
_defineProperty(this, "pointProperty", 'x');
|
|
16
|
-
|
|
17
11
|
_defineProperty(this, "userSizesProperty", 'userColumnWidths');
|
|
18
|
-
|
|
19
12
|
_defineProperty(this, "visibleOffsetProperty", 'visibleColumnXs');
|
|
20
|
-
|
|
21
13
|
_defineProperty(this, "visibleSizesProperty", 'visibleColumnWidths');
|
|
22
|
-
|
|
23
14
|
_defineProperty(this, "marginProperty", 'rowHeaderWidth');
|
|
24
|
-
|
|
25
15
|
_defineProperty(this, "calculatedSizesProperty", 'calculatedColumnWidths');
|
|
26
|
-
|
|
27
16
|
_defineProperty(this, "modelIndexesProperty", 'modelColumns');
|
|
28
|
-
|
|
29
17
|
_defineProperty(this, "firstIndexProperty", 'firstColumn');
|
|
30
|
-
|
|
31
18
|
_defineProperty(this, "treePaddingProperty", 'treePaddingX');
|
|
32
|
-
|
|
33
19
|
_defineProperty(this, "getHiddenItems", GridUtils.getHiddenColumns);
|
|
34
|
-
|
|
35
20
|
_defineProperty(this, "getNextShownItem", GridUtils.getNextShownColumn);
|
|
36
|
-
|
|
37
21
|
_defineProperty(this, "getSeparator", GridColumnSeparatorMouseHandler.getColumnSeparator);
|
|
38
22
|
}
|
|
39
|
-
|
|
40
23
|
static getColumnSeparator(gridPoint, metrics, model, theme) {
|
|
41
24
|
if (!theme.allowColumnResize) {
|
|
42
25
|
return null;
|
|
43
26
|
}
|
|
44
|
-
|
|
45
27
|
var {
|
|
46
28
|
x,
|
|
47
29
|
y,
|
|
@@ -50,40 +32,33 @@ class GridColumnSeparatorMouseHandler extends GridSeparatorMouseHandler {
|
|
|
50
32
|
var {
|
|
51
33
|
modelColumns
|
|
52
34
|
} = metrics;
|
|
53
|
-
var separatorIndex = GridUtils.getColumnSeparatorIndex(x, y, metrics, theme);
|
|
35
|
+
var separatorIndex = GridUtils.getColumnSeparatorIndex(x, y, metrics, theme);
|
|
54
36
|
|
|
37
|
+
// TODO #695: Allow resizing of column groups as well. Right now just allow resizing from base columns
|
|
55
38
|
if (separatorIndex == null || columnHeaderDepth == null || columnHeaderDepth > 0) {
|
|
56
39
|
return null;
|
|
57
40
|
}
|
|
58
|
-
|
|
59
41
|
var columnIndex = modelColumns.get(separatorIndex);
|
|
60
|
-
|
|
61
42
|
if (columnIndex != null) {
|
|
62
43
|
return {
|
|
63
44
|
index: separatorIndex,
|
|
64
45
|
depth: 0
|
|
65
46
|
};
|
|
66
47
|
}
|
|
67
|
-
|
|
68
48
|
return null;
|
|
69
49
|
}
|
|
70
|
-
|
|
71
50
|
setSize(metricCalculator, modelIndex, size) {
|
|
72
51
|
metricCalculator.setColumnWidth(modelIndex, size);
|
|
73
52
|
}
|
|
74
|
-
|
|
75
53
|
resetSize(metricCalculator, modelIndex) {
|
|
76
54
|
metricCalculator.resetColumnWidth(modelIndex);
|
|
77
55
|
}
|
|
78
|
-
|
|
79
56
|
updateSeparator(grid, separator) {
|
|
80
57
|
grid.setState({
|
|
81
58
|
draggingColumnSeparator: separator,
|
|
82
59
|
isDragging: separator !== null
|
|
83
60
|
});
|
|
84
61
|
}
|
|
85
|
-
|
|
86
62
|
}
|
|
87
|
-
|
|
88
63
|
export default GridColumnSeparatorMouseHandler;
|
|
89
64
|
//# sourceMappingURL=GridColumnSeparatorMouseHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridColumnSeparatorMouseHandler.js","names":["GridUtils","GridSeparatorMouseHandler","GridColumnSeparatorMouseHandler","getHiddenColumns","getNextShownColumn","getColumnSeparator","gridPoint","metrics","model","theme","allowColumnResize","x","y","columnHeaderDepth","modelColumns","separatorIndex","getColumnSeparatorIndex","columnIndex","get","index","depth","setSize","metricCalculator","modelIndex","size","setColumnWidth","resetSize","resetColumnWidth","updateSeparator","grid","separator","setState","draggingColumnSeparator","isDragging"],"sources":["../../src/mouse-handlers/GridColumnSeparatorMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport Grid from '../Grid';\nimport GridMetricCalculator from '../GridMetricCalculator';\nimport type { ModelIndex, GridMetrics } from '../GridMetrics';\nimport type GridModel from '../GridModel';\nimport type { GridTheme } from '../GridTheme';\nimport GridUtils, { GridPoint } from '../GridUtils';\nimport GridSeparatorMouseHandler, {\n GridSeparator,\n} from './GridSeparatorMouseHandler';\n\nclass GridColumnSeparatorMouseHandler extends GridSeparatorMouseHandler {\n static getColumnSeparator(\n gridPoint: GridPoint,\n metrics: GridMetrics,\n model: GridModel,\n theme: GridTheme\n ): GridSeparator | null {\n if (!theme.allowColumnResize) {\n return null;\n }\n\n const { x, y, columnHeaderDepth } = gridPoint;\n\n const { modelColumns } = metrics;\n\n const separatorIndex = GridUtils.getColumnSeparatorIndex(\n x,\n y,\n metrics,\n theme\n );\n\n // TODO #695: Allow resizing of column groups as well. Right now just allow resizing from base columns\n if (\n separatorIndex == null ||\n columnHeaderDepth == null ||\n columnHeaderDepth > 0\n ) {\n return null;\n }\n\n const columnIndex = modelColumns.get(separatorIndex);\n if (columnIndex != null) {\n return { index: separatorIndex, depth: 0 };\n }\n\n return null;\n }\n\n hiddenCursor = 'e-resize';\n\n defaultCursor = 'col-resize';\n\n pointProperty = 'x' as const;\n\n userSizesProperty = 'userColumnWidths' as const;\n\n visibleOffsetProperty = 'visibleColumnXs' as const;\n\n visibleSizesProperty = 'visibleColumnWidths' as const;\n\n marginProperty = 'rowHeaderWidth' as const;\n\n calculatedSizesProperty = 'calculatedColumnWidths' as const;\n\n modelIndexesProperty = 'modelColumns' as const;\n\n firstIndexProperty = 'firstColumn' as const;\n\n treePaddingProperty = 'treePaddingX' as const;\n\n getHiddenItems = GridUtils.getHiddenColumns;\n\n getNextShownItem = GridUtils.getNextShownColumn;\n\n setSize(\n metricCalculator: GridMetricCalculator,\n modelIndex: ModelIndex,\n size: number\n ): void {\n metricCalculator.setColumnWidth(modelIndex, size);\n }\n\n resetSize(\n metricCalculator: GridMetricCalculator,\n modelIndex: ModelIndex\n ): void {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n\n updateSeparator(grid: Grid, separator: GridSeparator | null): void {\n grid.setState({\n draggingColumnSeparator: separator,\n isDragging: separator !== null,\n });\n }\n\n getSeparator = GridColumnSeparatorMouseHandler.getColumnSeparator;\n}\n\nexport default GridColumnSeparatorMouseHandler;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"GridColumnSeparatorMouseHandler.js","names":["GridUtils","GridSeparatorMouseHandler","GridColumnSeparatorMouseHandler","getHiddenColumns","getNextShownColumn","getColumnSeparator","gridPoint","metrics","model","theme","allowColumnResize","x","y","columnHeaderDepth","modelColumns","separatorIndex","getColumnSeparatorIndex","columnIndex","get","index","depth","setSize","metricCalculator","modelIndex","size","setColumnWidth","resetSize","resetColumnWidth","updateSeparator","grid","separator","setState","draggingColumnSeparator","isDragging"],"sources":["../../src/mouse-handlers/GridColumnSeparatorMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport Grid from '../Grid';\nimport GridMetricCalculator from '../GridMetricCalculator';\nimport type { ModelIndex, GridMetrics } from '../GridMetrics';\nimport type GridModel from '../GridModel';\nimport type { GridTheme } from '../GridTheme';\nimport GridUtils, { GridPoint } from '../GridUtils';\nimport GridSeparatorMouseHandler, {\n GridSeparator,\n} from './GridSeparatorMouseHandler';\n\nclass GridColumnSeparatorMouseHandler extends GridSeparatorMouseHandler {\n static getColumnSeparator(\n gridPoint: GridPoint,\n metrics: GridMetrics,\n model: GridModel,\n theme: GridTheme\n ): GridSeparator | null {\n if (!theme.allowColumnResize) {\n return null;\n }\n\n const { x, y, columnHeaderDepth } = gridPoint;\n\n const { modelColumns } = metrics;\n\n const separatorIndex = GridUtils.getColumnSeparatorIndex(\n x,\n y,\n metrics,\n theme\n );\n\n // TODO #695: Allow resizing of column groups as well. Right now just allow resizing from base columns\n if (\n separatorIndex == null ||\n columnHeaderDepth == null ||\n columnHeaderDepth > 0\n ) {\n return null;\n }\n\n const columnIndex = modelColumns.get(separatorIndex);\n if (columnIndex != null) {\n return { index: separatorIndex, depth: 0 };\n }\n\n return null;\n }\n\n hiddenCursor = 'e-resize';\n\n defaultCursor = 'col-resize';\n\n pointProperty = 'x' as const;\n\n userSizesProperty = 'userColumnWidths' as const;\n\n visibleOffsetProperty = 'visibleColumnXs' as const;\n\n visibleSizesProperty = 'visibleColumnWidths' as const;\n\n marginProperty = 'rowHeaderWidth' as const;\n\n calculatedSizesProperty = 'calculatedColumnWidths' as const;\n\n modelIndexesProperty = 'modelColumns' as const;\n\n firstIndexProperty = 'firstColumn' as const;\n\n treePaddingProperty = 'treePaddingX' as const;\n\n getHiddenItems = GridUtils.getHiddenColumns;\n\n getNextShownItem = GridUtils.getNextShownColumn;\n\n setSize(\n metricCalculator: GridMetricCalculator,\n modelIndex: ModelIndex,\n size: number\n ): void {\n metricCalculator.setColumnWidth(modelIndex, size);\n }\n\n resetSize(\n metricCalculator: GridMetricCalculator,\n modelIndex: ModelIndex\n ): void {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n\n updateSeparator(grid: Grid, separator: GridSeparator | null): void {\n grid.setState({\n draggingColumnSeparator: separator,\n isDragging: separator !== null,\n });\n }\n\n getSeparator = GridColumnSeparatorMouseHandler.getColumnSeparator;\n}\n\nexport default GridColumnSeparatorMouseHandler;\n"],"mappings":";AAAA;AAAA,OAMOA,SAAS;AAAA,OACTC,yBAAyB;AAIhC,MAAMC,+BAA+B,SAASD,yBAAyB,CAAC;EAAA;IAAA;IAAA,sCAuCvD,UAAU;IAAA,uCAET,YAAY;IAAA,uCAEZ,GAAG;IAAA,2CAEC,kBAAkB;IAAA,+CAEd,iBAAiB;IAAA,8CAElB,qBAAqB;IAAA,wCAE3B,gBAAgB;IAAA,iDAEP,wBAAwB;IAAA,8CAE3B,cAAc;IAAA,4CAEhB,aAAa;IAAA,6CAEZ,cAAc;IAAA,wCAEnBD,SAAS,CAACG,gBAAgB;IAAA,0CAExBH,SAAS,CAACI,kBAAkB;IAAA,sCAwBhCF,+BAA+B,CAACG,kBAAkB;EAAA;EAtFjE,OAAOA,kBAAkB,CACvBC,SAAoB,EACpBC,OAAoB,EACpBC,KAAgB,EAChBC,KAAgB,EACM;IACtB,IAAI,CAACA,KAAK,CAACC,iBAAiB,EAAE;MAC5B,OAAO,IAAI;IACb;IAEA,IAAM;MAAEC,CAAC;MAAEC,CAAC;MAAEC;IAAkB,CAAC,GAAGP,SAAS;IAE7C,IAAM;MAAEQ;IAAa,CAAC,GAAGP,OAAO;IAEhC,IAAMQ,cAAc,GAAGf,SAAS,CAACgB,uBAAuB,CACtDL,CAAC,EACDC,CAAC,EACDL,OAAO,EACPE,KAAK,CACN;;IAED;IACA,IACEM,cAAc,IAAI,IAAI,IACtBF,iBAAiB,IAAI,IAAI,IACzBA,iBAAiB,GAAG,CAAC,EACrB;MACA,OAAO,IAAI;IACb;IAEA,IAAMI,WAAW,GAAGH,YAAY,CAACI,GAAG,CAACH,cAAc,CAAC;IACpD,IAAIE,WAAW,IAAI,IAAI,EAAE;MACvB,OAAO;QAAEE,KAAK,EAAEJ,cAAc;QAAEK,KAAK,EAAE;MAAE,CAAC;IAC5C;IAEA,OAAO,IAAI;EACb;EA4BAC,OAAO,CACLC,gBAAsC,EACtCC,UAAsB,EACtBC,IAAY,EACN;IACNF,gBAAgB,CAACG,cAAc,CAACF,UAAU,EAAEC,IAAI,CAAC;EACnD;EAEAE,SAAS,CACPJ,gBAAsC,EACtCC,UAAsB,EAChB;IACND,gBAAgB,CAACK,gBAAgB,CAACJ,UAAU,CAAC;EAC/C;EAEAK,eAAe,CAACC,IAAU,EAAEC,SAA+B,EAAQ;IACjED,IAAI,CAACE,QAAQ,CAAC;MACZC,uBAAuB,EAAEF,SAAS;MAClCG,UAAU,EAAEH,SAAS,KAAK;IAC5B,CAAC,CAAC;EACJ;AAGF;AAEA,eAAe5B,+BAA+B"}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
-
|
|
3
2
|
import clamp from 'lodash.clamp';
|
|
4
3
|
import GridMouseHandler from "../GridMouseHandler.js";
|
|
5
|
-
|
|
6
4
|
/* eslint class-methods-use-this: "off" */
|
|
7
5
|
class GridHorizontalScrollBarMouseHandler extends GridMouseHandler {
|
|
8
6
|
constructor() {
|
|
9
7
|
super(...arguments);
|
|
10
|
-
|
|
11
8
|
_defineProperty(this, "dragOffset", void 0);
|
|
12
|
-
|
|
13
9
|
_defineProperty(this, "cursor", 'default');
|
|
14
10
|
}
|
|
15
|
-
|
|
16
11
|
static getLeftWithOffsetFromRawLeft(grid, rawLeft) {
|
|
17
12
|
var theme = grid.getTheme();
|
|
18
13
|
var {
|
|
@@ -20,33 +15,27 @@ class GridHorizontalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
20
15
|
metricCalculator
|
|
21
16
|
} = grid;
|
|
22
17
|
if (!metrics) throw new Error('metrics not set');
|
|
23
|
-
|
|
24
18
|
if (theme.scrollSnapToColumn) {
|
|
25
19
|
var _left = Math.round(rawLeft);
|
|
26
|
-
|
|
27
20
|
var _leftOffset = 0;
|
|
28
21
|
return {
|
|
29
22
|
left: _left,
|
|
30
23
|
leftOffset: _leftOffset
|
|
31
24
|
};
|
|
32
25
|
}
|
|
33
|
-
|
|
34
26
|
var left = Math.floor(rawLeft);
|
|
35
27
|
var leftOffsetPercent = rawLeft - left;
|
|
36
28
|
var columnWidth = metrics.visibleColumnWidths.get(left);
|
|
37
|
-
|
|
38
29
|
if (columnWidth == null) {
|
|
39
30
|
var metricState = grid.getMetricState();
|
|
40
31
|
columnWidth = metricCalculator.getVisibleColumnWidth(left, metricState);
|
|
41
32
|
}
|
|
42
|
-
|
|
43
33
|
var leftOffset = columnWidth * leftOffsetPercent;
|
|
44
34
|
return {
|
|
45
35
|
left,
|
|
46
36
|
leftOffset
|
|
47
37
|
};
|
|
48
38
|
}
|
|
49
|
-
|
|
50
39
|
isInScrollBar(gridPoint, grid) {
|
|
51
40
|
var theme = grid.getTheme();
|
|
52
41
|
var {
|
|
@@ -69,10 +58,8 @@ class GridHorizontalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
69
58
|
} = metrics;
|
|
70
59
|
return hasHorizontalBar && scrollBarSize > 0 && y >= height - scrollBarHoverSize && y < height && x > barLeft && x < barLeft + barWidth;
|
|
71
60
|
}
|
|
72
|
-
|
|
73
61
|
getLeftWithOffset(gridPoint, grid) {
|
|
74
62
|
var _this$dragOffset;
|
|
75
|
-
|
|
76
63
|
var {
|
|
77
64
|
metrics
|
|
78
65
|
} = grid;
|
|
@@ -91,18 +78,15 @@ class GridHorizontalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
91
78
|
} = metrics;
|
|
92
79
|
var mouseBarX = x - barLeft;
|
|
93
80
|
var scrollPercent = clamp((mouseBarX - ((_this$dragOffset = this.dragOffset) !== null && _this$dragOffset !== void 0 ? _this$dragOffset : 0)) / (barWidth - handleWidth), 0, 1);
|
|
94
|
-
|
|
95
81
|
if (columnCount === 1) {
|
|
96
82
|
return {
|
|
97
83
|
left: 0,
|
|
98
84
|
leftOffset: scrollPercent * (scrollableContentWidth - scrollableViewportWidth)
|
|
99
85
|
};
|
|
100
86
|
}
|
|
101
|
-
|
|
102
87
|
var rawLeft = scrollPercent * lastLeft;
|
|
103
88
|
return GridHorizontalScrollBarMouseHandler.getLeftWithOffsetFromRawLeft(grid, rawLeft);
|
|
104
89
|
}
|
|
105
|
-
|
|
106
90
|
onDown(gridPoint, grid) {
|
|
107
91
|
var {
|
|
108
92
|
metrics
|
|
@@ -116,13 +100,10 @@ class GridHorizontalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
116
100
|
barLeft,
|
|
117
101
|
scrollX
|
|
118
102
|
} = metrics;
|
|
119
|
-
|
|
120
103
|
if (!this.isInScrollBar(gridPoint, grid)) {
|
|
121
104
|
return false;
|
|
122
105
|
}
|
|
123
|
-
|
|
124
106
|
var mouseBarX = x - barLeft;
|
|
125
|
-
|
|
126
107
|
if (mouseBarX >= scrollX && mouseBarX <= scrollX + handleWidth) {
|
|
127
108
|
// Grabbed the horizontal handle
|
|
128
109
|
this.dragOffset = mouseBarX - scrollX;
|
|
@@ -142,10 +123,8 @@ class GridHorizontalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
142
123
|
isDragging: true
|
|
143
124
|
});
|
|
144
125
|
}
|
|
145
|
-
|
|
146
126
|
return true;
|
|
147
127
|
}
|
|
148
|
-
|
|
149
128
|
onDrag(gridPoint, grid) {
|
|
150
129
|
if (this.dragOffset != null) {
|
|
151
130
|
var {
|
|
@@ -160,14 +139,11 @@ class GridHorizontalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
160
139
|
});
|
|
161
140
|
return true;
|
|
162
141
|
}
|
|
163
|
-
|
|
164
142
|
return false;
|
|
165
143
|
}
|
|
166
|
-
|
|
167
144
|
onMove(gridPoint, grid) {
|
|
168
145
|
return this.isInScrollBar(gridPoint, grid);
|
|
169
146
|
}
|
|
170
|
-
|
|
171
147
|
onUp(gridPoint, grid) {
|
|
172
148
|
if (this.dragOffset !== undefined) {
|
|
173
149
|
this.dragOffset = undefined;
|
|
@@ -176,15 +152,11 @@ class GridHorizontalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
176
152
|
isDragging: false
|
|
177
153
|
});
|
|
178
154
|
}
|
|
179
|
-
|
|
180
155
|
return this.isInScrollBar(gridPoint, grid);
|
|
181
156
|
}
|
|
182
|
-
|
|
183
157
|
onClick(gridPoint, grid) {
|
|
184
158
|
return this.isInScrollBar(gridPoint, grid);
|
|
185
159
|
}
|
|
186
|
-
|
|
187
160
|
}
|
|
188
|
-
|
|
189
161
|
export default GridHorizontalScrollBarMouseHandler;
|
|
190
162
|
//# sourceMappingURL=GridHorizontalScrollBarMouseHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridHorizontalScrollBarMouseHandler.js","names":["clamp","GridMouseHandler","GridHorizontalScrollBarMouseHandler","getLeftWithOffsetFromRawLeft","grid","rawLeft","theme","getTheme","metrics","metricCalculator","Error","scrollSnapToColumn","left","Math","round","leftOffset","floor","leftOffsetPercent","columnWidth","visibleColumnWidths","get","metricState","getMetricState","getVisibleColumnWidth","isInScrollBar","gridPoint","scrollBarSize","scrollBarHoverSize","x","y","barLeft","barWidth","height","hasHorizontalBar","getLeftWithOffset","handleWidth","lastLeft","columnCount","scrollableContentWidth","scrollableViewportWidth","mouseBarX","scrollPercent","dragOffset","onDown","scrollX","setState","isDraggingHorizontalScrollBar","newLeft","newLeftOffset","setViewState","isDragging","onDrag","onMove","onUp","undefined","onClick"],"sources":["../../src/mouse-handlers/GridHorizontalScrollBarMouseHandler.ts"],"sourcesContent":["import clamp from 'lodash.clamp';\nimport { EventHandlerResult } from '../EventHandlerResult';\nimport Grid from '../Grid';\nimport { VisibleIndex } from '../GridMetrics';\nimport GridMouseHandler from '../GridMouseHandler';\nimport { GridPoint } from '../GridUtils';\n\n/* eslint class-methods-use-this: \"off\" */\nclass GridHorizontalScrollBarMouseHandler extends GridMouseHandler {\n static getLeftWithOffsetFromRawLeft(\n grid: Grid,\n rawLeft: number\n ): { left: VisibleIndex; leftOffset: number } {\n const theme = grid.getTheme();\n const { metrics, metricCalculator } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n if (theme.scrollSnapToColumn) {\n const left = Math.round(rawLeft);\n const leftOffset = 0;\n\n return { left, leftOffset };\n }\n const left = Math.floor(rawLeft);\n const leftOffsetPercent = rawLeft - left;\n let columnWidth = metrics.visibleColumnWidths.get(left);\n if (columnWidth == null) {\n const metricState = grid.getMetricState();\n columnWidth = metricCalculator.getVisibleColumnWidth(left, metricState);\n }\n const leftOffset = columnWidth * leftOffsetPercent;\n\n return { left, leftOffset };\n }\n\n private dragOffset?: number;\n\n // to trigger pointer event blocking\n cursor = 'default';\n\n isInScrollBar(gridPoint: GridPoint, grid: Grid): boolean {\n const theme = grid.getTheme();\n\n const { scrollBarSize, scrollBarHoverSize } = theme;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { x, y } = gridPoint;\n const { barLeft, barWidth, height, hasHorizontalBar } = metrics;\n\n return (\n hasHorizontalBar &&\n scrollBarSize > 0 &&\n y >= height - scrollBarHoverSize &&\n y < height &&\n x > barLeft &&\n x < barLeft + barWidth\n );\n }\n\n getLeftWithOffset(\n gridPoint: GridPoint,\n grid: Grid\n ): { left: number; leftOffset: number } {\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { x } = gridPoint;\n const {\n barWidth,\n handleWidth,\n lastLeft,\n barLeft,\n columnCount,\n scrollableContentWidth,\n scrollableViewportWidth,\n } = metrics;\n\n const mouseBarX = x - barLeft;\n const scrollPercent = clamp(\n (mouseBarX - (this.dragOffset ?? 0)) / (barWidth - handleWidth),\n 0,\n 1\n );\n\n if (columnCount === 1) {\n return {\n left: 0,\n leftOffset:\n scrollPercent * (scrollableContentWidth - scrollableViewportWidth),\n };\n }\n\n const rawLeft = scrollPercent * lastLeft;\n return GridHorizontalScrollBarMouseHandler.getLeftWithOffsetFromRawLeft(\n grid,\n rawLeft\n );\n }\n\n onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { x } = gridPoint;\n const { handleWidth, barLeft, scrollX } = metrics;\n if (!this.isInScrollBar(gridPoint, grid)) {\n return false;\n }\n\n const mouseBarX = x - barLeft;\n if (mouseBarX >= scrollX && mouseBarX <= scrollX + handleWidth) {\n // Grabbed the horizontal handle\n this.dragOffset = mouseBarX - scrollX;\n grid.setState({ isDraggingHorizontalScrollBar: true });\n } else {\n this.dragOffset = 0;\n\n const {\n left: newLeft,\n leftOffset: newLeftOffset,\n } = this.getLeftWithOffset(gridPoint, grid);\n\n grid.setViewState({\n left: newLeft,\n leftOffset: newLeftOffset,\n isDraggingHorizontalScrollBar: true,\n isDragging: true,\n });\n }\n\n return true;\n }\n\n onDrag(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.dragOffset != null) {\n const {\n left: newLeft,\n leftOffset: newLeftOffset,\n } = this.getLeftWithOffset(gridPoint, grid);\n\n grid.setViewState({\n left: newLeft,\n leftOffset: newLeftOffset,\n isDraggingHorizontalScrollBar: true,\n isDragging: true,\n });\n\n return true;\n }\n return false;\n }\n\n onMove(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n return this.isInScrollBar(gridPoint, grid);\n }\n\n onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.dragOffset !== undefined) {\n this.dragOffset = undefined;\n grid.setState({\n isDraggingHorizontalScrollBar: false,\n isDragging: false,\n });\n }\n\n return this.isInScrollBar(gridPoint, grid);\n }\n\n onClick(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n return this.isInScrollBar(gridPoint, grid);\n }\n}\n\nexport default GridHorizontalScrollBarMouseHandler;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"GridHorizontalScrollBarMouseHandler.js","names":["clamp","GridMouseHandler","GridHorizontalScrollBarMouseHandler","getLeftWithOffsetFromRawLeft","grid","rawLeft","theme","getTheme","metrics","metricCalculator","Error","scrollSnapToColumn","left","Math","round","leftOffset","floor","leftOffsetPercent","columnWidth","visibleColumnWidths","get","metricState","getMetricState","getVisibleColumnWidth","isInScrollBar","gridPoint","scrollBarSize","scrollBarHoverSize","x","y","barLeft","barWidth","height","hasHorizontalBar","getLeftWithOffset","handleWidth","lastLeft","columnCount","scrollableContentWidth","scrollableViewportWidth","mouseBarX","scrollPercent","dragOffset","onDown","scrollX","setState","isDraggingHorizontalScrollBar","newLeft","newLeftOffset","setViewState","isDragging","onDrag","onMove","onUp","undefined","onClick"],"sources":["../../src/mouse-handlers/GridHorizontalScrollBarMouseHandler.ts"],"sourcesContent":["import clamp from 'lodash.clamp';\nimport { EventHandlerResult } from '../EventHandlerResult';\nimport Grid from '../Grid';\nimport { VisibleIndex } from '../GridMetrics';\nimport GridMouseHandler from '../GridMouseHandler';\nimport { GridPoint } from '../GridUtils';\n\n/* eslint class-methods-use-this: \"off\" */\nclass GridHorizontalScrollBarMouseHandler extends GridMouseHandler {\n static getLeftWithOffsetFromRawLeft(\n grid: Grid,\n rawLeft: number\n ): { left: VisibleIndex; leftOffset: number } {\n const theme = grid.getTheme();\n const { metrics, metricCalculator } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n if (theme.scrollSnapToColumn) {\n const left = Math.round(rawLeft);\n const leftOffset = 0;\n\n return { left, leftOffset };\n }\n const left = Math.floor(rawLeft);\n const leftOffsetPercent = rawLeft - left;\n let columnWidth = metrics.visibleColumnWidths.get(left);\n if (columnWidth == null) {\n const metricState = grid.getMetricState();\n columnWidth = metricCalculator.getVisibleColumnWidth(left, metricState);\n }\n const leftOffset = columnWidth * leftOffsetPercent;\n\n return { left, leftOffset };\n }\n\n private dragOffset?: number;\n\n // to trigger pointer event blocking\n cursor = 'default';\n\n isInScrollBar(gridPoint: GridPoint, grid: Grid): boolean {\n const theme = grid.getTheme();\n\n const { scrollBarSize, scrollBarHoverSize } = theme;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { x, y } = gridPoint;\n const { barLeft, barWidth, height, hasHorizontalBar } = metrics;\n\n return (\n hasHorizontalBar &&\n scrollBarSize > 0 &&\n y >= height - scrollBarHoverSize &&\n y < height &&\n x > barLeft &&\n x < barLeft + barWidth\n );\n }\n\n getLeftWithOffset(\n gridPoint: GridPoint,\n grid: Grid\n ): { left: number; leftOffset: number } {\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { x } = gridPoint;\n const {\n barWidth,\n handleWidth,\n lastLeft,\n barLeft,\n columnCount,\n scrollableContentWidth,\n scrollableViewportWidth,\n } = metrics;\n\n const mouseBarX = x - barLeft;\n const scrollPercent = clamp(\n (mouseBarX - (this.dragOffset ?? 0)) / (barWidth - handleWidth),\n 0,\n 1\n );\n\n if (columnCount === 1) {\n return {\n left: 0,\n leftOffset:\n scrollPercent * (scrollableContentWidth - scrollableViewportWidth),\n };\n }\n\n const rawLeft = scrollPercent * lastLeft;\n return GridHorizontalScrollBarMouseHandler.getLeftWithOffsetFromRawLeft(\n grid,\n rawLeft\n );\n }\n\n onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { x } = gridPoint;\n const { handleWidth, barLeft, scrollX } = metrics;\n if (!this.isInScrollBar(gridPoint, grid)) {\n return false;\n }\n\n const mouseBarX = x - barLeft;\n if (mouseBarX >= scrollX && mouseBarX <= scrollX + handleWidth) {\n // Grabbed the horizontal handle\n this.dragOffset = mouseBarX - scrollX;\n grid.setState({ isDraggingHorizontalScrollBar: true });\n } else {\n this.dragOffset = 0;\n\n const {\n left: newLeft,\n leftOffset: newLeftOffset,\n } = this.getLeftWithOffset(gridPoint, grid);\n\n grid.setViewState({\n left: newLeft,\n leftOffset: newLeftOffset,\n isDraggingHorizontalScrollBar: true,\n isDragging: true,\n });\n }\n\n return true;\n }\n\n onDrag(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.dragOffset != null) {\n const {\n left: newLeft,\n leftOffset: newLeftOffset,\n } = this.getLeftWithOffset(gridPoint, grid);\n\n grid.setViewState({\n left: newLeft,\n leftOffset: newLeftOffset,\n isDraggingHorizontalScrollBar: true,\n isDragging: true,\n });\n\n return true;\n }\n return false;\n }\n\n onMove(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n return this.isInScrollBar(gridPoint, grid);\n }\n\n onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.dragOffset !== undefined) {\n this.dragOffset = undefined;\n grid.setState({\n isDraggingHorizontalScrollBar: false,\n isDragging: false,\n });\n }\n\n return this.isInScrollBar(gridPoint, grid);\n }\n\n onClick(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n return this.isInScrollBar(gridPoint, grid);\n }\n}\n\nexport default GridHorizontalScrollBarMouseHandler;\n"],"mappings":"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"}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
-
|
|
3
2
|
import { getOrThrow } from "../GridMetricCalculator.js";
|
|
4
3
|
import GridMouseHandler from "../GridMouseHandler.js";
|
|
5
4
|
import GridUtils from "../GridUtils.js";
|
|
6
|
-
|
|
7
5
|
class GridRowMoveMouseHandler extends GridMouseHandler {
|
|
8
6
|
constructor() {
|
|
9
7
|
super(...arguments);
|
|
10
|
-
|
|
11
8
|
_defineProperty(this, "cursor", 'move');
|
|
12
|
-
|
|
13
9
|
_defineProperty(this, "draggingOffset", void 0);
|
|
14
10
|
}
|
|
15
|
-
|
|
16
11
|
onDown(gridPoint, grid) {
|
|
17
12
|
var {
|
|
18
13
|
model
|
|
@@ -31,7 +26,6 @@ class GridRowMoveMouseHandler extends GridMouseHandler {
|
|
|
31
26
|
rowHeaderWidth,
|
|
32
27
|
visibleRowYs
|
|
33
28
|
} = metrics;
|
|
34
|
-
|
|
35
29
|
if (x <= rowHeaderWidth && row !== null && model.isRowMovable(row)) {
|
|
36
30
|
var rowY = getOrThrow(visibleRowYs, row);
|
|
37
31
|
this.draggingOffset = y - rowY - columnHeaderHeight;
|
|
@@ -39,15 +33,12 @@ class GridRowMoveMouseHandler extends GridMouseHandler {
|
|
|
39
33
|
draggingRowOffset: this.draggingOffset
|
|
40
34
|
});
|
|
41
35
|
}
|
|
42
|
-
|
|
43
36
|
return false;
|
|
44
37
|
}
|
|
45
|
-
|
|
46
38
|
onDrag(gridPoint, grid) {
|
|
47
39
|
if (this.draggingOffset == null) {
|
|
48
40
|
return false;
|
|
49
41
|
}
|
|
50
|
-
|
|
51
42
|
var {
|
|
52
43
|
model
|
|
53
44
|
} = grid.props;
|
|
@@ -58,31 +49,25 @@ class GridRowMoveMouseHandler extends GridMouseHandler {
|
|
|
58
49
|
mouseX,
|
|
59
50
|
mouseY
|
|
60
51
|
} = grid.state;
|
|
61
|
-
|
|
62
52
|
if (mouseX == null || mouseY == null) {
|
|
63
53
|
return false;
|
|
64
54
|
}
|
|
65
|
-
|
|
66
55
|
if (draggingRow == null) {
|
|
67
56
|
var {
|
|
68
57
|
row
|
|
69
58
|
} = grid.getGridPointFromXY(mouseX, mouseY);
|
|
70
|
-
|
|
71
59
|
if (row != null && !model.isRowMovable(row)) {
|
|
72
60
|
return false;
|
|
73
61
|
}
|
|
74
|
-
|
|
75
62
|
draggingRow = row;
|
|
76
63
|
grid.setState({
|
|
77
64
|
draggingRow,
|
|
78
65
|
isDragging: true
|
|
79
66
|
});
|
|
80
|
-
|
|
81
67
|
if (draggingRow == null) {
|
|
82
68
|
return false;
|
|
83
69
|
}
|
|
84
70
|
}
|
|
85
|
-
|
|
86
71
|
var {
|
|
87
72
|
metrics
|
|
88
73
|
} = grid;
|
|
@@ -99,23 +84,18 @@ class GridRowMoveMouseHandler extends GridMouseHandler {
|
|
|
99
84
|
height
|
|
100
85
|
} = metrics;
|
|
101
86
|
var minY = columnHeaderHeight;
|
|
102
|
-
|
|
103
87
|
if (top < draggingRow) {
|
|
104
88
|
var topRow = draggingRow - 1;
|
|
105
89
|
minY = getOrThrow(visibleRowYs, topRow) + getOrThrow(visibleRowHeights, topRow) * 0.5 + columnHeaderHeight;
|
|
106
90
|
}
|
|
107
|
-
|
|
108
91
|
var maxY = height;
|
|
109
|
-
|
|
110
92
|
if (draggingRow < bottom) {
|
|
111
93
|
var bottomRow = draggingRow + 1;
|
|
112
94
|
maxY = getOrThrow(visibleRowYs, bottomRow) + getOrThrow(visibleRowHeights, bottomRow) * 0.5 + columnHeaderHeight;
|
|
113
95
|
}
|
|
114
|
-
|
|
115
96
|
var {
|
|
116
97
|
movedRows
|
|
117
98
|
} = grid.state;
|
|
118
|
-
|
|
119
99
|
if (mouseY < minY && draggingRow > 0 && model.isRowMovable(draggingRow - 1)) {
|
|
120
100
|
movedRows = GridUtils.moveItem(draggingRow, draggingRow - 1, movedRows);
|
|
121
101
|
draggingRow -= 1;
|
|
@@ -123,14 +103,12 @@ class GridRowMoveMouseHandler extends GridMouseHandler {
|
|
|
123
103
|
movedRows = GridUtils.moveItem(draggingRow, draggingRow + 1, movedRows);
|
|
124
104
|
draggingRow += 1;
|
|
125
105
|
}
|
|
126
|
-
|
|
127
106
|
grid.setState({
|
|
128
107
|
movedRows,
|
|
129
108
|
draggingRow
|
|
130
109
|
});
|
|
131
110
|
var minMoveY = columnHeaderHeight + getOrThrow(visibleRowHeights, top) * 0.5;
|
|
132
111
|
var maxMoveY = columnHeaderHeight + getOrThrow(visibleRowYs, bottomVisible) + getOrThrow(visibleRowHeights, bottomVisible) * 0.5;
|
|
133
|
-
|
|
134
112
|
if (mouseY < minMoveY && top > 0) {
|
|
135
113
|
grid.setState({
|
|
136
114
|
top: top - 1
|
|
@@ -140,10 +118,8 @@ class GridRowMoveMouseHandler extends GridMouseHandler {
|
|
|
140
118
|
top: top + 1
|
|
141
119
|
});
|
|
142
120
|
}
|
|
143
|
-
|
|
144
121
|
return true;
|
|
145
122
|
}
|
|
146
|
-
|
|
147
123
|
onUp(gridPoint, grid) {
|
|
148
124
|
if (this.draggingOffset !== undefined) {
|
|
149
125
|
this.draggingOffset = undefined;
|
|
@@ -154,11 +130,8 @@ class GridRowMoveMouseHandler extends GridMouseHandler {
|
|
|
154
130
|
});
|
|
155
131
|
return true;
|
|
156
132
|
}
|
|
157
|
-
|
|
158
133
|
return false;
|
|
159
134
|
}
|
|
160
|
-
|
|
161
135
|
}
|
|
162
|
-
|
|
163
136
|
export default GridRowMoveMouseHandler;
|
|
164
137
|
//# sourceMappingURL=GridRowMoveMouseHandler.js.map
|