@deephaven/grid 0.15.1 → 0.15.2
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/ColumnHeaderGroup.d.ts +9 -0
- package/dist/ColumnHeaderGroup.d.ts.map +1 -0
- package/dist/ColumnHeaderGroup.js +2 -0
- package/dist/ColumnHeaderGroup.js.map +1 -0
- package/dist/Grid.d.ts +5 -4
- package/dist/Grid.d.ts.map +1 -1
- package/dist/Grid.js +5 -6
- package/dist/Grid.js.map +1 -1
- package/dist/GridAxisRange.d.ts +10 -0
- package/dist/GridAxisRange.d.ts.map +1 -0
- package/dist/GridAxisRange.js +17 -0
- package/dist/GridAxisRange.js.map +1 -0
- package/dist/GridMetricCalculator.d.ts +10 -8
- package/dist/GridMetricCalculator.d.ts.map +1 -1
- package/dist/GridMetricCalculator.js +38 -16
- package/dist/GridMetricCalculator.js.map +1 -1
- package/dist/GridMetrics.d.ts +8 -4
- package/dist/GridMetrics.d.ts.map +1 -1
- package/dist/GridModel.d.ts +20 -2
- package/dist/GridModel.d.ts.map +1 -1
- package/dist/GridModel.js +30 -2
- package/dist/GridModel.js.map +1 -1
- package/dist/GridMouseHandler.d.ts +0 -1
- package/dist/GridMouseHandler.d.ts.map +1 -1
- package/dist/GridRenderer.d.ts +33 -6
- package/dist/GridRenderer.d.ts.map +1 -1
- package/dist/GridRenderer.js +428 -179
- package/dist/GridRenderer.js.map +1 -1
- package/dist/GridUtils.d.ts +34 -24
- package/dist/GridUtils.d.ts.map +1 -1
- package/dist/GridUtils.js +99 -61
- package/dist/GridUtils.js.map +1 -1
- package/dist/MockGridModel.d.ts +1 -1
- package/dist/MockGridModel.d.ts.map +1 -1
- package/dist/MockGridModel.js +1 -0
- package/dist/MockGridModel.js.map +1 -1
- package/dist/MockTreeGridModel.d.ts +0 -1
- package/dist/MockTreeGridModel.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.d.ts +44 -4
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.js +486 -80
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.d.ts +7 -5
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js +26 -14
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.d.ts +7 -5
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js +11 -14
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridSeparatorMouseHandler.d.ts +11 -4
- package/dist/mouse-handlers/GridSeparatorMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridSeparatorMouseHandler.js +41 -31
- package/dist/mouse-handlers/GridSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/index.d.ts +1 -0
- package/dist/mouse-handlers/index.js +1 -0
- package/dist/mouse-handlers/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mouse-handlers/GridColumnMoveMouseHandler.ts"],"names":["GridUtils","GridMouseHandler","getOrThrow","SLOPPY_CLICK_DISTANCE","GridColumnMoveMouseHandler","onDown","gridPoint","grid","model","props","x","y","column","metrics","Error","columnHeaderHeight","rowHeaderWidth","visibleColumnXs","startingGridPoint","sloppyClickThreshold","cursor","isColumnMovable","getModelColumn","columnX","draggingOffset","setState","draggingColumnOffset","onDrag","undefined","draggingColumn","state","mouseX","mouseY","isDragging","Math","abs","getGridPointFromXY","left","lastLeft","right","rightVisible","columnCount","visibleColumnWidths","width","minX","leftColumn","maxX","rightColumn","movedColumns","moveItem","minMoveX","maxMoveX","onUp"],"mappings":"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","sourcesContent":["import Grid from '../Grid';\nimport GridUtils, { GridPoint } from '../GridUtils';\nimport GridMouseHandler from '../GridMouseHandler';\nimport { getOrThrow } from '../GridMetricCalculator';\nimport { EventHandlerResult } from '../EventHandlerResult';\n\nconst SLOPPY_CLICK_DISTANCE = 5;\n\nclass GridColumnMoveMouseHandler extends GridMouseHandler {\n cursor: string | null = null;\n\n private draggingOffset?: number;\n\n private startingGridPoint?: GridPoint;\n\n private sloppyClickThreshold = false;\n\n onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n const { model } = grid.props;\n const { x, y, column } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('Metrics not set');\n\n const { columnHeaderHeight, rowHeaderWidth, visibleColumnXs } = metrics;\n\n this.startingGridPoint = gridPoint;\n this.sloppyClickThreshold = false;\n this.cursor = null;\n\n if (\n column != null &&\n y <= columnHeaderHeight &&\n model.isColumnMovable(grid.getModelColumn(column))\n ) {\n const columnX = getOrThrow(visibleColumnXs, column);\n this.draggingOffset = x - columnX - rowHeaderWidth;\n grid.setState({ draggingColumnOffset: this.draggingOffset });\n }\n return false;\n }\n\n onDrag(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (\n this.draggingOffset === undefined ||\n this.startingGridPoint === undefined\n ) {\n return false;\n }\n\n const { model } = grid.props;\n let { draggingColumn } = grid.state;\n const { mouseX, mouseY, isDragging } = grid.state;\n if (mouseX == null || mouseY == null) {\n return false;\n }\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 (!this.sloppyClickThreshold &&\n Math.abs(this.startingGridPoint.x - mouseX) >= SLOPPY_CLICK_DISTANCE) ||\n Math.abs(this.startingGridPoint.y - mouseY) >= SLOPPY_CLICK_DISTANCE\n ) {\n this.sloppyClickThreshold = true;\n } else if (!this.sloppyClickThreshold && !isDragging) {\n return false;\n }\n\n if (draggingColumn == null) {\n const { column } = grid.getGridPointFromXY(mouseX, mouseY);\n if (\n column != null &&\n !model.isColumnMovable(grid.getModelColumn(column))\n ) {\n return false;\n }\n\n draggingColumn = column;\n\n grid.setState({ draggingColumn, isDragging: true });\n\n if (draggingColumn == null) {\n return false;\n }\n }\n\n this.cursor = 'move';\n const { metrics } = grid;\n if (!metrics) throw new Error('Metrics not set');\n\n const {\n left,\n lastLeft,\n right,\n rightVisible,\n columnCount,\n rowHeaderWidth,\n visibleColumnWidths,\n visibleColumnXs,\n width,\n } = metrics;\n let minX = rowHeaderWidth;\n if (left < draggingColumn) {\n const leftColumn = draggingColumn - 1;\n minX =\n getOrThrow(visibleColumnXs, leftColumn) +\n getOrThrow(visibleColumnWidths, leftColumn) * 0.5 +\n this.draggingOffset +\n rowHeaderWidth;\n }\n\n let maxX = width;\n if (draggingColumn < right) {\n const rightColumn = draggingColumn + 1;\n maxX =\n getOrThrow(visibleColumnXs, rightColumn) +\n getOrThrow(visibleColumnWidths, rightColumn) * 0.5 -\n getOrThrow(visibleColumnWidths, draggingColumn) +\n this.draggingOffset +\n rowHeaderWidth;\n }\n\n let { movedColumns } = grid.state;\n if (\n mouseX < minX &&\n draggingColumn > 0 &&\n model.isColumnMovable(grid.getModelColumn(draggingColumn - 1))\n ) {\n movedColumns = GridUtils.moveItem(\n draggingColumn,\n draggingColumn - 1,\n movedColumns\n );\n draggingColumn -= 1;\n } else if (\n maxX < mouseX &&\n draggingColumn < columnCount - 1 &&\n model.isColumnMovable(grid.getModelColumn(draggingColumn + 1))\n ) {\n movedColumns = GridUtils.moveItem(\n draggingColumn,\n draggingColumn + 1,\n movedColumns\n );\n draggingColumn += 1;\n }\n grid.setState({ movedColumns, draggingColumn });\n\n const minMoveX =\n rowHeaderWidth + getOrThrow(visibleColumnWidths, left) * 0.5;\n const maxMoveX =\n rowHeaderWidth +\n getOrThrow(visibleColumnXs, rightVisible) +\n getOrThrow(visibleColumnWidths, rightVisible) * 0.5;\n if (mouseX < minMoveX && left > 0) {\n grid.setState({ left: left - 1 });\n } else if (mouseX > maxMoveX && left < lastLeft) {\n grid.setState({ left: left + 1 });\n }\n\n return true;\n }\n\n onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n this.cursor = null;\n\n if (this.draggingOffset != null) {\n this.draggingOffset = undefined;\n grid.setState({\n draggingColumnOffset: null,\n draggingColumn: null,\n isDragging: false,\n });\n return true;\n }\n\n return false;\n }\n}\n\nexport default GridColumnMoveMouseHandler;\n"],"file":"GridColumnMoveMouseHandler.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/mouse-handlers/GridColumnMoveMouseHandler.ts"],"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"],"mappings":"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","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 || 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) {\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"],"file":"GridColumnMoveMouseHandler.js"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import Grid from '../Grid';
|
|
2
2
|
import GridMetricCalculator from '../GridMetricCalculator';
|
|
3
|
-
import { ModelIndex,
|
|
3
|
+
import type { ModelIndex, GridMetrics } from '../GridMetrics';
|
|
4
|
+
import type GridModel from '../GridModel';
|
|
5
|
+
import type { GridTheme } from '../GridTheme';
|
|
4
6
|
import GridUtils, { GridPoint } from '../GridUtils';
|
|
5
|
-
import GridSeparatorMouseHandler from './GridSeparatorMouseHandler';
|
|
7
|
+
import GridSeparatorMouseHandler, { GridSeparator } from './GridSeparatorMouseHandler';
|
|
6
8
|
declare class GridColumnSeparatorMouseHandler extends GridSeparatorMouseHandler {
|
|
7
|
-
static
|
|
9
|
+
static getColumnSeparator(gridPoint: GridPoint, metrics: GridMetrics, model: GridModel, theme: GridTheme): GridSeparator | null;
|
|
8
10
|
hiddenCursor: string;
|
|
9
11
|
defaultCursor: string;
|
|
10
12
|
pointProperty: "x";
|
|
@@ -20,8 +22,8 @@ declare class GridColumnSeparatorMouseHandler extends GridSeparatorMouseHandler
|
|
|
20
22
|
getNextShownItem: typeof GridUtils.getNextShownColumn;
|
|
21
23
|
setSize(metricCalculator: GridMetricCalculator, modelIndex: ModelIndex, size: number): void;
|
|
22
24
|
resetSize(metricCalculator: GridMetricCalculator, modelIndex: ModelIndex): void;
|
|
23
|
-
updateSeparator(grid: Grid,
|
|
24
|
-
|
|
25
|
+
updateSeparator(grid: Grid, separator: GridSeparator | null): void;
|
|
26
|
+
getSeparator: typeof GridColumnSeparatorMouseHandler.getColumnSeparator;
|
|
25
27
|
}
|
|
26
28
|
export default GridColumnSeparatorMouseHandler;
|
|
27
29
|
//# sourceMappingURL=GridColumnSeparatorMouseHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridColumnSeparatorMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridColumnSeparatorMouseHandler.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"GridColumnSeparatorMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridColumnSeparatorMouseHandler.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,yBAAyB,EAAE,EAChC,aAAa,EACd,MAAM,6BAA6B,CAAC;AAErC,cAAM,+BAAgC,SAAQ,yBAAyB;IACrE,MAAM,CAAC,kBAAkB,CACvB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,GACf,aAAa,GAAG,IAAI;IAiCvB,YAAY,SAAc;IAE1B,aAAa,SAAgB;IAE7B,aAAa,MAAgB;IAE7B,iBAAiB,qBAA+B;IAEhD,qBAAqB,oBAA8B;IAEnD,oBAAoB,wBAAkC;IAEtD,cAAc,mBAA6B;IAE3C,uBAAuB,2BAAqC;IAE5D,oBAAoB,iBAA2B;IAE/C,kBAAkB,gBAA0B;IAE5C,mBAAmB,iBAA2B;IAE9C,cAAc,oCAA8B;IAE5C,gBAAgB,sCAAgC;IAEhD,OAAO,CACL,gBAAgB,EAAE,oBAAoB,EACtC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,GACX,IAAI;IAIP,SAAS,CACP,gBAAgB,EAAE,oBAAoB,EACtC,UAAU,EAAE,UAAU,GACrB,IAAI;IAIP,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI;IAOlE,YAAY,4DAAsD;CACnE;AAED,eAAe,+BAA+B,CAAC"}
|
|
@@ -34,26 +34,38 @@ class GridColumnSeparatorMouseHandler extends GridSeparatorMouseHandler {
|
|
|
34
34
|
|
|
35
35
|
_defineProperty(this, "getNextShownItem", GridUtils.getNextShownColumn);
|
|
36
36
|
|
|
37
|
-
_defineProperty(this, "
|
|
37
|
+
_defineProperty(this, "getSeparator", GridColumnSeparatorMouseHandler.getColumnSeparator);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
static
|
|
41
|
-
|
|
42
|
-
var theme = grid.getTheme();
|
|
43
|
-
|
|
44
|
-
if (checkAllowResize && !theme.allowColumnResize) {
|
|
40
|
+
static getColumnSeparator(gridPoint, metrics, model, theme) {
|
|
41
|
+
if (!theme.allowColumnResize) {
|
|
45
42
|
return null;
|
|
46
43
|
}
|
|
47
44
|
|
|
48
45
|
var {
|
|
49
46
|
x,
|
|
50
|
-
y
|
|
47
|
+
y,
|
|
48
|
+
columnHeaderDepth
|
|
51
49
|
} = gridPoint;
|
|
52
50
|
var {
|
|
53
|
-
|
|
54
|
-
} =
|
|
55
|
-
|
|
56
|
-
|
|
51
|
+
modelColumns
|
|
52
|
+
} = metrics;
|
|
53
|
+
var separatorIndex = GridUtils.getColumnSeparatorIndex(x, y, metrics, theme); // TODO #695: Allow resizing of column groups as well. Right now just allow resizing from base columns
|
|
54
|
+
|
|
55
|
+
if (separatorIndex == null || columnHeaderDepth == null || columnHeaderDepth > 0) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
var columnIndex = modelColumns.get(separatorIndex);
|
|
60
|
+
|
|
61
|
+
if (columnIndex != null) {
|
|
62
|
+
return {
|
|
63
|
+
index: separatorIndex,
|
|
64
|
+
depth: 0
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return null;
|
|
57
69
|
}
|
|
58
70
|
|
|
59
71
|
setSize(metricCalculator, modelIndex, size) {
|
|
@@ -64,10 +76,10 @@ class GridColumnSeparatorMouseHandler extends GridSeparatorMouseHandler {
|
|
|
64
76
|
metricCalculator.resetColumnWidth(modelIndex);
|
|
65
77
|
}
|
|
66
78
|
|
|
67
|
-
updateSeparator(grid,
|
|
79
|
+
updateSeparator(grid, separator) {
|
|
68
80
|
grid.setState({
|
|
69
|
-
draggingColumnSeparator:
|
|
70
|
-
isDragging:
|
|
81
|
+
draggingColumnSeparator: separator,
|
|
82
|
+
isDragging: separator !== null
|
|
71
83
|
});
|
|
72
84
|
}
|
|
73
85
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mouse-handlers/GridColumnSeparatorMouseHandler.ts"],"names":["GridUtils","GridSeparatorMouseHandler","GridColumnSeparatorMouseHandler","getHiddenColumns","getNextShownColumn","
|
|
1
|
+
{"version":3,"sources":["../../src/mouse-handlers/GridColumnSeparatorMouseHandler.ts"],"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"],"mappings":";;AAAA;OAMOA,S;OACAC,yB;;AAIP,MAAMC,+BAAN,SAA8CD,yBAA9C,CAAwE;AAAA;AAAA;;AAAA,0CAuCvD,UAvCuD;;AAAA,2CAyCtD,YAzCsD;;AAAA,2CA2CtD,GA3CsD;;AAAA,+CA6ClD,kBA7CkD;;AAAA,mDA+C9C,iBA/C8C;;AAAA,kDAiD/C,qBAjD+C;;AAAA,4CAmDrD,gBAnDqD;;AAAA,qDAqD5C,wBArD4C;;AAAA,kDAuD/C,cAvD+C;;AAAA,gDAyDjD,aAzDiD;;AAAA,iDA2DhD,cA3DgD;;AAAA,4CA6DrDD,SAAS,CAACG,gBA7D2C;;AAAA,8CA+DnDH,SAAS,CAACI,kBA/DyC;;AAAA,0CAuFvDF,+BAA+B,CAACG,kBAvFuB;AAAA;;AAC7C,SAAlBA,kBAAkB,CACvBC,SADuB,EAEvBC,OAFuB,EAGvBC,KAHuB,EAIvBC,KAJuB,EAKD;AACtB,QAAI,CAACA,KAAK,CAACC,iBAAX,EAA8B;AAC5B,aAAO,IAAP;AACD;;AAED,QAAM;AAAEC,MAAAA,CAAF;AAAKC,MAAAA,CAAL;AAAQC,MAAAA;AAAR,QAA8BP,SAApC;AAEA,QAAM;AAAEQ,MAAAA;AAAF,QAAmBP,OAAzB;AAEA,QAAMQ,cAAc,GAAGf,SAAS,CAACgB,uBAAV,CACrBL,CADqB,EAErBC,CAFqB,EAGrBL,OAHqB,EAIrBE,KAJqB,CAAvB,CATsB,CAgBtB;;AACA,QACEM,cAAc,IAAI,IAAlB,IACAF,iBAAiB,IAAI,IADrB,IAEAA,iBAAiB,GAAG,CAHtB,EAIE;AACA,aAAO,IAAP;AACD;;AAED,QAAMI,WAAW,GAAGH,YAAY,CAACI,GAAb,CAAiBH,cAAjB,CAApB;;AACA,QAAIE,WAAW,IAAI,IAAnB,EAAyB;AACvB,aAAO;AAAEE,QAAAA,KAAK,EAAEJ,cAAT;AAAyBK,QAAAA,KAAK,EAAE;AAAhC,OAAP;AACD;;AAED,WAAO,IAAP;AACD;;AA4BDC,EAAAA,OAAO,CACLC,gBADK,EAELC,UAFK,EAGLC,IAHK,EAIC;AACNF,IAAAA,gBAAgB,CAACG,cAAjB,CAAgCF,UAAhC,EAA4CC,IAA5C;AACD;;AAEDE,EAAAA,SAAS,CACPJ,gBADO,EAEPC,UAFO,EAGD;AACND,IAAAA,gBAAgB,CAACK,gBAAjB,CAAkCJ,UAAlC;AACD;;AAEDK,EAAAA,eAAe,CAACC,IAAD,EAAaC,SAAb,EAAoD;AACjED,IAAAA,IAAI,CAACE,QAAL,CAAc;AACZC,MAAAA,uBAAuB,EAAEF,SADb;AAEZG,MAAAA,UAAU,EAAEH,SAAS,KAAK;AAFd,KAAd;AAID;;AArFqE;;AA0FxE,eAAe5B,+BAAf","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"],"file":"GridColumnSeparatorMouseHandler.js"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import Grid from '../Grid';
|
|
2
2
|
import GridMetricCalculator from '../GridMetricCalculator';
|
|
3
|
-
import { ModelIndex,
|
|
3
|
+
import type { ModelIndex, GridMetrics } from '../GridMetrics';
|
|
4
|
+
import type GridModel from '../GridModel';
|
|
5
|
+
import { GridTheme } from '../GridTheme';
|
|
4
6
|
import GridUtils, { GridPoint } from '../GridUtils';
|
|
5
|
-
import GridSeparatorMouseHandler from './GridSeparatorMouseHandler';
|
|
7
|
+
import GridSeparatorMouseHandler, { GridSeparator } from './GridSeparatorMouseHandler';
|
|
6
8
|
declare class GridRowSeparatorMouseHandler extends GridSeparatorMouseHandler {
|
|
7
|
-
static
|
|
9
|
+
static getRowSeparator(gridPoint: GridPoint, metrics: GridMetrics, model: GridModel, theme: GridTheme): GridSeparator | null;
|
|
8
10
|
hiddenCursor: string;
|
|
9
11
|
defaultCursor: string;
|
|
10
12
|
pointProperty: "y";
|
|
@@ -20,8 +22,8 @@ declare class GridRowSeparatorMouseHandler extends GridSeparatorMouseHandler {
|
|
|
20
22
|
getNextShownItem: typeof GridUtils.getNextShownRow;
|
|
21
23
|
setSize(metricCalculator: GridMetricCalculator, modelIndex: ModelIndex, size: number): void;
|
|
22
24
|
resetSize(metricCalculator: GridMetricCalculator, modelIndex: ModelIndex): void;
|
|
23
|
-
updateSeparator(grid: Grid,
|
|
24
|
-
|
|
25
|
+
updateSeparator(grid: Grid, separator: GridSeparator | null): void;
|
|
26
|
+
getSeparator: typeof GridRowSeparatorMouseHandler.getRowSeparator;
|
|
25
27
|
}
|
|
26
28
|
export default GridRowSeparatorMouseHandler;
|
|
27
29
|
//# sourceMappingURL=GridRowSeparatorMouseHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridRowSeparatorMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridRowSeparatorMouseHandler.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"GridRowSeparatorMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridRowSeparatorMouseHandler.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,yBAAyB,EAAE,EAChC,aAAa,EACd,MAAM,6BAA6B,CAAC;AAErC,cAAM,4BAA6B,SAAQ,yBAAyB;IAClE,MAAM,CAAC,eAAe,CACpB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,GACf,aAAa,GAAG,IAAI;IAYvB,YAAY,SAAc;IAE1B,aAAa,SAAgB;IAE7B,aAAa,MAAgB;IAE7B,iBAAiB,mBAA6B;IAE9C,qBAAqB,iBAA2B;IAEhD,oBAAoB,sBAAgC;IAEpD,cAAc,uBAAiC;IAE/C,uBAAuB,yBAAmC;IAE1D,oBAAoB,cAAwB;IAE5C,kBAAkB,aAAuB;IAEzC,mBAAmB,iBAA2B;IAE9C,cAAc,iCAA2B;IAEzC,gBAAgB,mCAA6B;IAE7C,OAAO,CACL,gBAAgB,EAAE,oBAAoB,EACtC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,GACX,IAAI;IAIP,SAAS,CACP,gBAAgB,EAAE,oBAAoB,EACtC,UAAU,EAAE,UAAU,GACrB,IAAI;IAIP,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI;IAOlE,YAAY,sDAAgD;CAC7D;AAED,eAAe,4BAA4B,CAAC"}
|
|
@@ -34,14 +34,11 @@ class GridRowSeparatorMouseHandler extends GridSeparatorMouseHandler {
|
|
|
34
34
|
|
|
35
35
|
_defineProperty(this, "getNextShownItem", GridUtils.getNextShownRow);
|
|
36
36
|
|
|
37
|
-
_defineProperty(this, "
|
|
37
|
+
_defineProperty(this, "getSeparator", GridRowSeparatorMouseHandler.getRowSeparator);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
static
|
|
41
|
-
|
|
42
|
-
var theme = grid.getTheme();
|
|
43
|
-
|
|
44
|
-
if (checkAllowResize && !theme.allowRowResize) {
|
|
40
|
+
static getRowSeparator(gridPoint, metrics, model, theme) {
|
|
41
|
+
if (!theme.allowRowResize) {
|
|
45
42
|
return null;
|
|
46
43
|
}
|
|
47
44
|
|
|
@@ -49,11 +46,11 @@ class GridRowSeparatorMouseHandler extends GridSeparatorMouseHandler {
|
|
|
49
46
|
x,
|
|
50
47
|
y
|
|
51
48
|
} = gridPoint;
|
|
52
|
-
var
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
49
|
+
var index = GridUtils.getRowSeparatorIndex(x, y, metrics, theme);
|
|
50
|
+
return index != null ? {
|
|
51
|
+
index,
|
|
52
|
+
depth: 0
|
|
53
|
+
} : null;
|
|
57
54
|
}
|
|
58
55
|
|
|
59
56
|
setSize(metricCalculator, modelIndex, size) {
|
|
@@ -64,10 +61,10 @@ class GridRowSeparatorMouseHandler extends GridSeparatorMouseHandler {
|
|
|
64
61
|
metricCalculator.resetRowHeight(modelIndex);
|
|
65
62
|
}
|
|
66
63
|
|
|
67
|
-
updateSeparator(grid,
|
|
64
|
+
updateSeparator(grid, separator) {
|
|
68
65
|
grid.setState({
|
|
69
|
-
draggingRowSeparator:
|
|
70
|
-
isDragging:
|
|
66
|
+
draggingRowSeparator: separator,
|
|
67
|
+
isDragging: separator !== null
|
|
71
68
|
});
|
|
72
69
|
}
|
|
73
70
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mouse-handlers/GridRowSeparatorMouseHandler.ts"],"names":["GridUtils","GridSeparatorMouseHandler","GridRowSeparatorMouseHandler","getHiddenRows","getNextShownRow","
|
|
1
|
+
{"version":3,"sources":["../../src/mouse-handlers/GridRowSeparatorMouseHandler.ts"],"names":["GridUtils","GridSeparatorMouseHandler","GridRowSeparatorMouseHandler","getHiddenRows","getNextShownRow","getRowSeparator","gridPoint","metrics","model","theme","allowRowResize","x","y","index","getRowSeparatorIndex","depth","setSize","metricCalculator","modelIndex","size","setRowHeight","resetSize","resetRowHeight","updateSeparator","grid","separator","setState","draggingRowSeparator","isDragging"],"mappings":";;AAAA;OAMOA,S;OACAC,yB;;AAIP,MAAMC,4BAAN,SAA2CD,yBAA3C,CAAqE;AAAA;AAAA;;AAAA,0CAkBpD,UAlBoD;;AAAA,2CAoBnD,YApBmD;;AAAA,2CAsBnD,GAtBmD;;AAAA,+CAwB/C,gBAxB+C;;AAAA,mDA0B3C,cA1B2C;;AAAA,kDA4B5C,mBA5B4C;;AAAA,4CA8BlD,oBA9BkD;;AAAA,qDAgCzC,sBAhCyC;;AAAA,kDAkC5C,WAlC4C;;AAAA,gDAoC9C,UApC8C;;AAAA,iDAsC7C,cAtC6C;;AAAA,4CAwClDD,SAAS,CAACG,aAxCwC;;AAAA,8CA0ChDH,SAAS,CAACI,eA1CsC;;AAAA,0CAkEpDF,4BAA4B,CAACG,eAlEuB;AAAA;;AAC7C,SAAfA,eAAe,CACpBC,SADoB,EAEpBC,OAFoB,EAGpBC,KAHoB,EAIpBC,KAJoB,EAKE;AACtB,QAAI,CAACA,KAAK,CAACC,cAAX,EAA2B;AACzB,aAAO,IAAP;AACD;;AAED,QAAM;AAAEC,MAAAA,CAAF;AAAKC,MAAAA;AAAL,QAAWN,SAAjB;AAEA,QAAMO,KAAK,GAAGb,SAAS,CAACc,oBAAV,CAA+BH,CAA/B,EAAkCC,CAAlC,EAAqCL,OAArC,EAA8CE,KAA9C,CAAd;AAEA,WAAOI,KAAK,IAAI,IAAT,GAAgB;AAAEA,MAAAA,KAAF;AAASE,MAAAA,KAAK,EAAE;AAAhB,KAAhB,GAAsC,IAA7C;AACD;;AA4BDC,EAAAA,OAAO,CACLC,gBADK,EAELC,UAFK,EAGLC,IAHK,EAIC;AACNF,IAAAA,gBAAgB,CAACG,YAAjB,CAA8BF,UAA9B,EAA0CC,IAA1C;AACD;;AAEDE,EAAAA,SAAS,CACPJ,gBADO,EAEPC,UAFO,EAGD;AACND,IAAAA,gBAAgB,CAACK,cAAjB,CAAgCJ,UAAhC;AACD;;AAEDK,EAAAA,eAAe,CAACC,IAAD,EAAaC,SAAb,EAAoD;AACjED,IAAAA,IAAI,CAACE,QAAL,CAAc;AACZC,MAAAA,oBAAoB,EAAEF,SADV;AAEZG,MAAAA,UAAU,EAAEH,SAAS,KAAK;AAFd,KAAd;AAID;;AAhEkE;;AAqErE,eAAevB,4BAAf","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 { GridTheme } from '../GridTheme';\nimport GridUtils, { GridPoint } from '../GridUtils';\nimport GridSeparatorMouseHandler, {\n GridSeparator,\n} from './GridSeparatorMouseHandler';\n\nclass GridRowSeparatorMouseHandler extends GridSeparatorMouseHandler {\n static getRowSeparator(\n gridPoint: GridPoint,\n metrics: GridMetrics,\n model: GridModel,\n theme: GridTheme\n ): GridSeparator | null {\n if (!theme.allowRowResize) {\n return null;\n }\n\n const { x, y } = gridPoint;\n\n const index = GridUtils.getRowSeparatorIndex(x, y, metrics, theme);\n\n return index != null ? { index, depth: 0 } : null;\n }\n\n hiddenCursor = 's-resize';\n\n defaultCursor = 'row-resize';\n\n pointProperty = 'y' as const;\n\n userSizesProperty = 'userRowHeights' as const;\n\n visibleOffsetProperty = 'visibleRowYs' as const;\n\n visibleSizesProperty = 'visibleRowHeights' as const;\n\n marginProperty = 'columnHeaderHeight' as const;\n\n calculatedSizesProperty = 'calculatedRowHeights' as const;\n\n modelIndexesProperty = 'modelRows' as const;\n\n firstIndexProperty = 'firstRow' as const;\n\n treePaddingProperty = 'treePaddingY' as const;\n\n getHiddenItems = GridUtils.getHiddenRows;\n\n getNextShownItem = GridUtils.getNextShownRow;\n\n setSize(\n metricCalculator: GridMetricCalculator,\n modelIndex: ModelIndex,\n size: number\n ): void {\n metricCalculator.setRowHeight(modelIndex, size);\n }\n\n resetSize(\n metricCalculator: GridMetricCalculator,\n modelIndex: ModelIndex\n ): void {\n metricCalculator.resetRowHeight(modelIndex);\n }\n\n updateSeparator(grid: Grid, separator: GridSeparator | null): void {\n grid.setState({\n draggingRowSeparator: separator,\n isDragging: separator !== null,\n });\n }\n\n getSeparator = GridRowSeparatorMouseHandler.getRowSeparator;\n}\n\nexport default GridRowSeparatorMouseHandler;\n"],"file":"GridRowSeparatorMouseHandler.js"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type Grid from '../Grid';
|
|
2
|
+
import type { GridMetricCalculator } from '../GridMetricCalculator';
|
|
3
|
+
import type GridModel from '../GridModel';
|
|
2
4
|
import { EventHandlerResult } from '../EventHandlerResult';
|
|
3
5
|
import GridMetrics, { ModelIndex, VisibleIndex } from '../GridMetrics';
|
|
4
6
|
import GridMouseHandler from '../GridMouseHandler';
|
|
5
|
-
import {
|
|
7
|
+
import type { GridTheme } from '../GridTheme';
|
|
8
|
+
import type { GridPoint } from '../GridUtils';
|
|
6
9
|
export declare type PointProperty = 'x' | 'y';
|
|
7
10
|
export declare type UserSizeProperty = 'userRowHeights' | 'userColumnWidths';
|
|
8
11
|
export declare type VisibleOffsetProperty = 'visibleRowYs' | 'visibleColumnXs';
|
|
@@ -12,6 +15,10 @@ export declare type CalculatedSizeProperty = 'calculatedRowHeights' | 'calculate
|
|
|
12
15
|
export declare type ModelIndexesProperty = 'modelRows' | 'modelColumns';
|
|
13
16
|
export declare type FirstIndexProperty = 'firstRow' | 'firstColumn';
|
|
14
17
|
export declare type TreePaddingProperty = 'treePaddingX' | 'treePaddingY';
|
|
18
|
+
export interface GridSeparator {
|
|
19
|
+
index: VisibleIndex;
|
|
20
|
+
depth: number;
|
|
21
|
+
}
|
|
15
22
|
/**
|
|
16
23
|
* Abstract class that should be extended for column/row behaviour
|
|
17
24
|
* Override the necessary functions/properties
|
|
@@ -37,8 +44,8 @@ declare abstract class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
37
44
|
abstract getNextShownItem(itemIndex: VisibleIndex, metrics: GridMetrics): VisibleIndex | null;
|
|
38
45
|
abstract setSize(metricCalculator: GridMetricCalculator, modelIndex: ModelIndex, size: number): void;
|
|
39
46
|
abstract resetSize(metricCalculator: GridMetricCalculator, modelIndex: ModelIndex): void;
|
|
40
|
-
abstract updateSeparator(grid: Grid,
|
|
41
|
-
abstract
|
|
47
|
+
abstract updateSeparator(grid: Grid, separator: GridSeparator | null): void;
|
|
48
|
+
abstract getSeparator(gridPoint: GridPoint, metrics: GridMetrics, model: GridModel, theme: GridTheme): GridSeparator | null;
|
|
42
49
|
onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult;
|
|
43
50
|
onMove(gridPoint: GridPoint, grid: Grid): EventHandlerResult;
|
|
44
51
|
onDrag(gridPoint: GridPoint, grid: Grid): EventHandlerResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridSeparatorMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridSeparatorMouseHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GridSeparatorMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridSeparatorMouseHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,5 @@
|
|
|
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
2
|
|
|
3
|
-
/* eslint class-methods-use-this: "off" */
|
|
4
|
-
|
|
5
|
-
/* eslint no-unused-vars: "off" */
|
|
6
3
|
import { getOrThrow } from "../GridMetricCalculator.js";
|
|
7
4
|
import GridMouseHandler from "../GridMouseHandler.js";
|
|
8
5
|
|
|
@@ -49,21 +46,26 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
49
46
|
|
|
50
47
|
// End of overrides
|
|
51
48
|
onDown(gridPoint, grid) {
|
|
52
|
-
var
|
|
49
|
+
var {
|
|
50
|
+
metrics
|
|
51
|
+
} = grid;
|
|
52
|
+
var {
|
|
53
|
+
model
|
|
54
|
+
} = grid.props;
|
|
55
|
+
var theme = grid.getTheme();
|
|
56
|
+
if (!metrics) throw new Error('metrics not set');
|
|
57
|
+
var separator = this.getSeparator(gridPoint, metrics, model, theme);
|
|
53
58
|
|
|
54
|
-
if (
|
|
55
|
-
var
|
|
56
|
-
metrics: _metrics
|
|
57
|
-
} = grid;
|
|
58
|
-
if (!_metrics) throw new Error('metrics not set');
|
|
59
|
+
if (separator != null) {
|
|
60
|
+
var separatorIndex = separator.index;
|
|
59
61
|
this.dragOffset = 0;
|
|
60
62
|
this.draggingIndex = separatorIndex;
|
|
61
63
|
this.resizingItems = [separatorIndex];
|
|
62
|
-
this.hiddenItems = this.getHiddenItems(separatorIndex,
|
|
64
|
+
this.hiddenItems = this.getHiddenItems(separatorIndex, metrics).reverse();
|
|
63
65
|
this.targetSizes.clear();
|
|
64
|
-
this.addTargetSize(
|
|
65
|
-
this.updateCursor(
|
|
66
|
-
this.updateSeparator(grid,
|
|
66
|
+
this.addTargetSize(metrics, separatorIndex);
|
|
67
|
+
this.updateCursor(metrics, separatorIndex);
|
|
68
|
+
this.updateSeparator(grid, separator);
|
|
67
69
|
return true;
|
|
68
70
|
}
|
|
69
71
|
|
|
@@ -71,14 +73,18 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
71
73
|
}
|
|
72
74
|
|
|
73
75
|
onMove(gridPoint, grid) {
|
|
74
|
-
var
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
76
|
+
var {
|
|
77
|
+
metrics
|
|
78
|
+
} = grid;
|
|
79
|
+
var {
|
|
80
|
+
model
|
|
81
|
+
} = grid.props;
|
|
82
|
+
var theme = grid.getTheme();
|
|
83
|
+
if (!metrics) throw new Error('metrics not set');
|
|
84
|
+
var separator = this.getSeparator(gridPoint, metrics, model, theme);
|
|
85
|
+
|
|
86
|
+
if (separator != null) {
|
|
87
|
+
this.updateCursor(metrics, separator.index);
|
|
82
88
|
return true;
|
|
83
89
|
}
|
|
84
90
|
|
|
@@ -199,19 +205,23 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
199
205
|
}
|
|
200
206
|
|
|
201
207
|
onDoubleClick(gridPoint, grid) {
|
|
202
|
-
var
|
|
208
|
+
var {
|
|
209
|
+
metrics,
|
|
210
|
+
metricCalculator
|
|
211
|
+
} = grid;
|
|
212
|
+
var {
|
|
213
|
+
model
|
|
214
|
+
} = grid.props;
|
|
215
|
+
var theme = grid.getTheme();
|
|
216
|
+
if (!metrics) throw new Error('metrics not set');
|
|
217
|
+
var separator = this.getSeparator(gridPoint, metrics, model, theme);
|
|
203
218
|
|
|
204
|
-
if (
|
|
205
|
-
var
|
|
206
|
-
metricCalculator: _metricCalculator,
|
|
207
|
-
metrics: _metrics3
|
|
208
|
-
} = grid;
|
|
209
|
-
if (!_metrics3) throw new Error('metrics not set');
|
|
210
|
-
var modelIndexes = _metrics3[this.modelIndexesProperty];
|
|
219
|
+
if (separator != null) {
|
|
220
|
+
var modelIndexes = metrics[this.modelIndexesProperty];
|
|
211
221
|
|
|
212
|
-
var _modelIndex2 = getOrThrow(modelIndexes,
|
|
222
|
+
var _modelIndex2 = getOrThrow(modelIndexes, separator.index);
|
|
213
223
|
|
|
214
|
-
this.resetSize(
|
|
224
|
+
this.resetSize(metricCalculator, _modelIndex2);
|
|
215
225
|
grid.forceUpdate();
|
|
216
226
|
return true;
|
|
217
227
|
}
|