@deephaven/grid 0.7.3-beta.8 → 0.8.2-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CellInputField.d.ts +4 -4
- package/dist/CellInputField.d.ts.map +1 -1
- package/dist/CellInputField.js +10 -11
- package/dist/CellInputField.js.map +1 -1
- package/dist/EditableGridModel.d.ts +70 -0
- package/dist/EditableGridModel.d.ts.map +1 -0
- package/dist/EditableGridModel.js +13 -0
- package/dist/EditableGridModel.js.map +1 -0
- package/dist/EventHandlerResult.d.ts +17 -0
- package/dist/EventHandlerResult.d.ts.map +1 -0
- package/dist/EventHandlerResult.js +2 -0
- package/dist/EventHandlerResult.js.map +1 -0
- package/dist/ExpandableGridModel.d.ts +34 -0
- package/dist/ExpandableGridModel.d.ts.map +1 -0
- package/dist/ExpandableGridModel.js +7 -0
- package/dist/ExpandableGridModel.js.map +1 -0
- package/dist/Grid.d.ts +283 -234
- package/dist/Grid.d.ts.map +1 -1
- package/dist/Grid.js +371 -165
- package/dist/Grid.js.map +1 -1
- package/dist/GridColorUtils.d.ts +22 -12
- package/dist/GridColorUtils.d.ts.map +1 -1
- package/dist/GridColorUtils.js +26 -21
- package/dist/GridColorUtils.js.map +1 -1
- package/dist/GridMetricCalculator.d.ts.map +1 -1
- package/dist/GridMetricCalculator.js +8 -41
- package/dist/GridMetricCalculator.js.map +1 -1
- package/dist/GridModel.d.ts +54 -60
- package/dist/GridModel.d.ts.map +1 -1
- package/dist/GridModel.js +54 -122
- package/dist/GridModel.js.map +1 -1
- package/dist/GridMouseHandler.d.ts +23 -24
- package/dist/GridMouseHandler.d.ts.map +1 -1
- package/dist/GridMouseHandler.js +6 -14
- package/dist/GridMouseHandler.js.map +1 -1
- package/dist/GridRange.d.ts +2 -2
- package/dist/GridRange.d.ts.map +1 -1
- package/dist/GridRange.js +1 -9
- package/dist/GridRange.js.map +1 -1
- package/dist/GridRenderer.d.ts +117 -69
- package/dist/GridRenderer.d.ts.map +1 -1
- package/dist/GridRenderer.js +183 -168
- package/dist/GridRenderer.js.map +1 -1
- package/dist/GridUtils.d.ts +4 -4
- package/dist/GridUtils.js +4 -4
- package/dist/GridUtils.js.map +1 -1
- package/dist/KeyHandler.d.ts +10 -7
- package/dist/KeyHandler.d.ts.map +1 -1
- package/dist/KeyHandler.js +6 -10
- package/dist/KeyHandler.js.map +1 -1
- package/dist/MockGridData.d.ts +1 -1
- package/dist/MockGridData.d.ts.map +1 -1
- package/dist/MockGridData.js.map +1 -1
- package/dist/MockGridModel.d.ts +39 -12
- package/dist/MockGridModel.d.ts.map +1 -1
- package/dist/MockGridModel.js +24 -10
- package/dist/MockGridModel.js.map +1 -1
- package/dist/MockTreeGridModel.d.ts +37 -22
- package/dist/MockTreeGridModel.d.ts.map +1 -1
- package/dist/MockTreeGridModel.js +32 -20
- package/dist/MockTreeGridModel.js.map +1 -1
- package/dist/errors/AssertionError.d.ts +5 -0
- package/dist/errors/AssertionError.d.ts.map +1 -0
- package/dist/errors/AssertionError.js +12 -0
- package/dist/errors/AssertionError.js.map +1 -0
- package/dist/errors/PasteError.d.ts +1 -1
- package/dist/errors/PasteError.d.ts.map +1 -1
- package/dist/errors/PasteError.js +1 -2
- package/dist/errors/PasteError.js.map +1 -1
- package/dist/errors/assertIsDefined.d.ts +3 -0
- package/dist/errors/assertIsDefined.d.ts.map +1 -0
- package/dist/errors/assertIsDefined.js +8 -0
- package/dist/errors/assertIsDefined.js.map +1 -0
- package/dist/errors/index.d.ts +2 -0
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +2 -1
- package/dist/errors/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/EditKeyHandler.d.ts +3 -2
- package/dist/key-handlers/EditKeyHandler.d.ts.map +1 -1
- package/dist/key-handlers/EditKeyHandler.js +10 -9
- package/dist/key-handlers/EditKeyHandler.js.map +1 -1
- package/dist/key-handlers/PasteKeyHandler.d.ts +3 -5
- package/dist/key-handlers/PasteKeyHandler.d.ts.map +1 -1
- package/dist/key-handlers/PasteKeyHandler.js +3 -3
- package/dist/key-handlers/PasteKeyHandler.js.map +1 -1
- package/dist/key-handlers/SelectionKeyHandler.d.ts +5 -5
- package/dist/key-handlers/SelectionKeyHandler.d.ts.map +1 -1
- package/dist/key-handlers/SelectionKeyHandler.js +16 -15
- package/dist/key-handlers/SelectionKeyHandler.js.map +1 -1
- package/dist/key-handlers/TreeKeyHandler.d.ts +2 -2
- package/dist/key-handlers/TreeKeyHandler.d.ts.map +1 -1
- package/dist/key-handlers/TreeKeyHandler.js +14 -12
- package/dist/key-handlers/TreeKeyHandler.js.map +1 -1
- package/dist/memoizeClear.d.ts +13 -3
- package/dist/memoizeClear.d.ts.map +1 -1
- package/dist/memoizeClear.js +7 -7
- package/dist/memoizeClear.js.map +1 -1
- package/dist/mouse-handlers/EditMouseHandler.d.ts +3 -4
- package/dist/mouse-handlers/EditMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/EditMouseHandler.js +3 -2
- package/dist/mouse-handlers/EditMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.d.ts +12 -5
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.js +11 -12
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.d.ts +24 -3
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js +2 -1
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.d.ts +16 -6
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js +40 -38
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridRowMoveMouseHandler.d.ts +10 -3
- package/dist/mouse-handlers/GridRowMoveMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridRowMoveMouseHandler.js +13 -12
- package/dist/mouse-handlers/GridRowMoveMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.d.ts +24 -3
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js +4 -3
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridRowTreeMouseHandler.d.ts +8 -3
- package/dist/mouse-handlers/GridRowTreeMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridRowTreeMouseHandler.js +12 -7
- package/dist/mouse-handlers/GridRowTreeMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.d.ts +9 -3
- package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js +2 -1
- package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridSelectionMouseHandler.d.ts +15 -9
- package/dist/mouse-handlers/GridSelectionMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridSelectionMouseHandler.js +22 -20
- package/dist/mouse-handlers/GridSelectionMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridSeparatorMouseHandler.d.ts +46 -28
- package/dist/mouse-handlers/GridSeparatorMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridSeparatorMouseHandler.js +45 -86
- package/dist/mouse-handlers/GridSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.d.ts +16 -6
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js +40 -38
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
package/dist/MockGridModel.js
CHANGED
|
@@ -8,6 +8,9 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar
|
|
|
8
8
|
import GridModel from "./GridModel.js";
|
|
9
9
|
import GridRange from "./GridRange.js";
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Mock model implementing GridModel for testing out grid functionality
|
|
13
|
+
*/
|
|
11
14
|
class MockGridModel extends GridModel {
|
|
12
15
|
constructor() {
|
|
13
16
|
var {
|
|
@@ -17,7 +20,8 @@ class MockGridModel extends GridModel {
|
|
|
17
20
|
floatingBottomRowCount = 0,
|
|
18
21
|
floatingLeftColumnCount = 0,
|
|
19
22
|
floatingRightColumnCount = 0,
|
|
20
|
-
isEditable = false
|
|
23
|
+
isEditable = false,
|
|
24
|
+
editedData = []
|
|
21
25
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
22
26
|
super();
|
|
23
27
|
this.numRows = rowCount;
|
|
@@ -26,8 +30,8 @@ class MockGridModel extends GridModel {
|
|
|
26
30
|
this.floatingBottom = floatingBottomRowCount;
|
|
27
31
|
this.floatingLeft = floatingLeftColumnCount;
|
|
28
32
|
this.floatingRight = floatingRightColumnCount;
|
|
29
|
-
this.editedData = [];
|
|
30
33
|
this.editable = isEditable;
|
|
34
|
+
this.editedData = editedData;
|
|
31
35
|
}
|
|
32
36
|
|
|
33
37
|
get rowCount() {
|
|
@@ -80,15 +84,15 @@ class MockGridModel extends GridModel {
|
|
|
80
84
|
return "".concat(row);
|
|
81
85
|
}
|
|
82
86
|
|
|
83
|
-
setValueForCell(
|
|
87
|
+
setValueForCell(column, row, value) {
|
|
84
88
|
var _this = this;
|
|
85
89
|
|
|
86
90
|
return _asyncToGenerator(function* () {
|
|
87
|
-
if (_this.editedData[
|
|
88
|
-
_this.editedData[
|
|
91
|
+
if (_this.editedData[column] == null) {
|
|
92
|
+
_this.editedData[column] = [];
|
|
89
93
|
}
|
|
90
94
|
|
|
91
|
-
_this.editedData[
|
|
95
|
+
_this.editedData[column][row] = "".concat(value);
|
|
92
96
|
})();
|
|
93
97
|
}
|
|
94
98
|
|
|
@@ -107,21 +111,31 @@ class MockGridModel extends GridModel {
|
|
|
107
111
|
|
|
108
112
|
return _asyncToGenerator(function* () {
|
|
109
113
|
for (var i = 0; i < edits.length; i += 1) {
|
|
114
|
+
var _edit$column, _edit$row;
|
|
115
|
+
|
|
110
116
|
var edit = edits[i];
|
|
111
117
|
|
|
112
|
-
_this3.setValueForCell(edit.x, edit.y, edit.text);
|
|
118
|
+
_this3.setValueForCell((_edit$column = edit.column) !== null && _edit$column !== void 0 ? _edit$column : edit.x, (_edit$row = edit.row) !== null && _edit$row !== void 0 ? _edit$row : edit.y, edit.text);
|
|
113
119
|
}
|
|
114
120
|
})();
|
|
115
121
|
}
|
|
116
122
|
|
|
117
|
-
editValueForCell(
|
|
118
|
-
return this.textForCell(
|
|
123
|
+
editValueForCell(column, row) {
|
|
124
|
+
return this.textForCell(column, row);
|
|
119
125
|
}
|
|
120
126
|
|
|
121
|
-
isValidForCell(
|
|
127
|
+
isValidForCell(column, row, value) {
|
|
122
128
|
return true;
|
|
123
129
|
}
|
|
124
130
|
|
|
131
|
+
isEditableRange(range) {
|
|
132
|
+
return this.isEditable;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
delete(ranges) {
|
|
136
|
+
throw new Error('Method not implemented.');
|
|
137
|
+
}
|
|
138
|
+
|
|
125
139
|
}
|
|
126
140
|
|
|
127
141
|
export default MockGridModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/MockGridModel.
|
|
1
|
+
{"version":3,"sources":["../src/MockGridModel.ts"],"names":["GridModel","GridRange","MockGridModel","constructor","rowCount","columnCount","floatingTopRowCount","floatingBottomRowCount","floatingLeftColumnCount","floatingRightColumnCount","isEditable","editedData","numRows","numColumns","floatingTop","floatingBottom","floatingLeft","floatingRight","editable","textForCell","column","row","colorForCell","theme","textColor","textForColumnHeader","textForRowHeader","textForRowFooter","setValueForCell","value","setValueForRanges","ranges","text","forEachCell","x","y","setValues","edits","i","length","edit","editValueForCell","isValidForCell","isEditableRange","range","delete","Error"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\nimport EditableGridModel, { EditOperation } from './EditableGridModel';\nimport { ModelIndex } from './GridMetrics';\nimport GridModel from './GridModel';\nimport GridRange from './GridRange';\nimport { GridColor, GridTheme } from './GridTheme';\n\n/**\n * Mock model implementing GridModel for testing out grid functionality\n */\nclass MockGridModel extends GridModel implements EditableGridModel {\n protected numRows: number;\n\n protected numColumns: number;\n\n protected floatingTop: number;\n\n protected floatingBottom: number;\n\n protected floatingLeft: number;\n\n protected floatingRight: number;\n\n protected editable: boolean;\n\n protected editedData: string[][];\n\n constructor({\n rowCount = 1000000000,\n columnCount = 100,\n floatingTopRowCount = 0,\n floatingBottomRowCount = 0,\n floatingLeftColumnCount = 0,\n floatingRightColumnCount = 0,\n isEditable = false,\n editedData = [],\n } = {}) {\n super();\n\n this.numRows = rowCount;\n this.numColumns = columnCount;\n this.floatingTop = floatingTopRowCount;\n this.floatingBottom = floatingBottomRowCount;\n this.floatingLeft = floatingLeftColumnCount;\n this.floatingRight = floatingRightColumnCount;\n this.editable = isEditable;\n this.editedData = editedData;\n }\n\n get rowCount(): number {\n return this.numRows;\n }\n\n get columnCount(): number {\n return this.numColumns;\n }\n\n get floatingTopRowCount(): number {\n return this.floatingTop;\n }\n\n get floatingBottomRowCount(): number {\n return this.floatingBottom;\n }\n\n get floatingLeftColumnCount(): number {\n return this.floatingLeft;\n }\n\n get floatingRightColumnCount(): number {\n return this.floatingRight;\n }\n\n get isEditable(): boolean {\n return this.editable;\n }\n\n textForCell(column: ModelIndex, row: ModelIndex): string {\n return this.editedData[column]?.[row] ?? `${column},${row}`;\n }\n\n colorForCell(\n column: ModelIndex,\n row: ModelIndex,\n theme: GridTheme\n ): GridColor {\n return theme.textColor;\n }\n\n textForColumnHeader(column: ModelIndex): string {\n return `${column}`;\n }\n\n textForRowHeader(row: ModelIndex): string {\n return `${row}`;\n }\n\n textForRowFooter(row: ModelIndex): string {\n return `${row}`;\n }\n\n async setValueForCell(\n column: ModelIndex,\n row: ModelIndex,\n value: string\n ): Promise<void> {\n if (this.editedData[column] == null) {\n this.editedData[column] = [];\n }\n this.editedData[column][row] = `${value}`;\n }\n\n async setValueForRanges(ranges: GridRange[], text: string): Promise<void> {\n GridRange.forEachCell(ranges, (x, y) => {\n this.setValueForCell(x, y, text);\n });\n }\n\n async setValues(edits: EditOperation[]): Promise<void> {\n for (let i = 0; i < edits.length; i += 1) {\n const edit = edits[i];\n this.setValueForCell(\n edit.column ?? edit.x,\n edit.row ?? edit.y,\n edit.text\n );\n }\n }\n\n editValueForCell(column: ModelIndex, row: ModelIndex): string {\n return this.textForCell(column, row);\n }\n\n isValidForCell(column: ModelIndex, row: ModelIndex, value: string): boolean {\n return true;\n }\n\n isEditableRange(range: GridRange): boolean {\n return this.isEditable;\n }\n\n delete(ranges: GridRange[]): Promise<void> {\n throw new Error('Method not implemented.');\n }\n}\n\nexport default MockGridModel;\n"],"file":"MockGridModel.js"}
|
|
@@ -1,40 +1,55 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="memoizee" />
|
|
2
|
+
import MockGridModel from './MockGridModel';
|
|
3
|
+
import ExpandableGridModel from './ExpandableGridModel';
|
|
4
|
+
import { ModelIndex } from './GridMetrics';
|
|
5
|
+
declare type ChildrenTreeMap = Map<ModelIndex, MockTreeGridModel>;
|
|
2
6
|
/**
|
|
3
7
|
* A class to mock a tree model so can test out tree models.
|
|
4
8
|
* Whenever a row is expanded, it creates a child model for that row, which can then make a child for those rows, etc.
|
|
5
9
|
*/
|
|
6
|
-
declare class MockTreeGridModel extends MockGridModel {
|
|
10
|
+
declare class MockTreeGridModel extends MockGridModel implements ExpandableGridModel {
|
|
7
11
|
static DEFAULT_ROW_COUNT: number;
|
|
8
12
|
static DEFAULT_COLUMN_COUNT: number;
|
|
9
13
|
/** How many rows a child tree should have related to the parent. Eg. if parent has 10000 rows, child will have 100 */
|
|
10
14
|
static DEFAULT_CHILD_ROW_COUNT_FACTOR: number;
|
|
11
15
|
static MIN_CHILD_ROW_COUNT: number;
|
|
12
16
|
static MAX_DEPTH: number;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
private children;
|
|
18
|
+
private childRowCount;
|
|
19
|
+
private maxDepth;
|
|
20
|
+
constructor({ rowCount, columnCount, children, childRowCount, maxDepth, }?: {
|
|
21
|
+
children?: ChildrenTreeMap;
|
|
22
|
+
columnCount?: number;
|
|
23
|
+
rowCount?: number;
|
|
24
|
+
childRowCount?: number;
|
|
25
|
+
maxDepth?: number;
|
|
22
26
|
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
textForCell(column: ModelIndex, row: ModelIndex): string;
|
|
28
|
+
textForRowHeader(row: ModelIndex): string;
|
|
29
|
+
isRowMovable(row: ModelIndex): boolean;
|
|
30
|
+
get hasExpandableRows(): boolean;
|
|
31
|
+
get floatingBottomRowCount(): number;
|
|
32
|
+
isRowExpandable(row: ModelIndex): boolean;
|
|
33
|
+
isRowExpanded(row: ModelIndex): boolean;
|
|
34
|
+
setRowExpanded(row: ModelIndex, isExpanded: boolean): void;
|
|
35
|
+
depthForRow(row: ModelIndex): number;
|
|
27
36
|
/**
|
|
28
37
|
* Returns the map key and the offsetRow given the provided children and row index.
|
|
29
38
|
* If the returned key is null, then this offset row is within this model.
|
|
30
39
|
* Only returning the key instead of the model so that memoize doesn't cache a bunch of the children models after they've been deleted (collapsed).
|
|
31
40
|
*/
|
|
32
|
-
getCachedModelRowOffset: ((
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
41
|
+
getCachedModelRowOffset: ((children: ChildrenTreeMap, row: ModelIndex) => {
|
|
42
|
+
key: ModelIndex | null;
|
|
43
|
+
offsetRow: ModelIndex;
|
|
44
|
+
}) & import("memoizee").Memoized<(children: ChildrenTreeMap, row: ModelIndex) => {
|
|
45
|
+
key: ModelIndex | null;
|
|
46
|
+
offsetRow: ModelIndex;
|
|
47
|
+
}>;
|
|
48
|
+
getCachedTextForRowHeader: ((children: ChildrenTreeMap, row: ModelIndex) => string) & import("memoizee").Memoized<(children: ChildrenTreeMap, row: ModelIndex) => string>;
|
|
49
|
+
getCachedTextForCell: ((children: ChildrenTreeMap, column: ModelIndex, row: ModelIndex) => string) & import("memoizee").Memoized<(children: ChildrenTreeMap, column: ModelIndex, row: ModelIndex) => string>;
|
|
50
|
+
getCachedIsRowExpandable: ((children: ChildrenTreeMap, row: ModelIndex, maxDepth: number) => boolean) & import("memoizee").Memoized<(children: ChildrenTreeMap, row: ModelIndex, maxDepth: number) => boolean>;
|
|
51
|
+
getCachedIsRowExpanded: ((children: ChildrenTreeMap, row: ModelIndex) => boolean) & import("memoizee").Memoized<(children: ChildrenTreeMap, row: ModelIndex) => boolean>;
|
|
52
|
+
getCachedDepthForRow: ((children: ChildrenTreeMap, row: ModelIndex) => number) & import("memoizee").Memoized<(children: ChildrenTreeMap, row: ModelIndex) => number>;
|
|
38
53
|
}
|
|
39
|
-
|
|
54
|
+
export default MockTreeGridModel;
|
|
40
55
|
//# sourceMappingURL=MockTreeGridModel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MockTreeGridModel.d.ts","sourceRoot":"","sources":["../src/MockTreeGridModel.
|
|
1
|
+
{"version":3,"file":"MockTreeGridModel.d.ts","sourceRoot":"","sources":["../src/MockTreeGridModel.ts"],"names":[],"mappings":";AAEA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,aAAK,eAAe,GAAG,GAAG,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;AAE1D;;;GAGG;AACH,cAAM,iBAAkB,SAAQ,aAAc,YAAW,mBAAmB;IAC1E,MAAM,CAAC,iBAAiB,SAAc;IAEtC,MAAM,CAAC,oBAAoB,SAAO;IAElC,sHAAsH;IACtH,MAAM,CAAC,8BAA8B,SAAQ;IAE7C,MAAM,CAAC,mBAAmB,SAAM;IAEhC,MAAM,CAAC,SAAS,SAAM;IAEtB,OAAO,CAAC,QAAQ,CAAkB;IAElC,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,QAAQ,CAAS;gBAEb,EACV,QAA8C,EAC9C,WAAoD,EACpD,QAAoB,EACpB,aAKC,EACD,QAAsC,GACvC,GAAE;QACD,QAAQ,CAAC,EAAE,eAAe,CAAC;QAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACd;IAQN,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM;IAIxD,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM;IAIzC,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO;IAItC,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IAED,IAAI,sBAAsB,IAAI,MAAM,CAEnC;IAED,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO;IAIzC,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO;IAIvC,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;IA8B1D,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM;IAIpC;;;;OAIG;IACH,uBAAuB,oCAGd,UAAU;aACP,UAAU,GAAG,IAAI;mBAAa,UAAU;sEAD3C,UAAU;aACP,UAAU,GAAG,IAAI;mBAAa,UAAU;OAqBlD;IAEF,yBAAyB,oCACU,UAAU,KAAG,MAAM,iEAAnB,UAAU,KAAG,MAAM,EAYpD;IAEF,oBAAoB,uCAGR,UAAU,OACb,UAAU,KACd,MAAM,oEAFC,UAAU,OACb,UAAU,KACd,MAAM,EAYT;IAEF,wBAAwB,oCACW,UAAU,YAAY,MAAM,KAAG,OAAO,iEAAtC,UAAU,YAAY,MAAM,KAAG,OAAO,EAKvE;IAEF,sBAAsB,oCACa,UAAU,KAAG,OAAO,iEAApB,UAAU,KAAG,OAAO,EAYrD;IAEF,oBAAoB,oCACe,UAAU,KAAG,MAAM,iEAAnB,UAAU,KAAG,MAAM,EAYpD;CACH;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -5,11 +5,11 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
5
5
|
/* eslint no-unused-vars: "off" */
|
|
6
6
|
import MockGridModel from "./MockGridModel.js";
|
|
7
7
|
import memoizeClear from "./memoizeClear.js";
|
|
8
|
+
|
|
8
9
|
/**
|
|
9
10
|
* A class to mock a tree model so can test out tree models.
|
|
10
11
|
* Whenever a row is expanded, it creates a child model for that row, which can then make a child for those rows, etc.
|
|
11
12
|
*/
|
|
12
|
-
|
|
13
13
|
class MockTreeGridModel extends MockGridModel {
|
|
14
14
|
/** How many rows a child tree should have related to the parent. Eg. if parent has 10000 rows, child will have 100 */
|
|
15
15
|
constructor() {
|
|
@@ -18,16 +18,11 @@ class MockTreeGridModel extends MockGridModel {
|
|
|
18
18
|
columnCount = MockTreeGridModel.DEFAULT_COLUMN_COUNT,
|
|
19
19
|
children: _children = new Map(),
|
|
20
20
|
childRowCount: _childRowCount = Math.ceil(Math.max(MockTreeGridModel.MIN_CHILD_ROW_COUNT, rowCount * MockTreeGridModel.DEFAULT_CHILD_ROW_COUNT_FACTOR)),
|
|
21
|
-
maxDepth: _maxDepth = MockTreeGridModel.MAX_DEPTH
|
|
22
|
-
movedColumns = [],
|
|
23
|
-
movedRows = [],
|
|
24
|
-
columnFormatMap = new Map()
|
|
21
|
+
maxDepth: _maxDepth = MockTreeGridModel.MAX_DEPTH
|
|
25
22
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
26
23
|
super({
|
|
27
24
|
rowCount,
|
|
28
|
-
columnCount
|
|
29
|
-
movedColumns,
|
|
30
|
-
movedRows
|
|
25
|
+
columnCount
|
|
31
26
|
});
|
|
32
27
|
|
|
33
28
|
_defineProperty(this, "getCachedModelRowOffset", memoizeClear((children, row) => {
|
|
@@ -68,7 +63,10 @@ class MockTreeGridModel extends MockGridModel {
|
|
|
68
63
|
|
|
69
64
|
if (key != null) {
|
|
70
65
|
var model = children.get(key);
|
|
71
|
-
|
|
66
|
+
|
|
67
|
+
if (model !== undefined) {
|
|
68
|
+
return "".concat(key, ".").concat(model.textForRowHeader(offsetRow));
|
|
69
|
+
}
|
|
72
70
|
}
|
|
73
71
|
|
|
74
72
|
return "".concat(offsetRow);
|
|
@@ -82,7 +80,10 @@ class MockTreeGridModel extends MockGridModel {
|
|
|
82
80
|
|
|
83
81
|
if (key != null) {
|
|
84
82
|
var model = children.get(key);
|
|
85
|
-
|
|
83
|
+
|
|
84
|
+
if (model !== undefined) {
|
|
85
|
+
return "".concat(key, ".").concat(model.textForCell(column, offsetRow));
|
|
86
|
+
}
|
|
86
87
|
}
|
|
87
88
|
|
|
88
89
|
return "".concat(column, ",").concat(offsetRow);
|
|
@@ -101,7 +102,10 @@ class MockTreeGridModel extends MockGridModel {
|
|
|
101
102
|
|
|
102
103
|
if (key != null) {
|
|
103
104
|
var model = children.get(key);
|
|
104
|
-
|
|
105
|
+
|
|
106
|
+
if (model !== undefined) {
|
|
107
|
+
return model.isRowExpanded(offsetRow);
|
|
108
|
+
}
|
|
105
109
|
}
|
|
106
110
|
|
|
107
111
|
return children.has(offsetRow);
|
|
@@ -115,7 +119,10 @@ class MockTreeGridModel extends MockGridModel {
|
|
|
115
119
|
|
|
116
120
|
if (key != null) {
|
|
117
121
|
var model = children.get(key);
|
|
118
|
-
|
|
122
|
+
|
|
123
|
+
if (model !== undefined) {
|
|
124
|
+
return model.depthForRow(offsetRow) + 1;
|
|
125
|
+
}
|
|
119
126
|
}
|
|
120
127
|
|
|
121
128
|
return 0;
|
|
@@ -124,7 +131,6 @@ class MockTreeGridModel extends MockGridModel {
|
|
|
124
131
|
this.children = _children;
|
|
125
132
|
this.childRowCount = _childRowCount;
|
|
126
133
|
this.maxDepth = _maxDepth;
|
|
127
|
-
this.formatMap = columnFormatMap;
|
|
128
134
|
}
|
|
129
135
|
|
|
130
136
|
textForCell(column, row) {
|
|
@@ -165,15 +171,21 @@ class MockTreeGridModel extends MockGridModel {
|
|
|
165
171
|
|
|
166
172
|
if (key != null) {
|
|
167
173
|
var model = this.children.get(key);
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
174
|
+
|
|
175
|
+
if (model !== undefined) {
|
|
176
|
+
var {
|
|
177
|
+
rowCount: originalChildRowCount
|
|
178
|
+
} = model;
|
|
179
|
+
model.setRowExpanded(offsetRow, isExpanded);
|
|
180
|
+
this.numRows += model.rowCount - originalChildRowCount;
|
|
181
|
+
}
|
|
173
182
|
} else if (!isExpanded) {
|
|
174
183
|
var childModel = children.get(offsetRow);
|
|
175
|
-
|
|
176
|
-
|
|
184
|
+
|
|
185
|
+
if (childModel !== undefined) {
|
|
186
|
+
this.numRows -= childModel.rowCount;
|
|
187
|
+
children.delete(offsetRow);
|
|
188
|
+
}
|
|
177
189
|
} else {
|
|
178
190
|
var child = new MockTreeGridModel({
|
|
179
191
|
rowCount: this.childRowCount,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/MockTreeGridModel.js"],"names":["MockGridModel","memoizeClear","MockTreeGridModel","constructor","rowCount","DEFAULT_ROW_COUNT","columnCount","DEFAULT_COLUMN_COUNT","children","Map","childRowCount","Math","ceil","max","MIN_CHILD_ROW_COUNT","DEFAULT_CHILD_ROW_COUNT_FACTOR","maxDepth","MAX_DEPTH","movedColumns","movedRows","columnFormatMap","row","key","offsetRow","sortedEntries","sort","a","b","i","length","childRow","childModel","getCachedModelRowOffset","model","get","textForRowHeader","column","textForCell","depth","getCachedDepthForRow","isRowExpanded","has","depthForRow","formatMap","getCachedTextForCell","getCachedTextForRowHeader","isRowMovable","hasExpandableRows","floatingBottomRowCount","isRowExpandable","getCachedIsRowExpandable","getCachedIsRowExpanded","setRowExpanded","isExpanded","originalChildRowCount","numRows","delete","child","numColumns","set"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\nimport MockGridModel from './MockGridModel';\nimport memoizeClear from './memoizeClear';\n\n/**\n * A class to mock a tree model so can test out tree models.\n * Whenever a row is expanded, it creates a child model for that row, which can then make a child for those rows, etc.\n */\nclass MockTreeGridModel extends MockGridModel {\n static DEFAULT_ROW_COUNT = 1000000000;\n\n static DEFAULT_COLUMN_COUNT = 100;\n\n /** How many rows a child tree should have related to the parent. Eg. if parent has 10000 rows, child will have 100 */\n static DEFAULT_CHILD_ROW_COUNT_FACTOR = 0.01;\n\n static MIN_CHILD_ROW_COUNT = 10;\n\n static MAX_DEPTH = 10;\n\n constructor({\n rowCount = MockTreeGridModel.DEFAULT_ROW_COUNT,\n columnCount = MockTreeGridModel.DEFAULT_COLUMN_COUNT,\n children = new Map(),\n childRowCount = Math.ceil(\n Math.max(\n MockTreeGridModel.MIN_CHILD_ROW_COUNT,\n rowCount * MockTreeGridModel.DEFAULT_CHILD_ROW_COUNT_FACTOR\n )\n ),\n maxDepth = MockTreeGridModel.MAX_DEPTH,\n movedColumns = [],\n movedRows = [],\n columnFormatMap = new Map(),\n } = {}) {\n super({ rowCount, columnCount, movedColumns, movedRows });\n\n this.children = children;\n this.childRowCount = childRowCount;\n this.maxDepth = maxDepth;\n this.formatMap = columnFormatMap;\n }\n\n textForCell(column, row) {\n return this.getCachedTextForCell(this.children, column, row);\n }\n\n textForRowHeader(row) {\n return this.getCachedTextForRowHeader(this.children, row);\n }\n\n isRowMovable(row) {\n return false;\n }\n\n get hasExpandableRows() {\n return true;\n }\n\n get floatingBottomRowCount() {\n return 0;\n }\n\n isRowExpandable(row) {\n return this.getCachedIsRowExpandable(this.children, row, this.maxDepth);\n }\n\n isRowExpanded(row) {\n return this.getCachedIsRowExpanded(this.children, row);\n }\n\n setRowExpanded(row, isExpanded) {\n const { key, offsetRow } = this.getCachedModelRowOffset(this.children, row);\n\n // We always set a new map so that our memoize functions work properly\n const children = new Map(this.children);\n if (key != null) {\n const model = this.children.get(key);\n const { rowCount: originalChildRowCount } = model;\n model.setRowExpanded(offsetRow, isExpanded);\n this.numRows += model.rowCount - originalChildRowCount;\n } else if (!isExpanded) {\n const childModel = children.get(offsetRow);\n this.numRows -= childModel.rowCount;\n children.delete(offsetRow);\n } else {\n const child = new MockTreeGridModel({\n rowCount: this.childRowCount,\n columnCount: this.numColumns,\n });\n children.set(offsetRow, child);\n this.numRows += child.rowCount;\n }\n\n this.children = children;\n }\n\n depthForRow(row) {\n return this.getCachedDepthForRow(this.children, row);\n }\n\n /**\n * Returns the map key and the offsetRow given the provided children and row index.\n * If the returned key is null, then this offset row is within this model.\n * Only returning the key instead of the model so that memoize doesn't cache a bunch of the children models after they've been deleted (collapsed).\n */\n getCachedModelRowOffset = memoizeClear((children, row) => {\n let key = null;\n let offsetRow = row;\n // Need to iterate through the map in order... sort it first\n const sortedEntries = [...children].sort((a, b) => a[0] - b[0]);\n for (let i = 0; i < sortedEntries.length; i += 1) {\n const [childRow, childModel] = sortedEntries[i];\n if (offsetRow <= childRow) {\n break;\n }\n const childRowCount = childModel.rowCount;\n if (offsetRow <= childRow + childRowCount) {\n key = childRow;\n offsetRow = offsetRow - childRow - 1;\n break;\n }\n offsetRow -= childRowCount;\n }\n\n return { key, offsetRow };\n });\n\n getCachedTextForRowHeader = memoizeClear((children, row) => {\n const { key, offsetRow } = this.getCachedModelRowOffset(children, row);\n\n if (key != null) {\n const model = children.get(key);\n return `${key}.${model.textForRowHeader(offsetRow)}`;\n }\n\n return `${offsetRow}`;\n });\n\n getCachedTextForCell = memoizeClear((children, column, row) => {\n const { key, offsetRow } = this.getCachedModelRowOffset(children, row);\n\n if (key != null) {\n const model = children.get(key);\n return `${key}.${model.textForCell(column, offsetRow)}`;\n }\n\n return `${column},${offsetRow}`;\n });\n\n getCachedIsRowExpandable = memoizeClear((children, row, maxDepth) => {\n const depth = this.getCachedDepthForRow(children, row);\n\n return depth < maxDepth;\n });\n\n getCachedIsRowExpanded = memoizeClear((children, row) => {\n const { key, offsetRow } = this.getCachedModelRowOffset(children, row);\n\n if (key != null) {\n const model = children.get(key);\n return model.isRowExpanded(offsetRow);\n }\n\n return children.has(offsetRow);\n });\n\n getCachedDepthForRow = memoizeClear((children, row) => {\n const { key, offsetRow } = this.getCachedModelRowOffset(children, row);\n\n if (key != null) {\n const model = children.get(key);\n return model.depthForRow(offsetRow) + 1;\n }\n\n return 0;\n });\n}\n\nexport default MockTreeGridModel;\n"],"file":"MockTreeGridModel.js"}
|
|
1
|
+
{"version":3,"sources":["../src/MockTreeGridModel.ts"],"names":["MockGridModel","memoizeClear","MockTreeGridModel","constructor","rowCount","DEFAULT_ROW_COUNT","columnCount","DEFAULT_COLUMN_COUNT","children","Map","childRowCount","Math","ceil","max","MIN_CHILD_ROW_COUNT","DEFAULT_CHILD_ROW_COUNT_FACTOR","maxDepth","MAX_DEPTH","row","key","offsetRow","sortedEntries","sort","a","b","i","length","childRow","childModel","getCachedModelRowOffset","model","get","undefined","textForRowHeader","column","textForCell","depth","getCachedDepthForRow","isRowExpanded","has","depthForRow","getCachedTextForCell","getCachedTextForRowHeader","isRowMovable","hasExpandableRows","floatingBottomRowCount","isRowExpandable","getCachedIsRowExpandable","getCachedIsRowExpanded","setRowExpanded","isExpanded","originalChildRowCount","numRows","delete","child","numColumns","set"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\nimport MockGridModel from './MockGridModel';\nimport memoizeClear from './memoizeClear';\nimport ExpandableGridModel from './ExpandableGridModel';\nimport { ModelIndex } from './GridMetrics';\n\ntype ChildrenTreeMap = Map<ModelIndex, MockTreeGridModel>;\n\n/**\n * A class to mock a tree model so can test out tree models.\n * Whenever a row is expanded, it creates a child model for that row, which can then make a child for those rows, etc.\n */\nclass MockTreeGridModel extends MockGridModel implements ExpandableGridModel {\n static DEFAULT_ROW_COUNT = 1000000000;\n\n static DEFAULT_COLUMN_COUNT = 100;\n\n /** How many rows a child tree should have related to the parent. Eg. if parent has 10000 rows, child will have 100 */\n static DEFAULT_CHILD_ROW_COUNT_FACTOR = 0.01;\n\n static MIN_CHILD_ROW_COUNT = 10;\n\n static MAX_DEPTH = 10;\n\n private children: ChildrenTreeMap;\n\n private childRowCount: number;\n\n private maxDepth: number;\n\n constructor({\n rowCount = MockTreeGridModel.DEFAULT_ROW_COUNT,\n columnCount = MockTreeGridModel.DEFAULT_COLUMN_COUNT,\n children = new Map(),\n childRowCount = Math.ceil(\n Math.max(\n MockTreeGridModel.MIN_CHILD_ROW_COUNT,\n rowCount * MockTreeGridModel.DEFAULT_CHILD_ROW_COUNT_FACTOR\n )\n ),\n maxDepth = MockTreeGridModel.MAX_DEPTH,\n }: {\n children?: ChildrenTreeMap;\n columnCount?: number;\n rowCount?: number;\n childRowCount?: number;\n maxDepth?: number;\n } = {}) {\n super({ rowCount, columnCount });\n\n this.children = children;\n this.childRowCount = childRowCount;\n this.maxDepth = maxDepth;\n }\n\n textForCell(column: ModelIndex, row: ModelIndex): string {\n return this.getCachedTextForCell(this.children, column, row);\n }\n\n textForRowHeader(row: ModelIndex): string {\n return this.getCachedTextForRowHeader(this.children, row);\n }\n\n isRowMovable(row: ModelIndex): boolean {\n return false;\n }\n\n get hasExpandableRows(): boolean {\n return true;\n }\n\n get floatingBottomRowCount(): number {\n return 0;\n }\n\n isRowExpandable(row: ModelIndex): boolean {\n return this.getCachedIsRowExpandable(this.children, row, this.maxDepth);\n }\n\n isRowExpanded(row: ModelIndex): boolean {\n return this.getCachedIsRowExpanded(this.children, row);\n }\n\n setRowExpanded(row: ModelIndex, isExpanded: boolean): void {\n const { key, offsetRow } = this.getCachedModelRowOffset(this.children, row);\n\n // We always set a new map so that our memoize functions work properly\n const children = new Map(this.children);\n if (key != null) {\n const model = this.children.get(key);\n if (model !== undefined) {\n const { rowCount: originalChildRowCount } = model;\n model.setRowExpanded(offsetRow, isExpanded);\n this.numRows += model.rowCount - originalChildRowCount;\n }\n } else if (!isExpanded) {\n const childModel = children.get(offsetRow);\n if (childModel !== undefined) {\n this.numRows -= childModel.rowCount;\n children.delete(offsetRow);\n }\n } else {\n const child = new MockTreeGridModel({\n rowCount: this.childRowCount,\n columnCount: this.numColumns,\n });\n children.set(offsetRow, child);\n this.numRows += child.rowCount;\n }\n\n this.children = children;\n }\n\n depthForRow(row: ModelIndex): number {\n return this.getCachedDepthForRow(this.children, row);\n }\n\n /**\n * Returns the map key and the offsetRow given the provided children and row index.\n * If the returned key is null, then this offset row is within this model.\n * Only returning the key instead of the model so that memoize doesn't cache a bunch of the children models after they've been deleted (collapsed).\n */\n getCachedModelRowOffset = memoizeClear(\n (\n children: ChildrenTreeMap,\n row: ModelIndex\n ): { key: ModelIndex | null; offsetRow: ModelIndex } => {\n let key = null;\n let offsetRow = row;\n // Need to iterate through the map in order... sort it first\n const sortedEntries = [...children].sort((a, b) => a[0] - b[0]);\n for (let i = 0; i < sortedEntries.length; i += 1) {\n const [childRow, childModel] = sortedEntries[i];\n if (offsetRow <= childRow) {\n break;\n }\n const childRowCount = childModel.rowCount;\n if (offsetRow <= childRow + childRowCount) {\n key = childRow;\n offsetRow = offsetRow - childRow - 1;\n break;\n }\n offsetRow -= childRowCount;\n }\n\n return { key, offsetRow };\n }\n );\n\n getCachedTextForRowHeader = memoizeClear(\n (children: ChildrenTreeMap, row: ModelIndex): string => {\n const { key, offsetRow } = this.getCachedModelRowOffset(children, row);\n\n if (key != null) {\n const model = children.get(key);\n if (model !== undefined) {\n return `${key}.${model.textForRowHeader(offsetRow)}`;\n }\n }\n\n return `${offsetRow}`;\n }\n );\n\n getCachedTextForCell = memoizeClear(\n (\n children: ChildrenTreeMap,\n column: ModelIndex,\n row: ModelIndex\n ): string => {\n const { key, offsetRow } = this.getCachedModelRowOffset(children, row);\n\n if (key != null) {\n const model = children.get(key);\n if (model !== undefined) {\n return `${key}.${model.textForCell(column, offsetRow)}`;\n }\n }\n\n return `${column},${offsetRow}`;\n }\n );\n\n getCachedIsRowExpandable = memoizeClear(\n (children: ChildrenTreeMap, row: ModelIndex, maxDepth: number): boolean => {\n const depth = this.getCachedDepthForRow(children, row);\n\n return depth < maxDepth;\n }\n );\n\n getCachedIsRowExpanded = memoizeClear(\n (children: ChildrenTreeMap, row: ModelIndex): boolean => {\n const { key, offsetRow } = this.getCachedModelRowOffset(children, row);\n\n if (key != null) {\n const model = children.get(key);\n if (model !== undefined) {\n return model.isRowExpanded(offsetRow);\n }\n }\n\n return children.has(offsetRow);\n }\n );\n\n getCachedDepthForRow = memoizeClear(\n (children: ChildrenTreeMap, row: ModelIndex): number => {\n const { key, offsetRow } = this.getCachedModelRowOffset(children, row);\n\n if (key != null) {\n const model = children.get(key);\n if (model !== undefined) {\n return model.depthForRow(offsetRow) + 1;\n }\n }\n\n return 0;\n }\n );\n}\n\nexport default MockTreeGridModel;\n"],"file":"MockTreeGridModel.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssertionError.d.ts","sourceRoot":"","sources":["../../src/errors/AssertionError.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAe,SAAQ,KAAK;IACvC,iBAAiB,UAAQ;CAC1B;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
|
|
3
|
+
export class AssertionError extends Error {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(...arguments);
|
|
6
|
+
|
|
7
|
+
_defineProperty(this, "isAssertionFailed", true);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
}
|
|
11
|
+
export default AssertionError;
|
|
12
|
+
//# sourceMappingURL=AssertionError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/errors/AssertionError.ts"],"names":["AssertionError","Error"],"mappings":";;AAAA,OAAO,MAAMA,cAAN,SAA6BC,KAA7B,CAAmC;AAAA;AAAA;;AAAA,+CACpB,IADoB;AAAA;;AAAA;AAI1C,eAAeD,cAAf","sourcesContent":["export class AssertionError extends Error {\n isAssertionFailed = true;\n}\n\nexport default AssertionError;\n"],"file":"AssertionError.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PasteError.d.ts","sourceRoot":"","sources":["../../src/errors/PasteError.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"PasteError.d.ts","sourceRoot":"","sources":["../../src/errors/PasteError.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAW,SAAQ,KAAK;IACnC,YAAY,UAAQ;CACrB;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
2
|
|
|
3
|
-
class PasteError extends Error {
|
|
3
|
+
export class PasteError extends Error {
|
|
4
4
|
constructor() {
|
|
5
5
|
super(...arguments);
|
|
6
6
|
|
|
@@ -8,6 +8,5 @@ class PasteError extends Error {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
}
|
|
11
|
-
|
|
12
11
|
export default PasteError;
|
|
13
12
|
//# sourceMappingURL=PasteError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/errors/PasteError.ts"],"names":["PasteError","Error"],"mappings":";;AAAA,MAAMA,UAAN,SAAyBC,KAAzB,CAA+B;AAAA;AAAA;;AAAA,
|
|
1
|
+
{"version":3,"sources":["../../src/errors/PasteError.ts"],"names":["PasteError","Error"],"mappings":";;AAAA,OAAO,MAAMA,UAAN,SAAyBC,KAAzB,CAA+B;AAAA;AAAA;;AAAA,0CACrB,IADqB;AAAA;;AAAA;AAItC,eAAeD,UAAf","sourcesContent":["export class PasteError extends Error {\n isPasteError = true;\n}\n\nexport default PasteError;\n"],"file":"PasteError.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertIsDefined.d.ts","sourceRoot":"","sources":["../../src/errors/assertIsDefined.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAMxE;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import AssertionError from "./AssertionError.js";
|
|
2
|
+
export function assertIsDefined(val) {
|
|
3
|
+
if (val === undefined || val === null) {
|
|
4
|
+
throw new AssertionError("Expected 'val' to be defined, but received ".concat(val));
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export default assertIsDefined;
|
|
8
|
+
//# sourceMappingURL=assertIsDefined.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/errors/assertIsDefined.ts"],"names":["AssertionError","assertIsDefined","val","undefined"],"mappings":"OAAOA,c;AAEP,OAAO,SAASC,eAAT,CAA4BC,GAA5B,EAAmE;AACxE,MAAIA,GAAG,KAAKC,SAAR,IAAqBD,GAAG,KAAK,IAAjC,EAAuC;AACrC,UAAM,IAAIF,cAAJ,sDAC0CE,GAD1C,EAAN;AAGD;AACF;AAED,eAAeD,eAAf","sourcesContent":["import AssertionError from './AssertionError';\n\nexport function assertIsDefined<T>(val: T): asserts val is NonNullable<T> {\n if (val === undefined || val === null) {\n throw new AssertionError(\n `Expected 'val' to be defined, but received ${val}`\n );\n }\n}\n\nexport default assertIsDefined;\n"],"file":"assertIsDefined.js"}
|
package/dist/errors/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/errors/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
export { default as assertIsDefined } from "./assertIsDefined.js";
|
|
2
|
+
export { default as AssertionError } from "./AssertionError.js";
|
|
2
3
|
export { default as PasteError } from "./PasteError.js";
|
|
3
4
|
//# sourceMappingURL=index.js.map
|
package/dist/errors/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/errors/index.ts"],"names":["default","PasteError"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/errors/index.ts"],"names":["default","assertIsDefined","AssertionError","PasteError"],"mappings":"SAASA,OAAO,IAAIC,e;SACXD,OAAO,IAAIE,c;SACXF,OAAO,IAAIG,U","sourcesContent":["export { default as assertIsDefined } from './assertIsDefined';\nexport { default as AssertionError } from './AssertionError';\nexport { default as PasteError } from './PasteError';\n"],"file":"index.js"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export { default as GridUtils } from './GridUtils';
|
|
|
10
10
|
export { default as KeyHandler } from './KeyHandler';
|
|
11
11
|
export { default as MockGridModel } from './MockGridModel';
|
|
12
12
|
export { default as MockTreeGridModel } from './MockTreeGridModel';
|
|
13
|
+
export { default as memoizeClear } from './memoizeClear';
|
|
13
14
|
export * from './key-handlers';
|
|
14
15
|
export * from './mouse-handlers';
|
|
15
16
|
export * from './errors';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,7 @@ export { default as GridUtils } from "./GridUtils.js";
|
|
|
10
10
|
export { default as KeyHandler } from "./KeyHandler.js";
|
|
11
11
|
export { default as MockGridModel } from "./MockGridModel.js";
|
|
12
12
|
export { default as MockTreeGridModel } from "./MockTreeGridModel.js";
|
|
13
|
+
export { default as memoizeClear } from "./memoizeClear.js";
|
|
13
14
|
export * from "./key-handlers/index.js";
|
|
14
15
|
export * from "./mouse-handlers/index.js";
|
|
15
16
|
export * from "./errors/index.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["default","Grid","GridMetricCalculator","GridModel","GridMouseHandler","GridRange","GridRenderer","GridTestUtils","GridTheme","GridUtils","KeyHandler","MockGridModel","MockTreeGridModel"],"mappings":"SAASA,OAAO,IAAIC,I;SACXD,OAAO,IAAIE,oB;SACXF,OAAO,IAAIG,S;SACXH,OAAO,IAAII,gB;SACXJ,OAAO,IAAIK,S;SACXL,OAAO,IAAIM,Y;SACXN,OAAO,IAAIO,a;SACXP,OAAO,IAAIQ,S;SACXR,OAAO,IAAIS,S;SACXT,OAAO,IAAIU,U;SACXV,OAAO,IAAIW,a;SACXX,OAAO,IAAIY,iB","sourcesContent":["export { default as Grid } from './Grid';\nexport { default as GridMetricCalculator } from './GridMetricCalculator';\nexport { default as GridModel } from './GridModel';\nexport { default as GridMouseHandler } from './GridMouseHandler';\nexport { default as GridRange } from './GridRange';\nexport { default as GridRenderer } from './GridRenderer';\nexport { default as GridTestUtils } from './GridTestUtils';\nexport { default as GridTheme } from './GridTheme';\nexport { default as GridUtils } from './GridUtils';\nexport { default as KeyHandler } from './KeyHandler';\nexport { default as MockGridModel } from './MockGridModel';\nexport { default as MockTreeGridModel } from './MockTreeGridModel';\nexport * from './key-handlers';\nexport * from './mouse-handlers';\nexport * from './errors';\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["default","Grid","GridMetricCalculator","GridModel","GridMouseHandler","GridRange","GridRenderer","GridTestUtils","GridTheme","GridUtils","KeyHandler","MockGridModel","MockTreeGridModel","memoizeClear"],"mappings":"SAASA,OAAO,IAAIC,I;SACXD,OAAO,IAAIE,oB;SACXF,OAAO,IAAIG,S;SACXH,OAAO,IAAII,gB;SACXJ,OAAO,IAAIK,S;SACXL,OAAO,IAAIM,Y;SACXN,OAAO,IAAIO,a;SACXP,OAAO,IAAIQ,S;SACXR,OAAO,IAAIS,S;SACXT,OAAO,IAAIU,U;SACXV,OAAO,IAAIW,a;SACXX,OAAO,IAAIY,iB;SACXZ,OAAO,IAAIa,Y","sourcesContent":["export { default as Grid } from './Grid';\nexport { default as GridMetricCalculator } from './GridMetricCalculator';\nexport { default as GridModel } from './GridModel';\nexport { default as GridMouseHandler } from './GridMouseHandler';\nexport { default as GridRange } from './GridRange';\nexport { default as GridRenderer } from './GridRenderer';\nexport { default as GridTestUtils } from './GridTestUtils';\nexport { default as GridTheme } from './GridTheme';\nexport { default as GridUtils } from './GridUtils';\nexport { default as KeyHandler } from './KeyHandler';\nexport { default as MockGridModel } from './MockGridModel';\nexport { default as MockTreeGridModel } from './MockTreeGridModel';\nexport { default as memoizeClear } from './memoizeClear';\nexport * from './key-handlers';\nexport * from './mouse-handlers';\nexport * from './errors';\n"],"file":"index.js"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import Grid from '../Grid';
|
|
2
|
-
import KeyHandler from '../KeyHandler';
|
|
2
|
+
import KeyHandler, { GridKeyboardEvent } from '../KeyHandler';
|
|
3
|
+
import { EventHandlerResult } from '../EventHandlerResult';
|
|
3
4
|
declare class EditKeyHandler extends KeyHandler {
|
|
4
|
-
onDown(
|
|
5
|
+
onDown(event: GridKeyboardEvent, grid: Grid): EventHandlerResult;
|
|
5
6
|
}
|
|
6
7
|
export default EditKeyHandler;
|
|
7
8
|
//# sourceMappingURL=EditKeyHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditKeyHandler.d.ts","sourceRoot":"","sources":["../../src/key-handlers/EditKeyHandler.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,UAAU,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"EditKeyHandler.d.ts","sourceRoot":"","sources":["../../src/key-handlers/EditKeyHandler.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,UAAU,EAAE,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,cAAM,cAAe,SAAQ,UAAU;IACrC,MAAM,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;CA0CjE;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
import GridUtils from "../GridUtils.js";
|
|
3
3
|
import GridRange from "../GridRange.js";
|
|
4
4
|
import KeyHandler from "../KeyHandler.js";
|
|
5
|
+
import { isEditableGridModel } from "../EditableGridModel.js";
|
|
5
6
|
|
|
6
7
|
class EditKeyHandler extends KeyHandler {
|
|
7
|
-
onDown(
|
|
8
|
-
if (GridUtils.isModifierKeyDown(
|
|
8
|
+
onDown(event, grid) {
|
|
9
|
+
if (GridUtils.isModifierKeyDown(event)) {
|
|
9
10
|
return false;
|
|
10
11
|
}
|
|
11
12
|
|
|
@@ -17,7 +18,7 @@ class EditKeyHandler extends KeyHandler {
|
|
|
17
18
|
cursorRow
|
|
18
19
|
} = grid.state;
|
|
19
20
|
|
|
20
|
-
if (cursorColumn == null || cursorRow == null || !model.isEditableRange(GridRange.makeCell(cursorColumn, cursorRow))) {
|
|
21
|
+
if (cursorColumn == null || cursorRow == null || !isEditableGridModel(model) || !model.isEditableRange(GridRange.makeCell(cursorColumn, cursorRow))) {
|
|
21
22
|
return false;
|
|
22
23
|
}
|
|
23
24
|
|
|
@@ -28,22 +29,22 @@ class EditKeyHandler extends KeyHandler {
|
|
|
28
29
|
return false;
|
|
29
30
|
}
|
|
30
31
|
|
|
31
|
-
if (
|
|
32
|
-
grid.startEditing(column, row, true, [1, 1],
|
|
32
|
+
if (event.key.length === 1) {
|
|
33
|
+
grid.startEditing(column, row, true, [1, 1], event.key);
|
|
33
34
|
return true;
|
|
34
35
|
}
|
|
35
36
|
|
|
36
|
-
if (
|
|
37
|
+
if (event.key === 'F2') {
|
|
37
38
|
grid.startEditing(column, row);
|
|
38
39
|
return true;
|
|
39
40
|
}
|
|
40
41
|
|
|
41
|
-
if (
|
|
42
|
-
grid.startEditing(column, row, true,
|
|
42
|
+
if (event.key === 'Backspace') {
|
|
43
|
+
grid.startEditing(column, row, true, undefined, '');
|
|
43
44
|
return true;
|
|
44
45
|
}
|
|
45
46
|
|
|
46
|
-
if (
|
|
47
|
+
if (event.key === 'Delete') {
|
|
47
48
|
grid.setValueForCell(column, row, '');
|
|
48
49
|
return true;
|
|
49
50
|
}
|