@deephaven/grid 0.31.2-beta.6 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/Grid.d.ts +13 -4
  2. package/dist/Grid.d.ts.map +1 -1
  3. package/dist/Grid.js +77 -53
  4. package/dist/Grid.js.map +1 -1
  5. package/dist/GridMetricCalculator.d.ts +1 -9
  6. package/dist/GridMetricCalculator.d.ts.map +1 -1
  7. package/dist/GridMetricCalculator.js +4 -17
  8. package/dist/GridMetricCalculator.js.map +1 -1
  9. package/dist/GridModel.d.ts +10 -0
  10. package/dist/GridModel.d.ts.map +1 -1
  11. package/dist/GridModel.js +40 -4
  12. package/dist/GridModel.js.map +1 -1
  13. package/dist/GridRenderer.d.ts +14 -2
  14. package/dist/GridRenderer.d.ts.map +1 -1
  15. package/dist/GridRenderer.js +159 -18
  16. package/dist/GridRenderer.js.map +1 -1
  17. package/dist/GridTheme.d.ts +1 -0
  18. package/dist/GridTheme.d.ts.map +1 -1
  19. package/dist/GridTheme.js +1 -0
  20. package/dist/GridTheme.js.map +1 -1
  21. package/dist/GridUtils.d.ts +27 -0
  22. package/dist/GridUtils.d.ts.map +1 -1
  23. package/dist/GridUtils.js +39 -0
  24. package/dist/GridUtils.js.map +1 -1
  25. package/dist/MockGridModel.d.ts +8 -8
  26. package/dist/MockGridModel.d.ts.map +1 -1
  27. package/dist/MockGridModel.js.map +1 -1
  28. package/dist/mouse-handlers/GridRowMoveMouseHandler.d.ts.map +1 -1
  29. package/dist/mouse-handlers/GridRowMoveMouseHandler.js +1 -1
  30. package/dist/mouse-handlers/GridRowMoveMouseHandler.js.map +1 -1
  31. package/dist/mouse-handlers/GridRowTreeMouseHandler.d.ts.map +1 -1
  32. package/dist/mouse-handlers/GridRowTreeMouseHandler.js +1 -1
  33. package/dist/mouse-handlers/GridRowTreeMouseHandler.js.map +1 -1
  34. package/dist/mouse-handlers/GridSeparatorMouseHandler.d.ts.map +1 -1
  35. package/dist/mouse-handlers/GridSeparatorMouseHandler.js +1 -1
  36. package/dist/mouse-handlers/GridSeparatorMouseHandler.js.map +1 -1
  37. package/dist/mouse-handlers/GridTokenMouseHandler.d.ts +24 -0
  38. package/dist/mouse-handlers/GridTokenMouseHandler.d.ts.map +1 -0
  39. package/dist/mouse-handlers/GridTokenMouseHandler.js +143 -0
  40. package/dist/mouse-handlers/GridTokenMouseHandler.js.map +1 -0
  41. package/dist/mouse-handlers/index.d.ts +1 -0
  42. package/dist/mouse-handlers/index.d.ts.map +1 -1
  43. package/dist/mouse-handlers/index.js +1 -0
  44. package/dist/mouse-handlers/index.js.map +1 -1
  45. package/package.json +5 -4
@@ -1 +1 @@
1
- {"version":3,"file":"GridModel.d.ts","sourceRoot":"","sources":["../src/GridModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAItE;;;;GAIG;AACH,uBAAe,SAAS,CACtB,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CACtD,MAAM,EACN,KAAK,CAAC,MAAM,CAAC,CACd,EACD,KAAK,SAAS,UAAU,GAAG,QAAQ,GAAG,UAAU,CAChD,SAAQ,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC;IACrC,gCAAgC;IAChC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC;IAEhC,mCAAmC;IACnC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC;IAEnC,+DAA+D;IAC/D,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,kDAAkD;IAClD,IAAI,sBAAsB,IAAI,MAAM,CAEnC;IAED,mEAAmE;IACnE,IAAI,uBAAuB,IAAI,MAAM,CAEpC;IAED,oEAAoE;IACpE,IAAI,wBAAwB,IAAI,MAAM,CAErC;IAED;;;;;;OAMG;IACH,IAAI,oBAAoB,IAAI,MAAM,CAEjC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM;IAEjE;;;;;;OAMG;IACH,qBAAqB,CACnB,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,UAAU,GACd,MAAM,GAAG,SAAS;IAIrB;;;;;OAKG;IACH,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,eAAe;IAItE;;;;;;OAMG;IACH,YAAY,CACV,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,SAAS,GACf,SAAS;IAIZ;;;;;;OAMG;IACH,sBAAsB,CACpB,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,SAAS,GACf,iBAAiB;IAIpB;;;;;OAKG;IACH,QAAQ,CAAC,mBAAmB,CAC1B,MAAM,EAAE,UAAU,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,GAAG,SAAS;IAErB;;;;OAIG;IACH,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,SAAI,GAAG,MAAM,GAAG,IAAI;IAIlE;;;;OAIG;IACH,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM;IAIzC;;;;OAIG;IACH,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM;IAIzC;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,SAAI,GAAG,OAAO;IAIvD;;;OAGG;IACH,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO;IAItC,oBAAoB,CAClB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,MAAM,GACZ,kBAAkB,GAAG,SAAS;IAIjC,0BAA0B,CACxB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,MAAM,GACZ,kBAAkB,GAAG,SAAS;CAGlC;AAED,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"GridModel.d.ts","sourceRoot":"","sources":["../src/GridModel.ts"],"names":[],"mappings":"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"}
package/dist/GridModel.js CHANGED
@@ -1,4 +1,11 @@
1
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
1
4
  import { EventTarget } from 'event-target-shim';
5
+ import { find as linkifyFind } from 'linkifyjs';
6
+ import memoizeClear from "./memoizeClear.js";
7
+ var LINK_TRUNCATION_LENGTH = 5000;
8
+
2
9
  /* eslint class-methods-use-this: "off" */
3
10
  /* eslint no-unused-vars: "off" */
4
11
  /**
@@ -7,10 +14,26 @@ import { EventTarget } from 'event-target-shim';
7
14
  * If data needs to be loaded asynchronously, return something immediately, then trigger an event for the table to refresh (Not yet implemented).
8
15
  */
9
16
  class GridModel extends EventTarget {
10
- /** Count of rows in the grid */
11
-
12
- /** Count of columns in the grid */
13
-
17
+ constructor() {
18
+ super(...arguments);
19
+ _defineProperty(this, "getCachedTokensInText", memoizeClear((text, visibleLength) => {
20
+ // If no text is truncated, then directly search in text
21
+ if (visibleLength >= text.length) {
22
+ return linkifyFind(text);
23
+ }
24
+
25
+ // To check for links, we should check to the first space after the truncatedText length
26
+ var indexOfProceedingWhitespace = text.slice(visibleLength - 1, LINK_TRUNCATION_LENGTH).search(/\s/); // index or -1 if not found
27
+
28
+ var lengthOfContent = visibleLength + indexOfProceedingWhitespace;
29
+ // If it doesn't exist, set lengthOfContent to the minimum between length of the original text and 5000
30
+ if (indexOfProceedingWhitespace === -1) {
31
+ lengthOfContent = Math.min(LINK_TRUNCATION_LENGTH, text.length);
32
+ }
33
+ var contentToCheckForLinks = text.substring(0, lengthOfContent);
34
+ return linkifyFind(contentToCheckForLinks);
35
+ }));
36
+ }
14
37
  /** Count of rows that are frozen (or 'floating') at the top */
15
38
  get floatingTopRowCount() {
16
39
  return 0;
@@ -149,6 +172,19 @@ class GridModel extends EventTarget {
149
172
  getColumnHeaderParentGroup(modelIndex, depth) {
150
173
  return undefined;
151
174
  }
175
+
176
+ /**
177
+ * Gets the tokens in the cell at column and row, based on the visible text
178
+ * @param column The model column
179
+ * @param row The model row
180
+ * @param visibleLength The length of the visible text
181
+ * @returns An array of Tokens in the cell
182
+ */
183
+ tokensForCell(column, row) {
184
+ var visibleLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : LINK_TRUNCATION_LENGTH;
185
+ var text = this.textForCell(column, row);
186
+ return this.getCachedTokensInText(text, visibleLength);
187
+ }
152
188
  }
153
189
  export default GridModel;
154
190
  //# sourceMappingURL=GridModel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GridModel.js","names":["EventTarget","GridModel","floatingTopRowCount","floatingBottomRowCount","floatingLeftColumnCount","floatingRightColumnCount","columnHeaderMaxDepth","truncationCharForCell","column","row","undefined","textAlignForCell","colorForCell","theme","textColor","backgroundColorForCell","colorForColumnHeader","depth","textForRowHeader","textForRowFooter","isColumnMovable","isRowMovable","getColumnHeaderGroup","modelIndex","getColumnHeaderParentGroup"],"sources":["../src/GridModel.ts"],"sourcesContent":["import { EventTarget, Event } from 'event-target-shim';\nimport type { IColumnHeaderGroup } from './ColumnHeaderGroup';\nimport { ModelIndex } from './GridMetrics';\nimport { GridColor, GridTheme, NullableGridColor } from './GridTheme';\n\n/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/**\n * Model for a Grid\n * All of these methods should return very quickly, as they will be called many times in the render cycle.\n * If data needs to be loaded asynchronously, return something immediately, then trigger an event for the table to refresh (Not yet implemented).\n */\nabstract class GridModel<\n TEventMap extends Record<string, Event<string>> = Record<\n string,\n Event<string>\n >,\n TMode extends 'standard' | 'strict' = 'standard'\n> extends EventTarget<TEventMap, TMode> {\n /** Count of rows in the grid */\n abstract get rowCount(): number;\n\n /** Count of columns in the grid */\n abstract get columnCount(): number;\n\n /** Count of rows that are frozen (or 'floating') at the top */\n get floatingTopRowCount(): number {\n return 0;\n }\n\n /** Count of rows that are frozen at the bottom */\n get floatingBottomRowCount(): number {\n return 0;\n }\n\n /** Count of columns that are frozen (or 'floating') at the left */\n get floatingLeftColumnCount(): number {\n return 0;\n }\n\n /** Count of columns that are frozen (or 'floating') at the right */\n get floatingRightColumnCount(): number {\n return 0;\n }\n\n /**\n * How many columns header levels are in the grid\n * Used for column grouping where columns at depth 0 are the base columns\n *\n * A grid with 1-level grouping would have a columnHeaderDepth of 2\n * and column headers at depths 0 and 1\n */\n get columnHeaderMaxDepth(): number {\n return 1;\n }\n\n /**\n * Get the text for the specified cell\n * @param column Column to get the text for\n * @param row Row to get the text for\n * @returns Text for the specified cell\n */\n abstract textForCell(column: ModelIndex, row: ModelIndex): string;\n\n /**\n * Get the character to replace text when truncated for a specific cell.\n * Leave undefined to show text truncated with ellipsis\n * @param column Column to get the truncation character for\n * @param row Row to get the truncation character for\n * @returns Truncation character for the specified cell\n */\n truncationCharForCell(\n column: ModelIndex,\n row: ModelIndex\n ): string | undefined {\n return undefined;\n }\n\n /**\n * Get the text alignment for the specified cell\n * @param column Column to get the alignment for\n * @param row Row to get the alignment for\n * @returns Text alignment for the specified cell\n */\n textAlignForCell(column: ModelIndex, row: ModelIndex): CanvasTextAlign {\n return 'left';\n }\n\n /**\n * Get the color for the text in the specified cell\n * @param column Column to get the color for\n * @param row Row to get the color for\n * @param theme Theme applied to the grid\n * @returns Color for the text in the cell\n */\n colorForCell(\n column: ModelIndex,\n row: ModelIndex,\n theme: GridTheme\n ): GridColor {\n return theme.textColor;\n }\n\n /**\n * Get the background color for the cell\n * @param column Column to get the background color for\n * @param row Row to get the background color for\n * @param theme Theme applied to the grid\n * @returns Background color for the cell\n */\n backgroundColorForCell(\n column: ModelIndex,\n row: ModelIndex,\n theme: GridTheme\n ): NullableGridColor {\n return null;\n }\n\n /**\n * Text for the column header\n * @param column Column to get the header for\n * @param depth Depth to get the header text for. 0 is base columns\n * @returns Text to put in the column header\n */\n abstract textForColumnHeader(\n column: ModelIndex,\n depth?: number\n ): string | undefined;\n\n /** Color for column header\n * @param column Column to get the color for\n * @param depth Header depth to get the color for\n * @returns Color for the header at the depth or null\n */\n colorForColumnHeader(column: ModelIndex, depth = 0): string | null {\n return null;\n }\n\n /**\n * Text for the row header\n * @param row Row to get the header for\n * @returns Text to put in the row header\n */\n textForRowHeader(row: ModelIndex): string {\n return '';\n }\n\n /**\n * Text for the row footer\n * @param row Row to get the footer for\n * @returns Text to put in the row footer\n */\n textForRowFooter(row: ModelIndex): string {\n return '';\n }\n\n /**\n * @param column Column to check\n * @returns True if the column is movable\n */\n isColumnMovable(column: ModelIndex, depth = 0): boolean {\n return true;\n }\n\n /**\n * @param row Row to check\n * @returns True if the row is movable\n */\n isRowMovable(row: ModelIndex): boolean {\n return true;\n }\n\n getColumnHeaderGroup(\n modelIndex: ModelIndex,\n depth: number\n ): IColumnHeaderGroup | undefined {\n return undefined;\n }\n\n getColumnHeaderParentGroup(\n modelIndex: ModelIndex,\n depth: number\n ): IColumnHeaderGroup | undefined {\n return undefined;\n }\n}\n\nexport default GridModel;\n"],"mappings":"AAAA,SAASA,WAAW,QAAe,mBAAmB;AAKtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAeC,SAAS,SAMdD,WAAW,CAAmB;EACtC;;EAGA;;EAGA;EACA,IAAIE,mBAAmB,GAAW;IAChC,OAAO,CAAC;EACV;;EAEA;EACA,IAAIC,sBAAsB,GAAW;IACnC,OAAO,CAAC;EACV;;EAEA;EACA,IAAIC,uBAAuB,GAAW;IACpC,OAAO,CAAC;EACV;;EAEA;EACA,IAAIC,wBAAwB,GAAW;IACrC,OAAO,CAAC;EACV;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,IAAIC,oBAAoB,GAAW;IACjC,OAAO,CAAC;EACV;;EAEA;AACF;AACA;AACA;AACA;AACA;;EAGE;AACF;AACA;AACA;AACA;AACA;AACA;EACEC,qBAAqB,CACnBC,MAAkB,EAClBC,GAAe,EACK;IACpB,OAAOC,SAAS;EAClB;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEC,gBAAgB,CAACH,MAAkB,EAAEC,GAAe,EAAmB;IACrE,OAAO,MAAM;EACf;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEG,YAAY,CACVJ,MAAkB,EAClBC,GAAe,EACfI,KAAgB,EACL;IACX,OAAOA,KAAK,CAACC,SAAS;EACxB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEC,sBAAsB,CACpBP,MAAkB,EAClBC,GAAe,EACfI,KAAgB,EACG;IACnB,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;AACA;;EAME;AACF;AACA;AACA;AACA;EACEG,oBAAoB,CAACR,MAAkB,EAA4B;IAAA,IAA1BS,KAAK,uEAAG,CAAC;IAChD,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;EACEC,gBAAgB,CAACT,GAAe,EAAU;IACxC,OAAO,EAAE;EACX;;EAEA;AACF;AACA;AACA;AACA;EACEU,gBAAgB,CAACV,GAAe,EAAU;IACxC,OAAO,EAAE;EACX;;EAEA;AACF;AACA;AACA;EACEW,eAAe,CAACZ,MAAkB,EAAsB;IAAA,IAApBS,KAAK,uEAAG,CAAC;IAC3C,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;EACEI,YAAY,CAACZ,GAAe,EAAW;IACrC,OAAO,IAAI;EACb;EAEAa,oBAAoB,CAClBC,UAAsB,EACtBN,KAAa,EACmB;IAChC,OAAOP,SAAS;EAClB;EAEAc,0BAA0B,CACxBD,UAAsB,EACtBN,KAAa,EACmB;IAChC,OAAOP,SAAS;EAClB;AACF;AAEA,eAAeT,SAAS"}
1
+ {"version":3,"file":"GridModel.js","names":["EventTarget","find","linkifyFind","memoizeClear","LINK_TRUNCATION_LENGTH","GridModel","text","visibleLength","length","indexOfProceedingWhitespace","slice","search","lengthOfContent","Math","min","contentToCheckForLinks","substring","floatingTopRowCount","floatingBottomRowCount","floatingLeftColumnCount","floatingRightColumnCount","columnHeaderMaxDepth","truncationCharForCell","column","row","undefined","textAlignForCell","colorForCell","theme","textColor","backgroundColorForCell","colorForColumnHeader","depth","textForRowHeader","textForRowFooter","isColumnMovable","isRowMovable","getColumnHeaderGroup","modelIndex","getColumnHeaderParentGroup","tokensForCell","textForCell","getCachedTokensInText"],"sources":["../src/GridModel.ts"],"sourcesContent":["import { EventTarget, Event } from 'event-target-shim';\nimport { find as linkifyFind } from 'linkifyjs';\nimport type { IColumnHeaderGroup } from './ColumnHeaderGroup';\nimport { ModelIndex } from './GridMetrics';\nimport { GridColor, GridTheme, NullableGridColor } from './GridTheme';\nimport memoizeClear from './memoizeClear';\nimport { Token } from './GridUtils';\n\nconst LINK_TRUNCATION_LENGTH = 5000;\n\n/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/**\n * Model for a Grid\n * All of these methods should return very quickly, as they will be called many times in the render cycle.\n * If data needs to be loaded asynchronously, return something immediately, then trigger an event for the table to refresh (Not yet implemented).\n */\nabstract class GridModel<\n TEventMap extends Record<string, Event<string>> = Record<\n string,\n Event<string>\n >,\n TMode extends 'standard' | 'strict' = 'standard'\n> extends EventTarget<TEventMap, TMode> {\n /** Count of rows in the grid */\n abstract get rowCount(): number;\n\n /** Count of columns in the grid */\n abstract get columnCount(): number;\n\n /** Count of rows that are frozen (or 'floating') at the top */\n get floatingTopRowCount(): number {\n return 0;\n }\n\n /** Count of rows that are frozen at the bottom */\n get floatingBottomRowCount(): number {\n return 0;\n }\n\n /** Count of columns that are frozen (or 'floating') at the left */\n get floatingLeftColumnCount(): number {\n return 0;\n }\n\n /** Count of columns that are frozen (or 'floating') at the right */\n get floatingRightColumnCount(): number {\n return 0;\n }\n\n /**\n * How many columns header levels are in the grid\n * Used for column grouping where columns at depth 0 are the base columns\n *\n * A grid with 1-level grouping would have a columnHeaderDepth of 2\n * and column headers at depths 0 and 1\n */\n get columnHeaderMaxDepth(): number {\n return 1;\n }\n\n /**\n * Get the text for the specified cell\n * @param column Column to get the text for\n * @param row Row to get the text for\n * @returns Text for the specified cell\n */\n abstract textForCell(column: ModelIndex, row: ModelIndex): string;\n\n /**\n * Get the character to replace text when truncated for a specific cell.\n * Leave undefined to show text truncated with ellipsis\n * @param column Column to get the truncation character for\n * @param row Row to get the truncation character for\n * @returns Truncation character for the specified cell\n */\n truncationCharForCell(\n column: ModelIndex,\n row: ModelIndex\n ): string | undefined {\n return undefined;\n }\n\n /**\n * Get the text alignment for the specified cell\n * @param column Column to get the alignment for\n * @param row Row to get the alignment for\n * @returns Text alignment for the specified cell\n */\n textAlignForCell(column: ModelIndex, row: ModelIndex): CanvasTextAlign {\n return 'left';\n }\n\n /**\n * Get the color for the text in the specified cell\n * @param column Column to get the color for\n * @param row Row to get the color for\n * @param theme Theme applied to the grid\n * @returns Color for the text in the cell\n */\n colorForCell(\n column: ModelIndex,\n row: ModelIndex,\n theme: GridTheme\n ): GridColor {\n return theme.textColor;\n }\n\n /**\n * Get the background color for the cell\n * @param column Column to get the background color for\n * @param row Row to get the background color for\n * @param theme Theme applied to the grid\n * @returns Background color for the cell\n */\n backgroundColorForCell(\n column: ModelIndex,\n row: ModelIndex,\n theme: GridTheme\n ): NullableGridColor {\n return null;\n }\n\n /**\n * Text for the column header\n * @param column Column to get the header for\n * @param depth Depth to get the header text for. 0 is base columns\n * @returns Text to put in the column header\n */\n abstract textForColumnHeader(\n column: ModelIndex,\n depth?: number\n ): string | undefined;\n\n /** Color for column header\n * @param column Column to get the color for\n * @param depth Header depth to get the color for\n * @returns Color for the header at the depth or null\n */\n colorForColumnHeader(column: ModelIndex, depth = 0): string | null {\n return null;\n }\n\n /**\n * Text for the row header\n * @param row Row to get the header for\n * @returns Text to put in the row header\n */\n textForRowHeader(row: ModelIndex): string {\n return '';\n }\n\n /**\n * Text for the row footer\n * @param row Row to get the footer for\n * @returns Text to put in the row footer\n */\n textForRowFooter(row: ModelIndex): string {\n return '';\n }\n\n /**\n * @param column Column to check\n * @returns True if the column is movable\n */\n isColumnMovable(column: ModelIndex, depth = 0): boolean {\n return true;\n }\n\n /**\n * @param row Row to check\n * @returns True if the row is movable\n */\n isRowMovable(row: ModelIndex): boolean {\n return true;\n }\n\n getColumnHeaderGroup(\n modelIndex: ModelIndex,\n depth: number\n ): IColumnHeaderGroup | undefined {\n return undefined;\n }\n\n getColumnHeaderParentGroup(\n modelIndex: ModelIndex,\n depth: number\n ): IColumnHeaderGroup | undefined {\n return undefined;\n }\n\n /**\n * Gets the tokens in the cell at column and row, based on the visible text\n * @param column The model column\n * @param row The model row\n * @param visibleLength The length of the visible text\n * @returns An array of Tokens in the cell\n */\n tokensForCell(\n column: ModelIndex,\n row: ModelIndex,\n visibleLength: number = LINK_TRUNCATION_LENGTH\n ): Token[] {\n const text = this.textForCell(column, row);\n return this.getCachedTokensInText(text, visibleLength);\n }\n\n getCachedTokensInText = memoizeClear(\n (text: string, visibleLength: number): Token[] => {\n // If no text is truncated, then directly search in text\n if (visibleLength >= text.length) {\n return linkifyFind(text);\n }\n\n // To check for links, we should check to the first space after the truncatedText length\n const indexOfProceedingWhitespace = text\n .slice(visibleLength - 1, LINK_TRUNCATION_LENGTH)\n .search(/\\s/); // index or -1 if not found\n\n let lengthOfContent = visibleLength + indexOfProceedingWhitespace;\n // If it doesn't exist, set lengthOfContent to the minimum between length of the original text and 5000\n if (indexOfProceedingWhitespace === -1) {\n lengthOfContent = Math.min(LINK_TRUNCATION_LENGTH, text.length);\n }\n const contentToCheckForLinks = text.substring(0, lengthOfContent);\n return linkifyFind(contentToCheckForLinks);\n }\n );\n}\n\nexport default GridModel;\n"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { Token, TokenBox } from './GridUtils';
1
2
  import { GridColor, GridColorWay, GridTheme, NullableGridColor } from './GridTheme';
2
3
  import GridModel from './GridModel';
3
4
  import GridRange from './GridRange';
@@ -106,13 +107,12 @@ export declare class GridRenderer {
106
107
  * The textWidth returned is the width that the text can occupy accounting for any other cell markings
107
108
  * The width accounts for tree table indents and cell padding, so it is the width the text may consume
108
109
  *
109
- * @param context Canvas context
110
110
  * @param state GridRenderState to get the text metrics for
111
111
  * @param column Column of cell to get text metrics for
112
112
  * @param row Row of cell to get text metrics for
113
113
  * @returns Object with width, x, and y of the text
114
114
  */
115
- getTextRenderMetrics(context: CanvasRenderingContext2D, state: GridRenderState, column: VisibleIndex, row: VisibleIndex): {
115
+ getTextRenderMetrics(state: GridRenderState, column: VisibleIndex, row: VisibleIndex): {
116
116
  width: number;
117
117
  x: number;
118
118
  y: number;
@@ -183,6 +183,18 @@ export declare class GridRenderer {
183
183
  drawDraggingColumn(context: CanvasRenderingContext2D, state: GridRenderState): void;
184
184
  drawDraggingRow(context: CanvasRenderingContext2D, state: GridRenderState): void;
185
185
  drawScrollBars(context: CanvasRenderingContext2D, state: GridRenderState): void;
186
+ /**
187
+ * Gets the token boxes that are visible in the cell
188
+ * @param column The visible column
189
+ * @param row The visible row
190
+ * @param state The GridRenderState
191
+ * @returns An array of TokenBox of visible tokens or empty array with coordinates relative to gridX and gridY
192
+ */
193
+ getTokenBoxesForVisibleCell(column: VisibleIndex, row: VisibleIndex, state: GridRenderState): TokenBox[];
194
+ /**
195
+ * Returns an array of token boxes with the coordinates relative to the top left corner of the text
196
+ */
197
+ getCachedTokenBoxesForVisibleCell: ((truncatedText: string, tokens: Token[], _font: string, _baseline: CanvasTextBaseline, textHeight: number, context: CanvasRenderingContext2D) => TokenBox[]) & import("@types/memoizee").Memoized<(truncatedText: string, tokens: Token[], _font: string, _baseline: CanvasTextBaseline, textHeight: number, context: CanvasRenderingContext2D) => TokenBox[]>;
186
198
  }
187
199
  export default GridRenderer;
188
200
  //# sourceMappingURL=GridRenderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GridRenderer.d.ts","sourceRoot":"","sources":["../src/GridRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GridRenderer.d.ts","sourceRoot":"","sources":["../src/GridRenderer.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,11 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
2
2
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
3
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
4
4
  import clamp from 'lodash.clamp';
5
- import { ColorUtils } from '@deephaven/utils';
5
+ import { ColorUtils, EMPTY_ARRAY, getOrThrow } from '@deephaven/utils';
6
6
  import memoizeClear from "./memoizeClear.js";
7
7
  import GridUtils from "./GridUtils.js";
8
8
  import GridColorUtils from "./GridColorUtils.js";
9
9
  import { isExpandableGridModel } from "./ExpandableGridModel.js";
10
- import { getOrThrow } from "./GridMetricCalculator.js";
11
10
  import { isEditableGridModel } from "./EditableGridModel.js";
12
11
  import GridColumnSeparatorMouseHandler from "./mouse-handlers/GridColumnSeparatorMouseHandler.js";
13
12
  /* eslint react/destructuring-assignment: "off" */
@@ -38,6 +37,48 @@ export class GridRenderer {
38
37
  _defineProperty(this, "getCachedColorIsDark", memoizeClear(color => ColorUtils.isDark(color), {
39
38
  max: 1000
40
39
  }));
40
+ _defineProperty(this, "getCachedTokenBoxesForVisibleCell", memoizeClear((truncatedText, tokens, _font, _baseline, textHeight, context) => {
41
+ var top = 0;
42
+ var bottom = textHeight;
43
+ var tokenBoxes = [];
44
+
45
+ // The index where the last token ended
46
+ var lastTokenEnd = 0;
47
+ // The width of the text preceding the current token
48
+ var currentTextWidth = 0;
49
+ // Loop through array and push them to array
50
+ for (var i = 0; i < tokens.length; i += 1) {
51
+ var token = tokens[i];
52
+ var {
53
+ start: _start,
54
+ end: _end
55
+ } = token;
56
+ // The last token value is calculated based on the full text so the value needs to be truncated
57
+ var value = _end > truncatedText.length ? truncatedText.substring(_start) : token.value;
58
+
59
+ // Add the width of the text in between this token and the last token
60
+ currentTextWidth += context.measureText(truncatedText.substring(lastTokenEnd, _start)).width;
61
+ var tokenWidth = context.measureText(value).width;
62
+
63
+ // Check if the x position is less than the grid x, then tokenWidth should be shifted by gridX - startX
64
+
65
+ var left = currentTextWidth;
66
+ var right = left + tokenWidth;
67
+ var newTokenBox = {
68
+ x1: left,
69
+ y1: top,
70
+ x2: right,
71
+ y2: bottom,
72
+ token
73
+ };
74
+ tokenBoxes.push(newTokenBox);
75
+ lastTokenEnd = _end;
76
+ currentTextWidth += tokenWidth;
77
+ }
78
+ return tokenBoxes;
79
+ }, {
80
+ max: 10000
81
+ }));
41
82
  }
42
83
  /**
43
84
  * Truncate a string to the specified length and add ellipses if necessary
@@ -780,16 +821,12 @@ export class GridRenderer {
780
821
  * The textWidth returned is the width that the text can occupy accounting for any other cell markings
781
822
  * The width accounts for tree table indents and cell padding, so it is the width the text may consume
782
823
  *
783
- * @param context Canvas context
784
824
  * @param state GridRenderState to get the text metrics for
785
825
  * @param column Column of cell to get text metrics for
786
826
  * @param row Row of cell to get text metrics for
787
827
  * @returns Object with width, x, and y of the text
788
828
  */
789
- getTextRenderMetrics(context, state, column, row) {
790
- var {
791
- textAlign
792
- } = context;
829
+ getTextRenderMetrics(state, column, row) {
793
830
  var {
794
831
  metrics,
795
832
  model,
@@ -800,13 +837,18 @@ export class GridRenderer {
800
837
  allColumnXs,
801
838
  allColumnWidths,
802
839
  allRowYs,
803
- allRowHeights
840
+ allRowHeights,
841
+ modelRows,
842
+ modelColumns
804
843
  } = metrics;
805
844
  var {
806
845
  cellHorizontalPadding,
807
846
  treeDepthIndent,
808
847
  treeHorizontalPadding
809
848
  } = theme;
849
+ var modelRow = getOrThrow(modelRows, row);
850
+ var modelColumn = getOrThrow(modelColumns, column);
851
+ var textAlign = model.textAlignForCell(modelColumn, modelRow);
810
852
  var x = getOrThrow(allColumnXs, column);
811
853
  var y = getOrThrow(allRowYs, row);
812
854
  var columnWidth = getOrThrow(allColumnWidths, column);
@@ -859,16 +901,48 @@ export class GridRenderer {
859
901
  context.textAlign = textAlign;
860
902
  var color = model.colorForCell(modelColumn, modelRow, theme) || textColor;
861
903
  context.fillStyle = color;
904
+ context.save();
862
905
  var {
863
906
  width: textWidth,
864
907
  x: textX,
865
908
  y: textY
866
- } = this.getTextRenderMetrics(context, state, column, row);
909
+ } = this.getTextRenderMetrics(state, column, row);
867
910
  var fontWidth = (_fontWidths$get = fontWidths.get(context.font)) !== null && _fontWidths$get !== void 0 ? _fontWidths$get : GridRenderer.DEFAULT_FONT_WIDTH;
868
911
  var truncatedText = this.getCachedTruncatedString(context, text, textWidth, fontWidth, truncationChar);
912
+ var tokens = model.tokensForCell(modelColumn, modelRow, truncatedText.length);
869
913
  if (truncatedText) {
870
- context.fillText(truncatedText, textX, textY);
914
+ var tokenIndex = 0;
915
+ var textStart = 0;
916
+ var left = textX;
917
+ var {
918
+ actualBoundingBoxDescent
919
+ } = context.measureText(truncatedText);
920
+ while (textStart < truncatedText.length) {
921
+ var _ref, _token$end;
922
+ var nextToken = tokens[tokenIndex];
923
+ var token = textStart === (nextToken === null || nextToken === void 0 ? void 0 : nextToken.start) ? nextToken : null;
924
+ var textEnd = (_ref = (_token$end = token === null || token === void 0 ? void 0 : token.end) !== null && _token$end !== void 0 ? _token$end : nextToken === null || nextToken === void 0 ? void 0 : nextToken.start) !== null && _ref !== void 0 ? _ref : truncatedText.length;
925
+ var value = truncatedText.substring(textStart, textEnd);
926
+ var {
927
+ width
928
+ } = context.measureText(value);
929
+ var widthOfUnderline = value.endsWith('…') ? context.measureText(value.substring(0, value.length - 1)).width : width;
930
+
931
+ // Set the styling based on the token, then draw the text
932
+ if (token != null) {
933
+ context.fillStyle = theme.hyperlinkColor;
934
+ context.fillText(value, left, textY);
935
+ context.fillRect(left, textY + actualBoundingBoxDescent, widthOfUnderline, 1);
936
+ } else {
937
+ context.fillStyle = color;
938
+ context.fillText(value, left, textY);
939
+ }
940
+ left += width;
941
+ textStart = textEnd;
942
+ if (token != null) tokenIndex += 1;
943
+ }
871
944
  }
945
+ context.restore();
872
946
  }
873
947
  if (isFirstColumn && isExpandableGridModel(model) && model.hasExpandableRows) {
874
948
  this.drawCellRowTreeMarker(context, state, row);
@@ -1038,11 +1112,11 @@ export class GridRenderer {
1038
1112
  }
1039
1113
  if (headerSeparatorColor) {
1040
1114
  context.strokeStyle = headerSeparatorColor;
1041
- var hiddenColumns = [...allColumnWidths.entries()].filter(_ref => {
1042
- var [_, w] = _ref;
1115
+ var hiddenColumns = [...allColumnWidths.entries()].filter(_ref2 => {
1116
+ var [_, w] = _ref2;
1043
1117
  return w === 0;
1044
- }).map(_ref2 => {
1045
- var [index] = _ref2;
1118
+ }).map(_ref3 => {
1119
+ var [index] = _ref3;
1046
1120
  return index;
1047
1121
  });
1048
1122
 
@@ -1183,25 +1257,25 @@ export class GridRenderer {
1183
1257
  // The group will be drawn as if it were a column with a max width of the bounds width
1184
1258
  var prevColumnIndex = columnIndex - 1;
1185
1259
  while (prevColumnIndex >= 0 && (columnGroupRight - columnGroupLeft < visibleWidth || columnGroupLeft > minX)) {
1186
- var _modelColumns$get, _ref3, _userColumnWidths$get;
1260
+ var _modelColumns$get, _ref4, _userColumnWidths$get;
1187
1261
  var prevModelIndex = (_modelColumns$get = modelColumns.get(prevColumnIndex)) !== null && _modelColumns$get !== void 0 ? _modelColumns$get : GridUtils.getModelIndex(prevColumnIndex, movedColumns);
1188
1262
  if (prevModelIndex == null || model.textForColumnHeader(prevModelIndex, depth) !== columnGroupName) {
1189
1263
  // Previous column not in the same group
1190
1264
  break;
1191
1265
  }
1192
- var prevColumnWidth = (_ref3 = (_userColumnWidths$get = userColumnWidths.get(prevModelIndex)) !== null && _userColumnWidths$get !== void 0 ? _userColumnWidths$get : allColumnWidths.get(prevColumnIndex)) !== null && _ref3 !== void 0 ? _ref3 : columnWidth;
1266
+ var prevColumnWidth = (_ref4 = (_userColumnWidths$get = userColumnWidths.get(prevModelIndex)) !== null && _userColumnWidths$get !== void 0 ? _userColumnWidths$get : allColumnWidths.get(prevColumnIndex)) !== null && _ref4 !== void 0 ? _ref4 : columnWidth;
1193
1267
  columnGroupLeft -= prevColumnWidth;
1194
1268
  prevColumnIndex -= 1;
1195
1269
  }
1196
1270
  var nextColumnIndex = columnIndex + 1;
1197
1271
  while (nextColumnIndex < columnCount && (columnGroupRight - columnGroupLeft < visibleWidth || columnGroupRight < maxX)) {
1198
- var _modelColumns$get2, _ref4, _userColumnWidths$get2;
1272
+ var _modelColumns$get2, _ref5, _userColumnWidths$get2;
1199
1273
  var nextModelIndex = (_modelColumns$get2 = modelColumns.get(nextColumnIndex)) !== null && _modelColumns$get2 !== void 0 ? _modelColumns$get2 : GridUtils.getModelIndex(nextColumnIndex, movedColumns);
1200
1274
  if (model.textForColumnHeader(nextModelIndex, depth) !== columnGroupName) {
1201
1275
  // Next column not in the same group
1202
1276
  break;
1203
1277
  }
1204
- var nextColumnWidth = (_ref4 = (_userColumnWidths$get2 = userColumnWidths.get(nextModelIndex)) !== null && _userColumnWidths$get2 !== void 0 ? _userColumnWidths$get2 : allColumnWidths.get(nextColumnIndex)) !== null && _ref4 !== void 0 ? _ref4 : columnWidth;
1278
+ var nextColumnWidth = (_ref5 = (_userColumnWidths$get2 = userColumnWidths.get(nextModelIndex)) !== null && _userColumnWidths$get2 !== void 0 ? _userColumnWidths$get2 : allColumnWidths.get(nextColumnIndex)) !== null && _ref5 !== void 0 ? _ref5 : columnWidth;
1205
1279
  columnGroupRight += nextColumnWidth;
1206
1280
  nextColumnIndex += 1;
1207
1281
  }
@@ -2154,6 +2228,73 @@ export class GridRenderer {
2154
2228
  }
2155
2229
  context.translate(-barLeft, -barTop);
2156
2230
  }
2231
+
2232
+ /**
2233
+ * Gets the token boxes that are visible in the cell
2234
+ * @param column The visible column
2235
+ * @param row The visible row
2236
+ * @param state The GridRenderState
2237
+ * @returns An array of TokenBox of visible tokens or empty array with coordinates relative to gridX and gridY
2238
+ */
2239
+ getTokenBoxesForVisibleCell(column, row, state) {
2240
+ var _fontWidths$get3;
2241
+ var {
2242
+ metrics,
2243
+ context,
2244
+ model,
2245
+ theme
2246
+ } = state;
2247
+ if (context == null || metrics == null) {
2248
+ return EMPTY_ARRAY;
2249
+ }
2250
+ var {
2251
+ modelRows,
2252
+ modelColumns
2253
+ } = metrics;
2254
+ var modelRow = getOrThrow(modelRows, row);
2255
+ var modelColumn = getOrThrow(modelColumns, column);
2256
+ var text = model.textForCell(modelColumn, modelRow);
2257
+ var {
2258
+ width: textWidth,
2259
+ x: textX,
2260
+ y: textY
2261
+ } = this.getTextRenderMetrics(state, column, row);
2262
+ var {
2263
+ fontWidths
2264
+ } = metrics;
2265
+
2266
+ // Set the font and baseline and change it back after
2267
+ context.save();
2268
+ this.configureContext(context, state);
2269
+ var fontWidth = (_fontWidths$get3 = fontWidths === null || fontWidths === void 0 ? void 0 : fontWidths.get(context.font)) !== null && _fontWidths$get3 !== void 0 ? _fontWidths$get3 : GridRenderer.DEFAULT_FONT_WIDTH;
2270
+ var truncationChar = model.truncationCharForCell(modelColumn, modelRow);
2271
+ var truncatedText = this.getCachedTruncatedString(context, text, textWidth, fontWidth, truncationChar);
2272
+ var {
2273
+ actualBoundingBoxAscent,
2274
+ actualBoundingBoxDescent
2275
+ } = context.measureText(truncatedText);
2276
+ var textHeight = actualBoundingBoxAscent + actualBoundingBoxDescent;
2277
+ var tokens = model.tokensForCell(modelColumn, modelRow, truncatedText.length);
2278
+
2279
+ // Check if the truncated text contains a link
2280
+ if (tokens.length === 0) {
2281
+ context.restore();
2282
+ return EMPTY_ARRAY;
2283
+ }
2284
+ var cachedTokenBoxes = this.getCachedTokenBoxesForVisibleCell(truncatedText, tokens, theme.font, 'middle', textHeight, context).map(tokenBox => ({
2285
+ x1: tokenBox.x1 + textX,
2286
+ y1: tokenBox.y1 + (textY - actualBoundingBoxAscent),
2287
+ x2: tokenBox.x2 + textX,
2288
+ y2: tokenBox.y2 + (textY - actualBoundingBoxAscent),
2289
+ token: tokenBox.token
2290
+ }));
2291
+ context.restore();
2292
+ return cachedTokenBoxes;
2293
+ }
2294
+
2295
+ /**
2296
+ * Returns an array of token boxes with the coordinates relative to the top left corner of the text
2297
+ */
2157
2298
  }
2158
2299
  _defineProperty(GridRenderer, "DEFAULT_FONT_WIDTH", 10);
2159
2300
  _defineProperty(GridRenderer, "DEFAULT_EDGE_RADIUS", 2);