@datagrok-libraries/bio 5.53.4 → 5.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@datagrok-libraries/bio",
3
3
  "author": {
4
- "name": "Leonid Stolbov",
5
- "email": "lstolbov@datagrok.ai"
4
+ "name": "Davit Rizhinashvili",
5
+ "email": "drizhinashvili@datagrok.ai"
6
6
  },
7
7
  "publishConfig": {
8
8
  "access": "public"
9
9
  },
10
10
  "friendlyName": "Datagrok bio library",
11
- "version": "5.53.4",
11
+ "version": "5.54.0",
12
12
  "description": "Bio utilities, types supporting Macromolecule, Molecule3D data",
13
13
  "dependencies": {
14
14
  "@datagrok-libraries/chem-meta": "^1.2.7",
@@ -36,7 +36,7 @@
36
36
  "@types/wu": "^2.1.44",
37
37
  "@typescript-eslint/eslint-plugin": "^8.8.1",
38
38
  "@typescript-eslint/parser": "^8.8.1",
39
- "datagrok-tools": "latest",
39
+ "datagrok-tools": "4.14.9",
40
40
  "eslint": "8.57.1",
41
41
  "eslint-config-google": "^0.14.0",
42
42
  "eslint-plugin-deprecation": "^3.0.0",
@@ -49,7 +49,7 @@
49
49
  "link-utils": "npm link @datagrok-libraries/utils",
50
50
  "link-all": "npm link @datagrok-libraries/chem-meta datagrok-api @datagrok-libraries/gridext @datagrok-libraries/utils @datagrok-libraries/ml",
51
51
  "build-bio": "git clean -f -X -d ./src && tsc",
52
- "build": "tsc",
52
+ "build": "grok check --soft && tsc",
53
53
  "build-all": "npm --prefix ./../../libraries/chem-meta run build && npm --prefix ./../../js-api run build && npm --prefix ./../../libraries/gridext run build && npm --prefix ./../../libraries/utils run build && npm --prefix ./../../libraries/ml run build && npm run build",
54
54
  "lint": "eslint \"./src/**/*.ts\"",
55
55
  "lint-fix": "eslint \"./src/**/*.ts\" --fix"
@@ -18,4 +18,9 @@ export declare const enum tempTAGS {
18
18
  referenceSequence = "reference-sequence",
19
19
  currentWord = "current-word"
20
20
  }
21
+ export declare const MULTILINE_TAGS: {
22
+ renderMultiline: string;
23
+ monomersPerLine: string;
24
+ maxVisibleLines: string;
25
+ };
21
26
  //# sourceMappingURL=cell-renderer-consts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cell-renderer-consts.d.ts","sourceRoot":"","sources":["cell-renderer-consts.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,4BAA4B;;;CAGxC,CAAC;AAEF,kDAAkD;AAClD,0BAAkB,SAAS;IACzB,gBAAgB,sCAAsC;IACtD,SAAS,+BAA+B;IACxC,kBAAkB,wCAAwC;IAC1D,mBAAmB,yCAAyC;IAC5D,SAAS,+BAA+B;IACxC,aAAa,mCAAmC;IAChD,QAAQ,8BAA8B;IAEtC,uBAAuB,qCAAqC;IAC5D,iBAAiB,uCAAuC;CACzD;AAED,0BAAkB,QAAQ;IACxB,iBAAiB,uBAAuB;IACxC,WAAW,iBAAiB;CAC7B"}
1
+ {"version":3,"file":"cell-renderer-consts.d.ts","sourceRoot":"","sources":["cell-renderer-consts.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,4BAA4B;;;CAGxC,CAAC;AAEF,kDAAkD;AAClD,0BAAkB,SAAS;IACzB,gBAAgB,sCAAsC;IACtD,SAAS,+BAA+B;IACxC,kBAAkB,wCAAwC;IAC1D,mBAAmB,yCAAyC;IAC5D,SAAS,+BAA+B;IACxC,aAAa,mCAAmC;IAChD,QAAQ,8BAA8B;IAEtC,uBAAuB,qCAAqC;IAC5D,iBAAiB,uCAAuC;CACzD;AAED,0BAAkB,QAAQ;IACxB,iBAAiB,uBAAuB;IACxC,WAAW,iBAAiB;CAC7B;AAED,eAAO,MAAM,cAAc;;;;CAI1B,CAAC"}
@@ -2,4 +2,9 @@ export const rendererSettingsChangedState = {
2
2
  true: '1',
3
3
  false: '0',
4
4
  };
5
+ export const MULTILINE_TAGS = {
6
+ renderMultiline: '.mm.cellRenderer.renderMultiline',
7
+ monomersPerLine: '.mm.cellRenderer.monomersPerLine',
8
+ maxVisibleLines: '.mm.cellRenderer.maxVisibleLines'
9
+ };
5
10
  //# sourceMappingURL=cell-renderer-consts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cell-renderer-consts.js","sourceRoot":"","sources":["cell-renderer-consts.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,IAAI,EAAE,GAAG;IACT,KAAK,EAAE,GAAG;CACX,CAAC"}
1
+ {"version":3,"file":"cell-renderer-consts.js","sourceRoot":"","sources":["cell-renderer-consts.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,IAAI,EAAE,GAAG;IACT,KAAK,EAAE,GAAG;CACX,CAAC;AAqBF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,eAAe,EAAE,kCAAkC;IACnD,eAAe,EAAE,kCAAkC;IACnD,eAAe,EAAE,kCAAkC;CACpD,CAAC"}
@@ -29,10 +29,17 @@ export declare class MonomerPlacer extends CellRendererBackBase<string> {
29
29
  _monomerStructureMap: {
30
30
  [key: string]: HTMLElement;
31
31
  };
32
+ private _ellipsisBounds;
33
+ private _totalLinesNeeded;
34
+ private _lineHeight;
35
+ private _cellBounds;
32
36
  private seqHelper;
33
37
  private sysMonomerLib;
34
38
  /** View is required to subscribe and handle for data frame changes */
35
39
  constructor(gridCol: DG.GridColumn | null, tableCol: DG.Column<string>, logger: ILogger, monomerLengthLimit: number, propsProvider: () => MonomerPlacerProps);
40
+ private calculateFontBasedSpacing;
41
+ private shouldUseMultilineRendering;
42
+ private calculateMultiLineLayoutDynamic;
36
43
  init(): Promise<void>;
37
44
  static getFontSettings(tableCol?: DG.Column): {
38
45
  font: string;
@@ -45,8 +52,8 @@ export declare class MonomerPlacer extends CellRendererBackBase<string> {
45
52
  /** Returns monomers lengths of the {@link rowIdx} and cumulative sums for borders, monomer places */
46
53
  getCellMonomerLengths(rowIdx: number, newWidth: number): [number[], number[]];
47
54
  private getSummedMonomerLengths;
48
- private getCellMonomerLengthsForSeq;
49
55
  private getCellMonomerLengthsForSeqValue;
56
+ private getCellMonomerLengthsForSeq;
50
57
  private getCellMonomerLengthsForSeqMsa;
51
58
  /** Returns seq position for pointer x */
52
59
  getPosition(rowIdx: number, x: number, width: number, positionShiftPadding?: number): number | null;
@@ -1 +1 @@
1
- {"version":3,"file":"cell-renderer-monomer-placer.d.ts","sourceRoot":"","sources":["cell-renderer-monomer-placer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cell-renderer-monomer-placer.d.ts","sourceRoot":"","sources":["cell-renderer-monomer-placer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAKtC,OAAO,EAAW,kBAAkB,EAA0C,MAAM,iBAAiB,CAAC;AAEtG,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAC,OAAO,EAAC,MAAM,UAAU,CAAC;AAKjC,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAM/C,KAAK,kBAAkB,GAAG;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,kBAAkB,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,cAAc,qBAAqB,CAAC;AAEjD,eAAO,MAAM,sBAAsB,QAAQ,CAAC;AAE5C;mCACmC;AACnC,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwBlG;AAiBD,qBAAa,aAAc,SAAQ,oBAAoB,CAAC,MAAM,CAAC;IA4BpD,kBAAkB,EAAE,MAAM;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa;IA5BhC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,kBAAkB,CAA2B;IAGrD,OAAO,KAAK,cAAc,GAAwE;IAC3F,KAAK,EAAE,kBAAkB,CAAC;IACjC,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,6BAA6B,CAAa;IAE3C,iBAAiB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;KAAE,CAAM;IACvD,oBAAoB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;KAAE,CAAM;IAEjE,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,WAAW,CAAc;IAEjC,OAAO,CAAC,WAAW,CAAgD;IAEnE,OAAO,CAAC,SAAS,CAAc;IAE/B,OAAO,CAAC,aAAa,CAAgC;IAErD,sEAAsE;gBAEpE,OAAO,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI,EAC7B,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAC3B,MAAM,EAAE,OAAO,EACR,kBAAkB,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,kBAAkB;IA2C1D,OAAO,CAAC,yBAAyB;IAwBjC,OAAO,CAAC,2BAA2B;IAKnC,OAAO,CAAC,+BAA+B;IA8D1B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;WAmBpB,eAAe,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM;;;;IAWzC,KAAK,IAAI,MAAM;IAIxB,SAAS,CAAC,aAAa,IAAI,eAAe,GAAG,IAAI;cAI9B,KAAK,IAAI,IAAI;IAYhC,SAAS,CAAC,cAAc,IAAI,IAAI;IAIhC,qGAAqG;IAC9F,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;IAmBpF,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,gCAAgC;IAqBxC,OAAO,CAAC,2BAA2B;IAgCnC,OAAO,CAAC,8BAA8B;IAoDtC,yCAAyC;IAClC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAWnG,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAO1C,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAO7C,OAAO,CAAC,OAAO,CAAa;IAE5B,IAAI,aAAa,IAAI,MAAM,CAG1B;IAED,OAAO,CAAC,qBAAqB,CAAa;IAE1C,MAAM,CAAC,CAAC,EAAE,wBAAwB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAC5E,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,aAAa;IA4KrD,OAAO,CAAC,4BAA4B;IAI3B,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,GAAG,IAAI;CAiEjE;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,GAAG,SAAS,EAAE,CAAC,EAAE,wBAAwB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAC/F,MAAM,CAER"}
@@ -51,6 +51,10 @@ export class MonomerPlacer extends CellRendererBackBase {
51
51
  this._processedMaxVisibleSeqLength = 0;
52
52
  this._monomerLengthMap = {}; // caches the lengths to save time on g.measureText
53
53
  this._monomerStructureMap = {}; // caches the atomic structures of monomers
54
+ this._ellipsisBounds = undefined;
55
+ this._totalLinesNeeded = 0;
56
+ this._lineHeight = 20;
57
+ this._cellBounds = new Map();
54
58
  this.sysMonomerLib = null;
55
59
  this.padding = 5;
56
60
  this._leftThreeDotsPadding = 0;
@@ -64,18 +68,88 @@ export class MonomerPlacer extends CellRendererBackBase {
64
68
  if (this.tableCol && this.gridCol) {
65
69
  this.subs.push(this.tableCol.dataFrame.onCurrentRowChanged.subscribe(() => {
66
70
  const df = this.tableCol.dataFrame;
67
- const grid = this.gridCol.grid;
68
71
  if (df.currentRowIdx === -1) {
69
72
  this.tableCol.temp["reference-sequence" /* tempTAGS.referenceSequence */] = null;
70
73
  this.tableCol.temp["current-word" /* tempTAGS.currentWord */] = null;
71
74
  this.invalidateGrid();
72
75
  }
73
76
  }));
77
+ const resetTriggerTags = [
78
+ bioTAGS.positionShift,
79
+ 'renderMultiline'
80
+ ];
81
+ this.subs.push(DG.debounce(this.tableCol.dataFrame.onMetadataChanged.pipe(operators.filter((a) => a.args.source === this.tableCol && resetTriggerTags.includes(a.args.key))), 200).subscribe((_) => {
82
+ this.reset();
83
+ }));
74
84
  this.subs.push(DG.debounce(this.tableCol.dataFrame.onMetadataChanged.pipe(operators.filter((a) => a.args.source === this.tableCol && a.args.key === bioTAGS.positionShift)), 200).subscribe((_) => {
75
85
  this.reset();
76
86
  }));
77
87
  }
78
88
  }
89
+ calculateFontBasedSpacing(g) {
90
+ const metrics = g.measureText('M');
91
+ // Get font size directly from the column's temp properties for safety.
92
+ // This avoids parsing the font string and breaking the props interface.
93
+ let fontSize = 12; // Default font size
94
+ if (this.tableCol?.temp[".mm.cellRenderer.fontSize" /* MmcrTemps.fontSize */]) {
95
+ const sizeFromCol = this.tableCol.temp[".mm.cellRenderer.fontSize" /* MmcrTemps.fontSize */];
96
+ if (typeof sizeFromCol === 'number' && !isNaN(sizeFromCol))
97
+ fontSize = Math.max(sizeFromCol, 1);
98
+ }
99
+ // Line height is calculated based on the safe font size.
100
+ const lineHeight = Math.max(fontSize * 1.4, metrics.fontBoundingBoxAscent + metrics.fontBoundingBoxDescent + 4);
101
+ // Monomer spacing is proportional to character width.
102
+ const monomerSpacing = Math.max(2, this.props.fontCharWidth * 0.2);
103
+ return { lineHeight, monomerSpacing };
104
+ }
105
+ shouldUseMultilineRendering(tableCol) {
106
+ const renderMultiline = tableCol.getTag('renderMultiline');
107
+ return renderMultiline === 'true';
108
+ }
109
+ calculateMultiLineLayoutDynamic(g, w, h, subParts, positionShift, maxLengthOfMonomer) {
110
+ // --- 1. Setup ---
111
+ const { lineHeight, monomerSpacing } = this.calculateFontBasedSpacing(g);
112
+ const availableWidth = w - (this.padding * 2);
113
+ // --- 2. Find the widest monomer in the sequence to set a uniform column width ---
114
+ let maxMonomerWidth = 0;
115
+ const monomers = [];
116
+ if (subParts.length > 0) {
117
+ for (let i = positionShift; i < subParts.length; i++) {
118
+ const om = subParts.getOriginal(i);
119
+ const shortMon = this.props.monomerToShort(om, maxLengthOfMonomer);
120
+ monomers.push({ text: shortMon, posIdx: i });
121
+ maxMonomerWidth = Math.max(maxMonomerWidth, g.measureText(shortMon).width);
122
+ }
123
+ }
124
+ if (monomers.length === 0)
125
+ return { lineLayouts: [], lineHeight: lineHeight };
126
+ // --- 3. Calculate how many uniform columns can fit ---
127
+ const uniformColumnWidth = maxMonomerWidth;
128
+ let colsPerLine = Math.floor((availableWidth + monomerSpacing) / (uniformColumnWidth + monomerSpacing));
129
+ colsPerLine = Math.max(1, colsPerLine);
130
+ // --- 4. Generate the final grid layout ---
131
+ const availableHeightForLines = h - (this.padding * 2);
132
+ const linesToRenderCount = Math.max(0, Math.floor(availableHeightForLines / lineHeight));
133
+ const lineLayouts = [];
134
+ let monomerIdx = 0;
135
+ for (let lineIdx = 0; lineIdx < linesToRenderCount && monomerIdx < monomers.length; lineIdx++) {
136
+ const elementsForLine = [];
137
+ for (let colIdx = 0; colIdx < colsPerLine && monomerIdx < monomers.length; colIdx++) {
138
+ const monomer = monomers[monomerIdx];
139
+ const xPos = this.padding + colIdx * (uniformColumnWidth + monomerSpacing);
140
+ elementsForLine.push({
141
+ posIdx: monomer.posIdx,
142
+ x: xPos,
143
+ width: uniformColumnWidth, // Use the uniform width for all slots
144
+ om: monomer.text,
145
+ isSeparator: false,
146
+ });
147
+ monomerIdx++;
148
+ }
149
+ lineLayouts.push({ lineIdx: lineIdx, elements: elementsForLine });
150
+ }
151
+ return { lineLayouts, lineHeight };
152
+ }
79
153
  async init() {
80
154
  await Promise.all([
81
155
  (async () => {
@@ -115,6 +189,7 @@ export class MonomerPlacer extends CellRendererBackBase {
115
189
  this._monomerLengthList = null;
116
190
  this._monomerLengthMap = {};
117
191
  this._monomerStructureMap = {};
192
+ this._cellBounds.clear();
118
193
  super.reset();
119
194
  this.invalidateGrid();
120
195
  }
@@ -157,6 +232,27 @@ export class MonomerPlacer extends CellRendererBackBase {
157
232
  }
158
233
  return resSum;
159
234
  }
235
+ getCellMonomerLengthsForSeqValue(value, width) {
236
+ const sh = this.seqHelper.getSeqHandler(this.tableCol);
237
+ const minMonWidth = this.props.separatorWidth + 1 * this.props.fontCharWidth;
238
+ const visibleSeqStart = this.positionShift;
239
+ const maxVisibleSeqLength = Math.ceil(width / minMonWidth) + visibleSeqStart;
240
+ const seqSS = sh.splitter(value);
241
+ const visibleSeqEnd = Math.min(maxVisibleSeqLength, seqSS.length);
242
+ const res = new Array(visibleSeqEnd - visibleSeqStart);
243
+ let seqWidth = 0;
244
+ for (let seqMonI = visibleSeqStart; seqMonI < visibleSeqEnd; ++seqMonI) {
245
+ const seqMonLabel = seqSS.getOriginal(seqMonI);
246
+ const shortMon = this.props.monomerToShort(seqMonLabel, this.monomerLengthLimit);
247
+ const separatorWidth = sh.isSeparator() ? this.separatorWidth : this.props.separatorWidth;
248
+ const seqMonWidth = separatorWidth + shortMon.length * this.props.fontCharWidth;
249
+ res[seqMonI - visibleSeqStart] = seqMonWidth;
250
+ seqWidth += seqMonWidth;
251
+ if (seqWidth > width)
252
+ break;
253
+ }
254
+ return res;
255
+ }
160
256
  getCellMonomerLengthsForSeq(rowIdx) {
161
257
  const logPrefix = `${this.toLog()}.getCellMonomerLengthsForSeq()`;
162
258
  // this.logger.debug(`${logPrefix}, start`);
@@ -185,27 +281,6 @@ export class MonomerPlacer extends CellRendererBackBase {
185
281
  }
186
282
  return res;
187
283
  }
188
- getCellMonomerLengthsForSeqValue(value, width) {
189
- const sh = this.seqHelper.getSeqHandler(this.tableCol);
190
- const minMonWidth = this.props.separatorWidth + 1 * this.props.fontCharWidth;
191
- const visibleSeqStart = this.positionShift;
192
- const maxVisibleSeqLength = Math.ceil(width / minMonWidth) + visibleSeqStart;
193
- const seqSS = sh.splitter(value);
194
- const visibleSeqEnd = Math.min(maxVisibleSeqLength, seqSS.length);
195
- const res = new Array(visibleSeqEnd - visibleSeqStart);
196
- let seqWidth = 0;
197
- for (let seqMonI = visibleSeqStart; seqMonI < visibleSeqEnd; ++seqMonI) {
198
- const seqMonLabel = seqSS.getOriginal(seqMonI);
199
- const shortMon = this.props.monomerToShort(seqMonLabel, this.monomerLengthLimit);
200
- const separatorWidth = sh.isSeparator() ? this.separatorWidth : this.props.separatorWidth;
201
- const seqMonWidth = separatorWidth + shortMon.length * this.props.fontCharWidth;
202
- res[seqMonI - visibleSeqStart] = seqMonWidth;
203
- seqWidth += seqMonWidth;
204
- if (seqWidth > width)
205
- break;
206
- }
207
- return res;
208
- }
209
284
  getCellMonomerLengthsForSeqMsa() {
210
285
  var _a;
211
286
  const logPrefix = `${this.toLog()}.getCellMonomerLengthsForSeqMsa()`;
@@ -289,116 +364,143 @@ export class MonomerPlacer extends CellRendererBackBase {
289
364
  const isRenderedOnGrid = gridCell.grid?.canvas === g.canvas;
290
365
  if (!this.seqHelper)
291
366
  return;
292
- const gridCol = this.gridCol;
293
367
  const tableCol = this.tableCol;
294
- const dpr = window.devicePixelRatio;
295
368
  const positionShift = this.positionShift;
296
- const logPrefix = `${this.toLog()}.render()`;
297
- this.logger.debug(`${logPrefix}, start`);
298
- // Cell renderer settings
299
- let maxLengthOfMonomer = this.monomerLengthLimit;
300
- if (mmcrTAGS.maxMonomerLength in tableCol.tags) {
301
- const v = parseInt(tableCol.getTag(mmcrTAGS.maxMonomerLength));
302
- maxLengthOfMonomer = !isNaN(v) && v ? v : 50;
303
- }
304
- if (".mm.cellRenderer.maxMonomerLength" /* MmcrTemps.maxMonomerLength */ in tableCol.temp) {
305
- const v = tableCol.temp[".mm.cellRenderer.maxMonomerLength" /* MmcrTemps.maxMonomerLength */];
306
- maxLengthOfMonomer = !isNaN(v) && v ? v : 50;
307
- }
308
369
  g.save();
309
370
  try {
310
371
  const sh = this.seqHelper.getSeqHandler(tableCol);
372
+ let maxLengthOfMonomer = this.monomerLengthLimit;
373
+ if (mmcrTAGS.maxMonomerLength in tableCol.tags) {
374
+ const v = parseInt(tableCol.getTag(mmcrTAGS.maxMonomerLength));
375
+ maxLengthOfMonomer = !isNaN(v) && v ? v : 50;
376
+ }
311
377
  if (tableCol.temp[".mm.cellRenderer.settingsChanged" /* MmcrTemps.rendererSettingsChanged */] === rendererSettingsChangedState.true ||
312
378
  this.monomerLengthLimit != maxLengthOfMonomer) {
379
+ // this if means that the mm renderer settings have changed,
380
+ // particularly monomer representation and max width.
313
381
  let gapLength = 0;
314
382
  const msaGapLength = 8;
315
383
  gapLength = tableCol.temp[".mm.cellRenderer.gapLength" /* MmcrTemps.gapLength */] ?? gapLength;
316
- // this event means that the mm renderer settings have changed,
317
- // particularly monomer representation and max width.
318
384
  this.setMonomerLengthLimit(maxLengthOfMonomer);
319
385
  this.setSeparatorWidth(sh.isMsa() ? msaGapLength : gapLength);
320
386
  tableCol.temp[".mm.cellRenderer.settingsChanged" /* MmcrTemps.rendererSettingsChanged */] = rendererSettingsChangedState.false;
321
387
  }
322
- let [maxLengthWords, maxLengthWordsSum] = this.getCellMonomerLengths(gridCell.tableRowIndex, w);
323
- const _maxIndex = maxLengthWords.length;
324
- const value = gridCell.cell.value;
325
388
  const rowIdx = gridCell.cell.rowIndex;
326
- const paletteType = tableCol.getTag(bioTAGS.alphabet);
327
- const minDistanceRenderer = 50;
389
+ const value = gridCell.cell.value;
328
390
  if (isRenderedOnGrid)
329
- w = getUpdatedWidth(gridCol?.grid, g, x, w, dpr);
391
+ w = getUpdatedWidth(gridCell.grid, g, x, w, window.devicePixelRatio);
330
392
  g.beginPath();
331
- g.rect(x + this.padding, y, w - this.padding - 1, h);
393
+ g.rect(x, y, w, h);
332
394
  g.clip();
333
395
  g.font = this.props?.font ?? '12px monospace';
334
396
  g.textBaseline = 'top';
335
- //TODO: can this be replaced/merged with splitSequence?
336
397
  const units = tableCol.meta.units;
337
398
  const aligned = tableCol.getTag(bioTAGS.aligned);
338
399
  const separator = tableCol.getTag(bioTAGS.separator) ?? '';
339
- const minMonWidth = this.props.separatorWidth + 1 * this.props.fontCharWidth;
340
- const splitLimit = Math.ceil(w / minMonWidth) + positionShift;
400
+ const subParts = isRenderedOnGrid ? sh.getSplitted(rowIdx) : sh.splitter(value);
401
+ let drawStyle = DrawStyle.classic;
402
+ if (aligned?.includes('MSA') && units === NOTATION.SEPARATOR)
403
+ drawStyle = DrawStyle.MSA;
341
404
  const tempReferenceSequence = tableCol.temp["reference-sequence" /* tempTAGS.referenceSequence */];
342
405
  const tempCurrentWord = this.tableCol.temp["current-word" /* tempTAGS.currentWord */];
343
- if (tempCurrentWord && tableCol?.dataFrame?.currentRowIdx === -1)
344
- this.tableCol.temp["current-word" /* tempTAGS.currentWord */] = null;
345
406
  const referenceSequence = (() => {
346
- // @ts-ignore
347
- const splitterFunc = sh.getSplitter(splitLimit);
348
- const seqSS = splitterFunc(((tempReferenceSequence != null) && (tempReferenceSequence != '')) ?
407
+ const splitterFunc = sh.splitter;
408
+ const seqSS = splitterFunc(((tempReferenceSequence != null) && (tempReferenceSequence !== '')) ?
349
409
  tempReferenceSequence : tempCurrentWord ?? '');
350
- return wu.count(0).take(seqSS.length).slice(positionShift).map((posIdx) => seqSS.getOriginal(posIdx)).toArray();
410
+ return wu.count(0).take(seqSS.length).slice(positionShift).map((posIdx) => seqSS.getCanonical(posIdx)).toArray();
351
411
  })();
352
- const subParts = isRenderedOnGrid ? sh.getSplitted(rowIdx) : sh.splitter(value);
353
- if (!isRenderedOnGrid)
354
- maxLengthWordsSum = this.getSummedMonomerLengths(this.getCellMonomerLengthsForSeqValue(value, w));
355
- let drawStyle = DrawStyle.classic;
356
- if (aligned && aligned.includes('MSA') && units == NOTATION.SEPARATOR)
357
- drawStyle = DrawStyle.MSA;
358
- // if the sequence is rendered in shifted mode, we will also render three dots at start, indicating the shift
359
- this._leftThreeDotsPadding = this.shouldRenderShiftedThreeDots(positionShift) ? g.measureText(shiftedLeftPaddingText).width : 0;
360
- // currently selected position to highlight
361
412
  const selectedPosition = Number.parseInt(tableCol.getTag(bioTAGS.selectedPosition) ?? '-200');
362
- const visibleSeqLength = Math.min(subParts.length, splitLimit);
363
- for (let posIdx = positionShift; posIdx < visibleSeqLength; ++posIdx) {
364
- const om = posIdx < subParts.length ? subParts.getOriginal(posIdx) : sh.defaultGapOriginal;
365
- const cm = posIdx < subParts.length ? subParts.getCanonical(posIdx) : sh.defaultGapOriginal;
366
- let color = undefinedColor;
367
- const monomerLib = this.getMonomerLib();
368
- if (monomerLib) {
369
- const biotype = sh.defaultBiotype;
370
- //this.logger.debug(`${logPrefix}, biotype: ${biotype}, amino: ${amino}`);
371
- color = monomerLib.getMonomerTextColor(biotype, cm);
413
+ const shouldUseMultiLine = this.shouldUseMultilineRendering(tableCol) && drawStyle !== DrawStyle.MSA;
414
+ if (shouldUseMultiLine) {
415
+ const currentCellBounds = [];
416
+ const layout = this.calculateMultiLineLayoutDynamic(g, w, h, subParts, positionShift, maxLengthOfMonomer);
417
+ // --- NEW: Vertical Centering Logic for Single Lines ---
418
+ // Default to top-aligned layout
419
+ let yBase = y + this.padding;
420
+ // If there's exactly one line of content, calculate a new base Y to center it vertically.
421
+ if (layout.lineLayouts.length === 1)
422
+ yBase = y + (h - layout.lineHeight) / 2;
423
+ // --- End of New Logic ---
424
+ for (const lineLayout of layout.lineLayouts) {
425
+ // The Y position for each line is now based on our calculated `yBase`.
426
+ const lineY = yBase + (lineLayout.lineIdx * layout.lineHeight);
427
+ for (const element of lineLayout.elements) {
428
+ const elementX = x + element.x;
429
+ const monomer = element;
430
+ const monomerIndex = monomer.posIdx;
431
+ const cm = subParts.getCanonical(monomerIndex);
432
+ let color = undefinedColor;
433
+ const monomerLib = this.getMonomerLib();
434
+ if (monomerLib)
435
+ color = monomerLib.getMonomerTextColor(sh.defaultBiotype, cm);
436
+ let transparencyRate = 0.0;
437
+ if (gridCell.tableRowIndex !== tableCol.dataFrame.currentRowIdx && referenceSequence.length > 0) {
438
+ const refIndex = monomerIndex - positionShift;
439
+ if (refIndex >= 0 && refIndex < referenceSequence.length) {
440
+ const currentMonomerCanonical = cm;
441
+ const refMonomerCanonical = referenceSequence[refIndex];
442
+ if (currentMonomerCanonical === refMonomerCanonical)
443
+ transparencyRate = 0.7;
444
+ }
445
+ }
446
+ currentCellBounds.push({
447
+ lineIdx: lineLayout.lineIdx,
448
+ monomerIdx: monomerIndex - positionShift,
449
+ bounds: new DG.Rect(element.x, (lineY - y), element.width, layout.lineHeight),
450
+ sequencePosition: monomerIndex,
451
+ });
452
+ printLeftOrCentered(g, monomer.om, elementX, lineY, element.width, layout.lineHeight, {
453
+ color: color,
454
+ isMultiLineContext: true,
455
+ transparencyRate: transparencyRate,
456
+ selectedPosition: isNaN(selectedPosition) || selectedPosition < 1 ? undefined : selectedPosition,
457
+ wordIdx: monomerIndex
458
+ });
459
+ }
372
460
  }
373
- g.fillStyle = undefinedColor;
374
- const last = posIdx === subParts.length - 1;
375
- /*x1 = */
376
- const opts = {
377
- color: color, pivot: 0, left: true, transparencyRate: 1.0, separator: separator, last: last,
378
- drawStyle: drawStyle, maxWord: maxLengthWordsSum, wordIdx: posIdx - positionShift, gridCell: gridCell,
379
- referenceSequence: referenceSequence, maxLengthOfMonomer: maxLengthOfMonomer,
380
- monomerTextSizeMap: this._monomerLengthMap, logger: this.logger,
381
- selectedPosition: isNaN(selectedPosition) || selectedPosition < 1 ? undefined : selectedPosition - positionShift,
382
- };
383
- printLeftOrCentered(g, om, x + this.padding + this._leftThreeDotsPadding, y, w, h, opts);
384
- if (minDistanceRenderer > w)
385
- break;
461
+ if (gridCell.tableRowIndex !== null)
462
+ this._cellBounds.set(gridCell.tableRowIndex, currentCellBounds);
386
463
  }
387
- if (this.shouldRenderShiftedThreeDots(positionShift)) {
388
- const opts = {
389
- color: undefinedColor, pivot: 0, left: true, transparencyRate: 1.0, separator: separator, last: false,
390
- drawStyle: drawStyle, maxWord: maxLengthWordsSum, wordIdx: 0, gridCell: gridCell,
391
- maxLengthOfMonomer: maxLengthOfMonomer,
392
- monomerTextSizeMap: this._monomerLengthMap, logger: this.logger,
393
- };
394
- printLeftOrCentered(g, shiftedLeftPaddingText, x + this.padding, y, w, h, opts);
464
+ else {
465
+ // --- Single-line rendering path (is unchanged) ---
466
+ this._leftThreeDotsPadding = this.shouldRenderShiftedThreeDots(positionShift) ? g.measureText(shiftedLeftPaddingText).width : 0;
467
+ let [, maxLengthWordsSum] = this.getCellMonomerLengths(gridCell.tableRowIndex, w);
468
+ if (!isRenderedOnGrid)
469
+ maxLengthWordsSum = this.getSummedMonomerLengths(this.getCellMonomerLengthsForSeqValue(value, w));
470
+ const minMonomerWidth = this.props.separatorWidth + 1 * this.props.fontCharWidth;
471
+ const visibleSeqLength = Math.min(subParts.length, Math.ceil(w / (minMonomerWidth)) + positionShift);
472
+ for (let posIdx = positionShift; posIdx < visibleSeqLength; ++posIdx) {
473
+ const om = posIdx < subParts.length ? subParts.getOriginal(posIdx) : sh.defaultGapOriginal;
474
+ const cm = posIdx < subParts.length ? subParts.getCanonical(posIdx) : sh.defaultGapOriginal;
475
+ let color = undefinedColor;
476
+ if (this.getMonomerLib())
477
+ color = this.getMonomerLib().getMonomerTextColor(sh.defaultBiotype, cm);
478
+ const last = posIdx === subParts.length - 1;
479
+ const opts = {
480
+ color: color, pivot: 0, left: true, transparencyRate: 0.0,
481
+ separator: separator, last: last,
482
+ drawStyle: drawStyle, maxWord: maxLengthWordsSum, wordIdx: posIdx - positionShift, gridCell: gridCell,
483
+ referenceSequence: referenceSequence, maxLengthOfMonomer: maxLengthOfMonomer,
484
+ monomerTextSizeMap: this._monomerLengthMap, logger: this.logger,
485
+ selectedPosition: isNaN(selectedPosition) || selectedPosition < 1 ? undefined : selectedPosition - positionShift,
486
+ };
487
+ printLeftOrCentered(g, om, x + this.padding + this._leftThreeDotsPadding, y, w, h, opts);
488
+ }
489
+ if (this.shouldRenderShiftedThreeDots(positionShift)) {
490
+ const opts = {
491
+ color: undefinedColor, pivot: 0, left: true, transparencyRate: 0, separator: separator, last: false,
492
+ drawStyle: drawStyle, maxWord: maxLengthWordsSum, wordIdx: 0, gridCell: gridCell,
493
+ maxLengthOfMonomer: maxLengthOfMonomer,
494
+ monomerTextSizeMap: this._monomerLengthMap, logger: this.logger,
495
+ };
496
+ printLeftOrCentered(g, shiftedLeftPaddingText, x + this.padding, y, w, h, opts);
497
+ }
395
498
  }
396
499
  }
397
500
  catch (err) {
398
501
  const [errMsg, errStack] = errInfo(err);
399
502
  this.logger.error(errMsg, undefined, errStack);
400
503
  this.errors.push(err);
401
- //throw err; // Do not throw to prevent disabling renderer
402
504
  }
403
505
  finally {
404
506
  g.restore();
@@ -411,21 +513,29 @@ export class MonomerPlacer extends CellRendererBackBase {
411
513
  const logPrefix = `${this.toLog()}.onMouseMove()`;
412
514
  if (!this.seqHelper || gridCell.tableRowIndex == null)
413
515
  return;
414
- // if (gridCell.cell.column.getTag(bioTAGS.aligned) !== ALIGNMENT.SEQ_MSA)
415
- // return;
416
516
  const positionShift = this.positionShift;
417
517
  const gridCellBounds = gridCell.bounds;
418
- // const value: any = gridCell.cell.value;
419
- //
420
- // const maxLengthWords: number[] = seqColTemp.getCellMonomerLengths(gridCell.tableRowIndex!);
421
- // const maxLengthWordsSum: number[] = new Array<number>(maxLengthWords.length).fill(0);
422
- // for (let posI: number = 1; posI < maxLengthWords.length; posI++)
423
- // maxLengthWordsSum[posI] = maxLengthWordsSum[posI - 1] + maxLengthWords[posI];
424
- // const maxIndex = maxLengthWords.length;
425
518
  const argsX = e.offsetX - gridCell.gridColumn.left + (gridCell.gridColumn.left - gridCellBounds.x);
426
- const leftPadding = this.shouldRenderShiftedThreeDots(positionShift) && (this._leftThreeDotsPadding ?? 0) > 0 ? this._leftThreeDotsPadding : 0;
427
- const left = this.getPosition(gridCell.tableRowIndex, argsX, gridCellBounds.width, leftPadding);
428
- this.logger.debug(`${logPrefix}, start, argsX: ${argsX}, left: ${left}`);
519
+ const argsY = e.offsetY - gridCellBounds.y;
520
+ // Reset cursor to default, as ellipsis is gone
521
+ if (this.gridCol?.grid?.canvas)
522
+ this.gridCol.grid.canvas.style.cursor = 'default';
523
+ let left = null;
524
+ const boundsForCell = this._cellBounds.get(gridCell.tableRowIndex);
525
+ if (boundsForCell) {
526
+ for (const bound of boundsForCell) {
527
+ if (bound.bounds.contains(argsX, argsY)) {
528
+ left = bound.monomerIdx;
529
+ break;
530
+ }
531
+ }
532
+ }
533
+ else {
534
+ // Single-line hit detection
535
+ const leftPadding = this.shouldRenderShiftedThreeDots(positionShift) && (this._leftThreeDotsPadding ?? 0) > 0 ? this._leftThreeDotsPadding : 0;
536
+ left = this.getPosition(gridCell.tableRowIndex, argsX, gridCellBounds.width, leftPadding);
537
+ }
538
+ this.logger.debug(`${logPrefix}, argsX: ${argsX}, argsY: ${argsY}, left: ${left}`);
429
539
  const sh = this.seqHelper.getSeqHandler(this.tableCol);
430
540
  const seqSS = sh.getSplitted(gridCell.tableRowIndex);
431
541
  if (left !== null && left >= 0 && left + positionShift < seqSS.length) {
@@ -437,7 +547,7 @@ export class MonomerPlacer extends CellRendererBackBase {
437
547
  };
438
548
  const tooltipElements = [];
439
549
  let monomerDiv = this._monomerStructureMap[seqMonomer.symbol];
440
- if (!monomerDiv || true) {
550
+ if (!monomerDiv) {
441
551
  const monomerLib = this.getMonomerLib();
442
552
  monomerDiv = this._monomerStructureMap[seqMonomer.symbol] = (() => {
443
553
  return monomerLib ? monomerLib.getTooltip(seqMonomer.biotype, seqMonomer.symbol) :
@@ -1 +1 @@
1
- {"version":3,"file":"cell-renderer-monomer-placer.js","sourceRoot":"","sources":["cell-renderer-monomer-placer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cell-renderer-monomer-placer.js","sourceRoot":"","sources":["cell-renderer-monomer-placer.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,8 @@ export declare const PrintOptionsDefaults: {
28
28
  };
29
29
  /** */ logger?: ILogger;
30
30
  selectedPosition?: number;
31
+ isMultiLineContext: boolean;
32
+ lineNumber: number;
31
33
  };
32
34
  export type PrintOptions = typeof PrintOptionsDefaults;
33
35
  /** A function that prints a string aligned to left or centered.
@@ -1 +1 @@
1
- {"version":3,"file":"cell-renderer.d.ts","sourceRoot":"","sources":["cell-renderer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGtC,OAAO,EAAC,OAAO,EAAC,MAAM,UAAU,CAAC;AAOjC,oBAAY,IAAI;IACd,gBAAgB,sCAAsC;CACvD;AAED,oBAAY,qBAAqB;IAC/B,iBAAiB,sCAAsC;CACxD;AAED,oBAAY,SAAS;IACnB,GAAG,QAAQ;IACX,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,oBAAoB;IAC/B,6BAA6B,QAAQ,MAAM;IAC3C,MAAM,QAAQ,MAAM;IACpB,sBAAsB,OAAO,OAAO;IACpC,uDAAuD,mBAAmB,MAAM;IAChF,wCAAwC,YAAY,MAAM;IAC1D,wCAAwC,OAAO,OAAO;IACtD,iDAAiD,YAAY,SAAS;IACtE,oDAAoD,UAAU,MAAM,EAAE;IACtE,mCAAmC,UAAU,MAAM;IACnD,OAAO,WAAW,EAAE,CAAC,QAAQ,GAAG,IAAI;IACpC,uCAAuC,oBAAoB,MAAM,EAAE,GAAG,IAAI;IAC1E,8BAA8B,qBAAqB,MAAM,GAAG,IAAI;IAChE,kCAAkC,qBAAqB;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;KAAE;IACrF,MAAM,UAAU,OAAO;uBACJ,MAAM;CACxB,CAAC;AAEJ,MAAM,MAAM,YAAY,GAAG,OAAO,oBAAoB,CAAC;AAEvD;;;;;;;;wDAQwD;AACxD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,wBAAwB,EAC7D,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GACpF,MAAM,CAuER"}
1
+ {"version":3,"file":"cell-renderer.d.ts","sourceRoot":"","sources":["cell-renderer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGtC,OAAO,EAAC,OAAO,EAAC,MAAM,UAAU,CAAC;AAOjC,oBAAY,IAAI;IACd,gBAAgB,sCAAsC;CACvD;AAED,oBAAY,qBAAqB;IAC/B,iBAAiB,sCAAsC;CACxD;AAED,oBAAY,SAAS;IACnB,GAAG,QAAQ;IACX,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,oBAAoB;IAC/B,6BAA6B,QAAQ,MAAM;IAC3C,MAAM,QAAQ,MAAM;IACpB,sBAAsB,OAAO,OAAO;IACpC,uDAAuD,mBAAmB,MAAM;IAChF,wCAAwC,YAAY,MAAM;IAC1D,wCAAwC,OAAO,OAAO;IACtD,iDAAiD,YAAY,SAAS;IACtE,oDAAoD,UAAU,MAAM,EAAE;IACtE,mCAAmC,UAAU,MAAM;IACnD,OAAO,WAAW,EAAE,CAAC,QAAQ,GAAG,IAAI;IACpC,uCAAuC,oBAAoB,MAAM,EAAE,GAAG,IAAI;IAC1E,8BAA8B,qBAAqB,MAAM,GAAG,IAAI;IAChE,kCAAkC,qBAAqB;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;KAAE;IACrF,MAAM,UAAU,OAAO;uBACJ,MAAM;wBAEL,OAAO;gBACf,MAAM;CACjB,CAAC;AAEJ,MAAM,MAAM,YAAY,GAAG,OAAO,oBAAoB,CAAC;AAEvD;;;;;;;;wDAQwD;AAIxD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,wBAAwB,EAC7D,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GACpF,MAAM,CAmHR"}
@@ -22,7 +22,7 @@ export const PrintOptionsDefaults = new class {
22
22
  /** Color of text to print */ this.color = undefinedColor;
23
23
  /** */ this.pivot = 0;
24
24
  /** Is left aligned */ this.left = false;
25
- /** Transparency rate where 1.0 is fully transparent */ this.transparencyRate = 1.0;
25
+ /** Transparency rate where 1.0 is fully transparent */ this.transparencyRate = 0;
26
26
  /** Monomer's separator, if specified */ this.separator = '';
27
27
  /** Is checker if element last or not */ this.last = false;
28
28
  /** MSA - for aligned, classic - for other seq */ this.drawStyle = DrawStyle.classic;
@@ -34,6 +34,9 @@ export const PrintOptionsDefaults = new class {
34
34
  /** Map of monomers' text sizes */ this.monomerTextSizeMap = {};
35
35
  /** */ this.logger = undefined;
36
36
  this.selectedPosition = undefined;
37
+ // Multiline stuff
38
+ this.isMultiLineContext = false;
39
+ this.lineNumber = 0;
37
40
  }
38
41
  }();
39
42
  /** A function that prints a string aligned to left or centered.
@@ -45,10 +48,44 @@ export const PrintOptionsDefaults = new class {
45
48
  * @param {number} h Height
46
49
  * @param {PrintOptions} options
47
50
  * @return {number} x coordinate to start printing at.*/
51
+ // Updated printLeftOrCentered function to use font-based spacing
52
+ // Replace the multiline section in your printLeftOrCentered function
48
53
  export function printLeftOrCentered(g, s, x, y, w, h, options) {
49
54
  var _a, _b, _c;
50
- const opts = Object.assign(Object.assign({}, PrintOptionsDefaults), options);
55
+ const opts = { ...PrintOptionsDefaults, ...options };
51
56
  const logPrefix = `Bio: printLeftOrCentered()`;
57
+ if (opts.isMultiLineContext) {
58
+ g.textBaseline = 'middle';
59
+ g.textAlign = 'center'; // Center text horizontally
60
+ let colorPart = s;
61
+ if (opts.maxLengthOfMonomer != null)
62
+ colorPart = monomerToShortFunction(colorPart, opts.maxLengthOfMonomer);
63
+ // Apply transparency
64
+ const alpha = Math.max(0.1, 1.0 - (opts.transparencyRate ?? 0.0));
65
+ g.globalAlpha = alpha;
66
+ const metrics = g.measureText(colorPart);
67
+ const textHeight = metrics.fontBoundingBoxAscent + metrics.fontBoundingBoxDescent;
68
+ const centerY = y + (h - textHeight) / 2 + metrics.fontBoundingBoxAscent;
69
+ let fillColor = opts.color ?? undefinedColor;
70
+ if (!fillColor || fillColor === undefinedColor)
71
+ fillColor = blackColor;
72
+ g.fillStyle = fillColor;
73
+ if (opts.selectedPosition === opts.wordIdx + 1) {
74
+ g.save();
75
+ g.fillStyle = 'rgba(60, 177, 115, 0.2)';
76
+ g.fillRect(x, y, w, h); // Fill the entire column bounds
77
+ g.restore();
78
+ g.fillStyle = fillColor;
79
+ }
80
+ // To center, provide the midpoint of the bounds
81
+ g.fillText(colorPart, x + w / 2, centerY);
82
+ // Reset alpha and other properties
83
+ g.globalAlpha = 1.0;
84
+ g.textBaseline = 'top';
85
+ g.textAlign = 'start'; // Reset to default
86
+ return x + w;
87
+ }
88
+ // ... rest of the existing single-line logic remains unchanged
52
89
  options.logger?.debug(`${logPrefix}, start`);
53
90
  g.textAlign = 'start';
54
91
  let colorPart = s.substring(0);
@@ -66,9 +103,9 @@ export function printLeftOrCentered(g, s, x, y, w, h, options) {
66
103
  if (opts.referenceSequence) {
67
104
  const currentMonomerCanonical = opts.referenceSequence[opts.wordIdx];
68
105
  if (compareWithCurrent && (opts.referenceSequence.length > 0) && (highlightDifference === 'difference'))
69
- opts.transparencyRate = (colorPart == currentMonomerCanonical) ? 0.3 : opts.transparencyRate;
106
+ opts.transparencyRate = (colorPart == currentMonomerCanonical) ? 0.7 : opts.transparencyRate;
70
107
  if (compareWithCurrent && (opts.referenceSequence.length > 0) && (highlightDifference === 'equal'))
71
- opts.transparencyRate = (colorPart != currentMonomerCanonical) ? 0.3 : opts.transparencyRate;
108
+ opts.transparencyRate = (colorPart != currentMonomerCanonical) ? 0.7 : opts.transparencyRate;
72
109
  }
73
110
  if (opts.maxLengthOfMonomer != null)
74
111
  colorPart = monomerToShortFunction(colorPart, opts.maxLengthOfMonomer);
@@ -85,7 +122,6 @@ export function printLeftOrCentered(g, s, x, y, w, h, options) {
85
122
  maxColorTextSize = opts.maxWord[opts.wordIdx];
86
123
  textSize = opts.maxWord[opts.wordIdx];
87
124
  }
88
- /** Draw color part at {@link dx1}, and gray part at {@link dx2}. */
89
125
  function draw(dx1, dx2) {
90
126
  let drawColor = colorCode ? opts.color : blackColor;
91
127
  if (opts.selectedPosition === opts.wordIdx + 1) {
@@ -94,7 +130,7 @@ export function printLeftOrCentered(g, s, x, y, w, h, options) {
94
130
  drawColor = DG.Color.toHtml(DG.Color.setAlpha(DG.Color.fromHtml(drawColor), 255));
95
131
  }
96
132
  g.fillStyle = drawColor;
97
- g.globalAlpha = opts.transparencyRate;
133
+ g.globalAlpha = 1.0 - opts.transparencyRate; // FIX: Use consistent transparency logic
98
134
  if (opts.drawStyle === DrawStyle.classic) {
99
135
  g.fillText(colorPart, x + dx1, y + dy);
100
136
  g.fillStyle = grayColor;
@@ -102,6 +138,7 @@ export function printLeftOrCentered(g, s, x, y, w, h, options) {
102
138
  }
103
139
  if (opts.drawStyle === DrawStyle.MSA)
104
140
  g.fillText(colorPart, x + dx1, y + dy);
141
+ g.globalAlpha = 1.0; // Reset alpha
105
142
  }
106
143
  const placeX = (opts.maxWord[opts.wordIdx] ?? 0) - (opts.maxWord[0] ?? 0);
107
144
  if (opts.left || textSize > w) {
@@ -1 +1 @@
1
- {"version":3,"file":"cell-renderer.js","sourceRoot":"","sources":["cell-renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cell-renderer.js","sourceRoot":"","sources":["cell-renderer.ts"],"names":[],"mappings":"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"}