@datagrok-libraries/bio 5.52.0 → 5.52.2

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
@@ -8,7 +8,7 @@
8
8
  "access": "public"
9
9
  },
10
10
  "friendlyName": "Datagrok bio library",
11
- "version": "5.52.0",
11
+ "version": "5.52.2",
12
12
  "description": "Bio utilities, types supporting Macromolecule, Molecule3D data",
13
13
  "dependencies": {
14
14
  "@datagrok-libraries/chem-meta": "^1.2.7",
@@ -10,7 +10,10 @@ type MonomerPlacerProps = {
10
10
  fontCharWidth: number;
11
11
  };
12
12
  export declare const undefinedColor = "rgb(100,100,100)";
13
- export declare function hitBounds(bounds: number[], x: number): number | null;
13
+ export declare const shiftedLeftPaddingText = "...";
14
+ /** Be ware, this can return -1 meaning that hovering/clicking happened on the three dots
15
+ * and not on the monomer itself */
16
+ export declare function hitBounds(bounds: number[], x: number, positionShiftPixels?: number): number | null;
14
17
  export declare class MonomerPlacer extends CellRendererBackBase<string> {
15
18
  monomerLengthLimit: number;
16
19
  private readonly propsProvider;
@@ -46,11 +49,12 @@ export declare class MonomerPlacer extends CellRendererBackBase<string> {
46
49
  private getCellMonomerLengthsForSeqValue;
47
50
  private getCellMonomerLengthsForSeqMsa;
48
51
  /** Returns seq position for pointer x */
49
- getPosition(rowIdx: number, x: number, width: number): number | null;
52
+ getPosition(rowIdx: number, x: number, width: number, positionShiftPadding?: number): number | null;
50
53
  setMonomerLengthLimit(value: number): void;
51
54
  setSeparatorWidth(value: number): void;
52
55
  private padding;
53
56
  get positionShift(): number;
57
+ private _leftThreeDotsPadding;
54
58
  render(g: CanvasRenderingContext2D, x: number, y: number, w: number, h: number, gridCell: DG.GridCell, _cellStyle: DG.GridCellStyle): void;
55
59
  onMouseMove(gridCell: DG.GridCell, e: MouseEvent): void;
56
60
  }
@@ -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":"AAIA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAKtC,OAAO,EAAW,kBAAkB,EAA0C,MAAM,iBAAiB,CAAC;AAEtG,OAAO,EAAC,oBAAoB,EAAqB,MAAM,2BAA2B,CAAC;AACnF,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;IAAC,aAAa,EAAE,MAAM,CAAC;CACrC,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;AAED,qBAAa,aAAc,SAAQ,oBAAoB,CAAC,MAAM,CAAC;IAsBpD,kBAAkB,EAAE,MAAM;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAtBhC,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,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;IA+B7C,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;IAWhC,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,2BAA2B;IAgCnC,OAAO,CAAC,gCAAgC;IAqBxC,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;IASnG,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;IA0I5C,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,GAAG,IAAI;CAkDjE;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"}
@@ -12,7 +12,13 @@ import { HelmTypes } from '../helm/consts';
12
12
  import { execMonomerHoverLinks } from '../monomer-works/monomer-hover';
13
13
  import * as operators from 'rxjs/operators';
14
14
  export const undefinedColor = 'rgb(100,100,100)';
15
- export function hitBounds(bounds, x) {
15
+ export const shiftedLeftPaddingText = '...';
16
+ /** Be ware, this can return -1 meaning that hovering/clicking happened on the three dots
17
+ * and not on the monomer itself */
18
+ export function hitBounds(bounds, x, positionShiftPixels) {
19
+ if ((positionShiftPixels ?? 0) > 0 && x < (bounds[0] ?? 0) + positionShiftPixels)
20
+ return -1;
21
+ x -= positionShiftPixels ?? 0;
16
22
  let iterationCount = 100;
17
23
  let leftI = 0;
18
24
  let rightI = bounds.length - 1;
@@ -47,6 +53,7 @@ export class MonomerPlacer extends CellRendererBackBase {
47
53
  this._monomerStructureMap = {}; // caches the atomic structures of monomers
48
54
  this.sysMonomerLib = null;
49
55
  this.padding = 5;
56
+ this._leftThreeDotsPadding = 0;
50
57
  this.props = this.propsProvider();
51
58
  this._processedRows = DG.BitSet.create(this.tableCol.length);
52
59
  if (this.gridCol) {
@@ -137,7 +144,7 @@ export class MonomerPlacer extends CellRendererBackBase {
137
144
  }
138
145
  getSummedMonomerLengths(res) {
139
146
  const resSum = new Array(res.length + 1);
140
- resSum[0] = 5; // padding
147
+ resSum[0] = this.padding; // padding
141
148
  for (let pos = 1; pos < resSum.length; pos++)
142
149
  resSum[pos] = resSum[pos - 1] + res[pos - 1];
143
150
  // due to implementation specifics and performance, resSum can have NaN s at the end for stuff that is not visible
@@ -252,13 +259,13 @@ export class MonomerPlacer extends CellRendererBackBase {
252
259
  return res; // first (and single) row of data
253
260
  }
254
261
  /** Returns seq position for pointer x */
255
- getPosition(rowIdx, x, width) {
262
+ getPosition(rowIdx, x, width, positionShiftPadding) {
256
263
  const [_monomerMaxLengthList, monomerMaxLengthSumList] = this.getCellMonomerLengths(rowIdx, width);
257
264
  const sh = this.seqHelper.getSeqHandler(this.tableCol);
258
265
  const seqSS = sh.getSplitted(rowIdx);
259
266
  if (seqSS.length === 0)
260
267
  return null;
261
- return hitBounds(monomerMaxLengthSumList, x);
268
+ return hitBounds(monomerMaxLengthSumList, x, positionShiftPadding);
262
269
  }
263
270
  setMonomerLengthLimit(value) {
264
271
  if (this.monomerLengthLimit != value) {
@@ -273,7 +280,8 @@ export class MonomerPlacer extends CellRendererBackBase {
273
280
  }
274
281
  }
275
282
  get positionShift() {
276
- return Number.parseInt(this.tableCol?.tags[bioTAGS.positionShift] ?? '0') ?? 0;
283
+ const parsed = Number.parseInt(this.tableCol?.tags[bioTAGS.positionShift] ?? '0') ?? 0;
284
+ return isNaN(parsed) ? 0 : Math.max(parsed, 0);
277
285
  }
278
286
  render(g, x, y, w, h, gridCell, _cellStyle) {
279
287
  // for cases when we render it on somewhere other than grid, gridRow might be null or incorrect (set to 0).
@@ -339,7 +347,7 @@ export class MonomerPlacer extends CellRendererBackBase {
339
347
  const splitterFunc = sh.getSplitter(splitLimit);
340
348
  const seqSS = splitterFunc(((tempReferenceSequence != null) && (tempReferenceSequence != '')) ?
341
349
  tempReferenceSequence : tempCurrentWord ?? '');
342
- return wu.count(0).take(seqSS.length).map((posIdx) => seqSS.getOriginal(posIdx)).toArray();
350
+ return wu.count(0).take(seqSS.length).slice(positionShift).map((posIdx) => seqSS.getOriginal(posIdx)).toArray();
343
351
  })();
344
352
  const subParts = isRenderedOnGrid ? sh.getSplitted(rowIdx) : sh.splitter(value);
345
353
  if (!isRenderedOnGrid)
@@ -347,6 +355,10 @@ export class MonomerPlacer extends CellRendererBackBase {
347
355
  let drawStyle = DrawStyle.classic;
348
356
  if (aligned && aligned.includes('MSA') && units == NOTATION.SEPARATOR)
349
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 = positionShift > 0 ? g.measureText(shiftedLeftPaddingText).width : 0;
360
+ // currently selected position to highlight
361
+ const selectedPosition = Number.parseInt(tableCol.getTag(bioTAGS.selectedPosition) ?? '-200');
350
362
  const visibleSeqLength = Math.min(subParts.length, splitLimit);
351
363
  for (let posIdx = positionShift; posIdx < visibleSeqLength; ++posIdx) {
352
364
  const om = posIdx < subParts.length ? subParts.getOriginal(posIdx) : sh.defaultGapOriginal;
@@ -365,12 +377,22 @@ export class MonomerPlacer extends CellRendererBackBase {
365
377
  color: color, pivot: 0, left: true, transparencyRate: 1.0, separator: separator, last: last,
366
378
  drawStyle: drawStyle, maxWord: maxLengthWordsSum, wordIdx: posIdx - positionShift, gridCell: gridCell,
367
379
  referenceSequence: referenceSequence, maxLengthOfMonomer: maxLengthOfMonomer,
368
- monomerTextSizeMap: this._monomerLengthMap, logger: this.logger
380
+ monomerTextSizeMap: this._monomerLengthMap, logger: this.logger,
381
+ selectedPosition: isNaN(selectedPosition) || selectedPosition < 1 ? undefined : selectedPosition - positionShift,
369
382
  };
370
- printLeftOrCentered(g, om, x + this.padding, y, w, h, opts);
383
+ printLeftOrCentered(g, om, x + this.padding + this._leftThreeDotsPadding, y, w, h, opts);
371
384
  if (minDistanceRenderer > w)
372
385
  break;
373
386
  }
387
+ if (positionShift > 0) {
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);
395
+ }
374
396
  }
375
397
  catch (err) {
376
398
  const [errMsg, errStack] = errInfo(err);
@@ -388,6 +410,7 @@ export class MonomerPlacer extends CellRendererBackBase {
388
410
  return;
389
411
  // if (gridCell.cell.column.getTag(bioTAGS.aligned) !== ALIGNMENT.SEQ_MSA)
390
412
  // return;
413
+ const positionShift = this.positionShift;
391
414
  const gridCellBounds = gridCell.bounds;
392
415
  // const value: any = gridCell.cell.value;
393
416
  //
@@ -397,16 +420,17 @@ export class MonomerPlacer extends CellRendererBackBase {
397
420
  // maxLengthWordsSum[posI] = maxLengthWordsSum[posI - 1] + maxLengthWords[posI];
398
421
  // const maxIndex = maxLengthWords.length;
399
422
  const argsX = e.offsetX - gridCell.gridColumn.left + (gridCell.gridColumn.left - gridCellBounds.x);
400
- const left = this.getPosition(gridCell.tableRowIndex, argsX, gridCellBounds.width);
423
+ const leftPadding = positionShift > 0 && (this._leftThreeDotsPadding ?? 0) > 0 ? this._leftThreeDotsPadding : 0;
424
+ const left = this.getPosition(gridCell.tableRowIndex, argsX, gridCellBounds.width, leftPadding);
401
425
  this.logger.debug(`${logPrefix}, start, argsX: ${argsX}, left: ${left}`);
402
426
  const sh = this.seqHelper.getSeqHandler(this.tableCol);
403
427
  const seqSS = sh.getSplitted(gridCell.tableRowIndex);
404
- if (left !== null && left + this.positionShift < seqSS.length) {
428
+ if (left !== null && left >= 0 && left + positionShift < seqSS.length) {
405
429
  const alphabet = sh.alphabet ?? ALPHABET.UN;
406
430
  const seqMonomer = {
407
431
  position: left,
408
432
  biotype: alphabet === ALPHABET.RNA || alphabet === ALPHABET.DNA ? HelmTypes.NUCLEOTIDE : HelmTypes.AA,
409
- symbol: seqSS.getCanonical(left + this.positionShift),
433
+ symbol: seqSS.getCanonical(left + positionShift),
410
434
  };
411
435
  const tooltipElements = [];
412
436
  let monomerDiv = this._monomerStructureMap[seqMonomer.symbol];
@@ -422,8 +446,10 @@ export class MonomerPlacer extends CellRendererBackBase {
422
446
  execMonomerHoverLinks(gridCell, seqMonomer);
423
447
  }
424
448
  else {
425
- //
426
- ui.tooltip.hide();
449
+ if (left === -1)
450
+ ui.tooltip.show(ui.divText(`${Math.min(positionShift, seqSS.length)} hidden monomers`), e.x + 16, e.y + 16);
451
+ else
452
+ ui.tooltip.hide();
427
453
  execMonomerHoverLinks(gridCell, null);
428
454
  }
429
455
  }
@@ -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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"}
@@ -27,6 +27,7 @@ export declare const PrintOptionsDefaults: {
27
27
  [key: string]: TextMetrics;
28
28
  };
29
29
  /** */ logger?: ILogger;
30
+ selectedPosition?: number;
30
31
  };
31
32
  export type PrintOptions = typeof PrintOptionsDefaults;
32
33
  /** 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;CACtB,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,CAkER"}
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,CAsER"}
@@ -32,6 +32,7 @@ export const PrintOptionsDefaults = new class {
32
32
  /** Max length of a monomer */ this.maxLengthOfMonomer = null;
33
33
  /** Map of monomers' text sizes */ this.monomerTextSizeMap = {};
34
34
  /** */ this.logger = undefined;
35
+ this.selectedPosition = undefined;
35
36
  }
36
37
  }();
37
38
  /** A function that prints a string aligned to left or centered.
@@ -85,6 +86,10 @@ export function printLeftOrCentered(g, s, x, y, w, h, options) {
85
86
  }
86
87
  /** Draw color part at {@link dx1}, and gray part at {@link dx2}. */
87
88
  function draw(dx1, dx2) {
89
+ if (opts.selectedPosition === opts.wordIdx + 1) {
90
+ g.fillStyle = 'rgba(60, 177, 115, 0.2)'; // green for selected position
91
+ g.fillRect(x + dx1, y, maxColorTextSize, h);
92
+ }
88
93
  const drawColor = colorCode ? opts.color : blackColor;
89
94
  g.fillStyle = drawColor;
90
95
  g.globalAlpha = opts.transparencyRate;
@@ -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":"AAIA,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAGrD,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAC1C,MAAM,SAAS,GAAG,SAAS,CAAC;AAC5B,MAAM,UAAU,GAAG,YAAY,CAAC;AAChC,MAAM,sBAAsB,GAA0D,cAAc,CAAC;AAErG,MAAM,CAAN,IAAY,IAEX;AAFD,WAAY,IAAI;IACd,8DAAsD,CAAA;AACxD,CAAC,EAFW,IAAI,KAAJ,IAAI,QAEf;AAED,MAAM,CAAN,IAAY,qBAEX;AAFD,WAAY,qBAAqB;IAC/B,gFAAuD,CAAA;AACzD,CAAC,EAFW,qBAAqB,KAArB,qBAAqB,QAEhC;AAED,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,gCAAmB,CAAA;AACrB,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI;IAAA;QACtC,6BAA6B,CAAC,UAAK,GAAW,cAAc,CAAC;QAC7D,MAAM,CAAC,UAAK,GAAW,CAAC,CAAC;QACzB,sBAAsB,CAAC,SAAI,GAAY,KAAK,CAAC;QAC7C,uDAAuD,CAAC,qBAAgB,GAAW,GAAG,CAAC;QACvF,wCAAwC,CAAC,cAAS,GAAW,EAAE,CAAC;QAChE,wCAAwC,CAAC,SAAI,GAAY,KAAK,CAAC;QAC/D,iDAAiD,CAAC,cAAS,GAAc,SAAS,CAAC,OAAO,CAAC;QAC3F,oDAAoD,CAAC,YAAO,GAAa,EAAE,CAAC;QAC5E,mCAAmC,CAAC,YAAO,GAAW,CAAC,CAAC;QACxD,OAAO,CAAC,aAAQ,GAAuB,IAAI,CAAC;QAC5C,uCAAuC,CAAC,sBAAiB,GAAoB,IAAI,CAAC;QAClF,8BAA8B,CAAC,uBAAkB,GAAkB,IAAI,CAAC;QACxE,kCAAkC,CAAC,uBAAkB,GAAmC,EAAE,CAAC;QAC3F,MAAM,CAAC,WAAM,GAAa,SAAS,CAAC;QACpC,qBAAgB,GAAY,SAAS,CAAC;IACxC,CAAC;CAAA,EAAE,CAAC;AAIJ;;;;;;;;wDAQwD;AACxD,MAAM,UAAU,mBAAmB,CAAC,CAA2B,EAC7D,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,OAA8B;;IAErF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC,CAAC;IAE7E,MAAM,SAAS,GAAW,4BAA4B,CAAC;IACvD,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,SAAS,CAAC,CAAC;IAC7C,CAAC,CAAC,SAAS,GAAG,OAAO,CAAC;IACtB,IAAI,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IAC/C,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,GAAG;QAAE,QAAQ,GAAG,EAAE,CAAC;IACpD,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,kBAAkB,GAAG,IAAI,CAAC;IAC9B,IAAI,mBAAmB,GAAG,YAAY,CAAC;IACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;QACnE,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;QACjE,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,IAAI,CAAC;QACpF,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,YAAY,CAAC;IAC/F,CAAC;IAED,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,MAAM,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrE,IAAI,kBAAkB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,KAAK,YAAY,CAAC;YACrG,IAAI,CAAC,gBAAgB,GAAG,CAAC,SAAS,IAAI,uBAAuB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC/F,IAAI,kBAAkB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,KAAK,OAAO,CAAC;YAChG,IAAI,CAAC,gBAAgB,GAAG,CAAC,SAAS,IAAI,uBAAuB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACjG,CAAC;IACD,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI;QACjC,SAAS,GAAG,sBAAsB,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAEzE,MAAM,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACtC,MAAA,IAAI,CAAC,kBAAkB,EAAC,QAAQ,SAAR,QAAQ,IAAM,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAC;IAC9D,IAAI,QAAQ,GAAQ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAA,IAAI,CAAC,kBAAkB,EAAC,SAAS,SAAT,SAAS,IAAM,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,EAAC;IAChE,IAAI,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;IAChE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,qBAAqB,GAAG,QAAQ,CAAC,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE9F,MAAA,IAAI,CAAC,kBAAkB,EAAC,QAAQ,SAAR,QAAQ,IAAM,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAC;IAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;IAC7D,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC1B,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC;QACrC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,oEAAoE;IACpE,SAAS,IAAI,CAAC,GAAW,EAAE,GAAW;QACpC,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YAC/C,CAAC,CAAC,SAAS,GAAG,yBAAyB,CAAC,CAAC,8BAA8B;YACvE,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;QACtD,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC;QACxB,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACtC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;YACzC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YACvC,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC;YACxB,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,GAAG;YAClC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,MAAM,GAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,MAAM,GAAG,gBAAgB,GAAG,YAAY,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,gBAAgB,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,MAAM,GAAG,EAAE,GAAG,gBAAgB,CAAC;IAC5C,CAAC;AACH,CAAC"}
@@ -27,7 +27,8 @@ export declare enum TAGS {
27
27
  positionNames = ".positionNames",
28
28
  positionLabels = ".positionLabels",
29
29
  regions = ".regions",
30
- positionShift = ".positionShift"
30
+ positionShift = ".positionShift",
31
+ selectedPosition = ".selectedPosition"
31
32
  }
32
33
  export { TAGS as BioTags };
33
34
  export declare const positionSeparator: string;
@@ -1 +1 @@
1
- {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["consts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAEtC,0EAA0E;AAC1E,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,IAAI,SAAS;IACmB,MAAM,WAAW;CAClD;AAED,0BAAkB,SAAS;IACzB,OAAO,YAAY;IACnB,GAAG,QAAQ;CACZ;AAED,oBAAY,QAAQ;IAClB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,EAAE,OAAO;IACT,cAAc;IACd,EAAE,OAAO;CACV;AAED,oBAAY,IAAI;IACd,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,YAAY,kBAAkB;IAC9B,mBAAmB,yBAAyB;IAC5C,SAAS,cAAc;IACvB,gBAAgB,sBAAsB;IACtC,aAAa,mBAAmB;IAChC,cAAc,oBAAoB;IAClC,OAAO,aAAa;IACpB,aAAa,mBAAmB;CACjC;AAED,OAAO,EAAC,IAAI,IAAI,OAAO,EAAC,CAAC;AAEzB,eAAO,MAAM,iBAAiB,EAAE,MAAa,CAAC;AAE9C,eAAO,MAAM,SAAS,EAAE,MAAqD,CAAC;AAE9E,eAAO,MAAM,MAAM,EAAE,MAA0C,CAAC;AAChE,eAAO,MAAM,SAAS,EAAE,MAAyB,CAAC;AAElD,eAAO,MAAM,SAAS;;;;;;CASnB,CAAC;AAEJ,eAAO,MAAM,kBAAkB,EAAE,aAAa,EAI7C,CAAC;AAEF,2BAA2B;AAC3B,eAAO,MAAM,UAAU,EAAE,MAAW,CAAC;AAErC,eAAO,MAAM,YAAY,EAAE;IACzB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAKxB,CAAC"}
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["consts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAEtC,0EAA0E;AAC1E,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,IAAI,SAAS;IACmB,MAAM,WAAW;CAClD;AAED,0BAAkB,SAAS;IACzB,OAAO,YAAY;IACnB,GAAG,QAAQ;CACZ;AAED,oBAAY,QAAQ;IAClB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,EAAE,OAAO;IACT,cAAc;IACd,EAAE,OAAO;CACV;AAED,oBAAY,IAAI;IACd,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,YAAY,kBAAkB;IAC9B,mBAAmB,yBAAyB;IAC5C,SAAS,cAAc;IACvB,gBAAgB,sBAAsB;IACtC,aAAa,mBAAmB;IAChC,cAAc,oBAAoB;IAClC,OAAO,aAAa;IACpB,aAAa,mBAAmB;IAChC,gBAAgB,sBAAsB;CACvC;AAED,OAAO,EAAC,IAAI,IAAI,OAAO,EAAC,CAAC;AAEzB,eAAO,MAAM,iBAAiB,EAAE,MAAa,CAAC;AAE9C,eAAO,MAAM,SAAS,EAAE,MAAqD,CAAC;AAE9E,eAAO,MAAM,MAAM,EAAE,MAA0C,CAAC;AAChE,eAAO,MAAM,SAAS,EAAE,MAAyB,CAAC;AAElD,eAAO,MAAM,SAAS;;;;;;CASnB,CAAC;AAEJ,eAAO,MAAM,kBAAkB,EAAE,aAAa,EAI7C,CAAC;AAEF,2BAA2B;AAC3B,eAAO,MAAM,UAAU,EAAE,MAAW,CAAC;AAErC,eAAO,MAAM,YAAY,EAAE;IACzB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAKxB,CAAC"}
@@ -27,6 +27,7 @@ export var TAGS;
27
27
  TAGS["positionLabels"] = ".positionLabels";
28
28
  TAGS["regions"] = ".regions";
29
29
  TAGS["positionShift"] = ".positionShift";
30
+ TAGS["selectedPosition"] = ".selectedPosition";
30
31
  })(TAGS || (TAGS = {}));
31
32
  export { TAGS as BioTags };
32
33
  export const positionSeparator = ', ';
@@ -1 +1 @@
1
- {"version":3,"file":"consts.js","sourceRoot":"","sources":["consts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAEtC,0EAA0E;AAC1E,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,2BAAe,CAAA;IACf,mCAAuB,CAAA;IACvB,yBAAa,CAAA;IACb,+BAA+B,CAAC,6BAAiB,CAAA;AACnD,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AAOD,MAAM,CAAN,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,uBAAW,CAAA;IACX,uBAAW,CAAA;IACX,qBAAS,CAAA;IACT,cAAc;IACd,qBAAS,CAAA;AACX,CAAC,EANW,QAAQ,KAAR,QAAQ,QAMnB;AAED,MAAM,CAAN,IAAY,IAWX;AAXD,WAAY,IAAI;IACd,2BAAmB,CAAA;IACnB,6BAAqB,CAAA;IACrB,sCAA8B,CAAA;IAC9B,oDAA4C,CAAA;IAC5C,+BAAuB,CAAA;IACvB,8CAAsC,CAAA;IACtC,wCAAgC,CAAA;IAChC,0CAAkC,CAAA;IAClC,4BAAoB,CAAA;IACpB,wCAAgC,CAAA;AAClC,CAAC,EAXW,IAAI,KAAJ,IAAI,QAWf;AAED,OAAO,EAAC,IAAI,IAAI,OAAO,EAAC,CAAC;AAEzB,MAAM,CAAC,MAAM,iBAAiB,GAAW,IAAI,CAAC;AAE9C,MAAM,CAAC,MAAM,SAAS,GAAW,4CAA4C,CAAC;AAE9E,MAAM,CAAC,MAAM,MAAM,GAAW,iCAAiC,CAAC;AAChE,MAAM,CAAC,MAAM,SAAS,GAAW,gBAAgB,CAAC;AAElD,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI;IAAA;QAC3B,UAAK,GAAG;YACN,OAAO,EAAE,IAAI,GAAG,CAAS;gBACvB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;gBAChD,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;aACjD,CAAC;YACF,GAAG,EAAE,IAAI,GAAG,CAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAC1C,GAAG,EAAE,IAAI,GAAG,CAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;SAC3C,CAAC;IACJ,CAAC;CAAA,EAAE,CAAC;AAEJ,MAAM,CAAC,MAAM,kBAAkB,GAAoB;IACjD,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;IAC7D,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;IAC1D,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;CAC3D,CAAC;AAEF,2BAA2B;AAC3B,MAAM,CAAC,MAAM,UAAU,GAAW,EAAE,CAAC;AAErC,MAAM,CAAC,MAAM,YAAY,GAErB;IACF,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG;IACrB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE;IACxB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG;CACrB,CAAC"}
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["consts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAEtC,0EAA0E;AAC1E,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,2BAAe,CAAA;IACf,mCAAuB,CAAA;IACvB,yBAAa,CAAA;IACb,+BAA+B,CAAC,6BAAiB,CAAA;AACnD,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AAOD,MAAM,CAAN,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,uBAAW,CAAA;IACX,uBAAW,CAAA;IACX,qBAAS,CAAA;IACT,cAAc;IACd,qBAAS,CAAA;AACX,CAAC,EANW,QAAQ,KAAR,QAAQ,QAMnB;AAED,MAAM,CAAN,IAAY,IAYX;AAZD,WAAY,IAAI;IACd,2BAAmB,CAAA;IACnB,6BAAqB,CAAA;IACrB,sCAA8B,CAAA;IAC9B,oDAA4C,CAAA;IAC5C,+BAAuB,CAAA;IACvB,8CAAsC,CAAA;IACtC,wCAAgC,CAAA;IAChC,0CAAkC,CAAA;IAClC,4BAAoB,CAAA;IACpB,wCAAgC,CAAA;IAChC,8CAAsC,CAAA;AACxC,CAAC,EAZW,IAAI,KAAJ,IAAI,QAYf;AAED,OAAO,EAAC,IAAI,IAAI,OAAO,EAAC,CAAC;AAEzB,MAAM,CAAC,MAAM,iBAAiB,GAAW,IAAI,CAAC;AAE9C,MAAM,CAAC,MAAM,SAAS,GAAW,4CAA4C,CAAC;AAE9E,MAAM,CAAC,MAAM,MAAM,GAAW,iCAAiC,CAAC;AAChE,MAAM,CAAC,MAAM,SAAS,GAAW,gBAAgB,CAAC;AAElD,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI;IAAA;QAC3B,UAAK,GAAG;YACN,OAAO,EAAE,IAAI,GAAG,CAAS;gBACvB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;gBAChD,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;aACjD,CAAC;YACF,GAAG,EAAE,IAAI,GAAG,CAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAC1C,GAAG,EAAE,IAAI,GAAG,CAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;SAC3C,CAAC;IACJ,CAAC;CAAA,EAAE,CAAC;AAEJ,MAAM,CAAC,MAAM,kBAAkB,GAAoB;IACjD,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;IAC7D,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;IAC1D,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;CAC3D,CAAC;AAEF,2BAA2B;AAC3B,MAAM,CAAC,MAAM,UAAU,GAAW,EAAE,CAAC;AAErC,MAAM,CAAC,MAAM,YAAY,GAErB;IACF,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG;IACrB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE;IACxB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG;CACrB,CAAC"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * MSAHeader.ts - Interactive MSA Header Component
3
+ * This module provides functionality for an interactive MSA (Multiple Sequence Alignment) header
4
+ * with position markers, slider navigation, and position selection.
5
+ */
6
+ interface WindowRange {
7
+ start: number;
8
+ end: number;
9
+ }
10
+ interface MSAHeaderOptions {
11
+ canvas: HTMLCanvasElement;
12
+ totalPositions?: number;
13
+ positionWidth?: number;
14
+ headerHeight?: number;
15
+ sliderHeight?: number;
16
+ currentPosition?: number;
17
+ windowStartPosition?: number;
18
+ cellBackground?: boolean;
19
+ sliderColor?: string;
20
+ x?: number;
21
+ y?: number;
22
+ width?: number;
23
+ height?: number;
24
+ onPositionChange?: (position: number, range: WindowRange) => void;
25
+ }
26
+ interface Preventable {
27
+ preventDefault: () => void;
28
+ }
29
+ export declare class MSAScrollingHeader {
30
+ private config;
31
+ private state;
32
+ private canvas;
33
+ private ctx;
34
+ private eventElement;
35
+ /**
36
+ * Constructor for the MSA Header
37
+ * @param {MSAHeaderOptions} options - Configuration options
38
+ */
39
+ constructor(options: MSAHeaderOptions);
40
+ /**
41
+ * Initialize the component
42
+ */
43
+ private init;
44
+ get isValid(): boolean;
45
+ draw(x: number, y: number, w: number, h: number, currentPos: number, scrollerStart: number, preventable: Preventable): void;
46
+ getCoords(e: MouseEvent): {
47
+ x: number;
48
+ y: number;
49
+ };
50
+ isInHeaderArea(e: MouseEvent): boolean;
51
+ get positionWidth(): number;
52
+ set positionWidth(value: number);
53
+ isInSliderArea(e: MouseEvent): boolean;
54
+ get sliderWidth(): number;
55
+ isInSliderDraggableArea(e: MouseEvent): boolean;
56
+ /**
57
+ * Handle mouse down (start dragging)
58
+ * @param {MouseEvent} e - Mouse event
59
+ */
60
+ private handleMouseDown;
61
+ private handleMouseWheel;
62
+ /**
63
+ * Handle mouse move (dragging)
64
+ * @param {MouseEvent} e - Mouse event
65
+ */
66
+ private handleMouseMove;
67
+ private handleKeyDown;
68
+ /**
69
+ * Handle mouse up (end dragging)
70
+ */
71
+ private handleMouseUp;
72
+ /**
73
+ * Handle slider drag
74
+ * @param {number} x - X position of mouse
75
+ */
76
+ private handleSliderDrag;
77
+ get headerHeight(): number;
78
+ /** Soft setting of header hight, without redrawing or update event
79
+ * @param {number} value - New header height
80
+ */
81
+ set headerHeight(value: number);
82
+ /**
83
+ * Handle click on positions
84
+ * @param {MouseEvent} e - Mouse event
85
+ */
86
+ private handleClick;
87
+ /**
88
+ * Get the current window range
89
+ * @return {WindowRange} Object with start and end properties
90
+ */
91
+ getWindowRange(): WindowRange;
92
+ /**
93
+ * Update configuration
94
+ * @param {MSAHeaderOptions} newConfig - New configuration options
95
+ */
96
+ updateConfig(newConfig: Partial<MSAHeaderOptions>): void;
97
+ /**
98
+ * Get current position
99
+ * @return {number} Current position
100
+ */
101
+ getCurrentPosition(): number;
102
+ /**
103
+ * Set current position
104
+ * @param {number} position - New position
105
+ */
106
+ setCurrentPosition(position: number): void;
107
+ }
108
+ export {};
109
+ //# sourceMappingURL=sequence-position-scroller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequence-position-scroller.d.ts","sourceRoot":"","sources":["sequence-position-scroller.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAOH,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAGD,UAAU,gBAAgB;IACxB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CACnE;AAED,UAAU,WAAW;IACnB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAQD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,GAAG,CAAyC;IACpD,OAAO,CAAC,YAAY,CAAiB;IAErC;;;OAGG;gBACS,OAAO,EAAE,gBAAgB;IA+BrC;;OAEG;IACH,OAAO,CAAC,IAAI;IAyBZ,IAAW,OAAO,YAEjB;IAEM,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI;IA0HlI,SAAS,CAAC,CAAC,EAAE,UAAU;;;;IAOvB,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO;IAKtC,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAW,aAAa,CAAC,KAAK,EAAE,MAAM,EAErC;IAED,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO;IAMtC,IAAI,WAAW,IAAI,MAAM,CAIxB;IAED,uBAAuB,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO;IAU/C;;;OAGG;IACH,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,gBAAgB;IA0BxB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,aAAa;IAoCrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAmBxB,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;OAEG;IACH,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,EAE7B;IAED;;;OAGG;IACH,OAAO,CAAC,WAAW;IA4BnB;;;OAGG;IACI,cAAc,IAAI,WAAW;IAOpC;;;OAGG;IACI,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAY/D;;;OAGG;IACI,kBAAkB,IAAI,MAAM;IAInC;;;OAGG;IACI,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAQlD"}
@@ -0,0 +1,394 @@
1
+ /* eslint-disable max-len */
2
+ /**
3
+ * MSAHeader.ts - Interactive MSA Header Component
4
+ * This module provides functionality for an interactive MSA (Multiple Sequence Alignment) header
5
+ * with position markers, slider navigation, and position selection.
6
+ */
7
+ import * as ui from 'datagrok-api/ui';
8
+ export class MSAScrollingHeader {
9
+ /**
10
+ * Constructor for the MSA Header
11
+ * @param {MSAHeaderOptions} options - Configuration options
12
+ */
13
+ constructor(options) {
14
+ this.canvas = null;
15
+ this.ctx = null;
16
+ // Default configuration with required fields
17
+ this.config = {
18
+ x: options.x || 0,
19
+ y: options.y || 0,
20
+ width: options.width || 0,
21
+ height: options.height || 0,
22
+ windowStartPosition: options.windowStartPosition || 1,
23
+ positionWidth: options.positionWidth || 15,
24
+ totalPositions: options.totalPositions || 5000,
25
+ headerHeight: options.headerHeight || 50,
26
+ sliderHeight: options.sliderHeight || 8,
27
+ currentPosition: options.currentPosition || 1,
28
+ cellBackground: options.cellBackground !== undefined ? options.cellBackground : true,
29
+ sliderColor: options.sliderColor || 'rgba(220, 220, 220, 0.4)',
30
+ onPositionChange: options.onPositionChange || ((_, __) => { }),
31
+ ...options // Override defaults with any provided options
32
+ };
33
+ this.eventElement = ui.div();
34
+ this.eventElement.style.position = 'absolute';
35
+ this.config.canvas.parentElement?.appendChild(this.eventElement);
36
+ // Internal state
37
+ this.state = {
38
+ isDragging: false,
39
+ dragStartX: 0
40
+ };
41
+ this.init();
42
+ }
43
+ /**
44
+ * Initialize the component
45
+ */
46
+ init() {
47
+ // Get canvas and context
48
+ this.canvas = this.config.canvas;
49
+ if (!this.canvas) {
50
+ console.error(`canvas not found.`);
51
+ return;
52
+ }
53
+ const context = this.canvas.getContext('2d');
54
+ if (!context) {
55
+ console.error('Failed to get 2D context from canvas');
56
+ return;
57
+ }
58
+ this.ctx = context;
59
+ // Add event listeners
60
+ this.eventElement.addEventListener('mousedown', this.handleMouseDown.bind(this));
61
+ this.eventElement.addEventListener('mousemove', this.handleMouseMove.bind(this));
62
+ this.eventElement.addEventListener('mouseup', this.handleMouseUp.bind(this));
63
+ this.eventElement.addEventListener('mouseleave', this.handleMouseUp.bind(this));
64
+ this.eventElement.addEventListener('click', this.handleClick.bind(this));
65
+ this.eventElement.addEventListener('wheel', this.handleMouseWheel.bind(this));
66
+ window.addEventListener('keydown', this.handleKeyDown.bind(this));
67
+ }
68
+ get isValid() {
69
+ return !!this.canvas && !!this.ctx && this.config.height >= this.config.headerHeight;
70
+ }
71
+ draw(x, y, w, h, currentPos, scrollerStart, preventable) {
72
+ // soft internal update
73
+ if (this.config.x != x || this.config.y != y || this.config.width != w || this.config.height != h || this.config.currentPosition != currentPos || this.config.windowStartPosition != scrollerStart)
74
+ Object.assign(this.config, { x, y, width: w, height: h, currentPosition: currentPos, windowStartPosition: scrollerStart });
75
+ if (!this.isValid) {
76
+ this.eventElement.style.display = 'none';
77
+ return;
78
+ }
79
+ this.ctx.save();
80
+ // Clear canvas
81
+ this.ctx.clearRect(x, y, w, h);
82
+ this.ctx.translate(x, y);
83
+ this.ctx.rect(0, 0, w, h);
84
+ this.ctx.clip();
85
+ // Calculate dimensions
86
+ const canvasWidth = w;
87
+ const canvasHeight = h;
88
+ const topPadding = 5;
89
+ const posIndexTop = topPadding;
90
+ const sliderTop = this.config.headerHeight - this.config.sliderHeight;
91
+ // Draw the full sequence slider bar (very subtle gray bar)
92
+ this.ctx.fillStyle = this.config.sliderColor;
93
+ this.ctx.fillRect(0, sliderTop, canvasWidth, this.config.sliderHeight);
94
+ const visiblePositionsN = Math.floor(this.config.width / this.config.positionWidth);
95
+ const windowStart = Math.max(1, this.config.windowStartPosition);
96
+ // Calculate slider position on the bar
97
+ const totalSliderRange = this.config.totalPositions - visiblePositionsN;
98
+ const sliderStartPX = totalSliderRange <= 0 ? 0 :
99
+ windowStart / (this.config.totalPositions) * (canvasWidth - this.sliderWidth);
100
+ const sliderLengthPX = totalSliderRange <= 0 ? canvasWidth :
101
+ this.sliderWidth;
102
+ // Draw slider window (darker rectangle)
103
+ this.ctx.fillStyle = 'rgba(150, 150, 150, 0.5)';
104
+ this.ctx.fillRect(sliderStartPX, sliderTop, sliderLengthPX, this.config.sliderHeight);
105
+ if (this.config.currentPosition >= 1 && this.config.currentPosition <= this.config.totalPositions) {
106
+ // Calculate the position of the current selection as a proportion of total sequence
107
+ const currentPositionRatio = (this.config.currentPosition - 1) / (this.config.totalPositions - 1);
108
+ const notchX = Math.round(currentPositionRatio * canvasWidth);
109
+ // Draw a 3px thick vertical green marker at this position
110
+ this.ctx.fillStyle = '#3CB173'; // Same green as the cell highlight
111
+ this.ctx.fillRect(notchX - 1, // Center the 3px marker on the calculated position
112
+ sliderTop - 2, // Extend the marker 2px above the scrollbar
113
+ 3, // 3px width as requested
114
+ this.config.sliderHeight + 4 // Make the marker taller than the scrollbar
115
+ );
116
+ }
117
+ // Draw position marks and indices
118
+ for (let i = 0; i < visiblePositionsN; i++) {
119
+ const position = windowStart + i;
120
+ if (position > this.config.totalPositions)
121
+ break;
122
+ const x = i * this.config.positionWidth;
123
+ const cellWidth = this.config.positionWidth;
124
+ const cellCenterX = x + cellWidth / 2;
125
+ // Draw cell background for monospace appearance
126
+ if (this.config.cellBackground) {
127
+ // Very light alternating cell background
128
+ this.ctx.fillStyle = i % 2 === 0 ? 'rgba(248, 248, 248, 0.3)' : 'rgba(242, 242, 242, 0.2)';
129
+ this.ctx.fillRect(x, posIndexTop, cellWidth, Math.min(this.config.headerHeight - topPadding, canvasHeight - posIndexTop) - this.config.sliderHeight);
130
+ // Cell borders - very light vertical lines
131
+ this.ctx.strokeStyle = 'rgba(220, 220, 220, 0.7)';
132
+ this.ctx.beginPath();
133
+ this.ctx.moveTo(x, posIndexTop);
134
+ this.ctx.lineTo(x, Math.min(this.config.headerHeight, canvasHeight) - this.config.sliderHeight);
135
+ this.ctx.stroke();
136
+ }
137
+ // Draw position dot for every position - centered in cell
138
+ this.ctx.fillStyle = '#999999';
139
+ this.ctx.beginPath();
140
+ this.ctx.arc(cellCenterX, posIndexTop * 2, 1, 0, Math.PI * 2);
141
+ this.ctx.fill();
142
+ // Draw position number for every 10th position, on the current position and also make sure that the number is not obstructed by some other numbers
143
+ if (position === this.config.currentPosition || ((position === 1 || position % 10 === 0) && Math.abs(position - this.config.currentPosition) > 1)) {
144
+ this.ctx.fillStyle = '#333333';
145
+ this.ctx.font = '12px monospace';
146
+ this.ctx.textAlign = 'center';
147
+ this.ctx.textBaseline = 'middle';
148
+ this.ctx.fillText(position.toString(), cellCenterX, posIndexTop * 4);
149
+ }
150
+ // Highlight current selected position with square marker
151
+ // if current is outside the range, draw it at the end
152
+ if (position === this.config.currentPosition) {
153
+ // Draw filled background with 50% opacity
154
+ this.ctx.fillStyle = 'rgba(60, 177, 115, 0.2)';
155
+ this.ctx.fillRect(x, 0, cellWidth, sliderTop);
156
+ }
157
+ }
158
+ this.ctx.restore();
159
+ // Prevent default behavior if in header area
160
+ preventable.preventDefault();
161
+ this.eventElement.style.display = 'block';
162
+ this.eventElement.style.left = `${this.config.x}px`;
163
+ this.eventElement.style.top = `${this.config.y}px`;
164
+ this.eventElement.style.width = `${this.config.width}px`;
165
+ this.eventElement.style.height = `${this.config.height}px`;
166
+ }
167
+ getCoords(e) {
168
+ const rect = this.canvas.getBoundingClientRect();
169
+ const x = e.clientX - rect.left - this.config.x;
170
+ const y = e.clientY - rect.top - this.config.y;
171
+ return { x, y };
172
+ }
173
+ isInHeaderArea(e) {
174
+ const { x, y } = this.getCoords(e);
175
+ return x >= 0 && x <= this.config.width && y >= 0 && y <= this.config.headerHeight;
176
+ }
177
+ get positionWidth() {
178
+ return this.config.positionWidth;
179
+ }
180
+ set positionWidth(value) {
181
+ this.config.positionWidth = value;
182
+ }
183
+ isInSliderArea(e) {
184
+ const { y } = this.getCoords(e);
185
+ const sliderTop = this.config.headerHeight - this.config.sliderHeight;
186
+ return y > sliderTop && y < sliderTop + this.config.sliderHeight;
187
+ }
188
+ get sliderWidth() {
189
+ const pseudoPositionWidth = this.config.width / this.config.totalPositions;
190
+ const w = pseudoPositionWidth * (this.config.width / this.config.positionWidth);
191
+ return Math.max(w, 20);
192
+ }
193
+ isInSliderDraggableArea(e) {
194
+ const { x, y } = this.getCoords(e);
195
+ const sliderTop = this.config.headerHeight - this.config.sliderHeight;
196
+ const startSeqX = this.config.windowStartPosition;
197
+ const pseudoPositionWidth = (this.config.width - this.sliderWidth) / this.config.totalPositions;
198
+ const startSliderXPX = (startSeqX - 1) * pseudoPositionWidth;
199
+ const endSliderXPX = startSliderXPX + this.sliderWidth;
200
+ return y > sliderTop && y < sliderTop + this.config.sliderHeight && x >= startSliderXPX && x < endSliderXPX;
201
+ }
202
+ /**
203
+ * Handle mouse down (start dragging)
204
+ * @param {MouseEvent} e - Mouse event
205
+ */
206
+ handleMouseDown(e) {
207
+ if (!this.isValid)
208
+ return;
209
+ const { x } = this.getCoords(e);
210
+ if (this.isInSliderDraggableArea(e)) {
211
+ this.state.isDragging = true;
212
+ this.state.dragStartX = x;
213
+ this.handleSliderDrag(x);
214
+ e.preventDefault();
215
+ e.stopPropagation();
216
+ e.stopImmediatePropagation();
217
+ }
218
+ }
219
+ handleMouseWheel(e) {
220
+ if (!this.isValid)
221
+ return;
222
+ if (this.isInHeaderArea(e)) {
223
+ e.preventDefault();
224
+ e.stopPropagation();
225
+ e.stopImmediatePropagation();
226
+ // Determine scroll direction and amount
227
+ // Use deltaX if available (for horizontal scrolling devices)
228
+ // otherwise use deltaY with shift key for horizontal scroll
229
+ const delta = e.shiftKey ? Math.sign(e.deltaY) : Math.sign(e.deltaX || e.deltaY);
230
+ // Move by 1 position or more for faster scrolling (optional)
231
+ const scrollSpeed = e.shiftKey ? 3 : 1; // Faster scrolling with shift
232
+ const newStartPosition = this.config.windowStartPosition + (delta * scrollSpeed);
233
+ // Clamp to valid range
234
+ const visiblePositions = Math.floor(this.config.width / this.config.positionWidth);
235
+ const maxStart = this.config.totalPositions - visiblePositions + 1;
236
+ this.config.windowStartPosition = Math.max(1, Math.min(maxStart, newStartPosition));
237
+ if (typeof this.config.onPositionChange === 'function')
238
+ this.config.onPositionChange(this.config.currentPosition, this.getWindowRange());
239
+ }
240
+ }
241
+ /**
242
+ * Handle mouse move (dragging)
243
+ * @param {MouseEvent} e - Mouse event
244
+ */
245
+ handleMouseMove(e) {
246
+ if (!this.state.isDragging || !this.isValid)
247
+ return;
248
+ const rect = this.canvas.getBoundingClientRect();
249
+ const x = e.clientX - rect.left - this.config.x;
250
+ this.handleSliderDrag(x);
251
+ e.preventDefault();
252
+ e.stopPropagation();
253
+ e.stopImmediatePropagation();
254
+ }
255
+ handleKeyDown(e) {
256
+ if (!this.isValid || this.config.currentPosition < 1)
257
+ return;
258
+ if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {
259
+ e.preventDefault();
260
+ e.stopPropagation();
261
+ e.stopImmediatePropagation();
262
+ // Determine scroll direction
263
+ const delta = e.key === 'ArrowLeft' ? -1 : 1;
264
+ const newPosition = Math.min(Math.max(this.config.currentPosition + delta, 1), this.config.totalPositions);
265
+ if (newPosition === this.config.currentPosition)
266
+ return;
267
+ this.config.currentPosition = newPosition;
268
+ // make sure that the cureent position is visible
269
+ const visiblePositions = Math.floor(this.config.width / this.config.positionWidth);
270
+ const start = this.config.windowStartPosition;
271
+ const end = start + visiblePositions - 1;
272
+ if (newPosition < start || newPosition > end) {
273
+ if (delta < 0)
274
+ this.config.windowStartPosition = newPosition;
275
+ else
276
+ this.config.windowStartPosition = Math.max(1, newPosition - visiblePositions + 1);
277
+ }
278
+ }
279
+ else if (e.key === 'Escape') {
280
+ // reset the current position
281
+ this.config.currentPosition = -2;
282
+ e.preventDefault();
283
+ e.stopPropagation();
284
+ e.stopImmediatePropagation();
285
+ }
286
+ else
287
+ return;
288
+ if (typeof this.config.onPositionChange === 'function')
289
+ this.config.onPositionChange(this.config.currentPosition, this.getWindowRange());
290
+ }
291
+ /**
292
+ * Handle mouse up (end dragging)
293
+ */
294
+ handleMouseUp() {
295
+ this.state.isDragging = false;
296
+ }
297
+ /**
298
+ * Handle slider drag
299
+ * @param {number} x - X position of mouse
300
+ */
301
+ handleSliderDrag(x) {
302
+ if (!this.isValid)
303
+ return;
304
+ const sliderWidth = this.sliderWidth;
305
+ // Calculate the position based on the drag position
306
+ const canvasWidth = this.config.width - sliderWidth;
307
+ const normalizedX = Math.max(0, Math.min(this.config.width, x));
308
+ // this shows how many positions are in one pixel
309
+ const pseudoPositionWidth = canvasWidth / this.config.totalPositions;
310
+ const fittedPositions = Math.floor(this.config.width / this.config.positionWidth);
311
+ // we add these positions so that it feels like we are grabbing the slider by its center
312
+ this.config.windowStartPosition = Math.max(1, Math.min(Math.round((normalizedX - sliderWidth / 2) / pseudoPositionWidth), this.config.totalPositions - fittedPositions + 1));
313
+ // Call callback if defined
314
+ if (typeof this.config.onPositionChange === 'function')
315
+ this.config.onPositionChange(this.config.currentPosition, this.getWindowRange());
316
+ }
317
+ get headerHeight() {
318
+ return this.config.headerHeight;
319
+ }
320
+ /** Soft setting of header hight, without redrawing or update event
321
+ * @param {number} value - New header height
322
+ */
323
+ set headerHeight(value) {
324
+ this.config.headerHeight = value;
325
+ }
326
+ /**
327
+ * Handle click on positions
328
+ * @param {MouseEvent} e - Mouse event
329
+ */
330
+ handleClick(e) {
331
+ if (!this.isValid)
332
+ return;
333
+ // Get calculated coordinates
334
+ const { x, y } = this.getCoords(e);
335
+ const sliderTop = this.config.headerHeight - this.config.sliderHeight;
336
+ if (y < sliderTop && y >= 0) {
337
+ // Calculate which position was clicked
338
+ const cellWidth = this.config.positionWidth;
339
+ const clickedCellIndex = Math.round(x / cellWidth - 0.5);
340
+ // Calculate actual position in sequence
341
+ const windowStart = this.config.windowStartPosition;
342
+ const clickedPosition = windowStart + clickedCellIndex;
343
+ // Update current position if valid
344
+ if (clickedPosition >= 1 && clickedPosition <= this.config.totalPositions) {
345
+ this.config.currentPosition = clickedPosition;
346
+ // Call callback if defined
347
+ if (typeof this.config.onPositionChange === 'function')
348
+ this.config.onPositionChange(this.config.currentPosition, this.getWindowRange());
349
+ }
350
+ }
351
+ }
352
+ /**
353
+ * Get the current window range
354
+ * @return {WindowRange} Object with start and end properties
355
+ */
356
+ getWindowRange() {
357
+ return {
358
+ start: this.config.windowStartPosition,
359
+ end: Math.min(this.config.totalPositions, this.config.windowStartPosition + Math.floor(this.config.width / this.config.positionWidth))
360
+ };
361
+ }
362
+ /**
363
+ * Update configuration
364
+ * @param {MSAHeaderOptions} newConfig - New configuration options
365
+ */
366
+ updateConfig(newConfig) {
367
+ // Update config with new values
368
+ Object.assign(this.config, newConfig);
369
+ // Ensure current position is still valid
370
+ this.config.currentPosition = Math.min(this.config.currentPosition, this.config.totalPositions);
371
+ // Call callback if defined
372
+ if (typeof this.config.onPositionChange === 'function')
373
+ this.config.onPositionChange(this.config.currentPosition, this.getWindowRange());
374
+ }
375
+ /**
376
+ * Get current position
377
+ * @return {number} Current position
378
+ */
379
+ getCurrentPosition() {
380
+ return this.config.currentPosition;
381
+ }
382
+ /**
383
+ * Set current position
384
+ * @param {number} position - New position
385
+ */
386
+ setCurrentPosition(position) {
387
+ // Clamp to valid range
388
+ this.config.currentPosition = Math.max(1, Math.min(this.config.totalPositions, position));
389
+ // Call callback if defined
390
+ if (typeof this.config.onPositionChange === 'function')
391
+ this.config.onPositionChange(this.config.currentPosition, this.getWindowRange());
392
+ }
393
+ }
394
+ //# sourceMappingURL=sequence-position-scroller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequence-position-scroller.js","sourceRoot":"","sources":["sequence-position-scroller.ts"],"names":[],"mappings":"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"}