@deephaven/iris-grid 0.45.2-beta.4 → 0.45.2-docs.6

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.
@@ -22,7 +22,7 @@ export interface IrisGridMetricState extends GridMetricState {
22
22
  * Class to calculate all the metrics for a grid.
23
23
  * Call getMetrics() with the state to get metrics
24
24
  */
25
- declare class IrisGridMetricCalculator extends GridMetricCalculator {
25
+ export declare class IrisGridMetricCalculator extends GridMetricCalculator {
26
26
  getGridY(state: IrisGridMetricState): number;
27
27
  getUserColumnWidths(): ModelSizeMap;
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridMetricCalculator.d.ts","sourceRoot":"","sources":["../src/IrisGridMetricCalculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEpE,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,GAAG,CAClB,MAAM,EACN;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAA;KAAE,CACrD,CAAC;IACF,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAC5E,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,cAAM,wBAAyB,SAAQ,oBAAoB;IACzD,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM;IA6B5C,mBAAmB,IAAI,YAAY;CAGpC;AAED,eAAe,wBAAwB,CAAC"}
1
+ {"version":3,"file":"IrisGridMetricCalculator.d.ts","sourceRoot":"","sources":["../src/IrisGridMetricCalculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEpE,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,GAAG,CAClB,MAAM,EACN;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAA;KAAE,CACrD,CAAC;IACF,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAC5E,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,oBAAoB;IAChE,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM;IA6B5C,mBAAmB,IAAI,YAAY;CAGpC;AAED,eAAe,wBAAwB,CAAC"}
@@ -4,7 +4,7 @@ import { TableUtils } from '@deephaven/jsapi-utils';
4
4
  * Class to calculate all the metrics for a grid.
5
5
  * Call getMetrics() with the state to get metrics
6
6
  */
7
- class IrisGridMetricCalculator extends GridMetricCalculator {
7
+ export class IrisGridMetricCalculator extends GridMetricCalculator {
8
8
  getGridY(state) {
9
9
  var gridY = super.getGridY(state);
10
10
  var {
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridMetricCalculator.js","names":["GridMetricCalculator","TableUtils","IrisGridMetricCalculator","getGridY","state","gridY","isFilterBarShown","theme","advancedFilters","quickFilters","sorts","reverseType","filterBarHeight","size","filterBarCollapsedHeight","REVERSE_TYPE","NONE","length","reverseHeaderBarHeight","getUserColumnWidths","userColumnWidths"],"sources":["../src/IrisGridMetricCalculator.ts"],"sourcesContent":["import { GridMetricCalculator, ModelSizeMap } from '@deephaven/grid';\nimport type { GridMetricState } from '@deephaven/grid';\nimport type { FilterCondition, Sort } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport type IrisGridModel from './IrisGridModel';\nimport { 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: FilterCondition | null }\n >;\n quickFilters: Map<string, { text: string; filter: FilterCondition | null }>;\n sorts: Sort[];\n reverseType: string;\n}\n\n/**\n * Class to calculate all the metrics for a grid.\n * Call getMetrics() with the state to get metrics\n */\nclass 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 reverseType,\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 (\n reverseType !== TableUtils.REVERSE_TYPE.NONE &&\n sorts != null &&\n sorts.length > 0\n ) {\n gridY += theme.reverseHeaderBarHeight;\n }\n\n return gridY;\n }\n\n getUserColumnWidths(): ModelSizeMap {\n return this.userColumnWidths;\n }\n}\n\nexport default IrisGridMetricCalculator;\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAsB,iBAAiB;AAGpE,SAASC,UAAU,QAAQ,wBAAwB;AAiBnD;AACA;AACA;AACA;AACA,MAAMC,wBAAwB,SAASF,oBAAoB,CAAC;EAC1DG,QAAQ,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,IACEH,WAAW,KAAKV,UAAU,CAACc,YAAY,CAACC,IAAI,IAC5CN,KAAK,IAAI,IAAI,IACbA,KAAK,CAACO,MAAM,GAAG,CAAC,EAChB;MACAZ,KAAK,IAAIE,KAAK,CAACW,sBAAsB;IACvC;IAEA,OAAOb,KAAK;EACd;EAEAc,mBAAmB,GAAiB;IAClC,OAAO,IAAI,CAACC,gBAAgB;EAC9B;AACF;AAEA,eAAelB,wBAAwB"}
1
+ {"version":3,"file":"IrisGridMetricCalculator.js","names":["GridMetricCalculator","TableUtils","IrisGridMetricCalculator","getGridY","state","gridY","isFilterBarShown","theme","advancedFilters","quickFilters","sorts","reverseType","filterBarHeight","size","filterBarCollapsedHeight","REVERSE_TYPE","NONE","length","reverseHeaderBarHeight","getUserColumnWidths","userColumnWidths"],"sources":["../src/IrisGridMetricCalculator.ts"],"sourcesContent":["import { GridMetricCalculator, ModelSizeMap } from '@deephaven/grid';\nimport type { GridMetricState } from '@deephaven/grid';\nimport type { FilterCondition, Sort } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport type IrisGridModel from './IrisGridModel';\nimport { 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: FilterCondition | null }\n >;\n quickFilters: Map<string, { text: string; filter: FilterCondition | null }>;\n sorts: Sort[];\n reverseType: string;\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 reverseType,\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 (\n reverseType !== TableUtils.REVERSE_TYPE.NONE &&\n sorts != null &&\n sorts.length > 0\n ) {\n gridY += theme.reverseHeaderBarHeight;\n }\n\n return gridY;\n }\n\n getUserColumnWidths(): ModelSizeMap {\n return this.userColumnWidths;\n }\n}\n\nexport default IrisGridMetricCalculator;\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAsB,iBAAiB;AAGpE,SAASC,UAAU,QAAQ,wBAAwB;AAiBnD;AACA;AACA;AACA;AACA,OAAO,MAAMC,wBAAwB,SAASF,oBAAoB,CAAC;EACjEG,QAAQ,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,IACEH,WAAW,KAAKV,UAAU,CAACc,YAAY,CAACC,IAAI,IAC5CN,KAAK,IAAI,IAAI,IACbA,KAAK,CAACO,MAAM,GAAG,CAAC,EAChB;MACAZ,KAAK,IAAIE,KAAK,CAACW,sBAAsB;IACvC;IAEA,OAAOb,KAAK;EACd;EAEAc,mBAAmB,GAAiB;IAClC,OAAO,IAAI,CAACC,gBAAgB;EAC9B;AACF;AAEA,eAAelB,wBAAwB"}
@@ -21,7 +21,7 @@ export type IrisGridRenderState = GridRenderState & {
21
21
  /**
22
22
  * Handles rendering some of the Iris specific features, such as sorting icons, sort bar display
23
23
  * */
24
- declare class IrisGridRenderer extends GridRenderer {
24
+ export declare class IrisGridRenderer extends GridRenderer {
25
25
  static isFilterValid(advancedFilter: AdvancedFilter | undefined | null, quickFilter: QuickFilter | undefined | null): boolean;
26
26
  protected textCellRenderer: IrisGridTextCellRenderer;
27
27
  protected dataBarCellRenderer: IrisGridDataBarCellRenderer;
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridRenderer.d.ts","sourceRoot":"","sources":["../src/IrisGridRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridRenderer.d.ts","sourceRoot":"","sources":["../src/IrisGridRenderer.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,UAAU,EAEV,WAAW,EACX,cAAc,EACd,YAAY,EACZ,eAAe,EACf,aAAa,EAEb,YAAY,EACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAc,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,cAAc,EACd,WAAW,EACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,2BAA2B,MAAM,+BAA+B,CAAC;AAaxE,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG;IAClD,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC;IACzB,iBAAiB,EAAE,cAAc,CAAC;IAClC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,yBAAyB,CAAC;IAC3C,YAAY,EAAE,sBAAsB,CAAC;IACrC,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AACF;;KAEK;AACL,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,MAAM,CAAC,aAAa,CAClB,cAAc,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI,EACjD,WAAW,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,GAC1C,OAAO;IAQV,SAAS,CAAC,gBAAgB,2BAAkC;IAE5D,SAAS,CAAC,mBAAmB,8BAAqC;IAElE,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI;IAa7C,UAAU,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAM5C,QAAQ,CACN,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,GACzB,IAAI;IAKP,aAAa,CACX,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,GACzB,IAAI;IAQP,eAAe,CACb,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,YAAY,GAChB,IAAI;IAcP,6BAA6B,CAAC,EAC5B,MAAM,EACN,MAAM,EACN,OAAO,EACP,KAAK,GACN,EAAE;QACD,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;QAC1B,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;QAC1B,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;QACjC,KAAK,EAAE,aAAa,CAAC;KACtB,GAAG;QACF,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;QACxB,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;QACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB;IASD,0BAA0B,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO;IAI/D,sBAAsB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IA8CxD,qBAAqB,CACnB,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,GACzB,IAAI;IAmCP,kBAAkB,CAChB,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,GACzB,IAAI;IA4BP,oBAAoB,CAClB,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,GACzB,IAAI;IAkBP,iBAAiB,CACf,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,GACzB,IAAI;IAOP,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IA4C3C,iBAAiB,CACf,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,GACzB,IAAI;IAqDP,aAAa,CACX,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,aAAa,EAC9C,SAAS,EAAE,MAAM,EACjB,QAAQ,UAAO,GACd,IAAI;IA2BP,wBAAwB,CACtB,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,gBAAgB,EACvB,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAC1C,KAAK,EAAE,MAAM,GACZ,IAAI;IAcP,uBAAuB,CACrB,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GACrC,IAAI;IAsEP,iBAAiB,CACf,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,GACzB,IAAI;IAaP,yBAAyB,CACvB,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,GACzB,IAAI;IAwEP,wBAAwB,CACtB,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,UAAU,EACnB,WAAW,EAAE,MAAM,GAClB,IAAI;IA0FP,0BAA0B,CACxB,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,GACzB,IAAI;IAgCP,yBAAyB,CACvB,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,UAAU,EACnB,WAAW,EAAE,MAAM,GAClB,IAAI;IAgDP,cAAc,CACZ,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,mBAAmB,GACzB,IAAI;IAsGP,uBAAuB,CACrB,EACE,MAAM,EACN,MAAM,EACN,OAAO,EACP,KAAK,GACN,EAAE;QACD,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;QAC1B,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;QAC1B,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;QACjC,KAAK,EAAE,aAAa,CAAC;KACtB,EACD,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB;QACD,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;QACxB,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;QACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB;CA4BF;AAED,eAAe,gBAAgB,CAAC"}
@@ -23,7 +23,7 @@ var EXPAND_ICON_SIZE = 10;
23
23
  /**
24
24
  * Handles rendering some of the Iris specific features, such as sorting icons, sort bar display
25
25
  * */
26
- class IrisGridRenderer extends GridRenderer {
26
+ export class IrisGridRenderer extends GridRenderer {
27
27
  constructor() {
28
28
  super(...arguments);
29
29
  _defineProperty(this, "textCellRenderer", new IrisGridTextCellRenderer());
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridRenderer.js","names":["DEFAULT_FONT_WIDTH","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","isFilterValid","advancedFilter","quickFilter","isAdvancedFilterValid","filter","isQuickFilterValid","getSortIcon","sort","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","mouseX","mouseY","theme","textCellRenderer","shouldRenderOverflowButton","left","buttonLeft","top","buttonTop","width","buttonWidth","height","buttonHeight","cellHorizontalPadding","overflowButtonColor","overflowButtonHoverColor","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","rect","clip","drawColumnHeaders","reverseType","columnHeaderHeight","drawFilterHeaders","hasReverse","REVERSE_TYPE","NONE","color","headerReverseBarColor","headerSortBarColor","drawHeaderBar","reverseHeaderBarHeight","sortHeaderBarHeight","barHeight","interior","offset","headerBarCasingColor","columnHeaderMaxDepth","drawColumnHeadersAtDepth","range","boundsProp","depth","isMenuShown","bounds","drawColumnHeaderAtIndex","index","gridX","fontWidths","headerHorizontalPadding","columnName","columns","name","getSortForColumn","text","textForColumnHeader","fontWidth","font","textWidth","textRight","defaultX","Math","min","yOffset","isFilterBarShown","quickFilters","advancedFilters","drawExpandedFilterHeaders","size","drawCollapsedFilterHeaders","filterBarHeight","visibleColumns","textAlign","filterBarExpandedActiveBackgroundColor","filterBarExpandedBackgroundColor","y1","filterBarSeparatorColor","i","isFilterable","x1","drawExpandedFilterHeader","filterBarExpandedActiveCellBackgroundColor","filterBarErrorColor","filterBarHorizontalPadding","headerColor","filterText","getFilterText","measureText","maxLength","substring","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","NULL_POSITION","getCellInfoFromXY","max"],"sources":["../src/IrisGridRenderer.ts"],"sourcesContent":["/* eslint react/destructuring-assignment: \"off\" */\n/* eslint class-methods-use-this: \"off\" */\n/* eslint no-param-reassign: \"off\" */\nimport {\n BoundedAxisRange,\n Coordinate,\n DEFAULT_FONT_WIDTH,\n GridMetrics,\n GridRangeIndex,\n GridRenderer,\n GridRenderState,\n GridThemeType,\n GridUtils,\n VisibleIndex,\n} from '@deephaven/grid';\nimport type { Sort } from '@deephaven/jsapi-types';\nimport { TableUtils, ReverseType } from '@deephaven/jsapi-utils';\nimport { assertNotNull, getOrThrow } from '@deephaven/utils';\nimport {\n ReadonlyAdvancedFilterMap,\n ReadonlyQuickFilterMap,\n AdvancedFilter,\n QuickFilter,\n} from './CommonTypes';\nimport { IrisGridThemeType } from './IrisGridTheme';\nimport 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 reverseType: ReverseType;\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 * */\nclass 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: Sort | null): Path2D | null {\n if (!sort) {\n return null;\n }\n if (sort.direction === TableUtils.sortDirection.ascending) {\n return getIcon(ICON_NAMES.SORT_UP);\n }\n if (sort.direction === TableUtils.sortDirection.descending) {\n return getIcon(ICON_NAMES.SORT_DOWN);\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: GridThemeType;\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 } = 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);\n if (buttonLeft != null && buttonTop != null) {\n context.translate(buttonLeft + cellHorizontalPadding, buttonTop + 2);\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 = 'overlay';\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, reverseType } = 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 const hasReverse = reverseType !== TableUtils.REVERSE_TYPE.NONE;\n\n let color;\n if (hasReverse) {\n color = theme.headerReverseBarColor;\n } else {\n color = theme.headerSortBarColor;\n }\n this.drawHeaderBar(\n context,\n state,\n color,\n hasReverse ? 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 (\n // has table reverse\n reverseType !== TableUtils.REVERSE_TYPE.NONE\n ) {\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 } = state;\n const { columnHeaderMaxDepth } = model;\n const { width } = metrics;\n const bounds = {\n ...boundsProp,\n maxX:\n depth === columnHeaderMaxDepth - 1 && boundsProp.maxX === width\n ? width - (isMenuShown ? 0 : 30) // 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 fontWidths,\n } = metrics;\n\n const { headerHorizontalPadding } = theme;\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);\n if (!icon) {\n return;\n }\n\n const text = model.textForColumnHeader(modelColumn);\n if (text === undefined) {\n return;\n }\n\n const fontWidth = fontWidths.get(context.font) ?? DEFAULT_FONT_WIDTH;\n assertNotNull(fontWidth);\n const textWidth = text.length * fontWidth;\n const textRight = gridX + columnX + textWidth + headerHorizontalPadding;\n let { maxX } = bounds;\n maxX -= headerHorizontalPadding;\n const defaultX =\n gridX + columnX + columnWidth - headerHorizontalPadding - 1;\n\n const x = textRight > maxX ? textRight + 1 : Math.min(maxX, defaultX);\n const yOffset =\n sort.direction === TableUtils.sortDirection.ascending ? -6 : -12;\n const y = columnHeaderHeight * 0.5 + yOffset;\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.font;\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 { fontWidths } = metrics;\n let fontWidth = fontWidths.get(context.font);\n if (fontWidth == null || fontWidth === 0) {\n fontWidth = context.measureText('8').width;\n if (!fontWidth) {\n fontWidth = 10;\n }\n }\n\n const maxLength =\n (columnWidth - filterBarHorizontalPadding * 2) / fontWidth;\n if (maxLength <= 0) {\n text = '';\n } else if (text.length > maxLength) {\n text = `${text.substring(0, maxLength - 1)}…`;\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":["DEFAULT_FONT_WIDTH","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","isFilterValid","advancedFilter","quickFilter","isAdvancedFilterValid","filter","isQuickFilterValid","getSortIcon","sort","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","mouseX","mouseY","theme","textCellRenderer","shouldRenderOverflowButton","left","buttonLeft","top","buttonTop","width","buttonWidth","height","buttonHeight","cellHorizontalPadding","overflowButtonColor","overflowButtonHoverColor","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","rect","clip","drawColumnHeaders","reverseType","columnHeaderHeight","drawFilterHeaders","hasReverse","REVERSE_TYPE","NONE","color","headerReverseBarColor","headerSortBarColor","drawHeaderBar","reverseHeaderBarHeight","sortHeaderBarHeight","barHeight","interior","offset","headerBarCasingColor","columnHeaderMaxDepth","drawColumnHeadersAtDepth","range","boundsProp","depth","isMenuShown","bounds","drawColumnHeaderAtIndex","index","gridX","fontWidths","headerHorizontalPadding","columnName","columns","name","getSortForColumn","text","textForColumnHeader","fontWidth","font","textWidth","textRight","defaultX","Math","min","yOffset","isFilterBarShown","quickFilters","advancedFilters","drawExpandedFilterHeaders","size","drawCollapsedFilterHeaders","filterBarHeight","visibleColumns","textAlign","filterBarExpandedActiveBackgroundColor","filterBarExpandedBackgroundColor","y1","filterBarSeparatorColor","i","isFilterable","x1","drawExpandedFilterHeader","filterBarExpandedActiveCellBackgroundColor","filterBarErrorColor","filterBarHorizontalPadding","headerColor","filterText","getFilterText","measureText","maxLength","substring","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","NULL_POSITION","getCellInfoFromXY","max"],"sources":["../src/IrisGridRenderer.ts"],"sourcesContent":["/* eslint react/destructuring-assignment: \"off\" */\n/* eslint class-methods-use-this: \"off\" */\n/* eslint no-param-reassign: \"off\" */\nimport {\n BoundedAxisRange,\n Coordinate,\n DEFAULT_FONT_WIDTH,\n GridMetrics,\n GridRangeIndex,\n GridRenderer,\n GridRenderState,\n GridThemeType,\n GridUtils,\n VisibleIndex,\n} from '@deephaven/grid';\nimport type { Sort } from '@deephaven/jsapi-types';\nimport { TableUtils, ReverseType } from '@deephaven/jsapi-utils';\nimport { assertNotNull, getOrThrow } from '@deephaven/utils';\nimport {\n ReadonlyAdvancedFilterMap,\n ReadonlyQuickFilterMap,\n AdvancedFilter,\n QuickFilter,\n} from './CommonTypes';\nimport { IrisGridThemeType } from './IrisGridTheme';\nimport 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 reverseType: ReverseType;\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: Sort | null): Path2D | null {\n if (!sort) {\n return null;\n }\n if (sort.direction === TableUtils.sortDirection.ascending) {\n return getIcon(ICON_NAMES.SORT_UP);\n }\n if (sort.direction === TableUtils.sortDirection.descending) {\n return getIcon(ICON_NAMES.SORT_DOWN);\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: GridThemeType;\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 } = 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);\n if (buttonLeft != null && buttonTop != null) {\n context.translate(buttonLeft + cellHorizontalPadding, buttonTop + 2);\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 = 'overlay';\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, reverseType } = 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 const hasReverse = reverseType !== TableUtils.REVERSE_TYPE.NONE;\n\n let color;\n if (hasReverse) {\n color = theme.headerReverseBarColor;\n } else {\n color = theme.headerSortBarColor;\n }\n this.drawHeaderBar(\n context,\n state,\n color,\n hasReverse ? 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 (\n // has table reverse\n reverseType !== TableUtils.REVERSE_TYPE.NONE\n ) {\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 } = state;\n const { columnHeaderMaxDepth } = model;\n const { width } = metrics;\n const bounds = {\n ...boundsProp,\n maxX:\n depth === columnHeaderMaxDepth - 1 && boundsProp.maxX === width\n ? width - (isMenuShown ? 0 : 30) // 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 fontWidths,\n } = metrics;\n\n const { headerHorizontalPadding } = theme;\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);\n if (!icon) {\n return;\n }\n\n const text = model.textForColumnHeader(modelColumn);\n if (text === undefined) {\n return;\n }\n\n const fontWidth = fontWidths.get(context.font) ?? DEFAULT_FONT_WIDTH;\n assertNotNull(fontWidth);\n const textWidth = text.length * fontWidth;\n const textRight = gridX + columnX + textWidth + headerHorizontalPadding;\n let { maxX } = bounds;\n maxX -= headerHorizontalPadding;\n const defaultX =\n gridX + columnX + columnWidth - headerHorizontalPadding - 1;\n\n const x = textRight > maxX ? textRight + 1 : Math.min(maxX, defaultX);\n const yOffset =\n sort.direction === TableUtils.sortDirection.ascending ? -6 : -12;\n const y = columnHeaderHeight * 0.5 + yOffset;\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.font;\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 { fontWidths } = metrics;\n let fontWidth = fontWidths.get(context.font);\n if (fontWidth == null || fontWidth === 0) {\n fontWidth = context.measureText('8').width;\n if (!fontWidth) {\n fontWidth = 10;\n }\n }\n\n const maxLength =\n (columnWidth - filterBarHorizontalPadding * 2) / fontWidth;\n if (maxLength <= 0) {\n text = '';\n } else if (text.length > maxLength) {\n text = `${text.substring(0, maxLength - 1)}…`;\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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"}
package/dist/index.d.ts CHANGED
@@ -20,6 +20,8 @@ export type { IrisGridThemeType } from './IrisGridTheme';
20
20
  export { default as IrisGridTestUtils } from './IrisGridTestUtils';
21
21
  export { default as IrisGridUtils } from './IrisGridUtils';
22
22
  export * from './IrisGridUtils';
23
+ export * from './IrisGridMetricCalculator';
24
+ export * from './IrisGridRenderer';
23
25
  export { default as TableViewportUpdater } from './TableViewportUpdater';
24
26
  export { default as TreeTableViewportUpdater } from './TreeTableViewportUpdater';
25
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,eAAe,QAAQ,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AACrF,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,eAAe,QAAQ,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AACrF,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
package/dist/index.js CHANGED
@@ -19,6 +19,8 @@ export { default as IrisGridTheme } from "./IrisGridTheme.js";
19
19
  export { default as IrisGridTestUtils } from "./IrisGridTestUtils.js";
20
20
  export { default as IrisGridUtils } from "./IrisGridUtils.js";
21
21
  export * from "./IrisGridUtils.js";
22
+ export * from "./IrisGridMetricCalculator.js";
23
+ export * from "./IrisGridRenderer.js";
22
24
  export { default as TableViewportUpdater } from "./TableViewportUpdater.js";
23
25
  export { default as TreeTableViewportUpdater } from "./TreeTableViewportUpdater.js";
24
26
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["IrisGrid","default","ColumnHeaderGroup","SHORTCUTS","IrisGridModel","IrisGridTableModel","IrisGridTreeTableModel","IrisGridTableModelTemplate","IrisGridModelFactory","IrisGridTheme","IrisGridTestUtils","IrisGridUtils","TableViewportUpdater","TreeTableViewportUpdater"],"sources":["../src/index.ts"],"sourcesContent":["import IrisGrid from './IrisGrid';\n\nexport default IrisGrid;\nexport { IrisGrid };\nexport * from './sidebar';\nexport * from './AdvancedFilterCreator';\nexport * from './CommonTypes';\nexport { default as ColumnHeaderGroup } from './ColumnHeaderGroup';\nexport * from './IrisGrid';\nexport { default as SHORTCUTS } from './IrisGridShortcuts';\nexport { default as IrisGridModel } from './IrisGridModel';\nexport { default as IrisGridTableModel } from './IrisGridTableModel';\nexport * from './IrisGridTableModel';\nexport { default as IrisGridTreeTableModel } from './IrisGridTreeTableModel';\nexport { default as IrisGridTableModelTemplate } from './IrisGridTableModelTemplate';\nexport * from './IrisGridTableModelTemplate';\nexport * from './IrisGridTreeTableModel';\nexport { default as IrisGridModelFactory } from './IrisGridModelFactory';\nexport { default as IrisGridTheme } from './IrisGridTheme';\nexport type { IrisGridThemeType } from './IrisGridTheme';\nexport { default as IrisGridTestUtils } from './IrisGridTestUtils';\nexport { default as IrisGridUtils } from './IrisGridUtils';\nexport * from './IrisGridUtils';\nexport { default as TableViewportUpdater } from './TableViewportUpdater';\nexport { default as TreeTableViewportUpdater } from './TreeTableViewportUpdater';\n"],"mappings":"OAAOA,QAAQ;AAEf,eAAeA,QAAQ;AACvB,SAASA,QAAQ;AAAG;AAAA;AAAA;AAAA,SAIXC,OAAO,IAAIC,iBAAiB;AAAA;AAAA,SAE5BD,OAAO,IAAIE,SAAS;AAAA,SACpBF,OAAO,IAAIG,aAAa;AAAA,SACxBH,OAAO,IAAII,kBAAkB;AAAA;AAAA,SAE7BJ,OAAO,IAAIK,sBAAsB;AAAA,SACjCL,OAAO,IAAIM,0BAA0B;AAAA;AAAA;AAAA,SAGrCN,OAAO,IAAIO,oBAAoB;AAAA,SAC/BP,OAAO,IAAIQ,aAAa;AAAA,SAExBR,OAAO,IAAIS,iBAAiB;AAAA,SAC5BT,OAAO,IAAIU,aAAa;AAAA;AAAA,SAExBV,OAAO,IAAIW,oBAAoB;AAAA,SAC/BX,OAAO,IAAIY,wBAAwB"}
1
+ {"version":3,"file":"index.js","names":["IrisGrid","default","ColumnHeaderGroup","SHORTCUTS","IrisGridModel","IrisGridTableModel","IrisGridTreeTableModel","IrisGridTableModelTemplate","IrisGridModelFactory","IrisGridTheme","IrisGridTestUtils","IrisGridUtils","TableViewportUpdater","TreeTableViewportUpdater"],"sources":["../src/index.ts"],"sourcesContent":["import IrisGrid from './IrisGrid';\n\nexport default IrisGrid;\nexport { IrisGrid };\nexport * from './sidebar';\nexport * from './AdvancedFilterCreator';\nexport * from './CommonTypes';\nexport { default as ColumnHeaderGroup } from './ColumnHeaderGroup';\nexport * from './IrisGrid';\nexport { default as SHORTCUTS } from './IrisGridShortcuts';\nexport { default as IrisGridModel } from './IrisGridModel';\nexport { default as IrisGridTableModel } from './IrisGridTableModel';\nexport * from './IrisGridTableModel';\nexport { default as IrisGridTreeTableModel } from './IrisGridTreeTableModel';\nexport { default as IrisGridTableModelTemplate } from './IrisGridTableModelTemplate';\nexport * from './IrisGridTableModelTemplate';\nexport * from './IrisGridTreeTableModel';\nexport { default as IrisGridModelFactory } from './IrisGridModelFactory';\nexport { default as IrisGridTheme } from './IrisGridTheme';\nexport type { IrisGridThemeType } from './IrisGridTheme';\nexport { default as IrisGridTestUtils } from './IrisGridTestUtils';\nexport { default as IrisGridUtils } from './IrisGridUtils';\nexport * from './IrisGridUtils';\nexport * from './IrisGridMetricCalculator';\nexport * from './IrisGridRenderer';\nexport { default as TableViewportUpdater } from './TableViewportUpdater';\nexport { default as TreeTableViewportUpdater } from './TreeTableViewportUpdater';\n"],"mappings":"OAAOA,QAAQ;AAEf,eAAeA,QAAQ;AACvB,SAASA,QAAQ;AAAG;AAAA;AAAA;AAAA,SAIXC,OAAO,IAAIC,iBAAiB;AAAA;AAAA,SAE5BD,OAAO,IAAIE,SAAS;AAAA,SACpBF,OAAO,IAAIG,aAAa;AAAA,SACxBH,OAAO,IAAII,kBAAkB;AAAA;AAAA,SAE7BJ,OAAO,IAAIK,sBAAsB;AAAA,SACjCL,OAAO,IAAIM,0BAA0B;AAAA;AAAA;AAAA,SAGrCN,OAAO,IAAIO,oBAAoB;AAAA,SAC/BP,OAAO,IAAIQ,aAAa;AAAA,SAExBR,OAAO,IAAIS,iBAAiB;AAAA,SAC5BT,OAAO,IAAIU,aAAa;AAAA;AAAA;AAAA;AAAA,SAIxBV,OAAO,IAAIW,oBAAoB;AAAA,SAC/BX,OAAO,IAAIY,wBAAwB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/iris-grid",
3
- "version": "0.45.2-beta.4+9fd5c27d",
3
+ "version": "0.45.2-docs.6+ec279697",
4
4
  "description": "Deephaven Iris Grid",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -23,17 +23,17 @@
23
23
  "build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
24
24
  },
25
25
  "dependencies": {
26
- "@deephaven/components": "^0.45.2-beta.4+9fd5c27d",
27
- "@deephaven/console": "^0.45.2-beta.4+9fd5c27d",
28
- "@deephaven/filters": "^0.45.2-beta.4+9fd5c27d",
29
- "@deephaven/grid": "^0.45.2-beta.4+9fd5c27d",
30
- "@deephaven/icons": "^0.45.2-beta.4+9fd5c27d",
31
- "@deephaven/jsapi-types": "^0.45.2-beta.4+9fd5c27d",
32
- "@deephaven/jsapi-utils": "^0.45.2-beta.4+9fd5c27d",
33
- "@deephaven/log": "^0.45.2-beta.4+9fd5c27d",
34
- "@deephaven/react-hooks": "^0.45.2-beta.4+9fd5c27d",
35
- "@deephaven/storage": "^0.45.2-beta.4+9fd5c27d",
36
- "@deephaven/utils": "^0.45.2-beta.4+9fd5c27d",
26
+ "@deephaven/components": "^0.45.2-docs.6+ec279697",
27
+ "@deephaven/console": "^0.45.2-docs.6+ec279697",
28
+ "@deephaven/filters": "^0.45.2-docs.6+ec279697",
29
+ "@deephaven/grid": "^0.45.2-docs.6+ec279697",
30
+ "@deephaven/icons": "^0.45.2-docs.6+ec279697",
31
+ "@deephaven/jsapi-types": "^0.45.2-docs.6+ec279697",
32
+ "@deephaven/jsapi-utils": "^0.45.2-docs.6+ec279697",
33
+ "@deephaven/log": "^0.45.2-docs.6+ec279697",
34
+ "@deephaven/react-hooks": "^0.45.2-docs.6+ec279697",
35
+ "@deephaven/storage": "^0.45.2-docs.6+ec279697",
36
+ "@deephaven/utils": "^0.45.2-docs.6+ec279697",
37
37
  "@dnd-kit/core": "^6.0.5",
38
38
  "@dnd-kit/sortable": "^7.0.0",
39
39
  "@dnd-kit/utilities": "^3.2.0",
@@ -56,8 +56,8 @@
56
56
  "react-dom": "^17.x"
57
57
  },
58
58
  "devDependencies": {
59
- "@deephaven/jsapi-shim": "^0.45.2-beta.4+9fd5c27d",
60
- "@deephaven/mocks": "^0.45.2-beta.4+9fd5c27d"
59
+ "@deephaven/jsapi-shim": "^0.45.2-docs.6+ec279697",
60
+ "@deephaven/mocks": "^0.45.2-docs.6+ec279697"
61
61
  },
62
62
  "files": [
63
63
  "dist"
@@ -68,5 +68,5 @@
68
68
  "publishConfig": {
69
69
  "access": "public"
70
70
  },
71
- "gitHead": "9fd5c27df9af4c6e63117e07f90c2fdc3029dfe1"
71
+ "gitHead": "ec27969707b7ace55bec9b4290bf04dfd6bbfdd7"
72
72
  }