gosling.js 2.0.0-alpha.1 → 2.0.0-alpha.10

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 (53) hide show
  1. package/dist/demo/gosling-component.d.ts +4 -1
  2. package/dist/demo/gosling-component.d.ts.map +1 -1
  3. package/dist/demo/linking/linkedEncoding.d.ts.map +1 -1
  4. package/dist/demo/renderer/dataFetcher.d.ts.map +1 -1
  5. package/dist/demo/renderer/main.d.ts.map +1 -1
  6. package/dist/demo/track-def/axis.d.ts +1 -1
  7. package/dist/demo/track-def/axis.d.ts.map +1 -1
  8. package/dist/demo/track-def/dummy.d.ts +3 -1
  9. package/dist/demo/track-def/dummy.d.ts.map +1 -1
  10. package/dist/demo/track-def/main.d.ts +4 -1
  11. package/dist/demo/track-def/main.d.ts.map +1 -1
  12. package/dist/demo/track-def/types.d.ts +16 -5
  13. package/dist/demo/track-def/types.d.ts.map +1 -1
  14. package/dist/{exported-utils-b3ea2b1e.js → exported-utils-bca41fe4.js} +115 -20
  15. package/dist/exported-utils-bca41fe4.js.map +1 -0
  16. package/dist/gosling.js +1391 -130
  17. package/dist/gosling.js.map +1 -1
  18. package/dist/src/compiler/_normalize-3d-spec.d.ts +8 -0
  19. package/dist/src/compiler/_normalize-3d-spec.d.ts.map +1 -0
  20. package/dist/src/compiler/bounding-box.d.ts.map +1 -1
  21. package/dist/src/compiler/spec-preprocess.d.ts.map +1 -1
  22. package/dist/src/compiler/views-and-tracks.d.ts.map +1 -1
  23. package/dist/src/core/utils/assembly.d.ts +3 -1
  24. package/dist/src/core/utils/assembly.d.ts.map +1 -1
  25. package/dist/src/core/utils/assert.d.ts +17 -0
  26. package/dist/src/core/utils/assert.d.ts.map +1 -0
  27. package/dist/src/core/utils/chrom-size.d.ts +18 -0
  28. package/dist/src/core/utils/chrom-size.d.ts.map +1 -1
  29. package/dist/src/core/utils/data-transform.d.ts +10 -1
  30. package/dist/src/core/utils/data-transform.d.ts.map +1 -1
  31. package/dist/src/gosling-schema/gosling.schema.d.ts +43 -4
  32. package/dist/src/gosling-schema/gosling.schema.d.ts.map +1 -1
  33. package/dist/src/gosling-schema/gosling.schema.guards.d.ts +1 -1
  34. package/dist/src/gosling-schema/gosling.schema.guards.d.ts.map +1 -1
  35. package/dist/src/higlass/higlass-vendored.d.ts.map +1 -1
  36. package/dist/src/interactors/cursor-circular.d.ts +18 -0
  37. package/dist/src/interactors/cursor-circular.d.ts.map +1 -0
  38. package/dist/src/interactors/cursor.d.ts.map +1 -1
  39. package/dist/src/interactors/pan-zoom-circular.d.ts +17 -0
  40. package/dist/src/interactors/pan-zoom-circular.d.ts.map +1 -0
  41. package/dist/src/pixi-manager/pixi-manager.d.ts +2 -1
  42. package/dist/src/pixi-manager/pixi-manager.d.ts.map +1 -1
  43. package/dist/src/tracks/dummy-track/dummy-track.d.ts +4 -1
  44. package/dist/src/tracks/dummy-track/dummy-track.d.ts.map +1 -1
  45. package/dist/src/tracks/gosling-track/gosling-track.d.ts +1 -1
  46. package/dist/src/tracks/gosling-track/gosling-track.d.ts.map +1 -1
  47. package/dist/src/tracks/spatial-track/spatial-track.d.ts +22 -0
  48. package/dist/src/tracks/spatial-track/spatial-track.d.ts.map +1 -0
  49. package/dist/src/tracks/utils.d.ts +1 -1
  50. package/dist/src/tracks/utils.d.ts.map +1 -1
  51. package/dist/utils.js +2 -2
  52. package/package.json +174 -172
  53. package/dist/exported-utils-b3ea2b1e.js.map +0 -1
@@ -15,13 +15,16 @@ interface GoslingComponentProps {
15
15
  theme?: Theme;
16
16
  urlToFetchOptions?: UrlToFetchOptions;
17
17
  ref?: RefObject<GoslingRef>;
18
+ /** A callback function to notify that visualization has been rendered for the first time */
18
19
  visualized?: () => void;
20
+ /** A callback function to notify that visualization has been resized. Only called when responsive design is used. */
21
+ resized?: () => void;
19
22
  }
20
23
  export declare function GoslingComponent(props: GoslingComponentProps): JSX.Element;
21
24
  /**
22
25
  * This is the main function. It takes a Gosling spec and renders it using the PixiManager
23
26
  */
24
- export declare function renderGosling(gs: GoslingSpec, container: HTMLDivElement, pixiManager: PixiManager, theme: Theme, urlToFetchOptions?: UrlToFetchOptions): {
27
+ export declare function renderGosling(gs: GoslingSpec, container: HTMLDivElement, pixiManager: PixiManager, theme: Theme, urlToFetchOptions?: UrlToFetchOptions, resized?: () => void): {
25
28
  plots: {};
26
29
  pixiManager: PixiManager;
27
30
  size: import("src/compiler/bounding-box").Size;
@@ -1 +1 @@
1
- {"version":3,"file":"gosling-component.d.ts","sourceRoot":"","sources":["../../demo/gosling-component.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAuB,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAW,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAI1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,MAAM,UAAU,GAAG;IAAE,GAAG,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA;CAAE,CAAC;AAIjE,UAAU,qBAAqB;IAC3B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,GAAG,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,eAoD5D;AACD;;GAEG;AACH,wBAAgB,aAAa,CACzB,EAAE,EAAE,WAAW,EACf,SAAS,EAAE,cAAc,EACzB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,iBAAiB,CAAC,EAAE,iBAAiB;;;;;;;;EAiDxC"}
1
+ {"version":3,"file":"gosling-component.d.ts","sourceRoot":"","sources":["../../demo/gosling-component.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAuB,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAW,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAI1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,MAAM,MAAM,UAAU,GAAG;IAAE,GAAG,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA;CAAE,CAAC;AAIjE,UAAU,qBAAqB;IAC3B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,GAAG,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5B,4FAA4F;IAC5F,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,qHAAqH;IACrH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,eAwD5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CACzB,EAAE,EAAE,WAAW,EACf,SAAS,EAAE,cAAc,EACzB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,OAAO,CAAC,EAAE,MAAM,IAAI;;;;;;;;EA2DvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"linkedEncoding.d.ts","sourceRoot":"","sources":["../../../demo/linking/linkedEncoding.ts"],"names":[],"mappings":"AAWA,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK9C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC;KACjC,EAAE,CAAC;CACP;AAkCD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,WAAW,oBAwBjD"}
1
+ {"version":3,"file":"linkedEncoding.d.ts","sourceRoot":"","sources":["../../../demo/linking/linkedEncoding.ts"],"names":[],"mappings":"AAUA,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK9C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC;KACjC,EAAE,CAAC;CACP;AAkCD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,WAAW,oBAwBjD"}
@@ -1 +1 @@
1
- {"version":3,"file":"dataFetcher.d.ts","sourceRoot":"","sources":["../../../demo/renderer/dataFetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EACH,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,cAAc,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAM9D,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE/E,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,aAAa,EAAE,iBAAiB,CAAC,EAAE,iBAAiB;;;;;;;;;;;eA0CtG"}
1
+ {"version":3,"file":"dataFetcher.d.ts","sourceRoot":"","sources":["../../../demo/renderer/dataFetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EACH,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,cAAc,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAM9D,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE/E,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,aAAa,EAAE,iBAAiB,CAAC,EAAE,iBAAiB;;;;;;;;;;;eA4CtG"}
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../demo/renderer/main.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,mBAAmB,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAK9D;;;;GAIG;AACH,wBAAgB,eAAe,CAC3B,SAAS,EAAE,SAAS,EAAE,EACtB,eAAe,EAAE,cAAc,EAAE,EACjC,WAAW,EAAE,WAAW,EACxB,iBAAiB,CAAC,EAAE,iBAAiB,2BAiHxC"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../demo/renderer/main.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,mBAAmB,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAO9D;;;;GAIG;AACH,wBAAgB,eAAe,CAC3B,SAAS,EAAE,SAAS,EAAE,EACtB,eAAe,EAAE,cAAc,EAAE,EACjC,WAAW,EAAE,WAAW,EACxB,iBAAiB,CAAC,EAAE,iBAAiB,2BAyIxC"}
@@ -13,7 +13,7 @@ export declare function getAxisTrackDef(track: ProcessedTrack, boundingBox: {
13
13
  y: number;
14
14
  width: number;
15
15
  height: number;
16
- }, theme: Required<CompleteThemeDeep>): [trackBbox: {
16
+ }, theme: Required<CompleteThemeDeep>): [{
17
17
  x: number;
18
18
  y: number;
19
19
  width: number;
@@ -1 +1 @@
1
- {"version":3,"file":"axis.d.ts","sourceRoot":"","sources":["../../../demo/track-def/axis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAQnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,KAAK,EAA0B,cAAc,EAAE,MAAM,SAAS,CAAC;AAGtE;;;;;GAKG;AACH,wBAAgB,eAAe,CAC3B,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACpE,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GACnC,CAAC,SAAS,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,GAAG,SAAS,CAAC,CA8DhH"}
1
+ {"version":3,"file":"axis.d.ts","sourceRoot":"","sources":["../../../demo/track-def/axis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAQnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,KAAK,EAA0B,cAAc,EAAE,MAAM,SAAS,CAAC;AAGtE;;;;;GAKG;AACH,wBAAgB,eAAe,CAC3B,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACpE,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GACnC,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,GAAG,SAAS,CAAC,CA8DrG"}
@@ -1,10 +1,12 @@
1
1
  import type { DummyTrackOptions } from '@gosling-lang/dummy-track';
2
2
  import { type TrackDef } from './main';
3
3
  import { type ProcessedDummyTrack } from './types';
4
+ import type { CompleteThemeDeep } from 'src/core/utils/theme';
5
+ import type { AxisTrackOptions } from '@gosling-lang/genomic-axis';
4
6
  export declare function processDummyTrack(track: ProcessedDummyTrack, boundingBox: {
5
7
  x: number;
6
8
  y: number;
7
9
  width: number;
8
10
  height: number;
9
- }): TrackDef<DummyTrackOptions>[];
11
+ }, theme: Required<CompleteThemeDeep>): (TrackDef<DummyTrackOptions> | TrackDef<AxisTrackOptions>)[];
10
12
  //# sourceMappingURL=dummy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dummy.d.ts","sourceRoot":"","sources":["../../../demo/track-def/dummy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,KAAK,QAAQ,EAAa,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,wBAAgB,iBAAiB,CAC7B,KAAK,EAAE,mBAAmB,EAC1B,WAAW,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAa/B"}
1
+ {"version":3,"file":"dummy.d.ts","sourceRoot":"","sources":["../../../demo/track-def/dummy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,KAAK,QAAQ,EAAa,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,wBAAgB,iBAAiB,CAC7B,KAAK,EAAE,mBAAmB,EAC1B,WAAW,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACpE,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GACnC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,CA8B9D"}
@@ -6,6 +6,7 @@ import { type BrushLinearTrackOptions } from '@gosling-lang/brush-linear';
6
6
  import type { TrackInfo } from '../../src/compiler/bounding-box';
7
7
  import type { CompleteThemeDeep } from '../../src/core/utils/theme';
8
8
  import type { GoslingTrackOptions } from '../../src/tracks/gosling-track/gosling-track';
9
+ import type { SpatialTrackOptions } from 'src/tracks/spatial-track/spatial-track';
9
10
  import { type BrushCircularTrackOptions } from '@gosling-lang/brush-circular';
10
11
  import { type HeatmapTrackOptions } from '@gosling-lang/heatmap';
11
12
  /**
@@ -18,7 +19,8 @@ export declare enum TrackType {
18
19
  Axis = 3,
19
20
  BrushLinear = 4,
20
21
  BrushCircular = 5,
21
- Heatmap = 6
22
+ Heatmap = 6,
23
+ Spatial = 7
22
24
  }
23
25
  /**
24
26
  * Associate options to each track type
@@ -31,6 +33,7 @@ interface TrackOptionsMap {
31
33
  [TrackType.BrushLinear]: BrushLinearTrackOptions;
32
34
  [TrackType.BrushCircular]: BrushCircularTrackOptions;
33
35
  [TrackType.Heatmap]: HeatmapTrackOptions;
36
+ [TrackType.Spatial]: SpatialTrackOptions;
34
37
  }
35
38
  /**
36
39
  * This interface contains all of the information needed to render each track type.
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../demo/track-def/main.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAKxF,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAIjE;;GAEG;AACH,oBAAY,SAAS;IACjB,IAAI,IAAA;IACJ,KAAK,IAAA;IACL,OAAO,IAAA;IACP,IAAI,IAAA;IACJ,WAAW,IAAA;IACX,aAAa,IAAA;IACb,OAAO,IAAA;CACV;AAED;;GAEG;AACH,UAAU,eAAe;IACrB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IACzC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACnC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IACrC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACnC,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACjD,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,yBAAyB,CAAC;IACrD,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,OAAO,EAAE,CAAC,CAAC;CACd;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;KACnB,CAAC,IAAI,MAAM,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CAC7D,CAAC,MAAM,eAAe,CAAC,CAAC;AAEzB;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,SAAS,EAAE,CAyBxG;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,WAAW,QAQvF"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../demo/track-def/main.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAKlF,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAIjE;;GAEG;AACH,oBAAY,SAAS;IACjB,IAAI,IAAA;IACJ,KAAK,IAAA;IACL,OAAO,IAAA;IACP,IAAI,IAAA;IACJ,WAAW,IAAA;IACX,aAAa,IAAA;IACb,OAAO,IAAA;IACP,OAAO,IAAA;CACV;AAED;;GAEG;AACH,UAAU,eAAe;IACrB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IACzC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACnC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IACrC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACnC,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACjD,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,yBAAyB,CAAC;IACrD,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IACzC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,OAAO,EAAE,CAAC,CAAC;CACd;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;KACnB,CAAC,IAAI,MAAM,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CAC7D,CAAC,MAAM,eAAe,CAAC,CAAC;AAEzB;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,SAAS,EAAE,CAoCxG;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,WAAW,QAQvF"}
@@ -11,15 +11,15 @@ import type { DataDeep, Assembly, DummyTrackStyle, Mark, X, Y } from '@gosling-l
11
11
  * TODO: this file is incomplete. It should be updated to include all the properties that a processed spec can have.
12
12
  */
13
13
  /** A Track after it has been compiled */
14
- export type ProcessedTrack = ProcessedLinearTrack | ProcessedCircularTrack | ProcessedDummyTrack;
14
+ export type ProcessedTrack = ProcessedLinearTrack | ProcessedCircularTrack | ProcessedDummyTrack | ProcessedSpatialTrack;
15
15
  /** All tracks potentially have these properties */
16
16
  export interface ProcessedTrackBase {
17
- layout?: 'linear' | 'circular';
17
+ layout?: 'linear' | 'circular' | 'spatial';
18
18
  id: string;
19
19
  height: number;
20
20
  width: number;
21
21
  static: boolean;
22
- mark?: string;
22
+ mark?: Mark;
23
23
  orientation: 'horizontal' | 'vertical';
24
24
  title?: string;
25
25
  subtitle?: string;
@@ -53,9 +53,20 @@ export type ProcessedCircularTrack = ProcessedTrackBase & {
53
53
  outerRadius: number;
54
54
  innerRadius: number;
55
55
  };
56
- export type ProcessedDummyTrack = ProcessedTrackBase & {
57
- type?: string;
56
+ export type ProcessedSpatialTrack = ProcessedTrackBase & {
57
+ layout: 'spatial';
58
+ spatial: {
59
+ x: string;
60
+ y: string;
61
+ z: string;
62
+ chr: string;
63
+ coord: string;
64
+ };
65
+ };
66
+ export type ProcessedDummyTrack = (ProcessedLinearTrack | ProcessedCircularTrack) & {
67
+ type: 'dummy-track';
58
68
  style?: DummyTrackStyle;
69
+ x?: X;
59
70
  };
60
71
  /** Tracks in the _overlay */
61
72
  export interface OverlayTrack {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../demo/track-def/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,8BAA8B,CAAC;AAEpG;;;;;;;;;;GAUG;AAEH,yCAAyC;AACzC,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,sBAAsB,GAAG,mBAAmB,CAAC;AAEjG,mDAAmD;AACnD,MAAM,WAAW,kBAAkB;IAC/B,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,YAAY,GAAG,UAAU,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3B,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5B,WAAW,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,GAAG;IACpD,MAAM,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,eAAe,CAAC;CAC3B,CAAC;AAEF,6BAA6B;AAC7B,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,CAAC,CAAC,EAAE,CAAC,CAAC;IACN,CAAC,CAAC,EAAE,CAAC,CAAC;IACN,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../demo/track-def/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,8BAA8B,CAAC;AAEpG;;;;;;;;;;GAUG;AAEH,yCAAyC;AACzC,MAAM,MAAM,cAAc,GACpB,oBAAoB,GACpB,sBAAsB,GACtB,mBAAmB,GACnB,qBAAqB,CAAC;AAC5B,mDAAmD;AACnD,MAAM,WAAW,kBAAkB;IAC/B,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,WAAW,EAAE,YAAY,GAAG,UAAU,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3B,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5B,WAAW,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,GAAG;IACpD,MAAM,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACvB,CAAC;AAIF,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,GAAG;IACrD,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE;QACL,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,oBAAoB,GAAG,sBAAsB,CAAC,GAAG;IAChF,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC,CAAC;CACT,CAAC;AAEF,6BAA6B;AAC7B,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,CAAC,CAAC,EAAE,CAAC,CAAC;IACN,CAAC,CAAC,EAAE,CAAC,CAAC;IACN,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9B"}
@@ -2975,6 +2975,7 @@ function getChannelKeysByType(spec, t) {
2975
2975
  return keys;
2976
2976
  }
2977
2977
  function IsXAxis(_) {
2978
+ var _a;
2978
2979
  if ((IsSingleTrack(_) || IsOverlaidTrack(_)) && IsChannelDeep(_.x) && _.x.axis && _.x.axis !== "none") {
2979
2980
  return true;
2980
2981
  } else if (IsOverlaidTrack(_)) {
@@ -2987,6 +2988,8 @@ function IsXAxis(_) {
2987
2988
  }
2988
2989
  });
2989
2990
  return isFound;
2991
+ } else if (IsDummyTrack(_)) {
2992
+ return ((_a = _.x) == null ? void 0 : _a.axis) && _.x.axis !== "none";
2990
2993
  }
2991
2994
  return false;
2992
2995
  }
@@ -9162,6 +9165,41 @@ function uuid() {
9162
9165
  var _a, _b, _c;
9163
9166
  return (_c = (_b = (_a = globalThis.crypto).randomUUID) == null ? void 0 : _b.call(_a)) != null ? _c : fallback();
9164
9167
  }
9168
+ function propagateSpatialLayoutInfo(t) {
9169
+ var _a, _b, _c, _d, _e, _f, _g;
9170
+ const { layout } = t;
9171
+ if (typeof layout == "object" && "type" in layout && layout.type === "spatial") {
9172
+ const { model } = layout;
9173
+ const [x, y, z] = model.xyz;
9174
+ const { url, chromosome: chr, position: coord } = model;
9175
+ t.spatial = {
9176
+ x,
9177
+ y,
9178
+ z,
9179
+ chr,
9180
+ coord
9181
+ };
9182
+ t.layout = "spatial";
9183
+ const dataTransform = {
9184
+ type: "join",
9185
+ from: { url, chromosomeField: chr, genomicField: coord }
9186
+ };
9187
+ let to = { startField: "start", endField: "end" };
9188
+ if (((_a = t.data) == null ? void 0 : _a.type) === "bigwig") {
9189
+ to = { startField: "start", endField: "end" };
9190
+ } else if (((_b = t.data) == null ? void 0 : _b.type) === "csv") {
9191
+ const startField = (_d = (_c = t.data.genomicFields) == null ? void 0 : _c[0]) != null ? _d : "unknown";
9192
+ const endField = (_f = (_e = t.data.genomicFields) == null ? void 0 : _e[1]) != null ? _f : void 0;
9193
+ to = { startField, endField };
9194
+ }
9195
+ t.dataTransform = [{ ...dataTransform, to }, ...(_g = t.dataTransform) != null ? _g : []];
9196
+ } else if (typeof layout == "object") {
9197
+ t.layout = layout.type;
9198
+ }
9199
+ if (t.locus && !t.x) {
9200
+ t.x = { ...t.locus, type: "genomic" };
9201
+ }
9202
+ }
9165
9203
  function traverseTracks(spec, callback) {
9166
9204
  if ("tracks" in spec) {
9167
9205
  spec.tracks.forEach((t, i, ts) => {
@@ -9313,9 +9351,10 @@ function traverseToFixSpecDownstream(spec, parentDef) {
9313
9351
  track.static = spec.static !== void 0 ? spec.static : false;
9314
9352
  if (!track.zoomLimits)
9315
9353
  track.zoomLimits = spec.zoomLimits;
9316
- if (track.layout == "circular" && IsDummyTrack(track)) {
9317
- track._invalidTrack = true;
9318
- return;
9354
+ if (track.layout && typeof track.layout === "object" && track.layout.type === "spatial") {
9355
+ if (!("template" in track)) {
9356
+ propagateSpatialLayoutInfo(track);
9357
+ }
9319
9358
  }
9320
9359
  track.style = getStyleOverridden(spec.style, track.style);
9321
9360
  if (IsOverlaidTrack(track)) {
@@ -9366,7 +9405,7 @@ function traverseToFixSpecDownstream(spec, parentDef) {
9366
9405
  if (i === 0) {
9367
9406
  track.overlayOnPreviousTrack = false;
9368
9407
  }
9369
- if (i === 0 || i !== 0 && tracks.slice(0, i).filter((d) => !d.overlayOnPreviousTrack).length === 1 && track.overlayOnPreviousTrack === true) {
9408
+ if (i === 0 && !IsDummyTrack(track) || i !== 0 && tracks.slice(0, i).filter((d) => !d.overlayOnPreviousTrack).length === 1 && track.overlayOnPreviousTrack === true) {
9370
9409
  if ((IsSingleTrack(track) || IsOverlaidTrack(track)) && IsChannelDeep(track.x) && !track.x.axis) {
9371
9410
  if (track.orientation === "vertical") {
9372
9411
  track.x.axis = "left";
@@ -9384,6 +9423,11 @@ function traverseToFixSpecDownstream(spec, parentDef) {
9384
9423
  }
9385
9424
  });
9386
9425
  }
9426
+ } else if (i === 0 && IsDummyTrack(track)) {
9427
+ const nextNonDummyTrack = array.slice(i).find((d) => !IsDummyTrack(d));
9428
+ if (nextNonDummyTrack && "x" in nextNonDummyTrack) {
9429
+ track.x = { ...nextNonDummyTrack.x, axis: "top" };
9430
+ }
9387
9431
  }
9388
9432
  if ((IsSingleTrack(track) || IsOverlaidTrack(track)) && IsChannelDeep(track.x) && track.x.axis && track.x.axis !== "none") {
9389
9433
  if (track.orientation === "vertical") {
@@ -9729,6 +9773,24 @@ const CHROM_SIZE_MM9 = {
9729
9773
  chrY: 15902555,
9730
9774
  chrM: 16299
9731
9775
  };
9776
+ const CHROM_SIZE_SACCER3 = {
9777
+ chrI: 230218,
9778
+ chrII: 813184,
9779
+ chrIII: 316620,
9780
+ chrIV: 1531933,
9781
+ chrV: 576874,
9782
+ chrVI: 270161,
9783
+ chrVII: 1090940,
9784
+ chrVIII: 562643,
9785
+ chrIX: 439888,
9786
+ chrX: 745751,
9787
+ chrXI: 666816,
9788
+ chrXII: 1078177,
9789
+ chrXIII: 924431,
9790
+ chrXIV: 784333,
9791
+ chrXV: 1091291,
9792
+ chrXVI: 948066
9793
+ };
9732
9794
  function getRelativeGenomicPosition(absPos, assembly, returnWithinAssembly = false) {
9733
9795
  const chrSizes = Object.entries(computeChromSizes(assembly).interval);
9734
9796
  const minPosChr = { chromosome: "unknown", position: Infinity };
@@ -9822,6 +9884,12 @@ const CRHOM_SIZES = Object.freeze({
9822
9884
  total: getChromTotalSize(CHROM_SIZE_MM9),
9823
9885
  path: basePath("mm9")
9824
9886
  },
9887
+ sacCer3: {
9888
+ size: CHROM_SIZE_SACCER3,
9889
+ interval: getChromInterval(CHROM_SIZE_SACCER3),
9890
+ total: getChromTotalSize(CHROM_SIZE_SACCER3),
9891
+ path: "https://gosling-lang.s3.us-east-1.amazonaws.com/data/sacCer3.chrom.sizes"
9892
+ },
9825
9893
  // `unknown` assembly contains only one chromosome with max length
9826
9894
  unknown: {
9827
9895
  size: { chr: Number.MAX_VALUE },
@@ -9843,8 +9911,25 @@ function getChromTotalSize(chromSize) {
9843
9911
  return Object.values(chromSize).reduce((sum, current) => sum + current, 0);
9844
9912
  }
9845
9913
  function parseGenomicPosition(position) {
9846
- const [chromosome, intervalString] = position.split(":");
9847
- if (intervalString) {
9914
+ const firstColonIndex = position.indexOf(":");
9915
+ if (firstColonIndex === -1) {
9916
+ return { chromosome: position };
9917
+ }
9918
+ const chromosome = position.substring(0, firstColonIndex);
9919
+ const intervalString = position.substring(firstColonIndex + 1);
9920
+ if (intervalString.includes(":")) {
9921
+ const dashIndex = intervalString.indexOf("-");
9922
+ if (dashIndex !== -1) {
9923
+ const startPosStr = intervalString.substring(0, dashIndex);
9924
+ const endPart = intervalString.substring(dashIndex + 1);
9925
+ const [chromosomeEnd, endPosStr] = endPart.split(":");
9926
+ const start = +startPosStr.replace(/,/g, "");
9927
+ const end = +endPosStr.replace(/,/g, "");
9928
+ if (!Number.isNaN(start) && !Number.isNaN(end)) {
9929
+ return { chromosome, start, chromosomeEnd, end };
9930
+ }
9931
+ }
9932
+ } else {
9848
9933
  const [start, end] = intervalString.split("-").map((s) => +s.replace(/,/g, ""));
9849
9934
  if (!Number.isNaN(start) && !Number.isNaN(end)) {
9850
9935
  return { chromosome, start, end };
@@ -9853,14 +9938,15 @@ function parseGenomicPosition(position) {
9853
9938
  return { chromosome };
9854
9939
  }
9855
9940
  class GenomicPositionHelper {
9856
- constructor(chromosome, start, end) {
9941
+ constructor(chromosome, start, end, chromosomeEnd) {
9857
9942
  this.chromosome = chromosome;
9858
9943
  this.start = start;
9859
9944
  this.end = end;
9945
+ this.chromosomeEnd = chromosomeEnd;
9860
9946
  }
9861
9947
  static fromString(str) {
9862
9948
  const result = parseGenomicPosition(str);
9863
- return new GenomicPositionHelper(result.chromosome, result.start, result.end);
9949
+ return new GenomicPositionHelper(result.chromosome, result.start, result.end, result.chromosomeEnd);
9864
9950
  }
9865
9951
  toAbsoluteCoordinates(assembly, padding = 0) {
9866
9952
  const info = computeChromSizes(assembly);
@@ -9874,6 +9960,15 @@ class GenomicPositionHelper {
9874
9960
  [start, end] = [1, size];
9875
9961
  }
9876
9962
  const offset = interval[0];
9963
+ if (this.chromosomeEnd && this.chromosomeEnd !== this.chromosome) {
9964
+ const endSize = info.size[this.chromosomeEnd];
9965
+ const endInterval = info.interval[this.chromosomeEnd];
9966
+ if (endSize === void 0 || endInterval === void 0) {
9967
+ throw new Error(`End chromosome name ${this.chromosomeEnd} is not valid`);
9968
+ }
9969
+ const endOffset = endInterval[0];
9970
+ return [start + offset - padding, end + endOffset + padding];
9971
+ }
9877
9972
  return [start + offset - padding, end + offset + padding];
9878
9973
  }
9879
9974
  }
@@ -9927,18 +10022,18 @@ export {
9927
10022
  Is2DTrack as e,
9928
10023
  DEFAULT_VIEW_SPACING as f,
9929
10024
  DEFAULT_INNER_RADIUS_PROP as g,
9930
- IsDummyTrack as h,
9931
- IsOverlaidTrack as i,
9932
- IsXAxis as j,
9933
- IsYAxis as k,
9934
- DEFAULT_CIRCULAR_VIEW_PADDING as l,
9935
- traverseToFixSpecDownstream as m,
9936
- absToChr as n,
9937
- colorToHex as o,
9938
- getTextStyle as p,
9939
- computeChromSizes as q,
10025
+ IsOverlaidTrack as h,
10026
+ IsXAxis as i,
10027
+ IsYAxis as j,
10028
+ DEFAULT_CIRCULAR_VIEW_PADDING as k,
10029
+ traverseToFixSpecDownstream as l,
10030
+ absToChr as m,
10031
+ colorToHex as n,
10032
+ getTextStyle as o,
10033
+ computeChromSizes as p,
10034
+ cartesianToPolar as q,
9940
10035
  resolveSuperposedTracks as r,
9941
- cartesianToPolar as s,
10036
+ IsDummyTrack as s,
9942
10037
  traverseTracks as t,
9943
10038
  uuid as u,
9944
10039
  getHiGlassColorRange as v,
@@ -9947,4 +10042,4 @@ export {
9947
10042
  commonjsGlobal as y,
9948
10043
  RemoteFile as z
9949
10044
  };
9950
- //# sourceMappingURL=exported-utils-b3ea2b1e.js.map
10045
+ //# sourceMappingURL=exported-utils-bca41fe4.js.map