gosling.js 0.16.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/gosling.js CHANGED
@@ -34,7 +34,7 @@ import "bezier-js";
34
34
  import { scaleLinear, scaleSequential, scaleOrdinal, scaleBand } from "d3-scale";
35
35
  import { sampleSize, isEqual, uniqBy, cloneDeepWith } from "lodash-es";
36
36
  import { interpolateViridis } from "d3-scale-chromatic";
37
- import { A as Ajv, I as IsChannelDeep, r as resolveSuperposedTracks, t as traverseTracks, a as IsTemplateTrack, g as getTextStyle, c as computeChromSizes, b as cartesianToPolar, u as uuid, R as RADIAN_GAP, v as valueToRadian, p as pointsToDegree, d as commonjsGlobal, e as RemoteFile, f as IsOneOfFilter, h as IsRangeFilter, i as IsIncludeFilter, j as getChannelKeysByAggregateFnc, k as getChannelKeysByType, s as sanitizeChrName, l as filterUsingGenoPos, m as IsDataDeepTileset, n as IsDomainChr, o as IsDomainInterval, q as IsDomainChrInterval, S as SUPPORTED_CHANNELS, w as insertItemToArray, x as getAutoCompleteId, y as IsChannelValue, z as getValueUsingChannel, B as rectProperty, C as pointProperty, D as barProperty, E as IsStackedChannel, F as IsDomainArray, P as PREDEFINED_COLOR_STR_MAP, G as IsRangeArray, H as Is2DTrack, J as isTabularDataFetcher, K as drawPreEmbellishment, L as drawMark, M as drawPostEmbellishment, N as getRelativeGenomicPosition, O as hasDataTransform, Q as IsXAxis, T as IsMouseEventsDeep, U as colorToHex, V as flatArrayToPairArray, W as DEWFAULT_TITLE_PADDING_ON_TOP_AND_BOTTOM, X as traverseTracksAndViews, Y as traverseViewArrangements, Z as DEFAULT_VIEW_SPACING, _ as DEFAULT_INNER_RADIUS_PROP, $ as IsDummyTrack, a0 as IsOverlaidTrack, a1 as IsYAxis, a2 as DEFAULT_CIRCULAR_VIEW_PADDING, a3 as IsDataDeep, a4 as IsHiGlassMatrix, a5 as getHiGlassColorRange, a6 as DEFAULT_TEXT_STYLE, a7 as overrideDataTemplates, a8 as traverseToFixSpecDownstream, a9 as GenomicPositionHelper, aa as isObject } from "./exported-utils-ac60e3c5.js";
37
+ import { A as Ajv, I as IsChannelDeep, r as resolveSuperposedTracks, t as traverseTracks, a as IsTemplateTrack, g as getTextStyle, c as computeChromSizes, b as cartesianToPolar, u as uuid, R as RADIAN_GAP, v as valueToRadian, p as pointsToDegree, d as commonjsGlobal, e as RemoteFile, f as IsOneOfFilter, h as IsRangeFilter, i as IsIncludeFilter, j as getChannelKeysByAggregateFnc, k as getChannelKeysByType, s as sanitizeChrName, l as filterUsingGenoPos, m as IsDataDeepTileset, n as IsDomainChr, o as IsDomainInterval, q as IsDomainChrInterval, S as SUPPORTED_CHANNELS, w as insertItemToArray, x as getAutoCompleteObject, y as IsChannelValue, z as getValueUsingChannel, B as rectProperty, C as pointProperty, D as barProperty, E as IsStackedChannel, F as IsDomainArray, P as PREDEFINED_COLOR_STR_MAP, G as IsRangeArray, H as Is2DTrack, J as isTabularDataFetcher, K as drawPreEmbellishment, L as drawMark, M as drawPostEmbellishment, N as getRelativeGenomicPosition, O as hasDataTransform, Q as IsXAxis, T as IsMouseEventsDeep, U as colorToHex, V as flatArrayToPairArray, W as DEWFAULT_TITLE_PADDING_ON_TOP_AND_BOTTOM, X as traverseTracksAndViews, Y as traverseViewArrangements, Z as DEFAULT_VIEW_SPACING, _ as DEFAULT_INNER_RADIUS_PROP, $ as IsDummyTrack, a0 as IsOverlaidTrack, a1 as IsYAxis, a2 as DEFAULT_CIRCULAR_VIEW_PADDING, a3 as IsDataDeep, a4 as IsHiGlassMatrix, a5 as getHiGlassColorRange, a6 as DEFAULT_TEXT_STYLE, a7 as traverseToFixSpecDownstream, a8 as GenomicPositionHelper, a9 as isObject } from "./exported-utils-51b5f19f.js";
38
38
  import higlassRegister from "higlass-register";
39
39
  import { TextTrack } from "higlass-text";
40
40
  import RBush from "rbush";
@@ -52,7 +52,7 @@ import require$$0 from "react-dom";
52
52
  import { HiGlassComponent } from "higlass";
53
53
  import { ResizeSensor } from "css-element-queries";
54
54
  const name = "gosling.js";
55
- const version = "0.16.0";
55
+ const version = "1.0.0";
56
56
  const $ref$2 = "#/definitions/GoslingSpec";
57
57
  const $schema$2 = "http://json-schema.org/draft-07/schema#";
58
58
  const definitions$2 = {
@@ -613,152 +613,6 @@ const definitions$2 = {
613
613
  }
614
614
  ]
615
615
  },
616
- DataTrack: {
617
- additionalProperties: false,
618
- description: "Partial specification of `BasicSingleTrack` to use default visual encoding predefined by data type.",
619
- properties: {
620
- _assignedHeight: {
621
- type: "number"
622
- },
623
- _assignedWidth: {
624
- description: "Internal: Used for responsive spec",
625
- type: "number"
626
- },
627
- _invalidTrack: {
628
- description: "internal",
629
- type: "boolean"
630
- },
631
- _renderingId: {
632
- description: "internal",
633
- type: "string"
634
- },
635
- assembly: {
636
- $ref: "#/definitions/Assembly",
637
- description: 'A string that specifies the genome builds to use. Currently support `"hg38"`, `"hg19"`, `"hg18"`, `"hg17"`, `"hg16"`, `"mm10"`, `"mm9"`, and `"unknown"`.\n\n__Note:__: with `"unknown"` assembly, genomic axes do not show chrN: in labels.'
638
- },
639
- centerRadius: {
640
- description: "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`",
641
- type: "number"
642
- },
643
- data: {
644
- $ref: "#/definitions/DataDeep"
645
- },
646
- endAngle: {
647
- description: 'Specify the end angle (in the range of [0, 360]) of circular tracks (`{"layout": "circular"}`).',
648
- type: "number"
649
- },
650
- height: {
651
- description: "Specify the track height in pixels.",
652
- type: "number"
653
- },
654
- id: {
655
- description: "Assigned to `uid` in a HiGlass view config, used for API and caching.",
656
- type: "string"
657
- },
658
- innerRadius: {
659
- description: 'Specify the inner radius of tracks when (`{"layout": "circular"}`).',
660
- type: "number"
661
- },
662
- layout: {
663
- $ref: "#/definitions/Layout",
664
- description: "Specify the layout type of all tracks."
665
- },
666
- linkingId: {
667
- description: "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)",
668
- type: "string"
669
- },
670
- orientation: {
671
- $ref: "#/definitions/Orientation",
672
- description: "Specify the orientation."
673
- },
674
- outerRadius: {
675
- description: 'Specify the outer radius of tracks when `{"layout": "circular"}`.',
676
- type: "number"
677
- },
678
- overlayOnPreviousTrack: {
679
- type: "boolean"
680
- },
681
- prerelease: {
682
- additionalProperties: false,
683
- description: "internal",
684
- type: "object"
685
- },
686
- spacing: {
687
- description: "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.",
688
- type: "number"
689
- },
690
- startAngle: {
691
- description: 'Specify the start angle (in the range of [0, 360]) of circular tracks (`{"layout": "circular"}`).',
692
- type: "number"
693
- },
694
- "static": {
695
- description: "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.",
696
- type: "boolean"
697
- },
698
- style: {
699
- $ref: "#/definitions/Style",
700
- description: "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)."
701
- },
702
- subtitle: {
703
- type: "string"
704
- },
705
- title: {
706
- description: "If defined, will show the textual label on the left-top corner of a track.",
707
- type: "string"
708
- },
709
- width: {
710
- description: "Specify the track width in pixels.",
711
- type: "number"
712
- },
713
- xAxis: {
714
- $ref: "#/definitions/AxisPosition",
715
- description: "not supported"
716
- },
717
- xDomain: {
718
- anyOf: [
719
- {
720
- $ref: "#/definitions/DomainInterval"
721
- },
722
- {
723
- $ref: "#/definitions/DomainChrInterval"
724
- },
725
- {
726
- $ref: "#/definitions/DomainChr"
727
- }
728
- ],
729
- description: "Specify the visible region of genomic x-axis"
730
- },
731
- xOffset: {
732
- description: "Specify the x offset of views in the unit of pixels",
733
- type: "number"
734
- },
735
- yDomain: {
736
- anyOf: [
737
- {
738
- $ref: "#/definitions/DomainInterval"
739
- },
740
- {
741
- $ref: "#/definitions/DomainChrInterval"
742
- },
743
- {
744
- $ref: "#/definitions/DomainChr"
745
- }
746
- ],
747
- description: "Specify the visible region of genomic y-axis"
748
- },
749
- yOffset: {
750
- description: "Specify the y offset of views in the unit of pixels",
751
- type: "number"
752
- },
753
- zoomLimits: {
754
- $ref: "#/definitions/ZoomLimits"
755
- }
756
- },
757
- required: [
758
- "data"
759
- ],
760
- type: "object"
761
- },
762
616
  DataTransform: {
763
617
  anyOf: [
764
618
  {
@@ -1312,16 +1166,6 @@ const definitions$2 = {
1312
1166
  experimental: {
1313
1167
  additionalProperties: false,
1314
1168
  properties: {
1315
- mouseEvents: {
1316
- anyOf: [
1317
- {
1318
- type: "boolean"
1319
- },
1320
- {
1321
- $ref: "#/definitions/MouseEventsDeep"
1322
- }
1323
- ]
1324
- },
1325
1169
  performanceMode: {
1326
1170
  "default": false,
1327
1171
  description: "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.",
@@ -1365,6 +1209,16 @@ const definitions$2 = {
1365
1209
  mark: {
1366
1210
  $ref: "#/definitions/Mark"
1367
1211
  },
1212
+ mouseEvents: {
1213
+ anyOf: [
1214
+ {
1215
+ type: "boolean"
1216
+ },
1217
+ {
1218
+ $ref: "#/definitions/MouseEventsDeep"
1219
+ }
1220
+ ]
1221
+ },
1368
1222
  opacity: {
1369
1223
  anyOf: [
1370
1224
  {
@@ -1386,9 +1240,6 @@ const definitions$2 = {
1386
1240
  overlayOnPreviousTrack: {
1387
1241
  type: "boolean"
1388
1242
  },
1389
- overrideTemplate: {
1390
- type: "boolean"
1391
- },
1392
1243
  prerelease: {
1393
1244
  additionalProperties: false,
1394
1245
  description: "internal",
@@ -1473,16 +1324,6 @@ const definitions$2 = {
1473
1324
  experimental: {
1474
1325
  additionalProperties: false,
1475
1326
  properties: {
1476
- mouseEvents: {
1477
- anyOf: [
1478
- {
1479
- type: "boolean"
1480
- },
1481
- {
1482
- $ref: "#/definitions/MouseEventsDeep"
1483
- }
1484
- ]
1485
- },
1486
1327
  performanceMode: {
1487
1328
  "default": false,
1488
1329
  description: "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.",
@@ -1526,6 +1367,16 @@ const definitions$2 = {
1526
1367
  mark: {
1527
1368
  $ref: "#/definitions/Mark"
1528
1369
  },
1370
+ mouseEvents: {
1371
+ anyOf: [
1372
+ {
1373
+ type: "boolean"
1374
+ },
1375
+ {
1376
+ $ref: "#/definitions/MouseEventsDeep"
1377
+ }
1378
+ ]
1379
+ },
1529
1380
  opacity: {
1530
1381
  anyOf: [
1531
1382
  {
@@ -1547,9 +1398,6 @@ const definitions$2 = {
1547
1398
  overlayOnPreviousTrack: {
1548
1399
  type: "boolean"
1549
1400
  },
1550
- overrideTemplate: {
1551
- type: "boolean"
1552
- },
1553
1401
  prerelease: {
1554
1402
  additionalProperties: false,
1555
1403
  description: "internal",
@@ -2098,16 +1946,6 @@ const definitions$2 = {
2098
1946
  experimental: {
2099
1947
  additionalProperties: false,
2100
1948
  properties: {
2101
- mouseEvents: {
2102
- anyOf: [
2103
- {
2104
- type: "boolean"
2105
- },
2106
- {
2107
- $ref: "#/definitions/MouseEventsDeep"
2108
- }
2109
- ]
2110
- },
2111
1949
  performanceMode: {
2112
1950
  "default": false,
2113
1951
  description: "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.",
@@ -2151,6 +1989,16 @@ const definitions$2 = {
2151
1989
  mark: {
2152
1990
  $ref: "#/definitions/Mark"
2153
1991
  },
1992
+ mouseEvents: {
1993
+ anyOf: [
1994
+ {
1995
+ type: "boolean"
1996
+ },
1997
+ {
1998
+ $ref: "#/definitions/MouseEventsDeep"
1999
+ }
2000
+ ]
2001
+ },
2154
2002
  opacity: {
2155
2003
  anyOf: [
2156
2004
  {
@@ -2172,9 +2020,6 @@ const definitions$2 = {
2172
2020
  overlayOnPreviousTrack: {
2173
2021
  type: "boolean"
2174
2022
  },
2175
- overrideTemplate: {
2176
- type: "boolean"
2177
- },
2178
2023
  prerelease: {
2179
2024
  additionalProperties: false,
2180
2025
  description: "internal",
@@ -2259,16 +2104,6 @@ const definitions$2 = {
2259
2104
  experimental: {
2260
2105
  additionalProperties: false,
2261
2106
  properties: {
2262
- mouseEvents: {
2263
- anyOf: [
2264
- {
2265
- type: "boolean"
2266
- },
2267
- {
2268
- $ref: "#/definitions/MouseEventsDeep"
2269
- }
2270
- ]
2271
- },
2272
2107
  performanceMode: {
2273
2108
  "default": false,
2274
2109
  description: "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.",
@@ -2312,6 +2147,16 @@ const definitions$2 = {
2312
2147
  mark: {
2313
2148
  $ref: "#/definitions/Mark"
2314
2149
  },
2150
+ mouseEvents: {
2151
+ anyOf: [
2152
+ {
2153
+ type: "boolean"
2154
+ },
2155
+ {
2156
+ $ref: "#/definitions/MouseEventsDeep"
2157
+ }
2158
+ ]
2159
+ },
2315
2160
  opacity: {
2316
2161
  anyOf: [
2317
2162
  {
@@ -2333,9 +2178,6 @@ const definitions$2 = {
2333
2178
  overlayOnPreviousTrack: {
2334
2179
  type: "boolean"
2335
2180
  },
2336
- overrideTemplate: {
2337
- type: "boolean"
2338
- },
2339
2181
  prerelease: {
2340
2182
  additionalProperties: false,
2341
2183
  description: "internal",
@@ -2941,16 +2783,6 @@ const definitions$2 = {
2941
2783
  experimental: {
2942
2784
  additionalProperties: false,
2943
2785
  properties: {
2944
- mouseEvents: {
2945
- anyOf: [
2946
- {
2947
- type: "boolean"
2948
- },
2949
- {
2950
- $ref: "#/definitions/MouseEventsDeep"
2951
- }
2952
- ]
2953
- },
2954
2786
  performanceMode: {
2955
2787
  "default": false,
2956
2788
  description: "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.",
@@ -2994,6 +2826,16 @@ const definitions$2 = {
2994
2826
  mark: {
2995
2827
  $ref: "#/definitions/Mark"
2996
2828
  },
2829
+ mouseEvents: {
2830
+ anyOf: [
2831
+ {
2832
+ type: "boolean"
2833
+ },
2834
+ {
2835
+ $ref: "#/definitions/MouseEventsDeep"
2836
+ }
2837
+ ]
2838
+ },
2997
2839
  opacity: {
2998
2840
  anyOf: [
2999
2841
  {
@@ -3015,9 +2857,6 @@ const definitions$2 = {
3015
2857
  overlayOnPreviousTrack: {
3016
2858
  type: "boolean"
3017
2859
  },
3018
- overrideTemplate: {
3019
- type: "boolean"
3020
- },
3021
2860
  prerelease: {
3022
2861
  additionalProperties: false,
3023
2862
  description: "internal",
@@ -3812,7 +3651,7 @@ const definitions$2 = {
3812
3651
  "triangleRight",
3813
3652
  "triangleBottom",
3814
3653
  "brush",
3815
- "header"
3654
+ "_header"
3816
3655
  ],
3817
3656
  type: "string"
3818
3657
  },
@@ -4191,16 +4030,6 @@ const definitions$2 = {
4191
4030
  experimental: {
4192
4031
  additionalProperties: false,
4193
4032
  properties: {
4194
- mouseEvents: {
4195
- anyOf: [
4196
- {
4197
- type: "boolean"
4198
- },
4199
- {
4200
- $ref: "#/definitions/MouseEventsDeep"
4201
- }
4202
- ]
4203
- },
4204
4033
  performanceMode: {
4205
4034
  "default": false,
4206
4035
  description: "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.",
@@ -4236,6 +4065,16 @@ const definitions$2 = {
4236
4065
  mark: {
4237
4066
  $ref: "#/definitions/Mark"
4238
4067
  },
4068
+ mouseEvents: {
4069
+ anyOf: [
4070
+ {
4071
+ type: "boolean"
4072
+ },
4073
+ {
4074
+ $ref: "#/definitions/MouseEventsDeep"
4075
+ }
4076
+ ]
4077
+ },
4239
4078
  opacity: {
4240
4079
  anyOf: [
4241
4080
  {
@@ -4257,9 +4096,6 @@ const definitions$2 = {
4257
4096
  overlayOnPreviousTrack: {
4258
4097
  type: "boolean"
4259
4098
  },
4260
- overrideTemplate: {
4261
- type: "boolean"
4262
- },
4263
4099
  prerelease: {
4264
4100
  additionalProperties: false,
4265
4101
  description: "internal",
@@ -4518,16 +4354,6 @@ const definitions$2 = {
4518
4354
  experimental: {
4519
4355
  additionalProperties: false,
4520
4356
  properties: {
4521
- mouseEvents: {
4522
- anyOf: [
4523
- {
4524
- type: "boolean"
4525
- },
4526
- {
4527
- $ref: "#/definitions/MouseEventsDeep"
4528
- }
4529
- ]
4530
- },
4531
4357
  performanceMode: {
4532
4358
  "default": false,
4533
4359
  description: "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.",
@@ -4571,6 +4397,16 @@ const definitions$2 = {
4571
4397
  mark: {
4572
4398
  $ref: "#/definitions/Mark"
4573
4399
  },
4400
+ mouseEvents: {
4401
+ anyOf: [
4402
+ {
4403
+ type: "boolean"
4404
+ },
4405
+ {
4406
+ $ref: "#/definitions/MouseEventsDeep"
4407
+ }
4408
+ ]
4409
+ },
4574
4410
  opacity: {
4575
4411
  anyOf: [
4576
4412
  {
@@ -4592,9 +4428,6 @@ const definitions$2 = {
4592
4428
  overlayOnPreviousTrack: {
4593
4429
  type: "boolean"
4594
4430
  },
4595
- overrideTemplate: {
4596
- type: "boolean"
4597
- },
4598
4431
  prerelease: {
4599
4432
  additionalProperties: false,
4600
4433
  description: "internal",
@@ -4883,16 +4716,6 @@ const definitions$2 = {
4883
4716
  experimental: {
4884
4717
  additionalProperties: false,
4885
4718
  properties: {
4886
- mouseEvents: {
4887
- anyOf: [
4888
- {
4889
- type: "boolean"
4890
- },
4891
- {
4892
- $ref: "#/definitions/MouseEventsDeep"
4893
- }
4894
- ]
4895
- },
4896
4719
  performanceMode: {
4897
4720
  "default": false,
4898
4721
  description: "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.",
@@ -4936,6 +4759,16 @@ const definitions$2 = {
4936
4759
  mark: {
4937
4760
  $ref: "#/definitions/Mark"
4938
4761
  },
4762
+ mouseEvents: {
4763
+ anyOf: [
4764
+ {
4765
+ type: "boolean"
4766
+ },
4767
+ {
4768
+ $ref: "#/definitions/MouseEventsDeep"
4769
+ }
4770
+ ]
4771
+ },
4939
4772
  opacity: {
4940
4773
  anyOf: [
4941
4774
  {
@@ -4957,9 +4790,6 @@ const definitions$2 = {
4957
4790
  overlayOnPreviousTrack: {
4958
4791
  type: "boolean"
4959
4792
  },
4960
- overrideTemplate: {
4961
- type: "boolean"
4962
- },
4963
4793
  prerelease: {
4964
4794
  additionalProperties: false,
4965
4795
  description: "internal",
@@ -5266,16 +5096,6 @@ const definitions$2 = {
5266
5096
  experimental: {
5267
5097
  additionalProperties: false,
5268
5098
  properties: {
5269
- mouseEvents: {
5270
- anyOf: [
5271
- {
5272
- type: "boolean"
5273
- },
5274
- {
5275
- $ref: "#/definitions/MouseEventsDeep"
5276
- }
5277
- ]
5278
- },
5279
5099
  performanceMode: {
5280
5100
  "default": false,
5281
5101
  description: "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.",
@@ -5311,6 +5131,16 @@ const definitions$2 = {
5311
5131
  mark: {
5312
5132
  $ref: "#/definitions/Mark"
5313
5133
  },
5134
+ mouseEvents: {
5135
+ anyOf: [
5136
+ {
5137
+ type: "boolean"
5138
+ },
5139
+ {
5140
+ $ref: "#/definitions/MouseEventsDeep"
5141
+ }
5142
+ ]
5143
+ },
5314
5144
  opacity: {
5315
5145
  anyOf: [
5316
5146
  {
@@ -5332,9 +5162,6 @@ const definitions$2 = {
5332
5162
  overlayOnPreviousTrack: {
5333
5163
  type: "boolean"
5334
5164
  },
5335
- overrideTemplate: {
5336
- type: "boolean"
5337
- },
5338
5165
  prerelease: {
5339
5166
  additionalProperties: false,
5340
5167
  description: "internal",
@@ -5609,16 +5436,6 @@ const definitions$2 = {
5609
5436
  experimental: {
5610
5437
  additionalProperties: false,
5611
5438
  properties: {
5612
- mouseEvents: {
5613
- anyOf: [
5614
- {
5615
- type: "boolean"
5616
- },
5617
- {
5618
- $ref: "#/definitions/MouseEventsDeep"
5619
- }
5620
- ]
5621
- },
5622
5439
  performanceMode: {
5623
5440
  "default": false,
5624
5441
  description: "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.",
@@ -5672,6 +5489,16 @@ const definitions$2 = {
5672
5489
  mark: {
5673
5490
  $ref: "#/definitions/Mark"
5674
5491
  },
5492
+ mouseEvents: {
5493
+ anyOf: [
5494
+ {
5495
+ type: "boolean"
5496
+ },
5497
+ {
5498
+ $ref: "#/definitions/MouseEventsDeep"
5499
+ }
5500
+ ]
5501
+ },
5675
5502
  opacity: {
5676
5503
  anyOf: [
5677
5504
  {
@@ -5693,9 +5520,6 @@ const definitions$2 = {
5693
5520
  overlayOnPreviousTrack: {
5694
5521
  type: "boolean"
5695
5522
  },
5696
- overrideTemplate: {
5697
- type: "boolean"
5698
- },
5699
5523
  prerelease: {
5700
5524
  additionalProperties: false,
5701
5525
  description: "internal",
@@ -6163,16 +5987,6 @@ const definitions$2 = {
6163
5987
  experimental: {
6164
5988
  additionalProperties: false,
6165
5989
  properties: {
6166
- mouseEvents: {
6167
- anyOf: [
6168
- {
6169
- type: "boolean"
6170
- },
6171
- {
6172
- $ref: "#/definitions/MouseEventsDeep"
6173
- }
6174
- ]
6175
- },
6176
5990
  performanceMode: {
6177
5991
  "default": false,
6178
5992
  description: "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.",
@@ -6216,6 +6030,16 @@ const definitions$2 = {
6216
6030
  mark: {
6217
6031
  $ref: "#/definitions/Mark"
6218
6032
  },
6033
+ mouseEvents: {
6034
+ anyOf: [
6035
+ {
6036
+ type: "boolean"
6037
+ },
6038
+ {
6039
+ $ref: "#/definitions/MouseEventsDeep"
6040
+ }
6041
+ ]
6042
+ },
6219
6043
  opacity: {
6220
6044
  anyOf: [
6221
6045
  {
@@ -6237,9 +6061,6 @@ const definitions$2 = {
6237
6061
  overlayOnPreviousTrack: {
6238
6062
  type: "boolean"
6239
6063
  },
6240
- overrideTemplate: {
6241
- type: "boolean"
6242
- },
6243
6064
  prerelease: {
6244
6065
  additionalProperties: false,
6245
6066
  description: "internal",
@@ -6531,16 +6352,6 @@ const definitions$2 = {
6531
6352
  experimental: {
6532
6353
  additionalProperties: false,
6533
6354
  properties: {
6534
- mouseEvents: {
6535
- anyOf: [
6536
- {
6537
- type: "boolean"
6538
- },
6539
- {
6540
- $ref: "#/definitions/MouseEventsDeep"
6541
- }
6542
- ]
6543
- },
6544
6355
  performanceMode: {
6545
6356
  "default": false,
6546
6357
  description: "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.",
@@ -6584,6 +6395,16 @@ const definitions$2 = {
6584
6395
  mark: {
6585
6396
  $ref: "#/definitions/Mark"
6586
6397
  },
6398
+ mouseEvents: {
6399
+ anyOf: [
6400
+ {
6401
+ type: "boolean"
6402
+ },
6403
+ {
6404
+ $ref: "#/definitions/MouseEventsDeep"
6405
+ }
6406
+ ]
6407
+ },
6587
6408
  opacity: {
6588
6409
  anyOf: [
6589
6410
  {
@@ -6605,9 +6426,6 @@ const definitions$2 = {
6605
6426
  overlayOnPreviousTrack: {
6606
6427
  type: "boolean"
6607
6428
  },
6608
- overrideTemplate: {
6609
- type: "boolean"
6610
- },
6611
6429
  prerelease: {
6612
6430
  additionalProperties: false,
6613
6431
  description: "internal",
@@ -6688,16 +6506,6 @@ const definitions$2 = {
6688
6506
  experimental: {
6689
6507
  additionalProperties: false,
6690
6508
  properties: {
6691
- mouseEvents: {
6692
- anyOf: [
6693
- {
6694
- type: "boolean"
6695
- },
6696
- {
6697
- $ref: "#/definitions/MouseEventsDeep"
6698
- }
6699
- ]
6700
- },
6701
6509
  performanceMode: {
6702
6510
  "default": false,
6703
6511
  description: "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.",
@@ -6741,6 +6549,16 @@ const definitions$2 = {
6741
6549
  mark: {
6742
6550
  $ref: "#/definitions/Mark"
6743
6551
  },
6552
+ mouseEvents: {
6553
+ anyOf: [
6554
+ {
6555
+ type: "boolean"
6556
+ },
6557
+ {
6558
+ $ref: "#/definitions/MouseEventsDeep"
6559
+ }
6560
+ ]
6561
+ },
6744
6562
  opacity: {
6745
6563
  anyOf: [
6746
6564
  {
@@ -6762,9 +6580,6 @@ const definitions$2 = {
6762
6580
  overlayOnPreviousTrack: {
6763
6581
  type: "boolean"
6764
6582
  },
6765
- overrideTemplate: {
6766
- type: "boolean"
6767
- },
6768
6583
  prerelease: {
6769
6584
  additionalProperties: false,
6770
6585
  description: "internal",
@@ -7310,16 +7125,6 @@ const definitions$2 = {
7310
7125
  experimental: {
7311
7126
  additionalProperties: false,
7312
7127
  properties: {
7313
- mouseEvents: {
7314
- anyOf: [
7315
- {
7316
- type: "boolean"
7317
- },
7318
- {
7319
- $ref: "#/definitions/MouseEventsDeep"
7320
- }
7321
- ]
7322
- },
7323
7128
  performanceMode: {
7324
7129
  "default": false,
7325
7130
  description: "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.",
@@ -7363,6 +7168,16 @@ const definitions$2 = {
7363
7168
  mark: {
7364
7169
  $ref: "#/definitions/Mark"
7365
7170
  },
7171
+ mouseEvents: {
7172
+ anyOf: [
7173
+ {
7174
+ type: "boolean"
7175
+ },
7176
+ {
7177
+ $ref: "#/definitions/MouseEventsDeep"
7178
+ }
7179
+ ]
7180
+ },
7366
7181
  opacity: {
7367
7182
  anyOf: [
7368
7183
  {
@@ -7384,9 +7199,6 @@ const definitions$2 = {
7384
7199
  overlayOnPreviousTrack: {
7385
7200
  type: "boolean"
7386
7201
  },
7387
- overrideTemplate: {
7388
- type: "boolean"
7389
- },
7390
7202
  prerelease: {
7391
7203
  additionalProperties: false,
7392
7204
  description: "internal",
@@ -7467,16 +7279,6 @@ const definitions$2 = {
7467
7279
  experimental: {
7468
7280
  additionalProperties: false,
7469
7281
  properties: {
7470
- mouseEvents: {
7471
- anyOf: [
7472
- {
7473
- type: "boolean"
7474
- },
7475
- {
7476
- $ref: "#/definitions/MouseEventsDeep"
7477
- }
7478
- ]
7479
- },
7480
7282
  performanceMode: {
7481
7283
  "default": false,
7482
7284
  description: "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.",
@@ -7520,6 +7322,16 @@ const definitions$2 = {
7520
7322
  mark: {
7521
7323
  $ref: "#/definitions/Mark"
7522
7324
  },
7325
+ mouseEvents: {
7326
+ anyOf: [
7327
+ {
7328
+ type: "boolean"
7329
+ },
7330
+ {
7331
+ $ref: "#/definitions/MouseEventsDeep"
7332
+ }
7333
+ ]
7334
+ },
7523
7335
  opacity: {
7524
7336
  anyOf: [
7525
7337
  {
@@ -7541,9 +7353,6 @@ const definitions$2 = {
7541
7353
  overlayOnPreviousTrack: {
7542
7354
  type: "boolean"
7543
7355
  },
7544
- overrideTemplate: {
7545
- type: "boolean"
7546
- },
7547
7356
  prerelease: {
7548
7357
  additionalProperties: false,
7549
7358
  description: "internal",
@@ -8142,16 +7951,6 @@ const definitions$2 = {
8142
7951
  experimental: {
8143
7952
  additionalProperties: false,
8144
7953
  properties: {
8145
- mouseEvents: {
8146
- anyOf: [
8147
- {
8148
- type: "boolean"
8149
- },
8150
- {
8151
- $ref: "#/definitions/MouseEventsDeep"
8152
- }
8153
- ]
8154
- },
8155
7954
  performanceMode: {
8156
7955
  "default": false,
8157
7956
  description: "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.",
@@ -8195,6 +7994,16 @@ const definitions$2 = {
8195
7994
  mark: {
8196
7995
  $ref: "#/definitions/Mark"
8197
7996
  },
7997
+ mouseEvents: {
7998
+ anyOf: [
7999
+ {
8000
+ type: "boolean"
8001
+ },
8002
+ {
8003
+ $ref: "#/definitions/MouseEventsDeep"
8004
+ }
8005
+ ]
8006
+ },
8198
8007
  opacity: {
8199
8008
  anyOf: [
8200
8009
  {
@@ -8216,9 +8025,6 @@ const definitions$2 = {
8216
8025
  overlayOnPreviousTrack: {
8217
8026
  type: "boolean"
8218
8027
  },
8219
- overrideTemplate: {
8220
- type: "boolean"
8221
- },
8222
8028
  prerelease: {
8223
8029
  additionalProperties: false,
8224
8030
  description: "internal",
@@ -9230,9 +9036,6 @@ const definitions$2 = {
9230
9036
  {
9231
9037
  $ref: "#/definitions/OverlaidTrack"
9232
9038
  },
9233
- {
9234
- $ref: "#/definitions/DataTrack"
9235
- },
9236
9039
  {
9237
9040
  $ref: "#/definitions/TemplateTrack"
9238
9041
  },
@@ -10219,6 +10022,9 @@ function replaceTrackTemplates(spec, templates) {
10219
10022
  if ("encoding" in viewBase) {
10220
10023
  delete viewBase.encoding;
10221
10024
  }
10025
+ if ("template" in viewBase) {
10026
+ delete viewBase.template;
10027
+ }
10222
10028
  const convertedView = {
10223
10029
  ...viewBase,
10224
10030
  alignment: "overlay",
@@ -23122,12 +22928,7 @@ const HIGLASS_AXIS_SIZE = 30;
23122
22928
  const getViewTemplate = (assembly) => {
23123
22929
  return {
23124
22930
  genomePositionSearchBoxVisible: false,
23125
- genomePositionSearchBox: {
23126
- autocompleteServer: "https://higlass.io/api/v1",
23127
- autocompleteId: getAutoCompleteId(assembly),
23128
- chromInfoServer: "https://higlass.io/api/v1",
23129
- chromInfoId: assembly != null ? assembly : "hg38"
23130
- },
22931
+ genomePositionSearchBox: getAutoCompleteObject(assembly),
23131
22932
  layout: { w: 12, h: 12, x: 0, y: 0 },
23132
22933
  tracks: {
23133
22934
  top: [],
@@ -24434,9 +24235,9 @@ const config$1 = {
24434
24235
  const factory$1 = (HGC, context, options) => {
24435
24236
  var _assembly2, _processedTileInfo, _mouseDownX, _mouseDownY, _isRangeBrushActivated, _gBrush, _loadingTextStyleObj, _loadingTextBg, _loadingText, _processedTileMap, _tilesToId, tilesToId_fn, _binsPerTile, binsPerTile_get, _generateTabularData, generateTabularData_fn, _onMouseDown, onMouseDown_fn, _onMouseMove, onMouseMove_fn, _onMouseUp, onMouseUp_fn, _onMouseOut, onMouseOut_fn, _getElementsWithinMouse, getElementsWithinMouse_fn, _publishTrackEvents, publishTrackEvents_fn, _onRangeBrush, onRangeBrush_fn, _highlightMarks, highlightMarks_fn, _publishOnNewTrack, publishOnNewTrack_fn, _hasStretchableGraphics, hasStretchableGraphics_fn, _isTooStretched, isTooStretched_fn;
24436
24237
  const { tileProxy } = HGC.services;
24437
- const { BarTrack } = HGC.tracks;
24238
+ const { TiledPixiTrack } = HGC.tracks;
24438
24239
  const loadingTextStyle = getTextStyle({ color: "black", size: 12 });
24439
- const _GoslingTrackClass = class _GoslingTrackClass extends BarTrack {
24240
+ const _GoslingTrackClass = class _GoslingTrackClass extends TiledPixiTrack {
24440
24241
  /* *
24441
24242
  *
24442
24243
  * Constructor
@@ -24450,17 +24251,13 @@ const factory$1 = (HGC, context, options) => {
24450
24251
  * Construct tabular data from a higlass tileset and a gosling track model.
24451
24252
  */
24452
24253
  __privateAdd(this, _generateTabularData);
24453
- /* *
24454
- *
24455
- * Mouse methods
24456
- *
24457
- * */
24458
24254
  __privateAdd(this, _onMouseDown);
24459
24255
  __privateAdd(this, _onMouseMove);
24460
24256
  __privateAdd(this, _onMouseUp);
24461
24257
  __privateAdd(this, _onMouseOut);
24462
24258
  /**
24463
- * From all tiles and overlaid tracks, collect element(s) that are withing a mouse position.
24259
+ * From all tiles and overlaid tracks, collect element(s) that are within a mouse position.
24260
+ * In the array, the first element is the element that is directly within the mouse position.
24464
24261
  */
24465
24262
  __privateAdd(this, _getElementsWithinMouse);
24466
24263
  /**
@@ -24486,8 +24283,7 @@ const factory$1 = (HGC, context, options) => {
24486
24283
  */
24487
24284
  __privateAdd(this, _hasStretchableGraphics);
24488
24285
  /**
24489
- * Used in drawTile()
24490
- * Checks if the tile Graphic is too stretched. If so, it returns true.
24286
+ * Used in drawTile(). Checks if the tile Graphic is too stretched. If so, it returns true.
24491
24287
  * @param stretchFactor The factor by which the tile is stretched
24492
24288
  * @returns True if the tile is too stretched, false otherwise
24493
24289
  */
@@ -24526,6 +24322,7 @@ const factory$1 = (HGC, context, options) => {
24526
24322
  // This is used to persist processed tile data across draw() calls.
24527
24323
  __privateAdd(this, _processedTileMap, /* @__PURE__ */ new WeakMap());
24528
24324
  __publicField(this, "hideMousePosition");
24325
+ const { isShowGlobalMousePosition } = context;
24529
24326
  context.dataFetcher.track = this;
24530
24327
  __privateSet(this, _processedTileInfo, {});
24531
24328
  __privateSet(this, _assembly2, this.options.spec.assembly);
@@ -24561,15 +24358,11 @@ const factory$1 = (HGC, context, options) => {
24561
24358
  });
24562
24359
  this.pMask.on("mouseout", __privateMethod(this, _onMouseOut, onMouseOut_fn).bind(this));
24563
24360
  this.flipText = this.options.spec.orientation === "vertical";
24564
- if (this.hideMousePosition) {
24565
- this.hideMousePosition();
24566
- this.hideMousePosition = void 0;
24567
- }
24568
24361
  if (((_d = this.options) == null ? void 0 : _d.showMousePosition) && !this.hideMousePosition) {
24569
24362
  this.hideMousePosition = HGC.utils.showMousePosition(
24570
24363
  this,
24571
24364
  Is2DTrack(this.getResolvedTracks()[0]),
24572
- this.isShowGlobalMousePosition()
24365
+ isShowGlobalMousePosition()
24573
24366
  );
24574
24367
  }
24575
24368
  this.pLabel.removeChild(this.trackNotFoundText);
@@ -24603,6 +24396,11 @@ const factory$1 = (HGC, context, options) => {
24603
24396
  const isBamDataFetcher = this.dataFetcher instanceof BamDataFetcher;
24604
24397
  this.processAllTiles(isBamDataFetcher);
24605
24398
  super.draw();
24399
+ Object.values(this.fetchedTiles).forEach((tile) => {
24400
+ if (!tile.drawnAtScale)
24401
+ return;
24402
+ [tile.graphics.scale.x, tile.graphics.position.x] = this.getXScaleAndOffset(tile.drawnAtScale);
24403
+ });
24606
24404
  this.prevVisibleAndFetchedTiles = this.visibleAndFetchedTiles();
24607
24405
  };
24608
24406
  if (isTabularDataFetcher(this.dataFetcher) && !isEqual(this.visibleAndFetchedTiles(), this.prevVisibleAndFetchedTiles)) {
@@ -24616,6 +24414,17 @@ const factory$1 = (HGC, context, options) => {
24616
24414
  this.firstDraw = false;
24617
24415
  }
24618
24416
  }
24417
+ /**
24418
+ * Copied from BarTrack
24419
+ */
24420
+ getXScaleAndOffset(drawnAtScale) {
24421
+ const dA = drawnAtScale.domain();
24422
+ const dB = this._xScale.domain();
24423
+ const tileK = (dA[1] - dA[0]) / (dB[1] - dB[0]);
24424
+ const newRange = this._xScale.domain().map(drawnAtScale);
24425
+ const posOffset = newRange[0];
24426
+ return [tileK, -posOffset * tileK];
24427
+ }
24619
24428
  /*
24620
24429
  * Do whatever is necessary before rendering a new tile. This function is called from `receivedTiles()`.
24621
24430
  * Overrides initTile in BarTrack
@@ -24656,7 +24465,8 @@ const factory$1 = (HGC, context, options) => {
24656
24465
  this.pBackground.clear();
24657
24466
  this.pBackground.removeChildren();
24658
24467
  this.pBorder.clear();
24659
- this.pBorder.removeChildren();
24468
+ const children = this.pBorder.removeChildren();
24469
+ children.forEach((c) => c.destroy());
24660
24470
  this.displayedLegends = [];
24661
24471
  tileInfo.goslingModels.forEach((model) => {
24662
24472
  const trackWidth = this.dimensions[0];
@@ -24728,6 +24538,7 @@ const factory$1 = (HGC, context, options) => {
24728
24538
  setPosition(newPosition) {
24729
24539
  super.setPosition(newPosition);
24730
24540
  [this.pMain.position.x, this.pMain.position.y] = this.position;
24541
+ [this.pMouseOver.position.x, this.pMouseOver.position.y] = this.position;
24731
24542
  this.mRangeBrush.setOffset(...newPosition);
24732
24543
  }
24733
24544
  /**
@@ -24830,7 +24641,7 @@ const factory$1 = (HGC, context, options) => {
24830
24641
  callback();
24831
24642
  }
24832
24643
  /**
24833
- * Overrides method in Tiled1DPixiTrack. It is called in the constructor, `super(context, options)`.
24644
+ * This method is called in the TiledPixiTrack constructor `super(context, options)`.
24834
24645
  * So be aware to use defined variables.
24835
24646
  */
24836
24647
  calculateVisibleTiles() {
@@ -24875,7 +24686,7 @@ const factory$1 = (HGC, context, options) => {
24875
24686
  } else {
24876
24687
  const xTiles = tileProxy.calculateTiles(
24877
24688
  zoomLevel,
24878
- this.relevantScale(),
24689
+ this._xScale,
24879
24690
  this.tilesetInfo.min_pos[0],
24880
24691
  this.tilesetInfo.max_pos[0],
24881
24692
  this.tilesetInfo.max_zoom,
@@ -24899,7 +24710,31 @@ const factory$1 = (HGC, context, options) => {
24899
24710
  }
24900
24711
  }
24901
24712
  /**
24902
- * Get the tile's position in its coordinate system. Overrides method in Tiled1DPixiTrack.
24713
+ * Copied from HorizontalTiled1DPixiTrack
24714
+ */
24715
+ calculateZoomLevel() {
24716
+ if (!this.tilesetInfo) {
24717
+ throw Error("tilesetInfo not parsed");
24718
+ }
24719
+ if ("resolutions" in this.tilesetInfo) {
24720
+ const zoomIndexX = tileProxy.calculateZoomLevelFromResolutions(
24721
+ this.tilesetInfo.resolutions,
24722
+ this._xScale
24723
+ );
24724
+ return zoomIndexX;
24725
+ }
24726
+ const xZoomLevel = tileProxy.calculateZoomLevel(
24727
+ this._xScale,
24728
+ this.tilesetInfo.min_pos[0],
24729
+ this.tilesetInfo.max_pos[0],
24730
+ this.tilesetInfo.bins_per_dimension || this.tilesetInfo.tile_size
24731
+ );
24732
+ let zoomLevel = Math.min(xZoomLevel, this.maxZoom);
24733
+ zoomLevel = Math.max(zoomLevel, 0);
24734
+ return zoomLevel;
24735
+ }
24736
+ /**
24737
+ * Get the tile's position in its coordinate system. Based on method in Tiled1DPixiTrack
24903
24738
  */
24904
24739
  getTilePosAndDimensions(zoomLevel, tilePos) {
24905
24740
  if (!this.tilesetInfo) {
@@ -24936,7 +24771,7 @@ const factory$1 = (HGC, context, options) => {
24936
24771
  }
24937
24772
  }
24938
24773
  /**
24939
- * Gets the indices of the visible data a tile. Overrides method in Tiled1DPixiTrack
24774
+ * Gets the indices of the visible data a tile. Based on method in Tiled1DPixiTrack
24940
24775
  */
24941
24776
  getIndicesOfVisibleDataInTile(tile) {
24942
24777
  const visible = this._xScale.range();
@@ -24954,7 +24789,6 @@ const factory$1 = (HGC, context, options) => {
24954
24789
  }
24955
24790
  /**
24956
24791
  * Overrides method in TiledPixiTrack
24957
- * @param loadedTiles
24958
24792
  */
24959
24793
  receivedTiles(loadedTiles) {
24960
24794
  super.receivedTiles(loadedTiles);
@@ -25007,6 +24841,18 @@ const factory$1 = (HGC, context, options) => {
25007
24841
  const isBamDataFetcher = this.dataFetcher instanceof BamDataFetcher;
25008
24842
  return includesDisplaceTransform && !hasDenseTiles() && !isBamDataFetcher;
25009
24843
  }
24844
+ /**
24845
+ * Copied from Tiled1DPixiTrack. The ID of the local tile
24846
+ */
24847
+ tileToLocalId(tile) {
24848
+ return `${tile.join(".")}`;
24849
+ }
24850
+ /**
24851
+ * Copied from Tiled1DPixiTrack. The ID of the tile on the server.
24852
+ */
24853
+ tileToRemoteId(tile) {
24854
+ return `${tile.join(".")}`;
24855
+ }
25010
24856
  /**
25011
24857
  * Creates an array of SingleTracks if there are overlaid tracks.
25012
24858
  * This method cannot be private because it is called by functions which are called by super.draw();
@@ -25101,12 +24947,23 @@ const factory$1 = (HGC, context, options) => {
25101
24947
  });
25102
24948
  return tileInfo.goslingModels;
25103
24949
  }
24950
+ /* *
24951
+ *
24952
+ * Mouse methods
24953
+ *
24954
+ * */
24955
+ /**
24956
+ * This is for the HiGlass mouseMoveZoom event. However, GoslingTrack has its own way of handling mouse events.
24957
+ */
24958
+ mouseMoveZoomHandler() {
24959
+ return;
24960
+ }
25104
24961
  // set in HorizontalTiled1DPixiTrack
25105
24962
  /**
25106
- * Overrides method in HorizontalLine1DPixiTrack
24963
+ * Called by showHoverMenu() in HiGlassComponent
25107
24964
  */
25108
24965
  getMouseOverHtml(mouseX, mouseY) {
25109
- var _a, _b, _c, _d, _e;
24966
+ var _a, _b, _c, _d;
25110
24967
  __privateMethod(this, _publishTrackEvents, publishTrackEvents_fn).call(this, "trackMouseOver", mouseX, mouseY);
25111
24968
  if (__privateGet(this, _isRangeBrushActivated)) {
25112
24969
  return "";
@@ -25123,15 +24980,15 @@ const factory$1 = (HGC, context, options) => {
25123
24980
  document.body.style.cursor = "default";
25124
24981
  }
25125
24982
  if (capturedElements.length !== 0) {
25126
- const mouseEvents = (_a = this.options.spec.experimental) == null ? void 0 : _a.mouseEvents;
24983
+ const mouseEvents = this.options.spec.mouseEvents;
25127
24984
  const mouseOverEnabled = !!mouseEvents || IsMouseEventsDeep(mouseEvents) && !!mouseEvents.mouseOver;
25128
24985
  if (mouseOverEnabled) {
25129
24986
  const g = this.pMouseHover;
25130
- if (((_c = (_b = this.options.spec.style) == null ? void 0 : _b.mouseOver) == null ? void 0 : _c.arrange) !== "behind") {
24987
+ if (((_b = (_a = this.options.spec.style) == null ? void 0 : _a.mouseOver) == null ? void 0 : _b.arrange) !== "behind") {
25131
24988
  this.pMain.removeChild(g);
25132
24989
  this.pMain.addChild(g);
25133
24990
  }
25134
- __privateMethod(this, _highlightMarks, highlightMarks_fn).call(this, g, capturedElements, Object.assign({}, DEFAULT_MOUSE_EVENT_STYLE, (_d = this.options.spec.style) == null ? void 0 : _d.mouseOver));
24991
+ __privateMethod(this, _highlightMarks, highlightMarks_fn).call(this, g, capturedElements, Object.assign({}, DEFAULT_MOUSE_EVENT_STYLE, (_c = this.options.spec.style) == null ? void 0 : _c.mouseOver));
25135
24992
  publish("mouseOver", {
25136
24993
  id: context.viewUid,
25137
24994
  genomicPosition,
@@ -25139,10 +24996,10 @@ const factory$1 = (HGC, context, options) => {
25139
24996
  });
25140
24997
  }
25141
24998
  const models = this.visibleAndFetchedGoslingModels();
25142
- const firstTooltipSpec = (_e = models.find((m2) => {
24999
+ const firstTooltipSpec = (_d = models.find((m2) => {
25143
25000
  var _a2;
25144
25001
  return m2.spec().tooltip && ((_a2 = m2.spec().tooltip) == null ? void 0 : _a2.length) !== 0;
25145
- })) == null ? void 0 : _e.spec().tooltip;
25002
+ })) == null ? void 0 : _d.spec().tooltip;
25146
25003
  if (firstTooltipSpec) {
25147
25004
  let content = firstTooltipSpec.map((d) => {
25148
25005
  var _a2;
@@ -25157,9 +25014,6 @@ const factory$1 = (HGC, context, options) => {
25157
25014
  return `<tr><td style='padding: 4px 8px'>${(_a2 = d.alt) != null ? _a2 : d.field}</td><td style='padding: 4px 8px'><b>${value}</b></td></tr>`;
25158
25015
  }).join("");
25159
25016
  content = `<table style='text-align: left; margin-top: 12px'>${content}</table>`;
25160
- if (capturedElements.length > 1) {
25161
- content += `<div style='padding: 4px 8px; margin-top: 4px; text-align: center; color: grey'>${capturedElements.length - 1} Additional Selections...</div>`;
25162
- }
25163
25017
  return `<div>${content}</div>`;
25164
25018
  }
25165
25019
  }
@@ -25314,10 +25168,9 @@ const factory$1 = (HGC, context, options) => {
25314
25168
  };
25315
25169
  _onMouseDown = new WeakSet();
25316
25170
  onMouseDown_fn = function(mouseX, mouseY, isAltPressed) {
25317
- var _a;
25318
25171
  __privateSet(this, _mouseDownX, mouseX);
25319
25172
  __privateSet(this, _mouseDownY, mouseY);
25320
- const mouseEvents = (_a = this.options.spec.experimental) == null ? void 0 : _a.mouseEvents;
25173
+ const mouseEvents = this.options.spec.mouseEvents;
25321
25174
  const rangeSelectEnabled = !!mouseEvents || IsMouseEventsDeep(mouseEvents) && !!mouseEvents.rangeSelect;
25322
25175
  __privateSet(this, _isRangeBrushActivated, rangeSelectEnabled && isAltPressed);
25323
25176
  this.pMouseHover.clear();
@@ -25333,9 +25186,8 @@ const factory$1 = (HGC, context, options) => {
25333
25186
  };
25334
25187
  _onMouseUp = new WeakSet();
25335
25188
  onMouseUp_fn = function(mouseX, mouseY) {
25336
- var _a;
25337
25189
  __privateMethod(this, _publishTrackEvents, publishTrackEvents_fn).call(this, "trackClick", mouseX, mouseY);
25338
- const mouseEvents = (_a = this.options.spec.experimental) == null ? void 0 : _a.mouseEvents;
25190
+ const mouseEvents = this.options.spec.mouseEvents;
25339
25191
  const clickEnabled = !!mouseEvents || IsMouseEventsDeep(mouseEvents) && !!mouseEvents.click;
25340
25192
  const isDrag = Math.sqrt((__privateGet(this, _mouseDownX) - mouseX) ** 2 + (__privateGet(this, _mouseDownY) - mouseY) ** 2) > 1;
25341
25193
  if (!__privateGet(this, _isRangeBrushActivated) && !isDrag) {
@@ -25373,9 +25225,8 @@ const factory$1 = (HGC, context, options) => {
25373
25225
  };
25374
25226
  _getElementsWithinMouse = new WeakSet();
25375
25227
  getElementsWithinMouse_fn = function(mouseX, mouseY) {
25376
- var _a;
25377
25228
  const models = this.visibleAndFetchedGoslingModels();
25378
- const mouseEvents = (_a = this.options.spec.experimental) == null ? void 0 : _a.mouseEvents;
25229
+ const mouseEvents = this.options.spec.mouseEvents;
25379
25230
  const multiHovering = IsMouseEventsDeep(mouseEvents) && mouseEvents.enableMouseOverOnMultipleMarks;
25380
25231
  const idField = IsMouseEventsDeep(mouseEvents) && mouseEvents.groupMarksByField;
25381
25232
  const mergedCapturedElements = models.map((model) => model.getMouseEventModel().findAll(mouseX, mouseY, true)).flat();
@@ -25424,7 +25275,7 @@ const factory$1 = (HGC, context, options) => {
25424
25275
  };
25425
25276
  _onRangeBrush = new WeakSet();
25426
25277
  onRangeBrush_fn = function(range, skipApiTrigger = false) {
25427
- var _a, _b, _c, _d;
25278
+ var _a, _b, _c;
25428
25279
  this.pMouseSelection.clear();
25429
25280
  if (range === null) {
25430
25281
  if (!skipApiTrigger) {
@@ -25435,7 +25286,7 @@ const factory$1 = (HGC, context, options) => {
25435
25286
  const models = this.visibleAndFetchedGoslingModels();
25436
25287
  const [startX, endX] = range;
25437
25288
  let capturedElements = models.map((model) => model.getMouseEventModel().findAllWithinRange(startX, endX, true)).flat();
25438
- const mouseEvents = (_a = this.options.spec.experimental) == null ? void 0 : _a.mouseEvents;
25289
+ const mouseEvents = this.options.spec.mouseEvents;
25439
25290
  const idField = IsMouseEventsDeep(mouseEvents) && mouseEvents.groupMarksByField;
25440
25291
  if (capturedElements.length !== 0 && idField) {
25441
25292
  models.forEach((model) => {
@@ -25446,11 +25297,11 @@ const factory$1 = (HGC, context, options) => {
25446
25297
  }
25447
25298
  if (capturedElements.length !== 0) {
25448
25299
  const g = this.pMouseSelection;
25449
- if (((_c = (_b = this.options.spec.style) == null ? void 0 : _b.select) == null ? void 0 : _c.arrange) !== "behind") {
25300
+ if (((_b = (_a = this.options.spec.style) == null ? void 0 : _a.select) == null ? void 0 : _b.arrange) !== "behind") {
25450
25301
  this.pMain.removeChild(g);
25451
25302
  this.pMain.addChild(g);
25452
25303
  }
25453
- __privateMethod(this, _highlightMarks, highlightMarks_fn).call(this, g, capturedElements, Object.assign({}, DEFAULT_MOUSE_EVENT_STYLE, (_d = this.options.spec.style) == null ? void 0 : _d.select));
25304
+ __privateMethod(this, _highlightMarks, highlightMarks_fn).call(this, g, capturedElements, Object.assign({}, DEFAULT_MOUSE_EVENT_STYLE, (_c = this.options.spec.style) == null ? void 0 : _c.select));
25454
25305
  }
25455
25306
  if (!skipApiTrigger) {
25456
25307
  const genomicRange = [
@@ -25496,7 +25347,7 @@ const factory$1 = (HGC, context, options) => {
25496
25347
  };
25497
25348
  _hasStretchableGraphics = new WeakSet();
25498
25349
  hasStretchableGraphics_fn = function() {
25499
- var _a, _b;
25350
+ var _a;
25500
25351
  const hasStretchOption = (_a = this.options.spec.experimental) == null ? void 0 : _a.stretchGraphics;
25501
25352
  if (hasStretchOption === true) {
25502
25353
  return true;
@@ -25510,7 +25361,7 @@ const factory$1 = (HGC, context, options) => {
25510
25361
  (acc, spec) => acc && stretchableMarks.includes(spec.mark),
25511
25362
  true
25512
25363
  );
25513
- const noMouseInteractions = !((_b = this.options.spec.experimental) == null ? void 0 : _b.mouseEvents);
25364
+ const noMouseInteractions = !this.options.spec.mouseEvents;
25514
25365
  return isFirstTrack1D && isNotCircularLayout && hasStretchableMark && noMouseInteractions;
25515
25366
  };
25516
25367
  _isTooStretched = new WeakSet();
@@ -25832,7 +25683,7 @@ function getNumOfYAxes(tracks) {
25832
25683
  const getTextTrack = (size, title, subtitle) => {
25833
25684
  return JSON.parse(
25834
25685
  JSON.stringify({
25835
- mark: "header",
25686
+ mark: "_header",
25836
25687
  width: size.width,
25837
25688
  height: size.height,
25838
25689
  title,
@@ -25996,7 +25847,7 @@ function goslingToHiGlass(hgModel, gosTrack, bb, layout, theme, idMapper, urlToF
25996
25847
  }
25997
25848
  });
25998
25849
  hgModel.validateSpec(true);
25999
- } else if (firstResolvedSpec.mark === "header") {
25850
+ } else if (firstResolvedSpec.mark === "_header") {
26000
25851
  hgModel.addDefaultView(`${trackId}-title`).setLayout(layout);
26001
25852
  if (typeof firstResolvedSpec.title === "string") {
26002
25853
  hgModel.setTextTrack(
@@ -26281,7 +26132,6 @@ function isSelectResponsiveSpec(conditions, assignedDimensions, parentDimensions
26281
26132
  function compile(spec, callback, templates, theme, containerStatus, urlToFetchOptions) {
26282
26133
  var _a, _b;
26283
26134
  const specCopy = JSON.parse(JSON.stringify(spec));
26284
- overrideDataTemplates(specCopy);
26285
26135
  replaceTrackTemplates(specCopy, templates);
26286
26136
  traverseToFixSpecDownstream(specCopy);
26287
26137
  const trackInfosAndSize = getRelativeTrackInfo(specCopy, theme);
@@ -26298,10 +26148,6 @@ function compile(spec, callback, templates, theme, containerStatus, urlToFetchOp
26298
26148
  traverseToFixSpecDownstream(specCopy);
26299
26149
  trackInfos = getRelativeTrackInfo(specCopy, theme).trackInfos;
26300
26150
  }
26301
- publish("specProcessed", {
26302
- id: specCopy.id,
26303
- spec: specCopy
26304
- });
26305
26151
  renderHiGlass(specCopy, trackInfos, callback, theme, urlToFetchOptions);
26306
26152
  }
26307
26153
  init();
@@ -26544,6 +26390,7 @@ const preverseZoomStatus = (newSpec, prevSpec) => {
26544
26390
  const DELAY_FOR_CONTAINER_RESIZE_BEFORE_RERENDER = 300;
26545
26391
  const GoslingComponent = forwardRef((props, ref) => {
26546
26392
  var _a, _b, _c;
26393
+ const { reactive = true } = props;
26547
26394
  const [viewConfig, setViewConfig] = useState();
26548
26395
  const [isInitialRender, setIsInitialRender] = useState(true);
26549
26396
  const [size, setSize] = useState({ width: 200, height: 200 });
@@ -26586,21 +26433,21 @@ const GoslingComponent = forwardRef((props, ref) => {
26586
26433
  compile(
26587
26434
  spec,
26588
26435
  (newHiGlassSpec, newSize, newGoslingSpec, newTracksAndViews, newIdTable) => {
26589
- var _a2, _b2;
26436
+ var _a2;
26590
26437
  if (prevSpec.current && isEqual(omitDeep(prevSpec.current, ["linkingId"]), omitDeep(newGoslingSpec, ["linkingId"]))) {
26591
26438
  return;
26592
26439
  }
26593
26440
  (_a2 = props.compiled) == null ? void 0 : _a2.call(props, spec, newHiGlassSpec, { _processedSpec: newGoslingSpec });
26594
26441
  setSize(newSize);
26595
26442
  const isMountedOnce = typeof viewConfig !== "undefined";
26596
- if (((_b2 = props.experimental) == null ? void 0 : _b2.reactive) && isMountedOnce) {
26443
+ if (reactive && isMountedOnce) {
26597
26444
  setTimeout(() => {
26598
- var _a3, _b3;
26445
+ var _a3, _b2;
26599
26446
  preverseZoomStatus(
26600
26447
  newHiGlassSpec,
26601
26448
  (_a3 = hgRef.current) == null ? void 0 : _a3.api.getViewConfig()
26602
26449
  );
26603
- (_b3 = hgRef.current) == null ? void 0 : _b3.api.setViewConfig(newHiGlassSpec);
26450
+ (_b2 = hgRef.current) == null ? void 0 : _b2.api.setViewConfig(newHiGlassSpec);
26604
26451
  }, DELAY_FOR_CONTAINER_RESIZE_BEFORE_RERENDER);
26605
26452
  } else {
26606
26453
  setViewConfig(newHiGlassSpec);