@deephaven/grid 0.104.1-virtual-webgl.3 → 0.105.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.
@@ -1 +1 @@
1
- {"version":3,"file":"TextCellRenderer.d.ts","sourceRoot":"","sources":["../src/TextCellRenderer.ts"],"names":[],"mappings":"AAEA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAkB,EAAE,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,KAAK,oBAAoB,MAAM,wBAAwB,CAAC;AAE/D,cAAM,gBAAiB,SAAQ,YAAa,YAAW,oBAAoB;IACzE,eAAe,CACb,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,YAAY,GAChB,IAAI;IA4FP;;;;;;OAMG;IACH,2BAA2B,CACzB,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,eAAe,GACrB,QAAQ,EAAE;IAsEb,gBAAgB,CACd,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,eAAe,GACrB,IAAI;IAOP;;OAEG;IACH,iCAAiC,mBAEd,MAAM,UACb,KAAK,EAAE,SAGR,MAAM,aACF,kBAAkB,cACjB,MAAM,WACT,wBAAwB,KAChC,QAAQ,EAAE,uDARI,MAAM,UACb,KAAK,EAAE,SAGR,MAAM,aACF,kBAAkB,cACjB,MAAM,WACT,wBAAwB,KAChC,QAAQ,EAAE,EAgDb;CACH;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"TextCellRenderer.d.ts","sourceRoot":"","sources":["../src/TextCellRenderer.ts"],"names":[],"mappings":"AAEA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAkB,EAAE,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,KAAK,oBAAoB,MAAM,wBAAwB,CAAC;AAE/D,cAAM,gBAAiB,SAAQ,YAAa,YAAW,oBAAoB;IACzE,eAAe,CACb,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,YAAY,GAChB,IAAI;IAoGP;;;;;;OAMG;IACH,2BAA2B,CACzB,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,eAAe,GACrB,QAAQ,EAAE;IAwEb,gBAAgB,CACd,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,eAAe,GACrB,IAAI;IAOP;;OAEG;IACH,iCAAiC,mBAEd,MAAM,UACb,KAAK,EAAE,SAGR,MAAM,aACF,kBAAkB,cACjB,MAAM,WACT,wBAAwB,KAChC,QAAQ,EAAE,uDARI,MAAM,UACb,KAAK,EAAE,SAGR,MAAM,aACF,kBAAkB,cACjB,MAAM,WACT,wBAAwB,KAChC,QAAQ,EAAE,EAgDb;CACH;AAED,eAAe,gBAAgB,CAAC"}
@@ -5,7 +5,6 @@ function _toPrimitive(input, hint) { if (typeof input !== "object" || input ===
5
5
  import { EMPTY_ARRAY, getOrThrow } from '@deephaven/utils';
6
6
  import CellRenderer from "./CellRenderer.js";
7
7
  import { isExpandableGridModel } from "./ExpandableGridModel.js";
8
- import { DEFAULT_FONT_WIDTH } from "./GridRendererTypes.js";
9
8
  import GridUtils from "./GridUtils.js";
10
9
  import memoizeClear from "./memoizeClear.js";
11
10
  class TextCellRenderer extends CellRenderer {
@@ -61,7 +60,8 @@ class TextCellRenderer extends CellRenderer {
61
60
  theme
62
61
  } = state;
63
62
  var {
64
- fontWidths,
63
+ fontWidthsLower,
64
+ fontWidthsUpper,
65
65
  modelColumns,
66
66
  modelRows,
67
67
  allRowHeights,
@@ -77,7 +77,6 @@ class TextCellRenderer extends CellRenderer {
77
77
  var text = model.textForCell(modelColumn, modelRow);
78
78
  var truncationChar = model.truncationCharForCell(modelColumn, modelRow);
79
79
  if (text && rowHeight > 0) {
80
- var _fontWidths$get;
81
80
  var textAlign = model.textAlignForCell(modelColumn, modelRow) || 'left';
82
81
  context.textAlign = textAlign;
83
82
  var color = model.colorForCell(modelColumn, modelRow, theme) || textColor;
@@ -88,8 +87,9 @@ class TextCellRenderer extends CellRenderer {
88
87
  x: textX,
89
88
  y: textY
90
89
  } = GridUtils.getTextRenderMetrics(state, column, row);
91
- var fontWidth = (_fontWidths$get = fontWidths.get(context.font)) !== null && _fontWidths$get !== void 0 ? _fontWidths$get : DEFAULT_FONT_WIDTH;
92
- var truncatedText = this.getCachedTruncatedString(context, text, textWidth, fontWidth, truncationChar);
90
+ var fontWidthLower = fontWidthsLower.get(context.font);
91
+ var fontWidthUpper = fontWidthsUpper.get(context.font);
92
+ var truncatedText = this.getCachedTruncatedString(context, text, textWidth, fontWidthLower, fontWidthUpper, truncationChar);
93
93
  var tokens = model.tokensForCell(modelColumn, modelRow, truncatedText.length);
94
94
  if (truncatedText) {
95
95
  var tokenIndex = 0;
@@ -107,7 +107,7 @@ class TextCellRenderer extends CellRenderer {
107
107
  var {
108
108
  width
109
109
  } = context.measureText(value);
110
- var widthOfUnderline = value.endsWith('…') ? context.measureText(value.substring(0, value.length - 1)).width : width;
110
+ var widthOfUnderline = value.endsWith('…') ? width - context.measureText('…').width : width;
111
111
 
112
112
  // Set the styling based on the token, then draw the text
113
113
  if (token != null) {
@@ -138,7 +138,6 @@ class TextCellRenderer extends CellRenderer {
138
138
  * @returns An array of TokenBox of visible tokens or empty array with coordinates relative to gridX and gridY
139
139
  */
140
140
  getTokenBoxesForVisibleCell(column, row, state) {
141
- var _fontWidths$get2;
142
141
  var {
143
142
  metrics,
144
143
  context,
@@ -161,15 +160,17 @@ class TextCellRenderer extends CellRenderer {
161
160
  y: textY
162
161
  } = GridUtils.getTextRenderMetrics(state, column, row);
163
162
  var {
164
- fontWidths
163
+ fontWidthsLower,
164
+ fontWidthsUpper
165
165
  } = metrics;
166
166
 
167
167
  // Set the font and baseline and change it back after
168
168
  context.save();
169
169
  this.configureContext(context, state);
170
- var fontWidth = (_fontWidths$get2 = fontWidths === null || fontWidths === void 0 ? void 0 : fontWidths.get(context.font)) !== null && _fontWidths$get2 !== void 0 ? _fontWidths$get2 : DEFAULT_FONT_WIDTH;
170
+ var fontWidthLower = fontWidthsLower.get(context.font);
171
+ var fontWidthUpper = fontWidthsUpper.get(context.font);
171
172
  var truncationChar = model.truncationCharForCell(modelColumn, modelRow);
172
- var truncatedText = this.getCachedTruncatedString(context, text, textWidth, fontWidth, truncationChar);
173
+ var truncatedText = this.getCachedTruncatedString(context, text, textWidth, fontWidthLower, fontWidthUpper, truncationChar);
173
174
  var {
174
175
  actualBoundingBoxAscent,
175
176
  actualBoundingBoxDescent
@@ -1 +1 @@
1
- {"version":3,"file":"TextCellRenderer.js","names":["EMPTY_ARRAY","getOrThrow","CellRenderer","isExpandableGridModel","DEFAULT_FONT_WIDTH","GridUtils","memoizeClear","TextCellRenderer","constructor","arguments","_defineProperty","truncatedText","tokens","_font","_baseline","textHeight","context","top","bottom","tokenBoxes","lastTokenEnd","currentTextWidth","i","length","token","start","end","value","substring","measureText","width","tokenWidth","left","right","newTokenBox","x1","y1","x2","y2","push","max","drawCellContent","state","column","row","metrics","model","theme","fontWidths","modelColumns","modelRows","allRowHeights","firstColumn","isFirstColumn","textColor","rowHeight","modelRow","modelColumn","text","textForCell","truncationChar","truncationCharForCell","_fontWidths$get","textAlign","textAlignForCell","color","colorForCell","fillStyle","save","textWidth","x","textX","y","textY","getTextRenderMetrics","fontWidth","get","font","getCachedTruncatedString","tokensForCell","tokenIndex","textStart","actualBoundingBoxDescent","_ref","_token$end","nextToken","textEnd","widthOfUnderline","endsWith","hyperlinkColor","fillText","fillRect","restore","hasExpandableRows","drawCellRowTreeMarker","getTokenBoxesForVisibleCell","_fontWidths$get2","configureContext","actualBoundingBoxAscent","cachedTokenBoxes","getCachedTokenBoxesForVisibleCell","map","tokenBox","textBaseline","lineCap"],"sources":["../src/TextCellRenderer.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport { EMPTY_ARRAY, getOrThrow } from '@deephaven/utils';\nimport CellRenderer from './CellRenderer';\nimport { isExpandableGridModel } from './ExpandableGridModel';\nimport { type VisibleIndex } from './GridMetrics';\nimport { DEFAULT_FONT_WIDTH, type GridRenderState } from './GridRendererTypes';\nimport GridUtils, { type TokenBox, type Token } from './GridUtils';\nimport memoizeClear from './memoizeClear';\nimport type TokenBoxCellRenderer from './TokenBoxCellRenderer';\n\nclass TextCellRenderer extends CellRenderer implements TokenBoxCellRenderer {\n drawCellContent(\n context: CanvasRenderingContext2D,\n state: GridRenderState,\n column: VisibleIndex,\n row: VisibleIndex\n ): void {\n const { metrics, model, theme } = state;\n const { fontWidths, modelColumns, modelRows, allRowHeights, firstColumn } =\n metrics;\n const isFirstColumn = column === firstColumn;\n const { textColor } = theme;\n const rowHeight = getOrThrow(allRowHeights, row);\n const modelRow = getOrThrow(modelRows, row);\n const modelColumn = getOrThrow(modelColumns, column);\n const text = model.textForCell(modelColumn, modelRow);\n const truncationChar = model.truncationCharForCell(modelColumn, modelRow);\n\n if (text && rowHeight > 0) {\n const textAlign = model.textAlignForCell(modelColumn, modelRow) || 'left';\n context.textAlign = textAlign;\n\n const color =\n model.colorForCell(modelColumn, modelRow, theme) || textColor;\n context.fillStyle = color;\n\n context.save();\n\n const {\n width: textWidth,\n x: textX,\n y: textY,\n } = GridUtils.getTextRenderMetrics(state, column, row);\n\n const fontWidth = fontWidths.get(context.font) ?? DEFAULT_FONT_WIDTH;\n const truncatedText = this.getCachedTruncatedString(\n context,\n text,\n textWidth,\n fontWidth,\n truncationChar\n );\n\n const tokens = model.tokensForCell(\n modelColumn,\n modelRow,\n truncatedText.length\n );\n\n if (truncatedText) {\n let tokenIndex = 0;\n let textStart = 0;\n let left = textX;\n const { actualBoundingBoxDescent } = context.measureText(truncatedText);\n\n while (textStart < truncatedText.length) {\n const nextToken = tokens[tokenIndex];\n const token = textStart === nextToken?.start ? nextToken : null;\n const textEnd =\n token?.end ?? nextToken?.start ?? truncatedText.length;\n const value = truncatedText.substring(textStart, textEnd);\n const { width } = context.measureText(value);\n const widthOfUnderline = value.endsWith('…')\n ? context.measureText(value.substring(0, value.length - 1)).width\n : width;\n\n // Set the styling based on the token, then draw the text\n if (token != null) {\n context.fillStyle = theme.hyperlinkColor;\n context.fillText(value, left, textY);\n context.fillRect(\n left,\n textY + actualBoundingBoxDescent,\n widthOfUnderline,\n 1\n );\n } else {\n context.fillStyle = color;\n context.fillText(value, left, textY);\n }\n\n left += width;\n textStart = textEnd;\n if (token != null) tokenIndex += 1;\n }\n }\n context.restore();\n }\n\n if (\n isFirstColumn &&\n isExpandableGridModel(model) &&\n model.hasExpandableRows\n ) {\n this.drawCellRowTreeMarker(context, state, row);\n }\n }\n\n /**\n * Gets the token boxes that are visible in the cell\n * @param column The visible column\n * @param row The visible row\n * @param state The GridRenderState\n * @returns An array of TokenBox of visible tokens or empty array with coordinates relative to gridX and gridY\n */\n getTokenBoxesForVisibleCell(\n column: VisibleIndex,\n row: VisibleIndex,\n state: GridRenderState\n ): TokenBox[] {\n const { metrics, context, model, theme } = state;\n\n if (context == null || metrics == null) {\n return EMPTY_ARRAY as unknown as TokenBox[];\n }\n\n const { modelRows, modelColumns } = metrics;\n const modelRow = getOrThrow(modelRows, row);\n const modelColumn = getOrThrow(modelColumns, column);\n\n const text = model.textForCell(modelColumn, modelRow);\n const {\n width: textWidth,\n x: textX,\n y: textY,\n } = GridUtils.getTextRenderMetrics(state, column, row);\n\n const { fontWidths } = metrics;\n\n // Set the font and baseline and change it back after\n context.save();\n this.configureContext(context, state);\n\n const fontWidth = fontWidths?.get(context.font) ?? DEFAULT_FONT_WIDTH;\n const truncationChar = model.truncationCharForCell(modelColumn, modelRow);\n const truncatedText = this.getCachedTruncatedString(\n context,\n text,\n textWidth,\n fontWidth,\n truncationChar\n );\n\n const { actualBoundingBoxAscent, actualBoundingBoxDescent } =\n context.measureText(truncatedText);\n const textHeight = actualBoundingBoxAscent + actualBoundingBoxDescent;\n\n const tokens = model.tokensForCell(\n modelColumn,\n modelRow,\n truncatedText.length\n );\n\n // Check if the truncated text contains a link\n if (tokens.length === 0) {\n context.restore();\n return EMPTY_ARRAY as unknown as TokenBox[];\n }\n\n const cachedTokenBoxes = this.getCachedTokenBoxesForVisibleCell(\n truncatedText,\n tokens,\n theme.font,\n 'middle',\n textHeight,\n context\n ).map(tokenBox => ({\n x1: tokenBox.x1 + textX,\n y1: tokenBox.y1 + (textY - actualBoundingBoxAscent),\n x2: tokenBox.x2 + textX,\n y2: tokenBox.y2 + (textY - actualBoundingBoxAscent),\n token: tokenBox.token,\n }));\n\n context.restore();\n\n return cachedTokenBoxes;\n }\n\n configureContext(\n context: CanvasRenderingContext2D,\n state: GridRenderState\n ): void {\n const { theme } = state;\n context.font = theme.font;\n context.textBaseline = 'middle';\n context.lineCap = 'butt';\n }\n\n /**\n * Returns an array of token boxes with the coordinates relative to the top left corner of the text\n */\n getCachedTokenBoxesForVisibleCell = memoizeClear(\n (\n truncatedText: string,\n tokens: Token[],\n // _font and _baseline are passed in so value is re-calculated when they change\n // They should already be set on the `context`, so they are not used in this method\n _font: string,\n _baseline: CanvasTextBaseline,\n textHeight: number,\n context: CanvasRenderingContext2D\n ): TokenBox[] => {\n const top = 0;\n const bottom = textHeight;\n\n const tokenBoxes: TokenBox[] = [];\n\n // The index where the last token ended\n let lastTokenEnd = 0;\n // The width of the text preceding the current token\n let currentTextWidth = 0;\n // Loop through array and push them to array\n for (let i = 0; i < tokens.length; i += 1) {\n const token = tokens[i];\n const { start, end } = token;\n // The last token value is calculated based on the full text so the value needs to be truncated\n const value =\n end > truncatedText.length\n ? truncatedText.substring(start)\n : token.value;\n\n // Add the width of the text in between this token and the last token\n currentTextWidth += context.measureText(\n truncatedText.substring(lastTokenEnd, start)\n ).width;\n const tokenWidth = context.measureText(value).width;\n\n // Check if the x position is less than the grid x, then tokenWidth should be shifted by gridX - startX\n\n const left = currentTextWidth;\n const right = left + tokenWidth;\n\n const newTokenBox: TokenBox = {\n x1: left,\n y1: top,\n x2: right,\n y2: bottom,\n token,\n };\n\n tokenBoxes.push(newTokenBox);\n\n lastTokenEnd = end;\n currentTextWidth += tokenWidth;\n }\n\n return tokenBoxes;\n },\n { max: 10000 }\n );\n}\n\nexport default TextCellRenderer;\n"],"mappings":"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"}
1
+ {"version":3,"file":"TextCellRenderer.js","names":["EMPTY_ARRAY","getOrThrow","CellRenderer","isExpandableGridModel","GridUtils","memoizeClear","TextCellRenderer","constructor","arguments","_defineProperty","truncatedText","tokens","_font","_baseline","textHeight","context","top","bottom","tokenBoxes","lastTokenEnd","currentTextWidth","i","length","token","start","end","value","substring","measureText","width","tokenWidth","left","right","newTokenBox","x1","y1","x2","y2","push","max","drawCellContent","state","column","row","metrics","model","theme","fontWidthsLower","fontWidthsUpper","modelColumns","modelRows","allRowHeights","firstColumn","isFirstColumn","textColor","rowHeight","modelRow","modelColumn","text","textForCell","truncationChar","truncationCharForCell","textAlign","textAlignForCell","color","colorForCell","fillStyle","save","textWidth","x","textX","y","textY","getTextRenderMetrics","fontWidthLower","get","font","fontWidthUpper","getCachedTruncatedString","tokensForCell","tokenIndex","textStart","actualBoundingBoxDescent","_ref","_token$end","nextToken","textEnd","widthOfUnderline","endsWith","hyperlinkColor","fillText","fillRect","restore","hasExpandableRows","drawCellRowTreeMarker","getTokenBoxesForVisibleCell","configureContext","actualBoundingBoxAscent","cachedTokenBoxes","getCachedTokenBoxesForVisibleCell","map","tokenBox","textBaseline","lineCap"],"sources":["../src/TextCellRenderer.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport { EMPTY_ARRAY, getOrThrow } from '@deephaven/utils';\nimport CellRenderer from './CellRenderer';\nimport { isExpandableGridModel } from './ExpandableGridModel';\nimport { type VisibleIndex } from './GridMetrics';\nimport { type GridRenderState } from './GridRendererTypes';\nimport GridUtils, { type TokenBox, type Token } from './GridUtils';\nimport memoizeClear from './memoizeClear';\nimport type TokenBoxCellRenderer from './TokenBoxCellRenderer';\n\nclass TextCellRenderer extends CellRenderer implements TokenBoxCellRenderer {\n drawCellContent(\n context: CanvasRenderingContext2D,\n state: GridRenderState,\n column: VisibleIndex,\n row: VisibleIndex\n ): void {\n const { metrics, model, theme } = state;\n const {\n fontWidthsLower,\n fontWidthsUpper,\n modelColumns,\n modelRows,\n allRowHeights,\n firstColumn,\n } = metrics;\n const isFirstColumn = column === firstColumn;\n const { textColor } = theme;\n const rowHeight = getOrThrow(allRowHeights, row);\n const modelRow = getOrThrow(modelRows, row);\n const modelColumn = getOrThrow(modelColumns, column);\n const text = model.textForCell(modelColumn, modelRow);\n const truncationChar = model.truncationCharForCell(modelColumn, modelRow);\n\n if (text && rowHeight > 0) {\n const textAlign = model.textAlignForCell(modelColumn, modelRow) || 'left';\n context.textAlign = textAlign;\n\n const color =\n model.colorForCell(modelColumn, modelRow, theme) || textColor;\n context.fillStyle = color;\n\n context.save();\n\n const {\n width: textWidth,\n x: textX,\n y: textY,\n } = GridUtils.getTextRenderMetrics(state, column, row);\n\n const fontWidthLower = fontWidthsLower.get(context.font);\n const fontWidthUpper = fontWidthsUpper.get(context.font);\n const truncatedText = this.getCachedTruncatedString(\n context,\n text,\n textWidth,\n fontWidthLower,\n fontWidthUpper,\n truncationChar\n );\n\n const tokens = model.tokensForCell(\n modelColumn,\n modelRow,\n truncatedText.length\n );\n\n if (truncatedText) {\n let tokenIndex = 0;\n let textStart = 0;\n let left = textX;\n const { actualBoundingBoxDescent } = context.measureText(truncatedText);\n\n while (textStart < truncatedText.length) {\n const nextToken = tokens[tokenIndex];\n const token = textStart === nextToken?.start ? nextToken : null;\n const textEnd =\n token?.end ?? nextToken?.start ?? truncatedText.length;\n const value = truncatedText.substring(textStart, textEnd);\n const { width } = context.measureText(value);\n const widthOfUnderline = value.endsWith('…')\n ? width - context.measureText('…').width\n : width;\n\n // Set the styling based on the token, then draw the text\n if (token != null) {\n context.fillStyle = theme.hyperlinkColor;\n context.fillText(value, left, textY);\n context.fillRect(\n left,\n textY + actualBoundingBoxDescent,\n widthOfUnderline,\n 1\n );\n } else {\n context.fillStyle = color;\n context.fillText(value, left, textY);\n }\n\n left += width;\n textStart = textEnd;\n if (token != null) tokenIndex += 1;\n }\n }\n context.restore();\n }\n\n if (\n isFirstColumn &&\n isExpandableGridModel(model) &&\n model.hasExpandableRows\n ) {\n this.drawCellRowTreeMarker(context, state, row);\n }\n }\n\n /**\n * Gets the token boxes that are visible in the cell\n * @param column The visible column\n * @param row The visible row\n * @param state The GridRenderState\n * @returns An array of TokenBox of visible tokens or empty array with coordinates relative to gridX and gridY\n */\n getTokenBoxesForVisibleCell(\n column: VisibleIndex,\n row: VisibleIndex,\n state: GridRenderState\n ): TokenBox[] {\n const { metrics, context, model, theme } = state;\n\n if (context == null || metrics == null) {\n return EMPTY_ARRAY as unknown as TokenBox[];\n }\n\n const { modelRows, modelColumns } = metrics;\n const modelRow = getOrThrow(modelRows, row);\n const modelColumn = getOrThrow(modelColumns, column);\n\n const text = model.textForCell(modelColumn, modelRow);\n const {\n width: textWidth,\n x: textX,\n y: textY,\n } = GridUtils.getTextRenderMetrics(state, column, row);\n\n const { fontWidthsLower, fontWidthsUpper } = metrics;\n\n // Set the font and baseline and change it back after\n context.save();\n this.configureContext(context, state);\n\n const fontWidthLower = fontWidthsLower.get(context.font);\n const fontWidthUpper = fontWidthsUpper.get(context.font);\n const truncationChar = model.truncationCharForCell(modelColumn, modelRow);\n const truncatedText = this.getCachedTruncatedString(\n context,\n text,\n textWidth,\n fontWidthLower,\n fontWidthUpper,\n truncationChar\n );\n\n const { actualBoundingBoxAscent, actualBoundingBoxDescent } =\n context.measureText(truncatedText);\n const textHeight = actualBoundingBoxAscent + actualBoundingBoxDescent;\n\n const tokens = model.tokensForCell(\n modelColumn,\n modelRow,\n truncatedText.length\n );\n\n // Check if the truncated text contains a link\n if (tokens.length === 0) {\n context.restore();\n return EMPTY_ARRAY as unknown as TokenBox[];\n }\n\n const cachedTokenBoxes = this.getCachedTokenBoxesForVisibleCell(\n truncatedText,\n tokens,\n theme.font,\n 'middle',\n textHeight,\n context\n ).map(tokenBox => ({\n x1: tokenBox.x1 + textX,\n y1: tokenBox.y1 + (textY - actualBoundingBoxAscent),\n x2: tokenBox.x2 + textX,\n y2: tokenBox.y2 + (textY - actualBoundingBoxAscent),\n token: tokenBox.token,\n }));\n\n context.restore();\n\n return cachedTokenBoxes;\n }\n\n configureContext(\n context: CanvasRenderingContext2D,\n state: GridRenderState\n ): void {\n const { theme } = state;\n context.font = theme.font;\n context.textBaseline = 'middle';\n context.lineCap = 'butt';\n }\n\n /**\n * Returns an array of token boxes with the coordinates relative to the top left corner of the text\n */\n getCachedTokenBoxesForVisibleCell = memoizeClear(\n (\n truncatedText: string,\n tokens: Token[],\n // _font and _baseline are passed in so value is re-calculated when they change\n // They should already be set on the `context`, so they are not used in this method\n _font: string,\n _baseline: CanvasTextBaseline,\n textHeight: number,\n context: CanvasRenderingContext2D\n ): TokenBox[] => {\n const top = 0;\n const bottom = textHeight;\n\n const tokenBoxes: TokenBox[] = [];\n\n // The index where the last token ended\n let lastTokenEnd = 0;\n // The width of the text preceding the current token\n let currentTextWidth = 0;\n // Loop through array and push them to array\n for (let i = 0; i < tokens.length; i += 1) {\n const token = tokens[i];\n const { start, end } = token;\n // The last token value is calculated based on the full text so the value needs to be truncated\n const value =\n end > truncatedText.length\n ? truncatedText.substring(start)\n : token.value;\n\n // Add the width of the text in between this token and the last token\n currentTextWidth += context.measureText(\n truncatedText.substring(lastTokenEnd, start)\n ).width;\n const tokenWidth = context.measureText(value).width;\n\n // Check if the x position is less than the grid x, then tokenWidth should be shifted by gridX - startX\n\n const left = currentTextWidth;\n const right = left + tokenWidth;\n\n const newTokenBox: TokenBox = {\n x1: left,\n y1: top,\n x2: right,\n y2: bottom,\n token,\n };\n\n tokenBoxes.push(newTokenBox);\n\n lastTokenEnd = end;\n currentTextWidth += tokenWidth;\n }\n\n return tokenBoxes;\n },\n { max: 10000 }\n );\n}\n\nexport default TextCellRenderer;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/grid",
3
- "version": "0.104.1-virtual-webgl.3+931a44ad",
3
+ "version": "0.105.0",
4
4
  "description": "Deephaven React grid component",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -31,7 +31,7 @@
31
31
  "*.css"
32
32
  ],
33
33
  "dependencies": {
34
- "@deephaven/utils": "^0.104.1-virtual-webgl.3+931a44ad",
34
+ "@deephaven/utils": "^0.105.0",
35
35
  "classnames": "^2.3.1",
36
36
  "color-convert": "^2.0.1",
37
37
  "event-target-shim": "^6.0.2",
@@ -44,5 +44,5 @@
44
44
  "publishConfig": {
45
45
  "access": "public"
46
46
  },
47
- "gitHead": "931a44ad0818885f6241d946ebd8a1993a73a28c"
47
+ "gitHead": "97c59b021737c590429aa58b65b970afc99fda23"
48
48
  }