higlass 1.13.5 → 2.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.
Files changed (392) hide show
  1. package/README.md +48 -54
  2. package/app/globals.d.ts +1 -1
  3. package/app/missing-types.d.ts +4 -1
  4. package/app/scripts/AddTrackDialog.jsx +11 -4
  5. package/app/scripts/AddTrackPositionMenu.jsx +28 -7
  6. package/app/scripts/Annotations1dTrack.js +90 -251
  7. package/app/scripts/Annotations2dTrack.js +12 -7
  8. package/app/scripts/Autocomplete.jsx +13 -28
  9. package/app/scripts/AxisPixi.js +6 -10
  10. package/app/scripts/BarTrack.js +3 -3
  11. package/app/scripts/BedLikeTrack.js +556 -449
  12. package/app/scripts/Button.jsx +1 -1
  13. package/app/scripts/CNVIntervalTrack.js +1 -1
  14. package/app/scripts/CenterTrack.jsx +8 -7
  15. package/app/scripts/Chromosome2DAnnotations.js +1 -1
  16. package/app/scripts/Chromosome2DLabels.js +1 -1
  17. package/app/scripts/ChromosomeGrid.js +49 -38
  18. package/app/scripts/ChromosomeInfo.js +1 -1
  19. package/app/scripts/CombinedTrack.js +3 -1
  20. package/app/scripts/ConfigTrackMenu.jsx +1 -1
  21. package/app/scripts/ConfigViewMenu.jsx +2 -2
  22. package/app/scripts/ContextMenuContainer.jsx +4 -2
  23. package/app/scripts/ContextMenuItem.jsx +14 -2
  24. package/app/scripts/CrossRule.js +1 -1
  25. package/app/scripts/CustomTrackDialog.jsx +2 -2
  26. package/app/scripts/Dialog.jsx +2 -2
  27. package/app/scripts/DragListeningDiv.jsx +1 -1
  28. package/app/scripts/DraggableDiv.jsx +2 -3
  29. package/app/scripts/ExportLinkDialog.jsx +1 -1
  30. package/app/scripts/FilledLine.js +349 -0
  31. package/app/scripts/GalleryTracks.jsx +77 -78
  32. package/app/scripts/GenomePositionSearchBox.jsx +184 -482
  33. package/app/scripts/HeatmapOptions.jsx +4 -2
  34. package/app/scripts/HeatmapTiledPixiTrack.js +23 -32
  35. package/app/scripts/HiGlassComponent.jsx +515 -444
  36. package/app/scripts/HiGlassComponentContext.js +5 -0
  37. package/app/scripts/Horizontal1dHeatmapTrack.js +1 -1
  38. package/app/scripts/Horizontal2DDomainsTrack.js +1 -1
  39. package/app/scripts/HorizontalChromosomeLabels.js +28 -22
  40. package/app/scripts/HorizontalGeneAnnotationsTrack.js +1 -1
  41. package/app/scripts/HorizontalHeatmapTrack.js +2 -2
  42. package/app/scripts/HorizontalMultivecTrack.js +6 -7
  43. package/app/scripts/HorizontalRule.js +1 -2
  44. package/app/scripts/HorizontalTiled1DPixiTrack.js +4 -4
  45. package/app/scripts/HorizontalTiledPlot.jsx +9 -9
  46. package/app/scripts/LeftTrackModifier.js +4 -0
  47. package/app/scripts/ListWrapper.jsx +1 -2
  48. package/app/scripts/MapboxTilesTrack.js +1 -2
  49. package/app/scripts/Modal.jsx +2 -2
  50. package/app/scripts/MoveableTrack.jsx +10 -12
  51. package/app/scripts/NestedContextMenu.jsx +2 -1
  52. package/app/scripts/OSMTileIdsTrack.js +1 -1
  53. package/app/scripts/OverlayTrack.js +4 -4
  54. package/app/scripts/PixiTrack.js +27 -13
  55. package/app/scripts/PlotTypeChooser.jsx +3 -4
  56. package/app/scripts/SearchField.js +5 -5
  57. package/app/scripts/SeriesListItems.jsx +3 -4
  58. package/app/scripts/SeriesListMenu.jsx +95 -53
  59. package/app/scripts/SeriesListSubmenuMixin.jsx +2 -1
  60. package/app/scripts/SketchInlinePicker.jsx +2 -2
  61. package/app/scripts/SortableList.jsx +1 -1
  62. package/app/scripts/Tiled1DPixiTrack.js +4 -1
  63. package/app/scripts/TiledPixiTrack.js +244 -102
  64. package/app/scripts/TiledPlot.jsx +565 -118
  65. package/app/scripts/TilesetFinder.jsx +12 -4
  66. package/app/scripts/Track.js +1 -1
  67. package/app/scripts/TrackArea.jsx +4 -0
  68. package/app/scripts/TrackControl.jsx +2 -2
  69. package/app/scripts/TrackRenderer.jsx +32 -33
  70. package/app/scripts/ValueIntervalTrack.js +1 -1
  71. package/app/scripts/VerticalRule.js +2 -2
  72. package/app/scripts/VerticalTiledPlot.jsx +7 -7
  73. package/app/scripts/ViewConfigEditor.jsx +1 -1
  74. package/app/scripts/ViewContextMenu.jsx +53 -5
  75. package/app/scripts/ViewHeader.jsx +9 -9
  76. package/app/scripts/ViewportTracker2D.js +1 -1
  77. package/app/scripts/api.js +92 -12
  78. package/app/scripts/configs/available-track-types.js +1 -1
  79. package/app/scripts/configs/index.js +6 -1
  80. package/app/scripts/configs/positions-by-datatype.js +2 -2
  81. package/app/scripts/configs/primitives.js +2 -0
  82. package/app/scripts/configs/themes.js +0 -1
  83. package/app/scripts/configs/tracks-info-by-type.js +11 -8
  84. package/app/scripts/configs/tracks-info.js +3 -2
  85. package/app/scripts/d3-context-menu.js +3 -4
  86. package/app/scripts/data-fetchers/DataFetcher.js +35 -36
  87. package/app/scripts/data-fetchers/genbank-fetcher.js +13 -22
  88. package/app/scripts/data-fetchers/local-tile-fetcher.js +10 -8
  89. package/app/scripts/hglib.jsx +62 -71
  90. package/app/scripts/hocs/with-modal.jsx +32 -10
  91. package/app/scripts/hocs/with-pub-sub.js +12 -3
  92. package/app/scripts/hocs/with-theme.jsx +21 -14
  93. package/app/scripts/icons.jsx +3 -2
  94. package/app/scripts/mixwith.js +2 -2
  95. package/app/scripts/options-info.js +49 -11
  96. package/app/scripts/plugins/get-data-fetcher.js +2 -3
  97. package/app/scripts/services/chrom-info.js +32 -4
  98. package/app/scripts/services/element-resize-listener.js +2 -2
  99. package/app/scripts/services/index.js +0 -1
  100. package/app/scripts/services/tile-proxy.js +368 -285
  101. package/app/scripts/services/worker.js +31 -28
  102. package/app/scripts/test-helpers/index.js +2 -1
  103. package/app/scripts/test-helpers/test-helpers.jsx +157 -69
  104. package/app/scripts/types.ts +118 -47
  105. package/app/scripts/utils/LruCache.js +3 -2
  106. package/app/scripts/utils/assert.js +19 -0
  107. package/app/scripts/utils/background-task-scheduler.js +2 -0
  108. package/app/scripts/utils/color-domain-to-rgba-array.js +13 -3
  109. package/app/scripts/utils/copy-text-to-clipboard.js +36 -0
  110. package/app/scripts/utils/decompress.js +33 -0
  111. package/app/scripts/utils/default-tracks.js +46 -0
  112. package/app/scripts/utils/dict-items.js +1 -0
  113. package/app/scripts/utils/dict-keys.js +1 -0
  114. package/app/scripts/utils/dict-values.js +1 -0
  115. package/app/scripts/utils/expand-combined-tracks.js +11 -7
  116. package/app/scripts/utils/fill-in-min-widths.js +47 -21
  117. package/app/scripts/utils/flatten.js +0 -1
  118. package/app/scripts/utils/get-aggregation-function.js +1 -1
  119. package/app/scripts/utils/get-default-track-for-datatype.js +37 -10
  120. package/app/scripts/utils/get-default-tracks-for-datatype.ts +46 -0
  121. package/app/scripts/utils/get-higlass-components.js +27 -3
  122. package/app/scripts/utils/get-track-position-by-uid.js +8 -1
  123. package/app/scripts/utils/get-xylofon.js +12 -9
  124. package/app/scripts/utils/has-parent.js +5 -5
  125. package/app/scripts/utils/hex-string-to-int.js +1 -1
  126. package/app/scripts/utils/index.js +1 -0
  127. package/app/scripts/utils/interval-tree.js +222 -177
  128. package/app/scripts/utils/load-chrom-infos.js +4 -1
  129. package/app/scripts/utils/pixi-text-to-svg.js +5 -9
  130. package/app/scripts/utils/positioned-tracks-to-all-tracks.js +55 -0
  131. package/app/scripts/utils/range-query-2d.js +3 -3
  132. package/app/scripts/utils/reduce.js +12 -5
  133. package/app/scripts/utils/segments-to-rows.js +14 -11
  134. package/app/scripts/utils/svg-line.js +7 -8
  135. package/app/scripts/utils/type-guards.js +16 -7
  136. package/app/scripts/utils/visit-positioned-tracks.js +9 -4
  137. package/app/styles/AddTrackPositionMenu.module.scss +37 -0
  138. package/app/styles/HiGlass.module.scss +3 -1
  139. package/app/styles/d3-context-menu.css +0 -1
  140. package/app/styles/prism.css +1 -0
  141. package/dist/app/schema.json +525 -0
  142. package/dist/app/scripts/AddTrackDialog.d.ts +64 -0
  143. package/dist/app/scripts/AddTrackPositionMenu.d.ts +5 -0
  144. package/dist/app/scripts/Annotations1dTrack.d.ts +15 -0
  145. package/dist/app/scripts/Annotations2dTrack.d.ts +95 -0
  146. package/dist/app/scripts/ArrowheadDomainsTrack.d.ts +36 -0
  147. package/dist/app/scripts/Autocomplete.d.ts +102 -0
  148. package/dist/app/scripts/AxisPixi.d.ts +25 -0
  149. package/dist/app/scripts/BarTrack.d.ts +28 -0
  150. package/dist/app/scripts/BedLikeTrack.d.ts +84 -0
  151. package/dist/app/scripts/Button.d.ts +3 -0
  152. package/dist/app/scripts/CNVIntervalTrack.d.ts +12 -0
  153. package/dist/app/scripts/CenterTiledPlot.d.ts +3 -0
  154. package/dist/app/scripts/CenterTrack.d.ts +92 -0
  155. package/dist/app/scripts/Chromosome2DAnnotations.d.ts +10 -0
  156. package/dist/app/scripts/Chromosome2DLabels.d.ts +13 -0
  157. package/dist/app/scripts/ChromosomeGrid.d.ts +24 -0
  158. package/dist/app/scripts/ChromosomeInfo.d.ts +14 -0
  159. package/dist/app/scripts/CloseTrackMenu.d.ts +10 -0
  160. package/dist/app/scripts/CombinedTrack.d.ts +32 -0
  161. package/dist/app/scripts/ConfigTrackMenu.d.ts +10 -0
  162. package/dist/app/scripts/ConfigViewMenu.d.ts +34 -0
  163. package/dist/app/scripts/ConfigureSeriesMenu.d.ts +3 -0
  164. package/dist/app/scripts/ContextMenuContainer.d.ts +36 -0
  165. package/dist/app/scripts/ContextMenuItem.d.ts +34 -0
  166. package/dist/app/scripts/Cross.d.ts +3 -0
  167. package/dist/app/scripts/CrossRule.d.ts +24 -0
  168. package/dist/app/scripts/CustomTrackDialog.d.ts +17 -0
  169. package/dist/app/scripts/Dialog.d.ts +5 -0
  170. package/dist/app/scripts/DivergentBarTrack.d.ts +4 -0
  171. package/dist/app/scripts/DragListeningDiv.d.ts +32 -0
  172. package/dist/app/scripts/DraggableDiv.d.ts +63 -0
  173. package/dist/app/scripts/ExportLinkDialog.d.ts +21 -0
  174. package/dist/app/scripts/FilledLine.d.ts +5 -0
  175. package/dist/app/scripts/FixedTrack.d.ts +5 -0
  176. package/dist/app/scripts/GalleryTracks.d.ts +20 -0
  177. package/dist/app/scripts/GenomePositionSearchBox.d.ts +95 -0
  178. package/dist/app/scripts/HeatmapOptions.d.ts +30 -0
  179. package/dist/app/scripts/HeatmapTiledPixiTrack.d.ts +184 -0
  180. package/dist/app/scripts/HiGlassComponent.d.ts +762 -0
  181. package/dist/app/scripts/HiGlassComponentContext.d.ts +3 -0
  182. package/dist/app/scripts/HiGlassTrackComponent.d.ts +37 -0
  183. package/dist/app/scripts/Horizontal1dHeatmapTrack.d.ts +9 -0
  184. package/dist/app/scripts/Horizontal2DDomainsTrack.d.ts +21 -0
  185. package/dist/app/scripts/HorizontalChromosomeLabels.d.ts +47 -0
  186. package/dist/app/scripts/HorizontalGeneAnnotationsTrack.d.ts +25 -0
  187. package/dist/app/scripts/HorizontalHeatmapTrack.d.ts +12 -0
  188. package/dist/app/scripts/HorizontalItem.d.ts +3 -0
  189. package/dist/app/scripts/HorizontalLine1DPixiTrack.d.ts +23 -0
  190. package/dist/app/scripts/HorizontalMultivecTrack.d.ts +50 -0
  191. package/dist/app/scripts/HorizontalPoint1DPixiTrack.d.ts +5 -0
  192. package/dist/app/scripts/HorizontalRule.d.ts +22 -0
  193. package/dist/app/scripts/HorizontalTiled1DPixiTrack.d.ts +26 -0
  194. package/dist/app/scripts/HorizontalTiledPlot.d.ts +49 -0
  195. package/dist/app/scripts/HorizontalTrack.d.ts +6 -0
  196. package/dist/app/scripts/Id2DTiledPixiTrack.d.ts +10 -0
  197. package/dist/app/scripts/IdHorizontal1DTiledPixiTrack.d.ts +6 -0
  198. package/dist/app/scripts/IdVertical1DTiledPixiTrack.d.ts +7 -0
  199. package/dist/app/scripts/LeftAxisTrack.d.ts +9 -0
  200. package/dist/app/scripts/LeftTrackModifier.d.ts +29 -0
  201. package/dist/app/scripts/ListWrapper.d.ts +64 -0
  202. package/dist/app/scripts/MapboxTilesTrack.d.ts +9 -0
  203. package/dist/app/scripts/Modal.d.ts +5 -0
  204. package/dist/app/scripts/MoveableTrack.d.ts +18 -0
  205. package/dist/app/scripts/NestedContextMenu.d.ts +7 -0
  206. package/dist/app/scripts/OSMTileIdsTrack.d.ts +5 -0
  207. package/dist/app/scripts/OSMTilesTrack.d.ts +129 -0
  208. package/dist/app/scripts/OverlayTrack.d.ts +13 -0
  209. package/dist/app/scripts/PixiTrack.d.ts +174 -0
  210. package/dist/app/scripts/PlotTypeChooser.d.ts +25 -0
  211. package/dist/app/scripts/PopupMenu.d.ts +28 -0
  212. package/dist/app/scripts/RasterTilesTrack.d.ts +9 -0
  213. package/dist/app/scripts/RuleMixin.d.ts +2 -0
  214. package/dist/app/scripts/SVGTrack.d.ts +15 -0
  215. package/dist/app/scripts/SearchField.d.ts +13 -0
  216. package/dist/app/scripts/SeriesListItems.d.ts +2 -0
  217. package/dist/app/scripts/SeriesListMenu.d.ts +51 -0
  218. package/dist/app/scripts/SeriesListSubmenuMixin.d.ts +2 -0
  219. package/dist/app/scripts/SketchInlinePicker.d.ts +25 -0
  220. package/dist/app/scripts/SortableList.d.ts +22 -0
  221. package/dist/app/scripts/SquareMarkersTrack.d.ts +22 -0
  222. package/dist/app/scripts/Tiled1DPixiTrack.d.ts +60 -0
  223. package/dist/app/scripts/TiledPixiTrack.d.ts +369 -0
  224. package/dist/app/scripts/TiledPlot.d.ts +313 -0
  225. package/dist/app/scripts/TilesetFinder.d.ts +65 -0
  226. package/dist/app/scripts/TopAxisTrack.d.ts +9 -0
  227. package/dist/app/scripts/Track.d.ts +196 -0
  228. package/dist/app/scripts/TrackArea.d.ts +26 -0
  229. package/dist/app/scripts/TrackControl.d.ts +5 -0
  230. package/dist/app/scripts/TrackRenderer.d.ts +724 -0
  231. package/dist/app/scripts/UnknownPixiTrack.d.ts +7 -0
  232. package/dist/app/scripts/ValueIntervalTrack.d.ts +6 -0
  233. package/dist/app/scripts/VerticalItem.d.ts +3 -0
  234. package/dist/app/scripts/VerticalRule.d.ts +21 -0
  235. package/dist/app/scripts/VerticalTiled1DPixiTrack.d.ts +6 -0
  236. package/dist/app/scripts/VerticalTiledPlot.d.ts +50 -0
  237. package/dist/app/scripts/VerticalTrack.d.ts +6 -0
  238. package/dist/app/scripts/ViewConfigEditor.d.ts +53 -0
  239. package/dist/app/scripts/ViewContextMenu.d.ts +17 -0
  240. package/dist/app/scripts/ViewHeader.d.ts +75 -0
  241. package/dist/app/scripts/ViewportTracker2D.d.ts +17 -0
  242. package/dist/app/scripts/ViewportTracker2DPixi.d.ts +11 -0
  243. package/dist/app/scripts/ViewportTrackerHorizontal.d.ts +17 -0
  244. package/dist/app/scripts/ViewportTrackerVertical.d.ts +17 -0
  245. package/dist/app/scripts/api.d.ts +640 -0
  246. package/dist/app/scripts/configs/available-track-types.d.ts +2 -0
  247. package/dist/app/scripts/configs/colormaps.d.ts +2 -0
  248. package/dist/app/scripts/configs/datatype-to-track-type.d.ts +4 -0
  249. package/dist/app/scripts/configs/default-tracks-for-datatype.d.ts +38 -0
  250. package/dist/app/scripts/configs/dense-data-extrema-config.d.ts +2 -0
  251. package/dist/app/scripts/configs/globals.d.ts +5 -0
  252. package/dist/app/scripts/configs/index.d.ts +16 -0
  253. package/dist/app/scripts/configs/positions-by-datatype.d.ts +2 -0
  254. package/dist/app/scripts/configs/primitives.d.ts +20 -0
  255. package/dist/app/scripts/configs/themes.d.ts +3 -0
  256. package/dist/app/scripts/configs/tracks-info-by-type.d.ts +4 -0
  257. package/dist/app/scripts/configs/tracks-info.d.ts +24 -0
  258. package/dist/app/scripts/d3-context-menu.d.ts +2 -0
  259. package/dist/app/scripts/data-fetchers/DataFetcher.d.ts +151 -0
  260. package/dist/app/scripts/data-fetchers/genbank-fetcher.d.ts +86 -0
  261. package/dist/app/scripts/data-fetchers/index.d.ts +3 -0
  262. package/dist/app/scripts/data-fetchers/local-tile-fetcher.d.ts +47 -0
  263. package/dist/app/scripts/gosling-exports.d.ts +17 -0
  264. package/dist/app/scripts/hglib.d.ts +24 -0
  265. package/dist/app/scripts/hocs/with-modal.d.ts +19 -0
  266. package/dist/app/scripts/hocs/with-pub-sub.d.ts +22 -0
  267. package/dist/app/scripts/hocs/with-theme.d.ts +13 -0
  268. package/dist/app/scripts/icons.d.ts +161 -0
  269. package/dist/app/scripts/mixwith.d.ts +27 -0
  270. package/dist/app/scripts/options-info.d.ts +1355 -0
  271. package/dist/app/scripts/plugins/available-for-plugins.d.ts +2338 -0
  272. package/dist/app/scripts/plugins/get-data-fetcher.d.ts +2 -0
  273. package/dist/app/scripts/plugins/index.d.ts +2 -0
  274. package/dist/app/scripts/services/chrom-info.d.ts +10 -0
  275. package/dist/app/scripts/services/dom-event.d.ts +7 -0
  276. package/dist/app/scripts/services/element-resize-listener.d.ts +5 -0
  277. package/dist/app/scripts/services/index.d.ts +5 -0
  278. package/dist/app/scripts/services/tile-proxy.d.ts +180 -0
  279. package/dist/app/scripts/services/worker.d.ts +157 -0
  280. package/dist/app/scripts/symbol.d.ts +13 -0
  281. package/dist/app/scripts/test-helpers/index.d.ts +1 -0
  282. package/dist/app/scripts/test-helpers/test-helpers.d.ts +33 -0
  283. package/dist/app/scripts/track-utils.d.ts +73 -0
  284. package/dist/app/scripts/types.d.ts +199 -0
  285. package/dist/app/scripts/utils/DenseDataExtrema1D.d.ts +88 -0
  286. package/dist/app/scripts/utils/DenseDataExtrema2D.d.ts +97 -0
  287. package/dist/app/scripts/utils/LruCache.d.ts +44 -0
  288. package/dist/app/scripts/utils/abs-to-chr.d.ts +14 -0
  289. package/dist/app/scripts/utils/accessor-transposition.d.ts +14 -0
  290. package/dist/app/scripts/utils/add-arrays.d.ts +18 -0
  291. package/dist/app/scripts/utils/add-class.d.ts +8 -0
  292. package/dist/app/scripts/utils/add-event-listener-once.d.ts +11 -0
  293. package/dist/app/scripts/utils/assert.d.ts +17 -0
  294. package/dist/app/scripts/utils/background-task-scheduler.d.ts +47 -0
  295. package/dist/app/scripts/utils/base64-to-canvas.d.ts +9 -0
  296. package/dist/app/scripts/utils/chr-to-abs.d.ts +10 -0
  297. package/dist/app/scripts/utils/chrom-info-bisector.d.ts +4 -0
  298. package/dist/app/scripts/utils/clone-event.d.ts +12 -0
  299. package/dist/app/scripts/utils/color-domain-to-rgba-array.d.ts +13 -0
  300. package/dist/app/scripts/utils/color-to-hex.d.ts +9 -0
  301. package/dist/app/scripts/utils/color-to-rgba.d.ts +9 -0
  302. package/dist/app/scripts/utils/copy-text-to-clipboard.d.ts +2 -0
  303. package/dist/app/scripts/utils/data-to-genomic-loci.d.ts +11 -0
  304. package/dist/app/scripts/utils/debounce.d.ts +5 -0
  305. package/dist/app/scripts/utils/dec-to-hex-str.d.ts +8 -0
  306. package/dist/app/scripts/utils/decompress.d.ts +27 -0
  307. package/dist/app/scripts/utils/default-tracks.d.ts +3 -0
  308. package/dist/app/scripts/utils/dict-from-tuples.d.ts +11 -0
  309. package/dist/app/scripts/utils/dict-items.d.ts +18 -0
  310. package/dist/app/scripts/utils/dict-keys.d.ts +10 -0
  311. package/dist/app/scripts/utils/dict-values.d.ts +8 -0
  312. package/dist/app/scripts/utils/download.d.ts +7 -0
  313. package/dist/app/scripts/utils/expand-combined-tracks.d.ts +11 -0
  314. package/dist/app/scripts/utils/fake-pub-sub.d.ts +11 -0
  315. package/dist/app/scripts/utils/fill-in-min-widths.d.ts +44 -0
  316. package/dist/app/scripts/utils/flatten.d.ts +9 -0
  317. package/dist/app/scripts/utils/for-each.d.ts +9 -0
  318. package/dist/app/scripts/utils/forward-event.d.ts +7 -0
  319. package/dist/app/scripts/utils/genome-loci-to-pixels.d.ts +9 -0
  320. package/dist/app/scripts/utils/genomic-range-to-chromosome-chunks.d.ts +21 -0
  321. package/dist/app/scripts/utils/get-aggregation-function.d.ts +10 -0
  322. package/dist/app/scripts/utils/get-default-track-for-datatype.d.ts +21 -0
  323. package/dist/app/scripts/utils/get-default-tracks-for-datatype.d.ts +3 -0
  324. package/dist/app/scripts/utils/get-element-dim.d.ts +7 -0
  325. package/dist/app/scripts/utils/get-higlass-components.d.ts +7 -0
  326. package/dist/app/scripts/utils/get-track-by-uid.d.ts +7 -0
  327. package/dist/app/scripts/utils/get-track-conf-from-hgc.d.ts +10 -0
  328. package/dist/app/scripts/utils/get-track-obj-by-id.d.ts +2 -0
  329. package/dist/app/scripts/utils/get-track-position-by-uid.d.ts +13 -0
  330. package/dist/app/scripts/utils/get-xylofon.d.ts +2 -0
  331. package/dist/app/scripts/utils/gradient.d.ts +14 -0
  332. package/dist/app/scripts/utils/has-class.d.ts +8 -0
  333. package/dist/app/scripts/utils/has-parent.d.ts +9 -0
  334. package/dist/app/scripts/utils/hex-string-to-int.d.ts +14 -0
  335. package/dist/app/scripts/utils/index.d.ts +89 -0
  336. package/dist/app/scripts/utils/interval-tree.d.ts +109 -0
  337. package/dist/app/scripts/utils/into-the-void.d.ts +6 -0
  338. package/dist/app/scripts/utils/is-track-or-child-track.d.ts +7 -0
  339. package/dist/app/scripts/utils/is-track-range-selectable.d.ts +2 -0
  340. package/dist/app/scripts/utils/is-within.d.ts +12 -0
  341. package/dist/app/scripts/utils/lat-to-y.d.ts +9 -0
  342. package/dist/app/scripts/utils/lng-to-x.d.ts +8 -0
  343. package/dist/app/scripts/utils/load-chrom-infos.d.ts +8 -0
  344. package/dist/app/scripts/utils/map.d.ts +13 -0
  345. package/dist/app/scripts/utils/max-non-zero.d.ts +6 -0
  346. package/dist/app/scripts/utils/max.d.ts +10 -0
  347. package/dist/app/scripts/utils/min-non-zero.d.ts +6 -0
  348. package/dist/app/scripts/utils/min.d.ts +10 -0
  349. package/dist/app/scripts/utils/mod.d.ts +9 -0
  350. package/dist/app/scripts/utils/ndarray-assign.d.ts +2 -0
  351. package/dist/app/scripts/utils/ndarray-flatten.d.ts +2 -0
  352. package/dist/app/scripts/utils/ndarray-to-list.d.ts +2 -0
  353. package/dist/app/scripts/utils/numericify-version.d.ts +6 -0
  354. package/dist/app/scripts/utils/obj-vals.d.ts +8 -0
  355. package/dist/app/scripts/utils/or.d.ts +8 -0
  356. package/dist/app/scripts/utils/parse-chromsizes-rows.d.ts +34 -0
  357. package/dist/app/scripts/utils/pixi-text-to-svg.d.ts +2 -0
  358. package/dist/app/scripts/utils/positioned-tracks-to-all-tracks.d.ts +26 -0
  359. package/dist/app/scripts/utils/q.d.ts +18 -0
  360. package/dist/app/scripts/utils/rad-to-deg.d.ts +7 -0
  361. package/dist/app/scripts/utils/range-query-2d.d.ts +17 -0
  362. package/dist/app/scripts/utils/reduce.d.ts +14 -0
  363. package/dist/app/scripts/utils/rel-to-abs-chrom-pos.d.ts +10 -0
  364. package/dist/app/scripts/utils/remove-class.d.ts +7 -0
  365. package/dist/app/scripts/utils/reset-d3-brush-style.d.ts +10 -0
  366. package/dist/app/scripts/utils/rgb-to-hex.d.ts +8 -0
  367. package/dist/app/scripts/utils/scales-center-and-k.d.ts +12 -0
  368. package/dist/app/scripts/utils/scales-to-genome-loci.d.ts +3 -0
  369. package/dist/app/scripts/utils/segments-to-rows.d.ts +15 -0
  370. package/dist/app/scripts/utils/selected-items-to-cum-weights.d.ts +12 -0
  371. package/dist/app/scripts/utils/selected-items-to-size.d.ts +13 -0
  372. package/dist/app/scripts/utils/show-mouse-position.d.ts +54 -0
  373. package/dist/app/scripts/utils/some.d.ts +10 -0
  374. package/dist/app/scripts/utils/sum.d.ts +8 -0
  375. package/dist/app/scripts/utils/svg-line.d.ts +2 -0
  376. package/dist/app/scripts/utils/throttle-and-debounce.d.ts +33 -0
  377. package/dist/app/scripts/utils/tile-to-canvas.d.ts +9 -0
  378. package/dist/app/scripts/utils/timeout.d.ts +3 -0
  379. package/dist/app/scripts/utils/to-void.d.ts +3 -0
  380. package/dist/app/scripts/utils/total-track-pixel-height.d.ts +27 -0
  381. package/dist/app/scripts/utils/trim-trailing-slash.d.ts +7 -0
  382. package/dist/app/scripts/utils/type-guards.d.ts +36 -0
  383. package/dist/app/scripts/utils/value-to-color.d.ts +12 -0
  384. package/dist/app/scripts/utils/visit-positioned-tracks.d.ts +18 -0
  385. package/dist/app/scripts/utils/visit-tracks.d.ts +9 -0
  386. package/dist/esm.html +1 -3
  387. package/dist/hglib.js +86315 -100592
  388. package/dist/hglib.min.js +123 -131
  389. package/dist/higlass.mjs +88861 -103138
  390. package/dist/index.html +1 -3
  391. package/dist/package.json +134 -0
  392. package/package.json +25 -27
@@ -1,8 +1,8 @@
1
1
  // @ts-nocheck
2
- import React from 'react';
3
2
  import PropTypes from 'prop-types';
4
- import slugid from 'slugid';
3
+ import React from 'react';
5
4
  import CheckboxTree from 'react-checkbox-tree';
5
+ import slugid from 'slugid';
6
6
 
7
7
  import { tileProxy } from './services';
8
8
 
@@ -13,7 +13,7 @@ import withPubSub from './hocs/with-pub-sub';
13
13
  // Configs
14
14
  import { TRACKS_INFO } from './configs';
15
15
 
16
- class TilesetFinder extends React.Component {
16
+ export class TilesetFinder extends React.Component {
17
17
  constructor(props) {
18
18
  super(props);
19
19
 
@@ -128,7 +128,7 @@ class TilesetFinder extends React.Component {
128
128
  [].concat(
129
129
  ...this.augmentedTracksInfo
130
130
  .filter((x) => x.datatype)
131
- // eslint-disable-next-line arrow-body-style
131
+
132
132
  .filter((x) => {
133
133
  return (
134
134
  x.orientation === this.props.orientation ||
@@ -356,41 +356,49 @@ class TilesetFinder extends React.Component {
356
356
  icons={{
357
357
  uncheck: (
358
358
  <svg style={svgStyle}>
359
+ <title>Uncheck</title>
359
360
  <use xlinkHref="#square_o" />
360
361
  </svg>
361
362
  ),
362
363
  check: (
363
364
  <svg style={svgStyle}>
365
+ <title>Check</title>
364
366
  <use xlinkHref="#check_square_o" />
365
367
  </svg>
366
368
  ),
367
369
  halfCheck: (
368
370
  <svg style={halfSvgStyle}>
371
+ <title>Half Check</title>
369
372
  <use xlinkHref="#check_square_o" />
370
373
  </svg>
371
374
  ),
372
375
  leaf: (
373
376
  <svg style={svgStyle}>
377
+ <title>Leaf</title>
374
378
  <use xlinkHref="#file_o" />
375
379
  </svg>
376
380
  ),
377
381
  expandClose: (
378
382
  <svg style={svgStyle}>
383
+ <title>Expand Close</title>
379
384
  <use xlinkHref="#chevron_right" />
380
385
  </svg>
381
386
  ),
382
387
  expandOpen: (
383
388
  <svg style={svgStyle}>
389
+ <title>Expand Open </title>
384
390
  <use xlinkHref="#chevron_down" />
385
391
  </svg>
386
392
  ),
387
393
  parentClose: (
388
394
  <svg style={svgStyle}>
395
+ <title>Parent Close</title>
389
396
  <use xlinkHref="#folder_o" />
390
397
  </svg>
391
398
  ),
392
399
  parentOpen: (
393
400
  <svg style={svgStyle}>
401
+ <title>Parent Open</title>
394
402
  <use xlinkHref="#folder_open_o" />
395
403
  </svg>
396
404
  ),
@@ -1,8 +1,8 @@
1
1
  import { scaleLinear } from 'd3-scale';
2
2
 
3
+ import fakePubSub from './utils/fake-pub-sub';
3
4
  // Services
4
5
  import isWithin from './utils/is-within';
5
- import fakePubSub from './utils/fake-pub-sub';
6
6
 
7
7
  /**
8
8
  * @typedef TrackContext
@@ -47,6 +47,7 @@ class TrackArea extends React.Component {
47
47
  style={this.getMoveImgStyle()}
48
48
  width="10px"
49
49
  >
50
+ <title>Move</title>
50
51
  <use xlinkHref="#move" />
51
52
  </svg>
52
53
  ));
@@ -84,6 +85,7 @@ class TrackArea extends React.Component {
84
85
  style={this.getSettingsImgStyle()}
85
86
  width="10px"
86
87
  >
88
+ <title>No Zoom</title>
87
89
  <use xlinkHref="#cog" />
88
90
  </svg>
89
91
 
@@ -97,6 +99,7 @@ class TrackArea extends React.Component {
97
99
  style={this.getAddImgStyle()}
98
100
  width="10px"
99
101
  >
102
+ <title>Add</title>
100
103
  <use xlinkHref="#plus" />
101
104
  </svg>
102
105
 
@@ -114,6 +117,7 @@ class TrackArea extends React.Component {
114
117
  style={this.getCloseImgStyle()}
115
118
  width="10px"
116
119
  >
120
+ <title>Close</title>
117
121
  <use xlinkHref="#cross" />
118
122
  </svg>
119
123
  </div>
@@ -1,11 +1,11 @@
1
1
  // @ts-nocheck
2
+ import clsx from 'clsx';
2
3
  import PropTypes from 'prop-types';
3
4
  import React from 'react';
4
5
  import { SortableHandle } from 'react-sortable-hoc';
5
- import clsx from 'clsx';
6
6
 
7
- import withTheme from './hocs/with-theme';
8
7
  import { THEME_DARK } from './configs';
8
+ import withTheme from './hocs/with-theme';
9
9
 
10
10
  // Styles
11
11
  import classes from '../styles/TrackControl.module.scss';
@@ -1,45 +1,45 @@
1
- import React from 'react';
2
1
  import PropTypes from 'prop-types';
2
+ import React from 'react';
3
3
 
4
- import { zoom, zoomIdentity } from 'd3-zoom';
5
- import { select, pointer } from 'd3-selection';
4
+ import clsx from 'clsx';
6
5
  import { scaleLinear } from 'd3-scale';
6
+ import { pointer, select } from 'd3-selection';
7
+ import { zoom, zoomIdentity } from 'd3-zoom';
7
8
  import slugid from 'slugid';
8
- import clsx from 'clsx';
9
9
 
10
- import PixiTrack from './PixiTrack';
10
+ import BedLikeTrack from './BedLikeTrack';
11
+ import CombinedTrack from './CombinedTrack';
11
12
  import HeatmapTiledPixiTrack from './HeatmapTiledPixiTrack';
12
13
  import Id2DTiledPixiTrack from './Id2DTiledPixiTrack';
13
14
  import IdHorizontal1DTiledPixiTrack from './IdHorizontal1DTiledPixiTrack';
14
15
  import IdVertical1DTiledPixiTrack from './IdVertical1DTiledPixiTrack';
15
- import TopAxisTrack from './TopAxisTrack';
16
16
  import LeftAxisTrack from './LeftAxisTrack';
17
- import CombinedTrack from './CombinedTrack';
18
- import BedLikeTrack from './BedLikeTrack';
19
17
  import OverlayTrack from './OverlayTrack';
18
+ import PixiTrack from './PixiTrack';
19
+ import TopAxisTrack from './TopAxisTrack';
20
20
 
21
- import HorizontalLine1DPixiTrack from './HorizontalLine1DPixiTrack';
22
- import HorizontalPoint1DPixiTrack from './HorizontalPoint1DPixiTrack';
23
- import HorizontalMultivecTrack from './HorizontalMultivecTrack';
24
21
  import BarTrack from './BarTrack';
25
22
  import DivergentBarTrack from './DivergentBarTrack';
26
23
  import Horizontal1dHeatmapTrack from './Horizontal1dHeatmapTrack';
24
+ import HorizontalLine1DPixiTrack from './HorizontalLine1DPixiTrack';
25
+ import HorizontalMultivecTrack from './HorizontalMultivecTrack';
26
+ import HorizontalPoint1DPixiTrack from './HorizontalPoint1DPixiTrack';
27
27
 
28
+ import Annotations1dTrack from './Annotations1dTrack';
29
+ import Annotations2dTrack from './Annotations2dTrack';
30
+ import ArrowheadDomainsTrack from './ArrowheadDomainsTrack';
28
31
  import CNVIntervalTrack from './CNVIntervalTrack';
32
+ import HorizontalGeneAnnotationsTrack from './HorizontalGeneAnnotationsTrack';
29
33
  import LeftTrackModifier from './LeftTrackModifier';
30
34
  import Track from './Track';
31
- import HorizontalGeneAnnotationsTrack from './HorizontalGeneAnnotationsTrack';
32
- import ArrowheadDomainsTrack from './ArrowheadDomainsTrack';
33
- import Annotations2dTrack from './Annotations2dTrack';
34
- import Annotations1dTrack from './Annotations1dTrack';
35
35
 
36
36
  import Horizontal2DDomainsTrack from './Horizontal2DDomainsTrack';
37
37
 
38
- import SquareMarkersTrack from './SquareMarkersTrack';
38
+ import Chromosome2DAnnotations from './Chromosome2DAnnotations';
39
39
  import Chromosome2DLabels from './Chromosome2DLabels';
40
40
  import ChromosomeGrid from './ChromosomeGrid';
41
- import Chromosome2DAnnotations from './Chromosome2DAnnotations';
42
41
  import HorizontalChromosomeLabels from './HorizontalChromosomeLabels';
42
+ import SquareMarkersTrack from './SquareMarkersTrack';
43
43
 
44
44
  import HorizontalHeatmapTrack from './HorizontalHeatmapTrack';
45
45
  import UnknownPixiTrack from './UnknownPixiTrack';
@@ -48,13 +48,13 @@ import ViewportTracker2D from './ViewportTracker2D';
48
48
  import ViewportTrackerHorizontal from './ViewportTrackerHorizontal';
49
49
  import ViewportTrackerVertical from './ViewportTrackerVertical';
50
50
 
51
+ import CrossRule from './CrossRule';
51
52
  import HorizontalRule from './HorizontalRule';
52
53
  import VerticalRule from './VerticalRule';
53
- import CrossRule from './CrossRule';
54
54
 
55
- import OSMTilesTrack from './OSMTilesTrack';
56
- import OSMTileIdsTrack from './OSMTileIdsTrack';
57
55
  import MapboxTilesTrack from './MapboxTilesTrack';
56
+ import OSMTileIdsTrack from './OSMTileIdsTrack';
57
+ import OSMTilesTrack from './OSMTilesTrack';
58
58
  import RasterTilesTrack from './RasterTilesTrack';
59
59
 
60
60
  import SVGTrack from './SVGTrack';
@@ -129,7 +129,7 @@ const SCROLL_TIMEOUT = 100;
129
129
  * @property {() => void} onValueScaleChanged
130
130
  * @property {(newOption: Record<string, unknown>) => void} onTrackOptionsChanged
131
131
  * @property {() => void} onMouseMoveZoom
132
- * @property {string} chromInfoPath
132
+ * @property {string=} chromInfoPath
133
133
  * @property {() => boolean} isShowGlobalMousePosition
134
134
  * @property {() => import('./types').Theme} getTheme
135
135
  * @property {unknown=} AVAILABLE_FOR_PLUGINS
@@ -221,7 +221,7 @@ const SCROLL_TIMEOUT = 100;
221
221
  /**
222
222
  * @extends {React.Component<TrackRendererProps>}
223
223
  */
224
- class TrackRenderer extends React.Component {
224
+ export class TrackRenderer extends React.Component {
225
225
  /**
226
226
  * Maintain a list of tracks, and re-render them whenever either
227
227
  * their size changes or the zoom level changes
@@ -420,7 +420,6 @@ class TrackRenderer extends React.Component {
420
420
  return this._yScale;
421
421
  }
422
422
 
423
- // eslint-disable-next-line camelcase
424
423
  UNSAFE_componentWillMount() {
425
424
  this.pubSubs = [];
426
425
  this.pubSubs.push(
@@ -445,6 +444,7 @@ class TrackRenderer extends React.Component {
445
444
  throw new Error('Component did not mount, this.element is not defined.');
446
445
  }
447
446
  this.elementPos = this.element.getBoundingClientRect();
447
+
448
448
  this.elementSelection = select(this.element);
449
449
 
450
450
  /** @type {import('pixi.js').Graphics} */
@@ -507,7 +507,6 @@ class TrackRenderer extends React.Component {
507
507
  .scaleExtent(this.zoomLimits);
508
508
  }
509
509
 
510
- // eslint-disable-next-line camelcase
511
510
  /** @param {TrackRendererProps} nextProps */
512
511
  UNSAFE_componentWillReceiveProps(nextProps) {
513
512
  /**
@@ -777,7 +776,8 @@ class TrackRenderer extends React.Component {
777
776
  ) {
778
777
  // Make sure the initial domain is within the limits first
779
778
  zoomLimits[0] = zoomLimits[0] === null ? 0 : zoomLimits[0];
780
- zoomLimits[1] = zoomLimits[1] === null ? Infinity : zoomLimits[1];
779
+ zoomLimits[1] =
780
+ zoomLimits[1] === null ? Number.POSITIVE_INFINITY : zoomLimits[1];
781
781
 
782
782
  // make sure the two scales are equally wide:
783
783
  const xWidth = initialXDomain[1] - initialXDomain[0];
@@ -1569,7 +1569,7 @@ class TrackRenderer extends React.Component {
1569
1569
  zoomStarted(event) {
1570
1570
  this.zooming = true;
1571
1571
 
1572
- if (event && event.sourceEvent) {
1572
+ if (event?.sourceEvent) {
1573
1573
  this.zoomStartPos = pointer(event.sourceEvent, this.props.canvasElement);
1574
1574
 
1575
1575
  if (event.sourceEvent.shiftKey) {
@@ -1736,10 +1736,10 @@ class TrackRenderer extends React.Component {
1736
1736
  definition: track,
1737
1737
  };
1738
1738
  try {
1739
- return new pluginTrack.track( // eslint-disable-line new-cap
1739
+ return new pluginTrack.track(
1740
1740
  this.availableForPlugins,
1741
1741
  context,
1742
- track.options,
1742
+ track.options ?? {},
1743
1743
  );
1744
1744
  } catch (e) {
1745
1745
  console.error(
@@ -1781,7 +1781,7 @@ class TrackRenderer extends React.Component {
1781
1781
  let dataConfig = track.data;
1782
1782
  if (!dataConfig) {
1783
1783
  dataConfig = {
1784
- server: trimTrailingSlash(track.server),
1784
+ server: trimTrailingSlash(track.server ?? ''),
1785
1785
  tilesetUid: track.tilesetUid,
1786
1786
  };
1787
1787
  }
@@ -1962,9 +1962,8 @@ class TrackRenderer extends React.Component {
1962
1962
  case 'arrowhead-domains':
1963
1963
  return new ArrowheadDomainsTrack(context, track.options);
1964
1964
 
1965
+ case '1d-annotations':
1965
1966
  case 'horizontal-1d-annotations':
1966
- return new Annotations1dTrack(context, track.options);
1967
-
1968
1967
  case 'vertical-1d-annotations':
1969
1968
  // Fix this: LeftTrackModifier is doing a whole bunch of things not
1970
1969
  // needed by this track but the current setup is not consistent.
@@ -2088,10 +2087,10 @@ class TrackRenderer extends React.Component {
2088
2087
  }
2089
2088
 
2090
2089
  try {
2091
- return new pluginTrack.track( // eslint-disable-line new-cap
2090
+ return new pluginTrack.track(
2092
2091
  this.availableForPlugins,
2093
2092
  context,
2094
- track.options,
2093
+ track.options ?? {},
2095
2094
  );
2096
2095
  } catch (e) {
2097
2096
  console.error(
@@ -1,8 +1,8 @@
1
1
  // @ts-nocheck
2
2
  import { scaleLog } from 'd3-scale';
3
3
 
4
- import HorizontalLine1DPixiTrack from './HorizontalLine1DPixiTrack';
5
4
  import AxisPixi from './AxisPixi';
5
+ import HorizontalLine1DPixiTrack from './HorizontalLine1DPixiTrack';
6
6
 
7
7
  import { colorToHex } from './utils';
8
8
 
@@ -1,6 +1,6 @@
1
1
  // @ts-nocheck
2
- /* eslint-disable max-classes-per-file */
3
- import { mix, Mixin } from './mixwith';
2
+
3
+ import { Mixin, mix } from './mixwith';
4
4
 
5
5
  import PixiTrack from './PixiTrack';
6
6
  import RuleMixin from './RuleMixin';
@@ -2,25 +2,25 @@
2
2
  import PropTypes from 'prop-types';
3
3
  import React from 'react';
4
4
 
5
+ import clsx from 'clsx';
5
6
  import { brushY } from 'd3-brush';
6
7
  import { select } from 'd3-selection';
7
8
  import slugid from 'slugid';
8
- import clsx from 'clsx';
9
9
 
10
10
  import ListWrapper from './ListWrapper';
11
- import VerticalItem from './VerticalItem';
12
11
  import SortableList from './SortableList';
12
+ import VerticalItem from './VerticalItem';
13
13
 
14
14
  // Utils
15
- import { or, resetD3BrushStyle, sum, IS_TRACK_RANGE_SELECTABLE } from './utils';
15
+ import { IS_TRACK_RANGE_SELECTABLE, or, resetD3BrushStyle, sum } from './utils';
16
16
 
17
+ import stylesPlot from '../styles/TiledPlot.module.scss';
18
+ import stylesTrack from '../styles/Track.module.scss';
17
19
  // Styles
18
- import styles from '../styles/VerticalTiledPlot.module.scss'; // eslint-disable-line no-unused-vars
19
- import stylesPlot from '../styles/TiledPlot.module.scss'; // eslint-disable-line no-unused-vars
20
- import stylesTrack from '../styles/Track.module.scss'; // eslint-disable-line no-unused-vars
20
+ import styles from '../styles/VerticalTiledPlot.module.scss';
21
21
 
22
22
  function sourceEvent(event) {
23
- return event && event.sourceEvent;
23
+ return event?.sourceEvent;
24
24
  }
25
25
 
26
26
  class VerticalTiledPlot extends React.Component {
@@ -1,8 +1,8 @@
1
1
  // @ts-nocheck
2
+ import { highlight, languages } from 'prismjs/components/prism-core';
2
3
  import PropTypes from 'prop-types';
3
4
  import React from 'react';
4
5
  import Editor from 'react-simple-code-editor';
5
- import { highlight, languages } from 'prismjs/components/prism-core';
6
6
  import 'prismjs/components/prism-json';
7
7
  import Ajv from 'ajv';
8
8
  import clsx from 'clsx';
@@ -1,17 +1,20 @@
1
1
  // @ts-nocheck
2
- import React from 'react';
3
- import PropTypes from 'prop-types';
4
2
  import clsx from 'clsx';
3
+ import { format } from 'd3-format';
4
+ import PropTypes from 'prop-types';
5
+ import React from 'react';
6
+
5
7
  import { mix } from './mixwith';
6
8
 
7
- import { expandCombinedTracks } from './utils';
8
9
  import { getSeriesItems } from './SeriesListItems';
10
+ import { absToChr, expandCombinedTracks } from './utils';
11
+ import copyTextToClipboard from './utils/copy-text-to-clipboard';
9
12
 
10
- import ContextMenuItem from './ContextMenuItem';
11
13
  import ContextMenuContainer from './ContextMenuContainer';
14
+ import ContextMenuItem from './ContextMenuItem';
12
15
  import SeriesListSubmenuMixin from './SeriesListSubmenuMixin';
13
16
 
14
- import { THEME_DARK } from './configs';
17
+ import { THEME_DARK } from './configs/themes';
15
18
 
16
19
  // Styles
17
20
  import classes from '../styles/ContextMenu.module.scss';
@@ -58,6 +61,17 @@ class ViewContextMenu extends mix(ContextMenuContainer).with(
58
61
 
59
62
  {seriesItems && <hr className={classes['context-menu-hr']} />}
60
63
 
64
+ {this.props.genomePositionSearchBox && (
65
+ <ContextMenuItem
66
+ onClick={this.copyLocationToClipboard.bind(this)}
67
+ onMouseEnter={(e) => this.handleOtherMouseEnter(e)}
68
+ >
69
+ Copy location under cursor
70
+ </ContextMenuItem>
71
+ )}
72
+
73
+ <hr className={classes['context-menu-hr']} />
74
+
61
75
  <ContextMenuItem
62
76
  onClick={() =>
63
77
  this.props.onAddTrack({
@@ -155,6 +169,40 @@ class ViewContextMenu extends mix(ContextMenuContainer).with(
155
169
  });
156
170
  }
157
171
 
172
+ copyLocationToClipboard() {
173
+ const is2d =
174
+ this.props.tracks[0] && this.props.tracks[0].position === 'center';
175
+
176
+ const chromInfo =
177
+ this.props.genomePositionSearchBox?.searchField?.chromInfo;
178
+
179
+ if (!chromInfo) {
180
+ console.warn(
181
+ 'There needs to be a genome position search box present to copy the location',
182
+ );
183
+ this.props.closeMenu();
184
+ return;
185
+ }
186
+
187
+ const xAbsCoord = this.props.coords[0];
188
+ const yAbsCoord = this.props.coords[1];
189
+
190
+ const xChr = absToChr(xAbsCoord, chromInfo);
191
+ const stringFormat = format(',d');
192
+
193
+ let locationText = `${xChr[0]}:${stringFormat(xChr[1])}`;
194
+
195
+ if (is2d) {
196
+ const yChr = absToChr(yAbsCoord, chromInfo);
197
+ locationText = `${locationText} & ${yChr[0]}:${stringFormat(yChr[1])}`;
198
+ copyTextToClipboard(locationText);
199
+ } else {
200
+ copyTextToClipboard(locationText);
201
+ }
202
+
203
+ this.props.closeMenu();
204
+ }
205
+
158
206
  handleAddVerticalSection() {
159
207
  const trackList = expandCombinedTracks(this.props.tracks);
160
208
  const matrixTrack = trackList.filter(
@@ -1,12 +1,12 @@
1
1
  // @ts-nocheck
2
- import React from 'react';
3
- import PropTypes from 'prop-types';
4
2
  import clsx from 'clsx';
3
+ import PropTypes from 'prop-types';
4
+ import React from 'react';
5
5
 
6
- import PopupMenu from './PopupMenu';
7
- import ContextMenuContainer from './ContextMenuContainer';
8
- import ConfigViewMenu from './ConfigViewMenu';
9
6
  import AddTrackPositionMenu from './AddTrackPositionMenu';
7
+ import ConfigViewMenu from './ConfigViewMenu';
8
+ import ContextMenuContainer from './ContextMenuContainer';
9
+ import PopupMenu from './PopupMenu';
10
10
 
11
11
  // HOCS
12
12
  import withTheme from './hocs/with-theme';
@@ -43,7 +43,6 @@ class ViewHeader extends React.Component {
43
43
  }
44
44
 
45
45
  componentDidMount() {
46
- // eslint-disable-next-line react/no-did-mount-set-state
47
46
  this.setState({ width: this.el.clientWidth });
48
47
  }
49
48
 
@@ -81,8 +80,8 @@ class ViewHeader extends React.Component {
81
80
  *
82
81
  * We just need to close the menu here.
83
82
  */
84
- handleTrackPositionChosen(position) {
85
- this.props.onTrackPositionChosen(position);
83
+ handleTrackPositionChosen(position, extent) {
84
+ this.props.onTrackPositionChosen(position, extent);
86
85
 
87
86
  this.setState({
88
87
  addTrackPositionMenuUid: null,
@@ -243,8 +242,8 @@ class ViewHeader extends React.Component {
243
242
  {this.props.mouseTool === MOUSE_TOOL_SELECT && (
244
243
  <svg
245
244
  className={clsx(classes['mouse-tool-selection'], classNameIcon)}
246
- title="Selection tool active"
247
245
  >
246
+ <title>Selection tool active</title>
248
247
  <use xlinkHref="#select" />
249
248
  </svg>
250
249
  )}
@@ -288,6 +287,7 @@ class ViewHeader extends React.Component {
288
287
  onClick={() =>
289
288
  this.handleAddTrackPositionMenuOpened(this.props.viewUid)
290
289
  }
290
+ data-testid="add-track"
291
291
  >
292
292
  <title>Add Track</title>
293
293
  <use xlinkHref="#plus" />
@@ -1,6 +1,6 @@
1
1
  // @ts-nocheck
2
- import slugid from 'slugid';
3
2
  import { brush } from 'd3-brush';
3
+ import slugid from 'slugid';
4
4
 
5
5
  import SVGTrack from './SVGTrack';
6
6