@deephaven/iris-grid 1.6.1-beta.0 → 1.7.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.
- package/dist/ColumnHeaderGroup.d.ts +9 -8
- package/dist/ColumnHeaderGroup.d.ts.map +1 -1
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/CommonTypes.d.ts +18 -2
- package/dist/CommonTypes.d.ts.map +1 -1
- package/dist/CommonTypes.js.map +1 -1
- package/dist/IrisGrid.d.ts +14 -5
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +110 -45
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridMetricCalculator.d.ts +42 -23
- package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
- package/dist/IrisGridMetricCalculator.js +120 -5
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridRenderer.d.ts +3 -15
- package/dist/IrisGridRenderer.d.ts.map +1 -1
- package/dist/IrisGridRenderer.js +3 -3
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +1 -0
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +3 -0
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTreeTableModel.d.ts +2 -2
- package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
- package/dist/IrisGridTreeTableModel.js +0 -1
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +5 -5
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +4 -2
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +23 -2
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/package.json +16 -16
|
@@ -1,29 +1,48 @@
|
|
|
1
|
-
import { GridMetricCalculator, type ModelSizeMap } from '@deephaven/grid';
|
|
1
|
+
import { GridMetricCalculator, type GridMetrics, type ModelSizeMap } from '@deephaven/grid';
|
|
2
2
|
import type { GridMetricState } from '@deephaven/grid';
|
|
3
|
-
import type
|
|
4
|
-
|
|
5
|
-
import { type IrisGridThemeType } from './IrisGridTheme';
|
|
6
|
-
export interface IrisGridMetricState extends GridMetricState {
|
|
7
|
-
model: IrisGridModel;
|
|
8
|
-
theme: IrisGridThemeType;
|
|
9
|
-
isFilterBarShown: boolean;
|
|
10
|
-
advancedFilters: Map<string, {
|
|
11
|
-
options: unknown;
|
|
12
|
-
filter: dh.FilterCondition | null;
|
|
13
|
-
}>;
|
|
14
|
-
quickFilters: Map<string, {
|
|
15
|
-
text: string;
|
|
16
|
-
filter: dh.FilterCondition | null;
|
|
17
|
-
}>;
|
|
18
|
-
sorts: dh.Sort[];
|
|
19
|
-
reverse: boolean;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Class to calculate all the metrics for a grid.
|
|
23
|
-
* Call getMetrics() with the state to get metrics
|
|
24
|
-
*/
|
|
3
|
+
import { type IrisGridStateOverride } from './CommonTypes';
|
|
4
|
+
export type IrisGridMetricState = GridMetricState & IrisGridStateOverride;
|
|
25
5
|
export declare class IrisGridMetricCalculator extends GridMetricCalculator {
|
|
6
|
+
private userColumnWidthsByName;
|
|
7
|
+
private cachedModelColumnNames;
|
|
8
|
+
private getCachedCurrentModelColumnNames;
|
|
9
|
+
private updateCalculatedColumnWidths;
|
|
10
|
+
/**
|
|
11
|
+
* Updates the user column widths based on the current model state
|
|
12
|
+
* @param model The current IrisGridModel
|
|
13
|
+
*/
|
|
14
|
+
private updateUserColumnWidths;
|
|
15
|
+
/**
|
|
16
|
+
* Updates the user and calculated column widths if the model columns have changed
|
|
17
|
+
* @param model The current IrisGridModel
|
|
18
|
+
*/
|
|
19
|
+
private updateColumnWidthsIfNecessary;
|
|
26
20
|
getGridY(state: IrisGridMetricState): number;
|
|
21
|
+
/**
|
|
22
|
+
* Gets the metrics for the current state. This method has to be called before setColumnSize or resetColumnSize.
|
|
23
|
+
* @param state The current IrisGridMetricState
|
|
24
|
+
* @returns The metrics for the current state
|
|
25
|
+
*/
|
|
26
|
+
getMetrics(state: IrisGridMetricState): GridMetrics;
|
|
27
|
+
/**
|
|
28
|
+
* Sets the width for a specific column by index
|
|
29
|
+
* @param column The index of the column to set
|
|
30
|
+
* @param size The new width for the column
|
|
31
|
+
*/
|
|
32
|
+
setColumnWidth(column: number, size: number): void;
|
|
33
|
+
/**
|
|
34
|
+
* Resets the width for a specific column by index
|
|
35
|
+
* @param column The index of the column to reset
|
|
36
|
+
*/
|
|
37
|
+
resetColumnWidth(column: number): void;
|
|
38
|
+
/**
|
|
39
|
+
* Resets all user column widths
|
|
40
|
+
*/
|
|
41
|
+
resetAllColumnWidths(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Gets the user column widths
|
|
44
|
+
* @returns A map of user column widths
|
|
45
|
+
*/
|
|
27
46
|
getUserColumnWidths(): ModelSizeMap;
|
|
28
47
|
getCalculatedColumnWidths(): ModelSizeMap;
|
|
29
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridMetricCalculator.d.ts","sourceRoot":"","sources":["../src/IrisGridMetricCalculator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IrisGridMetricCalculator.d.ts","sourceRoot":"","sources":["../src/IrisGridMetricCalculator.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EACpB,KAAK,WAAW,EAEhB,KAAK,YAAY,EAElB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIvD,OAAO,EAAE,KAAK,qBAAqB,EAAmB,MAAM,eAAe,CAAC;AAE5E,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,qBAAqB,CAAC;AAE1E,qBAAa,wBAAyB,SAAQ,oBAAoB;IAEhE,OAAO,CAAC,sBAAsB,CAAsC;IAGpE,OAAO,CAAC,sBAAsB,CAAoC;IAElE,OAAO,CAAC,gCAAgC,CAEtC;IAEF,OAAO,CAAC,4BAA4B;IAmBpC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;;OAGG;IACH,OAAO,CAAC,6BAA6B;IAkBrC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM;IA2B5C;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,mBAAmB,GAAG,WAAW;IAQnD;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAalD;;;OAGG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAYtC;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAK5B;;;OAGG;IACH,mBAAmB,IAAI,YAAY;IAKnC,yBAAyB,IAAI,YAAY;CAG1C;AAED,eAAe,wBAAwB,CAAC"}
|
|
@@ -1,10 +1,69 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
2
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
|
+
import deepEqual from 'fast-deep-equal';
|
|
5
|
+
import memoizeOne from 'memoize-one';
|
|
6
|
+
import { GridMetricCalculator, trimMap } from '@deephaven/grid';
|
|
7
|
+
import { assertNotNull } from '@deephaven/utils';
|
|
6
8
|
export class IrisGridMetricCalculator extends GridMetricCalculator {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
_defineProperty(this, "userColumnWidthsByName", new Map());
|
|
12
|
+
_defineProperty(this, "cachedModelColumnNames", void 0);
|
|
13
|
+
_defineProperty(this, "getCachedCurrentModelColumnNames", memoizeOne(columns => columns.map(col => col.name)));
|
|
14
|
+
} // Column widths by name to keep track of columns going in and out of viewport
|
|
15
|
+
// Cached model column names to detect when the column width map update is necessary
|
|
16
|
+
updateCalculatedColumnWidths(model) {
|
|
17
|
+
assertNotNull(this.cachedModelColumnNames);
|
|
18
|
+
var calculatedColumnWidthsByName = new Map();
|
|
19
|
+
this.cachedModelColumnNames.forEach((name, index) => {
|
|
20
|
+
var prevColumnWidth = this.calculatedColumnWidths.get(index);
|
|
21
|
+
if (prevColumnWidth != null) {
|
|
22
|
+
calculatedColumnWidthsByName.set(name, prevColumnWidth);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
this.resetCalculatedColumnWidths();
|
|
26
|
+
calculatedColumnWidthsByName.forEach((width, name) => {
|
|
27
|
+
var index = model.getColumnIndexByName(name);
|
|
28
|
+
if (index != null) {
|
|
29
|
+
this.calculatedColumnWidths.set(index, width);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
trimMap(this.calculatedColumnWidths);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Updates the user column widths based on the current model state
|
|
37
|
+
* @param model The current IrisGridModel
|
|
38
|
+
*/
|
|
39
|
+
updateUserColumnWidths(model) {
|
|
40
|
+
this.userColumnWidths = new Map();
|
|
41
|
+
this.userColumnWidthsByName.forEach((width, name) => {
|
|
42
|
+
var modelIndex = model.getColumnIndexByName(name);
|
|
43
|
+
if (modelIndex != null) {
|
|
44
|
+
super.setColumnWidth(modelIndex, width);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Updates the user and calculated column widths if the model columns have changed
|
|
51
|
+
* @param model The current IrisGridModel
|
|
52
|
+
*/
|
|
53
|
+
updateColumnWidthsIfNecessary(model) {
|
|
54
|
+
// Comparing model.columns references wouldn't work here because
|
|
55
|
+
// the reference can change in the model without the actual column definitions changing
|
|
56
|
+
var modelColumnNames = this.getCachedCurrentModelColumnNames(model.columns);
|
|
57
|
+
if (this.cachedModelColumnNames != null && this.cachedModelColumnNames !== modelColumnNames && !deepEqual(modelColumnNames, this.cachedModelColumnNames)) {
|
|
58
|
+
// Preserve column widths when possible to minimize visual shifts in the grid layout
|
|
59
|
+
this.updateCalculatedColumnWidths(model);
|
|
60
|
+
this.updateUserColumnWidths(model);
|
|
61
|
+
}
|
|
62
|
+
this.cachedModelColumnNames = modelColumnNames;
|
|
63
|
+
}
|
|
7
64
|
getGridY(state) {
|
|
65
|
+
// The state here seems to be a GridMetricState with stateOverrides passed from IrisGrid in the props,
|
|
66
|
+
// not guaranteed to be IrisGridMetricState
|
|
8
67
|
var gridY = super.getGridY(state);
|
|
9
68
|
var {
|
|
10
69
|
isFilterBarShown,
|
|
@@ -24,7 +83,63 @@ export class IrisGridMetricCalculator extends GridMetricCalculator {
|
|
|
24
83
|
}
|
|
25
84
|
return gridY;
|
|
26
85
|
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Gets the metrics for the current state. This method has to be called before setColumnSize or resetColumnSize.
|
|
89
|
+
* @param state The current IrisGridMetricState
|
|
90
|
+
* @returns The metrics for the current state
|
|
91
|
+
*/
|
|
92
|
+
getMetrics(state) {
|
|
93
|
+
var {
|
|
94
|
+
model
|
|
95
|
+
} = state;
|
|
96
|
+
// Update column widths if columns in the cached model don't match the current model passed in the state
|
|
97
|
+
this.updateColumnWidthsIfNecessary(model);
|
|
98
|
+
return super.getMetrics(state);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Sets the width for a specific column by index
|
|
103
|
+
* @param column The index of the column to set
|
|
104
|
+
* @param size The new width for the column
|
|
105
|
+
*/
|
|
106
|
+
setColumnWidth(column, size) {
|
|
107
|
+
super.setColumnWidth(column, size);
|
|
108
|
+
assertNotNull(this.cachedModelColumnNames, 'setColumnWidth should be called after getMetrics');
|
|
109
|
+
var name = this.cachedModelColumnNames[column];
|
|
110
|
+
if (name != null) {
|
|
111
|
+
this.userColumnWidthsByName.set(name, size);
|
|
112
|
+
trimMap(this.userColumnWidthsByName);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Resets the width for a specific column by index
|
|
118
|
+
* @param column The index of the column to reset
|
|
119
|
+
*/
|
|
120
|
+
resetColumnWidth(column) {
|
|
121
|
+
super.resetColumnWidth(column);
|
|
122
|
+
assertNotNull(this.cachedModelColumnNames, 'resetColumnWidth should be called after getMetrics');
|
|
123
|
+
var name = this.cachedModelColumnNames[column];
|
|
124
|
+
if (name != null) {
|
|
125
|
+
this.userColumnWidthsByName.delete(name);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Resets all user column widths
|
|
131
|
+
*/
|
|
132
|
+
resetAllColumnWidths() {
|
|
133
|
+
this.userColumnWidths = new Map();
|
|
134
|
+
this.userColumnWidthsByName = new Map();
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Gets the user column widths
|
|
139
|
+
* @returns A map of user column widths
|
|
140
|
+
*/
|
|
27
141
|
getUserColumnWidths() {
|
|
142
|
+
// This might return stale data if getMetrics hasn't been called
|
|
28
143
|
return this.userColumnWidths;
|
|
29
144
|
}
|
|
30
145
|
getCalculatedColumnWidths() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridMetricCalculator.js","names":["GridMetricCalculator","IrisGridMetricCalculator","getGridY","state","gridY","isFilterBarShown","theme","advancedFilters","quickFilters","sorts","reverse","filterBarHeight","size","filterBarCollapsedHeight","length","reverseHeaderBarHeight","getUserColumnWidths","userColumnWidths","getCalculatedColumnWidths","calculatedColumnWidths"],"sources":["../src/IrisGridMetricCalculator.ts"],"sourcesContent":["import { GridMetricCalculator, type ModelSizeMap } from '@deephaven/grid';\nimport type { GridMetricState } from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport type IrisGridModel from './IrisGridModel';\nimport { type IrisGridThemeType } from './IrisGridTheme';\n\nexport interface IrisGridMetricState extends GridMetricState {\n model: IrisGridModel;\n theme: IrisGridThemeType;\n isFilterBarShown: boolean;\n advancedFilters: Map<\n string,\n { options: unknown; filter: dh.FilterCondition | null }\n >;\n quickFilters: Map<\n string,\n { text: string; filter: dh.FilterCondition | null }\n >;\n sorts: dh.Sort[];\n reverse: boolean;\n}\n\n/**\n * Class to calculate all the metrics for a grid.\n * Call getMetrics() with the state to get metrics\n */\nexport class IrisGridMetricCalculator extends GridMetricCalculator {\n getGridY(state: IrisGridMetricState): number {\n let gridY = super.getGridY(state);\n const {\n isFilterBarShown,\n theme,\n advancedFilters,\n quickFilters,\n sorts,\n reverse,\n } = state;\n if (isFilterBarShown) {\n gridY += theme.filterBarHeight;\n } else if (\n (quickFilters != null && quickFilters.size > 0) ||\n (advancedFilters != null && advancedFilters.size > 0)\n ) {\n gridY += theme.filterBarCollapsedHeight;\n }\n if (reverse && sorts != null && sorts.length > 0) {\n gridY += theme.reverseHeaderBarHeight;\n }\n\n return gridY;\n }\n\n getUserColumnWidths(): ModelSizeMap {\n return this.userColumnWidths;\n }\n\n getCalculatedColumnWidths(): ModelSizeMap {\n return this.calculatedColumnWidths;\n }\n}\n\nexport default IrisGridMetricCalculator;\n"],"mappings":"AAAA,SAASA,oBAAoB,QAA2B,iBAAiB;AAsBzE;AACA;AACA;AACA;AACA,OAAO,MAAMC,wBAAwB,SAASD,oBAAoB,CAAC;EACjEE,QAAQA,CAACC,KAA0B,EAAU;IAC3C,IAAIC,KAAK,GAAG,KAAK,CAACF,QAAQ,CAACC,KAAK,CAAC;IACjC,IAAM;MACJE,gBAAgB;MAChBC,KAAK;MACLC,eAAe;MACfC,YAAY;MACZC,KAAK;MACLC;IACF,CAAC,GAAGP,KAAK;IACT,IAAIE,gBAAgB,EAAE;MACpBD,KAAK,IAAIE,KAAK,CAACK,eAAe;IAChC,CAAC,MAAM,IACJH,YAAY,IAAI,IAAI,IAAIA,YAAY,CAACI,IAAI,GAAG,CAAC,IAC7CL,eAAe,IAAI,IAAI,IAAIA,eAAe,CAACK,IAAI,GAAG,CAAE,EACrD;MACAR,KAAK,IAAIE,KAAK,CAACO,wBAAwB;IACzC;IACA,IAAIH,OAAO,IAAID,KAAK,IAAI,IAAI,IAAIA,KAAK,CAACK,MAAM,GAAG,CAAC,EAAE;MAChDV,KAAK,IAAIE,KAAK,CAACS,sBAAsB;IACvC;IAEA,OAAOX,KAAK;EACd;EAEAY,mBAAmBA,CAAA,EAAiB;IAClC,OAAO,IAAI,CAACC,gBAAgB;EAC9B;EAEAC,yBAAyBA,CAAA,EAAiB;IACxC,OAAO,IAAI,CAACC,sBAAsB;EACpC;AACF;AAEA,eAAelB,wBAAwB"}
|
|
1
|
+
{"version":3,"file":"IrisGridMetricCalculator.js","names":["deepEqual","memoizeOne","GridMetricCalculator","trimMap","assertNotNull","IrisGridMetricCalculator","constructor","arguments","_defineProperty","Map","columns","map","col","name","updateCalculatedColumnWidths","model","cachedModelColumnNames","calculatedColumnWidthsByName","forEach","index","prevColumnWidth","calculatedColumnWidths","get","set","resetCalculatedColumnWidths","width","getColumnIndexByName","updateUserColumnWidths","userColumnWidths","userColumnWidthsByName","modelIndex","setColumnWidth","updateColumnWidthsIfNecessary","modelColumnNames","getCachedCurrentModelColumnNames","getGridY","state","gridY","isFilterBarShown","theme","advancedFilters","quickFilters","sorts","reverse","filterBarHeight","size","filterBarCollapsedHeight","length","reverseHeaderBarHeight","getMetrics","column","resetColumnWidth","delete","resetAllColumnWidths","getUserColumnWidths","getCalculatedColumnWidths"],"sources":["../src/IrisGridMetricCalculator.ts"],"sourcesContent":["import deepEqual from 'fast-deep-equal';\nimport memoizeOne from 'memoize-one';\nimport {\n GridMetricCalculator,\n type GridMetrics,\n type ModelIndex,\n type ModelSizeMap,\n trimMap,\n} from '@deephaven/grid';\nimport type { GridMetricState } from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { assertNotNull } from '@deephaven/utils';\nimport type IrisGridModel from './IrisGridModel';\nimport { type IrisGridStateOverride, type ColumnName } from './CommonTypes';\n\nexport type IrisGridMetricState = GridMetricState & IrisGridStateOverride;\n\nexport class IrisGridMetricCalculator extends GridMetricCalculator {\n // Column widths by name to keep track of columns going in and out of viewport\n private userColumnWidthsByName: Map<ColumnName, number> = new Map();\n\n // Cached model column names to detect when the column width map update is necessary\n private cachedModelColumnNames: readonly ColumnName[] | undefined;\n\n private getCachedCurrentModelColumnNames = memoizeOne(\n (columns: readonly dh.Column[]) => columns.map(col => col.name)\n );\n\n private updateCalculatedColumnWidths(model: IrisGridModel): void {\n assertNotNull(this.cachedModelColumnNames);\n const calculatedColumnWidthsByName = new Map<ColumnName, number>();\n this.cachedModelColumnNames.forEach((name, index) => {\n const prevColumnWidth = this.calculatedColumnWidths.get(index);\n if (prevColumnWidth != null) {\n calculatedColumnWidthsByName.set(name, prevColumnWidth);\n }\n });\n this.resetCalculatedColumnWidths();\n calculatedColumnWidthsByName.forEach((width, name) => {\n const index = model.getColumnIndexByName(name);\n if (index != null) {\n this.calculatedColumnWidths.set(index, width);\n }\n });\n trimMap(this.calculatedColumnWidths);\n }\n\n /**\n * Updates the user column widths based on the current model state\n * @param model The current IrisGridModel\n */\n private updateUserColumnWidths(model: IrisGridModel): void {\n this.userColumnWidths = new Map<ModelIndex, number>();\n this.userColumnWidthsByName.forEach((width, name) => {\n const modelIndex = model.getColumnIndexByName(name);\n if (modelIndex != null) {\n super.setColumnWidth(modelIndex, width);\n }\n });\n }\n\n /**\n * Updates the user and calculated column widths if the model columns have changed\n * @param model The current IrisGridModel\n */\n private updateColumnWidthsIfNecessary(model: IrisGridModel): void {\n // Comparing model.columns references wouldn't work here because\n // the reference can change in the model without the actual column definitions changing\n const modelColumnNames = this.getCachedCurrentModelColumnNames(\n model.columns\n );\n if (\n this.cachedModelColumnNames != null &&\n this.cachedModelColumnNames !== modelColumnNames &&\n !deepEqual(modelColumnNames, this.cachedModelColumnNames)\n ) {\n // Preserve column widths when possible to minimize visual shifts in the grid layout\n this.updateCalculatedColumnWidths(model);\n this.updateUserColumnWidths(model);\n }\n this.cachedModelColumnNames = modelColumnNames;\n }\n\n getGridY(state: IrisGridMetricState): number {\n // The state here seems to be a GridMetricState with stateOverrides passed from IrisGrid in the props,\n // not guaranteed to be IrisGridMetricState\n let gridY = super.getGridY(state);\n const {\n isFilterBarShown,\n theme,\n advancedFilters,\n quickFilters,\n sorts,\n reverse,\n } = state;\n if (isFilterBarShown) {\n gridY += theme.filterBarHeight;\n } else if (\n (quickFilters != null && quickFilters.size > 0) ||\n (advancedFilters != null && advancedFilters.size > 0)\n ) {\n gridY += theme.filterBarCollapsedHeight;\n }\n if (reverse && sorts != null && sorts.length > 0) {\n gridY += theme.reverseHeaderBarHeight;\n }\n\n return gridY;\n }\n\n /**\n * Gets the metrics for the current state. This method has to be called before setColumnSize or resetColumnSize.\n * @param state The current IrisGridMetricState\n * @returns The metrics for the current state\n */\n getMetrics(state: IrisGridMetricState): GridMetrics {\n const { model } = state;\n // Update column widths if columns in the cached model don't match the current model passed in the state\n this.updateColumnWidthsIfNecessary(model);\n\n return super.getMetrics(state);\n }\n\n /**\n * Sets the width for a specific column by index\n * @param column The index of the column to set\n * @param size The new width for the column\n */\n setColumnWidth(column: number, size: number): void {\n super.setColumnWidth(column, size);\n assertNotNull(\n this.cachedModelColumnNames,\n 'setColumnWidth should be called after getMetrics'\n );\n const name = this.cachedModelColumnNames[column];\n if (name != null) {\n this.userColumnWidthsByName.set(name, size);\n trimMap(this.userColumnWidthsByName);\n }\n }\n\n /**\n * Resets the width for a specific column by index\n * @param column The index of the column to reset\n */\n resetColumnWidth(column: number): void {\n super.resetColumnWidth(column);\n assertNotNull(\n this.cachedModelColumnNames,\n 'resetColumnWidth should be called after getMetrics'\n );\n const name = this.cachedModelColumnNames[column];\n if (name != null) {\n this.userColumnWidthsByName.delete(name);\n }\n }\n\n /**\n * Resets all user column widths\n */\n resetAllColumnWidths(): void {\n this.userColumnWidths = new Map<ModelIndex, number>();\n this.userColumnWidthsByName = new Map<ColumnName, number>();\n }\n\n /**\n * Gets the user column widths\n * @returns A map of user column widths\n */\n getUserColumnWidths(): ModelSizeMap {\n // This might return stale data if getMetrics hasn't been called\n return this.userColumnWidths;\n }\n\n getCalculatedColumnWidths(): ModelSizeMap {\n return this.calculatedColumnWidths;\n }\n}\n\nexport default IrisGridMetricCalculator;\n"],"mappings":"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"}
|
|
@@ -1,22 +1,10 @@
|
|
|
1
|
-
import { type BoundedAxisRange, type Coordinate, type GridMetrics,
|
|
1
|
+
import { type BoundedAxisRange, type Coordinate, type GridMetrics, GridRenderer, type GridRenderState, type GridThemeType, type VisibleIndex } from '@deephaven/grid';
|
|
2
2
|
import type { dh } from '@deephaven/jsapi-types';
|
|
3
|
-
import { type
|
|
3
|
+
import { type AdvancedFilter, type QuickFilter, type IrisGridStateOverride } from './CommonTypes';
|
|
4
4
|
import { type IrisGridThemeType } from './IrisGridTheme';
|
|
5
|
-
import type IrisGridModel from './IrisGridModel';
|
|
6
5
|
import IrisGridTextCellRenderer from './IrisGridTextCellRenderer';
|
|
7
6
|
import IrisGridDataBarCellRenderer from './IrisGridDataBarCellRenderer';
|
|
8
|
-
export type IrisGridRenderState = GridRenderState &
|
|
9
|
-
model: IrisGridModel;
|
|
10
|
-
theme: IrisGridThemeType;
|
|
11
|
-
hoverSelectColumn: GridRangeIndex;
|
|
12
|
-
isSelectingColumn: boolean;
|
|
13
|
-
loadingScrimProgress: number;
|
|
14
|
-
reverse: boolean;
|
|
15
|
-
isFilterBarShown: boolean;
|
|
16
|
-
advancedFilters: ReadonlyAdvancedFilterMap;
|
|
17
|
-
quickFilters: ReadonlyQuickFilterMap;
|
|
18
|
-
isMenuShown: boolean;
|
|
19
|
-
};
|
|
7
|
+
export type IrisGridRenderState = GridRenderState & IrisGridStateOverride;
|
|
20
8
|
/**
|
|
21
9
|
* Handles rendering some of the Iris specific features, such as sorting icons, sort bar display
|
|
22
10
|
* */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridRenderer.d.ts","sourceRoot":"","sources":["../src/IrisGridRenderer.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,
|
|
1
|
+
{"version":3,"file":"IrisGridRenderer.d.ts","sourceRoot":"","sources":["../src/IrisGridRenderer.ts"],"names":[],"mappings":"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"}
|
package/dist/IrisGridRenderer.js
CHANGED
|
@@ -752,9 +752,9 @@ export class IrisGridRenderer extends GridRenderer {
|
|
|
752
752
|
left,
|
|
753
753
|
top
|
|
754
754
|
} = GridUtils.getCellInfoFromXY(mouseX, mouseY, metrics);
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
755
|
+
if (left == null || rowHeight == null || top == null) {
|
|
756
|
+
return NULL_POSITION;
|
|
757
|
+
}
|
|
758
758
|
var {
|
|
759
759
|
cellHorizontalPadding
|
|
760
760
|
} = theme;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridRenderer.js","names":["GridRenderer","GridUtils","TableUtils","assertNotNull","getOrThrow","IrisGridTextCellRenderer","IrisGridDataBarCellRenderer","getIcon","ICON_NAMES","Object","freeze","SORT_UP","SORT_DOWN","CARET_DOWN","CARET_RIGHT","CELL_OVERFLOW","EXPAND_ICON_SIZE","IrisGridRenderer","constructor","arguments","_defineProperty","isFilterValid","advancedFilter","quickFilter","isAdvancedFilterValid","filter","isQuickFilterValid","getSortIcon","sort","size","direction","sortDirection","ascending","descending","drawCanvas","state","drawScrim","drawGrid","context","drawCellOverflowButton","drawGridLines","drawGroupedColumnLine","drawPendingRowLine","drawCellContent","column","row","metrics","model","modelColumns","modelRows","modelColumn","get","modelRow","undefined","renderType","renderTypeForCell","cellRenderer","getCellRenderer","getCellOverflowButtonPosition","_ref","mouseX","mouseY","theme","textCellRenderer","shouldRenderOverflowButton","left","buttonLeft","top","buttonTop","width","buttonWidth","height","buttonHeight","cellHorizontalPadding","overflowButtonColor","overflowButtonHoverColor","iconSize","save","fillStyle","icon","translate","fill","restore","groupedColumns","maxY","allColumnWidths","allColumnXs","length","groupedColumnDividerColor","lastVisibleGroupColumnIndex","columnX","columnWidth","x","strokeStyle","lineWidth","beginPath","moveTo","lineTo","stroke","allRowYs","maxX","pendingRowCount","firstPendingRow","rowCount","floatingBottomRowCount","y","setLineDash","pendingTextColor","drawMouseColumnHover","hoverSelectColumn","linkerColumnHoverBackgroundColor","fillRect","drawMouseRowHover","isSelectingColumn","loadingScrimProgress","gridY","scrimBlurSize","scrimColor","globalCompositeOperation","concat","rect","clip","drawColumnHeaders","reverse","columnHeaderHeight","drawFilterHeaders","color","headerReverseBarColor","headerSortBarColor","drawHeaderBar","reverseHeaderBarHeight","sortHeaderBarHeight","barHeight","interior","offset","headerBarCasingColor","columnHeaderMaxDepth","drawColumnHeadersAtDepth","range","boundsProp","depth","isMenuShown","bounds","_objectSpread","drawColumnHeaderAtIndex","index","_model$columns$modelC","gridX","headerHorizontalPadding","themeIconSize","Math","round","columnName","columns","name","getSortForColumn","text","textForColumnHeader","textWidth","getCachedHeaderWidth","textRight","defaultX","min","isFilterBarShown","quickFilters","advancedFilters","drawExpandedFilterHeaders","drawCollapsedFilterHeaders","filterBarHeight","visibleColumns","font","filterBarFont","textAlign","filterBarExpandedActiveBackgroundColor","filterBarExpandedBackgroundColor","y1","filterBarSeparatorColor","i","isFilterable","x1","drawExpandedFilterHeader","filterBarExpandedActiveCellBackgroundColor","filterBarErrorColor","filterBarHorizontalPadding","headerColor","filterText","getFilterText","fontWidthsLower","fontWidthsUpper","fontWidthLower","fontWidthUpper","maxLength","getCachedTruncatedString","rectLeft","rectTop","rectWidth","rectHeight","strokeRect","textX","textY","fillText","headerSeparatorColor","filterBarCollapsedHeight","drawCollapsedFilterHeader","filterBarActiveColor","filterBarActiveBackgroundColor","drawRowFooters","floatingTopHeight","floatingBottomHeight","floatingRows","rowFooterWidth","horizontalBarHeight","verticalBarWidth","allRowHeights","floatingGridRowColor","floatingRowBackgroundColors","rowHoverBackgroundColor","mouseRow","getRowAtY","includes","rowHeight","rowY","textForRowFooter","getExpandButtonPosition","_ref2","NULL_POSITION","getCellInfoFromXY","max"],"sources":["../src/IrisGridRenderer.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n type BoundedAxisRange,\n type Coordinate,\n type GridMetrics,\n type GridRangeIndex,\n GridRenderer,\n type GridRenderState,\n type GridThemeType,\n GridUtils,\n type VisibleIndex,\n} from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { assertNotNull, getOrThrow } from '@deephaven/utils';\nimport {\n type ReadonlyAdvancedFilterMap,\n type ReadonlyQuickFilterMap,\n type AdvancedFilter,\n type QuickFilter,\n} from './CommonTypes';\nimport { type IrisGridThemeType } from './IrisGridTheme';\nimport type IrisGridModel from './IrisGridModel';\nimport IrisGridTextCellRenderer from './IrisGridTextCellRenderer';\nimport IrisGridDataBarCellRenderer from './IrisGridDataBarCellRenderer';\nimport { getIcon } from './IrisGridIcons';\n\nconst ICON_NAMES = Object.freeze({\n SORT_UP: 'sortUp',\n SORT_DOWN: 'sortDown',\n CARET_DOWN: 'caretDown',\n CARET_RIGHT: 'caretRight',\n CELL_OVERFLOW: 'cellOverflow',\n});\n\nconst EXPAND_ICON_SIZE = 10;\n\nexport type IrisGridRenderState = GridRenderState & {\n model: IrisGridModel;\n theme: IrisGridThemeType;\n hoverSelectColumn: GridRangeIndex;\n isSelectingColumn: boolean;\n loadingScrimProgress: number;\n reverse: boolean;\n isFilterBarShown: boolean;\n advancedFilters: ReadonlyAdvancedFilterMap;\n quickFilters: ReadonlyQuickFilterMap;\n isMenuShown: boolean;\n};\n/**\n * Handles rendering some of the Iris specific features, such as sorting icons, sort bar display\n * */\nexport class IrisGridRenderer extends GridRenderer {\n static isFilterValid(\n advancedFilter: AdvancedFilter | undefined | null,\n quickFilter: QuickFilter | undefined | null\n ): boolean {\n const isAdvancedFilterValid =\n advancedFilter == null || advancedFilter.filter != null;\n const isQuickFilterValid =\n quickFilter == null || quickFilter.filter != null;\n return isAdvancedFilterValid && isQuickFilterValid;\n }\n\n protected textCellRenderer = new IrisGridTextCellRenderer();\n\n protected dataBarCellRenderer = new IrisGridDataBarCellRenderer();\n\n getSortIcon(sort: dh.Sort | null, size: number): Path2D | null {\n if (!sort) {\n return null;\n }\n if (sort.direction === TableUtils.sortDirection.ascending) {\n return getIcon(ICON_NAMES.SORT_UP, size);\n }\n if (sort.direction === TableUtils.sortDirection.descending) {\n return getIcon(ICON_NAMES.SORT_DOWN, size);\n }\n return null;\n }\n\n drawCanvas(state: IrisGridRenderState): void {\n super.drawCanvas(state);\n\n this.drawScrim(state);\n }\n\n drawGrid(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n super.drawGrid(context, state);\n this.drawCellOverflowButton(state);\n }\n\n drawGridLines(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n super.drawGridLines(context, state);\n\n this.drawGroupedColumnLine(context, state);\n\n this.drawPendingRowLine(context, state);\n }\n\n drawCellContent(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n row: VisibleIndex\n ): void {\n const { metrics, model } = state;\n const { modelColumns, modelRows } = metrics;\n const modelColumn = modelColumns.get(column);\n const modelRow = getOrThrow(modelRows, row);\n if (modelColumn === undefined) {\n return;\n }\n\n const renderType = model.renderTypeForCell(modelColumn, modelRow);\n const cellRenderer = this.getCellRenderer(renderType);\n cellRenderer.drawCellContent(context, state, column, row);\n }\n\n getCellOverflowButtonPosition({\n mouseX,\n mouseY,\n metrics,\n theme,\n }: {\n mouseX: Coordinate | null;\n mouseY: Coordinate | null;\n metrics: GridMetrics | undefined;\n theme: IrisGridThemeType;\n }): {\n left: Coordinate | null;\n top: Coordinate | null;\n width: number | null;\n height: number | null;\n } {\n return this.textCellRenderer.getCellOverflowButtonPosition(\n mouseX,\n mouseY,\n metrics,\n theme\n );\n }\n\n shouldRenderOverflowButton(state: IrisGridRenderState): boolean {\n return this.textCellRenderer.shouldRenderOverflowButton(state);\n }\n\n drawCellOverflowButton(state: IrisGridRenderState): void {\n const { context, mouseX, mouseY, theme } = state;\n if (mouseX == null || mouseY == null) return;\n\n if (!this.shouldRenderOverflowButton(state)) {\n return;\n }\n\n const {\n left: buttonLeft,\n top: buttonTop,\n width: buttonWidth,\n height: buttonHeight,\n } = this.getCellOverflowButtonPosition(state);\n\n const {\n cellHorizontalPadding,\n overflowButtonColor,\n overflowButtonHoverColor,\n iconSize,\n } = theme;\n\n context.save();\n if (\n overflowButtonHoverColor != null &&\n buttonLeft != null &&\n buttonWidth != null &&\n buttonTop != null &&\n buttonHeight != null &&\n mouseX >= buttonLeft &&\n mouseX <= buttonLeft + buttonWidth &&\n mouseY >= buttonTop &&\n mouseY <= buttonTop + buttonHeight\n ) {\n context.fillStyle = overflowButtonHoverColor;\n } else if (overflowButtonColor != null) {\n context.fillStyle = overflowButtonColor;\n }\n const icon = getIcon(ICON_NAMES.CELL_OVERFLOW, iconSize);\n if (buttonLeft != null && buttonTop != null && buttonHeight != null) {\n context.translate(\n buttonLeft + cellHorizontalPadding,\n buttonTop + (buttonHeight - iconSize) / 2\n );\n }\n context.fill(icon);\n\n context.restore();\n }\n\n drawGroupedColumnLine(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, theme } = state;\n const { groupedColumns } = model;\n const { maxY, allColumnWidths, allColumnXs } = metrics;\n if (\n groupedColumns.length === 0 ||\n theme.groupedColumnDividerColor == null\n ) {\n return;\n }\n\n // This assumes that the engine puts the grouped columns at the start of the\n // model, so model and visible index match for grouped columns. If we ever\n // add freeze support for tree tables or allow moving the grouped columns,\n // this assumption may no longer hold true. If such a change occurs, we'll\n // need to revisit this since a single vertical divider may no longer make\n // sense.\n const lastVisibleGroupColumnIndex = groupedColumns.length - 1;\n\n const columnX = allColumnXs.get(lastVisibleGroupColumnIndex);\n const columnWidth = allColumnWidths.get(lastVisibleGroupColumnIndex);\n if (columnX == null || columnWidth == null) {\n return;\n }\n\n const x = columnX + columnWidth + 0.5;\n\n context.strokeStyle = theme.groupedColumnDividerColor;\n context.lineWidth = 1;\n context.beginPath();\n context.moveTo(x, 0);\n context.lineTo(x, maxY);\n context.stroke();\n }\n\n drawPendingRowLine(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, theme } = state;\n const { allRowYs, maxX } = metrics;\n const { pendingRowCount } = model;\n if (pendingRowCount <= 0) {\n return;\n }\n\n const firstPendingRow =\n model.rowCount - model.pendingRowCount - model.floatingBottomRowCount;\n let y = allRowYs.get(firstPendingRow);\n if (y == null) {\n return;\n }\n\n y -= 0.5;\n context.save();\n context.setLineDash([4, 2]);\n context.strokeStyle = theme.pendingTextColor;\n\n context.lineWidth = 1;\n context.beginPath();\n context.moveTo(0, y);\n context.lineTo(maxX, y);\n context.stroke();\n context.restore();\n }\n\n drawMouseColumnHover(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { theme, metrics, hoverSelectColumn } = state;\n if (\n hoverSelectColumn == null ||\n theme.linkerColumnHoverBackgroundColor == null\n ) {\n return;\n }\n\n const { allColumnWidths, allColumnXs, maxY } = metrics;\n\n const x = getOrThrow(allColumnXs, hoverSelectColumn);\n const columnWidth = getOrThrow(allColumnWidths, hoverSelectColumn);\n\n context.fillStyle = theme.linkerColumnHoverBackgroundColor;\n context.fillRect(x, 0, columnWidth, maxY);\n }\n\n drawMouseRowHover(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { isSelectingColumn } = state;\n if (!isSelectingColumn) {\n super.drawMouseRowHover(context, state);\n }\n }\n\n drawScrim(state: IrisGridRenderState): void {\n const { context, loadingScrimProgress, metrics, theme } = state;\n if (loadingScrimProgress == null) {\n return;\n }\n\n const { width, height, gridY } = metrics;\n const { scrimBlurSize, scrimColor } = theme;\n\n context.save();\n\n // Use global composite so we can change the underlying layer to grayscale\n context.globalCompositeOperation = 'color';\n context.filter = `blur(${scrimBlurSize}px)`;\n if (scrimColor != null) {\n context.fillStyle = scrimColor;\n }\n\n // Clip the path so the top edge is hard edge, bottom edge is soft/blurry\n context.beginPath();\n context.rect(0, gridY, width, height - gridY);\n context.clip();\n\n // Extend the edges beyond the clip area so they're hard edges\n context.fillRect(\n -scrimBlurSize,\n -scrimBlurSize + gridY,\n scrimBlurSize * 2 + width,\n (scrimBlurSize * 2 + (height - gridY)) * loadingScrimProgress\n );\n\n // add an overlay of the scrim color to darken things a bit\n context.globalCompositeOperation = 'source-over';\n context.filter = `blur(${scrimBlurSize}px) opacity(15%)`;\n context.fillRect(\n -scrimBlurSize,\n -scrimBlurSize + gridY,\n scrimBlurSize * 2 + width,\n (scrimBlurSize * 2 + (height - gridY)) * loadingScrimProgress\n );\n\n context.restore();\n }\n\n drawColumnHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n super.drawColumnHeaders(context, state);\n\n const { theme, metrics, model, reverse } = state;\n const { columnHeaderHeight } = metrics;\n\n this.drawFilterHeaders(context, state);\n\n if (columnHeaderHeight <= 0) {\n return;\n }\n\n const { sort } = model;\n // if there is only one sort bar, it is interior to the header to save space\n if (sort.length === 1) {\n let color;\n if (reverse) {\n color = theme.headerReverseBarColor;\n } else {\n color = theme.headerSortBarColor;\n }\n this.drawHeaderBar(\n context,\n state,\n color,\n reverse ? theme.reverseHeaderBarHeight : theme.sortHeaderBarHeight\n );\n } else if (sort.length > 1) {\n // if there's multiple bars, the sort is interior to header\n // and the reverse claims space in the table\n if (reverse) {\n this.drawHeaderBar(\n context,\n state,\n theme.headerReverseBarColor,\n theme.reverseHeaderBarHeight,\n false\n );\n }\n this.drawHeaderBar(\n context,\n state,\n theme.headerSortBarColor,\n theme.sortHeaderBarHeight\n );\n }\n }\n\n drawHeaderBar(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n color: string | CanvasGradient | CanvasPattern,\n barHeight: number,\n interior = true\n ): void {\n const { theme, metrics, model } = state;\n const { columnHeaderHeight, width } = metrics;\n // Draw casing with 1 pixel above and below the bar,\n // 1px falls on the existing split between grid/headers\n // so don't need to be accounnted for in math elsewhere\n let offset = 0;\n if (!interior) {\n offset = barHeight;\n }\n context.fillStyle = theme.headerBarCasingColor;\n context.fillRect(\n 0,\n model.columnHeaderMaxDepth * columnHeaderHeight - barHeight - 2 + offset,\n width,\n barHeight + 2\n );\n\n context.fillStyle = color;\n context.fillRect(\n 0,\n model.columnHeaderMaxDepth * columnHeaderHeight - barHeight - 1 + offset,\n width,\n barHeight\n );\n }\n\n drawColumnHeadersAtDepth(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n range: BoundedAxisRange,\n boundsProp: { minX: number; maxX: number },\n depth: number\n ): void {\n const { metrics, model, isMenuShown, theme } = state;\n const { columnHeaderMaxDepth } = model;\n const { width } = metrics;\n const { columnHeaderHeight } = theme;\n const bounds = {\n ...boundsProp,\n maxX:\n depth === columnHeaderMaxDepth - 1 && boundsProp.maxX === width\n ? width - (isMenuShown ? 0 : columnHeaderHeight) // Account for the menu button\n : boundsProp.maxX,\n };\n super.drawColumnHeadersAtDepth(context, state, range, bounds, depth);\n }\n\n drawColumnHeaderAtIndex(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n index: VisibleIndex,\n bounds: { minX: number; maxX: number }\n ): void {\n super.drawColumnHeaderAtIndex(context, state, index, bounds);\n const { metrics, model, theme } = state;\n const {\n modelColumns,\n allColumnWidths,\n allColumnXs,\n gridX,\n columnHeaderHeight,\n } = metrics;\n\n const { headerHorizontalPadding, iconSize: themeIconSize } = theme;\n const iconSize = Math.round(themeIconSize * 0.75); // The vsTriangle icons are a bit bigger than we want\n const columnWidth = getOrThrow(allColumnWidths, index, 0);\n const columnX = getOrThrow(allColumnXs, index) + gridX;\n const modelColumn = modelColumns.get(index);\n\n if (modelColumn == null) {\n return;\n }\n\n const columnName = model.columns[modelColumn]?.name;\n\n if (columnName == null) {\n return;\n }\n\n const sort = TableUtils.getSortForColumn(model.sort, columnName);\n\n if (!sort) {\n return;\n }\n\n const icon = this.getSortIcon(sort, iconSize);\n if (!icon) {\n return;\n }\n\n const text = model.textForColumnHeader(modelColumn);\n if (text === undefined) {\n return;\n }\n\n const textWidth = this.getCachedHeaderWidth(context, text);\n const textRight = gridX + columnX + textWidth + headerHorizontalPadding;\n let { maxX } = bounds;\n maxX -= headerHorizontalPadding; // Right visible edge of the headers\n // Right edge of the column. The icon has its own horizontal padding\n const defaultX = gridX + columnX + columnWidth - iconSize;\n\n // If the text is partially off the screen, put the icon to the right of the text\n // else put it at the right edge of the column/grid (whichever is smaller)\n const x = textRight > maxX ? textRight + 1 : Math.min(maxX, defaultX);\n const y = (columnHeaderHeight - iconSize) * 0.5;\n\n context.save();\n\n context.beginPath();\n context.rect(columnX, 0, columnWidth, columnHeaderHeight);\n context.clip();\n\n context.fillStyle = theme.headerSortBarColor;\n context.translate(x, y);\n context.fill(icon);\n\n context.restore();\n }\n\n drawFilterHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { isFilterBarShown, quickFilters, advancedFilters } = state;\n\n if (isFilterBarShown) {\n this.drawExpandedFilterHeaders(context, state);\n } else if (\n (quickFilters != null && quickFilters.size > 0) ||\n (advancedFilters != null && advancedFilters.size > 0)\n ) {\n this.drawCollapsedFilterHeaders(context, state);\n }\n }\n\n drawExpandedFilterHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, theme, quickFilters, advancedFilters } = state;\n const { filterBarHeight } = theme;\n\n if (filterBarHeight <= 0) {\n return;\n }\n\n const {\n gridX,\n gridY,\n maxX,\n modelColumns,\n visibleColumns,\n allColumnWidths,\n allColumnXs,\n } = metrics;\n\n const columnHeaderHeight = gridY - filterBarHeight;\n\n context.save();\n\n context.font = theme.filterBarFont;\n context.textAlign = 'left';\n\n if (\n (quickFilters != null && quickFilters.size > 0) ||\n (advancedFilters != null && advancedFilters.size > 0)\n ) {\n // fill style if a fiter is set on any column\n context.fillStyle = theme.filterBarExpandedActiveBackgroundColor;\n } else {\n // fill style with no filters set\n context.fillStyle = theme.filterBarExpandedBackgroundColor;\n }\n\n // Draw the background\n context.fillRect(gridX, columnHeaderHeight, maxX, filterBarHeight - 1);\n\n // Draw the bottom border\n context.fillStyle = theme.headerBarCasingColor;\n\n context.fillRect(gridX, columnHeaderHeight + filterBarHeight - 1, maxX, 1);\n\n // Draw the filter input boxes\n const y1 = columnHeaderHeight;\n context.strokeStyle = theme.filterBarSeparatorColor;\n context.beginPath();\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const modelColumn = getOrThrow(modelColumns, column);\n const columnX = getOrThrow(allColumnXs, column);\n const columnWidth = getOrThrow(allColumnWidths, column);\n if (model.isFilterable(modelColumn) && columnWidth > 0) {\n const x1 = gridX + (columnX ?? 0);\n context.rect(x1 + 0.5, y1 + 0.5, columnWidth, filterBarHeight - 2); // 1 for the border, 1 for the casing\n }\n }\n context.stroke();\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const columnWidth = getOrThrow(allColumnWidths, column);\n const columnX = getOrThrow(allColumnXs, column);\n const x = columnX + gridX;\n this.drawExpandedFilterHeader(context, state, column, x, columnWidth);\n }\n\n context.restore();\n }\n\n drawExpandedFilterHeader(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n columnX: Coordinate,\n columnWidth: number\n ): void {\n if (columnWidth <= 0) {\n return;\n }\n\n const { metrics, theme, quickFilters, advancedFilters } = state;\n const { modelColumns, gridY } = metrics;\n const {\n filterBarHeight,\n filterBarExpandedActiveCellBackgroundColor,\n filterBarErrorColor,\n filterBarHorizontalPadding,\n headerColor,\n } = theme;\n const columnHeaderHeight = gridY - filterBarHeight;\n const modelColumn = modelColumns.get(column);\n if (modelColumn === undefined) return;\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter == null && advancedFilter == null) {\n return;\n }\n\n let text = null;\n if (quickFilter != null) {\n const { text: filterText } = quickFilter;\n text = filterText;\n if (!text) {\n text = TableUtils.getFilterText(quickFilter.filter);\n }\n\n if (text != null) {\n const { fontWidthsLower, fontWidthsUpper } = metrics;\n const fontWidthLower = fontWidthsLower.get(context.font);\n const fontWidthUpper = fontWidthsUpper.get(context.font);\n\n const maxLength = columnWidth - filterBarHorizontalPadding * 2;\n text = this.textCellRenderer.getCachedTruncatedString(\n context,\n text,\n maxLength,\n fontWidthLower,\n fontWidthUpper\n );\n }\n }\n\n context.save();\n\n const isFilterValid = IrisGridRenderer.isFilterValid(\n advancedFilter,\n quickFilter\n );\n if (isFilterValid && filterBarExpandedActiveCellBackgroundColor != null) {\n // draw active filter background inside cell\n context.fillStyle = filterBarExpandedActiveCellBackgroundColor;\n context.fillRect(\n columnX + 1, // +1 left border\n columnHeaderHeight + 1, // +1 top border\n columnWidth - 1, // -1 right border\n filterBarHeight - 3 // -3 top, bottom border and bottom casing\n );\n } else if (filterBarErrorColor != null) {\n // draw error box inside cell\n context.fillStyle = filterBarErrorColor;\n context.lineWidth = 2;\n context.strokeStyle = filterBarErrorColor;\n // Because this is drawn with a strokeRect, we have to add/subtract half the,\n // linewidth from each side to make interior, in addition to accounting for any borders/casings\n const rectLeft = columnX + 2; // 1 for strokeRect, 1 for border\n const rectTop = columnHeaderHeight + 2; // 1 for strokeRect, 1 for border\n const rectWidth = columnWidth - 3; // for 2 border and 1 for strokeRect\n const rectHeight = filterBarHeight - 5; // -2 for strokeRect, -3 for top, bottom border and bottom casing\n context.strokeRect(rectLeft, rectTop, rectWidth, rectHeight);\n }\n\n if (text != null && text !== '') {\n const textX = columnX + filterBarHorizontalPadding;\n const textY = columnHeaderHeight + filterBarHeight * 0.5 + 1; // + 1 for border\n context.fillStyle = headerColor;\n context.fillText(text, textX, textY);\n }\n\n context.restore();\n }\n\n drawCollapsedFilterHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, theme } = state;\n const { headerSeparatorColor, filterBarCollapsedHeight } = theme;\n\n if (filterBarCollapsedHeight <= 0) {\n return;\n }\n\n const { gridX, gridY, maxX, visibleColumns, allColumnWidths, allColumnXs } =\n metrics;\n const columnHeaderHeight = gridY - filterBarCollapsedHeight;\n\n context.save();\n\n // Draw the background of the collapsed filter bar\n context.fillStyle = headerSeparatorColor;\n context.fillRect(gridX, columnHeaderHeight, maxX, filterBarCollapsedHeight);\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const columnWidth = allColumnWidths.get(column);\n const columnX = allColumnXs.get(column);\n if (columnX != null && columnWidth != null) {\n const x = columnX + gridX;\n // draw the collapsed cells\n this.drawCollapsedFilterHeader(context, state, column, x, columnWidth);\n }\n }\n\n context.restore();\n }\n\n drawCollapsedFilterHeader(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n columnX: Coordinate,\n columnWidth: number\n ): void {\n if (columnWidth <= 0) {\n return;\n }\n\n const { metrics, theme, quickFilters, advancedFilters } = state;\n const { modelColumns, gridY } = metrics;\n const modelColumn = modelColumns.get(column);\n\n if (modelColumn === undefined) return;\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n\n const {\n filterBarCollapsedHeight,\n filterBarActiveColor,\n filterBarActiveBackgroundColor,\n filterBarErrorColor,\n } = theme;\n\n context.save();\n\n const isFilterValid = IrisGridRenderer.isFilterValid(\n advancedFilter,\n quickFilter\n );\n\n if (\n filterBarActiveBackgroundColor != null &&\n quickFilter == null &&\n advancedFilter == null\n ) {\n context.fillStyle = filterBarActiveBackgroundColor;\n } else if (filterBarActiveColor != null && isFilterValid) {\n context.fillStyle = filterBarActiveColor;\n } else if (filterBarErrorColor != null) {\n context.fillStyle = filterBarErrorColor;\n }\n\n const x = columnX + 1; // for gap between columns\n const y = gridY - filterBarCollapsedHeight;\n const rectWidth = columnWidth - 1; // for gap between columns\n const rectHeight = filterBarCollapsedHeight - 1; // for casing bottom\n context.fillRect(x, y, rectWidth, rectHeight);\n\n context.restore();\n }\n\n drawRowFooters(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, mouseX, mouseY, theme } = state;\n const {\n gridY,\n gridX,\n maxX,\n modelRows,\n floatingTopHeight,\n floatingBottomHeight,\n floatingRows,\n rowFooterWidth,\n height,\n horizontalBarHeight,\n verticalBarWidth,\n allRowHeights,\n allRowYs,\n width,\n } = metrics;\n // Only draw the footers on the floating rows\n if (rowFooterWidth <= 0 || floatingRows.length === 0) {\n return;\n }\n\n const {\n cellHorizontalPadding,\n floatingGridRowColor,\n floatingRowBackgroundColors,\n headerColor,\n rowHoverBackgroundColor,\n } = theme;\n\n context.translate(gridX, gridY);\n\n context.beginPath();\n const x = Math.min(maxX, width - rowFooterWidth - verticalBarWidth - gridX);\n context.fillStyle = floatingRowBackgroundColors;\n if (floatingTopHeight > 0) {\n context.rect(x, 0, rowFooterWidth, floatingTopHeight);\n }\n if (floatingBottomHeight > 0) {\n context.rect(\n x,\n height - gridY - horizontalBarHeight - floatingBottomHeight,\n rowFooterWidth,\n floatingBottomHeight\n );\n }\n context.fill();\n\n const mouseRow =\n mouseX != null &&\n mouseY != null &&\n mouseX >= gridX &&\n mouseX <= maxX + rowFooterWidth\n ? GridUtils.getRowAtY(mouseY, metrics)\n : null;\n if (\n rowHoverBackgroundColor != null &&\n mouseRow !== null &&\n floatingRows.includes(mouseRow)\n ) {\n context.fillStyle = rowHoverBackgroundColor;\n const y = allRowYs.get(mouseRow);\n const rowHeight = allRowHeights.get(mouseRow);\n assertNotNull(y);\n assertNotNull(rowHeight);\n context.fillRect(x, y, rowFooterWidth, rowHeight);\n }\n\n context.beginPath();\n if (floatingGridRowColor != null) {\n context.strokeStyle = floatingGridRowColor;\n }\n if (floatingTopHeight > 0) {\n context.moveTo(x + 0.5, 0.5);\n context.lineTo(x + 0.5, floatingTopHeight - 0.5);\n }\n if (floatingBottomHeight > 0) {\n const y = height - gridY - horizontalBarHeight - floatingBottomHeight;\n context.moveTo(x - 0.5, y + 0.5);\n context.lineTo(x - 0.5, y + floatingBottomHeight - 0.5);\n }\n context.stroke();\n\n context.fillStyle = headerColor;\n context.textAlign = 'left';\n\n const textX = x + cellHorizontalPadding;\n for (let i = 0; i < floatingRows.length; i += 1) {\n const row = floatingRows[i];\n const rowHeight = allRowHeights.get(row);\n const rowY = allRowYs.get(row);\n const modelRow = modelRows.get(row);\n if (rowY != null && rowHeight != null && modelRow != null) {\n const textY = rowY + rowHeight * 0.5;\n context.fillText(model.textForRowFooter(modelRow), textX, textY);\n }\n }\n\n context.translate(-gridX, -gridY);\n }\n\n getExpandButtonPosition(\n {\n mouseX,\n mouseY,\n metrics,\n theme,\n }: {\n mouseX: Coordinate | null;\n mouseY: Coordinate | null;\n metrics: GridMetrics | undefined;\n theme: GridThemeType;\n },\n depth: number | null\n ): {\n left: Coordinate | null;\n top: Coordinate | null;\n width: number | null;\n height: number | null;\n } {\n const NULL_POSITION = { left: null, top: null, width: null, height: null };\n if (mouseX == null || mouseY == null || depth == null || !metrics) {\n return NULL_POSITION;\n }\n const { rowHeight, left, top } = GridUtils.getCellInfoFromXY(\n mouseX,\n mouseY,\n metrics\n );\n\n assertNotNull(left);\n assertNotNull(rowHeight);\n assertNotNull(top);\n const { cellHorizontalPadding } = theme;\n\n const width = EXPAND_ICON_SIZE + 2 * cellHorizontalPadding;\n\n const buttonLeft = Math.max(left + EXPAND_ICON_SIZE * depth, metrics.gridX);\n const buttonTop = metrics.gridY + top;\n\n return {\n left: buttonLeft,\n top: buttonTop,\n width,\n height: rowHeight,\n };\n }\n}\n\nexport default IrisGridRenderer;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IrisGridRenderer.js","names":["GridRenderer","GridUtils","TableUtils","assertNotNull","getOrThrow","IrisGridTextCellRenderer","IrisGridDataBarCellRenderer","getIcon","ICON_NAMES","Object","freeze","SORT_UP","SORT_DOWN","CARET_DOWN","CARET_RIGHT","CELL_OVERFLOW","EXPAND_ICON_SIZE","IrisGridRenderer","constructor","arguments","_defineProperty","isFilterValid","advancedFilter","quickFilter","isAdvancedFilterValid","filter","isQuickFilterValid","getSortIcon","sort","size","direction","sortDirection","ascending","descending","drawCanvas","state","drawScrim","drawGrid","context","drawCellOverflowButton","drawGridLines","drawGroupedColumnLine","drawPendingRowLine","drawCellContent","column","row","metrics","model","modelColumns","modelRows","modelColumn","get","modelRow","undefined","renderType","renderTypeForCell","cellRenderer","getCellRenderer","getCellOverflowButtonPosition","_ref","mouseX","mouseY","theme","textCellRenderer","shouldRenderOverflowButton","left","buttonLeft","top","buttonTop","width","buttonWidth","height","buttonHeight","cellHorizontalPadding","overflowButtonColor","overflowButtonHoverColor","iconSize","save","fillStyle","icon","translate","fill","restore","groupedColumns","maxY","allColumnWidths","allColumnXs","length","groupedColumnDividerColor","lastVisibleGroupColumnIndex","columnX","columnWidth","x","strokeStyle","lineWidth","beginPath","moveTo","lineTo","stroke","allRowYs","maxX","pendingRowCount","firstPendingRow","rowCount","floatingBottomRowCount","y","setLineDash","pendingTextColor","drawMouseColumnHover","hoverSelectColumn","linkerColumnHoverBackgroundColor","fillRect","drawMouseRowHover","isSelectingColumn","loadingScrimProgress","gridY","scrimBlurSize","scrimColor","globalCompositeOperation","concat","rect","clip","drawColumnHeaders","reverse","columnHeaderHeight","drawFilterHeaders","color","headerReverseBarColor","headerSortBarColor","drawHeaderBar","reverseHeaderBarHeight","sortHeaderBarHeight","barHeight","interior","offset","headerBarCasingColor","columnHeaderMaxDepth","drawColumnHeadersAtDepth","range","boundsProp","depth","isMenuShown","bounds","_objectSpread","drawColumnHeaderAtIndex","index","_model$columns$modelC","gridX","headerHorizontalPadding","themeIconSize","Math","round","columnName","columns","name","getSortForColumn","text","textForColumnHeader","textWidth","getCachedHeaderWidth","textRight","defaultX","min","isFilterBarShown","quickFilters","advancedFilters","drawExpandedFilterHeaders","drawCollapsedFilterHeaders","filterBarHeight","visibleColumns","font","filterBarFont","textAlign","filterBarExpandedActiveBackgroundColor","filterBarExpandedBackgroundColor","y1","filterBarSeparatorColor","i","isFilterable","x1","drawExpandedFilterHeader","filterBarExpandedActiveCellBackgroundColor","filterBarErrorColor","filterBarHorizontalPadding","headerColor","filterText","getFilterText","fontWidthsLower","fontWidthsUpper","fontWidthLower","fontWidthUpper","maxLength","getCachedTruncatedString","rectLeft","rectTop","rectWidth","rectHeight","strokeRect","textX","textY","fillText","headerSeparatorColor","filterBarCollapsedHeight","drawCollapsedFilterHeader","filterBarActiveColor","filterBarActiveBackgroundColor","drawRowFooters","floatingTopHeight","floatingBottomHeight","floatingRows","rowFooterWidth","horizontalBarHeight","verticalBarWidth","allRowHeights","floatingGridRowColor","floatingRowBackgroundColors","rowHoverBackgroundColor","mouseRow","getRowAtY","includes","rowHeight","rowY","textForRowFooter","getExpandButtonPosition","_ref2","NULL_POSITION","getCellInfoFromXY","max"],"sources":["../src/IrisGridRenderer.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n type BoundedAxisRange,\n type Coordinate,\n type GridMetrics,\n GridRenderer,\n type GridRenderState,\n type GridThemeType,\n GridUtils,\n type VisibleIndex,\n} from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { assertNotNull, getOrThrow } from '@deephaven/utils';\nimport {\n type AdvancedFilter,\n type QuickFilter,\n type IrisGridStateOverride,\n} from './CommonTypes';\nimport { type IrisGridThemeType } from './IrisGridTheme';\nimport IrisGridTextCellRenderer from './IrisGridTextCellRenderer';\nimport IrisGridDataBarCellRenderer from './IrisGridDataBarCellRenderer';\nimport { getIcon } from './IrisGridIcons';\n\nconst ICON_NAMES = Object.freeze({\n SORT_UP: 'sortUp',\n SORT_DOWN: 'sortDown',\n CARET_DOWN: 'caretDown',\n CARET_RIGHT: 'caretRight',\n CELL_OVERFLOW: 'cellOverflow',\n});\n\nconst EXPAND_ICON_SIZE = 10;\n\nexport type IrisGridRenderState = GridRenderState & IrisGridStateOverride;\n/**\n * Handles rendering some of the Iris specific features, such as sorting icons, sort bar display\n * */\nexport class IrisGridRenderer extends GridRenderer {\n static isFilterValid(\n advancedFilter: AdvancedFilter | undefined | null,\n quickFilter: QuickFilter | undefined | null\n ): boolean {\n const isAdvancedFilterValid =\n advancedFilter == null || advancedFilter.filter != null;\n const isQuickFilterValid =\n quickFilter == null || quickFilter.filter != null;\n return isAdvancedFilterValid && isQuickFilterValid;\n }\n\n protected textCellRenderer = new IrisGridTextCellRenderer();\n\n protected dataBarCellRenderer = new IrisGridDataBarCellRenderer();\n\n getSortIcon(sort: dh.Sort | null, size: number): Path2D | null {\n if (!sort) {\n return null;\n }\n if (sort.direction === TableUtils.sortDirection.ascending) {\n return getIcon(ICON_NAMES.SORT_UP, size);\n }\n if (sort.direction === TableUtils.sortDirection.descending) {\n return getIcon(ICON_NAMES.SORT_DOWN, size);\n }\n return null;\n }\n\n drawCanvas(state: IrisGridRenderState): void {\n super.drawCanvas(state);\n\n this.drawScrim(state);\n }\n\n drawGrid(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n super.drawGrid(context, state);\n this.drawCellOverflowButton(state);\n }\n\n drawGridLines(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n super.drawGridLines(context, state);\n\n this.drawGroupedColumnLine(context, state);\n\n this.drawPendingRowLine(context, state);\n }\n\n drawCellContent(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n row: VisibleIndex\n ): void {\n const { metrics, model } = state;\n const { modelColumns, modelRows } = metrics;\n const modelColumn = modelColumns.get(column);\n const modelRow = getOrThrow(modelRows, row);\n if (modelColumn === undefined) {\n return;\n }\n\n const renderType = model.renderTypeForCell(modelColumn, modelRow);\n const cellRenderer = this.getCellRenderer(renderType);\n cellRenderer.drawCellContent(context, state, column, row);\n }\n\n getCellOverflowButtonPosition({\n mouseX,\n mouseY,\n metrics,\n theme,\n }: {\n mouseX: Coordinate | null;\n mouseY: Coordinate | null;\n metrics: GridMetrics | undefined;\n theme: IrisGridThemeType;\n }): {\n left: Coordinate | null;\n top: Coordinate | null;\n width: number | null;\n height: number | null;\n } {\n return this.textCellRenderer.getCellOverflowButtonPosition(\n mouseX,\n mouseY,\n metrics,\n theme\n );\n }\n\n shouldRenderOverflowButton(state: IrisGridRenderState): boolean {\n return this.textCellRenderer.shouldRenderOverflowButton(state);\n }\n\n drawCellOverflowButton(state: IrisGridRenderState): void {\n const { context, mouseX, mouseY, theme } = state;\n if (mouseX == null || mouseY == null) return;\n\n if (!this.shouldRenderOverflowButton(state)) {\n return;\n }\n\n const {\n left: buttonLeft,\n top: buttonTop,\n width: buttonWidth,\n height: buttonHeight,\n } = this.getCellOverflowButtonPosition(state);\n\n const {\n cellHorizontalPadding,\n overflowButtonColor,\n overflowButtonHoverColor,\n iconSize,\n } = theme;\n\n context.save();\n if (\n overflowButtonHoverColor != null &&\n buttonLeft != null &&\n buttonWidth != null &&\n buttonTop != null &&\n buttonHeight != null &&\n mouseX >= buttonLeft &&\n mouseX <= buttonLeft + buttonWidth &&\n mouseY >= buttonTop &&\n mouseY <= buttonTop + buttonHeight\n ) {\n context.fillStyle = overflowButtonHoverColor;\n } else if (overflowButtonColor != null) {\n context.fillStyle = overflowButtonColor;\n }\n const icon = getIcon(ICON_NAMES.CELL_OVERFLOW, iconSize);\n if (buttonLeft != null && buttonTop != null && buttonHeight != null) {\n context.translate(\n buttonLeft + cellHorizontalPadding,\n buttonTop + (buttonHeight - iconSize) / 2\n );\n }\n context.fill(icon);\n\n context.restore();\n }\n\n drawGroupedColumnLine(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, theme } = state;\n const { groupedColumns } = model;\n const { maxY, allColumnWidths, allColumnXs } = metrics;\n if (\n groupedColumns.length === 0 ||\n theme.groupedColumnDividerColor == null\n ) {\n return;\n }\n\n // This assumes that the engine puts the grouped columns at the start of the\n // model, so model and visible index match for grouped columns. If we ever\n // add freeze support for tree tables or allow moving the grouped columns,\n // this assumption may no longer hold true. If such a change occurs, we'll\n // need to revisit this since a single vertical divider may no longer make\n // sense.\n const lastVisibleGroupColumnIndex = groupedColumns.length - 1;\n\n const columnX = allColumnXs.get(lastVisibleGroupColumnIndex);\n const columnWidth = allColumnWidths.get(lastVisibleGroupColumnIndex);\n if (columnX == null || columnWidth == null) {\n return;\n }\n\n const x = columnX + columnWidth + 0.5;\n\n context.strokeStyle = theme.groupedColumnDividerColor;\n context.lineWidth = 1;\n context.beginPath();\n context.moveTo(x, 0);\n context.lineTo(x, maxY);\n context.stroke();\n }\n\n drawPendingRowLine(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, theme } = state;\n const { allRowYs, maxX } = metrics;\n const { pendingRowCount } = model;\n if (pendingRowCount <= 0) {\n return;\n }\n\n const firstPendingRow =\n model.rowCount - model.pendingRowCount - model.floatingBottomRowCount;\n let y = allRowYs.get(firstPendingRow);\n if (y == null) {\n return;\n }\n\n y -= 0.5;\n context.save();\n context.setLineDash([4, 2]);\n context.strokeStyle = theme.pendingTextColor;\n\n context.lineWidth = 1;\n context.beginPath();\n context.moveTo(0, y);\n context.lineTo(maxX, y);\n context.stroke();\n context.restore();\n }\n\n drawMouseColumnHover(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { theme, metrics, hoverSelectColumn } = state;\n if (\n hoverSelectColumn == null ||\n theme.linkerColumnHoverBackgroundColor == null\n ) {\n return;\n }\n\n const { allColumnWidths, allColumnXs, maxY } = metrics;\n\n const x = getOrThrow(allColumnXs, hoverSelectColumn);\n const columnWidth = getOrThrow(allColumnWidths, hoverSelectColumn);\n\n context.fillStyle = theme.linkerColumnHoverBackgroundColor;\n context.fillRect(x, 0, columnWidth, maxY);\n }\n\n drawMouseRowHover(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { isSelectingColumn } = state;\n if (!isSelectingColumn) {\n super.drawMouseRowHover(context, state);\n }\n }\n\n drawScrim(state: IrisGridRenderState): void {\n const { context, loadingScrimProgress, metrics, theme } = state;\n if (loadingScrimProgress == null) {\n return;\n }\n\n const { width, height, gridY } = metrics;\n const { scrimBlurSize, scrimColor } = theme;\n\n context.save();\n\n // Use global composite so we can change the underlying layer to grayscale\n context.globalCompositeOperation = 'color';\n context.filter = `blur(${scrimBlurSize}px)`;\n if (scrimColor != null) {\n context.fillStyle = scrimColor;\n }\n\n // Clip the path so the top edge is hard edge, bottom edge is soft/blurry\n context.beginPath();\n context.rect(0, gridY, width, height - gridY);\n context.clip();\n\n // Extend the edges beyond the clip area so they're hard edges\n context.fillRect(\n -scrimBlurSize,\n -scrimBlurSize + gridY,\n scrimBlurSize * 2 + width,\n (scrimBlurSize * 2 + (height - gridY)) * loadingScrimProgress\n );\n\n // add an overlay of the scrim color to darken things a bit\n context.globalCompositeOperation = 'source-over';\n context.filter = `blur(${scrimBlurSize}px) opacity(15%)`;\n context.fillRect(\n -scrimBlurSize,\n -scrimBlurSize + gridY,\n scrimBlurSize * 2 + width,\n (scrimBlurSize * 2 + (height - gridY)) * loadingScrimProgress\n );\n\n context.restore();\n }\n\n drawColumnHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n super.drawColumnHeaders(context, state);\n\n const { theme, metrics, model, reverse } = state;\n const { columnHeaderHeight } = metrics;\n\n this.drawFilterHeaders(context, state);\n\n if (columnHeaderHeight <= 0) {\n return;\n }\n\n const { sort } = model;\n // if there is only one sort bar, it is interior to the header to save space\n if (sort.length === 1) {\n let color;\n if (reverse) {\n color = theme.headerReverseBarColor;\n } else {\n color = theme.headerSortBarColor;\n }\n this.drawHeaderBar(\n context,\n state,\n color,\n reverse ? theme.reverseHeaderBarHeight : theme.sortHeaderBarHeight\n );\n } else if (sort.length > 1) {\n // if there's multiple bars, the sort is interior to header\n // and the reverse claims space in the table\n if (reverse) {\n this.drawHeaderBar(\n context,\n state,\n theme.headerReverseBarColor,\n theme.reverseHeaderBarHeight,\n false\n );\n }\n this.drawHeaderBar(\n context,\n state,\n theme.headerSortBarColor,\n theme.sortHeaderBarHeight\n );\n }\n }\n\n drawHeaderBar(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n color: string | CanvasGradient | CanvasPattern,\n barHeight: number,\n interior = true\n ): void {\n const { theme, metrics, model } = state;\n const { columnHeaderHeight, width } = metrics;\n // Draw casing with 1 pixel above and below the bar,\n // 1px falls on the existing split between grid/headers\n // so don't need to be accounnted for in math elsewhere\n let offset = 0;\n if (!interior) {\n offset = barHeight;\n }\n context.fillStyle = theme.headerBarCasingColor;\n context.fillRect(\n 0,\n model.columnHeaderMaxDepth * columnHeaderHeight - barHeight - 2 + offset,\n width,\n barHeight + 2\n );\n\n context.fillStyle = color;\n context.fillRect(\n 0,\n model.columnHeaderMaxDepth * columnHeaderHeight - barHeight - 1 + offset,\n width,\n barHeight\n );\n }\n\n drawColumnHeadersAtDepth(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n range: BoundedAxisRange,\n boundsProp: { minX: number; maxX: number },\n depth: number\n ): void {\n const { metrics, model, isMenuShown, theme } = state;\n const { columnHeaderMaxDepth } = model;\n const { width } = metrics;\n const { columnHeaderHeight } = theme;\n const bounds = {\n ...boundsProp,\n maxX:\n depth === columnHeaderMaxDepth - 1 && boundsProp.maxX === width\n ? width - (isMenuShown ? 0 : columnHeaderHeight) // Account for the menu button\n : boundsProp.maxX,\n };\n super.drawColumnHeadersAtDepth(context, state, range, bounds, depth);\n }\n\n drawColumnHeaderAtIndex(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n index: VisibleIndex,\n bounds: { minX: number; maxX: number }\n ): void {\n super.drawColumnHeaderAtIndex(context, state, index, bounds);\n const { metrics, model, theme } = state;\n const {\n modelColumns,\n allColumnWidths,\n allColumnXs,\n gridX,\n columnHeaderHeight,\n } = metrics;\n\n const { headerHorizontalPadding, iconSize: themeIconSize } = theme;\n const iconSize = Math.round(themeIconSize * 0.75); // The vsTriangle icons are a bit bigger than we want\n const columnWidth = getOrThrow(allColumnWidths, index, 0);\n const columnX = getOrThrow(allColumnXs, index) + gridX;\n const modelColumn = modelColumns.get(index);\n\n if (modelColumn == null) {\n return;\n }\n\n const columnName = model.columns[modelColumn]?.name;\n\n if (columnName == null) {\n return;\n }\n\n const sort = TableUtils.getSortForColumn(model.sort, columnName);\n\n if (!sort) {\n return;\n }\n\n const icon = this.getSortIcon(sort, iconSize);\n if (!icon) {\n return;\n }\n\n const text = model.textForColumnHeader(modelColumn);\n if (text === undefined) {\n return;\n }\n\n const textWidth = this.getCachedHeaderWidth(context, text);\n const textRight = gridX + columnX + textWidth + headerHorizontalPadding;\n let { maxX } = bounds;\n maxX -= headerHorizontalPadding; // Right visible edge of the headers\n // Right edge of the column. The icon has its own horizontal padding\n const defaultX = gridX + columnX + columnWidth - iconSize;\n\n // If the text is partially off the screen, put the icon to the right of the text\n // else put it at the right edge of the column/grid (whichever is smaller)\n const x = textRight > maxX ? textRight + 1 : Math.min(maxX, defaultX);\n const y = (columnHeaderHeight - iconSize) * 0.5;\n\n context.save();\n\n context.beginPath();\n context.rect(columnX, 0, columnWidth, columnHeaderHeight);\n context.clip();\n\n context.fillStyle = theme.headerSortBarColor;\n context.translate(x, y);\n context.fill(icon);\n\n context.restore();\n }\n\n drawFilterHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { isFilterBarShown, quickFilters, advancedFilters } = state;\n\n if (isFilterBarShown) {\n this.drawExpandedFilterHeaders(context, state);\n } else if (\n (quickFilters != null && quickFilters.size > 0) ||\n (advancedFilters != null && advancedFilters.size > 0)\n ) {\n this.drawCollapsedFilterHeaders(context, state);\n }\n }\n\n drawExpandedFilterHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, theme, quickFilters, advancedFilters } = state;\n const { filterBarHeight } = theme;\n\n if (filterBarHeight <= 0) {\n return;\n }\n\n const {\n gridX,\n gridY,\n maxX,\n modelColumns,\n visibleColumns,\n allColumnWidths,\n allColumnXs,\n } = metrics;\n\n const columnHeaderHeight = gridY - filterBarHeight;\n\n context.save();\n\n context.font = theme.filterBarFont;\n context.textAlign = 'left';\n\n if (\n (quickFilters != null && quickFilters.size > 0) ||\n (advancedFilters != null && advancedFilters.size > 0)\n ) {\n // fill style if a fiter is set on any column\n context.fillStyle = theme.filterBarExpandedActiveBackgroundColor;\n } else {\n // fill style with no filters set\n context.fillStyle = theme.filterBarExpandedBackgroundColor;\n }\n\n // Draw the background\n context.fillRect(gridX, columnHeaderHeight, maxX, filterBarHeight - 1);\n\n // Draw the bottom border\n context.fillStyle = theme.headerBarCasingColor;\n\n context.fillRect(gridX, columnHeaderHeight + filterBarHeight - 1, maxX, 1);\n\n // Draw the filter input boxes\n const y1 = columnHeaderHeight;\n context.strokeStyle = theme.filterBarSeparatorColor;\n context.beginPath();\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const modelColumn = getOrThrow(modelColumns, column);\n const columnX = getOrThrow(allColumnXs, column);\n const columnWidth = getOrThrow(allColumnWidths, column);\n if (model.isFilterable(modelColumn) && columnWidth > 0) {\n const x1 = gridX + (columnX ?? 0);\n context.rect(x1 + 0.5, y1 + 0.5, columnWidth, filterBarHeight - 2); // 1 for the border, 1 for the casing\n }\n }\n context.stroke();\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const columnWidth = getOrThrow(allColumnWidths, column);\n const columnX = getOrThrow(allColumnXs, column);\n const x = columnX + gridX;\n this.drawExpandedFilterHeader(context, state, column, x, columnWidth);\n }\n\n context.restore();\n }\n\n drawExpandedFilterHeader(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n columnX: Coordinate,\n columnWidth: number\n ): void {\n if (columnWidth <= 0) {\n return;\n }\n\n const { metrics, theme, quickFilters, advancedFilters } = state;\n const { modelColumns, gridY } = metrics;\n const {\n filterBarHeight,\n filterBarExpandedActiveCellBackgroundColor,\n filterBarErrorColor,\n filterBarHorizontalPadding,\n headerColor,\n } = theme;\n const columnHeaderHeight = gridY - filterBarHeight;\n const modelColumn = modelColumns.get(column);\n if (modelColumn === undefined) return;\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter == null && advancedFilter == null) {\n return;\n }\n\n let text = null;\n if (quickFilter != null) {\n const { text: filterText } = quickFilter;\n text = filterText;\n if (!text) {\n text = TableUtils.getFilterText(quickFilter.filter);\n }\n\n if (text != null) {\n const { fontWidthsLower, fontWidthsUpper } = metrics;\n const fontWidthLower = fontWidthsLower.get(context.font);\n const fontWidthUpper = fontWidthsUpper.get(context.font);\n\n const maxLength = columnWidth - filterBarHorizontalPadding * 2;\n text = this.textCellRenderer.getCachedTruncatedString(\n context,\n text,\n maxLength,\n fontWidthLower,\n fontWidthUpper\n );\n }\n }\n\n context.save();\n\n const isFilterValid = IrisGridRenderer.isFilterValid(\n advancedFilter,\n quickFilter\n );\n if (isFilterValid && filterBarExpandedActiveCellBackgroundColor != null) {\n // draw active filter background inside cell\n context.fillStyle = filterBarExpandedActiveCellBackgroundColor;\n context.fillRect(\n columnX + 1, // +1 left border\n columnHeaderHeight + 1, // +1 top border\n columnWidth - 1, // -1 right border\n filterBarHeight - 3 // -3 top, bottom border and bottom casing\n );\n } else if (filterBarErrorColor != null) {\n // draw error box inside cell\n context.fillStyle = filterBarErrorColor;\n context.lineWidth = 2;\n context.strokeStyle = filterBarErrorColor;\n // Because this is drawn with a strokeRect, we have to add/subtract half the,\n // linewidth from each side to make interior, in addition to accounting for any borders/casings\n const rectLeft = columnX + 2; // 1 for strokeRect, 1 for border\n const rectTop = columnHeaderHeight + 2; // 1 for strokeRect, 1 for border\n const rectWidth = columnWidth - 3; // for 2 border and 1 for strokeRect\n const rectHeight = filterBarHeight - 5; // -2 for strokeRect, -3 for top, bottom border and bottom casing\n context.strokeRect(rectLeft, rectTop, rectWidth, rectHeight);\n }\n\n if (text != null && text !== '') {\n const textX = columnX + filterBarHorizontalPadding;\n const textY = columnHeaderHeight + filterBarHeight * 0.5 + 1; // + 1 for border\n context.fillStyle = headerColor;\n context.fillText(text, textX, textY);\n }\n\n context.restore();\n }\n\n drawCollapsedFilterHeaders(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, theme } = state;\n const { headerSeparatorColor, filterBarCollapsedHeight } = theme;\n\n if (filterBarCollapsedHeight <= 0) {\n return;\n }\n\n const { gridX, gridY, maxX, visibleColumns, allColumnWidths, allColumnXs } =\n metrics;\n const columnHeaderHeight = gridY - filterBarCollapsedHeight;\n\n context.save();\n\n // Draw the background of the collapsed filter bar\n context.fillStyle = headerSeparatorColor;\n context.fillRect(gridX, columnHeaderHeight, maxX, filterBarCollapsedHeight);\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const column = visibleColumns[i];\n const columnWidth = allColumnWidths.get(column);\n const columnX = allColumnXs.get(column);\n if (columnX != null && columnWidth != null) {\n const x = columnX + gridX;\n // draw the collapsed cells\n this.drawCollapsedFilterHeader(context, state, column, x, columnWidth);\n }\n }\n\n context.restore();\n }\n\n drawCollapsedFilterHeader(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState,\n column: VisibleIndex,\n columnX: Coordinate,\n columnWidth: number\n ): void {\n if (columnWidth <= 0) {\n return;\n }\n\n const { metrics, theme, quickFilters, advancedFilters } = state;\n const { modelColumns, gridY } = metrics;\n const modelColumn = modelColumns.get(column);\n\n if (modelColumn === undefined) return;\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n\n const {\n filterBarCollapsedHeight,\n filterBarActiveColor,\n filterBarActiveBackgroundColor,\n filterBarErrorColor,\n } = theme;\n\n context.save();\n\n const isFilterValid = IrisGridRenderer.isFilterValid(\n advancedFilter,\n quickFilter\n );\n\n if (\n filterBarActiveBackgroundColor != null &&\n quickFilter == null &&\n advancedFilter == null\n ) {\n context.fillStyle = filterBarActiveBackgroundColor;\n } else if (filterBarActiveColor != null && isFilterValid) {\n context.fillStyle = filterBarActiveColor;\n } else if (filterBarErrorColor != null) {\n context.fillStyle = filterBarErrorColor;\n }\n\n const x = columnX + 1; // for gap between columns\n const y = gridY - filterBarCollapsedHeight;\n const rectWidth = columnWidth - 1; // for gap between columns\n const rectHeight = filterBarCollapsedHeight - 1; // for casing bottom\n context.fillRect(x, y, rectWidth, rectHeight);\n\n context.restore();\n }\n\n drawRowFooters(\n context: CanvasRenderingContext2D,\n state: IrisGridRenderState\n ): void {\n const { metrics, model, mouseX, mouseY, theme } = state;\n const {\n gridY,\n gridX,\n maxX,\n modelRows,\n floatingTopHeight,\n floatingBottomHeight,\n floatingRows,\n rowFooterWidth,\n height,\n horizontalBarHeight,\n verticalBarWidth,\n allRowHeights,\n allRowYs,\n width,\n } = metrics;\n // Only draw the footers on the floating rows\n if (rowFooterWidth <= 0 || floatingRows.length === 0) {\n return;\n }\n\n const {\n cellHorizontalPadding,\n floatingGridRowColor,\n floatingRowBackgroundColors,\n headerColor,\n rowHoverBackgroundColor,\n } = theme;\n\n context.translate(gridX, gridY);\n\n context.beginPath();\n const x = Math.min(maxX, width - rowFooterWidth - verticalBarWidth - gridX);\n context.fillStyle = floatingRowBackgroundColors;\n if (floatingTopHeight > 0) {\n context.rect(x, 0, rowFooterWidth, floatingTopHeight);\n }\n if (floatingBottomHeight > 0) {\n context.rect(\n x,\n height - gridY - horizontalBarHeight - floatingBottomHeight,\n rowFooterWidth,\n floatingBottomHeight\n );\n }\n context.fill();\n\n const mouseRow =\n mouseX != null &&\n mouseY != null &&\n mouseX >= gridX &&\n mouseX <= maxX + rowFooterWidth\n ? GridUtils.getRowAtY(mouseY, metrics)\n : null;\n if (\n rowHoverBackgroundColor != null &&\n mouseRow !== null &&\n floatingRows.includes(mouseRow)\n ) {\n context.fillStyle = rowHoverBackgroundColor;\n const y = allRowYs.get(mouseRow);\n const rowHeight = allRowHeights.get(mouseRow);\n assertNotNull(y);\n assertNotNull(rowHeight);\n context.fillRect(x, y, rowFooterWidth, rowHeight);\n }\n\n context.beginPath();\n if (floatingGridRowColor != null) {\n context.strokeStyle = floatingGridRowColor;\n }\n if (floatingTopHeight > 0) {\n context.moveTo(x + 0.5, 0.5);\n context.lineTo(x + 0.5, floatingTopHeight - 0.5);\n }\n if (floatingBottomHeight > 0) {\n const y = height - gridY - horizontalBarHeight - floatingBottomHeight;\n context.moveTo(x - 0.5, y + 0.5);\n context.lineTo(x - 0.5, y + floatingBottomHeight - 0.5);\n }\n context.stroke();\n\n context.fillStyle = headerColor;\n context.textAlign = 'left';\n\n const textX = x + cellHorizontalPadding;\n for (let i = 0; i < floatingRows.length; i += 1) {\n const row = floatingRows[i];\n const rowHeight = allRowHeights.get(row);\n const rowY = allRowYs.get(row);\n const modelRow = modelRows.get(row);\n if (rowY != null && rowHeight != null && modelRow != null) {\n const textY = rowY + rowHeight * 0.5;\n context.fillText(model.textForRowFooter(modelRow), textX, textY);\n }\n }\n\n context.translate(-gridX, -gridY);\n }\n\n getExpandButtonPosition(\n {\n mouseX,\n mouseY,\n metrics,\n theme,\n }: {\n mouseX: Coordinate | null;\n mouseY: Coordinate | null;\n metrics: GridMetrics | undefined;\n theme: GridThemeType;\n },\n depth: number | null\n ): {\n left: Coordinate | null;\n top: Coordinate | null;\n width: number | null;\n height: number | null;\n } {\n const NULL_POSITION = { left: null, top: null, width: null, height: null };\n if (mouseX == null || mouseY == null || depth == null || !metrics) {\n return NULL_POSITION;\n }\n const { rowHeight, left, top } = GridUtils.getCellInfoFromXY(\n mouseX,\n mouseY,\n metrics\n );\n\n if (left == null || rowHeight == null || top == null) {\n return NULL_POSITION;\n }\n\n const { cellHorizontalPadding } = theme;\n\n const width = EXPAND_ICON_SIZE + 2 * cellHorizontalPadding;\n\n const buttonLeft = Math.max(left + EXPAND_ICON_SIZE * depth, metrics.gridX);\n const buttonTop = metrics.gridY + top;\n\n return {\n left: buttonLeft,\n top: buttonTop,\n width,\n height: rowHeight,\n };\n }\n}\n\nexport default IrisGridRenderer;\n"],"mappings":"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"}
|
|
@@ -24,6 +24,7 @@ declare class IrisGridTableModel extends IrisGridTableModelTemplate<DhType.Table
|
|
|
24
24
|
get isColumnStatisticsAvailable(): boolean;
|
|
25
25
|
get isRollupAvailable(): boolean;
|
|
26
26
|
get isSelectDistinctAvailable(): boolean;
|
|
27
|
+
get isOrganizeColumnsAvailable(): boolean;
|
|
27
28
|
get isCustomColumnsAvailable(): boolean;
|
|
28
29
|
get isFormatColumnsAvailable(): boolean;
|
|
29
30
|
getMemoizedKeyColumnSet: (inputTableKeys?: readonly ColumnName[]) => Set<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridTableModel.d.ts","sourceRoot":"","sources":["../src/IrisGridTableModel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAQnD,OAAO,EACL,KAAK,UAAU,EACf,KAAK,KAAK,EACV,KAAK,mBAAmB,EACzB,MAAM,eAAe,CAAC;AACvB,OAAO,0BAA0B,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAI3E;;GAEG;AAEH,cAAM,kBACJ,SAAQ,0BAA0B,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CACtD,YAAW,4BAA4B;IAEvC,iBAAiB,CAAC,EAAE,UAAU,EAAE,CAAC;IAEjC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAE3B,gBAAgB,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;IAExC,cAAc,EAAE,MAAM,CAAC,eAAe,EAAE,CAAM;IAG9C,cAAc,EAAE,OAAO,CAAC;IAExB;;;;;OAKG;gBAED,EAAE,EAAE,OAAO,MAAM,EACjB,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,SAAS,YAAoB,EAC7B,UAAU,GAAE,MAAM,CAAC,UAAU,GAAG,IAAW;IAS7C,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IAED,IAAI,2BAA2B,IAAI,OAAO,CAEzC;IAED,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IAED,IAAI,yBAAyB,IAAI,OAAO,CAEvC;IAED,IAAI,wBAAwB,IAAI,OAAO,CAEtC;IAED,IAAI,wBAAwB,IAAI,OAAO,CAEtC;IAED,uBAAuB,oBACH,SAAS,UAAU,EAAE,iBAEvC;IAEF,IAAI,YAAY,IAAI,GAAG,CAAC,UAAU,CAAC,CAElC;IAED,uBAAuB,4BACK,UAAU,EAAE,GAAG,SAAS,iCAElD;IAEF,IAAI,YAAY,IAAI,SAAS,UAAU,EAAE,CAIxC;IAED,sBAAsB,2BACK,UAAU,EAAE,GAAG,SAAS,iCAEjD;IAEF,IAAI,WAAW,IAAI,SAAS,UAAU,EAAE,CAIvC;IAED,wBAAwB,8BAEO,UAAU,EAAE,sBACnB,UAAU,EAAE,KAC/B,SAAS,UAAU,EAAE,CAExB;IAEF,IAAI,aAAa,IAAI,SAAS,UAAU,EAAE,CAKzC;IAED,IAAI,WAAW,IAAI,MAAM,CAAC,WAAW,GAAG,IAAI,GAAG,SAAS,CAEvD;IAED,IAAI,uBAAuB,IAAI,MAAM,CAEpC;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,aAAa,IAAI,UAAU,EAAE,CAEhC;IAED,IAAI,aAAa,CAAC,aAAa,EAAE,UAAU,EAAE,EAoB5C;IAED,IAAI,aAAa,IAAI,MAAM,CAAC,YAAY,EAAE,CAEzC;IAED,IAAI,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,EAoBrD;IAED,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;IAShD,IAAI,gBAAgB,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,CAE/C;IAEK,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAI3C,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAM7C,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAI3C,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAmBlE,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,EAI1C;IAED,IAAI,YAAY,CAAC,YAAY,EAAE,mBAAmB,GAAG,IAAI,EA6CxD;IAED,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAI,mBAAmB,IAAI,OAAO,CAMjC;IAED,IAAI,2BAA2B,IAAI,OAAO,CAEzC;IAED,YAAY,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO;IAIxC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAIrC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAIzE,4BAA4B,YAChB,MAAM,CAAC,MAAM,EAAE,iBAEzB;IAEF,yBAAyB,YAAqB,SAAS,MAAM,CAAC,MAAM,EAAE,qBAEpE;IAEF,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;IAYhD,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;IAIzC,MAAM,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoGnD,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EACrB,SAAS,EAAE,MAAM,CAAC,aAAa,EAC/B,KAAK,EAAE,OAAO,EACd,WAAW,CAAC,EAAE,OAAO,EACrB,QAAQ,CAAC,EAAE,OAAO,EAClB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,MAAM,CAAC;IAYlB,IAAI,kBAAkB,IAAI,OAAO,CAEhC;CACF;AAED,eAAe,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"IrisGridTableModel.d.ts","sourceRoot":"","sources":["../src/IrisGridTableModel.ts"],"names":[],"mappings":"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"}
|