@deephaven/grid 0.4.1-modules.0 → 0.5.2-beta.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 (74) hide show
  1. package/dist/CellInputField.js +88 -40
  2. package/dist/CellInputField.js.map +1 -1
  3. package/dist/Grid.js +1484 -1449
  4. package/dist/Grid.js.map +1 -1
  5. package/dist/GridColorUtils.js +51 -18
  6. package/dist/GridColorUtils.js.map +1 -1
  7. package/dist/GridMetricCalculator.js +994 -1017
  8. package/dist/GridMetricCalculator.js.map +1 -1
  9. package/dist/GridModel.js +286 -171
  10. package/dist/GridModel.js.map +1 -1
  11. package/dist/GridMouseHandler.js +59 -39
  12. package/dist/GridMouseHandler.js.map +1 -1
  13. package/dist/GridRange.js +630 -572
  14. package/dist/GridRange.js.map +1 -1
  15. package/dist/GridRenderer.d.ts.map +1 -1
  16. package/dist/GridRenderer.js +1564 -1650
  17. package/dist/GridRenderer.js.map +1 -1
  18. package/dist/GridTestUtils.js +29 -15
  19. package/dist/GridTestUtils.js.map +1 -1
  20. package/dist/GridUtils.js +717 -679
  21. package/dist/GridUtils.js.map +1 -1
  22. package/dist/KeyHandler.js +18 -6
  23. package/dist/KeyHandler.js.map +1 -1
  24. package/dist/MockGridModel.js +210 -105
  25. package/dist/MockGridModel.js.map +1 -1
  26. package/dist/MockTreeGridModel.js +183 -113
  27. package/dist/MockTreeGridModel.js.map +1 -1
  28. package/dist/errors/PasteError.js +44 -5
  29. package/dist/errors/PasteError.js.map +1 -1
  30. package/dist/errors/index.js +1 -1
  31. package/dist/errors/index.js.map +1 -1
  32. package/dist/index.js +15 -15
  33. package/dist/index.js.map +1 -1
  34. package/dist/key-handlers/EditKeyHandler.js +75 -42
  35. package/dist/key-handlers/EditKeyHandler.js.map +1 -1
  36. package/dist/key-handlers/PasteKeyHandler.js +78 -42
  37. package/dist/key-handlers/PasteKeyHandler.js.map +1 -1
  38. package/dist/key-handlers/SelectionKeyHandler.js +234 -220
  39. package/dist/key-handlers/SelectionKeyHandler.js.map +1 -1
  40. package/dist/key-handlers/TreeKeyHandler.js +72 -42
  41. package/dist/key-handlers/TreeKeyHandler.js.map +1 -1
  42. package/dist/key-handlers/index.js +4 -4
  43. package/dist/key-handlers/index.js.map +1 -1
  44. package/dist/memoizeClear.js +1 -1
  45. package/dist/memoizeClear.js.map +1 -1
  46. package/dist/mouse-handlers/EditMouseHandler.js +50 -18
  47. package/dist/mouse-handlers/EditMouseHandler.js.map +1 -1
  48. package/dist/mouse-handlers/GridColumnMoveMouseHandler.js +163 -141
  49. package/dist/mouse-handlers/GridColumnMoveMouseHandler.js.map +1 -1
  50. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js +86 -47
  51. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js.map +1 -1
  52. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.d.ts.map +1 -1
  53. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js +171 -143
  54. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js.map +1 -1
  55. package/dist/mouse-handlers/GridRowMoveMouseHandler.js +147 -125
  56. package/dist/mouse-handlers/GridRowMoveMouseHandler.js.map +1 -1
  57. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js +86 -47
  58. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js.map +1 -1
  59. package/dist/mouse-handlers/GridRowTreeMouseHandler.js +76 -46
  60. package/dist/mouse-handlers/GridRowTreeMouseHandler.js.map +1 -1
  61. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.d.ts.map +1 -1
  62. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js +62 -31
  63. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js.map +1 -1
  64. package/dist/mouse-handlers/GridSelectionMouseHandler.js +222 -200
  65. package/dist/mouse-handlers/GridSelectionMouseHandler.js.map +1 -1
  66. package/dist/mouse-handlers/GridSeparatorMouseHandler.js +253 -206
  67. package/dist/mouse-handlers/GridSeparatorMouseHandler.js.map +1 -1
  68. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.d.ts.map +1 -1
  69. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js +172 -144
  70. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js.map +1 -1
  71. package/dist/mouse-handlers/index.js +10 -10
  72. package/dist/mouse-handlers/index.js.map +1 -1
  73. package/dist/tsconfig.tsbuildinfo +1 -1
  74. package/package.json +4 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/GridUtils.js"],"names":["GridRange","GridUtils","getGridPointFromXY","x","y","metrics","column","getColumnAtX","row","getRowAtY","iterateFloatingStart","start","total","callback","i","result","undefined","iterateFloatingEnd","end","iterateFloating","iterateAllItems","visibleStart","visibleEnd","floatingStartCount","floatingEndCount","totalCount","visibleStartIndex","Math","max","visibleEndIndex","min","isInItem","itemIndex","itemXs","itemSizes","itemX","get","itemSize","getItemAtOffset","offset","itemCount","floatingStart","floatingEnd","items","floatingItem","item","length","columnCount","floatingLeftColumnCount","floatingRightColumnCount","visibleColumns","visibleColumnXs","visibleColumnWidths","gridX","floatingTopRowCount","floatingBottomRowCount","rowCount","visibleRows","visibleRowYs","visibleRowHeights","gridY","getNextShownItem","startIndex","modelIndexes","visibleItems","userSizes","visibleItemIndex","findIndex","value","modelIndex","getNextShownColumn","modelColumns","userColumnWidths","getNextShownRow","modelRows","userRowHeights","getColumnSeparatorIndex","theme","rowHeaderWidth","columnHeaderHeight","allowColumnResize","headerSeparatorHandleSize","halfSeparatorSize","isPreviousColumnHidden","columnX","columnWidth","isColumnHidden","midX","minX","maxX","isItemHidden","visibleSizes","columnIndex","isFloatingRow","isFloatingColumn","getHiddenItems","hiddenItems","push","getHiddenColumns","getRowSeparatorIndex","allowRowResize","isPreviousRowHidden","rowY","rowHeight","isRowHidden","midY","minY","maxY","rowIndex","getHiddenRows","moveItem","from","to","oldMovedItems","movedItems","concat","getModelIndex","visibleIndex","movedItem","getModelRangeIndexes","nextResult","j","currentStart","currentEnd","startLength","getModelRange","uiRange","movedColumns","movedRows","columnRanges","startColumn","endColumn","rowRanges","startRow","endRow","ranges","c","r","getModelRanges","uiRanges","modelRanges","getVisibleIndex","isMacPlatform","platform","window","navigator","startsWith","getModifierKey","isModifierKeyDown","event","modifierKey","checkColumnHidden","checkAllColumnsHidden","columns","size","every","getScrollDragBounds","width","height","floatingLeftWidth","floatingRightWidth","floatingTopHeight","floatingBottomHeight","x2","y2","getScrollDelta","wheelEvent","pageWidth","pageHeight","lineWidth","lineHeight","deltaX","deltaY","shiftKey","deltaMode","WheelEvent","DOM_DELTA_PAGE","DOM_DELTA_LINE","round","PIXELS_PER_LINE"],"mappings":"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","sourcesContent":["import GridRange from './GridRange';\n\nclass GridUtils {\n // use same constant as chrome source for windows\n // https://github.com/chromium/chromium/blob/973af9d461b6b5dc60208c8d3d66adc27e53da78/ui/events/blink/web_input_event_builders_win.cc#L285\n static PIXELS_PER_LINE = 100 / 3;\n\n static getGridPointFromXY(x, y, metrics) {\n const column = GridUtils.getColumnAtX(x, metrics);\n const row = GridUtils.getRowAtY(y, metrics);\n\n return { x, y, row, column };\n }\n\n static iterateFloatingStart(start, total, callback) {\n for (let i = 0; i < start && i < total; i += 1) {\n const result = callback(i);\n if (result !== undefined) {\n return result;\n }\n }\n\n return undefined;\n }\n\n /**\n * Iterate through floating items at the end. Iterates in increasing order.\n */\n static iterateFloatingEnd(end, total, callback) {\n for (let i = 0; i < end && total - (end - i) >= 0; i += 1) {\n const result = callback(total - (end - i));\n if (result !== undefined) {\n return result;\n }\n }\n\n return undefined;\n }\n\n /**\n * Iterate through all floating items in increasing order, starting with the top items.\n * @param {number} start Count of start floating rows, eg. floatingTopRowCount\n * @param {number} end Count of end floating rows, eg. floatingBottomRowCount\n * @param {number} total Total number of items\n * @param {(itemIndex:number) => any | undefined} callback Callback called for each value, stopping the iterating and returning the value if one is returned\n */\n static iterateFloating(start, end, total, callback) {\n const result = GridUtils.iterateFloatingStart(start, total, callback);\n if (result !== undefined) {\n return result;\n }\n return GridUtils.iterateFloatingEnd(end, total, callback);\n }\n\n static iterateAllItems(\n visibleStart,\n visibleEnd,\n floatingStartCount,\n floatingEndCount,\n totalCount,\n callback\n ) {\n const visibleStartIndex = Math.max(visibleStart, floatingStartCount);\n const visibleEndIndex = Math.min(\n visibleEnd,\n totalCount - floatingEndCount - 1\n );\n let result = GridUtils.iterateFloating(\n floatingStartCount,\n floatingEndCount,\n totalCount,\n callback\n );\n if (result !== undefined) {\n return result;\n }\n\n for (let i = visibleStartIndex; i <= visibleEndIndex; i += 1) {\n result = callback(i);\n if (result !== undefined) {\n return result;\n }\n }\n\n return undefined;\n }\n\n static isInItem(itemIndex, itemXs, itemSizes, x) {\n const itemX = itemXs.get(itemIndex);\n const itemSize = itemSizes.get(itemIndex);\n return itemX <= x && x <= itemX + itemSize;\n }\n\n static getItemAtOffset(\n offset,\n itemCount,\n floatingStart,\n floatingEnd,\n items,\n itemXs,\n itemSizes\n ) {\n const floatingItem = GridUtils.iterateFloating(\n floatingStart,\n floatingEnd,\n itemCount,\n item => {\n if (GridUtils.isInItem(item, itemXs, itemSizes, offset)) {\n return item;\n }\n return undefined;\n }\n );\n if (floatingItem !== undefined) {\n return floatingItem;\n }\n\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n if (GridUtils.isInItem(item, itemXs, itemSizes, offset)) {\n return item;\n }\n }\n\n return null;\n }\n\n static getColumnAtX(x, metrics) {\n const {\n columnCount,\n floatingLeftColumnCount,\n floatingRightColumnCount,\n visibleColumns,\n visibleColumnXs,\n visibleColumnWidths,\n gridX,\n } = metrics;\n\n if (x < gridX) {\n return null;\n }\n\n return this.getItemAtOffset(\n x - gridX,\n columnCount,\n floatingLeftColumnCount,\n floatingRightColumnCount,\n visibleColumns,\n visibleColumnXs,\n visibleColumnWidths\n );\n }\n\n static getRowAtY(y, metrics) {\n const {\n floatingTopRowCount,\n floatingBottomRowCount,\n rowCount,\n visibleRows,\n visibleRowYs,\n visibleRowHeights,\n gridY,\n } = metrics;\n\n if (y < gridY) {\n return null;\n }\n\n return this.getItemAtOffset(\n y - gridY,\n rowCount,\n floatingTopRowCount,\n floatingBottomRowCount,\n visibleRows,\n visibleRowYs,\n visibleRowHeights\n );\n }\n\n /**\n * Iterate backward through the visible items until a shown item is hit\n * @param {Number} startIndex The index to start from\n * @param {Map} modelIndexes The mapping of model indexes\n * @param {Number[]} visibleItems The visible items\n * @param {Map} userSizes The user set sizes\n */\n static getNextShownItem(startIndex, modelIndexes, visibleItems, userSizes) {\n let visibleItemIndex =\n visibleItems.findIndex(value => value === startIndex) || 0;\n visibleItemIndex -= 1;\n while (visibleItemIndex != null && visibleItemIndex >= 0) {\n const item = visibleItems[visibleItemIndex];\n const modelIndex = modelIndexes.get(item);\n if (userSizes.get(modelIndex) !== 0) {\n return item;\n }\n\n visibleItemIndex -= 1;\n }\n\n return null;\n }\n\n /**\n * Iterate backward through the visible columns until a shown column is hit\n * @param {Number} columnIndex The column index to start iterating backward from\n * @param {GridMetrics} metrics The GridMetricCalculator metrics\n */\n static getNextShownColumn(startIndex, metrics) {\n const { modelColumns, visibleColumns, userColumnWidths } = metrics;\n return GridUtils.getNextShownItem(\n startIndex,\n modelColumns,\n visibleColumns,\n userColumnWidths\n );\n }\n\n /**\n * Iterate backward through the visible rows until a shown row is hit\n * @param {Number} rowIndex The row index to start iterating backward from\n * @param {GridMetrics} metrics The GridMetricCalculator metrics\n */\n static getNextShownRow(startIndex, metrics) {\n const { modelRows, visibleRows, userRowHeights } = metrics;\n return GridUtils.getNextShownItem(\n startIndex,\n modelRows,\n visibleRows,\n userRowHeights\n );\n }\n\n // Returns the column index if the x/y coordinates provided are close enough to the separator, otherwise false\n static getColumnSeparatorIndex(x, y, metrics, theme) {\n const {\n rowHeaderWidth,\n columnHeaderHeight,\n visibleColumns,\n visibleColumnXs,\n visibleColumnWidths,\n } = metrics;\n const { allowColumnResize, headerSeparatorHandleSize } = theme;\n\n if (\n columnHeaderHeight < y ||\n !allowColumnResize ||\n headerSeparatorHandleSize <= 0\n ) {\n return null;\n }\n\n const gridX = x - rowHeaderWidth;\n const halfSeparatorSize = headerSeparatorHandleSize * 0.5;\n\n // Iterate backward so that you can reveal hidden columns properly\n let isPreviousColumnHidden = false;\n for (let i = visibleColumns.length - 1; i >= 0; i -= 1) {\n const column = visibleColumns[i];\n const columnX = visibleColumnXs.get(column);\n const columnWidth = visibleColumnWidths.get(column);\n const isColumnHidden = columnWidth === 0;\n if (!isPreviousColumnHidden || !isColumnHidden) {\n let midX = columnX + columnWidth;\n if (isColumnHidden) {\n midX += halfSeparatorSize;\n } else if (isPreviousColumnHidden) {\n midX -= halfSeparatorSize;\n }\n\n const minX = midX - halfSeparatorSize;\n const maxX = midX + halfSeparatorSize;\n if (minX <= gridX && gridX <= maxX) {\n return column;\n }\n\n isPreviousColumnHidden = isColumnHidden;\n }\n }\n\n return null;\n }\n\n static isItemHidden(itemIndex, visibleSizes) {\n return visibleSizes.get(itemIndex) === 0;\n }\n\n static isColumnHidden(columnIndex, metrics) {\n const { visibleColumnWidths } = metrics;\n return GridUtils.isItemHidden(columnIndex, visibleColumnWidths);\n }\n\n /**\n * Check if the provided row is a floating row\n * @param {number} row The row index to check\n * @param {GridMetrics} metrics The grid metrics to check against\n */\n static isFloatingRow(row, metrics) {\n if (row == null) {\n return false;\n }\n\n const { floatingTopRowCount, floatingBottomRowCount, rowCount } = metrics;\n return (\n row < floatingTopRowCount || row >= rowCount - floatingBottomRowCount\n );\n }\n\n /**\n * Check if the provided column is a floating column\n * @param {number} column The column index to check\n * @param {GridMetrics} metrics The grid metrics to check against\n */\n static isFloatingColumn(column, metrics) {\n if (column == null) {\n return false;\n }\n\n const {\n floatingLeftColumnCount,\n floatingRightColumnCount,\n columnCount,\n } = metrics;\n return (\n column < floatingLeftColumnCount ||\n column >= columnCount - floatingRightColumnCount\n );\n }\n\n static getHiddenItems(itemIndex, visibleSizes, visibleItems) {\n if (!GridUtils.isItemHidden(itemIndex, visibleSizes)) {\n return [];\n }\n\n const hiddenItems = [itemIndex];\n const visibleItemIndex = visibleItems.findIndex(\n value => value === itemIndex\n );\n for (let i = visibleItemIndex - 1; i >= 0; i -= 1) {\n const item = visibleItems[i];\n if (!GridUtils.isItemHidden(item, visibleSizes)) {\n break;\n }\n\n hiddenItems.push(item);\n }\n\n return hiddenItems;\n }\n\n static getHiddenColumns(columnIndex, metrics) {\n const { visibleColumns, visibleColumnWidths } = metrics;\n return GridUtils.getHiddenItems(\n columnIndex,\n visibleColumnWidths,\n visibleColumns\n );\n }\n\n // Returns the row index if the x/y coordinates provided are close enough to the separator, otherwise false\n static getRowSeparatorIndex(x, y, metrics, theme) {\n const {\n rowHeaderWidth,\n columnHeaderHeight,\n visibleRows,\n visibleRowYs,\n visibleRowHeights,\n } = metrics;\n const { allowRowResize, headerSeparatorHandleSize } = theme;\n\n if (\n rowHeaderWidth < x ||\n !allowRowResize ||\n headerSeparatorHandleSize <= 0\n ) {\n return null;\n }\n\n const gridY = y - columnHeaderHeight;\n const halfSeparatorSize = headerSeparatorHandleSize * 0.5;\n\n // Iterate backward so you can reveal hidden rows properly\n let isPreviousRowHidden = false;\n for (let i = visibleRows.length - 1; i >= 0; i -= 1) {\n const row = visibleRows[i];\n const rowY = visibleRowYs.get(row);\n const rowHeight = visibleRowHeights.get(row);\n const isRowHidden = rowHeight === 0;\n if (!isPreviousRowHidden || !isRowHidden) {\n let midY = rowY + rowHeight;\n if (isRowHidden) {\n midY += halfSeparatorSize;\n } else if (isPreviousRowHidden) {\n midY -= halfSeparatorSize;\n }\n\n const minY = midY - halfSeparatorSize;\n const maxY = midY + halfSeparatorSize;\n\n if (minY <= gridY && gridY <= maxY) {\n return row;\n }\n\n isPreviousRowHidden = isRowHidden;\n }\n }\n\n return null;\n }\n\n static isRowHidden(rowIndex, metrics) {\n const { visibleRowHeights } = metrics;\n return GridUtils.isItemHidden(rowIndex, visibleRowHeights);\n }\n\n static getHiddenRows(rowIndex, metrics) {\n const { visibleRows, visibleRowHeights } = metrics;\n return GridUtils.getHiddenItems(rowIndex, visibleRowHeights, visibleRows);\n }\n\n /**\n * Set a new order for items in the grid\n * @param {Number} from The visible index to move from\n * @param {Number} to The visible index to move the itme to\n * @param {Array} oldMovedItems The old reordered items\n * @returns {Number} The new reordered items\n */\n static moveItem(from, to, oldMovedItems = []) {\n if (from === to) {\n return oldMovedItems;\n }\n\n const movedItems = [].concat(oldMovedItems);\n\n if (\n movedItems.length > 0 &&\n movedItems[movedItems.length - 1].to === from\n ) {\n movedItems[movedItems.length - 1] = {\n ...movedItems[movedItems.length - 1],\n to,\n };\n } else {\n movedItems.push({ from, to });\n }\n\n return movedItems;\n }\n\n /**\n * Retrieve the model index given the currently moved items\n * @param {Number} visibleIndex The visible index of the item to get the model index for\n * @param {Array} movedItems The moved items\n * @returns {Number} The model index of the item\n */\n static getModelIndex(visibleIndex, movedItems = []) {\n let modelIndex = visibleIndex;\n\n for (let i = movedItems.length - 1; i >= 0; i -= 1) {\n const movedItem = movedItems[i];\n if (modelIndex === movedItem.to) {\n ({ from: modelIndex } = movedItem);\n } else if (movedItem.from <= modelIndex && modelIndex < movedItem.to) {\n modelIndex += 1;\n } else if (movedItem.to < modelIndex && modelIndex <= movedItem.from) {\n modelIndex -= 1;\n }\n }\n\n return modelIndex;\n }\n\n /**\n * Translate the provided UI start/end indexes to the model start/end indexes by applying the `movedItems` transformations.\n * Since moved items can split apart a range, multiple pairs of indexes are returned\n *\n * @param {number} start Start item in one dimension\n * @param {number} end End item in one dimension\n * @param {MovedItem[]} movedItems Moved item pairs in this dimension\n * @returns {AxisRange[]} Array of start/end pairs of the indexes after transformations applied.\n */\n static getModelRangeIndexes(start, end, movedItems) {\n let result = [[start, end]];\n if (start == null) {\n return result;\n }\n\n // movedItems is built by adding a new item whenever an item in the UI is dragged/moved, transforming a model\n // index to the new UI index. We want to find the model index from the UI index here, so we unwind the\n // transformations applied - the start/end axis range passed in is the current UI range, so we need to apply\n // the transformations starting at the end of the chain backward to find the appropriate model indexes\n for (let i = movedItems.length - 1; i >= 0; i -= 1) {\n const { from, to } = movedItems[i];\n const nextResult = [];\n for (let j = 0; j < result.length; j += 1) {\n const [currentStart, currentEnd] = result[j];\n const startLength = nextResult.length;\n if (from <= currentStart) {\n // From before\n if (to > currentEnd) {\n // To after\n nextResult.push([currentStart + 1, currentEnd + 1]);\n } else if (to >= currentStart) {\n // To within\n nextResult.push([from, from]);\n nextResult.push([currentStart + 1, currentEnd]);\n }\n } else if (from > currentEnd) {\n // From after\n if (to < currentStart) {\n // To before\n nextResult.push([currentStart - 1, currentEnd - 1]);\n } else if (to <= currentEnd) {\n // To within\n nextResult.push([from, from]);\n nextResult.push([currentStart, currentEnd - 1]);\n }\n } else if (to < currentStart) {\n // From within to before\n nextResult.push([currentStart - 1, from - 1]);\n nextResult.push([from + 1, currentEnd]);\n } else if (to > currentEnd) {\n // From within to after\n nextResult.push([currentStart, from - 1]);\n nextResult.push([from + 1, currentEnd + 1]);\n } else if (from > to) {\n // From within after to within before\n if (to > currentStart) {\n nextResult.push([currentStart, to - 1]);\n }\n nextResult.push([from, from]);\n nextResult.push([to, from - 1]);\n if (from < currentEnd) {\n nextResult.push([from + 1, currentEnd]);\n }\n } else if (from < to) {\n // From within before to within after\n if (from > currentStart) {\n nextResult.push([currentStart, from - 1]);\n }\n nextResult.push([from + 1, to]);\n nextResult.push([from, from]);\n if (from < currentEnd) {\n nextResult.push([to + 1, currentEnd]);\n }\n }\n\n if (startLength === nextResult.length) {\n // No modifications were made, add the original range indexes\n nextResult.push([currentStart, currentEnd]);\n }\n }\n result = nextResult;\n }\n return result;\n }\n\n /**\n * Translate the provided UI range into model range, using the `movedColumns` and `movedRows` to apply the necessary transforms.\n * `movedColumns` and `movedRows` are array of operations done to the UI indexes to re-order items\n *\n * @param {GridRange} uiRange The currently selected UI ranges\n * @param {Array} movedColumns The moved column pairs\n * @param {Array} movedRows The moved row pairs\n * @returns {GridRange[]} The model ranges after translation.\n */\n static getModelRange(uiRange, movedColumns = [], movedRows = []) {\n const columnRanges = GridUtils.getModelRangeIndexes(\n uiRange.startColumn,\n uiRange.endColumn,\n movedColumns\n );\n const rowRanges = GridUtils.getModelRangeIndexes(\n uiRange.startRow,\n uiRange.endRow,\n movedRows\n );\n const ranges = [];\n for (let i = 0; i < columnRanges.length; i += 1) {\n const c = columnRanges[i];\n for (let j = 0; j < rowRanges.length; j += 1) {\n const r = rowRanges[j];\n ranges.push(new GridRange(c[0], r[0], c[1], r[1]));\n }\n }\n return ranges;\n }\n\n /**\n * Translate the provided UI range into model ranges, using the `movedColumns` and `movedRows` to apply the necessary transforms.\n * `movedColumns` and `movedRows` are array of operations done to the UI indexes to re-order items\n *\n * @param {GridRange[]} uiRanges The currently selected UI ranges\n * @param {Array} movedColumns The moved column pairs\n * @param {Array} movedRows The moved row pairs\n * @returns {GridRange[]} The model ranges after translation.\n */\n static getModelRanges(uiRanges, movedColumns = [], movedRows = []) {\n const modelRanges = [];\n for (let i = 0; i < uiRanges.length; i += 1) {\n modelRanges.push(\n ...GridUtils.getModelRange(uiRanges[i], movedColumns, movedRows)\n );\n }\n return modelRanges;\n }\n\n /**\n * Retrieve the visible index given the currently moved items\n * @param {Number} modelIndex The model index to get the visible index for\n * @param {Array} movedItems Moved items\n * @returns {Number} The visible index of the item\n */\n static getVisibleIndex(modelIndex, movedItems = []) {\n let visibleIndex = modelIndex;\n\n for (let i = 0; i < movedItems.length; i += 1) {\n const movedItem = movedItems[i];\n if (visibleIndex === movedItem.from) {\n ({ to: visibleIndex } = movedItem);\n } else if (\n movedItem.from < visibleIndex &&\n visibleIndex <= movedItem.to\n ) {\n visibleIndex -= 1;\n } else if (\n movedItem.to <= visibleIndex &&\n visibleIndex < movedItem.from\n ) {\n visibleIndex += 1;\n }\n }\n\n return visibleIndex;\n }\n\n static isMacPlatform() {\n const { platform } = window.navigator;\n return platform.startsWith('Mac');\n }\n\n static getModifierKey() {\n if (GridUtils.isMacPlatform()) {\n return 'metaKey';\n }\n\n return 'ctrlKey';\n }\n\n static isModifierKeyDown(event) {\n const modifierKey = GridUtils.getModifierKey();\n return event[modifierKey];\n }\n\n static checkColumnHidden(modelIndex, userColumnWidths) {\n return userColumnWidths.get(modelIndex) === 0;\n }\n\n static checkAllColumnsHidden(columns, userColumnWidths) {\n if (userColumnWidths.size === 0) {\n return false;\n }\n return columns.every(column => userColumnWidths.get(column) === 0);\n }\n\n /**\n * Get the bounds the mouse needs to be dragged outside of from an initial selection before scrolling occurs.\n * Taking into account any floating rows that may be covering the viewport.\n * @param {GridMetrics} metrics Grid metrics\n * @param {number} row The row they started dragging in\n * @param {number} column The column they started the drag from\n * @returns Dimensions of the drag area in relation to the canvas they need to drag outside of to start scrolling\n */\n static getScrollDragBounds(metrics, row, column) {\n const {\n gridX,\n gridY,\n width,\n height,\n floatingTopRowCount,\n floatingBottomRowCount,\n floatingLeftColumnCount,\n floatingRightColumnCount,\n floatingLeftWidth,\n floatingRightWidth,\n floatingTopHeight,\n floatingBottomHeight,\n columnCount,\n rowCount,\n } = metrics;\n let x = gridX;\n let y = gridY;\n let x2 = width;\n let y2 = height;\n if (column != null) {\n if (column > floatingLeftColumnCount) {\n x += floatingLeftWidth;\n }\n if (column < columnCount - floatingRightColumnCount) {\n x2 -= floatingRightWidth;\n }\n }\n\n if (row != null) {\n if (row > floatingTopRowCount) {\n y += floatingTopHeight;\n }\n if (row < rowCount - floatingBottomRowCount) {\n y2 -= floatingBottomHeight;\n }\n }\n return { x, y, x2, y2 };\n }\n\n /**\n * Converts the delta coordinates from the provided wheel event to pixels\n * Different platforms have different ways of providing the delta so this normalizes it\n * @param {WheelEvent} wheelEvent The mouse wheel event to get the scrolling delta for\n * @param {number?} pageWidth The width of the page that is scrolling\n * @param {number?} pageHeight The height of the page that is scrolling\n * @param {number?} lineWidth The width of the line scrolling in line mode\n * @param {number?} lineHeight The height of the line scrolling in line mode\n * @returns {{deltaX:number, deltaY: number}} The delta coordinates normalized to pixels\n */\n static getScrollDelta(\n wheelEvent,\n pageWidth = 1024,\n pageHeight = 768,\n lineWidth = 20,\n lineHeight = 20\n ) {\n let { deltaX, deltaY } = wheelEvent;\n\n // Flip scroll direction if shiftKey is held on windows/linux.\n // On mac, deltaX/Y values are switched at the event level when shiftKey=true.\n // Guard on strictly Y only changing, to ignore trackpad diagonal motion,\n // through that guard may not be necessary, but it is difficult to determine for\n // all platforms/browser/scroll method combos.\n if (\n !GridUtils.isMacPlatform() &&\n wheelEvent.shiftKey &&\n wheelEvent.deltaX === 0 &&\n wheelEvent.deltaY !== 0\n ) {\n deltaX = wheelEvent.deltaY;\n deltaY = wheelEvent.deltaX;\n }\n\n // Normalize other deltaMode values to pixel units\n // deltaMode 0, is already in pixel units\n if (wheelEvent?.deltaMode === WheelEvent.DOM_DELTA_PAGE) {\n // Users can set OS to be in deltaMode page\n // scrolly by page units as pixels\n deltaX *= pageWidth;\n deltaY *= pageHeight;\n } else if (wheelEvent?.deltaMode === WheelEvent.DOM_DELTA_LINE) {\n // Firefox reports deltaMode line\n // Normalize distance travelled between browsers\n // but remain ~platform/browser combo consistent\n if (GridUtils.isMacPlatform()) {\n // for mac treat lines as a standard row height\n // on mac, firefox travels less distance then chrome per tick\n deltaX = Math.round(deltaX * lineWidth);\n deltaY = Math.round(deltaY * lineHeight);\n } else {\n // for windows convert to pixels using the same method as chrome\n // chrome goes 100 per 3 lines, and firefox would go 102 per 3 (17 lineheight * 3 lines * 2)\n // make the behaviour the same between as it's close enough\n deltaX = Math.round(deltaX * this.PIXELS_PER_LINE);\n deltaY = Math.round(deltaY * this.PIXELS_PER_LINE);\n }\n }\n\n return { deltaX, deltaY };\n }\n}\n\nexport default GridUtils;\n"],"file":"GridUtils.js"}
1
+ {"version":3,"sources":["../src/GridUtils.js"],"names":["GridRange","GridUtils","x","y","metrics","column","getColumnAtX","row","getRowAtY","start","total","callback","i","result","undefined","end","iterateFloatingStart","iterateFloatingEnd","visibleStart","visibleEnd","floatingStartCount","floatingEndCount","totalCount","visibleStartIndex","Math","max","visibleEndIndex","min","iterateFloating","itemIndex","itemXs","itemSizes","itemX","get","itemSize","offset","itemCount","floatingStart","floatingEnd","items","floatingItem","item","isInItem","length","columnCount","floatingLeftColumnCount","floatingRightColumnCount","visibleColumns","visibleColumnXs","visibleColumnWidths","gridX","getItemAtOffset","floatingTopRowCount","floatingBottomRowCount","rowCount","visibleRows","visibleRowYs","visibleRowHeights","gridY","startIndex","modelIndexes","visibleItems","userSizes","visibleItemIndex","findIndex","value","modelIndex","modelColumns","userColumnWidths","getNextShownItem","modelRows","userRowHeights","theme","rowHeaderWidth","columnHeaderHeight","allowColumnResize","headerSeparatorHandleSize","halfSeparatorSize","isPreviousColumnHidden","columnX","columnWidth","isColumnHidden","midX","minX","maxX","visibleSizes","columnIndex","isItemHidden","hiddenItems","push","getHiddenItems","allowRowResize","isPreviousRowHidden","rowY","rowHeight","isRowHidden","midY","minY","maxY","rowIndex","from","to","oldMovedItems","movedItems","concat","visibleIndex","movedItem","nextResult","j","currentStart","currentEnd","startLength","uiRange","movedColumns","movedRows","columnRanges","getModelRangeIndexes","startColumn","endColumn","rowRanges","startRow","endRow","ranges","c","r","uiRanges","modelRanges","getModelRange","platform","window","navigator","startsWith","isMacPlatform","event","modifierKey","getModifierKey","columns","size","every","width","height","floatingLeftWidth","floatingRightWidth","floatingTopHeight","floatingBottomHeight","x2","y2","wheelEvent","pageWidth","pageHeight","lineWidth","lineHeight","deltaX","deltaY","shiftKey","deltaMode","WheelEvent","DOM_DELTA_PAGE","DOM_DELTA_LINE","round","PIXELS_PER_LINE"],"mappings":"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","sourcesContent":["import GridRange from './GridRange';\n\nclass GridUtils {\n // use same constant as chrome source for windows\n // https://github.com/chromium/chromium/blob/973af9d461b6b5dc60208c8d3d66adc27e53da78/ui/events/blink/web_input_event_builders_win.cc#L285\n static PIXELS_PER_LINE = 100 / 3;\n\n static getGridPointFromXY(x, y, metrics) {\n const column = GridUtils.getColumnAtX(x, metrics);\n const row = GridUtils.getRowAtY(y, metrics);\n\n return { x, y, row, column };\n }\n\n static iterateFloatingStart(start, total, callback) {\n for (let i = 0; i < start && i < total; i += 1) {\n const result = callback(i);\n if (result !== undefined) {\n return result;\n }\n }\n\n return undefined;\n }\n\n /**\n * Iterate through floating items at the end. Iterates in increasing order.\n */\n static iterateFloatingEnd(end, total, callback) {\n for (let i = 0; i < end && total - (end - i) >= 0; i += 1) {\n const result = callback(total - (end - i));\n if (result !== undefined) {\n return result;\n }\n }\n\n return undefined;\n }\n\n /**\n * Iterate through all floating items in increasing order, starting with the top items.\n * @param {number} start Count of start floating rows, eg. floatingTopRowCount\n * @param {number} end Count of end floating rows, eg. floatingBottomRowCount\n * @param {number} total Total number of items\n * @param {(itemIndex:number) => any | undefined} callback Callback called for each value, stopping the iterating and returning the value if one is returned\n */\n static iterateFloating(start, end, total, callback) {\n const result = GridUtils.iterateFloatingStart(start, total, callback);\n if (result !== undefined) {\n return result;\n }\n return GridUtils.iterateFloatingEnd(end, total, callback);\n }\n\n static iterateAllItems(\n visibleStart,\n visibleEnd,\n floatingStartCount,\n floatingEndCount,\n totalCount,\n callback\n ) {\n const visibleStartIndex = Math.max(visibleStart, floatingStartCount);\n const visibleEndIndex = Math.min(\n visibleEnd,\n totalCount - floatingEndCount - 1\n );\n let result = GridUtils.iterateFloating(\n floatingStartCount,\n floatingEndCount,\n totalCount,\n callback\n );\n if (result !== undefined) {\n return result;\n }\n\n for (let i = visibleStartIndex; i <= visibleEndIndex; i += 1) {\n result = callback(i);\n if (result !== undefined) {\n return result;\n }\n }\n\n return undefined;\n }\n\n static isInItem(itemIndex, itemXs, itemSizes, x) {\n const itemX = itemXs.get(itemIndex);\n const itemSize = itemSizes.get(itemIndex);\n return itemX <= x && x <= itemX + itemSize;\n }\n\n static getItemAtOffset(\n offset,\n itemCount,\n floatingStart,\n floatingEnd,\n items,\n itemXs,\n itemSizes\n ) {\n const floatingItem = GridUtils.iterateFloating(\n floatingStart,\n floatingEnd,\n itemCount,\n item => {\n if (GridUtils.isInItem(item, itemXs, itemSizes, offset)) {\n return item;\n }\n return undefined;\n }\n );\n if (floatingItem !== undefined) {\n return floatingItem;\n }\n\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n if (GridUtils.isInItem(item, itemXs, itemSizes, offset)) {\n return item;\n }\n }\n\n return null;\n }\n\n static getColumnAtX(x, metrics) {\n const {\n columnCount,\n floatingLeftColumnCount,\n floatingRightColumnCount,\n visibleColumns,\n visibleColumnXs,\n visibleColumnWidths,\n gridX,\n } = metrics;\n\n if (x < gridX) {\n return null;\n }\n\n return this.getItemAtOffset(\n x - gridX,\n columnCount,\n floatingLeftColumnCount,\n floatingRightColumnCount,\n visibleColumns,\n visibleColumnXs,\n visibleColumnWidths\n );\n }\n\n static getRowAtY(y, metrics) {\n const {\n floatingTopRowCount,\n floatingBottomRowCount,\n rowCount,\n visibleRows,\n visibleRowYs,\n visibleRowHeights,\n gridY,\n } = metrics;\n\n if (y < gridY) {\n return null;\n }\n\n return this.getItemAtOffset(\n y - gridY,\n rowCount,\n floatingTopRowCount,\n floatingBottomRowCount,\n visibleRows,\n visibleRowYs,\n visibleRowHeights\n );\n }\n\n /**\n * Iterate backward through the visible items until a shown item is hit\n * @param {Number} startIndex The index to start from\n * @param {Map} modelIndexes The mapping of model indexes\n * @param {Number[]} visibleItems The visible items\n * @param {Map} userSizes The user set sizes\n */\n static getNextShownItem(startIndex, modelIndexes, visibleItems, userSizes) {\n let visibleItemIndex =\n visibleItems.findIndex(value => value === startIndex) || 0;\n visibleItemIndex -= 1;\n while (visibleItemIndex != null && visibleItemIndex >= 0) {\n const item = visibleItems[visibleItemIndex];\n const modelIndex = modelIndexes.get(item);\n if (userSizes.get(modelIndex) !== 0) {\n return item;\n }\n\n visibleItemIndex -= 1;\n }\n\n return null;\n }\n\n /**\n * Iterate backward through the visible columns until a shown column is hit\n * @param {Number} columnIndex The column index to start iterating backward from\n * @param {GridMetrics} metrics The GridMetricCalculator metrics\n */\n static getNextShownColumn(startIndex, metrics) {\n const { modelColumns, visibleColumns, userColumnWidths } = metrics;\n return GridUtils.getNextShownItem(\n startIndex,\n modelColumns,\n visibleColumns,\n userColumnWidths\n );\n }\n\n /**\n * Iterate backward through the visible rows until a shown row is hit\n * @param {Number} rowIndex The row index to start iterating backward from\n * @param {GridMetrics} metrics The GridMetricCalculator metrics\n */\n static getNextShownRow(startIndex, metrics) {\n const { modelRows, visibleRows, userRowHeights } = metrics;\n return GridUtils.getNextShownItem(\n startIndex,\n modelRows,\n visibleRows,\n userRowHeights\n );\n }\n\n // Returns the column index if the x/y coordinates provided are close enough to the separator, otherwise false\n static getColumnSeparatorIndex(x, y, metrics, theme) {\n const {\n rowHeaderWidth,\n columnHeaderHeight,\n visibleColumns,\n visibleColumnXs,\n visibleColumnWidths,\n } = metrics;\n const { allowColumnResize, headerSeparatorHandleSize } = theme;\n\n if (\n columnHeaderHeight < y ||\n !allowColumnResize ||\n headerSeparatorHandleSize <= 0\n ) {\n return null;\n }\n\n const gridX = x - rowHeaderWidth;\n const halfSeparatorSize = headerSeparatorHandleSize * 0.5;\n\n // Iterate backward so that you can reveal hidden columns properly\n let isPreviousColumnHidden = false;\n for (let i = visibleColumns.length - 1; i >= 0; i -= 1) {\n const column = visibleColumns[i];\n const columnX = visibleColumnXs.get(column);\n const columnWidth = visibleColumnWidths.get(column);\n const isColumnHidden = columnWidth === 0;\n if (!isPreviousColumnHidden || !isColumnHidden) {\n let midX = columnX + columnWidth;\n if (isColumnHidden) {\n midX += halfSeparatorSize;\n } else if (isPreviousColumnHidden) {\n midX -= halfSeparatorSize;\n }\n\n const minX = midX - halfSeparatorSize;\n const maxX = midX + halfSeparatorSize;\n if (minX <= gridX && gridX <= maxX) {\n return column;\n }\n\n isPreviousColumnHidden = isColumnHidden;\n }\n }\n\n return null;\n }\n\n static isItemHidden(itemIndex, visibleSizes) {\n return visibleSizes.get(itemIndex) === 0;\n }\n\n static isColumnHidden(columnIndex, metrics) {\n const { visibleColumnWidths } = metrics;\n return GridUtils.isItemHidden(columnIndex, visibleColumnWidths);\n }\n\n /**\n * Check if the provided row is a floating row\n * @param {number} row The row index to check\n * @param {GridMetrics} metrics The grid metrics to check against\n */\n static isFloatingRow(row, metrics) {\n if (row == null) {\n return false;\n }\n\n const { floatingTopRowCount, floatingBottomRowCount, rowCount } = metrics;\n return (\n row < floatingTopRowCount || row >= rowCount - floatingBottomRowCount\n );\n }\n\n /**\n * Check if the provided column is a floating column\n * @param {number} column The column index to check\n * @param {GridMetrics} metrics The grid metrics to check against\n */\n static isFloatingColumn(column, metrics) {\n if (column == null) {\n return false;\n }\n\n const {\n floatingLeftColumnCount,\n floatingRightColumnCount,\n columnCount,\n } = metrics;\n return (\n column < floatingLeftColumnCount ||\n column >= columnCount - floatingRightColumnCount\n );\n }\n\n static getHiddenItems(itemIndex, visibleSizes, visibleItems) {\n if (!GridUtils.isItemHidden(itemIndex, visibleSizes)) {\n return [];\n }\n\n const hiddenItems = [itemIndex];\n const visibleItemIndex = visibleItems.findIndex(\n value => value === itemIndex\n );\n for (let i = visibleItemIndex - 1; i >= 0; i -= 1) {\n const item = visibleItems[i];\n if (!GridUtils.isItemHidden(item, visibleSizes)) {\n break;\n }\n\n hiddenItems.push(item);\n }\n\n return hiddenItems;\n }\n\n static getHiddenColumns(columnIndex, metrics) {\n const { visibleColumns, visibleColumnWidths } = metrics;\n return GridUtils.getHiddenItems(\n columnIndex,\n visibleColumnWidths,\n visibleColumns\n );\n }\n\n // Returns the row index if the x/y coordinates provided are close enough to the separator, otherwise false\n static getRowSeparatorIndex(x, y, metrics, theme) {\n const {\n rowHeaderWidth,\n columnHeaderHeight,\n visibleRows,\n visibleRowYs,\n visibleRowHeights,\n } = metrics;\n const { allowRowResize, headerSeparatorHandleSize } = theme;\n\n if (\n rowHeaderWidth < x ||\n !allowRowResize ||\n headerSeparatorHandleSize <= 0\n ) {\n return null;\n }\n\n const gridY = y - columnHeaderHeight;\n const halfSeparatorSize = headerSeparatorHandleSize * 0.5;\n\n // Iterate backward so you can reveal hidden rows properly\n let isPreviousRowHidden = false;\n for (let i = visibleRows.length - 1; i >= 0; i -= 1) {\n const row = visibleRows[i];\n const rowY = visibleRowYs.get(row);\n const rowHeight = visibleRowHeights.get(row);\n const isRowHidden = rowHeight === 0;\n if (!isPreviousRowHidden || !isRowHidden) {\n let midY = rowY + rowHeight;\n if (isRowHidden) {\n midY += halfSeparatorSize;\n } else if (isPreviousRowHidden) {\n midY -= halfSeparatorSize;\n }\n\n const minY = midY - halfSeparatorSize;\n const maxY = midY + halfSeparatorSize;\n\n if (minY <= gridY && gridY <= maxY) {\n return row;\n }\n\n isPreviousRowHidden = isRowHidden;\n }\n }\n\n return null;\n }\n\n static isRowHidden(rowIndex, metrics) {\n const { visibleRowHeights } = metrics;\n return GridUtils.isItemHidden(rowIndex, visibleRowHeights);\n }\n\n static getHiddenRows(rowIndex, metrics) {\n const { visibleRows, visibleRowHeights } = metrics;\n return GridUtils.getHiddenItems(rowIndex, visibleRowHeights, visibleRows);\n }\n\n /**\n * Set a new order for items in the grid\n * @param {Number} from The visible index to move from\n * @param {Number} to The visible index to move the itme to\n * @param {Array} oldMovedItems The old reordered items\n * @returns {Number} The new reordered items\n */\n static moveItem(from, to, oldMovedItems = []) {\n if (from === to) {\n return oldMovedItems;\n }\n\n const movedItems = [].concat(oldMovedItems);\n\n if (\n movedItems.length > 0 &&\n movedItems[movedItems.length - 1].to === from\n ) {\n movedItems[movedItems.length - 1] = {\n ...movedItems[movedItems.length - 1],\n to,\n };\n } else {\n movedItems.push({ from, to });\n }\n\n return movedItems;\n }\n\n /**\n * Retrieve the model index given the currently moved items\n * @param {Number} visibleIndex The visible index of the item to get the model index for\n * @param {Array} movedItems The moved items\n * @returns {Number} The model index of the item\n */\n static getModelIndex(visibleIndex, movedItems = []) {\n let modelIndex = visibleIndex;\n\n for (let i = movedItems.length - 1; i >= 0; i -= 1) {\n const movedItem = movedItems[i];\n if (modelIndex === movedItem.to) {\n ({ from: modelIndex } = movedItem);\n } else if (movedItem.from <= modelIndex && modelIndex < movedItem.to) {\n modelIndex += 1;\n } else if (movedItem.to < modelIndex && modelIndex <= movedItem.from) {\n modelIndex -= 1;\n }\n }\n\n return modelIndex;\n }\n\n /**\n * Translate the provided UI start/end indexes to the model start/end indexes by applying the `movedItems` transformations.\n * Since moved items can split apart a range, multiple pairs of indexes are returned\n *\n * @param {number} start Start item in one dimension\n * @param {number} end End item in one dimension\n * @param {MovedItem[]} movedItems Moved item pairs in this dimension\n * @returns {AxisRange[]} Array of start/end pairs of the indexes after transformations applied.\n */\n static getModelRangeIndexes(start, end, movedItems) {\n let result = [[start, end]];\n if (start == null) {\n return result;\n }\n\n // movedItems is built by adding a new item whenever an item in the UI is dragged/moved, transforming a model\n // index to the new UI index. We want to find the model index from the UI index here, so we unwind the\n // transformations applied - the start/end axis range passed in is the current UI range, so we need to apply\n // the transformations starting at the end of the chain backward to find the appropriate model indexes\n for (let i = movedItems.length - 1; i >= 0; i -= 1) {\n const { from, to } = movedItems[i];\n const nextResult = [];\n for (let j = 0; j < result.length; j += 1) {\n const [currentStart, currentEnd] = result[j];\n const startLength = nextResult.length;\n if (from <= currentStart) {\n // From before\n if (to > currentEnd) {\n // To after\n nextResult.push([currentStart + 1, currentEnd + 1]);\n } else if (to >= currentStart) {\n // To within\n nextResult.push([from, from]);\n nextResult.push([currentStart + 1, currentEnd]);\n }\n } else if (from > currentEnd) {\n // From after\n if (to < currentStart) {\n // To before\n nextResult.push([currentStart - 1, currentEnd - 1]);\n } else if (to <= currentEnd) {\n // To within\n nextResult.push([from, from]);\n nextResult.push([currentStart, currentEnd - 1]);\n }\n } else if (to < currentStart) {\n // From within to before\n nextResult.push([currentStart - 1, from - 1]);\n nextResult.push([from + 1, currentEnd]);\n } else if (to > currentEnd) {\n // From within to after\n nextResult.push([currentStart, from - 1]);\n nextResult.push([from + 1, currentEnd + 1]);\n } else if (from > to) {\n // From within after to within before\n if (to > currentStart) {\n nextResult.push([currentStart, to - 1]);\n }\n nextResult.push([from, from]);\n nextResult.push([to, from - 1]);\n if (from < currentEnd) {\n nextResult.push([from + 1, currentEnd]);\n }\n } else if (from < to) {\n // From within before to within after\n if (from > currentStart) {\n nextResult.push([currentStart, from - 1]);\n }\n nextResult.push([from + 1, to]);\n nextResult.push([from, from]);\n if (from < currentEnd) {\n nextResult.push([to + 1, currentEnd]);\n }\n }\n\n if (startLength === nextResult.length) {\n // No modifications were made, add the original range indexes\n nextResult.push([currentStart, currentEnd]);\n }\n }\n result = nextResult;\n }\n return result;\n }\n\n /**\n * Translate the provided UI range into model range, using the `movedColumns` and `movedRows` to apply the necessary transforms.\n * `movedColumns` and `movedRows` are array of operations done to the UI indexes to re-order items\n *\n * @param {GridRange} uiRange The currently selected UI ranges\n * @param {Array} movedColumns The moved column pairs\n * @param {Array} movedRows The moved row pairs\n * @returns {GridRange[]} The model ranges after translation.\n */\n static getModelRange(uiRange, movedColumns = [], movedRows = []) {\n const columnRanges = GridUtils.getModelRangeIndexes(\n uiRange.startColumn,\n uiRange.endColumn,\n movedColumns\n );\n const rowRanges = GridUtils.getModelRangeIndexes(\n uiRange.startRow,\n uiRange.endRow,\n movedRows\n );\n const ranges = [];\n for (let i = 0; i < columnRanges.length; i += 1) {\n const c = columnRanges[i];\n for (let j = 0; j < rowRanges.length; j += 1) {\n const r = rowRanges[j];\n ranges.push(new GridRange(c[0], r[0], c[1], r[1]));\n }\n }\n return ranges;\n }\n\n /**\n * Translate the provided UI range into model ranges, using the `movedColumns` and `movedRows` to apply the necessary transforms.\n * `movedColumns` and `movedRows` are array of operations done to the UI indexes to re-order items\n *\n * @param {GridRange[]} uiRanges The currently selected UI ranges\n * @param {Array} movedColumns The moved column pairs\n * @param {Array} movedRows The moved row pairs\n * @returns {GridRange[]} The model ranges after translation.\n */\n static getModelRanges(uiRanges, movedColumns = [], movedRows = []) {\n const modelRanges = [];\n for (let i = 0; i < uiRanges.length; i += 1) {\n modelRanges.push(\n ...GridUtils.getModelRange(uiRanges[i], movedColumns, movedRows)\n );\n }\n return modelRanges;\n }\n\n /**\n * Retrieve the visible index given the currently moved items\n * @param {Number} modelIndex The model index to get the visible index for\n * @param {Array} movedItems Moved items\n * @returns {Number} The visible index of the item\n */\n static getVisibleIndex(modelIndex, movedItems = []) {\n let visibleIndex = modelIndex;\n\n for (let i = 0; i < movedItems.length; i += 1) {\n const movedItem = movedItems[i];\n if (visibleIndex === movedItem.from) {\n ({ to: visibleIndex } = movedItem);\n } else if (\n movedItem.from < visibleIndex &&\n visibleIndex <= movedItem.to\n ) {\n visibleIndex -= 1;\n } else if (\n movedItem.to <= visibleIndex &&\n visibleIndex < movedItem.from\n ) {\n visibleIndex += 1;\n }\n }\n\n return visibleIndex;\n }\n\n static isMacPlatform() {\n const { platform } = window.navigator;\n return platform.startsWith('Mac');\n }\n\n static getModifierKey() {\n if (GridUtils.isMacPlatform()) {\n return 'metaKey';\n }\n\n return 'ctrlKey';\n }\n\n static isModifierKeyDown(event) {\n const modifierKey = GridUtils.getModifierKey();\n return event[modifierKey];\n }\n\n static checkColumnHidden(modelIndex, userColumnWidths) {\n return userColumnWidths.get(modelIndex) === 0;\n }\n\n static checkAllColumnsHidden(columns, userColumnWidths) {\n if (userColumnWidths.size === 0) {\n return false;\n }\n return columns.every(column => userColumnWidths.get(column) === 0);\n }\n\n /**\n * Get the bounds the mouse needs to be dragged outside of from an initial selection before scrolling occurs.\n * Taking into account any floating rows that may be covering the viewport.\n * @param {GridMetrics} metrics Grid metrics\n * @param {number} row The row they started dragging in\n * @param {number} column The column they started the drag from\n * @returns Dimensions of the drag area in relation to the canvas they need to drag outside of to start scrolling\n */\n static getScrollDragBounds(metrics, row, column) {\n const {\n gridX,\n gridY,\n width,\n height,\n floatingTopRowCount,\n floatingBottomRowCount,\n floatingLeftColumnCount,\n floatingRightColumnCount,\n floatingLeftWidth,\n floatingRightWidth,\n floatingTopHeight,\n floatingBottomHeight,\n columnCount,\n rowCount,\n } = metrics;\n let x = gridX;\n let y = gridY;\n let x2 = width;\n let y2 = height;\n if (column != null) {\n if (column > floatingLeftColumnCount) {\n x += floatingLeftWidth;\n }\n if (column < columnCount - floatingRightColumnCount) {\n x2 -= floatingRightWidth;\n }\n }\n\n if (row != null) {\n if (row > floatingTopRowCount) {\n y += floatingTopHeight;\n }\n if (row < rowCount - floatingBottomRowCount) {\n y2 -= floatingBottomHeight;\n }\n }\n return { x, y, x2, y2 };\n }\n\n /**\n * Converts the delta coordinates from the provided wheel event to pixels\n * Different platforms have different ways of providing the delta so this normalizes it\n * @param {WheelEvent} wheelEvent The mouse wheel event to get the scrolling delta for\n * @param {number?} pageWidth The width of the page that is scrolling\n * @param {number?} pageHeight The height of the page that is scrolling\n * @param {number?} lineWidth The width of the line scrolling in line mode\n * @param {number?} lineHeight The height of the line scrolling in line mode\n * @returns {{deltaX:number, deltaY: number}} The delta coordinates normalized to pixels\n */\n static getScrollDelta(\n wheelEvent,\n pageWidth = 1024,\n pageHeight = 768,\n lineWidth = 20,\n lineHeight = 20\n ) {\n let { deltaX, deltaY } = wheelEvent;\n\n // Flip scroll direction if shiftKey is held on windows/linux.\n // On mac, deltaX/Y values are switched at the event level when shiftKey=true.\n // Guard on strictly Y only changing, to ignore trackpad diagonal motion,\n // through that guard may not be necessary, but it is difficult to determine for\n // all platforms/browser/scroll method combos.\n if (\n !GridUtils.isMacPlatform() &&\n wheelEvent.shiftKey &&\n wheelEvent.deltaX === 0 &&\n wheelEvent.deltaY !== 0\n ) {\n deltaX = wheelEvent.deltaY;\n deltaY = wheelEvent.deltaX;\n }\n\n // Normalize other deltaMode values to pixel units\n // deltaMode 0, is already in pixel units\n if (wheelEvent?.deltaMode === WheelEvent.DOM_DELTA_PAGE) {\n // Users can set OS to be in deltaMode page\n // scrolly by page units as pixels\n deltaX *= pageWidth;\n deltaY *= pageHeight;\n } else if (wheelEvent?.deltaMode === WheelEvent.DOM_DELTA_LINE) {\n // Firefox reports deltaMode line\n // Normalize distance travelled between browsers\n // but remain ~platform/browser combo consistent\n if (GridUtils.isMacPlatform()) {\n // for mac treat lines as a standard row height\n // on mac, firefox travels less distance then chrome per tick\n deltaX = Math.round(deltaX * lineWidth);\n deltaY = Math.round(deltaY * lineHeight);\n } else {\n // for windows convert to pixels using the same method as chrome\n // chrome goes 100 per 3 lines, and firefox would go 102 per 3 (17 lineheight * 3 lines * 2)\n // make the behaviour the same between as it's close enough\n deltaX = Math.round(deltaX * this.PIXELS_PER_LINE);\n deltaY = Math.round(deltaY * this.PIXELS_PER_LINE);\n }\n }\n\n return { deltaX, deltaY };\n }\n}\n\nexport default GridUtils;\n"],"file":"GridUtils.js"}
@@ -1,3 +1,9 @@
1
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2
+
3
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
4
+
5
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
6
+
1
7
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
8
 
3
9
  /* eslint class-methods-use-this: "off" */
@@ -11,12 +17,14 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
11
17
  // eslint-disable-next-line import/no-cycle
12
18
  // True if consumed and to stop event propagation/prevent default, false if not consumed.
13
19
  // OR an object if consumed with boolean properties to control whether to stopPropagation/preventDefault
14
- class KeyHandler {
20
+ var KeyHandler = /*#__PURE__*/function () {
15
21
  // What order this key handler should trigger in
16
22
  // Default to well below any of the GRID key handlers 100-1000+
17
- constructor() {
23
+ function KeyHandler() {
18
24
  var order = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 5000;
19
25
 
26
+ _classCallCheck(this, KeyHandler);
27
+
20
28
  _defineProperty(this, "order", void 0);
21
29
 
22
30
  this.order = order;
@@ -29,11 +37,15 @@ class KeyHandler {
29
37
  */
30
38
 
31
39
 
32
- onDown(event, grid) {
33
- return false;
34
- }
40
+ _createClass(KeyHandler, [{
41
+ key: "onDown",
42
+ value: function onDown(event, grid) {
43
+ return false;
44
+ }
45
+ }]);
35
46
 
36
- }
47
+ return KeyHandler;
48
+ }();
37
49
 
38
50
  export default KeyHandler;
39
51
  //# sourceMappingURL=KeyHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/KeyHandler.ts"],"names":["KeyHandler","constructor","order","onDown","event","grid"],"mappings":";;AAAA;;AACA;;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AAKA,MAAMA,UAAN,CAAiB;AAGf;AACA;AACAC,EAAAA,WAAW,GAAe;AAAA,QAAdC,KAAc,uEAAN,IAAM;;AAAA;;AACxB,SAAKA,KAAL,GAAaA,KAAb;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACEC,EAAAA,MAAM,CAACC,KAAD,EAAuBC,IAAvB,EAAuD;AAC3D,WAAO,KAAP;AACD;;AAjBc;;AAoBjB,eAAeL,UAAf","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\n/* eslint @typescript-eslint/no-unused-vars: \"off\" */\n/**\n * Handle keys in a grid\n * Return true from any of the events to indicate they're consumed, and stopPropagation/preventDefault will be called.\n */\n\n// eslint-disable-next-line import/no-cycle\nimport Grid from './Grid';\n\n// True if consumed and to stop event propagation/prevent default, false if not consumed.\n// OR an object if consumed with boolean properties to control whether to stopPropagation/preventDefault\nexport type KeyHandlerResponse =\n | boolean\n | { stopPropagation?: boolean; preventDefault?: boolean };\n\nclass KeyHandler {\n private order;\n\n // What order this key handler should trigger in\n // Default to well below any of the GRID key handlers 100-1000+\n constructor(order = 5000) {\n this.order = order;\n }\n\n /**\n * Handle a keydown event on the grid.\n * @param event The keyboard event\n * @param grid The grid component the key press is on\n * @returns Response indicating if the key was consumed\n */\n onDown(event: KeyboardEvent, grid: Grid): KeyHandlerResponse {\n return false;\n }\n}\n\nexport default KeyHandler;\n"],"file":"KeyHandler.js"}
1
+ {"version":3,"sources":["../src/KeyHandler.ts"],"names":["KeyHandler","order","event","grid"],"mappings":";;;;;;;;AAAA;;AACA;;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;IAKMA,U;AAGJ;AACA;AACA,wBAA0B;AAAA,QAAdC,KAAc,uEAAN,IAAM;;AAAA;;AAAA;;AACxB,SAAKA,KAAL,GAAaA,KAAb;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;;;WACE,gBAAOC,KAAP,EAA6BC,IAA7B,EAA6D;AAC3D,aAAO,KAAP;AACD;;;;;;AAGH,eAAeH,UAAf","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\n/* eslint @typescript-eslint/no-unused-vars: \"off\" */\n/**\n * Handle keys in a grid\n * Return true from any of the events to indicate they're consumed, and stopPropagation/preventDefault will be called.\n */\n\n// eslint-disable-next-line import/no-cycle\nimport Grid from './Grid';\n\n// True if consumed and to stop event propagation/prevent default, false if not consumed.\n// OR an object if consumed with boolean properties to control whether to stopPropagation/preventDefault\nexport type KeyHandlerResponse =\n | boolean\n | { stopPropagation?: boolean; preventDefault?: boolean };\n\nclass KeyHandler {\n private order;\n\n // What order this key handler should trigger in\n // Default to well below any of the GRID key handlers 100-1000+\n constructor(order = 5000) {\n this.order = order;\n }\n\n /**\n * Handle a keydown event on the grid.\n * @param event The keyboard event\n * @param grid The grid component the key press is on\n * @returns Response indicating if the key was consumed\n */\n onDown(event: KeyboardEvent, grid: Grid): KeyHandlerResponse {\n return false;\n }\n}\n\nexport default KeyHandler;\n"],"file":"KeyHandler.js"}
@@ -1,128 +1,233 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2
+
1
3
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
2
4
 
3
5
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
4
6
 
5
- /* eslint class-methods-use-this: "off" */
6
-
7
- /* eslint no-unused-vars: "off" */
8
- import GridModel from "./GridModel.js";
9
- import GridRange from "./GridRange.js";
10
-
11
- class MockGridModel extends GridModel {
12
- constructor() {
13
- var {
14
- rowCount = 1000000000,
15
- columnCount = 100,
16
- floatingTopRowCount = 0,
17
- floatingBottomRowCount = 0,
18
- floatingLeftColumnCount = 0,
19
- floatingRightColumnCount = 0,
20
- isEditable = false
21
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
22
- super();
23
- this.numRows = rowCount;
24
- this.numColumns = columnCount;
25
- this.floatingTop = floatingTopRowCount;
26
- this.floatingBottom = floatingBottomRowCount;
27
- this.floatingLeft = floatingLeftColumnCount;
28
- this.floatingRight = floatingRightColumnCount;
29
- this.editedData = [];
30
- this.editable = isEditable;
31
- }
32
-
33
- get rowCount() {
34
- return this.numRows;
35
- }
36
-
37
- get columnCount() {
38
- return this.numColumns;
39
- }
7
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
40
8
 
41
- get floatingTopRowCount() {
42
- return this.floatingTop;
43
- }
9
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
44
10
 
45
- get floatingBottomRowCount() {
46
- return this.floatingBottom;
47
- }
11
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
48
12
 
49
- get floatingLeftColumnCount() {
50
- return this.floatingLeft;
51
- }
13
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
52
14
 
53
- get floatingRightColumnCount() {
54
- return this.floatingRight;
55
- }
15
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
56
16
 
57
- get isEditable() {
58
- return this.editable;
59
- }
17
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
60
18
 
61
- textForCell(column, row) {
62
- var _this$editedData$colu, _this$editedData$colu2;
19
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
63
20
 
64
- return (_this$editedData$colu = (_this$editedData$colu2 = this.editedData[column]) === null || _this$editedData$colu2 === void 0 ? void 0 : _this$editedData$colu2[row]) !== null && _this$editedData$colu !== void 0 ? _this$editedData$colu : "".concat(column, ",").concat(row);
65
- }
21
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
66
22
 
67
- colorForCell(column, row, theme) {
68
- return theme.textColor;
69
- }
23
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
70
24
 
71
- textForColumnHeader(column) {
72
- return "".concat(column);
73
- }
25
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
74
26
 
75
- textForRowHeader(row) {
76
- return "".concat(row);
77
- }
78
-
79
- textForRowFooter(row) {
80
- return "".concat(row);
81
- }
82
-
83
- setValueForCell(x, y, value) {
84
- var _this = this;
27
+ /* eslint class-methods-use-this: "off" */
85
28
 
86
- return _asyncToGenerator(function* () {
87
- if (_this.editedData[x] == null) {
88
- _this.editedData[x] = [];
29
+ /* eslint no-unused-vars: "off" */
30
+ import GridModel from './GridModel';
31
+ import GridRange from './GridRange';
32
+
33
+ var MockGridModel = /*#__PURE__*/function (_GridModel) {
34
+ _inherits(MockGridModel, _GridModel);
35
+
36
+ var _super = _createSuper(MockGridModel);
37
+
38
+ function MockGridModel() {
39
+ var _this;
40
+
41
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
42
+ _ref$rowCount = _ref.rowCount,
43
+ rowCount = _ref$rowCount === void 0 ? 1000000000 : _ref$rowCount,
44
+ _ref$columnCount = _ref.columnCount,
45
+ columnCount = _ref$columnCount === void 0 ? 100 : _ref$columnCount,
46
+ _ref$floatingTopRowCo = _ref.floatingTopRowCount,
47
+ floatingTopRowCount = _ref$floatingTopRowCo === void 0 ? 0 : _ref$floatingTopRowCo,
48
+ _ref$floatingBottomRo = _ref.floatingBottomRowCount,
49
+ floatingBottomRowCount = _ref$floatingBottomRo === void 0 ? 0 : _ref$floatingBottomRo,
50
+ _ref$floatingLeftColu = _ref.floatingLeftColumnCount,
51
+ floatingLeftColumnCount = _ref$floatingLeftColu === void 0 ? 0 : _ref$floatingLeftColu,
52
+ _ref$floatingRightCol = _ref.floatingRightColumnCount,
53
+ floatingRightColumnCount = _ref$floatingRightCol === void 0 ? 0 : _ref$floatingRightCol,
54
+ _ref$isEditable = _ref.isEditable,
55
+ isEditable = _ref$isEditable === void 0 ? false : _ref$isEditable;
56
+
57
+ _classCallCheck(this, MockGridModel);
58
+
59
+ _this = _super.call(this);
60
+ _this.numRows = rowCount;
61
+ _this.numColumns = columnCount;
62
+ _this.floatingTop = floatingTopRowCount;
63
+ _this.floatingBottom = floatingBottomRowCount;
64
+ _this.floatingLeft = floatingLeftColumnCount;
65
+ _this.floatingRight = floatingRightColumnCount;
66
+ _this.editedData = [];
67
+ _this.editable = isEditable;
68
+ return _this;
69
+ }
70
+
71
+ _createClass(MockGridModel, [{
72
+ key: "rowCount",
73
+ get: function get() {
74
+ return this.numRows;
75
+ }
76
+ }, {
77
+ key: "columnCount",
78
+ get: function get() {
79
+ return this.numColumns;
80
+ }
81
+ }, {
82
+ key: "floatingTopRowCount",
83
+ get: function get() {
84
+ return this.floatingTop;
85
+ }
86
+ }, {
87
+ key: "floatingBottomRowCount",
88
+ get: function get() {
89
+ return this.floatingBottom;
90
+ }
91
+ }, {
92
+ key: "floatingLeftColumnCount",
93
+ get: function get() {
94
+ return this.floatingLeft;
95
+ }
96
+ }, {
97
+ key: "floatingRightColumnCount",
98
+ get: function get() {
99
+ return this.floatingRight;
100
+ }
101
+ }, {
102
+ key: "isEditable",
103
+ get: function get() {
104
+ return this.editable;
105
+ }
106
+ }, {
107
+ key: "textForCell",
108
+ value: function textForCell(column, row) {
109
+ var _this$editedData$colu, _this$editedData$colu2;
110
+
111
+ return (_this$editedData$colu = (_this$editedData$colu2 = this.editedData[column]) === null || _this$editedData$colu2 === void 0 ? void 0 : _this$editedData$colu2[row]) !== null && _this$editedData$colu !== void 0 ? _this$editedData$colu : "".concat(column, ",").concat(row);
112
+ }
113
+ }, {
114
+ key: "colorForCell",
115
+ value: function colorForCell(column, row, theme) {
116
+ return theme.textColor;
117
+ }
118
+ }, {
119
+ key: "textForColumnHeader",
120
+ value: function textForColumnHeader(column) {
121
+ return "".concat(column);
122
+ }
123
+ }, {
124
+ key: "textForRowHeader",
125
+ value: function textForRowHeader(row) {
126
+ return "".concat(row);
127
+ }
128
+ }, {
129
+ key: "textForRowFooter",
130
+ value: function textForRowFooter(row) {
131
+ return "".concat(row);
132
+ }
133
+ }, {
134
+ key: "setValueForCell",
135
+ value: function () {
136
+ var _setValueForCell = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(x, y, value) {
137
+ return regeneratorRuntime.wrap(function _callee$(_context) {
138
+ while (1) {
139
+ switch (_context.prev = _context.next) {
140
+ case 0:
141
+ if (this.editedData[x] == null) {
142
+ this.editedData[x] = [];
143
+ }
144
+
145
+ this.editedData[x][y] = "".concat(value);
146
+
147
+ case 2:
148
+ case "end":
149
+ return _context.stop();
150
+ }
151
+ }
152
+ }, _callee, this);
153
+ }));
154
+
155
+ function setValueForCell(_x, _x2, _x3) {
156
+ return _setValueForCell.apply(this, arguments);
89
157
  }
90
158
 
91
- _this.editedData[x][y] = "".concat(value);
92
- })();
93
- }
94
-
95
- setValueForRanges(ranges, text) {
96
- var _this2 = this;
97
-
98
- return _asyncToGenerator(function* () {
99
- GridRange.forEachCell(ranges, (x, y) => {
100
- _this2.setValueForCell(x, y, text);
101
- });
102
- })();
103
- }
104
-
105
- setValues(edits) {
106
- var _this3 = this;
107
-
108
- return _asyncToGenerator(function* () {
109
- for (var i = 0; i < edits.length; i += 1) {
110
- var edit = edits[i];
111
-
112
- _this3.setValueForCell(edit.x, edit.y, edit.text);
159
+ return setValueForCell;
160
+ }()
161
+ }, {
162
+ key: "setValueForRanges",
163
+ value: function () {
164
+ var _setValueForRanges = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(ranges, text) {
165
+ var _this2 = this;
166
+
167
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
168
+ while (1) {
169
+ switch (_context2.prev = _context2.next) {
170
+ case 0:
171
+ GridRange.forEachCell(ranges, function (x, y) {
172
+ _this2.setValueForCell(x, y, text);
173
+ });
174
+
175
+ case 1:
176
+ case "end":
177
+ return _context2.stop();
178
+ }
179
+ }
180
+ }, _callee2);
181
+ }));
182
+
183
+ function setValueForRanges(_x4, _x5) {
184
+ return _setValueForRanges.apply(this, arguments);
113
185
  }
114
- })();
115
- }
116
186
 
117
- editValueForCell(x, y) {
118
- return this.textForCell(x, y);
119
- }
120
-
121
- isValidForCell(x, y, value) {
122
- return true;
123
- }
187
+ return setValueForRanges;
188
+ }()
189
+ }, {
190
+ key: "setValues",
191
+ value: function () {
192
+ var _setValues = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(edits) {
193
+ var i, edit;
194
+ return regeneratorRuntime.wrap(function _callee3$(_context3) {
195
+ while (1) {
196
+ switch (_context3.prev = _context3.next) {
197
+ case 0:
198
+ for (i = 0; i < edits.length; i += 1) {
199
+ edit = edits[i];
200
+ this.setValueForCell(edit.x, edit.y, edit.text);
201
+ }
202
+
203
+ case 1:
204
+ case "end":
205
+ return _context3.stop();
206
+ }
207
+ }
208
+ }, _callee3, this);
209
+ }));
210
+
211
+ function setValues(_x6) {
212
+ return _setValues.apply(this, arguments);
213
+ }
124
214
 
125
- }
215
+ return setValues;
216
+ }()
217
+ }, {
218
+ key: "editValueForCell",
219
+ value: function editValueForCell(x, y) {
220
+ return this.textForCell(x, y);
221
+ }
222
+ }, {
223
+ key: "isValidForCell",
224
+ value: function isValidForCell(x, y, value) {
225
+ return true;
226
+ }
227
+ }]);
228
+
229
+ return MockGridModel;
230
+ }(GridModel);
126
231
 
127
232
  export default MockGridModel;
128
233
  //# sourceMappingURL=MockGridModel.js.map