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,6 +1,5 @@
1
- // @ts-nocheck
2
- import React from 'react';
3
1
  import clsx from 'clsx';
2
+ import React from 'react';
4
3
 
5
4
  import ContextMenuContainer from './ContextMenuContainer';
6
5
  import ContextMenuItem from './ContextMenuItem';
@@ -12,32 +11,51 @@ import OPTIONS_INFO from './options-info';
12
11
 
13
12
  // Styles
14
13
  import classes from '../styles/ContextMenu.module.scss';
14
+ import { isObject } from './utils/type-guards';
15
+
16
+ /** @import * as t from './types' */
17
+ /** @import { TrackRenderer } from './TrackRenderer' */
18
+
19
+ /**
20
+ * @typedef ContextMenuHandler
21
+ * @property {string} label
22
+ * @property {(evt: unknown, onTrackOptionsChanged: (options: Record<string, unknown>) => void) => void} onClick
23
+ */
24
+
25
+ /**
26
+ * @param {unknown} x
27
+ * @returns {x is { contextMenuItems: (trackLeft: number, trackRight: number) => Array<ContextMenuHandler> }}}
28
+ */
29
+ function hasContextMenuItems(x) {
30
+ return (
31
+ isObject(x) &&
32
+ 'contextMenuItems' in x &&
33
+ typeof x.contextMenuItems === 'function'
34
+ );
35
+ }
15
36
 
16
37
  /**
17
38
  * We're going to get the track object to see if it has a
18
39
  * context menu handler that will give use context menu items
19
40
  * to display
20
41
  *
21
- * @param (Dict) track The config for the track we're getting context menu
42
+ * @param {t.TrackConfig} track The config for the track we're getting context menu
22
43
  * items for
23
- *
24
- * @param (TrackRenderer) trackRenderer The track renderer for the view
44
+ * @param {TrackRenderer} trackRenderer The track renderer for the view
25
45
  * containing this track. We'll use it to get the track's object
26
- *
27
- * @param (Dict) position The position of the track. Relevant are the canvasLeft,
28
- * canvasRight positions which mark where the track starts relative to the
29
- * canvas. This is important because all coordinates within a track are relative
30
- * to left and top coordinates.
46
+ * @param {{canvasLeft: number, canvasTop: number}} position The position of the track.
47
+ * Where the track starts relative to the canvas. This is important because all
48
+ * coordinates within a track are relative to left and top coordinates.
49
+ * @returns {Array<ContextMenuHandler>}
31
50
  */
32
-
33
51
  function findTrackContextMenuItems(track, trackRenderer, position) {
34
52
  let trackObj = trackRenderer.getTrackObject(track.uid);
35
53
 
36
54
  // The track may be a LeftTrackModifier track
37
- trackObj = trackObj.originalTrack || trackObj;
55
+ trackObj = trackObj?.originalTrack || trackObj;
38
56
 
39
57
  // See if the track will provide us with context menu items
40
- if (trackObj.contextMenuItems) {
58
+ if (hasContextMenuItems(trackObj)) {
41
59
  let trackLeft = position.canvasLeft - trackObj.position[0];
42
60
  let trackTop = position.canvasTop - trackObj.position[1];
43
61
 
@@ -59,41 +77,55 @@ function findTrackContextMenuItems(track, trackRenderer, position) {
59
77
  return [];
60
78
  }
61
79
 
80
+ /**
81
+ * @typedef MenuItem
82
+ * @property {string} name
83
+ * @property {string} [value]
84
+ * @property {Record<string, unknown>} [children]
85
+ * @property {() => void} [handler]
86
+ */
87
+
62
88
  export default class SeriesListMenu extends ContextMenuContainer {
89
+ /**
90
+ * @param {unknown} position
91
+ * @param {unknown} bbox
92
+ * @param {{ type: string, options: Record<string, unknown>, uid: string, }} track
93
+ */
63
94
  getConfigureSeriesMenu(position, bbox, track) {
95
+ /** @type {Record<string, MenuItem>} */
64
96
  const menuItems = {};
65
97
 
66
98
  // plugin tracks can offer their own options
67
99
  // if they clash with the default higlass options
68
100
  // they will override them
69
101
  const pluginOptionsInfo =
70
- window.higlassTracksByType &&
71
- window.higlassTracksByType[track.type] &&
102
+ window.higlassTracksByType?.[track.type] &&
72
103
  window.higlassTracksByType[track.type].config &&
73
104
  window.higlassTracksByType[track.type].config.optionsInfo;
74
105
 
75
106
  if (pluginOptionsInfo) {
76
107
  for (const key of Object.keys(pluginOptionsInfo)) {
108
+ // @ts-expect-error - extends OPTIONS_INFO with new data
77
109
  OPTIONS_INFO[key] = pluginOptionsInfo[key];
78
110
  }
79
111
  }
80
112
 
81
- if (
82
- !TRACKS_INFO_BY_TYPE[track.type] ||
83
- !TRACKS_INFO_BY_TYPE[track.type].availableOptions
84
- ) {
113
+ const trackinfo = TRACKS_INFO_BY_TYPE[track.type];
114
+
115
+ if (!trackinfo?.availableOptions) {
85
116
  return null;
86
117
  }
87
118
 
88
- for (const optionType of TRACKS_INFO_BY_TYPE[track.type].availableOptions) {
119
+ for (const optionType of trackinfo.availableOptions) {
89
120
  if (optionType in OPTIONS_INFO) {
90
- menuItems[optionType] = { name: OPTIONS_INFO[optionType].name };
121
+ const optionInfo =
122
+ OPTIONS_INFO[/** @type {keyof typeof OPTIONS_INFO} */ (optionType)];
123
+ menuItems[optionType] = { name: optionInfo.name };
91
124
 
92
125
  // can we dynamically generate some options?
93
126
  // should be used if the options depend on tileset info or other current state
94
- if (OPTIONS_INFO[optionType].generateOptions) {
95
- const generatedOptions =
96
- OPTIONS_INFO[optionType].generateOptions(track);
127
+ if ('generateOptions' in optionInfo) {
128
+ const generatedOptions = optionInfo.generateOptions(track);
97
129
 
98
130
  if (!menuItems[optionType].children) {
99
131
  menuItems[optionType].children = {};
@@ -115,12 +147,11 @@ export default class SeriesListMenu extends ContextMenuContainer {
115
147
  }
116
148
  }
117
149
 
118
- if (OPTIONS_INFO[optionType].inlineOptions) {
150
+ if ('inlineOptions' in optionInfo) {
119
151
  // we can simply select this option from the menu
120
- for (const inlineOptionKey in OPTIONS_INFO[optionType]
121
- .inlineOptions) {
122
- const inlineOption =
123
- OPTIONS_INFO[optionType].inlineOptions[inlineOptionKey];
152
+ for (const inlineOptionKey in optionInfo.inlineOptions) {
153
+ /** @type {Record<string, Record<string, { name: string, value: unknown }>>} */
154
+ const inlineOption = optionInfo.inlineOptions[inlineOptionKey];
124
155
 
125
156
  // check if there's already available options (e.g.
126
157
  // "Top right") for this option type (e.g. "Label
@@ -133,14 +164,12 @@ export default class SeriesListMenu extends ContextMenuContainer {
133
164
  name: inlineOption.name,
134
165
  value: inlineOption.value,
135
166
  // missing handler to be filled in below
167
+ handler: () => {},
136
168
  };
137
169
 
138
170
  // is there a custom component available for picking this
139
171
  // option type value (e.g. 'custom' color scale)
140
- if (
141
- inlineOption.componentPickers &&
142
- inlineOption.componentPickers[track.type]
143
- ) {
172
+ if (inlineOption.componentPickers && track.type in inlineOption.componentPickers) {
144
173
  optionSelectorSettings.handler = () => {
145
174
  this.props.onConfigureTrack(
146
175
  track,
@@ -161,15 +190,14 @@ export default class SeriesListMenu extends ContextMenuContainer {
161
190
  menuItems[optionType].children[inlineOptionKey] =
162
191
  optionSelectorSettings;
163
192
  }
164
- } else if (
165
- OPTIONS_INFO[optionType].componentPickers &&
166
- OPTIONS_INFO[optionType].componentPickers[track.type]
167
- ) {
193
+ // @ts-expect-error - mutated from a plugin
194
+ } else if (track.type in optionInfo.componentPickers) {
168
195
  // there's an option picker registered
169
196
  menuItems[optionType].handler = () => {
170
197
  this.props.onConfigureTrack(
171
198
  track,
172
- OPTIONS_INFO[optionType].componentPickers[track.type],
199
+ // @ts-expect-error - mutated from a plugin
200
+ optionInfo.componentPickers[track.type],
173
201
  );
174
202
  this.props.closeMenu();
175
203
  };
@@ -196,23 +224,20 @@ export default class SeriesListMenu extends ContextMenuContainer {
196
224
  *
197
225
  * @param {Object} position The position where to draw ths menu (e.g. {left: 42, top: 88})
198
226
  *
199
- * @param (Object) bbox
227
+ * @param {Object} bbox
200
228
  * The bounding box of the parent menu, used to determine whether
201
229
  * to draw the child menu on the left or the right
202
230
  *
203
- * @param (Object) track The track definition for this series (as in the viewconf)
231
+ * @param {{ uid: string, type: string, datatype: string }} track The track definition for this series (as in the viewconf)
204
232
  */
205
233
  getTrackTypeItems(position, bbox, track) {
206
- // get the datatype of the current track
207
- //
208
-
209
234
  // if we've loaded external track types, list them here
210
235
  if (window.higlassTracksByType) {
211
236
  // Extend `TRACKS_INFO_BY_TYPE` with the configs of plugin tracks.
212
- Object.keys(window.higlassTracksByType).forEach((pluginTrackType) => {
237
+ for (const pluginTrackType of Object.keys(window.higlassTracksByType)) {
213
238
  TRACKS_INFO_BY_TYPE[pluginTrackType] =
214
239
  window.higlassTracksByType[pluginTrackType].config;
215
- });
240
+ }
216
241
  }
217
242
 
218
243
  let { datatype } = track;
@@ -235,6 +260,7 @@ export default class SeriesListMenu extends ContextMenuContainer {
235
260
  .filter((x) => x.orientation === orientation)
236
261
  .map((x) => x.type);
237
262
 
263
+ /** @type {Record<string, MenuItem>} */
238
264
  const menuItems = {};
239
265
  for (let i = 0; i < availableTrackTypes.length; i++) {
240
266
  menuItems[availableTrackTypes[i]] = {
@@ -264,6 +290,8 @@ export default class SeriesListMenu extends ContextMenuContainer {
264
290
  // the bounding box of the element which initiated the subMenu
265
291
  // necessary so that we can position the submenu next to the initiating
266
292
  // element
293
+ /** @type {DOMRect} */
294
+ // @ts-expect-error - parent class ContextMenuContainer requires typing
267
295
  const bbox = this.state.submenuSourceBbox;
268
296
  const position =
269
297
  this.state.orientation === 'left'
@@ -280,6 +308,7 @@ export default class SeriesListMenu extends ContextMenuContainer {
280
308
  // item that requested it provides a structure containing the option
281
309
  // picked as well as some data associated with it
282
310
  // e.g. {"option": "configure-series", data: track}
311
+ /** @type {{option: string, value: { uid: string, type: string, datatype: string, options: Record<string, unknown> }}} */
283
312
  const subMenuData = this.state.submenuShown;
284
313
  const track = subMenuData.value;
285
314
 
@@ -306,7 +335,7 @@ export default class SeriesListMenu extends ContextMenuContainer {
306
335
  onClick={() =>
307
336
  this.props.onChangeTrackData(this.props.series.uid, newData)
308
337
  }
309
- onMouseEnter={(e) => this.handleOtherMouseEnter(e)}
338
+ onMouseEnter={(e) => this.handleOtherMouseEnter()}
310
339
  >
311
340
  <span className={classes['context-menu-span']}>Remove divisor</span>
312
341
  </ContextMenuItem>
@@ -317,7 +346,7 @@ export default class SeriesListMenu extends ContextMenuContainer {
317
346
  <ContextMenuItem
318
347
  className={classes['context-menu-item']}
319
348
  onClick={() => this.props.onAddDivisor(this.props.series)}
320
- onMouseEnter={(e) => this.handleOtherMouseEnter(e)}
349
+ onMouseEnter={(e) => this.handleOtherMouseEnter()}
321
350
  >
322
351
  <span className={classes['context-menu-span']}>Divide by</span>
323
352
  </ContextMenuItem>
@@ -348,7 +377,7 @@ export default class SeriesListMenu extends ContextMenuContainer {
348
377
  this.props.track.uid,
349
378
  )
350
379
  }
351
- onMouseEnter={(e) => this.handleOtherMouseEnter(e)}
380
+ onMouseEnter={(e) => this.handleOtherMouseEnter()}
352
381
  >
353
382
  <span className={classes['context-menu-span']}>Export Data</span>
354
383
  </ContextMenuItem>
@@ -364,7 +393,7 @@ export default class SeriesListMenu extends ContextMenuContainer {
364
393
  this.props.onCloseTrack(this.props.series.uid);
365
394
  this.props.onAddSeries(this.props.hostTrack.uid);
366
395
  }}
367
- onMouseEnter={(e) => this.handleOtherMouseEnter(e)}
396
+ onMouseEnter={(e) => this.handleOtherMouseEnter()}
368
397
  >
369
398
  <span className={classes['context-menu-span']}>Replace Series</span>
370
399
  </ContextMenuItem>
@@ -399,7 +428,7 @@ export default class SeriesListMenu extends ContextMenuContainer {
399
428
  });
400
429
  this.props.closeMenu();
401
430
  }}
402
- onMouseEnter={(e) => this.handleOtherMouseEnter(e)}
431
+ onMouseEnter={(e) => this.handleOtherMouseEnter()}
403
432
  className={classes['context-menu-item']}
404
433
  >
405
434
  <span className={classes['context-menu-span']}>{x.label}</span>
@@ -416,10 +445,11 @@ export default class SeriesListMenu extends ContextMenuContainer {
416
445
  value: this.props.track,
417
446
  })
418
447
  }
419
- onMouseLeave={(e) => this.handleMouseLeave(e)}
448
+ onMouseLeave={(e) => this.handleMouseLeave()}
420
449
  >
421
450
  Configure Series
422
451
  <svg className={classes['play-icon']}>
452
+ <title>Play</title>
423
453
  <use xlinkHref="#play" />
424
454
  </svg>
425
455
  </ContextMenuItem>
@@ -433,16 +463,28 @@ export default class SeriesListMenu extends ContextMenuContainer {
433
463
  value: this.props.track,
434
464
  })
435
465
  }
436
- onMouseLeave={(e) => this.handleMouseLeave(e)}
466
+ onMouseLeave={(e) => this.handleMouseLeave()}
437
467
  >
438
468
  <span className={classes['context-menu-span']}>
439
469
  Track Type
440
470
  <svg className={classes['play-icon']}>
471
+ <title>Play</title>
441
472
  <use xlinkHref="#play" />
442
473
  </svg>
443
474
  </span>
444
475
  </ContextMenuItem>
445
476
 
477
+ <ContextMenuItem
478
+ className={classes['context-menu-item']}
479
+ onClick={() => {
480
+ this.props.apiPublish('datasetInfo', this.props.track);
481
+ this.props.closeMenu();
482
+ }}
483
+ onMouseEnter={(e) => this.handleOtherMouseEnter()}
484
+ >
485
+ <span className={classes['context-menu-span']}>Dataset Info</span>
486
+ </ContextMenuItem>
487
+
446
488
  {exportDataMenuItem}
447
489
 
448
490
  {this.getDivideByMenuItem()}
@@ -450,7 +492,7 @@ export default class SeriesListMenu extends ContextMenuContainer {
450
492
  <ContextMenuItem
451
493
  className={classes['context-menu-item']}
452
494
  onClick={this.props.onCloseTrack}
453
- onMouseEnter={(e) => this.handleOtherMouseEnter(e)}
495
+ onMouseEnter={(e) => this.handleOtherMouseEnter()}
454
496
  >
455
497
  <span className={classes['context-menu-span']}>Close Series</span>
456
498
  </ContextMenuItem>
@@ -2,8 +2,8 @@
2
2
  import React from 'react';
3
3
  import { Mixin } from './mixwith';
4
4
 
5
- import SeriesListMenu from './SeriesListMenu';
6
5
  import { getAllTracksAndSubtracks } from './SeriesListItems';
6
+ import SeriesListMenu from './SeriesListMenu';
7
7
 
8
8
  const SeriesListSubmenuMixin = Mixin(
9
9
  (superclass) =>
@@ -47,6 +47,7 @@ const SeriesListSubmenuMixin = Mixin(
47
47
  ref={(c) => {
48
48
  this.seriesListMenu = c;
49
49
  }}
50
+ apiPublish={this.props.apiPublish}
50
51
  closeMenu={this.props.closeMenu}
51
52
  hostTrack={this.props.tracks[0]}
52
53
  onAddDivisor={this.props.onAddDivisor}
@@ -1,9 +1,9 @@
1
1
  // @ts-nocheck
2
- import PropTypes from 'prop-types';
3
2
  import { rgb as d3rgb } from 'd3-color';
3
+ import PropTypes from 'prop-types';
4
4
  import React from 'react';
5
- import reactCSS from 'reactcss';
6
5
  import { SketchPicker } from 'react-color';
6
+ import reactCSS from 'reactcss';
7
7
 
8
8
  class SketchInlinePicker extends React.Component {
9
9
  constructor(props) {
@@ -1,5 +1,5 @@
1
1
  // @ts-nocheck
2
- /* eslint-disable react/jsx-props-no-spreading */
2
+
3
3
  import React from 'react';
4
4
  import { SortableContainer } from 'react-sortable-hoc';
5
5
 
@@ -293,7 +293,10 @@ class Tiled1DPixiTrack extends TiledPixiTrack {
293
293
  */
294
294
  getAggregatedVisibleValue(aggregator = 'max') {
295
295
  const aggregate = aggregator === 'min' ? Math.min : Math.max;
296
- const limit = aggregator === 'min' ? Infinity : -Infinity;
296
+ const limit =
297
+ aggregator === 'min'
298
+ ? Number.POSITIVE_INFINITY
299
+ : Number.NEGATIVE_INFINITY;
297
300
 
298
301
  let visibleAndFetchedIds = this.visibleAndFetchedIds();
299
302