@deephaven/grid 0.15.1-beta.1 → 0.15.1-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectionKeyHandler.d.ts","sourceRoot":"","sources":["../../src/key-handlers/SelectionKeyHandler.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,SAAS,CAAC;AAG3B,OAAO,UAAU,EAAE,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE9D,cAAM,mBAAoB,SAAQ,UAAU;IAC1C,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"SelectionKeyHandler.d.ts","sourceRoot":"","sources":["../../src/key-handlers/SelectionKeyHandler.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,SAAS,CAAC;AAG3B,OAAO,UAAU,EAAE,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE9D,cAAM,mBAAoB,SAAQ,UAAU;IAC1C,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO;IAqHrD,eAAe,CACb,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,iBAAiB,EACxB,IAAI,EAAE,IAAI,GACT,OAAO;IA2EV,YAAY,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO;IA2CvD,cAAc,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO;CA8C1D;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -27,33 +27,59 @@ class SelectionKeyHandler extends KeyHandler {
|
|
|
27
27
|
case 'ArrowLeft':
|
|
28
28
|
return this.handleArrowMove(-1, 0, event, grid);
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
/**
|
|
31
|
+
* h/j/k/l keys are grouped together for quick navigation by power users.
|
|
32
|
+
* Bender added these as shortcuts in the original commit of keyboard shortcuts.
|
|
33
|
+
* We have no idea why, or what might have inspired them (not excel, not swing, vim?).
|
|
34
|
+
* Maybe lack of page up keys on a laptop at the time?
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
case 'k':
|
|
38
|
+
case 'K':
|
|
39
|
+
if (GridUtils.isModifierKeyDown(event)) return false;
|
|
33
40
|
return this.handlePageUp(event, grid);
|
|
34
41
|
|
|
35
42
|
case 'j':
|
|
36
|
-
case '
|
|
43
|
+
case 'J':
|
|
44
|
+
if (GridUtils.isModifierKeyDown(event)) return false;
|
|
37
45
|
return this.handlePageDown(event, grid);
|
|
38
46
|
|
|
39
47
|
case 'h':
|
|
40
|
-
|
|
41
|
-
|
|
48
|
+
case 'H':
|
|
49
|
+
if (GridUtils.isModifierKeyDown(event)) return false;
|
|
50
|
+
|
|
51
|
+
if (!event.shiftKey) {
|
|
52
|
+
grid.clearSelectedRanges();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
grid.moveCursorToPosition(0, grid.state.cursorRow, event.shiftKey);
|
|
42
56
|
return true;
|
|
43
57
|
|
|
44
58
|
case 'l':
|
|
59
|
+
case 'L':
|
|
45
60
|
{
|
|
61
|
+
if (GridUtils.isModifierKeyDown(event)) return false;
|
|
46
62
|
var {
|
|
47
63
|
model
|
|
48
64
|
} = grid.props;
|
|
49
65
|
var {
|
|
50
66
|
columnCount
|
|
51
67
|
} = model;
|
|
52
|
-
|
|
53
|
-
|
|
68
|
+
|
|
69
|
+
if (!event.shiftKey) {
|
|
70
|
+
grid.clearSelectedRanges();
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
grid.moveCursorToPosition(columnCount - 1, grid.state.cursorRow, event.shiftKey);
|
|
54
74
|
return true;
|
|
55
75
|
}
|
|
56
76
|
|
|
77
|
+
case 'PageDown':
|
|
78
|
+
return this.handlePageDown(event, grid);
|
|
79
|
+
|
|
80
|
+
case 'PageUp':
|
|
81
|
+
return this.handlePageUp(event, grid);
|
|
82
|
+
|
|
57
83
|
case 'Home':
|
|
58
84
|
if (!event.shiftKey) {
|
|
59
85
|
grid.clearSelectedRanges();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/key-handlers/SelectionKeyHandler.ts"],"names":["clamp","GridRange","GridUtils","KeyHandler","SelectionKeyHandler","onDown","event","grid","key","isModifierKeyDown","selectAll","handleArrowMove","handlePageUp","handlePageDown","clearSelectedRanges","moveCursorToPosition","state","cursorRow","model","props","columnCount","shiftKey","cursorColumn","rowCount","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"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport clamp from 'lodash.clamp';\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): boolean {\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 case 'k': // h/j/k/l keys are grouped together for quick navigation by power users\n case 'PageUp':\n return this.handlePageUp(event, grid);\n case 'j':\n case 'PageDown':\n return this.handlePageDown(event, grid);\n case 'h':\n grid.clearSelectedRanges();\n grid.moveCursorToPosition(0, grid.state.cursorRow);\n return true;\n case 'l': {\n const { model } = grid.props;\n const { columnCount } = model;\n grid.clearSelectedRanges();\n grid.moveCursorToPosition(columnCount - 1, grid.state.cursorRow);\n return true;\n }\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 return true;\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 {\n cursorRow,\n cursorColumn,\n selectionEndColumn,\n 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, autoSelectColumn } = 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 {\n bottomVisible,\n topVisible,\n 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 {\n bottomVisible,\n topVisible,\n hasHorizontalBar,\n rowCount,\n 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"],"file":"SelectionKeyHandler.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/key-handlers/SelectionKeyHandler.ts"],"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","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"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport clamp from 'lodash.clamp';\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): boolean {\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 return true;\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 {\n cursorRow,\n cursorColumn,\n selectionEndColumn,\n 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, autoSelectColumn } = 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 {\n bottomVisible,\n topVisible,\n 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 {\n bottomVisible,\n topVisible,\n hasHorizontalBar,\n rowCount,\n 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"],"file":"SelectionKeyHandler.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/grid",
|
|
3
|
-
"version": "0.15.1-beta.
|
|
3
|
+
"version": "0.15.1-beta.2+d4f06fc",
|
|
4
4
|
"description": "Deephaven React grid component",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"react": "^17.0.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@deephaven/tsconfig": "^0.15.1-beta.
|
|
36
|
+
"@deephaven/tsconfig": "^0.15.1-beta.2+d4f06fc"
|
|
37
37
|
},
|
|
38
38
|
"files": [
|
|
39
39
|
"dist"
|
|
@@ -50,5 +50,5 @@
|
|
|
50
50
|
"publishConfig": {
|
|
51
51
|
"access": "public"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "d4f06fc67ee1ff5ac5a4c5bea8a453aa8fc96df7"
|
|
54
54
|
}
|