@deephaven/grid 0.94.1-beta.0 → 0.95.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/dist/CellRenderer.d.ts +3 -3
  2. package/dist/CellRenderer.d.ts.map +1 -1
  3. package/dist/CellRenderer.js.map +1 -1
  4. package/dist/ColumnHeaderGroup.d.ts +2 -2
  5. package/dist/ColumnHeaderGroup.d.ts.map +1 -1
  6. package/dist/ColumnHeaderGroup.js.map +1 -1
  7. package/dist/DataBarCellRenderer.d.ts +3 -3
  8. package/dist/DataBarCellRenderer.d.ts.map +1 -1
  9. package/dist/DataBarCellRenderer.js.map +1 -1
  10. package/dist/DataBarGridModel.d.ts +3 -3
  11. package/dist/DataBarGridModel.d.ts.map +1 -1
  12. package/dist/DataBarGridModel.js.map +1 -1
  13. package/dist/DeletableGridModel.d.ts +2 -2
  14. package/dist/DeletableGridModel.d.ts.map +1 -1
  15. package/dist/DeletableGridModel.js.map +1 -1
  16. package/dist/EditableGridModel.d.ts +3 -3
  17. package/dist/EditableGridModel.d.ts.map +1 -1
  18. package/dist/EditableGridModel.js.map +1 -1
  19. package/dist/ExpandableGridModel.d.ts +2 -2
  20. package/dist/ExpandableGridModel.d.ts.map +1 -1
  21. package/dist/ExpandableGridModel.js.map +1 -1
  22. package/dist/Grid.d.ts +15 -12
  23. package/dist/Grid.d.ts.map +1 -1
  24. package/dist/Grid.js.map +1 -1
  25. package/dist/GridColorUtils.d.ts +2 -2
  26. package/dist/GridColorUtils.d.ts.map +1 -1
  27. package/dist/GridColorUtils.js.map +1 -1
  28. package/dist/GridMetricCalculator.d.ts +3 -3
  29. package/dist/GridMetricCalculator.d.ts.map +1 -1
  30. package/dist/GridMetricCalculator.js.map +1 -1
  31. package/dist/GridModel.d.ts +5 -5
  32. package/dist/GridModel.d.ts.map +1 -1
  33. package/dist/GridModel.js.map +1 -1
  34. package/dist/GridMouseHandler.d.ts +3 -3
  35. package/dist/GridMouseHandler.d.ts.map +1 -1
  36. package/dist/GridMouseHandler.js.map +1 -1
  37. package/dist/GridRenderer.d.ts +6 -5
  38. package/dist/GridRenderer.d.ts.map +1 -1
  39. package/dist/GridRenderer.js.map +1 -1
  40. package/dist/GridRendererTypes.d.ts +7 -6
  41. package/dist/GridRendererTypes.d.ts.map +1 -1
  42. package/dist/GridRendererTypes.js.map +1 -1
  43. package/dist/GridUtils.d.ts +7 -7
  44. package/dist/GridUtils.d.ts.map +1 -1
  45. package/dist/GridUtils.js.map +1 -1
  46. package/dist/KeyHandler.d.ts +2 -2
  47. package/dist/KeyHandler.d.ts.map +1 -1
  48. package/dist/KeyHandler.js.map +1 -1
  49. package/dist/MockDataBarGridModel.d.ts +3 -3
  50. package/dist/MockDataBarGridModel.d.ts.map +1 -1
  51. package/dist/MockDataBarGridModel.js.map +1 -1
  52. package/dist/MockGridModel.d.ts +4 -3
  53. package/dist/MockGridModel.d.ts.map +1 -1
  54. package/dist/MockGridModel.js.map +1 -1
  55. package/dist/MockTreeGridModel.d.ts +2 -2
  56. package/dist/MockTreeGridModel.d.ts.map +1 -1
  57. package/dist/MockTreeGridModel.js.map +1 -1
  58. package/dist/TextCellRenderer.d.ts +4 -4
  59. package/dist/TextCellRenderer.d.ts.map +1 -1
  60. package/dist/TextCellRenderer.js.map +1 -1
  61. package/dist/ThemeContext.d.ts +1 -1
  62. package/dist/ThemeContext.d.ts.map +1 -1
  63. package/dist/ThemeContext.js.map +1 -1
  64. package/dist/TokenBoxCellRenderer.d.ts +4 -4
  65. package/dist/TokenBoxCellRenderer.d.ts.map +1 -1
  66. package/dist/TokenBoxCellRenderer.js.map +1 -1
  67. package/dist/key-handlers/EditKeyHandler.d.ts +3 -3
  68. package/dist/key-handlers/EditKeyHandler.d.ts.map +1 -1
  69. package/dist/key-handlers/EditKeyHandler.js.map +1 -1
  70. package/dist/key-handlers/PasteKeyHandler.d.ts +3 -3
  71. package/dist/key-handlers/PasteKeyHandler.d.ts.map +1 -1
  72. package/dist/key-handlers/PasteKeyHandler.js.map +1 -1
  73. package/dist/key-handlers/SelectionKeyHandler.d.ts +3 -3
  74. package/dist/key-handlers/SelectionKeyHandler.d.ts.map +1 -1
  75. package/dist/key-handlers/SelectionKeyHandler.js.map +1 -1
  76. package/dist/key-handlers/TreeKeyHandler.d.ts +1 -1
  77. package/dist/key-handlers/TreeKeyHandler.d.ts.map +1 -1
  78. package/dist/key-handlers/TreeKeyHandler.js.map +1 -1
  79. package/dist/mouse-handlers/EditMouseHandler.d.ts +3 -3
  80. package/dist/mouse-handlers/EditMouseHandler.d.ts.map +1 -1
  81. package/dist/mouse-handlers/EditMouseHandler.js.map +1 -1
  82. package/dist/mouse-handlers/GridColumnMoveMouseHandler.d.ts +4 -4
  83. package/dist/mouse-handlers/GridColumnMoveMouseHandler.d.ts.map +1 -1
  84. package/dist/mouse-handlers/GridColumnMoveMouseHandler.js.map +1 -1
  85. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.d.ts +4 -4
  86. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.d.ts.map +1 -1
  87. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js.map +1 -1
  88. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.d.ts +4 -4
  89. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.d.ts.map +1 -1
  90. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js.map +1 -1
  91. package/dist/mouse-handlers/GridRowMoveMouseHandler.d.ts +3 -3
  92. package/dist/mouse-handlers/GridRowMoveMouseHandler.d.ts.map +1 -1
  93. package/dist/mouse-handlers/GridRowMoveMouseHandler.js.map +1 -1
  94. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.d.ts +5 -5
  95. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.d.ts.map +1 -1
  96. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js.map +1 -1
  97. package/dist/mouse-handlers/GridRowTreeMouseHandler.d.ts +3 -3
  98. package/dist/mouse-handlers/GridRowTreeMouseHandler.d.ts.map +1 -1
  99. package/dist/mouse-handlers/GridRowTreeMouseHandler.js.map +1 -1
  100. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.d.ts +3 -3
  101. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.d.ts.map +1 -1
  102. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js.map +1 -1
  103. package/dist/mouse-handlers/GridSelectionMouseHandler.d.ts +4 -4
  104. package/dist/mouse-handlers/GridSelectionMouseHandler.d.ts.map +1 -1
  105. package/dist/mouse-handlers/GridSelectionMouseHandler.js.map +1 -1
  106. package/dist/mouse-handlers/GridSeparatorMouseHandler.d.ts +3 -2
  107. package/dist/mouse-handlers/GridSeparatorMouseHandler.d.ts.map +1 -1
  108. package/dist/mouse-handlers/GridSeparatorMouseHandler.js.map +1 -1
  109. package/dist/mouse-handlers/GridTokenMouseHandler.d.ts +4 -4
  110. package/dist/mouse-handlers/GridTokenMouseHandler.d.ts.map +1 -1
  111. package/dist/mouse-handlers/GridTokenMouseHandler.js.map +1 -1
  112. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.d.ts +4 -4
  113. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.d.ts.map +1 -1
  114. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js.map +1 -1
  115. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionKeyHandler.js","names":["clamp","GridRange","GridUtils","KeyHandler","SelectionKeyHandler","onDown","event","grid","key","isModifierKeyDown","selectAll","handleArrowMove","handlePageUp","handlePageDown","shiftKey","clearSelectedRanges","moveCursorToPosition","state","cursorRow","model","props","columnCount","cursorColumn","rowCount","preventDefault","stopPropagation","selectedRanges","length","moveCursorInDirection","SELECTION_DIRECTION","UP","DOWN","LEFT","RIGHT","deltaColumn","deltaRow","isShiftKey","isModifierKey","trimSelectedRanges","selectionEndColumn","selectionEndRow","column","row","maximizePreviousRange","moveToColumn","moveToRow","metrics","Error","theme","autoSelectRow","autoSelectColumn","lastLeft","left","setViewState","lastTop","top","moveCursor","e","metricState","getMetricState","metricCalculator","bottomVisible","topVisible","hasHorizontalBar","getMetrics","selectRangeEndPosition","Math","max","viewportPosition","lastRowIndex","min"],"sources":["../../src/key-handlers/SelectionKeyHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport clamp from 'lodash.clamp';\nimport { EventHandlerResult } from '../EventHandlerResult';\nimport Grid from '../Grid';\nimport GridRange from '../GridRange';\nimport GridUtils from '../GridUtils';\nimport KeyHandler, { GridKeyboardEvent } from '../KeyHandler';\n\nclass SelectionKeyHandler extends KeyHandler {\n onDown(event: GridKeyboardEvent, grid: Grid): EventHandlerResult {\n switch (event.key) {\n case 'a':\n if (GridUtils.isModifierKeyDown(event)) {\n grid.selectAll();\n return true;\n }\n break;\n case 'ArrowUp':\n return this.handleArrowMove(0, -1, event, grid);\n case 'ArrowDown':\n return this.handleArrowMove(0, 1, event, grid);\n case 'ArrowRight':\n return this.handleArrowMove(1, 0, event, grid);\n case 'ArrowLeft':\n return this.handleArrowMove(-1, 0, event, grid);\n /**\n * h/j/k/l keys are grouped together for quick navigation by power users.\n * Bender added these as shortcuts in the original commit of keyboard shortcuts.\n * We have no idea why, or what might have inspired them (not excel, not swing, vim?).\n * Maybe lack of page up keys on a laptop at the time?\n */\n case 'k':\n case 'K':\n if (GridUtils.isModifierKeyDown(event)) return false;\n return this.handlePageUp(event, grid);\n case 'j':\n case 'J':\n if (GridUtils.isModifierKeyDown(event)) return false;\n return this.handlePageDown(event, grid);\n case 'h':\n case 'H':\n if (GridUtils.isModifierKeyDown(event)) return false;\n if (!event.shiftKey) {\n grid.clearSelectedRanges();\n }\n grid.moveCursorToPosition(0, grid.state.cursorRow, event.shiftKey);\n return true;\n case 'l':\n case 'L': {\n if (GridUtils.isModifierKeyDown(event)) return false;\n const { model } = grid.props;\n const { columnCount } = model;\n if (!event.shiftKey) {\n grid.clearSelectedRanges();\n }\n grid.moveCursorToPosition(\n columnCount - 1,\n grid.state.cursorRow,\n event.shiftKey\n );\n return true;\n }\n case 'PageDown':\n return this.handlePageDown(event, grid);\n case 'PageUp':\n return this.handlePageUp(event, grid);\n case 'Home':\n if (!event.shiftKey) {\n grid.clearSelectedRanges();\n }\n grid.moveCursorToPosition(\n GridUtils.isModifierKeyDown(event) ? grid.state.cursorColumn : 0,\n GridUtils.isModifierKeyDown(event) ? 0 : grid.state.cursorRow,\n event.shiftKey,\n true,\n true\n );\n return true;\n case 'End': {\n const { model } = grid.props;\n const { columnCount, rowCount } = model;\n if (!event.shiftKey) {\n grid.clearSelectedRanges();\n }\n grid.moveCursorToPosition(\n GridUtils.isModifierKeyDown(event)\n ? grid.state.cursorColumn\n : columnCount - 1,\n GridUtils.isModifierKeyDown(event)\n ? rowCount - 1\n : grid.state.cursorRow,\n event.shiftKey,\n true,\n true\n );\n return true;\n }\n case 'Escape':\n grid.clearSelectedRanges();\n // Event consumed, but propagation not stopped\n // so the shortcut could be handled by the global handler\n return { preventDefault: false, stopPropagation: false };\n case 'Enter':\n if (grid.state.selectedRanges.length > 0) {\n grid.moveCursorInDirection(\n event.shiftKey\n ? GridRange.SELECTION_DIRECTION.UP\n : GridRange.SELECTION_DIRECTION.DOWN\n );\n return true;\n }\n break;\n case 'Tab':\n if (grid.state.selectedRanges.length > 0) {\n grid.moveCursorInDirection(\n event.shiftKey\n ? GridRange.SELECTION_DIRECTION.LEFT\n : GridRange.SELECTION_DIRECTION.RIGHT\n );\n return true;\n }\n break;\n default:\n break;\n }\n return false;\n }\n\n handleArrowMove(\n deltaColumn: number,\n deltaRow: number,\n event: GridKeyboardEvent,\n grid: Grid\n ): boolean {\n const isShiftKey = event.shiftKey;\n const isModifierKey = GridUtils.isModifierKeyDown(event);\n if (isShiftKey) {\n grid.trimSelectedRanges();\n } else {\n grid.clearSelectedRanges();\n }\n\n const { cursorRow, cursorColumn, selectionEndColumn, selectionEndRow } =\n grid.state;\n const column = isShiftKey ? selectionEndColumn : cursorColumn;\n const row = isShiftKey ? selectionEndRow : cursorRow;\n if (isModifierKey) {\n const { model } = grid.props;\n const { columnCount, rowCount } = model;\n const maximizePreviousRange = isModifierKey && isShiftKey;\n let moveToColumn = null;\n let moveToRow = null;\n if (deltaColumn < 0) {\n moveToColumn = 0;\n moveToRow = row;\n } else if (deltaColumn > 0) {\n moveToColumn = columnCount - 1;\n moveToRow = row;\n } else if (deltaRow < 0) {\n moveToColumn = column;\n moveToRow = 0;\n } else if (deltaRow > 0) {\n moveToColumn = column;\n moveToRow = rowCount - 1;\n }\n if (moveToColumn != null && moveToRow != null) {\n grid.moveCursorToPosition(\n moveToColumn,\n moveToRow,\n isShiftKey,\n true,\n maximizePreviousRange\n );\n }\n } else {\n if (!grid.metrics) throw new Error('grid.metrics are not set');\n\n const { theme } = grid.props;\n const { autoSelectRow = false, autoSelectColumn = false } = theme;\n if (autoSelectRow && deltaColumn !== 0) {\n const { lastLeft } = grid.metrics;\n let { left } = grid.state;\n\n left = clamp(left + deltaColumn, 0, lastLeft);\n\n grid.moveCursorToPosition(left, cursorRow, isShiftKey, false);\n\n grid.setViewState({ left });\n } else if (autoSelectColumn && deltaRow !== 0) {\n const { lastTop } = grid.metrics;\n let { top } = grid.state;\n\n top = clamp(top + deltaRow, 0, lastTop);\n\n grid.moveCursorToPosition(top, cursorColumn, isShiftKey, false);\n\n grid.setViewState({ top });\n } else {\n grid.moveCursor(deltaColumn, deltaRow, isShiftKey);\n }\n }\n return true;\n }\n\n handlePageUp(e: GridKeyboardEvent, grid: Grid): boolean {\n const isShiftKey = e.shiftKey;\n\n if (isShiftKey) {\n grid.trimSelectedRanges();\n } else {\n grid.clearSelectedRanges();\n }\n\n const { cursorColumn, selectionEndRow } = grid.state;\n const row: number | null = selectionEndRow;\n const column: number | null = cursorColumn;\n if (row == null) {\n return false;\n }\n const metricState = grid.getMetricState();\n const { metricCalculator } = grid;\n const { bottomVisible, topVisible, hasHorizontalBar } =\n metricCalculator.getMetrics(metricState);\n\n let selectRangeEndPosition = row - (bottomVisible - topVisible);\n selectRangeEndPosition -= hasHorizontalBar ? 0 : 1;\n\n // Don't move beyond the top table row.\n selectRangeEndPosition = Math.max(selectRangeEndPosition, 0);\n const viewportPosition = Math.max(\n selectRangeEndPosition - (row - topVisible),\n 0\n );\n\n grid.moveCursorToPosition(\n column,\n selectRangeEndPosition,\n isShiftKey,\n false\n );\n grid.setViewState({ top: viewportPosition });\n return true;\n }\n\n handlePageDown(e: GridKeyboardEvent, grid: Grid): boolean {\n const isShiftKey = e.shiftKey;\n\n if (isShiftKey) {\n grid.trimSelectedRanges();\n } else {\n grid.clearSelectedRanges();\n }\n\n const { selectionEndRow, cursorColumn } = grid.state;\n const row: number | null = selectionEndRow;\n const column: number | null = cursorColumn;\n if (row === null) {\n return false;\n }\n const metricState = grid.getMetricState();\n const { metricCalculator } = grid;\n const { bottomVisible, topVisible, hasHorizontalBar, rowCount, lastTop } =\n metricCalculator.getMetrics(metricState);\n const lastRowIndex = rowCount - 1;\n\n let selectRangeEndPosition = bottomVisible - topVisible + row;\n selectRangeEndPosition += hasHorizontalBar ? 0 : 1;\n\n // Don't move beyond the bottom table row.\n selectRangeEndPosition = Math.min(selectRangeEndPosition, lastRowIndex);\n\n const viewportPosition = Math.min(\n lastTop,\n selectRangeEndPosition - (row - topVisible)\n );\n grid.moveCursorToPosition(\n column,\n selectRangeEndPosition,\n isShiftKey,\n false\n );\n grid.setViewState({ top: viewportPosition });\n\n return true;\n }\n}\n\nexport default SelectionKeyHandler;\n"],"mappings":"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"}
1
+ {"version":3,"file":"SelectionKeyHandler.js","names":["clamp","GridRange","GridUtils","KeyHandler","SelectionKeyHandler","onDown","event","grid","key","isModifierKeyDown","selectAll","handleArrowMove","handlePageUp","handlePageDown","shiftKey","clearSelectedRanges","moveCursorToPosition","state","cursorRow","model","props","columnCount","cursorColumn","rowCount","preventDefault","stopPropagation","selectedRanges","length","moveCursorInDirection","SELECTION_DIRECTION","UP","DOWN","LEFT","RIGHT","deltaColumn","deltaRow","isShiftKey","isModifierKey","trimSelectedRanges","selectionEndColumn","selectionEndRow","column","row","maximizePreviousRange","moveToColumn","moveToRow","metrics","Error","theme","autoSelectRow","autoSelectColumn","lastLeft","left","setViewState","lastTop","top","moveCursor","e","metricState","getMetricState","metricCalculator","bottomVisible","topVisible","hasHorizontalBar","getMetrics","selectRangeEndPosition","Math","max","viewportPosition","lastRowIndex","min"],"sources":["../../src/key-handlers/SelectionKeyHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport clamp from 'lodash.clamp';\nimport { type EventHandlerResult } from '../EventHandlerResult';\nimport type Grid from '../Grid';\nimport GridRange from '../GridRange';\nimport GridUtils from '../GridUtils';\nimport KeyHandler, { type GridKeyboardEvent } from '../KeyHandler';\n\nclass SelectionKeyHandler extends KeyHandler {\n onDown(event: GridKeyboardEvent, grid: Grid): EventHandlerResult {\n switch (event.key) {\n case 'a':\n if (GridUtils.isModifierKeyDown(event)) {\n grid.selectAll();\n return true;\n }\n break;\n case 'ArrowUp':\n return this.handleArrowMove(0, -1, event, grid);\n case 'ArrowDown':\n return this.handleArrowMove(0, 1, event, grid);\n case 'ArrowRight':\n return this.handleArrowMove(1, 0, event, grid);\n case 'ArrowLeft':\n return this.handleArrowMove(-1, 0, event, grid);\n /**\n * h/j/k/l keys are grouped together for quick navigation by power users.\n * Bender added these as shortcuts in the original commit of keyboard shortcuts.\n * We have no idea why, or what might have inspired them (not excel, not swing, vim?).\n * Maybe lack of page up keys on a laptop at the time?\n */\n case 'k':\n case 'K':\n if (GridUtils.isModifierKeyDown(event)) return false;\n return this.handlePageUp(event, grid);\n case 'j':\n case 'J':\n if (GridUtils.isModifierKeyDown(event)) return false;\n return this.handlePageDown(event, grid);\n case 'h':\n case 'H':\n if (GridUtils.isModifierKeyDown(event)) return false;\n if (!event.shiftKey) {\n grid.clearSelectedRanges();\n }\n grid.moveCursorToPosition(0, grid.state.cursorRow, event.shiftKey);\n return true;\n case 'l':\n case 'L': {\n if (GridUtils.isModifierKeyDown(event)) return false;\n const { model } = grid.props;\n const { columnCount } = model;\n if (!event.shiftKey) {\n grid.clearSelectedRanges();\n }\n grid.moveCursorToPosition(\n columnCount - 1,\n grid.state.cursorRow,\n event.shiftKey\n );\n return true;\n }\n case 'PageDown':\n return this.handlePageDown(event, grid);\n case 'PageUp':\n return this.handlePageUp(event, grid);\n case 'Home':\n if (!event.shiftKey) {\n grid.clearSelectedRanges();\n }\n grid.moveCursorToPosition(\n GridUtils.isModifierKeyDown(event) ? grid.state.cursorColumn : 0,\n GridUtils.isModifierKeyDown(event) ? 0 : grid.state.cursorRow,\n event.shiftKey,\n true,\n true\n );\n return true;\n case 'End': {\n const { model } = grid.props;\n const { columnCount, rowCount } = model;\n if (!event.shiftKey) {\n grid.clearSelectedRanges();\n }\n grid.moveCursorToPosition(\n GridUtils.isModifierKeyDown(event)\n ? grid.state.cursorColumn\n : columnCount - 1,\n GridUtils.isModifierKeyDown(event)\n ? rowCount - 1\n : grid.state.cursorRow,\n event.shiftKey,\n true,\n true\n );\n return true;\n }\n case 'Escape':\n grid.clearSelectedRanges();\n // Event consumed, but propagation not stopped\n // so the shortcut could be handled by the global handler\n return { preventDefault: false, stopPropagation: false };\n case 'Enter':\n if (grid.state.selectedRanges.length > 0) {\n grid.moveCursorInDirection(\n event.shiftKey\n ? GridRange.SELECTION_DIRECTION.UP\n : GridRange.SELECTION_DIRECTION.DOWN\n );\n return true;\n }\n break;\n case 'Tab':\n if (grid.state.selectedRanges.length > 0) {\n grid.moveCursorInDirection(\n event.shiftKey\n ? GridRange.SELECTION_DIRECTION.LEFT\n : GridRange.SELECTION_DIRECTION.RIGHT\n );\n return true;\n }\n break;\n default:\n break;\n }\n return false;\n }\n\n handleArrowMove(\n deltaColumn: number,\n deltaRow: number,\n event: GridKeyboardEvent,\n grid: Grid\n ): boolean {\n const isShiftKey = event.shiftKey;\n const isModifierKey = GridUtils.isModifierKeyDown(event);\n if (isShiftKey) {\n grid.trimSelectedRanges();\n } else {\n grid.clearSelectedRanges();\n }\n\n const { cursorRow, cursorColumn, selectionEndColumn, selectionEndRow } =\n grid.state;\n const column = isShiftKey ? selectionEndColumn : cursorColumn;\n const row = isShiftKey ? selectionEndRow : cursorRow;\n if (isModifierKey) {\n const { model } = grid.props;\n const { columnCount, rowCount } = model;\n const maximizePreviousRange = isModifierKey && isShiftKey;\n let moveToColumn = null;\n let moveToRow = null;\n if (deltaColumn < 0) {\n moveToColumn = 0;\n moveToRow = row;\n } else if (deltaColumn > 0) {\n moveToColumn = columnCount - 1;\n moveToRow = row;\n } else if (deltaRow < 0) {\n moveToColumn = column;\n moveToRow = 0;\n } else if (deltaRow > 0) {\n moveToColumn = column;\n moveToRow = rowCount - 1;\n }\n if (moveToColumn != null && moveToRow != null) {\n grid.moveCursorToPosition(\n moveToColumn,\n moveToRow,\n isShiftKey,\n true,\n maximizePreviousRange\n );\n }\n } else {\n if (!grid.metrics) throw new Error('grid.metrics are not set');\n\n const { theme } = grid.props;\n const { autoSelectRow = false, autoSelectColumn = false } = theme;\n if (autoSelectRow && deltaColumn !== 0) {\n const { lastLeft } = grid.metrics;\n let { left } = grid.state;\n\n left = clamp(left + deltaColumn, 0, lastLeft);\n\n grid.moveCursorToPosition(left, cursorRow, isShiftKey, false);\n\n grid.setViewState({ left });\n } else if (autoSelectColumn && deltaRow !== 0) {\n const { lastTop } = grid.metrics;\n let { top } = grid.state;\n\n top = clamp(top + deltaRow, 0, lastTop);\n\n grid.moveCursorToPosition(top, cursorColumn, isShiftKey, false);\n\n grid.setViewState({ top });\n } else {\n grid.moveCursor(deltaColumn, deltaRow, isShiftKey);\n }\n }\n return true;\n }\n\n handlePageUp(e: GridKeyboardEvent, grid: Grid): boolean {\n const isShiftKey = e.shiftKey;\n\n if (isShiftKey) {\n grid.trimSelectedRanges();\n } else {\n grid.clearSelectedRanges();\n }\n\n const { cursorColumn, selectionEndRow } = grid.state;\n const row: number | null = selectionEndRow;\n const column: number | null = cursorColumn;\n if (row == null) {\n return false;\n }\n const metricState = grid.getMetricState();\n const { metricCalculator } = grid;\n const { bottomVisible, topVisible, hasHorizontalBar } =\n metricCalculator.getMetrics(metricState);\n\n let selectRangeEndPosition = row - (bottomVisible - topVisible);\n selectRangeEndPosition -= hasHorizontalBar ? 0 : 1;\n\n // Don't move beyond the top table row.\n selectRangeEndPosition = Math.max(selectRangeEndPosition, 0);\n const viewportPosition = Math.max(\n selectRangeEndPosition - (row - topVisible),\n 0\n );\n\n grid.moveCursorToPosition(\n column,\n selectRangeEndPosition,\n isShiftKey,\n false\n );\n grid.setViewState({ top: viewportPosition });\n return true;\n }\n\n handlePageDown(e: GridKeyboardEvent, grid: Grid): boolean {\n const isShiftKey = e.shiftKey;\n\n if (isShiftKey) {\n grid.trimSelectedRanges();\n } else {\n grid.clearSelectedRanges();\n }\n\n const { selectionEndRow, cursorColumn } = grid.state;\n const row: number | null = selectionEndRow;\n const column: number | null = cursorColumn;\n if (row === null) {\n return false;\n }\n const metricState = grid.getMetricState();\n const { metricCalculator } = grid;\n const { bottomVisible, topVisible, hasHorizontalBar, rowCount, lastTop } =\n metricCalculator.getMetrics(metricState);\n const lastRowIndex = rowCount - 1;\n\n let selectRangeEndPosition = bottomVisible - topVisible + row;\n selectRangeEndPosition += hasHorizontalBar ? 0 : 1;\n\n // Don't move beyond the bottom table row.\n selectRangeEndPosition = Math.min(selectRangeEndPosition, lastRowIndex);\n\n const viewportPosition = Math.min(\n lastTop,\n selectRangeEndPosition - (row - topVisible)\n );\n grid.moveCursorToPosition(\n column,\n selectRangeEndPosition,\n isShiftKey,\n false\n );\n grid.setViewState({ top: viewportPosition });\n\n return true;\n }\n}\n\nexport default SelectionKeyHandler;\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import Grid from '../Grid';
1
+ import type Grid from '../Grid';
2
2
  import KeyHandler from '../KeyHandler';
3
3
  declare class TreeKeyHandler extends KeyHandler {
4
4
  onDown(event: KeyboardEvent, grid: Grid): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"TreeKeyHandler.d.ts","sourceRoot":"","sources":["../../src/key-handlers/TreeKeyHandler.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,UAAU,MAAM,eAAe,CAAC;AAEvC,cAAM,cAAe,SAAQ,UAAU;IACrC,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO;IAYjD,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO;CA2B3D;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"TreeKeyHandler.d.ts","sourceRoot":"","sources":["../../src/key-handlers/TreeKeyHandler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAEhC,OAAO,UAAU,MAAM,eAAe,CAAC;AAEvC,cAAM,cAAe,SAAQ,UAAU;IACrC,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO;IAYjD,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO;CA2B3D;AAED,eAAe,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeKeyHandler.js","names":["isExpandableGridModel","KeyHandler","TreeKeyHandler","onDown","event","grid","key","handleExpandKey","selectedRanges","state","length","range","startRow","endRow","startColumn","endColumn","metrics","Error","model","props","row","column","modelRow","getModelRow","isRowExpandable","toggleRowExpanded"],"sources":["../../src/key-handlers/TreeKeyHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { isExpandableGridModel } from '../ExpandableGridModel';\nimport Grid from '../Grid';\nimport GridRange from '../GridRange';\nimport KeyHandler from '../KeyHandler';\n\nclass TreeKeyHandler extends KeyHandler {\n onDown(event: KeyboardEvent, grid: Grid): boolean {\n switch (event.key) {\n case 'Enter':\n case ' ': {\n return this.handleExpandKey(event, grid);\n }\n default:\n break;\n }\n return false;\n }\n\n handleExpandKey(event: KeyboardEvent, grid: Grid): boolean {\n const { selectedRanges } = grid.state;\n if (selectedRanges.length === 1) {\n const range = selectedRanges[0] as GridRange;\n if (\n range.startRow === range.endRow &&\n range.startColumn === range.endColumn\n ) {\n if (!grid.metrics) throw new Error('grid.metrics not set');\n\n const { model } = grid.props;\n const { startRow: row, startColumn: column } = range;\n if (row != null) {\n const modelRow = grid.getModelRow(row);\n if (\n (column === 0 || column == null) &&\n isExpandableGridModel(model) &&\n model.isRowExpandable(modelRow)\n ) {\n grid.toggleRowExpanded(row);\n return true;\n }\n }\n }\n }\n return false;\n }\n}\n\nexport default TreeKeyHandler;\n"],"mappings":"AAAA;AAAA,SACSA,qBAAqB;AAAA,OAGvBC,UAAU;AAEjB,MAAMC,cAAc,SAASD,UAAU,CAAC;EACtCE,MAAMA,CAACC,KAAoB,EAAEC,IAAU,EAAW;IAChD,QAAQD,KAAK,CAACE,GAAG;MACf,KAAK,OAAO;MACZ,KAAK,GAAG;QAAE;UACR,OAAO,IAAI,CAACC,eAAe,CAACH,KAAK,EAAEC,IAAI,CAAC;QAC1C;MACA;QACE;IACJ;IACA,OAAO,KAAK;EACd;EAEAE,eAAeA,CAACH,KAAoB,EAAEC,IAAU,EAAW;IACzD,IAAM;MAAEG;IAAe,CAAC,GAAGH,IAAI,CAACI,KAAK;IACrC,IAAID,cAAc,CAACE,MAAM,KAAK,CAAC,EAAE;MAC/B,IAAMC,KAAK,GAAGH,cAAc,CAAC,CAAC,CAAc;MAC5C,IACEG,KAAK,CAACC,QAAQ,KAAKD,KAAK,CAACE,MAAM,IAC/BF,KAAK,CAACG,WAAW,KAAKH,KAAK,CAACI,SAAS,EACrC;QACA,IAAI,CAACV,IAAI,CAACW,OAAO,EAAE,MAAM,IAAIC,KAAK,CAAC,sBAAsB,CAAC;QAE1D,IAAM;UAAEC;QAAM,CAAC,GAAGb,IAAI,CAACc,KAAK;QAC5B,IAAM;UAAEP,QAAQ,EAAEQ,GAAG;UAAEN,WAAW,EAAEO;QAAO,CAAC,GAAGV,KAAK;QACpD,IAAIS,GAAG,IAAI,IAAI,EAAE;UACf,IAAME,QAAQ,GAAGjB,IAAI,CAACkB,WAAW,CAACH,GAAG,CAAC;UACtC,IACE,CAACC,MAAM,KAAK,CAAC,IAAIA,MAAM,IAAI,IAAI,KAC/BrB,qBAAqB,CAACkB,KAAK,CAAC,IAC5BA,KAAK,CAACM,eAAe,CAACF,QAAQ,CAAC,EAC/B;YACAjB,IAAI,CAACoB,iBAAiB,CAACL,GAAG,CAAC;YAC3B,OAAO,IAAI;UACb;QACF;MACF;IACF;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAelB,cAAc"}
1
+ {"version":3,"file":"TreeKeyHandler.js","names":["isExpandableGridModel","KeyHandler","TreeKeyHandler","onDown","event","grid","key","handleExpandKey","selectedRanges","state","length","range","startRow","endRow","startColumn","endColumn","metrics","Error","model","props","row","column","modelRow","getModelRow","isRowExpandable","toggleRowExpanded"],"sources":["../../src/key-handlers/TreeKeyHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { isExpandableGridModel } from '../ExpandableGridModel';\nimport type Grid from '../Grid';\nimport type GridRange from '../GridRange';\nimport KeyHandler from '../KeyHandler';\n\nclass TreeKeyHandler extends KeyHandler {\n onDown(event: KeyboardEvent, grid: Grid): boolean {\n switch (event.key) {\n case 'Enter':\n case ' ': {\n return this.handleExpandKey(event, grid);\n }\n default:\n break;\n }\n return false;\n }\n\n handleExpandKey(event: KeyboardEvent, grid: Grid): boolean {\n const { selectedRanges } = grid.state;\n if (selectedRanges.length === 1) {\n const range = selectedRanges[0] as GridRange;\n if (\n range.startRow === range.endRow &&\n range.startColumn === range.endColumn\n ) {\n if (!grid.metrics) throw new Error('grid.metrics not set');\n\n const { model } = grid.props;\n const { startRow: row, startColumn: column } = range;\n if (row != null) {\n const modelRow = grid.getModelRow(row);\n if (\n (column === 0 || column == null) &&\n isExpandableGridModel(model) &&\n model.isRowExpandable(modelRow)\n ) {\n grid.toggleRowExpanded(row);\n return true;\n }\n }\n }\n }\n return false;\n }\n}\n\nexport default TreeKeyHandler;\n"],"mappings":"AAAA;AAAA,SACSA,qBAAqB;AAAA,OAGvBC,UAAU;AAEjB,MAAMC,cAAc,SAASD,UAAU,CAAC;EACtCE,MAAMA,CAACC,KAAoB,EAAEC,IAAU,EAAW;IAChD,QAAQD,KAAK,CAACE,GAAG;MACf,KAAK,OAAO;MACZ,KAAK,GAAG;QAAE;UACR,OAAO,IAAI,CAACC,eAAe,CAACH,KAAK,EAAEC,IAAI,CAAC;QAC1C;MACA;QACE;IACJ;IACA,OAAO,KAAK;EACd;EAEAE,eAAeA,CAACH,KAAoB,EAAEC,IAAU,EAAW;IACzD,IAAM;MAAEG;IAAe,CAAC,GAAGH,IAAI,CAACI,KAAK;IACrC,IAAID,cAAc,CAACE,MAAM,KAAK,CAAC,EAAE;MAC/B,IAAMC,KAAK,GAAGH,cAAc,CAAC,CAAC,CAAc;MAC5C,IACEG,KAAK,CAACC,QAAQ,KAAKD,KAAK,CAACE,MAAM,IAC/BF,KAAK,CAACG,WAAW,KAAKH,KAAK,CAACI,SAAS,EACrC;QACA,IAAI,CAACV,IAAI,CAACW,OAAO,EAAE,MAAM,IAAIC,KAAK,CAAC,sBAAsB,CAAC;QAE1D,IAAM;UAAEC;QAAM,CAAC,GAAGb,IAAI,CAACc,KAAK;QAC5B,IAAM;UAAEP,QAAQ,EAAEQ,GAAG;UAAEN,WAAW,EAAEO;QAAO,CAAC,GAAGV,KAAK;QACpD,IAAIS,GAAG,IAAI,IAAI,EAAE;UACf,IAAME,QAAQ,GAAGjB,IAAI,CAACkB,WAAW,CAACH,GAAG,CAAC;UACtC,IACE,CAACC,MAAM,KAAK,CAAC,IAAIA,MAAM,IAAI,IAAI,KAC/BrB,qBAAqB,CAACkB,KAAK,CAAC,IAC5BA,KAAK,CAACM,eAAe,CAACF,QAAQ,CAAC,EAC/B;YACAjB,IAAI,CAACoB,iBAAiB,CAACL,GAAG,CAAC;YAC3B,OAAO,IAAI;UACb;QACF;MACF;IACF;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAelB,cAAc"}
@@ -1,7 +1,7 @@
1
- import { EventHandlerResult } from '../EventHandlerResult';
2
- import Grid from '../Grid';
1
+ import { type EventHandlerResult } from '../EventHandlerResult';
2
+ import type Grid from '../Grid';
3
3
  import GridMouseHandler from '../GridMouseHandler';
4
- import { GridPoint } from '../GridUtils';
4
+ import { type GridPoint } from '../GridUtils';
5
5
  /**
6
6
  * Handles clicking on a cell to edit it in an editable grid
7
7
  */
@@ -1 +1 @@
1
- {"version":3,"file":"EditMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/EditMouseHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC;;GAEG;AACH,cAAM,gBAAiB,SAAQ,gBAAgB;IAC7C,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;CAa1E;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"EditMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/EditMouseHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C;;GAEG;AACH,cAAM,gBAAiB,SAAQ,gBAAgB;IAC7C,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;CAa1E;AAED,eAAe,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"EditMouseHandler.js","names":["isEditableGridModel","GridMouseHandler","GridRange","EditMouseHandler","onDoubleClick","_ref","grid","column","row","model","props","isEditableRange","makeCell","startEditing"],"sources":["../../src/mouse-handlers/EditMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { isEditableGridModel } from '../EditableGridModel';\nimport { EventHandlerResult } from '../EventHandlerResult';\nimport Grid from '../Grid';\nimport GridMouseHandler from '../GridMouseHandler';\nimport GridRange from '../GridRange';\nimport { GridPoint } from '../GridUtils';\n\n/**\n * Handles clicking on a cell to edit it in an editable grid\n */\nclass EditMouseHandler extends GridMouseHandler {\n onDoubleClick({ column, row }: GridPoint, grid: Grid): EventHandlerResult {\n const { model } = grid.props;\n if (\n isEditableGridModel(model) &&\n column != null &&\n row != null &&\n model.isEditableRange(GridRange.makeCell(column, row))\n ) {\n grid.startEditing(column, row);\n return true;\n }\n return false;\n }\n}\n\nexport default EditMouseHandler;\n"],"mappings":"AAAA;AAAA,SACSA,mBAAmB;AAAA,OAGrBC,gBAAgB;AAAA,OAChBC,SAAS;AAGhB;AACA;AACA;AACA,MAAMC,gBAAgB,SAASF,gBAAgB,CAAC;EAC9CG,aAAaA,CAAAC,IAAA,EAA6BC,IAAU,EAAsB;IAAA,IAA5D;MAAEC,MAAM;MAAEC;IAAe,CAAC,GAAAH,IAAA;IACtC,IAAM;MAAEI;IAAM,CAAC,GAAGH,IAAI,CAACI,KAAK;IAC5B,IACEV,mBAAmB,CAACS,KAAK,CAAC,IAC1BF,MAAM,IAAI,IAAI,IACdC,GAAG,IAAI,IAAI,IACXC,KAAK,CAACE,eAAe,CAACT,SAAS,CAACU,QAAQ,CAACL,MAAM,EAAEC,GAAG,CAAC,CAAC,EACtD;MACAF,IAAI,CAACO,YAAY,CAACN,MAAM,EAAEC,GAAG,CAAC;MAC9B,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeL,gBAAgB"}
1
+ {"version":3,"file":"EditMouseHandler.js","names":["isEditableGridModel","GridMouseHandler","GridRange","EditMouseHandler","onDoubleClick","_ref","grid","column","row","model","props","isEditableRange","makeCell","startEditing"],"sources":["../../src/mouse-handlers/EditMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { isEditableGridModel } from '../EditableGridModel';\nimport { type EventHandlerResult } from '../EventHandlerResult';\nimport type Grid from '../Grid';\nimport GridMouseHandler from '../GridMouseHandler';\nimport GridRange from '../GridRange';\nimport { type GridPoint } from '../GridUtils';\n\n/**\n * Handles clicking on a cell to edit it in an editable grid\n */\nclass EditMouseHandler extends GridMouseHandler {\n onDoubleClick({ column, row }: GridPoint, grid: Grid): EventHandlerResult {\n const { model } = grid.props;\n if (\n isEditableGridModel(model) &&\n column != null &&\n row != null &&\n model.isEditableRange(GridRange.makeCell(column, row))\n ) {\n grid.startEditing(column, row);\n return true;\n }\n return false;\n }\n}\n\nexport default EditMouseHandler;\n"],"mappings":"AAAA;AAAA,SACSA,mBAAmB;AAAA,OAGrBC,gBAAgB;AAAA,OAChBC,SAAS;AAGhB;AACA;AACA;AACA,MAAMC,gBAAgB,SAASF,gBAAgB,CAAC;EAC9CG,aAAaA,CAAAC,IAAA,EAA6BC,IAAU,EAAsB;IAAA,IAA5D;MAAEC,MAAM;MAAEC;IAAe,CAAC,GAAAH,IAAA;IACtC,IAAM;MAAEI;IAAM,CAAC,GAAGH,IAAI,CAACI,KAAK;IAC5B,IACEV,mBAAmB,CAACS,KAAK,CAAC,IAC1BF,MAAM,IAAI,IAAI,IACdC,GAAG,IAAI,IAAI,IACXC,KAAK,CAACE,eAAe,CAACT,SAAS,CAACU,QAAQ,CAACL,MAAM,EAAEC,GAAG,CAAC,CAAC,EACtD;MACAF,IAAI,CAACO,YAAY,CAACN,MAAM,EAAEC,GAAG,CAAC;MAC9B,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeL,gBAAgB"}
@@ -1,7 +1,7 @@
1
- import Grid from '../Grid';
2
- import { GridPoint } from '../GridUtils';
3
- import GridMouseHandler, { GridMouseEvent } from '../GridMouseHandler';
4
- import { EventHandlerResult } from '../EventHandlerResult';
1
+ import type Grid from '../Grid';
2
+ import { type GridPoint } from '../GridUtils';
3
+ import GridMouseHandler, { type GridMouseEvent } from '../GridMouseHandler';
4
+ import { type EventHandlerResult } from '../EventHandlerResult';
5
5
  import type { VisibleIndex, ModelIndex, MoveOperation, Coordinate } from '../GridMetrics';
6
6
  import type { BoundedAxisRange } from '../GridAxisRange';
7
7
  export interface DraggingColumn {
@@ -1 +1 @@
1
- {"version":3,"file":"GridColumnMoveMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridColumnMoveMouseHandler.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAkB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,gBAAgB,EAAE,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EAEV,aAAa,EACb,UAAU,EACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAQzD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,gBAAgB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,UAAU;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,gBAAgB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAuFD,cAAM,0BAA2B,SAAQ,gBAAgB;IACvD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE7B,OAAO,CAAC,cAAc,CAAC,CAAS;IAEhC,OAAO,CAAC,aAAa,CAAC,CAAS;IAE/B,OAAO,CAAC,gBAAgB,CAAC,CAAY;IAErC,OAAO,CAAC,iBAAiB,CAAC,CAAS;IAEnC,OAAO,CAAC,kBAAkB,CAAC,CAAmB;IAE9C,OAAO,CAAC,cAAc,CAA+B;IAErD,OAAO,CAAC,iBAAiB;IAqFzB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,IAAI,kBAAkB;IAK7B,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAkC5D,MAAM,CACJ,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,cAAc,GACpB,kBAAkB;IA+FrB;;;;;OAKG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAwSpE;;;;;;;OAOG;IACH,UAAU,CACR,cAAc,EAAE,UAAU,EAC1B,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,SAAS,aAAa,EAAE,GACrC,aAAa,EAAE;IAqBlB,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;CAgB3D;AAED,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"GridColumnMoveMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridColumnMoveMouseHandler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAkB,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,gBAAgB,EAAE,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EAEV,aAAa,EACb,UAAU,EACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAQzD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,gBAAgB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,UAAU;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,gBAAgB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAuFD,cAAM,0BAA2B,SAAQ,gBAAgB;IACvD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE7B,OAAO,CAAC,cAAc,CAAC,CAAS;IAEhC,OAAO,CAAC,aAAa,CAAC,CAAS;IAE/B,OAAO,CAAC,gBAAgB,CAAC,CAAY;IAErC,OAAO,CAAC,iBAAiB,CAAC,CAAS;IAEnC,OAAO,CAAC,kBAAkB,CAAC,CAAmB;IAE9C,OAAO,CAAC,cAAc,CAA+B;IAErD,OAAO,CAAC,iBAAiB;IAqFzB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,IAAI,kBAAkB;IAK7B,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAkC5D,MAAM,CACJ,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,cAAc,GACpB,kBAAkB;IA+FrB;;;;;OAKG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAwSpE;;;;;;;OAOG;IACH,UAAU,CACR,cAAc,EAAE,UAAU,EAC1B,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,SAAS,aAAa,EAAE,GACrC,aAAa,EAAE;IAqBlB,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;CAgB3D;AAED,eAAe,0BAA0B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"GridColumnMoveMouseHandler.js","names":["clamp","assertNotNull","GridUtils","GridMouseHandler","SLOPPY_CLICK_DISTANCE","SCROLL_INTERVAL","SCROLL_DELTA","getColumnInfo","visibleIndex","depth","metrics","model","_modelColumns$get","modelColumns","movedColumns","allColumnXs","columnCount","allColumnWidths","userColumnWidths","calculatedColumnWidths","floatingLeftWidth","maxX","modelIndex","get","getModelIndex","group","getColumnHeaderGroup","isColumnGroup","left","right","range","_allColumnXs$get","_allColumnXs$get2","_allColumnWidths$get","startVisibleIndex","endVisibleIndex","getVisibleRange","_ref","_ref2","_allColumnWidths$get2","possibleLeft","width","GridColumnMoveMouseHandler","constructor","arguments","_defineProperty","setScrollInterval","grid","direction","scrollingInterval","scrollingDirection","window","setInterval","lastLeft","leftOffset","nextLeft","nextOffset","_userColumnWidths$get","prevColumnWidth","undefined","leftColumnWidth","_userColumnWidths$get2","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","_draggingParentGroup$","gridX","_objectSpread","draggingColumnDepth","columnHeaderMaxDepth","isDraggingLeft","floatingDraggingLeft","floatingDraggingRight","swapColumn","getColumnAtX","parentGroup","getColumnHeaderParentGroup","parentVisibleRange","_allColumnXs$get3","newMovedColumns","moveColumn","_getColumnInfo","parentRight","toVisibleIndex","toColumnInfo","_toColumnInfo$left","_toColumnInfo$right","switchPoint","draggingParentGroup","maxDepthSwapGroup","maxSwapDepth","to","moveRange","moveItem","moveDistance","newDraggingRange","onUp"],"sources":["../../src/mouse-handlers/GridColumnMoveMouseHandler.ts"],"sourcesContent":["import clamp from 'lodash.clamp';\nimport { assertNotNull } from '@deephaven/utils';\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 allColumnXs,\n columnCount,\n allColumnWidths,\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] =\n group.getVisibleRange(movedColumns);\n\n left = allColumnXs.get(startVisibleIndex) ?? floatingLeftWidth;\n right =\n (allColumnXs.get(endVisibleIndex) ?? maxX) +\n (allColumnWidths.get(endVisibleIndex) ?? 0);\n range = [startVisibleIndex, endVisibleIndex];\n } else {\n const possibleLeft = allColumnXs.get(visibleIndex);\n if (possibleLeft == null) {\n return null;\n }\n\n left = possibleLeft;\n right =\n left +\n (allColumnWidths.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 allColumnWidths,\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 = allColumnWidths.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 const { metrics } = grid;\n assertNotNull(metrics, 'Metrics not set');\n const { gridX } = metrics;\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 - gridX,\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\n const { floatingLeftWidth, width, columnHeaderMaxDepth, allColumnXs } =\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 - gridX;\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 ) + gridX,\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 - (allColumnXs.get(parentVisibleRange[0]) ?? 0);\n this.draggingColumn = {\n ...this.draggingColumn,\n left: mouseX - this.draggingOffset - gridX,\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 - gridX,\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 - gridX,\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: readonly 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: readonly 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","assertNotNull","GridUtils","GridMouseHandler","SLOPPY_CLICK_DISTANCE","SCROLL_INTERVAL","SCROLL_DELTA","getColumnInfo","visibleIndex","depth","metrics","model","_modelColumns$get","modelColumns","movedColumns","allColumnXs","columnCount","allColumnWidths","userColumnWidths","calculatedColumnWidths","floatingLeftWidth","maxX","modelIndex","get","getModelIndex","group","getColumnHeaderGroup","isColumnGroup","left","right","range","_allColumnXs$get","_allColumnXs$get2","_allColumnWidths$get","startVisibleIndex","endVisibleIndex","getVisibleRange","_ref","_ref2","_allColumnWidths$get2","possibleLeft","width","GridColumnMoveMouseHandler","constructor","arguments","_defineProperty","setScrollInterval","grid","direction","scrollingInterval","scrollingDirection","window","setInterval","lastLeft","leftOffset","nextLeft","nextOffset","_userColumnWidths$get","prevColumnWidth","undefined","leftColumnWidth","_userColumnWidths$get2","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","_draggingParentGroup$","gridX","_objectSpread","draggingColumnDepth","columnHeaderMaxDepth","isDraggingLeft","floatingDraggingLeft","floatingDraggingRight","swapColumn","getColumnAtX","parentGroup","getColumnHeaderParentGroup","parentVisibleRange","_allColumnXs$get3","newMovedColumns","moveColumn","_getColumnInfo","parentRight","toVisibleIndex","toColumnInfo","_toColumnInfo$left","_toColumnInfo$right","switchPoint","draggingParentGroup","maxDepthSwapGroup","maxSwapDepth","to","moveRange","moveItem","moveDistance","newDraggingRange","onUp"],"sources":["../../src/mouse-handlers/GridColumnMoveMouseHandler.ts"],"sourcesContent":["import clamp from 'lodash.clamp';\nimport { assertNotNull } from '@deephaven/utils';\nimport type Grid from '../Grid';\nimport GridUtils, { type GridPoint } from '../GridUtils';\nimport GridMouseHandler, { type GridMouseEvent } from '../GridMouseHandler';\nimport { type 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 allColumnXs,\n columnCount,\n allColumnWidths,\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] =\n group.getVisibleRange(movedColumns);\n\n left = allColumnXs.get(startVisibleIndex) ?? floatingLeftWidth;\n right =\n (allColumnXs.get(endVisibleIndex) ?? maxX) +\n (allColumnWidths.get(endVisibleIndex) ?? 0);\n range = [startVisibleIndex, endVisibleIndex];\n } else {\n const possibleLeft = allColumnXs.get(visibleIndex);\n if (possibleLeft == null) {\n return null;\n }\n\n left = possibleLeft;\n right =\n left +\n (allColumnWidths.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 allColumnWidths,\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 = allColumnWidths.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 const { metrics } = grid;\n assertNotNull(metrics, 'Metrics not set');\n const { gridX } = metrics;\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 - gridX,\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\n const { floatingLeftWidth, width, columnHeaderMaxDepth, allColumnXs } =\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 - gridX;\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 ) + gridX,\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 - (allColumnXs.get(parentVisibleRange[0]) ?? 0);\n this.draggingColumn = {\n ...this.draggingColumn,\n left: mouseX - this.draggingOffset - gridX,\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 - gridX,\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 - gridX,\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: readonly 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: readonly 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,10 +1,10 @@
1
- import Grid from '../Grid';
2
- import GridMetricCalculator from '../GridMetricCalculator';
1
+ import type Grid from '../Grid';
2
+ import type GridMetricCalculator from '../GridMetricCalculator';
3
3
  import type { ModelIndex, GridMetrics } from '../GridMetrics';
4
4
  import type GridModel from '../GridModel';
5
5
  import type { GridTheme } from '../GridTheme';
6
- import GridUtils, { GridPoint } from '../GridUtils';
7
- import GridSeparatorMouseHandler, { GridSeparator } from './GridSeparatorMouseHandler';
6
+ import GridUtils, { type GridPoint } from '../GridUtils';
7
+ import GridSeparatorMouseHandler, { type GridSeparator } from './GridSeparatorMouseHandler';
8
8
  declare class GridColumnSeparatorMouseHandler extends GridSeparatorMouseHandler {
9
9
  static getColumnSeparator(gridPoint: GridPoint, metrics: GridMetrics, model: GridModel, theme: GridTheme): GridSeparator | null;
10
10
  hiddenCursor: string;
@@ -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,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,wBAAkC;IAEtD,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"}
1
+ {"version":3,"file":"GridColumnSeparatorMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridColumnSeparatorMouseHandler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,KAAK,oBAAoB,MAAM,yBAAyB,CAAC;AAChE,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,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,yBAAyB,EAAE,EAChC,KAAK,aAAa,EACnB,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,wBAAkC;IAEtD,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"GridColumnSeparatorMouseHandler.js","names":["GridUtils","GridSeparatorMouseHandler","GridColumnSeparatorMouseHandler","constructor","arguments","_defineProperty","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 initialSizesProperty = 'initialColumnWidths' 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;EAAAE,YAAA;IAAA,SAAAC,SAAA;IAAAC,eAAA,uBAuCvD,UAAU;IAAAA,eAAA,wBAET,YAAY;IAAAA,eAAA,wBAEZ,GAAG;IAAAA,eAAA,4BAEC,kBAAkB;IAAAA,eAAA,gCAEd,iBAAiB;IAAAA,eAAA,+BAElB,qBAAqB;IAAAA,eAAA,yBAE3B,gBAAgB;IAAAA,eAAA,kCAEP,wBAAwB;IAAAA,eAAA,+BAE3B,qBAAqB;IAAAA,eAAA,+BAErB,cAAc;IAAAA,eAAA,6BAEhB,aAAa;IAAAA,eAAA,8BAEZ,cAAc;IAAAA,eAAA,yBAEnBL,SAAS,CAACM,gBAAgB;IAAAD,eAAA,2BAExBL,SAAS,CAACO,kBAAkB;IAAAF,eAAA,uBAwBhCH,+BAA+B,CAACM,kBAAkB;EAAA;EAxFjE,OAAOA,kBAAkBA,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,GAAGlB,SAAS,CAACmB,uBAAuB,CACtDL,CAAC,EACDC,CAAC,EACDL,OAAO,EACPE,KACF,CAAC;;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;EA8BAC,OAAOA,CACLC,gBAAsC,EACtCC,UAAsB,EACtBC,IAAY,EACN;IACNF,gBAAgB,CAACG,cAAc,CAACF,UAAU,EAAEC,IAAI,CAAC;EACnD;EAEAE,SAASA,CACPJ,gBAAsC,EACtCC,UAAsB,EAChB;IACND,gBAAgB,CAACK,gBAAgB,CAACJ,UAAU,CAAC;EAC/C;EAEAK,eAAeA,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,eAAe/B,+BAA+B"}
1
+ {"version":3,"file":"GridColumnSeparatorMouseHandler.js","names":["GridUtils","GridSeparatorMouseHandler","GridColumnSeparatorMouseHandler","constructor","arguments","_defineProperty","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 type Grid from '../Grid';\nimport type GridMetricCalculator from '../GridMetricCalculator';\nimport type { ModelIndex, GridMetrics } from '../GridMetrics';\nimport type GridModel from '../GridModel';\nimport type { GridTheme } from '../GridTheme';\nimport GridUtils, { type GridPoint } from '../GridUtils';\nimport GridSeparatorMouseHandler, {\n type 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 initialSizesProperty = 'initialColumnWidths' 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;EAAAE,YAAA;IAAA,SAAAC,SAAA;IAAAC,eAAA,uBAuCvD,UAAU;IAAAA,eAAA,wBAET,YAAY;IAAAA,eAAA,wBAEZ,GAAG;IAAAA,eAAA,4BAEC,kBAAkB;IAAAA,eAAA,gCAEd,iBAAiB;IAAAA,eAAA,+BAElB,qBAAqB;IAAAA,eAAA,yBAE3B,gBAAgB;IAAAA,eAAA,kCAEP,wBAAwB;IAAAA,eAAA,+BAE3B,qBAAqB;IAAAA,eAAA,+BAErB,cAAc;IAAAA,eAAA,6BAEhB,aAAa;IAAAA,eAAA,8BAEZ,cAAc;IAAAA,eAAA,yBAEnBL,SAAS,CAACM,gBAAgB;IAAAD,eAAA,2BAExBL,SAAS,CAACO,kBAAkB;IAAAF,eAAA,uBAwBhCH,+BAA+B,CAACM,kBAAkB;EAAA;EAxFjE,OAAOA,kBAAkBA,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,GAAGlB,SAAS,CAACmB,uBAAuB,CACtDL,CAAC,EACDC,CAAC,EACDL,OAAO,EACPE,KACF,CAAC;;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;EA8BAC,OAAOA,CACLC,gBAAsC,EACtCC,UAAsB,EACtBC,IAAY,EACN;IACNF,gBAAgB,CAACG,cAAc,CAACF,UAAU,EAAEC,IAAI,CAAC;EACnD;EAEAE,SAASA,CACPJ,gBAAsC,EACtCC,UAAsB,EAChB;IACND,gBAAgB,CAACK,gBAAgB,CAACJ,UAAU,CAAC;EAC/C;EAEAK,eAAeA,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,eAAe/B,+BAA+B"}
@@ -1,8 +1,8 @@
1
- import { EventHandlerResult } from '../EventHandlerResult';
2
- import Grid from '../Grid';
3
- import { VisibleIndex } from '../GridMetrics';
1
+ import { type EventHandlerResult } from '../EventHandlerResult';
2
+ import type Grid from '../Grid';
3
+ import { type VisibleIndex } from '../GridMetrics';
4
4
  import GridMouseHandler from '../GridMouseHandler';
5
- import { GridPoint } from '../GridUtils';
5
+ import { type GridPoint } from '../GridUtils';
6
6
  declare class GridHorizontalScrollBarMouseHandler extends GridMouseHandler {
7
7
  static getLeftWithOffsetFromRawLeft(grid: Grid, rawLeft: number): {
8
8
  left: VisibleIndex;
@@ -1 +1 @@
1
- {"version":3,"file":"GridHorizontalScrollBarMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridHorizontalScrollBarMouseHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,cAAM,mCAAoC,SAAQ,gBAAgB;IAChE,MAAM,CAAC,4BAA4B,CACjC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,GACd;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAuB7C,OAAO,CAAC,UAAU,CAAC,CAAS;IAG5B,MAAM,SAAa;IAEnB,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO;IAoBxD,iBAAiB,CACf,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,GACT;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAqCvC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAgC5D,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAiB5D,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAI5D,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAY1D,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;CAG9D;AAED,eAAe,mCAAmC,CAAC"}
1
+ {"version":3,"file":"GridHorizontalScrollBarMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridHorizontalScrollBarMouseHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,cAAM,mCAAoC,SAAQ,gBAAgB;IAChE,MAAM,CAAC,4BAA4B,CACjC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,GACd;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAuB7C,OAAO,CAAC,UAAU,CAAC,CAAS;IAG5B,MAAM,SAAa;IAEnB,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO;IAoBxD,iBAAiB,CACf,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,GACT;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAqCvC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAgC5D,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAiB5D,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAI5D,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAY1D,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;CAG9D;AAED,eAAe,mCAAmC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"GridHorizontalScrollBarMouseHandler.js","names":["clamp","GridMouseHandler","GridHorizontalScrollBarMouseHandler","constructor","arguments","_defineProperty","getLeftWithOffsetFromRawLeft","grid","rawLeft","theme","getTheme","metrics","metricCalculator","Error","scrollSnapToColumn","left","Math","round","leftOffset","floor","leftOffsetPercent","columnWidth","allColumnWidths","get","metricState","getMetricState","getVisibleColumnWidth","isInScrollBar","gridPoint","scrollBarSize","scrollBarHoverSize","x","y","barLeft","barWidth","height","hasHorizontalBar","getLeftWithOffset","_this$dragOffset","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.allColumnWidths.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 { left: newLeft, 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 { left: newLeft, 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
+ {"version":3,"file":"GridHorizontalScrollBarMouseHandler.js","names":["clamp","GridMouseHandler","GridHorizontalScrollBarMouseHandler","constructor","arguments","_defineProperty","getLeftWithOffsetFromRawLeft","grid","rawLeft","theme","getTheme","metrics","metricCalculator","Error","scrollSnapToColumn","left","Math","round","leftOffset","floor","leftOffsetPercent","columnWidth","allColumnWidths","get","metricState","getMetricState","getVisibleColumnWidth","isInScrollBar","gridPoint","scrollBarSize","scrollBarHoverSize","x","y","barLeft","barWidth","height","hasHorizontalBar","getLeftWithOffset","_this$dragOffset","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 { type EventHandlerResult } from '../EventHandlerResult';\nimport type Grid from '../Grid';\nimport { type VisibleIndex } from '../GridMetrics';\nimport GridMouseHandler from '../GridMouseHandler';\nimport { type 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.allColumnWidths.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 { left: newLeft, 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 { left: newLeft, 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,7 +1,7 @@
1
- import { EventHandlerResult } from '../EventHandlerResult';
2
- import Grid from '../Grid';
1
+ import { type EventHandlerResult } from '../EventHandlerResult';
2
+ import type Grid from '../Grid';
3
3
  import GridMouseHandler from '../GridMouseHandler';
4
- import { GridPoint } from '../GridUtils';
4
+ import { type GridPoint } from '../GridUtils';
5
5
  declare class GridRowMoveMouseHandler extends GridMouseHandler {
6
6
  cursor: string;
7
7
  private draggingOffset?;
@@ -1 +1 @@
1
- {"version":3,"file":"GridRowMoveMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridRowMoveMouseHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAkB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpD,cAAM,uBAAwB,SAAQ,gBAAgB;IACpD,MAAM,SAAU;IAEhB,OAAO,CAAC,cAAc,CAAC,CAAS;IAEhC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAgB5D,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IA2F5D,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;CAa3D;AAED,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"GridRowMoveMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridRowMoveMouseHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAkB,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,cAAM,uBAAwB,SAAQ,gBAAgB;IACpD,MAAM,SAAU;IAEhB,OAAO,CAAC,cAAc,CAAC,CAAS;IAEhC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAgB5D,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IA2F5D,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;CAa3D;AAED,eAAe,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"GridRowMoveMouseHandler.js","names":["getOrThrow","GridMouseHandler","GridUtils","GridRowMoveMouseHandler","constructor","arguments","_defineProperty","onDown","gridPoint","grid","model","props","x","y","row","metrics","Error","columnHeaderHeight","rowHeaderWidth","allRowYs","isRowMovable","rowY","draggingOffset","setState","draggingRowOffset","onDrag","draggingRow","state","mouseX","mouseY","getGridPointFromXY","isDragging","top","lastTop","bottom","bottomVisible","rowCount","allRowHeights","height","minY","topRow","maxY","bottomRow","movedRows","moveItem","minMoveY","maxMoveY","onUp","undefined"],"sources":["../../src/mouse-handlers/GridRowMoveMouseHandler.ts"],"sourcesContent":["import { getOrThrow } from '@deephaven/utils';\nimport { EventHandlerResult } from '../EventHandlerResult';\nimport Grid from '../Grid';\nimport GridMouseHandler from '../GridMouseHandler';\nimport GridUtils, { GridPoint } from '../GridUtils';\n\nclass GridRowMoveMouseHandler extends GridMouseHandler {\n cursor = 'move';\n\n private draggingOffset?: number;\n\n onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n const { model } = grid.props;\n const { x, y, row } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { columnHeaderHeight, rowHeaderWidth, allRowYs } = metrics;\n\n if (x <= rowHeaderWidth && row !== null && model.isRowMovable(row)) {\n const rowY = getOrThrow(allRowYs, row);\n this.draggingOffset = y - rowY - columnHeaderHeight;\n grid.setState({ draggingRowOffset: this.draggingOffset });\n }\n return false;\n }\n\n onDrag(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.draggingOffset == null) {\n return false;\n }\n\n const { model } = grid.props;\n let { draggingRow } = grid.state;\n const { mouseX, mouseY } = grid.state;\n if (mouseX == null || mouseY == null) {\n return false;\n }\n\n if (draggingRow == null) {\n const { row } = grid.getGridPointFromXY(mouseX, mouseY);\n if (row != null && !model.isRowMovable(row)) {\n return false;\n }\n\n draggingRow = row;\n\n grid.setState({ draggingRow, isDragging: true });\n\n if (draggingRow == null) {\n return false;\n }\n }\n\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const {\n top,\n lastTop,\n bottom,\n bottomVisible,\n rowCount,\n columnHeaderHeight,\n allRowHeights,\n allRowYs,\n height,\n } = metrics;\n let minY = columnHeaderHeight;\n if (top < draggingRow) {\n const topRow = draggingRow - 1;\n minY =\n getOrThrow(allRowYs, topRow) +\n getOrThrow(allRowHeights, topRow) * 0.5 +\n columnHeaderHeight;\n }\n\n let maxY = height;\n if (draggingRow < bottom) {\n const bottomRow = draggingRow + 1;\n maxY =\n getOrThrow(allRowYs, bottomRow) +\n getOrThrow(allRowHeights, bottomRow) * 0.5 +\n columnHeaderHeight;\n }\n\n let { movedRows } = grid.state;\n if (\n mouseY < minY &&\n draggingRow > 0 &&\n model.isRowMovable(draggingRow - 1)\n ) {\n movedRows = GridUtils.moveItem(draggingRow, draggingRow - 1, movedRows);\n draggingRow -= 1;\n } else if (\n maxY < mouseY &&\n draggingRow < rowCount - 1 &&\n model.isRowMovable(draggingRow + 1)\n ) {\n movedRows = GridUtils.moveItem(draggingRow, draggingRow + 1, movedRows);\n draggingRow += 1;\n }\n grid.setState({ movedRows, draggingRow });\n\n const minMoveY = columnHeaderHeight + getOrThrow(allRowHeights, top) * 0.5;\n const maxMoveY =\n columnHeaderHeight +\n getOrThrow(allRowYs, bottomVisible) +\n getOrThrow(allRowHeights, bottomVisible) * 0.5;\n if (mouseY < minMoveY && top > 0) {\n grid.setState({ top: top - 1 });\n } else if (mouseY > maxMoveY && top < lastTop) {\n grid.setState({ top: top + 1 });\n }\n\n return true;\n }\n\n onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.draggingOffset !== undefined) {\n this.draggingOffset = undefined;\n grid.setState({\n draggingRowOffset: null,\n draggingRow: null,\n isDragging: false,\n });\n return true;\n }\n\n return false;\n }\n}\n\nexport default GridRowMoveMouseHandler;\n"],"mappings":"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"}
1
+ {"version":3,"file":"GridRowMoveMouseHandler.js","names":["getOrThrow","GridMouseHandler","GridUtils","GridRowMoveMouseHandler","constructor","arguments","_defineProperty","onDown","gridPoint","grid","model","props","x","y","row","metrics","Error","columnHeaderHeight","rowHeaderWidth","allRowYs","isRowMovable","rowY","draggingOffset","setState","draggingRowOffset","onDrag","draggingRow","state","mouseX","mouseY","getGridPointFromXY","isDragging","top","lastTop","bottom","bottomVisible","rowCount","allRowHeights","height","minY","topRow","maxY","bottomRow","movedRows","moveItem","minMoveY","maxMoveY","onUp","undefined"],"sources":["../../src/mouse-handlers/GridRowMoveMouseHandler.ts"],"sourcesContent":["import { getOrThrow } from '@deephaven/utils';\nimport { type EventHandlerResult } from '../EventHandlerResult';\nimport type Grid from '../Grid';\nimport GridMouseHandler from '../GridMouseHandler';\nimport GridUtils, { type GridPoint } from '../GridUtils';\n\nclass GridRowMoveMouseHandler extends GridMouseHandler {\n cursor = 'move';\n\n private draggingOffset?: number;\n\n onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n const { model } = grid.props;\n const { x, y, row } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { columnHeaderHeight, rowHeaderWidth, allRowYs } = metrics;\n\n if (x <= rowHeaderWidth && row !== null && model.isRowMovable(row)) {\n const rowY = getOrThrow(allRowYs, row);\n this.draggingOffset = y - rowY - columnHeaderHeight;\n grid.setState({ draggingRowOffset: this.draggingOffset });\n }\n return false;\n }\n\n onDrag(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.draggingOffset == null) {\n return false;\n }\n\n const { model } = grid.props;\n let { draggingRow } = grid.state;\n const { mouseX, mouseY } = grid.state;\n if (mouseX == null || mouseY == null) {\n return false;\n }\n\n if (draggingRow == null) {\n const { row } = grid.getGridPointFromXY(mouseX, mouseY);\n if (row != null && !model.isRowMovable(row)) {\n return false;\n }\n\n draggingRow = row;\n\n grid.setState({ draggingRow, isDragging: true });\n\n if (draggingRow == null) {\n return false;\n }\n }\n\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const {\n top,\n lastTop,\n bottom,\n bottomVisible,\n rowCount,\n columnHeaderHeight,\n allRowHeights,\n allRowYs,\n height,\n } = metrics;\n let minY = columnHeaderHeight;\n if (top < draggingRow) {\n const topRow = draggingRow - 1;\n minY =\n getOrThrow(allRowYs, topRow) +\n getOrThrow(allRowHeights, topRow) * 0.5 +\n columnHeaderHeight;\n }\n\n let maxY = height;\n if (draggingRow < bottom) {\n const bottomRow = draggingRow + 1;\n maxY =\n getOrThrow(allRowYs, bottomRow) +\n getOrThrow(allRowHeights, bottomRow) * 0.5 +\n columnHeaderHeight;\n }\n\n let { movedRows } = grid.state;\n if (\n mouseY < minY &&\n draggingRow > 0 &&\n model.isRowMovable(draggingRow - 1)\n ) {\n movedRows = GridUtils.moveItem(draggingRow, draggingRow - 1, movedRows);\n draggingRow -= 1;\n } else if (\n maxY < mouseY &&\n draggingRow < rowCount - 1 &&\n model.isRowMovable(draggingRow + 1)\n ) {\n movedRows = GridUtils.moveItem(draggingRow, draggingRow + 1, movedRows);\n draggingRow += 1;\n }\n grid.setState({ movedRows, draggingRow });\n\n const minMoveY = columnHeaderHeight + getOrThrow(allRowHeights, top) * 0.5;\n const maxMoveY =\n columnHeaderHeight +\n getOrThrow(allRowYs, bottomVisible) +\n getOrThrow(allRowHeights, bottomVisible) * 0.5;\n if (mouseY < minMoveY && top > 0) {\n grid.setState({ top: top - 1 });\n } else if (mouseY > maxMoveY && top < lastTop) {\n grid.setState({ top: top + 1 });\n }\n\n return true;\n }\n\n onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.draggingOffset !== undefined) {\n this.draggingOffset = undefined;\n grid.setState({\n draggingRowOffset: null,\n draggingRow: null,\n isDragging: false,\n });\n return true;\n }\n\n return false;\n }\n}\n\nexport default GridRowMoveMouseHandler;\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- import Grid from '../Grid';
2
- import GridMetricCalculator from '../GridMetricCalculator';
1
+ import type Grid from '../Grid';
2
+ import type GridMetricCalculator from '../GridMetricCalculator';
3
3
  import type { ModelIndex, GridMetrics } from '../GridMetrics';
4
4
  import type GridModel from '../GridModel';
5
- import { GridTheme } from '../GridTheme';
6
- import GridUtils, { GridPoint } from '../GridUtils';
7
- import GridSeparatorMouseHandler, { GridSeparator } from './GridSeparatorMouseHandler';
5
+ import { type GridTheme } from '../GridTheme';
6
+ import GridUtils, { type GridPoint } from '../GridUtils';
7
+ import GridSeparatorMouseHandler, { type GridSeparator } from './GridSeparatorMouseHandler';
8
8
  declare class GridRowSeparatorMouseHandler extends GridSeparatorMouseHandler {
9
9
  static getRowSeparator(gridPoint: GridPoint, metrics: GridMetrics, model: GridModel, theme: GridTheme): GridSeparator | null;
10
10
  hiddenCursor: string;