jbrowse-plugin-mafviewer 1.3.2 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +0 -47
  2. package/dist/LinearMafRenderer/LinearMafRenderer.d.ts +9 -3
  3. package/dist/LinearMafRenderer/components/LinearMafRendering.d.ts +13 -0
  4. package/dist/LinearMafRenderer/components/LinearMafRendering.js +46 -0
  5. package/dist/LinearMafRenderer/components/LinearMafRendering.js.map +1 -0
  6. package/dist/LinearMafRenderer/index.js +1 -1
  7. package/dist/LinearMafRenderer/index.js.map +1 -1
  8. package/dist/LinearMafRenderer/makeImageData.d.ts +3 -1
  9. package/dist/LinearMafRenderer/makeImageData.js +11 -4
  10. package/dist/LinearMafRenderer/makeImageData.js.map +1 -1
  11. package/dist/LinearMafRenderer/rendering/features.d.ts +0 -17
  12. package/dist/LinearMafRenderer/rendering/features.js +4 -21
  13. package/dist/LinearMafRenderer/rendering/features.js.map +1 -1
  14. package/dist/LinearMafRenderer/rendering/gaps.d.ts +1 -11
  15. package/dist/LinearMafRenderer/rendering/gaps.js +1 -17
  16. package/dist/LinearMafRenderer/rendering/gaps.js.map +1 -1
  17. package/dist/LinearMafRenderer/rendering/insertions.d.ts +1 -13
  18. package/dist/LinearMafRenderer/rendering/insertions.js +9 -15
  19. package/dist/LinearMafRenderer/rendering/insertions.js.map +1 -1
  20. package/dist/LinearMafRenderer/rendering/matches.d.ts +1 -12
  21. package/dist/LinearMafRenderer/rendering/matches.js +8 -15
  22. package/dist/LinearMafRenderer/rendering/matches.js.map +1 -1
  23. package/dist/LinearMafRenderer/rendering/mismatches.d.ts +1 -1
  24. package/dist/LinearMafRenderer/rendering/mismatches.js +14 -4
  25. package/dist/LinearMafRenderer/rendering/mismatches.js.map +1 -1
  26. package/dist/LinearMafRenderer/rendering/spatialIndex.d.ts +7 -58
  27. package/dist/LinearMafRenderer/rendering/spatialIndex.js +5 -85
  28. package/dist/LinearMafRenderer/rendering/spatialIndex.js.map +1 -1
  29. package/dist/LinearMafRenderer/rendering/types.d.ts +4 -16
  30. package/dist/LinearMafRenderer/rendering/types.js.map +1 -1
  31. package/dist/MafAddTrackWorkflow/AddTrackWorkflow.js +37 -35
  32. package/dist/MafAddTrackWorkflow/AddTrackWorkflow.js.map +1 -1
  33. package/dist/index.js +0 -2
  34. package/dist/index.js.map +1 -1
  35. package/dist/jbrowse-plugin-mafviewer.umd.production.min.js +5 -28
  36. package/dist/jbrowse-plugin-mafviewer.umd.production.min.js.map +4 -4
  37. package/dist/out.js +12955 -15165
  38. package/dist/out.js.map +4 -4
  39. package/package.json +3 -4
  40. package/src/LinearMafRenderer/components/{ReactComponent.tsx → LinearMafRendering.tsx} +16 -21
  41. package/src/LinearMafRenderer/index.ts +1 -1
  42. package/src/LinearMafRenderer/makeImageData.ts +20 -5
  43. package/src/LinearMafRenderer/rendering/features.ts +4 -31
  44. package/src/LinearMafRenderer/rendering/gaps.ts +0 -38
  45. package/src/LinearMafRenderer/rendering/insertions.ts +12 -28
  46. package/src/LinearMafRenderer/rendering/matches.ts +13 -30
  47. package/src/LinearMafRenderer/rendering/mismatches.ts +20 -32
  48. package/src/LinearMafRenderer/rendering/spatialIndex.ts +9 -105
  49. package/src/LinearMafRenderer/rendering/types.ts +4 -20
  50. package/src/MafAddTrackWorkflow/AddTrackWorkflow.tsx +5 -6
  51. package/src/index.ts +0 -2
  52. package/src/BgzipTaffyAdapter/BgzipTaffyAdapter.ts +0 -307
  53. package/src/BgzipTaffyAdapter/configSchema.ts +0 -59
  54. package/src/BgzipTaffyAdapter/index.ts +0 -16
  55. package/src/BgzipTaffyAdapter/rowInstructions.ts +0 -91
  56. package/src/BgzipTaffyAdapter/types.ts +0 -16
  57. package/src/BgzipTaffyAdapter/util.ts +0 -25
  58. package/src/BgzipTaffyAdapter/virtualOffset.ts +0 -29
package/README.md CHANGED
@@ -92,36 +92,6 @@ can use nhLocation or samples array on adapter
92
92
  }
93
93
  ```
94
94
 
95
- ### Example BgzipTaffyAdapter config
96
-
97
- Note: TAF files are actually significantly slower and has known bugs...will
98
- update once fixed
99
-
100
- This notice will be removed it it is improved
101
-
102
- As with other adapters, you can use nhLocation or samples array on adapter
103
-
104
- ```json
105
- {
106
- "type": "MafTrack",
107
- "trackId": "bigMaf",
108
- "name": "taffy",
109
- "adapter": {
110
- "type": "BgzipTaffyAdapter",
111
- "nhLocation": {
112
- "uri": "hg38.30way.nh"
113
- },
114
- "tafGzLocation": {
115
- "uri": "30way.taf.gz"
116
- },
117
- "taiGzLocation": {
118
- "uri": "30way.taf.gz.tai"
119
- }
120
- },
121
- "assemblyNames": ["hg38"]
122
- }
123
- ```
124
-
125
95
  ### Example with customized sample names and colors
126
96
 
127
97
  ```json
@@ -191,9 +161,6 @@ the case
191
161
  2. MAF tabix based format, based on a custom BED created via conversion tools in
192
162
  this repo (see maf2bed)
193
163
 
194
- 3. TAF format (new!). Currently only supports bgzip'd TAF. This is pioneered by
195
- https://github.com/ComparativeGenomicsToolkit/taffy
196
-
197
164
  _Note: All these formats generally start with a MAF as input. Note that your MAF
198
165
  file should contain the species name and chromosome name e.g. hg38.chr1 in the
199
166
  sequence identifiers._
@@ -229,17 +196,3 @@ separated by `:`.
229
196
 
230
197
  Note: If you can't use the `cargo install maf2bed` binary, there is a
231
198
  `bin/maf2bed.pl` perl version of it in this repo
232
-
233
- ### Option 3. Preparing TAF
234
-
235
- Follow steps from https://github.com/ComparativeGenomicsToolkit/taffy
236
-
237
- ```
238
- taffy view -i chr22.maf -o chr22.taf
239
- bgzip chr22.taf
240
- taffy index -i chr22.taf.gz
241
- ```
242
-
243
- The above workflow requires that taffy is built with "htslib support"
244
-
245
- Note that the TAF support is beta, let me know if you run into any issues
@@ -27,7 +27,9 @@ export default class LinearMafRenderer extends FeatureRendererType {
27
27
  width: number;
28
28
  height: number;
29
29
  containsNoTransferables: boolean;
30
- rbush: any;
30
+ samples: import("./rendering").Sample[];
31
+ flatbush: ArrayBufferLike;
32
+ items: import("./rendering").RenderedBase[];
31
33
  canvasRecordedData: Record<string, unknown>;
32
34
  reactElement?: React.ReactElement;
33
35
  html?: string;
@@ -36,7 +38,9 @@ export default class LinearMafRenderer extends FeatureRendererType {
36
38
  width: number;
37
39
  height: number;
38
40
  containsNoTransferables: boolean;
39
- rbush: any;
41
+ samples: import("./rendering").Sample[];
42
+ flatbush: ArrayBufferLike;
43
+ items: import("./rendering").RenderedBase[];
40
44
  imageData: any;
41
45
  reactElement?: React.ReactElement;
42
46
  html?: string;
@@ -45,7 +49,9 @@ export default class LinearMafRenderer extends FeatureRendererType {
45
49
  width: number;
46
50
  height: number;
47
51
  containsNoTransferables: boolean;
48
- rbush: any;
52
+ samples: import("./rendering").Sample[];
53
+ flatbush: ArrayBufferLike;
54
+ items: import("./rendering").RenderedBase[];
49
55
  reactElement: React.ReactElement;
50
56
  html?: string;
51
57
  }>;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { RenderedBase } from '../rendering';
3
+ import { Sample } from '../../LinearMafDisplay/types';
4
+ type SerializedRBush = any;
5
+ declare const LinearMafRendering: (props: {
6
+ width: number;
7
+ height: number;
8
+ displayModel: any;
9
+ flatbush: SerializedRBush;
10
+ items: RenderedBase[];
11
+ samples: Sample[];
12
+ }) => React.JSX.Element;
13
+ export default LinearMafRendering;
@@ -0,0 +1,46 @@
1
+ import React, { useMemo, useRef } from 'react';
2
+ import { PrerenderedCanvas } from '@jbrowse/core/ui';
3
+ import Flatbush from 'flatbush';
4
+ import { observer } from 'mobx-react';
5
+ const LinearMafRendering = observer(function (props) {
6
+ const { items, displayModel, height, samples, flatbush } = props;
7
+ const ref = useRef(null);
8
+ const rbush2 = useMemo(() => Flatbush.from(flatbush), [flatbush]);
9
+ function getFeatureUnderMouse(eventClientX, eventClientY) {
10
+ let offsetX = 0;
11
+ let offsetY = 0;
12
+ if (ref.current) {
13
+ const r = ref.current.getBoundingClientRect();
14
+ offsetX = eventClientX - r.left;
15
+ offsetY = eventClientY - r.top;
16
+ }
17
+ const x = rbush2.search(offsetX, offsetY, offsetX + 1, offsetY + 1);
18
+ if (x.length) {
19
+ const elt = x.findIndex(idx => items[idx]?.isInsertion);
20
+ const r = elt !== -1 ? items[elt] : items[x[0]];
21
+ const s = samples[r.sampleId];
22
+ return {
23
+ ...r,
24
+ sampleId: s?.label || s?.id || 'unknown',
25
+ };
26
+ }
27
+ else {
28
+ return undefined;
29
+ }
30
+ }
31
+ return (React.createElement("div", { ref: ref, onMouseMove: e => displayModel.setHoveredInfo?.(getFeatureUnderMouse(e.clientX, e.clientY)), onMouseLeave: () => {
32
+ displayModel.setHoveredInfo?.(undefined);
33
+ }, onMouseOut: () => {
34
+ displayModel.setHoveredInfo?.(undefined);
35
+ }, style: {
36
+ overflow: 'visible',
37
+ position: 'relative',
38
+ height,
39
+ } },
40
+ React.createElement(PrerenderedCanvas, { ...props, style: {
41
+ position: 'absolute',
42
+ left: 0,
43
+ } })));
44
+ });
45
+ export default LinearMafRendering;
46
+ //# sourceMappingURL=LinearMafRendering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinearMafRendering.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/components/LinearMafRendering.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAMrC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,UAAU,KAO7C;IACC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IAChE,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEjE,SAAS,oBAAoB,CAAC,YAAoB,EAAE,YAAoB;QACtE,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAA;YAC7C,OAAO,GAAG,YAAY,GAAG,CAAC,CAAC,IAAI,CAAA;YAC/B,OAAO,GAAG,YAAY,GAAG,CAAC,CAAC,GAAG,CAAA;QAChC,CAAC;QAED,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAA;QACnE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAA;YACvD,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE,CAAE,CAAA;YAClD,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;YAC7B,OAAO;gBACL,GAAG,CAAC;gBACJ,QAAQ,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,IAAI,SAAS;aACzC,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,CAAA;QAClB,CAAC;IACH,CAAC;IACD,OAAO,CACL,6BACE,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,CAAC,CAAC,EAAE,CACf,YAAY,CAAC,cAAc,EAAE,CAC3B,oBAAoB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAC3C,EAEH,YAAY,EAAE,GAAG,EAAE;YACjB,YAAY,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,CAAA;QAC1C,CAAC,EACD,UAAU,EAAE,GAAG,EAAE;YACf,YAAY,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,CAAA;QAC1C,CAAC,EACD,KAAK,EAAE;YACL,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,UAAU;YACpB,MAAM;SACP;QAED,oBAAC,iBAAiB,OACZ,KAAK,EACT,KAAK,EAAE;gBACL,QAAQ,EAAE,UAAU;gBACpB,IAAI,EAAE,CAAC;aACR,GACD,CACE,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,kBAAkB,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import LinearMafRenderer from './LinearMafRenderer';
2
- import ReactComponent from './components/ReactComponent';
2
+ import ReactComponent from './components/LinearMafRendering';
3
3
  import configSchema from './configSchema';
4
4
  export default function LinearMafRendererF(pluginManager) {
5
5
  pluginManager.addRendererType(() => new LinearMafRenderer({
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/LinearMafRenderer/index.ts"],"names":[],"mappings":"AAEA,OAAO,iBAAiB,MAAM,qBAAqB,CAAA;AACnD,OAAO,cAAc,MAAM,6BAA6B,CAAA;AACxD,OAAO,YAAY,MAAM,gBAAgB,CAAA;AAEzC,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,aAA4B;IACrE,aAAa,CAAC,eAAe,CAC3B,GAAG,EAAE,CACH,IAAI,iBAAiB,CAAC;QACpB,IAAI,EAAE,mBAAmB;QACzB,cAAc;QACd,YAAY;QACZ,aAAa;KACd,CAAC,CACL,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/LinearMafRenderer/index.ts"],"names":[],"mappings":"AAEA,OAAO,iBAAiB,MAAM,qBAAqB,CAAA;AACnD,OAAO,cAAc,MAAM,iCAAiC,CAAA;AAC5D,OAAO,YAAY,MAAM,gBAAgB,CAAA;AAEzC,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,aAA4B;IACrE,aAAa,CAAC,eAAe,CAC3B,GAAG,EAAE,CACH,IAAI,iBAAiB,CAAC;QACpB,IAAI,EAAE,mBAAmB;QACzB,cAAc;QACd,YAAY;QACZ,aAAa;KACd,CAAC,CACL,CAAA;AACH,CAAC"}
@@ -15,6 +15,8 @@ export declare function makeImageData({ ctx, renderArgs, }: {
15
15
  ctx: CanvasRenderingContext2D;
16
16
  renderArgs: RenderArgs;
17
17
  }): {
18
- rbush: any;
18
+ flatbush: ArrayBufferLike;
19
+ items: import("./rendering").RenderedBase[];
20
+ samples: Sample[];
19
21
  };
20
22
  export {};
@@ -1,5 +1,5 @@
1
1
  import { createJBrowseTheme } from '@jbrowse/core/ui';
2
- import RBush from 'rbush';
2
+ import Flatbush from 'flatbush';
3
3
  import { FONT_CONFIG, processFeatureAlignment, processFeatureInsertions, } from './rendering';
4
4
  import { getColorBaseMap, getContrastBaseMap } from './util';
5
5
  export function makeImageData({ ctx, renderArgs, }) {
@@ -28,7 +28,8 @@ export function makeImageData({ ctx, renderArgs, }) {
28
28
  showAllLetters,
29
29
  mismatchRendering,
30
30
  showAsUpperCase,
31
- spatialIndex: new RBush(),
31
+ spatialIndex: [],
32
+ spatialIndexCoords: [],
32
33
  lastInsertedX: -Infinity, // Start with -Infinity so first item is always inserted
33
34
  };
34
35
  // First pass: render alignments (gaps, matches, mismatches, text)
@@ -39,9 +40,15 @@ export function makeImageData({ ctx, renderArgs, }) {
39
40
  for (const feature of features.values()) {
40
41
  processFeatureInsertions(feature, region, bpPerPx, sampleToRowMap, renderingContext);
41
42
  }
42
- // Return serialized RBush spatial index
43
+ const flatbush = new Flatbush(renderingContext.spatialIndex.length);
44
+ for (let i = 0, l = renderingContext.spatialIndexCoords.length; i < l; i += 4) {
45
+ flatbush.add(renderingContext.spatialIndexCoords[i], renderingContext.spatialIndexCoords[i + 1], renderingContext.spatialIndexCoords[i + 2], renderingContext.spatialIndexCoords[i + 3]);
46
+ }
47
+ flatbush.finish();
43
48
  return {
44
- rbush: renderingContext.spatialIndex.toJSON(),
49
+ flatbush: flatbush.data,
50
+ items: renderingContext.spatialIndex,
51
+ samples,
45
52
  };
46
53
  }
47
54
  //# sourceMappingURL=makeImageData.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"makeImageData.js","sourceRoot":"","sources":["../../src/LinearMafRenderer/makeImageData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAErD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EACL,WAAW,EAIX,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AAa5D,MAAM,UAAU,aAAa,CAAC,EAC5B,GAAG,EACH,UAAU,GAIX;IACC,MAAM,EACJ,OAAO,EACP,OAAO,EACP,SAAS,EACT,cAAc,EACd,KAAK,EAAE,WAAW,EAClB,iBAAiB,EACjB,OAAO,EACP,aAAa,EACb,QAAQ,EACR,eAAe,GAChB,GAAG,UAAU,CAAA;IAEd,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAE,CAAA;IAC1B,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAA;IACzD,MAAM,CAAC,GAAG,SAAS,GAAG,aAAa,CAAA;IACnC,MAAM,KAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAA;IAC7C,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;IACjD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAChE,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAA;IACzB,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IACjB,MAAM,MAAM,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;IAElC,GAAG,CAAC,IAAI,GAAG,WAAW,CAAA;IAEtB,MAAM,gBAAgB,GAAqB;QACzC,GAAG;QACH,KAAK;QACL,WAAW;QACX,SAAS;QACT,CAAC;QACD,GAAG;QACH,MAAM;QACN,YAAY;QACZ,eAAe;QACf,cAAc;QACd,iBAAiB;QACjB,eAAe;QACf,YAAY,EAAE,IAAI,KAAK,EAAgB;QACvC,aAAa,EAAE,CAAC,QAAQ,EAAE,wDAAwD;KACnF,CAAA;IAED,kEAAkE;IAClE,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,uBAAuB,CACrB,OAAO,EACP,MAAM,EACN,OAAO,EACP,cAAc,EACd,gBAAgB,CACjB,CAAA;IACH,CAAC;IAED,wCAAwC;IACxC,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,wBAAwB,CACtB,OAAO,EACP,MAAM,EACN,OAAO,EACP,cAAc,EACd,gBAAgB,CACjB,CAAA;IACH,CAAC;IAED,wCAAwC;IACxC,OAAO;QACL,KAAK,EAAE,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE;KAC9C,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"makeImageData.js","sourceRoot":"","sources":["../../src/LinearMafRenderer/makeImageData.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,4 @@
1
1
  import { Feature } from '@jbrowse/core/util';
2
2
  import type { GenomicRegion, RenderingContext } from './types';
3
- /**
4
- * Processes alignment data for a single feature, rendering gaps, matches, mismatches, and text
5
- * @param feature - JBrowse feature containing alignment data
6
- * @param region - Genomic region being rendered
7
- * @param bpPerPx - Base pairs per pixel (zoom level)
8
- * @param sampleToRowMap - Maps sample IDs to row indices
9
- * @param renderingContext - Shared rendering parameters
10
- */
11
3
  export declare function processFeatureAlignment(feature: Feature, region: GenomicRegion, bpPerPx: number, sampleToRowMap: Map<string, number>, renderingContext: RenderingContext): void;
12
- /**
13
- * Processes insertion data for a single feature in a separate pass
14
- * Insertions are rendered on top to ensure visibility
15
- * @param feature - JBrowse feature containing alignment data
16
- * @param region - Genomic region being rendered
17
- * @param bpPerPx - Base pairs per pixel (zoom level)
18
- * @param sampleToRowMap - Maps sample IDs to row indices
19
- * @param renderingContext - Shared rendering parameters
20
- */
21
4
  export declare function processFeatureInsertions(feature: Feature, region: GenomicRegion, bpPerPx: number, sampleToRowMap: Map<string, number>, renderingContext: RenderingContext): void;
@@ -4,14 +4,6 @@ import { renderInsertions } from './insertions';
4
4
  import { renderMatches } from './matches';
5
5
  import { renderMismatches } from './mismatches';
6
6
  import { renderText } from './text';
7
- /**
8
- * Processes alignment data for a single feature, rendering gaps, matches, mismatches, and text
9
- * @param feature - JBrowse feature containing alignment data
10
- * @param region - Genomic region being rendered
11
- * @param bpPerPx - Base pairs per pixel (zoom level)
12
- * @param sampleToRowMap - Maps sample IDs to row indices
13
- * @param renderingContext - Shared rendering parameters
14
- */
15
7
  export function processFeatureAlignment(feature, region, bpPerPx, sampleToRowMap, renderingContext) {
16
8
  const [leftPx] = featureSpanPx(feature, region, bpPerPx);
17
9
  const alignments = feature.get('alignments');
@@ -25,21 +17,12 @@ export function processFeatureAlignment(feature, region, bpPerPx, sampleToRowMap
25
17
  const originalAlignment = alignmentData.seq;
26
18
  const alignment = originalAlignment.toLowerCase();
27
19
  const rowTop = renderingContext.offset + renderingContext.rowHeight * row;
28
- renderGaps(renderingContext, alignment, referenceSeq, leftPx, rowTop, sampleId, featureId, alignmentData.start, alignmentData.chr);
29
- renderMatches(renderingContext, alignment, referenceSeq, leftPx, rowTop, sampleId, featureId, alignmentData.start, alignmentData.chr);
30
- renderMismatches(renderingContext, alignment, referenceSeq, leftPx, rowTop, sampleId, featureId, alignmentData.start, alignmentData.chr);
20
+ renderGaps(renderingContext, alignment, referenceSeq, leftPx, rowTop);
21
+ renderMatches(renderingContext, alignment, referenceSeq, leftPx, rowTop, row, featureId, alignmentData.start, alignmentData.chr);
22
+ renderMismatches(renderingContext, alignment, referenceSeq, leftPx, rowTop, row, featureId, alignmentData.start, alignmentData.chr);
31
23
  renderText(renderingContext, alignment, originalAlignment, referenceSeq, leftPx, rowTop, sampleId, featureId);
32
24
  }
33
25
  }
34
- /**
35
- * Processes insertion data for a single feature in a separate pass
36
- * Insertions are rendered on top to ensure visibility
37
- * @param feature - JBrowse feature containing alignment data
38
- * @param region - Genomic region being rendered
39
- * @param bpPerPx - Base pairs per pixel (zoom level)
40
- * @param sampleToRowMap - Maps sample IDs to row indices
41
- * @param renderingContext - Shared rendering parameters
42
- */
43
26
  export function processFeatureInsertions(feature, region, bpPerPx, sampleToRowMap, renderingContext) {
44
27
  const [leftPx] = featureSpanPx(feature, region, bpPerPx);
45
28
  const alignments = feature.get('alignments');
@@ -52,7 +35,7 @@ export function processFeatureInsertions(feature, region, bpPerPx, sampleToRowMa
52
35
  }
53
36
  const alignment = alignmentData.seq.toLowerCase();
54
37
  const rowTop = renderingContext.offset + renderingContext.rowHeight * row;
55
- renderInsertions(renderingContext, alignment, referenceSeq, leftPx, rowTop, bpPerPx, sampleId, featureId, alignmentData.start, alignmentData.chr);
38
+ renderInsertions(renderingContext, alignment, referenceSeq, leftPx, rowTop, bpPerPx, row, featureId, alignmentData.start, alignmentData.chr);
56
39
  }
57
40
  }
58
41
  //# sourceMappingURL=features.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"features.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/features.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAInC;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAgB,EAChB,MAAqB,EACrB,OAAe,EACf,cAAmC,EACnC,gBAAkC;IAElC,MAAM,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IACxD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAG1C,CAAA;IACD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;IACrD,MAAM,SAAS,GACb,OAAO,CAAC,EAAE,EAAE,IAAI,WAAW,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAA;IAEzE,KAAK,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACnE,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACxC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,SAAQ;QACV,CAAC;QAED,MAAM,iBAAiB,GAAG,aAAa,CAAC,GAAG,CAAA;QAC3C,MAAM,SAAS,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAA;QACjD,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,GAAG,gBAAgB,CAAC,SAAS,GAAG,GAAG,CAAA;QAEzE,UAAU,CACR,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,MAAM,EACN,MAAM,EACN,QAAQ,EACR,SAAS,EACT,aAAa,CAAC,KAAK,EACnB,aAAa,CAAC,GAAG,CAClB,CAAA;QACD,aAAa,CACX,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,MAAM,EACN,MAAM,EACN,QAAQ,EACR,SAAS,EACT,aAAa,CAAC,KAAK,EACnB,aAAa,CAAC,GAAG,CAClB,CAAA;QACD,gBAAgB,CACd,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,MAAM,EACN,MAAM,EACN,QAAQ,EACR,SAAS,EACT,aAAa,CAAC,KAAK,EACnB,aAAa,CAAC,GAAG,CAClB,CAAA;QACD,UAAU,CACR,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,MAAM,EACN,MAAM,EACN,QAAQ,EACR,SAAS,CACV,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAAgB,EAChB,MAAqB,EACrB,OAAe,EACf,cAAmC,EACnC,gBAAkC;IAElC,MAAM,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IACxD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAG1C,CAAA;IACD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;IACrD,MAAM,SAAS,GACb,OAAO,CAAC,EAAE,EAAE,IAAI,WAAW,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAA;IAEzE,KAAK,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACnE,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACxC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,SAAQ;QACV,CAAC;QAED,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;QACjD,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,GAAG,gBAAgB,CAAC,SAAS,GAAG,GAAG,CAAA;QAEzE,gBAAgB,CACd,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,MAAM,EACN,MAAM,EACN,OAAO,EACP,QAAQ,EACR,SAAS,EACT,aAAa,CAAC,KAAK,EACnB,aAAa,CAAC,GAAG,CAClB,CAAA;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"features.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/features.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,2 @@
1
1
  import type { RenderingContext } from './types';
2
- /**
3
- * Renders gap indicators (horizontal lines) where the alignment has deletions relative to reference
4
- * @param context - Rendering context with canvas and styling info
5
- * @param alignment - The aligned sequence for this sample
6
- * @param seq - The reference sequence
7
- * @param leftPx - Left pixel position of the feature
8
- * @param rowTop - Top pixel position of the row
9
- * @param alignmentStart - Start position of the alignment
10
- * @param chr - Chromosome/sequence name
11
- */
12
- export declare function renderGaps(context: RenderingContext, alignment: string, seq: string, leftPx: number, rowTop: number, sampleId: string, featureId: string, alignmentStart: number, chr: string): void;
2
+ export declare function renderGaps(context: RenderingContext, alignment: string, seq: string, leftPx: number, rowTop: number): void;
@@ -1,16 +1,5 @@
1
- import { addToSpatialIndex, createRenderedBase, shouldAddToSpatialIndex, } from './spatialIndex';
2
1
  import { GAP_STROKE_OFFSET } from './types';
3
- /**
4
- * Renders gap indicators (horizontal lines) where the alignment has deletions relative to reference
5
- * @param context - Rendering context with canvas and styling info
6
- * @param alignment - The aligned sequence for this sample
7
- * @param seq - The reference sequence
8
- * @param leftPx - Left pixel position of the feature
9
- * @param rowTop - Top pixel position of the row
10
- * @param alignmentStart - Start position of the alignment
11
- * @param chr - Chromosome/sequence name
12
- */
13
- export function renderGaps(context, alignment, seq, leftPx, rowTop, sampleId, featureId, alignmentStart, chr) {
2
+ export function renderGaps(context, alignment, seq, leftPx, rowTop) {
14
3
  const { ctx, scale } = context;
15
4
  const h2 = context.rowHeight / 2;
16
5
  ctx.beginPath();
@@ -21,11 +10,6 @@ export function renderGaps(context, alignment, seq, leftPx, rowTop, sampleId, fe
21
10
  const xPos = leftPx + scale * genomicOffset;
22
11
  ctx.moveTo(xPos, rowTop + h2);
23
12
  ctx.lineTo(xPos + scale + GAP_STROKE_OFFSET, rowTop + h2);
24
- // Add to spatial index if distance filter allows
25
- if (shouldAddToSpatialIndex(xPos, context)) {
26
- const renderedBase = createRenderedBase(xPos, rowTop, context, genomicOffset + alignmentStart, chr, sampleId, '-', false, false, true, false, featureId);
27
- addToSpatialIndex(context, renderedBase);
28
- }
29
13
  }
30
14
  genomicOffset++;
31
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gaps.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/gaps.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAI3C;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CACxB,OAAyB,EACzB,SAAiB,EACjB,GAAW,EACX,MAAc,EACd,MAAc,EACd,QAAgB,EAChB,SAAiB,EACjB,cAAsB,EACtB,GAAW;IAEX,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IAC9B,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,GAAG,CAAC,CAAA;IAEhC,GAAG,CAAC,SAAS,EAAE,CAAA;IACf,GAAG,CAAC,SAAS,GAAG,OAAO,CAAA;IAEvB,KACE,IAAI,CAAC,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,MAAM,EAC1D,CAAC,GAAG,SAAS,EACb,CAAC,EAAE,EACH,CAAC;QACD,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,aAAa,CAAA;gBAC3C,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,EAAE,CAAC,CAAA;gBAC7B,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,GAAG,iBAAiB,EAAE,MAAM,GAAG,EAAE,CAAC,CAAA;gBAEzD,iDAAiD;gBACjD,IAAI,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;oBAC3C,MAAM,YAAY,GAAG,kBAAkB,CACrC,IAAI,EACJ,MAAM,EACN,OAAO,EACP,aAAa,GAAG,cAAc,EAC9B,GAAG,EACH,QAAQ,EACR,GAAG,EACH,KAAK,EACL,KAAK,EACL,IAAI,EACJ,KAAK,EACL,SAAS,CACV,CAAA;oBACD,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;gBAC1C,CAAC;YACH,CAAC;YACD,aAAa,EAAE,CAAA;QACjB,CAAC;IACH,CAAC;IACD,GAAG,CAAC,MAAM,EAAE,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"gaps.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/gaps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAI3C,MAAM,UAAU,UAAU,CACxB,OAAyB,EACzB,SAAiB,EACjB,GAAW,EACX,MAAc,EACd,MAAc;IAEd,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IAC9B,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,GAAG,CAAC,CAAA;IAEhC,GAAG,CAAC,SAAS,EAAE,CAAA;IACf,GAAG,CAAC,SAAS,GAAG,OAAO,CAAA;IAEvB,KACE,IAAI,CAAC,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,MAAM,EAC1D,CAAC,GAAG,SAAS,EACb,CAAC,EAAE,EACH,CAAC;QACD,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,aAAa,CAAA;gBAC3C,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,EAAE,CAAC,CAAA;gBAC7B,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,GAAG,iBAAiB,EAAE,MAAM,GAAG,EAAE,CAAC,CAAA;YAC3D,CAAC;YACD,aAAa,EAAE,CAAA;QACjB,CAAC;IACH,CAAC;IACD,GAAG,CAAC,MAAM,EAAE,CAAA;AACd,CAAC"}
@@ -1,14 +1,2 @@
1
1
  import type { RenderingContext } from './types';
2
- /**
3
- * Renders insertion markers where the alignment has bases not present in reference
4
- * Large insertions show count, small ones show as colored bars with optional borders
5
- * @param context - Rendering context with canvas and styling info
6
- * @param alignment - The aligned sequence for this sample
7
- * @param seq - The reference sequence
8
- * @param leftPx - Left pixel position of the feature
9
- * @param rowTop - Top pixel position of the row
10
- * @param bpPerPx - Base pairs per pixel (zoom level)
11
- * @param alignmentStart - Start position of the alignment
12
- * @param chr - Chromosome/sequence name
13
- */
14
- export declare function renderInsertions(context: RenderingContext, alignment: string, seq: string, leftPx: number, rowTop: number, bpPerPx: number, sampleId: string, featureId: string, alignmentStart: number, chr: string): void;
2
+ export declare function renderInsertions(context: RenderingContext, alignment: string, seq: string, leftPx: number, rowTop: number, bpPerPx: number, sampleId: number, _featureId: string, alignmentStart: number, chr: string): void;
@@ -1,20 +1,8 @@
1
1
  import { measureText } from '@jbrowse/core/util';
2
2
  import { fillRect, getCharWidthHeight } from '../util';
3
- import { addToSpatialIndex, createRenderedInsertion, shouldAddToSpatialIndex, } from './spatialIndex';
3
+ import { addToSpatialIndex, shouldAddToSpatialIndex } from './spatialIndex';
4
4
  import { CHAR_SIZE_WIDTH, HIGH_BP_PER_PX_THRESHOLD, HIGH_ZOOM_THRESHOLD, INSERTION_BORDER_HEIGHT, INSERTION_BORDER_WIDTH, INSERTION_LINE_WIDTH, INSERTION_PADDING, LARGE_INSERTION_THRESHOLD, MIN_ROW_HEIGHT_FOR_BORDERS, } from './types';
5
- /**
6
- * Renders insertion markers where the alignment has bases not present in reference
7
- * Large insertions show count, small ones show as colored bars with optional borders
8
- * @param context - Rendering context with canvas and styling info
9
- * @param alignment - The aligned sequence for this sample
10
- * @param seq - The reference sequence
11
- * @param leftPx - Left pixel position of the feature
12
- * @param rowTop - Top pixel position of the row
13
- * @param bpPerPx - Base pairs per pixel (zoom level)
14
- * @param alignmentStart - Start position of the alignment
15
- * @param chr - Chromosome/sequence name
16
- */
17
- export function renderInsertions(context, alignment, seq, leftPx, rowTop, bpPerPx, sampleId, featureId, alignmentStart, chr) {
5
+ export function renderInsertions(context, alignment, seq, leftPx, rowTop, bpPerPx, sampleId, _featureId, alignmentStart, chr) {
18
6
  const { ctx, scale, h, canvasWidth, rowHeight } = context;
19
7
  const { charHeight } = getCharWidthHeight();
20
8
  for (let i = 0, genomicOffset = 0, seqLength = alignment.length; i < seqLength; i++) {
@@ -75,7 +63,13 @@ export function renderInsertions(context, alignment, seq, leftPx, rowTop, bpPerP
75
63
  // Add insertion to spatial index with actual rendered dimensions
76
64
  // Insertions always bypass distance filter
77
65
  if (shouldAddToSpatialIndex(actualXPos, context, true)) {
78
- addToSpatialIndex(context, createRenderedInsertion(actualXPos, rowTop, actualWidth, context, genomicOffset + alignmentStart, chr, sampleId, insertionSequence, featureId));
66
+ addToSpatialIndex(context, actualXPos, rowTop, actualXPos + actualWidth, rowTop + context.h, {
67
+ pos: genomicOffset + alignmentStart,
68
+ chr,
69
+ base: insertionSequence,
70
+ sampleId,
71
+ isInsertion: true,
72
+ });
79
73
  }
80
74
  }
81
75
  genomicOffset++;
@@ -1 +1 @@
1
- {"version":3,"file":"insertions.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/insertions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,SAAS,CAAA;AAIhB;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAyB,EACzB,SAAiB,EACjB,GAAW,EACX,MAAc,EACd,MAAc,EACd,OAAe,EACf,QAAgB,EAChB,SAAiB,EACjB,cAAsB,EACtB,GAAW;IAEX,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IACzD,MAAM,EAAE,UAAU,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAE3C,KACE,IAAI,CAAC,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,MAAM,EAC1D,CAAC,GAAG,SAAS,EACb,CAAC,EAAE,EACH,CAAC;QACD,IAAI,iBAAiB,GAAG,EAAE,CAAA;QAC1B,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACtB,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACjD,iBAAiB,IAAI,SAAS,CAAC,CAAC,CAAC,CAAA;YACnC,CAAC;YACD,CAAC,EAAE,CAAA;QACL,CAAC;QACD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,qBAAqB;YACrB,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,aAAa,GAAG,oBAAoB,CAAA;YAElE,iEAAiE;YACjE,IAAI,UAAkB,CAAA;YACtB,IAAI,WAAmB,CAAA;YAEvB,2DAA2D;YAC3D,IAAI,iBAAiB,CAAC,MAAM,GAAG,yBAAyB,EAAE,CAAC;gBACzD,MAAM,UAAU,GAAG,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAA;gBAChD,IAAI,OAAO,GAAG,wBAAwB,EAAE,CAAC;oBACvC,+BAA+B;oBAC/B,UAAU,GAAG,IAAI,GAAG,oBAAoB,CAAA;oBACxC,WAAW,GAAG,sBAAsB,CAAA;oBACpC,QAAQ,CACN,GAAG,EACH,UAAU,EACV,MAAM,EACN,WAAW,EACX,CAAC,EACD,WAAW,EACX,QAAQ,CACT,CAAA;gBACH,CAAC;qBAAM,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC;oBAC1B,yCAAyC;oBACzC,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,eAAe,CAAC,CAAA;oBAC1D,MAAM,OAAO,GAAG,iBAAiB,CAAA;oBACjC,UAAU,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC,GAAG,OAAO,CAAA;oBAC3C,WAAW,GAAG,SAAS,GAAG,CAAC,GAAG,OAAO,CAAA;oBACrC,QAAQ,CACN,GAAG,EACH,UAAU,EACV,MAAM,EACN,WAAW,EACX,CAAC,EACD,WAAW,EACX,QAAQ,CACT,CAAA;oBACD,GAAG,CAAC,SAAS,GAAG,OAAO,CAAA;oBACvB,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,GAAG,SAAS,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACtE,CAAC;qBAAM,CAAC;oBACN,MAAM,OAAO,GAAG,iBAAiB,CAAA;oBACjC,UAAU,GAAG,IAAI,GAAG,OAAO,CAAA;oBAC3B,WAAW,GAAG,CAAC,GAAG,OAAO,CAAA;oBACzB,QAAQ,CACN,GAAG,EACH,UAAU,EACV,MAAM,EACN,WAAW,EACX,CAAC,EACD,WAAW,EACX,QAAQ,CACT,CAAA;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,oEAAoE;gBACpE,UAAU,GAAG,IAAI,CAAA;gBACjB,WAAW,GAAG,oBAAoB,CAAA;gBAClC,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;gBACxE,IACE,OAAO,GAAG,mBAAmB;oBAC7B,SAAS,GAAG,0BAA0B,EACtC,CAAC;oBACD,qDAAqD;oBACrD,oDAAoD;oBACpD,UAAU,GAAG,IAAI,GAAG,sBAAsB,CAAA;oBAC1C,WAAW,GAAG,uBAAuB,CAAA;oBACrC,QAAQ,CACN,GAAG,EACH,IAAI,GAAG,sBAAsB,EAC7B,MAAM,EACN,uBAAuB,EACvB,oBAAoB,EACpB,WAAW,CACZ,CAAA;oBACD,QAAQ,CACN,GAAG,EACH,IAAI,GAAG,sBAAsB,EAC7B,MAAM,GAAG,CAAC,GAAG,oBAAoB,EACjC,uBAAuB,EACvB,oBAAoB,EACpB,WAAW,CACZ,CAAA;gBACH,CAAC;YACH,CAAC;YAED,iEAAiE;YACjE,2CAA2C;YAC3C,IAAI,uBAAuB,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;gBACvD,iBAAiB,CACf,OAAO,EACP,uBAAuB,CACrB,UAAU,EACV,MAAM,EACN,WAAW,EACX,OAAO,EACP,aAAa,GAAG,cAAc,EAC9B,GAAG,EACH,QAAQ,EACR,iBAAiB,EACjB,SAAS,CACV,CACF,CAAA;YACH,CAAC;QACH,CAAC;QACD,aAAa,EAAE,CAAA;IACjB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"insertions.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/insertions.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,2 @@
1
1
  import type { RenderingContext } from './types';
2
- /**
3
- * Renders background rectangles for positions where alignment matches reference
4
- * Only renders when showAllLetters is false
5
- * @param context - Rendering context with canvas and styling info
6
- * @param alignment - The aligned sequence for this sample
7
- * @param seq - The reference sequence
8
- * @param leftPx - Left pixel position of the feature
9
- * @param rowTop - Top pixel position of the row
10
- * @param alignmentStart - Start position of the alignment
11
- * @param chr - Chromosome/sequence name
12
- */
13
- export declare function renderMatches(context: RenderingContext, alignment: string, seq: string, leftPx: number, rowTop: number, sampleId: string, featureId: string, alignmentStart: number, chr: string): void;
2
+ export declare function renderMatches(context: RenderingContext, alignment: string, seq: string, leftPx: number, rowTop: number, sampleId: number, _featureId: string, alignmentStart: number, chr: string): void;
@@ -1,18 +1,7 @@
1
1
  import { fillRect } from '../util';
2
- import { addToSpatialIndex, createRenderedBase, shouldAddToSpatialIndex, } from './spatialIndex';
2
+ import { addToSpatialIndex, shouldAddToSpatialIndex } from './spatialIndex';
3
3
  import { GAP_STROKE_OFFSET } from './types';
4
- /**
5
- * Renders background rectangles for positions where alignment matches reference
6
- * Only renders when showAllLetters is false
7
- * @param context - Rendering context with canvas and styling info
8
- * @param alignment - The aligned sequence for this sample
9
- * @param seq - The reference sequence
10
- * @param leftPx - Left pixel position of the feature
11
- * @param rowTop - Top pixel position of the row
12
- * @param alignmentStart - Start position of the alignment
13
- * @param chr - Chromosome/sequence name
14
- */
15
- export function renderMatches(context, alignment, seq, leftPx, rowTop, sampleId, featureId, alignmentStart, chr) {
4
+ export function renderMatches(context, alignment, seq, leftPx, rowTop, sampleId, _featureId, alignmentStart, chr) {
16
5
  if (context.showAllLetters) {
17
6
  return;
18
7
  }
@@ -30,8 +19,12 @@ export function renderMatches(context, alignment, seq, leftPx, rowTop, sampleId,
30
19
  fillRect(ctx, xPos, rowTop, scale + GAP_STROKE_OFFSET, h, canvasWidth);
31
20
  // Add to spatial index if distance filter allows
32
21
  if (shouldAddToSpatialIndex(xPos, context)) {
33
- const renderedBase = createRenderedBase(xPos, rowTop, context, genomicOffset + alignmentStart, chr, sampleId, currentChar || '', true, false, false, false, featureId);
34
- addToSpatialIndex(context, renderedBase);
22
+ addToSpatialIndex(context, xPos, rowTop, xPos + context.scale + GAP_STROKE_OFFSET, rowTop + context.h, {
23
+ pos: genomicOffset + alignmentStart,
24
+ chr,
25
+ base: currentChar || '',
26
+ sampleId,
27
+ });
35
28
  }
36
29
  }
37
30
  genomicOffset++;
@@ -1 +1 @@
1
- {"version":3,"file":"matches.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/matches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAI3C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAyB,EACzB,SAAiB,EACjB,GAAW,EACX,MAAc,EACd,MAAc,EACd,QAAgB,EAChB,SAAiB,EACjB,cAAsB,EACtB,GAAW;IAEX,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,OAAM;IACR,CAAC;IAED,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,OAAO,CAAA;IAC9C,GAAG,CAAC,SAAS,GAAG,WAAW,CAAA;IAE3B,sDAAsD;IACtD,KACE,IAAI,CAAC,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,MAAM,EAC1D,CAAC,GAAG,SAAS,EACb,CAAC,EAAE,EACH,CAAC;QACD,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,8CAA8C;YAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;YAChC,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,aAAa,CAAA;YAC3C,IACE,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW;gBACtB,WAAW,KAAK,GAAG;gBACnB,WAAW,KAAK,GAAG,EACnB,CAAC;gBACD,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,GAAG,iBAAiB,EAAE,CAAC,EAAE,WAAW,CAAC,CAAA;gBAEtE,iDAAiD;gBACjD,IAAI,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;oBAC3C,MAAM,YAAY,GAAG,kBAAkB,CACrC,IAAI,EACJ,MAAM,EACN,OAAO,EACP,aAAa,GAAG,cAAc,EAC9B,GAAG,EACH,QAAQ,EACR,WAAW,IAAI,EAAE,EACjB,IAAI,EACJ,KAAK,EACL,KAAK,EACL,KAAK,EACL,SAAS,CACV,CAAA;oBACD,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;gBAC1C,CAAC;YACH,CAAC;YACD,aAAa,EAAE,CAAA;QACjB,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"matches.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/matches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAI3C,MAAM,UAAU,aAAa,CAC3B,OAAyB,EACzB,SAAiB,EACjB,GAAW,EACX,MAAc,EACd,MAAc,EACd,QAAgB,EAChB,UAAkB,EAClB,cAAsB,EACtB,GAAW;IAEX,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,OAAM;IACR,CAAC;IAED,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,OAAO,CAAA;IAC9C,GAAG,CAAC,SAAS,GAAG,WAAW,CAAA;IAE3B,sDAAsD;IACtD,KACE,IAAI,CAAC,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,MAAM,EAC1D,CAAC,GAAG,SAAS,EACb,CAAC,EAAE,EACH,CAAC;QACD,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,8CAA8C;YAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;YAChC,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,aAAa,CAAA;YAC3C,IACE,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW;gBACtB,WAAW,KAAK,GAAG;gBACnB,WAAW,KAAK,GAAG,EACnB,CAAC;gBACD,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,GAAG,iBAAiB,EAAE,CAAC,EAAE,WAAW,CAAC,CAAA;gBAEtE,iDAAiD;gBACjD,IAAI,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;oBAC3C,iBAAiB,CACf,OAAO,EACP,IAAI,EACJ,MAAM,EACN,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,iBAAiB,EACxC,MAAM,GAAG,OAAO,CAAC,CAAC,EAClB;wBACE,GAAG,EAAE,aAAa,GAAG,cAAc;wBACnC,GAAG;wBACH,IAAI,EAAE,WAAW,IAAI,EAAE;wBACvB,QAAQ;qBACT,CACF,CAAA;gBACH,CAAC;YACH,CAAC;YACD,aAAa,EAAE,CAAA;QACjB,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -10,4 +10,4 @@ import type { RenderingContext } from './types';
10
10
  * @param alignmentStart - Start position of the alignment
11
11
  * @param chr - Chromosome/sequence name
12
12
  */
13
- export declare function renderMismatches(context: RenderingContext, alignment: string, seq: string, leftPx: number, rowTop: number, sampleId: string, featureId: string, alignmentStart: number, chr: string): void;
13
+ export declare function renderMismatches(context: RenderingContext, alignment: string, seq: string, leftPx: number, rowTop: number, sampleId: number, _featureId: string, alignmentStart: number, chr: string): void;
@@ -1,5 +1,5 @@
1
1
  import { fillRect } from '../util';
2
- import { addToSpatialIndex, createRenderedBase, shouldAddToSpatialIndex, } from './spatialIndex';
2
+ import { addToSpatialIndex, shouldAddToSpatialIndex } from './spatialIndex';
3
3
  import { GAP_STROKE_OFFSET } from './types';
4
4
  /**
5
5
  * Renders colored rectangles for mismatches and matches (when showAllLetters is true)
@@ -12,7 +12,7 @@ import { GAP_STROKE_OFFSET } from './types';
12
12
  * @param alignmentStart - Start position of the alignment
13
13
  * @param chr - Chromosome/sequence name
14
14
  */
15
- export function renderMismatches(context, alignment, seq, leftPx, rowTop, sampleId, featureId, alignmentStart, chr) {
15
+ export function renderMismatches(context, alignment, seq, leftPx, rowTop, sampleId, _featureId, alignmentStart, chr) {
16
16
  const { ctx, scale, h, canvasWidth, showAllLetters, mismatchRendering, colorForBase, } = context;
17
17
  for (let i = 0, genomicOffset = 0, seqLength = alignment.length; i < seqLength; i++) {
18
18
  const currentChar = alignment[i];
@@ -26,7 +26,12 @@ export function renderMismatches(context, alignment, seq, leftPx, rowTop, sample
26
26
  : 'orange');
27
27
  // Add to spatial index if distance filter allows
28
28
  if (shouldAddToSpatialIndex(xPos, context)) {
29
- addToSpatialIndex(context, createRenderedBase(xPos, rowTop, context, genomicOffset + alignmentStart, chr, sampleId, currentChar, false, true, false, false, featureId));
29
+ addToSpatialIndex(context, xPos, rowTop, xPos + context.scale + GAP_STROKE_OFFSET, rowTop + context.h, {
30
+ pos: genomicOffset + alignmentStart,
31
+ chr,
32
+ base: currentChar,
33
+ sampleId: i,
34
+ });
30
35
  }
31
36
  }
32
37
  else if (showAllLetters) {
@@ -36,7 +41,12 @@ export function renderMismatches(context, alignment, seq, leftPx, rowTop, sample
36
41
  : 'lightblue');
37
42
  // Add to spatial index if distance filter allows
38
43
  if (shouldAddToSpatialIndex(xPos, context)) {
39
- addToSpatialIndex(context, createRenderedBase(xPos, rowTop, context, genomicOffset + alignmentStart, chr, sampleId, currentChar, true, false, false, false, featureId));
44
+ addToSpatialIndex(context, xPos, rowTop, xPos + context.scale + GAP_STROKE_OFFSET, rowTop + context.h, {
45
+ pos: genomicOffset + alignmentStart,
46
+ chr,
47
+ base: currentChar,
48
+ sampleId,
49
+ });
40
50
  }
41
51
  }
42
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mismatches.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/mismatches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAI3C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAyB,EACzB,SAAiB,EACjB,GAAW,EACX,MAAc,EACd,MAAc,EACd,QAAgB,EAChB,SAAiB,EACjB,cAAsB,EACtB,GAAW;IAEX,MAAM,EACJ,GAAG,EACH,KAAK,EACL,CAAC,EACD,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,YAAY,GACb,GAAG,OAAO,CAAA;IAEX,KACE,IAAI,CAAC,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,MAAM,EAC1D,CAAC,GAAG,SAAS,EACb,CAAC,EAAE,EACH,CAAC;QACD,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;QAChC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;gBACxB,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,aAAa,CAAA;gBAC3C,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;oBAClD,8CAA8C;oBAC9C,QAAQ,CACN,GAAG,EACH,IAAI,EACJ,MAAM,EACN,KAAK,GAAG,iBAAiB,EACzB,CAAC,EACD,WAAW,EACX,iBAAiB;wBACf,CAAC,CAAC,CAAC,YAAY,CAAC,WAAY,CAAC,IAAI,OAAO,CAAC;wBACzC,CAAC,CAAC,QAAQ,CACb,CAAA;oBAED,iDAAiD;oBACjD,IAAI,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;wBAC3C,iBAAiB,CACf,OAAO,EACP,kBAAkB,CAChB,IAAI,EACJ,MAAM,EACN,OAAO,EACP,aAAa,GAAG,cAAc,EAC9B,GAAG,EACH,QAAQ,EACR,WAAY,EACZ,KAAK,EACL,IAAI,EACJ,KAAK,EACL,KAAK,EACL,SAAS,CACV,CACF,CAAA;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,cAAc,EAAE,CAAC;oBAC1B,0EAA0E;oBAC1E,QAAQ,CACN,GAAG,EACH,IAAI,EACJ,MAAM,EACN,KAAK,GAAG,iBAAiB,EACzB,CAAC,EACD,WAAW,EACX,iBAAiB;wBACf,CAAC,CAAC,CAAC,YAAY,CAAC,WAAY,CAAC,IAAI,OAAO,CAAC;wBACzC,CAAC,CAAC,WAAW,CAChB,CAAA;oBAED,iDAAiD;oBACjD,IAAI,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;wBAC3C,iBAAiB,CACf,OAAO,EACP,kBAAkB,CAChB,IAAI,EACJ,MAAM,EACN,OAAO,EACP,aAAa,GAAG,cAAc,EAC9B,GAAG,EACH,QAAQ,EACR,WAAY,EACZ,IAAI,EACJ,KAAK,EACL,KAAK,EACL,KAAK,EACL,SAAS,CACV,CACF,CAAA;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,aAAa,EAAE,CAAA;QACjB,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"mismatches.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/rendering/mismatches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAI3C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAyB,EACzB,SAAiB,EACjB,GAAW,EACX,MAAc,EACd,MAAc,EACd,QAAgB,EAChB,UAAkB,EAClB,cAAsB,EACtB,GAAW;IAEX,MAAM,EACJ,GAAG,EACH,KAAK,EACL,CAAC,EACD,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,YAAY,GACb,GAAG,OAAO,CAAA;IAEX,KACE,IAAI,CAAC,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,MAAM,EAC1D,CAAC,GAAG,SAAS,EACb,CAAC,EAAE,EACH,CAAC;QACD,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;QAChC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;gBACxB,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,aAAa,CAAA;gBAC3C,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;oBAClD,8CAA8C;oBAC9C,QAAQ,CACN,GAAG,EACH,IAAI,EACJ,MAAM,EACN,KAAK,GAAG,iBAAiB,EACzB,CAAC,EACD,WAAW,EACX,iBAAiB;wBACf,CAAC,CAAC,CAAC,YAAY,CAAC,WAAY,CAAC,IAAI,OAAO,CAAC;wBACzC,CAAC,CAAC,QAAQ,CACb,CAAA;oBAED,iDAAiD;oBACjD,IAAI,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;wBAC3C,iBAAiB,CACf,OAAO,EACP,IAAI,EACJ,MAAM,EACN,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,iBAAiB,EACxC,MAAM,GAAG,OAAO,CAAC,CAAC,EAClB;4BACE,GAAG,EAAE,aAAa,GAAG,cAAc;4BACnC,GAAG;4BACH,IAAI,EAAE,WAAY;4BAClB,QAAQ,EAAE,CAAC;yBACZ,CACF,CAAA;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,cAAc,EAAE,CAAC;oBAC1B,0EAA0E;oBAC1E,QAAQ,CACN,GAAG,EACH,IAAI,EACJ,MAAM,EACN,KAAK,GAAG,iBAAiB,EACzB,CAAC,EACD,WAAW,EACX,iBAAiB;wBACf,CAAC,CAAC,CAAC,YAAY,CAAC,WAAY,CAAC,IAAI,OAAO,CAAC;wBACzC,CAAC,CAAC,WAAW,CAChB,CAAA;oBAED,iDAAiD;oBACjD,IAAI,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;wBAC3C,iBAAiB,CACf,OAAO,EACP,IAAI,EACJ,MAAM,EACN,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,iBAAiB,EACxC,MAAM,GAAG,OAAO,CAAC,CAAC,EAClB;4BACE,GAAG,EAAE,aAAa,GAAG,cAAc;4BACnC,GAAG;4BACH,IAAI,EAAE,WAAY;4BAClB,QAAQ;yBACT,CACF,CAAA;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,aAAa,EAAE,CAAA;QACjB,CAAC;IACH,CAAC;AACH,CAAC"}