@jbrowse/core 5.0.0-beta.1 → 5.0.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (611) hide show
  1. package/README.md +1476 -265
  2. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +3 -2
  3. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +5 -3
  4. package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +3 -5
  5. package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +34 -29
  6. package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +1 -4
  7. package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +11 -0
  8. package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +16 -9
  9. package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
  10. package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +15 -31
  11. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +4 -3
  12. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +12 -25
  13. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.d.ts +11 -0
  14. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.js +11 -0
  15. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.d.ts +8 -0
  16. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.js +24 -0
  17. package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +6 -4
  18. package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.d.ts +4 -0
  19. package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.js +17 -0
  20. package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +3 -2
  21. package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +5 -3
  22. package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +6 -2
  23. package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +7 -18
  24. package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.d.ts +16 -0
  25. package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.js +50 -0
  26. package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +0 -8
  27. package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +6 -29
  28. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +7 -34
  29. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +2 -2
  30. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.js +2 -2
  31. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +3 -1
  32. package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +12 -0
  33. package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +12 -5
  34. package/esm/BaseFeatureWidget/configSchema.d.ts +1 -1
  35. package/esm/BaseFeatureWidget/formatDetails.d.ts +13 -29
  36. package/esm/BaseFeatureWidget/formatDetails.js +62 -83
  37. package/esm/BaseFeatureWidget/index.d.ts +2 -1
  38. package/esm/BaseFeatureWidget/stateModelFactory.d.ts +42 -29
  39. package/esm/BaseFeatureWidget/stateModelFactory.js +98 -98
  40. package/esm/BaseFeatureWidget/types.d.ts +12 -6
  41. package/esm/BaseFeatureWidget/util.d.ts +0 -10
  42. package/esm/BaseFeatureWidget/util.js +0 -17
  43. package/esm/CorePlugin.js +2 -2
  44. package/esm/PluginLoader.d.ts +24 -13
  45. package/esm/PluginLoader.js +167 -51
  46. package/esm/PluginManager.d.ts +130 -24
  47. package/esm/PluginManager.js +180 -32
  48. package/esm/ReExports/MuiDataGridReExports.d.ts +1 -0
  49. package/esm/ReExports/MuiDataGridReExports.js +2 -2
  50. package/esm/ReExports/coreModules.generated.d.ts +2 -0
  51. package/esm/ReExports/coreModules.generated.js +528 -0
  52. package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
  53. package/esm/ReExports/coreWorkerModules.generated.js +488 -0
  54. package/esm/ReExports/frameworkModules.d.ts +2 -0
  55. package/esm/ReExports/frameworkModules.js +68 -0
  56. package/esm/ReExports/frameworkShared.d.ts +12 -0
  57. package/esm/ReExports/frameworkShared.js +16 -0
  58. package/esm/ReExports/frameworkWorkerModules.generated.d.ts +2 -0
  59. package/esm/ReExports/frameworkWorkerModules.generated.js +130 -0
  60. package/esm/ReExports/list.js +527 -79
  61. package/esm/ReExports/modules.d.ts +1 -1
  62. package/esm/ReExports/modules.js +10 -165
  63. package/esm/ReExports/registry.d.ts +1 -0
  64. package/esm/ReExports/registry.js +23 -5
  65. package/esm/ReExports/uiStub.d.ts +3 -0
  66. package/esm/ReExports/uiStub.js +33 -0
  67. package/esm/ReExports/workerModules.d.ts +2 -0
  68. package/esm/ReExports/workerModules.js +11 -0
  69. package/esm/TextSearch/TextSearchManager.d.ts +27 -13
  70. package/esm/TextSearch/TextSearchManager.js +77 -36
  71. package/esm/TextSearch/places.d.ts +12 -0
  72. package/esm/TextSearch/places.js +94 -0
  73. package/esm/assemblyManager/assembly.d.ts +21 -19
  74. package/esm/assemblyManager/assembly.js +28 -26
  75. package/esm/assemblyManager/assemblyAdapters.d.ts +1 -1
  76. package/esm/assemblyManager/assemblyAdapters.js +8 -2
  77. package/esm/assemblyManager/assemblyConfigSchema.d.ts +31 -90
  78. package/esm/assemblyManager/assemblyConfigSchema.js +35 -47
  79. package/esm/assemblyManager/assemblyManager.d.ts +35 -180
  80. package/esm/assemblyManager/assemblyManager.js +47 -51
  81. package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +25 -18
  82. package/esm/assemblyManager/expandAssemblyConfigShorthand.js +78 -49
  83. package/esm/assemblyManager/geneticCodes.js +2 -5
  84. package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +10 -0
  85. package/esm/assemblyManager/getSequenceAdapterConfig.js +10 -0
  86. package/esm/assemblyManager/indexAssemblyNames.d.ts +9 -0
  87. package/esm/assemblyManager/indexAssemblyNames.js +22 -0
  88. package/esm/assemblyManager/loadRefNameMap.d.ts +1 -1
  89. package/esm/assemblyManager/loadRefNameMap.js +4 -9
  90. package/esm/assemblyManager/refNameMapKey.d.ts +7 -0
  91. package/esm/assemblyManager/refNameMapKey.js +12 -0
  92. package/esm/checkPlugins.d.ts +2 -0
  93. package/esm/checkPlugins.js +38 -17
  94. package/esm/configuration/bamIndexFields.d.ts +49 -0
  95. package/esm/configuration/bamIndexFields.js +41 -0
  96. package/esm/configuration/configurationSchema.d.ts +101 -71
  97. package/esm/configuration/configurationSchema.js +207 -134
  98. package/esm/configuration/configurationSchemaUnion.d.ts +39 -0
  99. package/esm/configuration/configurationSchemaUnion.js +56 -0
  100. package/esm/configuration/configurationSlot.d.ts +150 -60
  101. package/esm/configuration/configurationSlot.js +103 -75
  102. package/esm/configuration/fillLocations.d.ts +14 -0
  103. package/esm/configuration/fillLocations.js +14 -0
  104. package/esm/configuration/formatAboutConfigSchema.d.ts +7 -21
  105. package/esm/configuration/formatDetailsConfigSchema.d.ts +11 -37
  106. package/esm/configuration/formatDetailsConfigSchema.js +10 -13
  107. package/esm/configuration/fullConfSnapshot.d.ts +4 -19
  108. package/esm/configuration/fullConfSnapshot.js +30 -52
  109. package/esm/configuration/getConf.d.ts +45 -41
  110. package/esm/configuration/getConf.js +111 -44
  111. package/esm/configuration/index.d.ts +24 -11
  112. package/esm/configuration/index.js +15 -7
  113. package/esm/configuration/indexType.d.ts +26 -0
  114. package/esm/configuration/indexType.js +38 -0
  115. package/esm/configuration/mergeFormatCallbacks.d.ts +6 -7
  116. package/esm/configuration/mergeFormatCallbacks.js +13 -10
  117. package/esm/configuration/readConfObject.d.ts +2 -24
  118. package/esm/configuration/readConfObject.js +20 -63
  119. package/esm/configuration/requirements.d.ts +37 -0
  120. package/esm/configuration/requirements.js +88 -0
  121. package/esm/configuration/schemaRegistry.d.ts +32 -15
  122. package/esm/configuration/schemaRegistry.js +33 -35
  123. package/esm/configuration/schemaTypes.d.ts +21 -5
  124. package/esm/configuration/schemaTypes.js +66 -55
  125. package/esm/configuration/slotFacade.d.ts +12 -29
  126. package/esm/configuration/slotFacade.js +44 -23
  127. package/esm/configuration/snapshotPreprocess.d.ts +43 -0
  128. package/esm/configuration/snapshotPreprocess.js +161 -0
  129. package/esm/configuration/tabixIndexFields.d.ts +30 -4
  130. package/esm/configuration/tabixIndexFields.js +21 -4
  131. package/esm/configuration/tabixShorthand.d.ts +34 -17
  132. package/esm/configuration/tabixShorthand.js +49 -22
  133. package/esm/configuration/types.d.ts +182 -43
  134. package/esm/configuration/uriShorthand.d.ts +9 -0
  135. package/esm/configuration/uriShorthand.js +16 -0
  136. package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +13 -19
  137. package/esm/data_adapters/BaseAdapter/BaseAdapter.js +12 -19
  138. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +40 -2
  139. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +68 -5
  140. package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +40 -0
  141. package/esm/data_adapters/BaseAdapter/featureDensity.js +31 -0
  142. package/esm/data_adapters/BaseAdapter/index.d.ts +23 -3
  143. package/esm/data_adapters/BaseAdapter/index.js +1 -0
  144. package/esm/data_adapters/BaseAdapter/rowSources.d.ts +37 -0
  145. package/esm/data_adapters/BaseAdapter/rowSources.js +7 -0
  146. package/esm/data_adapters/BaseAdapter/stats.d.ts +33 -1
  147. package/esm/data_adapters/BaseAdapter/stats.js +52 -13
  148. package/esm/data_adapters/BaseAdapter/types.d.ts +8 -12
  149. package/esm/data_adapters/BaseAdapter/zoomRange.d.ts +10 -0
  150. package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +1 -1
  151. package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +7 -11
  152. package/esm/data_adapters/CytobandAdapter/configSchema.js +3 -17
  153. package/esm/data_adapters/dataAdapterCache.d.ts +19 -2
  154. package/esm/data_adapters/dataAdapterCache.js +44 -10
  155. package/esm/data_adapters/getFeatureAdapter.d.ts +6 -4
  156. package/esm/data_adapters/getFeatureAdapter.js +8 -8
  157. package/esm/data_adapters/getSequenceSubAdapter.d.ts +7 -9
  158. package/esm/data_adapters/getSequenceSubAdapter.js +8 -10
  159. package/esm/pluggableElementTypes/AdapterType.d.ts +8 -8
  160. package/esm/pluggableElementTypes/AdapterType.js +1 -1
  161. package/esm/pluggableElementTypes/DisplayType.d.ts +46 -16
  162. package/esm/pluggableElementTypes/DisplayType.js +22 -12
  163. package/esm/pluggableElementTypes/LazyStateModelElement.d.ts +32 -0
  164. package/esm/pluggableElementTypes/LazyStateModelElement.js +77 -0
  165. package/esm/pluggableElementTypes/PluggableElementBase.d.ts +3 -5
  166. package/esm/pluggableElementTypes/PluggableElementBase.js +3 -5
  167. package/esm/pluggableElementTypes/RpcMethodType.d.ts +11 -1
  168. package/esm/pluggableElementTypes/RpcMethodType.js +25 -9
  169. package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +1 -2
  170. package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +7 -7
  171. package/esm/pluggableElementTypes/ViewType.d.ts +20 -4
  172. package/esm/pluggableElementTypes/ViewType.js +32 -4
  173. package/esm/pluggableElementTypes/addMenuItems.d.ts +3 -2
  174. package/esm/pluggableElementTypes/extendElementType.d.ts +1 -2
  175. package/esm/pluggableElementTypes/extendElementType.js +9 -5
  176. package/esm/pluggableElementTypes/index.d.ts +2 -1
  177. package/esm/pluggableElementTypes/index.js +1 -1
  178. package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +19 -9
  179. package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +65 -27
  180. package/esm/pluggableElementTypes/models/BaseDisplayModel.js +72 -10
  181. package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +65 -16
  182. package/esm/pluggableElementTypes/models/BaseTrackModel.js +179 -117
  183. package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +85 -16
  184. package/esm/pluggableElementTypes/models/BaseViewModel.js +53 -10
  185. package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +26 -16
  186. package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +15 -11
  187. package/esm/pluggableElementTypes/models/assertDisplayContract.js +25 -32
  188. package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -18
  189. package/esm/pluggableElementTypes/models/baseConnectionConfig.js +5 -5
  190. package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +26 -31
  191. package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +108 -147
  192. package/esm/pluggableElementTypes/models/baseTrackConfig.js +96 -73
  193. package/esm/pluggableElementTypes/models/components/SaveTrackData.js +4 -6
  194. package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +3 -4
  195. package/esm/pluggableElementTypes/models/components/fetchTrackData.js +3 -3
  196. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +23 -13
  197. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +80 -48
  198. package/esm/pluggableElementTypes/models/index.d.ts +2 -3
  199. package/esm/pluggableElementTypes/models/index.js +2 -3
  200. package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +15 -1
  201. package/esm/pluggableElementTypes/models/migrateTrackConfig.js +85 -25
  202. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +4 -3
  203. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +141 -19
  204. package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +3 -3
  205. package/esm/pluginDefinitions.d.ts +34 -7
  206. package/esm/pluginDefinitions.js +54 -20
  207. package/esm/rpc/BaseRpcDriver.d.ts +2 -2
  208. package/esm/rpc/BaseRpcDriver.js +25 -30
  209. package/esm/rpc/MainThreadRpcDriver.d.ts +2 -2
  210. package/esm/rpc/MainThreadRpcDriver.js +13 -8
  211. package/esm/rpc/RpcClient.d.ts +18 -6
  212. package/esm/rpc/RpcClient.js +51 -16
  213. package/esm/rpc/RpcManager.d.ts +14 -10
  214. package/esm/rpc/RpcManager.js +11 -1
  215. package/esm/rpc/RpcRegistry.d.ts +40 -7
  216. package/esm/rpc/RpcServer.d.ts +3 -1
  217. package/esm/rpc/RpcServer.js +19 -12
  218. package/esm/rpc/WebWorkerRpcDriver.d.ts +11 -4
  219. package/esm/rpc/WebWorkerRpcDriver.js +64 -68
  220. package/esm/rpc/byteBudget.d.ts +20 -5
  221. package/esm/rpc/byteBudget.js +16 -5
  222. package/esm/rpc/configSchema.d.ts +7 -21
  223. package/esm/rpc/coreRpcMethods.d.ts +4 -0
  224. package/esm/rpc/coreRpcMethods.js +4 -0
  225. package/esm/rpc/methods/CoreGetEncodedFeature.d.ts +13 -0
  226. package/esm/rpc/methods/CoreGetEncodedFeature.js +32 -0
  227. package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +16 -0
  228. package/esm/rpc/methods/CoreGetEncodedLayers.js +59 -0
  229. package/esm/rpc/methods/CoreGetExportData.js +3 -4
  230. package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
  231. package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
  232. package/esm/rpc/methods/CoreGetFeatures.js +3 -5
  233. package/esm/rpc/methods/CoreGetRefNames.js +2 -12
  234. package/esm/rpc/methods/CoreGetRegionByteEstimate.js +1 -1
  235. package/esm/rpc/methods/CoreGetSequence.js +2 -2
  236. package/esm/rpc/methods/CoreLoadAdapterCode.d.ts +13 -0
  237. package/esm/rpc/methods/CoreLoadAdapterCode.js +16 -0
  238. package/esm/rpc/methods/layerFeatures.d.ts +33 -0
  239. package/esm/rpc/methods/layerFeatures.js +29 -0
  240. package/esm/svg/SvgExport.js +6 -7
  241. package/esm/svg/SvgThemeProviders.d.ts +12 -0
  242. package/esm/svg/SvgThemeProviders.js +15 -0
  243. package/esm/svg/exportViewSvg.d.ts +28 -0
  244. package/esm/svg/exportViewSvg.js +13 -0
  245. package/esm/svg/normalizeSvgMarkup.d.ts +7 -0
  246. package/esm/svg/normalizeSvgMarkup.js +99 -0
  247. package/esm/svg/serializeSvg.d.ts +7 -0
  248. package/esm/svg/serializeSvg.js +11 -0
  249. package/esm/svg/svgId.d.ts +1 -1
  250. package/esm/svg/svgId.js +1 -1
  251. package/esm/svg/svgReady.d.ts +9 -7
  252. package/esm/svg/svgReady.js +8 -7
  253. package/esm/svg/trackNames.d.ts +7 -5
  254. package/esm/svg/trackNames.js +12 -9
  255. package/esm/svg/wrapSvgExport.js +6 -74
  256. package/esm/ui/AddCustomPluginDialog.js +3 -8
  257. package/esm/ui/AppReadyMarker.d.ts +45 -0
  258. package/esm/ui/AppReadyMarker.js +89 -0
  259. package/esm/ui/BaseExportSvgDialog.d.ts +1 -1
  260. package/esm/ui/CascadingMenu.js +181 -104
  261. package/esm/ui/DropDownMenu.js +2 -1
  262. package/esm/ui/ErrorBanner.js +1 -1
  263. package/esm/ui/ErrorBoundary.d.ts +2 -2
  264. package/esm/ui/ErrorMessageStackTraceContents.js +2 -1
  265. package/esm/ui/ErrorMessageStackTraceDialog.js +5 -11
  266. package/esm/ui/ExportSvgDialog.d.ts +1 -1
  267. package/esm/ui/FileDropZone.js +2 -1
  268. package/esm/ui/FileSelector/useInternetAccounts.d.ts +156 -96
  269. package/esm/ui/HoverMenu.d.ts +1 -2
  270. package/esm/ui/HoverMenu.js +6 -3
  271. package/esm/ui/JexlFilterDialog.d.ts +13 -10
  272. package/esm/ui/JexlFilterDialog.js +122 -49
  273. package/esm/ui/JexlFilterRowEditors.d.ts +15 -0
  274. package/esm/ui/JexlFilterRowEditors.js +90 -0
  275. package/esm/ui/LazyBaseTooltip.d.ts +4 -0
  276. package/esm/ui/LazyBaseTooltip.js +9 -0
  277. package/esm/ui/LegendSwatchGlyph.js +26 -21
  278. package/esm/ui/LoadingOverlay.d.ts +14 -0
  279. package/esm/ui/LoadingOverlay.js +4 -2
  280. package/esm/ui/MenuTypes.d.ts +23 -53
  281. package/esm/ui/MenuTypes.js +3 -0
  282. package/esm/ui/MonospaceTextField.d.ts +2 -1
  283. package/esm/ui/MonospaceTextField.js +23 -20
  284. package/esm/ui/PaletteContext.d.ts +10 -5
  285. package/esm/ui/PaletteContext.js +44 -6
  286. package/esm/ui/RefNameAutocomplete/SearchOption.d.ts +13 -0
  287. package/esm/ui/RefNameAutocomplete/SearchOption.js +45 -0
  288. package/esm/ui/RefNameAutocomplete/index.d.ts +1 -2
  289. package/esm/ui/RefNameAutocomplete/index.js +8 -2
  290. package/esm/ui/RefNameAutocomplete/util.d.ts +13 -0
  291. package/esm/ui/RefNameAutocomplete/util.js +42 -1
  292. package/esm/ui/ResizeHandle.d.ts +3 -1
  293. package/esm/ui/ResizeHandle.js +44 -11
  294. package/esm/ui/ScrollChrome.d.ts +13 -0
  295. package/esm/ui/ScrollChrome.js +11 -0
  296. package/esm/ui/ScrollEdgeShadow.d.ts +6 -9
  297. package/esm/ui/ScrollEdgeShadow.js +14 -35
  298. package/esm/ui/ScrollZoomToggle.d.ts +4 -27
  299. package/esm/ui/ScrollZoomToggle.js +34 -51
  300. package/esm/ui/SessionJsonPanel.d.ts +3 -0
  301. package/esm/ui/SessionJsonPanel.js +14 -0
  302. package/esm/ui/SettingsChangesTable.d.ts +1 -0
  303. package/esm/ui/SettingsChangesTable.js +49 -11
  304. package/esm/ui/ShareLinkField.d.ts +1 -3
  305. package/esm/ui/ShareLinkField.js +13 -40
  306. package/esm/ui/SizeSliderRow.d.ts +1 -3
  307. package/esm/ui/SizeSliderRow.js +4 -6
  308. package/esm/ui/SnackbarModel.js +79 -67
  309. package/esm/ui/StatusProgressBar.js +2 -2
  310. package/esm/ui/SvgColorLegend.d.ts +9 -4
  311. package/esm/ui/SvgColorLegend.js +82 -41
  312. package/esm/ui/VerticalScrollbar.d.ts +13 -34
  313. package/esm/ui/VerticalScrollbar.js +29 -83
  314. package/esm/ui/ViewLoadingScreen.d.ts +5 -4
  315. package/esm/ui/ViewLoadingScreen.js +8 -32
  316. package/esm/ui/colorScale.d.ts +92 -0
  317. package/esm/ui/colorScale.js +72 -0
  318. package/esm/ui/colors.d.ts +64 -0
  319. package/esm/ui/colors.js +230 -1
  320. package/esm/ui/hoverBoxStyle.d.ts +14 -2
  321. package/esm/ui/hoverBoxStyle.js +17 -2
  322. package/esm/ui/index.d.ts +12 -12
  323. package/esm/ui/index.js +14 -22
  324. package/esm/ui/launchViewMenu.js +15 -5
  325. package/esm/ui/legendMenuItem.d.ts +10 -32
  326. package/esm/ui/legendMenuItem.js +9 -36
  327. package/esm/ui/legendSpec.d.ts +15 -8
  328. package/esm/ui/legendSpec.js +14 -23
  329. package/esm/ui/makeSizeMenu.d.ts +0 -6
  330. package/esm/ui/makeSizeMenu.js +6 -30
  331. package/esm/ui/measureLegendText.js +1 -1
  332. package/esm/ui/menuItemAdornment.d.ts +9 -20
  333. package/esm/ui/menuItemAdornment.js +10 -32
  334. package/esm/ui/menuItems.d.ts +2 -7
  335. package/esm/ui/menuItems.js +1 -6
  336. package/esm/ui/multiTrackMenuItems.d.ts +6 -0
  337. package/esm/ui/palette.d.ts +118 -116
  338. package/esm/ui/palette.js +114 -75
  339. package/esm/ui/replaceViewAction.d.ts +1 -1
  340. package/esm/ui/replaceViewAction.js +1 -1
  341. package/esm/ui/theme.d.ts +43 -119
  342. package/esm/ui/theme.js +62 -78
  343. package/esm/ui/toggleMenuItems.d.ts +1 -3
  344. package/esm/ui/toggleMenuItems.js +6 -5
  345. package/esm/ui/useAssemblySelection.d.ts +4 -4
  346. package/esm/ui/viewHeaderHeight.d.ts +1 -0
  347. package/esm/ui/viewHeaderHeight.js +1 -0
  348. package/esm/util/Base1DUtils.d.ts +5 -3
  349. package/esm/util/Base1DUtils.js +14 -6
  350. package/esm/util/Base1DViewModel.d.ts +2 -1
  351. package/esm/util/Base1DViewModel.js +3 -2
  352. package/esm/util/SvgCanvas.d.ts +15 -13
  353. package/esm/util/SvgCanvas.js +76 -56
  354. package/esm/util/aborting.d.ts +39 -0
  355. package/esm/util/aborting.js +88 -6
  356. package/esm/util/adapterMetadata.d.ts +1 -1
  357. package/esm/util/adapterMetadata.js +6 -5
  358. package/esm/util/addAndShowTrack.d.ts +2 -5
  359. package/esm/util/addAndShowTrack.js +5 -1
  360. package/esm/util/addRelativeUris.d.ts +17 -5
  361. package/esm/util/addRelativeUris.js +46 -10
  362. package/esm/util/addTrackFromWidget.d.ts +2 -5
  363. package/esm/util/addTrackFromWidget.js +5 -4
  364. package/esm/util/aggregateFieldName.d.ts +10 -0
  365. package/esm/util/aggregateFieldName.js +8 -0
  366. package/esm/util/analytics.js +46 -13
  367. package/esm/util/animationAllowed.d.ts +9 -0
  368. package/esm/util/animationAllowed.js +13 -0
  369. package/esm/util/applyRowResizeWheel.d.ts +10 -5
  370. package/esm/util/applyRowResizeWheel.js +10 -21
  371. package/esm/util/bandHeight.d.ts +10 -0
  372. package/esm/util/bandHeight.js +29 -0
  373. package/esm/util/bandLayout.d.ts +4 -4
  374. package/esm/util/bandLayout.js +4 -4
  375. package/esm/util/bezierConnector.d.ts +4 -3
  376. package/esm/util/bezierConnector.js +38 -45
  377. package/esm/util/bgzfWorkerPool.d.ts +20 -74
  378. package/esm/util/bgzfWorkerPool.js +20 -74
  379. package/esm/util/binnedAggregate.d.ts +17 -0
  380. package/esm/util/binnedAggregate.js +275 -0
  381. package/esm/util/cacheBudgets.d.ts +22 -19
  382. package/esm/util/cacheBudgets.js +22 -19
  383. package/esm/util/cachedSetup.d.ts +1 -1
  384. package/esm/util/cachedSetup.js +2 -2
  385. package/esm/util/categoricalField.d.ts +56 -0
  386. package/esm/util/categoricalField.js +73 -0
  387. package/esm/util/clampToContig.d.ts +17 -0
  388. package/esm/util/clampToContig.js +19 -0
  389. package/esm/util/coarseStripHTML.js +1 -2
  390. package/esm/util/color/cssColorsLevel4.d.ts +1 -0
  391. package/esm/util/color/cssColorsLevel4.js +1 -0
  392. package/esm/util/color/index.d.ts +5 -3
  393. package/esm/util/color/index.js +7 -4
  394. package/esm/util/colorBits.d.ts +3 -3
  395. package/esm/util/colorBits.js +19 -44
  396. package/esm/util/colorRamp.d.ts +49 -5
  397. package/esm/util/colorRamp.js +169 -18
  398. package/esm/util/colorScale.d.ts +156 -0
  399. package/esm/util/colorScale.js +243 -0
  400. package/esm/util/colorSchemes.d.ts +21 -0
  401. package/esm/util/colorSchemes.js +30 -0
  402. package/esm/util/{createStopTokenRotation.d.ts → createAbortRotation.d.ts} +21 -23
  403. package/esm/util/{createStopTokenRotation.js → createAbortRotation.js} +21 -52
  404. package/esm/util/createSvgRasterCanvas.d.ts +10 -0
  405. package/esm/util/cssColorParse.d.ts +15 -0
  406. package/esm/util/cssColorParse.js +53 -0
  407. package/esm/util/diagonalizeRegions.d.ts +2 -3
  408. package/esm/util/diagonalizeRegions.js +8 -13
  409. package/esm/util/expandLooseSearchIndex.d.ts +19 -0
  410. package/esm/util/expandLooseSearchIndex.js +29 -0
  411. package/esm/util/featureTable.d.ts +224 -0
  412. package/esm/util/featureTable.js +366 -0
  413. package/esm/util/featureTransforms.d.ts +80 -0
  414. package/esm/util/featureTransforms.js +1579 -0
  415. package/esm/util/featureTypes.d.ts +24 -0
  416. package/esm/util/featureTypes.js +35 -0
  417. package/esm/util/fetchAndMaybeUnzip.js +16 -9
  418. package/esm/util/fetchContext.d.ts +7 -8
  419. package/esm/util/fetchContext.js +3 -3
  420. package/esm/util/fetchHub.d.ts +4 -2
  421. package/esm/util/fetchHub.js +2 -2
  422. package/esm/util/fetchPhases.d.ts +10 -10
  423. package/esm/util/fetchSeq.d.ts +2 -3
  424. package/esm/util/fetchSeq.js +2 -2
  425. package/esm/util/fieldReader.d.ts +17 -0
  426. package/esm/util/fieldReader.js +62 -0
  427. package/esm/util/freezeDeep.d.ts +8 -10
  428. package/esm/util/freezeDeep.js +8 -10
  429. package/esm/util/groupKeys.d.ts +77 -0
  430. package/esm/util/groupKeys.js +155 -0
  431. package/esm/util/highlights.d.ts +10 -6
  432. package/esm/util/highlights.js +12 -25
  433. package/esm/util/hooks.d.ts +31 -2
  434. package/esm/util/hooks.js +72 -3
  435. package/esm/util/index.d.ts +11 -11
  436. package/esm/util/index.js +11 -10
  437. package/esm/util/indexCandidates.d.ts +1 -31
  438. package/esm/util/indexCandidates.js +5 -63
  439. package/esm/util/installFetch.d.ts +77 -37
  440. package/esm/util/installFetch.js +65 -38
  441. package/esm/util/installInitAutorun.d.ts +14 -13
  442. package/esm/util/installInitAutorun.js +17 -17
  443. package/esm/util/installPrerequisiteFetch.d.ts +115 -0
  444. package/esm/util/installPrerequisiteFetch.js +111 -0
  445. package/esm/util/io/index.js +19 -14
  446. package/esm/util/isDataCurrent.d.ts +7 -5
  447. package/esm/util/isDataCurrent.js +9 -6
  448. package/esm/util/isTextEntryFocused.d.ts +7 -0
  449. package/esm/util/isTextEntryFocused.js +16 -0
  450. package/esm/util/jexl.js +24 -21
  451. package/esm/util/jexlFilterRows.d.ts +89 -0
  452. package/esm/util/jexlFilterRows.js +252 -0
  453. package/esm/util/jexlFilters.d.ts +20 -27
  454. package/esm/util/jexlFilters.js +23 -11
  455. package/esm/util/jexlStrings.d.ts +3 -4
  456. package/esm/util/jexlStrings.js +2 -3
  457. package/esm/util/layouts/GranularRectLayout.d.ts +8 -1
  458. package/esm/util/layouts/GranularRectLayout.js +25 -8
  459. package/esm/util/lazyAfterAttach.d.ts +13 -0
  460. package/esm/util/lazyAfterAttach.js +31 -0
  461. package/esm/util/lazyWithPreload.d.ts +19 -0
  462. package/esm/util/lazyWithPreload.js +27 -0
  463. package/esm/util/legendCandidates.d.ts +72 -0
  464. package/esm/util/legendCandidates.js +138 -0
  465. package/esm/util/localStorage.js +4 -4
  466. package/esm/util/markEncoding.d.ts +150 -0
  467. package/esm/util/markEncoding.js +845 -0
  468. package/esm/util/markEncodingTypes.d.ts +588 -0
  469. package/esm/util/markEncodingTypes.js +8 -0
  470. package/esm/util/mst-reflection.d.ts +2 -20
  471. package/esm/util/mst-reflection.js +3 -53
  472. package/esm/util/mstUtils.d.ts +31 -23
  473. package/esm/util/mstUtils.js +39 -24
  474. package/esm/util/numericUtils.d.ts +7 -0
  475. package/esm/util/numericUtils.js +16 -0
  476. package/esm/util/numericValue.d.ts +14 -0
  477. package/esm/util/numericValue.js +34 -0
  478. package/esm/util/openFeatureWidget.d.ts +5 -0
  479. package/esm/util/openFeatureWidget.js +2 -2
  480. package/esm/util/openViews.d.ts +17 -0
  481. package/esm/util/openViews.js +22 -0
  482. package/esm/util/parentWalk.d.ts +1 -1
  483. package/esm/util/parentWalk.js +1 -1
  484. package/esm/util/parseLineByLine.d.ts +4 -5
  485. package/esm/util/parseLineByLine.js +8 -14
  486. package/esm/util/pluginStore.d.ts +6 -8
  487. package/esm/util/pluginStore.js +17 -16
  488. package/esm/util/preloadComponent.d.ts +5 -0
  489. package/esm/util/preloadComponent.js +11 -0
  490. package/esm/util/progress.d.ts +22 -22
  491. package/esm/util/progress.js +27 -26
  492. package/esm/util/quantileExtent.d.ts +49 -0
  493. package/esm/util/quantileExtent.js +162 -0
  494. package/esm/util/range.d.ts +13 -9
  495. package/esm/util/range.js +17 -8
  496. package/esm/util/renameRegions.d.ts +26 -6
  497. package/esm/util/renameRegions.js +68 -54
  498. package/esm/util/renderToStaticMarkup.js +24 -14
  499. package/esm/util/rxjs.d.ts +23 -8
  500. package/esm/util/rxjs.js +61 -15
  501. package/esm/util/samplesTsv.d.ts +49 -0
  502. package/esm/util/samplesTsv.js +86 -0
  503. package/esm/util/scheduleDetachedDestroy.d.ts +18 -0
  504. package/esm/util/scheduleDetachedDestroy.js +24 -0
  505. package/esm/util/scrollLatch.d.ts +1 -0
  506. package/esm/util/scrollLatch.js +8 -0
  507. package/esm/util/selectEncodedFeature.d.ts +16 -0
  508. package/esm/util/selectEncodedFeature.js +34 -0
  509. package/esm/util/sessionSharing.d.ts +7 -5
  510. package/esm/util/sessionSharing.js +23 -23
  511. package/esm/util/shapeNameList.d.ts +2 -0
  512. package/esm/util/shapeNameList.js +6 -0
  513. package/esm/util/shapeNames.d.ts +7 -0
  514. package/esm/util/shapeNames.js +11 -0
  515. package/esm/util/simpleFeature.d.ts +0 -1
  516. package/esm/util/starFusion.d.ts +26 -0
  517. package/esm/util/starFusion.js +37 -0
  518. package/esm/util/stepTables.d.ts +82 -0
  519. package/esm/util/stepTables.js +243 -0
  520. package/esm/util/svAlt.d.ts +145 -0
  521. package/esm/util/svAlt.js +364 -0
  522. package/esm/util/svgColorProps.d.ts +11 -0
  523. package/esm/util/svgColorProps.js +28 -1
  524. package/esm/util/systemColorScheme.d.ts +12 -0
  525. package/esm/util/systemColorScheme.js +27 -0
  526. package/esm/util/tabix.d.ts +13 -8
  527. package/esm/util/tabix.js +17 -12
  528. package/esm/util/thresholdScale.d.ts +91 -0
  529. package/esm/util/thresholdScale.js +166 -0
  530. package/esm/util/timeGate.d.ts +4 -5
  531. package/esm/util/timeGate.js +4 -5
  532. package/esm/util/trackConfigDelta.d.ts +26 -26
  533. package/esm/util/trackConfigDelta.js +63 -47
  534. package/esm/util/tracks.d.ts +121 -40
  535. package/esm/util/tracks.js +497 -112
  536. package/esm/util/translateTranscript.d.ts +44 -0
  537. package/esm/util/translateTranscript.js +102 -0
  538. package/esm/util/types/data.d.ts +0 -2
  539. package/esm/util/types/index.d.ts +121 -22
  540. package/esm/util/types/index.js +9 -0
  541. package/esm/util/types/mst.d.ts +3 -0
  542. package/esm/util/types/mst.js +4 -0
  543. package/esm/util/types/renameIds.d.ts +1 -0
  544. package/esm/util/types/renameIds.js +29 -0
  545. package/esm/util/types/services.d.ts +1 -1
  546. package/esm/util/unknownSnapshotKeys.d.ts +51 -0
  547. package/esm/util/unknownSnapshotKeys.js +82 -0
  548. package/esm/util/useFeatureSequence.js +5 -5
  549. package/esm/util/useFetch.d.ts +3 -4
  550. package/esm/util/useFetch.js +19 -10
  551. package/esm/util/useFetchPlugins.d.ts +6 -2
  552. package/esm/util/useFetchPlugins.js +7 -3
  553. package/esm/util/usePanelVirtualScroll.d.ts +7 -35
  554. package/esm/util/usePanelVirtualScroll.js +9 -36
  555. package/esm/util/useRowVirtualScroll.d.ts +6 -29
  556. package/esm/util/useRowVirtualScroll.js +8 -49
  557. package/esm/util/useVirtualScrollWheel.d.ts +20 -4
  558. package/esm/util/useVirtualScrollWheel.js +40 -74
  559. package/esm/util/viewHighlights.d.ts +3 -0
  560. package/esm/util/viewHighlights.js +5 -0
  561. package/esm/util/viewStatus.d.ts +47 -15
  562. package/esm/util/viewStatus.js +34 -0
  563. package/esm/util/wheelZoom.d.ts +7 -1
  564. package/esm/util/wheelZoom.js +85 -19
  565. package/esm/util/whenViewSettled.d.ts +55 -8
  566. package/esm/util/whenViewSettled.js +56 -7
  567. package/esm/util/withLaunchInput.d.ts +174 -0
  568. package/esm/util/withLaunchInput.js +274 -0
  569. package/package.json +70 -20
  570. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +0 -2
  571. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +0 -8
  572. package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +0 -8
  573. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +0 -80
  574. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.js +0 -583
  575. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +0 -141
  576. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.js +0 -1116
  577. package/esm/ReExports/BaseFeatureDetails.d.ts +0 -1
  578. package/esm/ReExports/BaseFeatureDetails.js +0 -10
  579. package/esm/ReExports/index.d.ts +0 -1
  580. package/esm/ReExports/index.js +0 -1
  581. package/esm/ReExports/publicUtil.d.ts +0 -1
  582. package/esm/ReExports/publicUtil.js +0 -28
  583. package/esm/configuration/promotableDefaults.d.ts +0 -199
  584. package/esm/configuration/promotableDefaults.js +0 -326
  585. package/esm/configuration/promotablePin.d.ts +0 -55
  586. package/esm/configuration/promotablePin.js +0 -1
  587. package/esm/configuration/promotableResolve.d.ts +0 -108
  588. package/esm/configuration/promotableResolve.js +0 -117
  589. package/esm/configuration/promotableSlots.d.ts +0 -12
  590. package/esm/configuration/promotableSlots.js +0 -45
  591. package/esm/configuration/slotShape.d.ts +0 -12
  592. package/esm/configuration/slotShape.js +0 -84
  593. package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +0 -51
  594. package/esm/pluggableElementTypes/models/HighlightsMixin.js +0 -78
  595. package/esm/ui/PinAdornment.d.ts +0 -5
  596. package/esm/ui/PinAdornment.js +0 -79
  597. package/esm/ui/SvgGradientLegend.d.ts +0 -26
  598. package/esm/ui/SvgGradientLegend.js +0 -26
  599. package/esm/ui/highlightChipReveal.d.ts +0 -32
  600. package/esm/ui/highlightChipReveal.js +0 -39
  601. package/esm/ui/promotableMenuItems.d.ts +0 -19
  602. package/esm/ui/promotableMenuItems.js +0 -89
  603. package/esm/ui/promotablePinCoverage.d.ts +0 -44
  604. package/esm/ui/promotablePinCoverage.js +0 -87
  605. package/esm/util/applyInitSettings.d.ts +0 -79
  606. package/esm/util/applyInitSettings.js +0 -91
  607. package/esm/util/openDisplays.d.ts +0 -23
  608. package/esm/util/openDisplays.js +0 -79
  609. package/esm/util/stopToken.d.ts +0 -211
  610. package/esm/util/stopToken.js +0 -438
  611. /package/esm/{BaseFeatureWidget/BaseFeatureDetail/types.js → data_adapters/BaseAdapter/zoomRange.js} +0 -0
@@ -1,14 +1,16 @@
1
- import type { IAnyStateTreeNode } from '@jbrowse/mobx-state-tree';
2
- import type { Theme } from '@mui/material';
1
+ import type { JBrowsePalette } from '../ui/palette.ts';
3
2
  export interface HighlightType {
4
3
  start: number;
5
4
  end: number;
6
- assemblyName?: string;
5
+ assemblyName: string;
7
6
  refName: string;
8
7
  color?: string;
9
8
  label?: string;
10
9
  }
11
- export declare function revealHighlightsOnGrowth(node: IAnyStateTreeNode, count: () => number): void;
10
+ export type HighlightInput = Omit<HighlightType, 'assemblyName'> & {
11
+ assemblyName?: string;
12
+ };
13
+ export declare function isSameHighlight(a: HighlightType, b: HighlightType): boolean;
12
14
  export declare function highlightKey(h: {
13
15
  assemblyName?: string;
14
16
  refName: string;
@@ -17,5 +19,7 @@ export declare function highlightKey(h: {
17
19
  }, i: number): string;
18
20
  export declare function getHighlightColor(highlight: {
19
21
  color?: string;
20
- }, theme: Theme, alpha?: number): import("./colord.ts").Colord;
21
- export declare function coerceHighlight(h: string | HighlightType, defaultAssembly: string, isValidRefName: (refName: string, assemblyName?: string) => boolean): HighlightType | undefined;
22
+ }, theme: {
23
+ palette: Pick<JBrowsePalette, 'highlight'>;
24
+ }, alpha?: number): import("./colord.ts").Colord;
25
+ export declare function coerceHighlight(h: string | HighlightInput, defaultAssembly: string, isValidRefName: (refName: string, assemblyName?: string) => boolean): HighlightType | undefined;
@@ -1,25 +1,12 @@
1
- import { addDisposer } from '@jbrowse/mobx-state-tree';
2
- import { autorun } from 'mobx';
3
1
  import { colord } from './colord.js';
4
2
  import { parseLocString } from './locString.js';
5
- import { getSession } from './mstUtils.js';
6
- // Bands and bookmark overlays both render only while the session-wide
7
- // `highlightsVisible` flag is on, so anything added while it is off draws
8
- // nothing at all, which reads as "it didn't work". Watching the collection
9
- // grow reveals for every path that adds to it rather than asking each call
10
- // site to remember. `count` is seeded before the autorun so restoring a
11
- // session that deliberately persisted bands-off doesn't flip it back on, and
12
- // removals only lower the baseline — they never re-reveal, or the toggle could
13
- // never be turned off.
14
- export function revealHighlightsOnGrowth(node, count) {
15
- let prevCount = count();
16
- addDisposer(node, autorun(function highlightRevealAutorun() {
17
- const newCount = count();
18
- if (newCount > prevCount) {
19
- getSession(node).revealHighlights();
20
- }
21
- prevCount = newCount;
22
- }));
3
+ export function isSameHighlight(a, b) {
4
+ return (a.assemblyName === b.assemblyName &&
5
+ a.refName === b.refName &&
6
+ a.start === b.start &&
7
+ a.end === b.end &&
8
+ a.color === b.color &&
9
+ a.label === b.label);
23
10
  }
24
11
  // Highlight regions have no id and can duplicate, so the trailing index only
25
12
  // breaks ties between otherwise-identical regions. Wrapping the array index in
@@ -84,11 +71,11 @@ function parseLocHighlight(s, defaultAssembly, isValidRefName) {
84
71
  ? { refName, start, end, assemblyName: assemblyName ?? defaultAssembly }
85
72
  : undefined;
86
73
  }
87
- // Normalize an `init.highlight` entry (HighlightType object, JSON string, or
88
- // loc string) into a HighlightType, defaulting the assemblyName. Shared by
89
- // LinearGenomeView and DotplotView, whose `init.highlight` accept the same
90
- // three forms — the JSON shape-check in particular has to stay identical or a
91
- // highlight that works in one view silently drops in the other.
74
+ // Normalize a launch spec's `highlight` entry (object, JSON string, or loc
75
+ // string) into a HighlightType, defaulting the assemblyName. Shared by
76
+ // LinearGenomeView and DotplotView, whose `highlight` launch keys accept the
77
+ // same three forms — the JSON shape-check in particular has to stay identical or
78
+ // a highlight that works in one view silently drops in the other.
92
79
  export function coerceHighlight(h, defaultAssembly,
93
80
  // takes the assembly a `{...}` prefix named, so a caller with more than one
94
81
  // assembly in play validates the refName against the one the entry asked for
@@ -1,5 +1,22 @@
1
1
  import type { RefObject } from 'react';
2
2
  export declare function useFocusOnInteraction(ref: RefObject<HTMLElement | null>, onInteract: () => void): void;
3
+ /**
4
+ * Has `key` stayed the same for five seconds? A loading screen passes
5
+ * everything it is showing, so any status at all — a new phase, another chunk
6
+ * of bytes — restarts the wait, and only a load that has stopped saying
7
+ * anything gets there. `ViewLoadingScreen` and the embed `ViewStatus` use it to
8
+ * name the file a stalled load is waiting on.
9
+ *
10
+ * The timeout stores the key it fired for rather than a boolean, so a key that
11
+ * has moved on is not stalled and the notice goes away with no write to undo.
12
+ */
13
+ export declare function useStalled(key: string): boolean;
14
+ /**
15
+ * Has the loading screen been up for two seconds? Until then it says only
16
+ * "Loading": a fast load flashes its phase labels too briefly to read, and a
17
+ * label glimpsed for a frame reads as a claim about what the app is doing.
18
+ */
19
+ export declare function useSlowLoad(): boolean;
3
20
  export declare function useDebounce<T>(value: T, delay: number): T;
4
21
  export declare function useWidthSetter(view: {
5
22
  setWidth: (arg: number) => void;
@@ -20,6 +37,14 @@ export declare function useWidthSetter(view: {
20
37
  * "avoiding recreating the ref contents" pattern.
21
38
  */
22
39
  export declare function useCreateOnce<T>(create: () => T): T;
40
+ /**
41
+ * `useCreateOnce` for an asynchronous factory: returns undefined until
42
+ * `create` resolves, and rethrows a rejection from render. The value can
43
+ * resolve after the component is gone — a caller whose value is expensive to
44
+ * leak should use product-core's `useAsyncEngineLifecycle`, which discards
45
+ * that late arrival.
46
+ */
47
+ export declare function useCreateOnceAsync<T>(create: () => Promise<T>): T | undefined;
23
48
  /**
24
49
  * Run `cleanup` when the component *really* unmounts.
25
50
  *
@@ -58,8 +83,7 @@ export declare function useFinalUnmount(cleanup: () => void): void;
58
83
  * components on the same key each kept their own copy of it, so toggling a
59
84
  * setting in one BreakpointSplitView header left a second one open beside it
60
85
  * showing the old value until it remounted. Instances on a key now subscribe to
61
- * each other's writes, and to other tabs' — `subscribeToLocalStorageKey`, which
62
- * the grid-bookmark widget shares from its state model.
86
+ * each other's writes, and to other tabs' — `subscribeToLocalStorageKey`.
63
87
  *
64
88
  * The store is read on every notify rather than cached, so nothing here can go
65
89
  * stale against a `localStorage.clear()`. Which also means a functional update
@@ -100,6 +124,11 @@ export declare const SCROLL_PORT_HEIGHT_VAR = "--jbrowse-scrollport-height";
100
124
  * re-render all of them to produce a number only CSS reads.
101
125
  */
102
126
  export declare function useScrollPortHeightVar(): RefObject<HTMLDivElement | null>;
127
+ /**
128
+ * The nearest ancestor that actually scrolls `el`, or undefined if nothing
129
+ * above it does.
130
+ */
131
+ export declare function scrollPortOf(el: HTMLElement): HTMLElement | undefined;
103
132
  /**
104
133
  * Whether the element the ref is on is taller than the scroll port it sits in —
105
134
  * i.e. whether there is content a user could actually scroll to.
package/esm/util/hooks.js CHANGED
@@ -51,6 +51,49 @@ export function useFocusOnInteraction(ref, onInteract) {
51
51
  };
52
52
  }, [ref, stableOnInteract]);
53
53
  }
54
+ // Long enough that a load which is merely slow never says it, short enough to
55
+ // beat the point where someone decides the app is broken
56
+ const STALL_MS = 5000;
57
+ /**
58
+ * Has `key` stayed the same for five seconds? A loading screen passes
59
+ * everything it is showing, so any status at all — a new phase, another chunk
60
+ * of bytes — restarts the wait, and only a load that has stopped saying
61
+ * anything gets there. `ViewLoadingScreen` and the embed `ViewStatus` use it to
62
+ * name the file a stalled load is waiting on.
63
+ *
64
+ * The timeout stores the key it fired for rather than a boolean, so a key that
65
+ * has moved on is not stalled and the notice goes away with no write to undo.
66
+ */
67
+ export function useStalled(key) {
68
+ const [stalledKey, setStalledKey] = useState();
69
+ useEffect(() => {
70
+ const timer = setTimeout(() => {
71
+ setStalledKey(key);
72
+ }, STALL_MS);
73
+ return () => {
74
+ clearTimeout(timer);
75
+ };
76
+ }, [key]);
77
+ return stalledKey === key;
78
+ }
79
+ const SLOW_LOAD_MS = 2000;
80
+ /**
81
+ * Has the loading screen been up for two seconds? Until then it says only
82
+ * "Loading": a fast load flashes its phase labels too briefly to read, and a
83
+ * label glimpsed for a frame reads as a claim about what the app is doing.
84
+ */
85
+ export function useSlowLoad() {
86
+ const [slow, setSlow] = useState(false);
87
+ useEffect(() => {
88
+ const timer = setTimeout(() => {
89
+ setSlow(true);
90
+ }, SLOW_LOAD_MS);
91
+ return () => {
92
+ clearTimeout(timer);
93
+ };
94
+ }, []);
95
+ return slow;
96
+ }
54
97
  export function useDebounce(value, delay) {
55
98
  const [debouncedValue, setDebouncedValue] = useState(value);
56
99
  useEffect(() => {
@@ -112,6 +155,33 @@ export function useCreateOnce(create) {
112
155
  ref.current ??= { value: create() };
113
156
  return ref.current.value;
114
157
  }
158
+ /**
159
+ * `useCreateOnce` for an asynchronous factory: returns undefined until
160
+ * `create` resolves, and rethrows a rejection from render. The value can
161
+ * resolve after the component is gone — a caller whose value is expensive to
162
+ * leak should use product-core's `useAsyncEngineLifecycle`, which discards
163
+ * that late arrival.
164
+ */
165
+ export function useCreateOnceAsync(create) {
166
+ const started = useRef(false);
167
+ const [state, setState] = useState();
168
+ useEffect(() => {
169
+ if (!started.current) {
170
+ started.current = true;
171
+ create().then(value => {
172
+ setState({ value });
173
+ }, (error) => {
174
+ setState({ error });
175
+ });
176
+ }
177
+ // create is read on the first effect only, as in useCreateOnce
178
+ // eslint-disable-next-line @eslint-react/exhaustive-deps
179
+ }, []);
180
+ if (state && 'error' in state) {
181
+ throw state.error;
182
+ }
183
+ return state?.value;
184
+ }
115
185
  /**
116
186
  * Run `cleanup` when the component *really* unmounts.
117
187
  *
@@ -177,8 +247,7 @@ function resolveUpdate(value, prev) {
177
247
  * components on the same key each kept their own copy of it, so toggling a
178
248
  * setting in one BreakpointSplitView header left a second one open beside it
179
249
  * showing the old value until it remounted. Instances on a key now subscribe to
180
- * each other's writes, and to other tabs' — `subscribeToLocalStorageKey`, which
181
- * the grid-bookmark widget shares from its state model.
250
+ * each other's writes, and to other tabs' — `subscribeToLocalStorageKey`.
182
251
  *
183
252
  * The store is read on every notify rather than cached, so nothing here can go
184
253
  * stale against a `localStorage.clear()`. Which also means a functional update
@@ -302,7 +371,7 @@ export function useScrollPortHeightVar() {
302
371
  * The nearest ancestor that actually scrolls `el`, or undefined if nothing
303
372
  * above it does.
304
373
  */
305
- function scrollPortOf(el) {
374
+ export function scrollPortOf(el) {
306
375
  let node = el.parentElement;
307
376
  while (node) {
308
377
  const { overflowY } = getComputedStyle(node);
@@ -3,7 +3,7 @@ export { capitalizeFirst, pluralize, shorten, shorten2, truncateMiddle, } from '
3
3
  export { formatBytes } from './formatBytes.ts';
4
4
  export { getFillProps, getStrokeProps, stripAlpha } from './svgColorProps.ts';
5
5
  export { fetchAndMaybeUnzip, fetchAndMaybeUnzipText, isGzip, } from './fetchAndMaybeUnzip.ts';
6
- export { type AbstractDisplayModel, type AbstractMenuManager, type AbstractRootModel, type AbstractSessionModel, type AbstractTrackModel, type AbstractViewContainer, type AbstractViewModel, type AnimationMode, type AnyReactComponentType, type AppRootModel, type AssemblyHost, type AssemblyManager, type AugmentedRegion, AuthNeededError, type BasePlugin, type BlobLocation, type ClassReturnedBy, type ConnectionInstance, type DialogComponentType, type DialogHost, type DrawerPosition, type FileHandleLocation, type FileLocation, type InstanceTypeRestrictive, type JBrowsePlugin, type JBrowsePluginVersion, type LocalPathLocation, type NoAssemblyRegion, type NotificationLevel, type NotificationSink, type PaletteHost, type PreBlobLocation, type PreFileHandleLocation, type PreFileLocation, type PreLocalPathLocation, type PreUriLocation, type Region, type RenderingServices, type RpcCaller, type RpcHost, type RootModelWithInternetAccounts, type SelectionContainer, type SessionServices, type SessionWithAddAssembly, type SessionWithAddSessionTrack, type SessionWithPublishTrackConf, type SessionWithConfigEditing, type SessionWithConnectionEditing, type SessionWithConnections, type SessionWithDeleteTrackConf, type SessionWithDrawerWidgets, type SessionWithFocusedViewAndDrawerWidgets, type SessionWithPermanentPlugins, type SessionWithSessionPlugins, type SessionWithShareURL, type SessionWithViewReplacement, type SessionWithWidgets, type SnackAction, type TrackActionView, type TrackCatalog, type TrackContainer, type TrackViewModel, type TypeTestedByPredicate, type UriLocation, type Widget, type WidgetMap, addOrReplaceView, canReplaceView, isAbstractMenuManager, isAppRootModel, isAuthNeededException, isBlobLocation, isDisplayModel, isFileHandleLocation, isLocalPathLocation, isRootModelWithInternetAccounts, isSelectionContainer, isSessionModel, isSessionServices, isSessionModelWithConfigEditing, isSessionModelWithConnectionEditing, isSessionModelWithConnections, isSessionModelWithWidgets, isSessionWithAddAssembly, isSessionWithAddSessionTrack, isSessionWithAddTracks, isSessionWithPublishTrackConf, isSessionWithDeleteTrackConf, isSessionWithPermanentPlugins, isSessionWithSessionPlugins, isSessionWithSessionTracks, isSessionWithShareURL, isSessionWithViewReplacement, isTrackModel, isTrackViewModel, isUriLocation, isViewContainer, isViewModel, } from './types/index.ts';
6
+ export { type AbstractDisplayModel, type AbstractMenuManager, type AbstractRootModel, type AbstractSessionModel, type AbstractTrackModel, type AbstractViewContainer, type AbstractViewModel, type AnimationMode, type AnyReactComponentType, type AppRootModel, type AssemblyHost, type AssemblyManager, type AugmentedRegion, AuthNeededError, type BasePlugin, type BlobLocation, type ClassReturnedBy, type ConnectionInstance, type DialogComponentType, type DialogHost, type DrawerPosition, type FileHandleLocation, type FileLocation, type InstanceTypeRestrictive, type JBrowsePlugin, type JBrowsePluginVersion, type LocalPathLocation, type NoAssemblyRegion, type NotificationLevel, type NotificationSink, type PaletteHost, type PreBlobLocation, type PreFileHandleLocation, type PreFileLocation, type PreLocalPathLocation, type PreUriLocation, type Region, type RenderingServices, type RpcCaller, type RpcHost, type RootModelWithInternetAccounts, type SelectionContainer, type SessionServices, type SessionWithAddAssembly, type SessionWithAddSessionTrack, type SessionWithPublishTrackConf, type SessionWithConfigEditing, type SessionWithConnectionEditing, type SessionWithConnections, type SessionWithDeleteTrackConf, type SessionWithDrawerWidgets, type SessionWithFocusedViewAndDrawerWidgets, type SessionWithPermanentPlugins, type SessionWithSessionPlugins, type SessionWithShareURL, type SessionWithViewReplacement, type SessionWithWidgets, type SnackAction, type TrackActionView, type TrackCatalog, type TrackContainer, type TrackViewModel, type TypeTestedByPredicate, type UriLocation, type Widget, type WidgetMap, addOrReplaceView, canReplaceView, isAbstractMenuManager, isAppRootModel, isAuthNeededException, isBlobLocation, isDisplayModel, isFileHandleLocation, isLocalPathLocation, isRootModelWithInternetAccounts, isSelectionContainer, isSessionModel, isSessionServices, isSessionModelWithConfigEditing, isSessionModelWithConnectionEditing, isSessionModelWithConnections, isSessionModelWithWidgets, isSessionWithAddAssembly, isSessionWithAddSessionTrack, isSessionWithAddTracks, isSessionWithPublishTrackConf, isSessionWithDeleteTrackConf, isSessionWithMultipleViews, isSessionWithPermanentPlugins, isSessionWithSessionPlugins, isSessionWithSessionTracks, isSessionWithShareURL, isSessionWithViewReplacement, isTrackModel, isTrackViewModel, isUriLocation, isViewContainer, isViewModel, } from './types/index.ts';
7
7
  export { type PluginUpdate, type ResolvedPlugin, type StorePluginFailure, type StorePluginResolution, getPluginUpdate, installablePlugins, installedVersionFromUrl, isPluginInstalled, resolvePlugin, resolveStorePluginRefs, resolveStoreRefs, } from './pluginStore.ts';
8
8
  export { type PhaseFailure, type ProgressReporter, type RpcStatus, type StatusCallback, type StatusPhase, type StatusStream, type StatusWindow, type StatusWithProgress, createProgressReporter, createStatusFanOut, createStatusWindow, downloadStatus, progressLabel, statusFraction, statusMessageText, statusProgressLabel, statusReading, statusSource, throttleStatusEmits, updateStatus, withProgress, } from './progress.ts';
9
9
  export { calculateRedispatchRange, doesIntersect2, intersection2, } from './range.ts';
@@ -22,11 +22,11 @@ export { MAX_ZOOM_RATE_PER_MS, SCROLL_ZOOM_FACTOR_DIVISOR, ZOOM_ACTIVE_WINDOW_MS
22
22
  export { avg, clamp, getDisplayStr, getNumberGrouping, max, maxFinite, min, minmax, polarToCartesian, radToDeg, reducePrecision, setNumberGrouping, sum, toLocale, } from './numericUtils.ts';
23
23
  export { type MinimalRegion, bpSpanPx, bpToPx, bytesForRegions, featureSpanPx, getBpDisplayStr, getTickDisplayStr, parseBpString, } from './bpUtils.ts';
24
24
  export { type BasicFeature, gatherOverlaps, mergeIntervals, } from './intervals.ts';
25
- export { clampToContig } from './clampToContig.ts';
26
- export { animationAllowed } from './animationAllowed.ts';
25
+ export { clampToContig, clampToListedContig } from './clampToContig.ts';
26
+ export { MORPH_DURATION_MS, animationAllowed, easeInOutCubic, morphClockMs, } from './animationAllowed.ts';
27
27
  export { springAnimate } from './springAnimate.ts';
28
28
  export { localStorageAvailable, localStorageGetBoolean, localStorageGetItem, localStorageGetJSON, localStorageGetNumber, localStorageGetStringArray, localStorageRemoveItem, localStorageSetBoolean, localStorageSetItem, localStorageSetJSON, localStorageSetNumber, notifyLocalStorageKey, subscribeToLocalStorageKey, } from './localStorage.ts';
29
- export { renameRegionIfNeeded, renameRegionsIfNeeded } from './renameRegions.ts';
29
+ export { renameComparativeRegions, renameRegionIfNeeded, renameRegionsIfNeeded, } from './renameRegions.ts';
30
30
  export { addAndShowTrack } from './addAndShowTrack.ts';
31
31
  export { addTrackFromWidget, containerDisplaysAssembly, finishAddTrack, type AddTrackWidgetSelf, type AddTrackWorkflowModel, } from './addTrackFromWidget.ts';
32
32
  export { namesTemporaryAssembly } from './temporaryAssembly.ts';
@@ -37,16 +37,15 @@ export { indexedDBAvailable, isElectron, isNode, rIC } from './environment.ts';
37
37
  export { isWebWorker } from './isWebWorker.ts';
38
38
  export { sessionStorageAvailable, sessionStorageGetItem, sessionStorageRemoveItem, sessionStorageSetItem, } from './sessionStorage.ts';
39
39
  export { isObject } from './objectUtils.ts';
40
- export { openPromotableDisplays } from './openDisplays.ts';
41
40
  export { type ReorderDirection, applyOrderWithin, reorder, reorderWithin, } from './reorder.ts';
42
41
  export { getStr } from './getStr.ts';
43
42
  export { downloadPhase, getLocationUri, resolveUri } from './getLocationUri.ts';
44
43
  export { measureGridWidth, resolveSelectedIds } from './dataGridUtils.ts';
45
44
  export { isRpcResult } from './rpc.ts';
46
45
  export { aesDecrypt, aesEncrypt, sha256, sha256Base64, sha256Base64Url, toBase64, toBase64Url, } from './crypto.ts';
47
- export { type FeatureWidgetTypeRef, notifyFeatureDetailsMiss, openFeatureWidget, } from './openFeatureWidget.ts';
46
+ export { type FeatureWidgetTypeRef, type ParentFeatureSummary, notifyFeatureDetailsMiss, openFeatureWidget, } from './openFeatureWidget.ts';
48
47
  export { withFeatureDetails } from './withFeatureDetails.ts';
49
- export { canonicalizeViewRefName, findParentThat, findParentThatIs, getAssemblyHost, getContainingDisplay, getContainingTrack, getContainingView, getEnv, getRenderingServices, getSession, hashCode, objectHash, } from './mstUtils.ts';
48
+ export { canonicalizeViewRefName, findParentThat, findParentThatIs, getAssemblyHost, getContainingDisplay, getContainingTrack, getContainingView, getEnv, getRenderingServices, launchOrReplaceView, getSession, hashCode, objectHash, } from './mstUtils.ts';
50
49
  export { getDialogHost, getNotificationSink, getPaletteHost, getRpcHost, getSessionServices, } from './sessionServices.ts';
51
50
  /**
52
51
  * Convert a browser File (from a drop zone or file input) into a FileLocation:
@@ -56,7 +55,6 @@ export declare function fileToLocation(file: File): FileLocation;
56
55
  export { type Frame, complement, complementTable, defaultStarts, getFrame, revcom, reverse, stitch, } from './seqUtils.ts';
57
56
  export { revlist } from './revlist.ts';
58
57
  export { useCreateOnce, useDebounce, useFinalUnmount, useLocalStorage, useWidthSetter, } from './hooks.ts';
59
- export { renderToStaticMarkup } from './renderToStaticMarkup.ts';
60
58
  export { codonTable, defaultCodonTable, generateCodonTable, } from './geneticCodes.ts';
61
59
  export { IUPAC_MOTIF_REGEX, isPalindromic, iupacToRegex, reverseComplementIupac, } from './iupac.ts';
62
60
  export { type MotifListParse, type MotifParseError, type ParsedMotif, parseMotifList, } from './parseMotifList.ts';
@@ -67,15 +65,17 @@ export declare function testAdapter(fileName: string, regex: RegExp, adapterHint
67
65
  export { type Feature, type SimpleFeatureSerialized, type SimpleFeatureSerializedNoId, default as SimpleFeature, isFeature, } from './simpleFeature.ts';
68
66
  export { saveAs } from './FileSaver/index.ts';
69
67
  export { type SaveSvgAsImageOptions, saveSvgAsImage, svgHtmlToPngBlob, } from '../svg/saveSvgAsImage.ts';
70
- export { type ActiveFetch, type StatusChannel, type StatusReporter, createStatusChannel, createStopTokenRotation, } from './createStopTokenRotation.ts';
68
+ export { type ActiveFetch, type StatusChannel, type StatusReporter, createStatusChannel, createAbortRotation, } from './createAbortRotation.ts';
71
69
  export { createSharedSetup } from './cachedSetup.ts';
70
+ export { scheduleDetachedDestroy } from './scheduleDetachedDestroy.ts';
72
71
  export { isDataCurrent } from './isDataCurrent.ts';
73
72
  export { handleFetchError, isAbortException, makeAbortError, } from './aborting.ts';
74
73
  export { linkify } from './linkify.ts';
74
+ export { isGeneLikeType, isSequenceMatchType } from './featureTypes.ts';
75
75
  export { locStringsToRegions } from './locStringsToRegions.ts';
76
76
  export type { RefNameSource } from './locStringsToRegions.ts';
77
77
  export { type ParsedLocString, UnknownRefNameError, assembleLocString, assembleLocStringRaw, assembleLocStrings, compareLocStrings, compareLocs, parseLocString, parseLocStringOneBased, stringify, } from './locString.ts';
78
- export { type LastStopTokenCheck, type StopToken, type StopTokenChecker, type StopTokenSignal, checkStopToken, checkStopTokenThrottled, createStopToken, createStopTokenChecker, hasSharedArrayBuffer, isStopToken, isStopped, markStopTokenStopped, registerStopTokenBroadcaster, stopStopToken, stopTokenSignal, withStopTokenCheck, withStopTokenSignal, } from './stopToken.ts';
78
+ export { type AbortBreakpoint, checkAbortSignal, createAbortBreakpoint, withAbortCheck, } from './aborting.ts';
79
79
  export { type AddTrackComponentModel, type AddTrackComponentProps, adapterNeedsAddTrackComponent, addAddTrackComponent, } from './addTrackComponent.ts';
80
80
  export { adapterConfigFromSpec } from './formatGuessers.ts';
81
81
  export { type AdapterConfig, type AdapterGuesser, type LooseTrackInput, type TrackTypeGuesser, UNKNOWN, UNSUPPORTED, addAdapterGuesser, addTrackTypeGuesser, clearFileFromCache, ensureFileHandleReady, expandLooseTrackConfig, findFileHandleIds, generateUnknownTrackConf, generateUnsupportedTrackConf, getBlob, getBlobMap, getConfAssemblyNames, getFileFromCache, getFileName, getRpcSessionId, getTrackAssemblyNames, getTrackName, guessAdapter, guessTrackConf, guessTrackType, hasFileHandlesInCache, hideTrackGeneric, isLooseTrackConfig, makeIndex, makeIndexType, restoreFileHandles, restoreFileHandlesFromSnapshot, setBlobMap, setFileInCache, showTrackGeneric, storeBlobLocation, storeFileHandleLocation, stripFileExtension, stripTrackIds, toggleTrackGeneric, } from './tracks.ts';
@@ -84,5 +84,5 @@ export { IntervalTree } from './IntervalTree.ts';
84
84
  export { cmpStr } from './cmpStr.ts';
85
85
  export { diffTrackConfig, flattenTrackConfigDelta, mergeTrackConfig, } from './trackConfigDelta.ts';
86
86
  export type { TrackConfigChange } from './trackConfigDelta.ts';
87
- export { BEZIER_CONNECTOR_MAX_REACH_PX, bezierConnectorPath, } from './bezierConnector.ts';
87
+ export { BEZIER_CONNECTOR_MAX_REACH_PX, CUBIC_APEX_RATIO, bezierConnectorPath, } from './bezierConnector.ts';
88
88
  export { type AlignmentData, type DiagonalizationResult, diagonalizeRegions, } from './diagonalizeRegions.ts';
package/esm/util/index.js CHANGED
@@ -12,7 +12,7 @@ export { capitalizeFirst, pluralize, shorten, shorten2, truncateMiddle, } from '
12
12
  export { formatBytes } from './formatBytes.js';
13
13
  export { getFillProps, getStrokeProps, stripAlpha } from './svgColorProps.js';
14
14
  export { fetchAndMaybeUnzip, fetchAndMaybeUnzipText, isGzip, } from './fetchAndMaybeUnzip.js';
15
- export { AuthNeededError, addOrReplaceView, canReplaceView, isAbstractMenuManager, isAppRootModel, isAuthNeededException, isBlobLocation, isDisplayModel, isFileHandleLocation, isLocalPathLocation, isRootModelWithInternetAccounts, isSelectionContainer, isSessionModel, isSessionServices, isSessionModelWithConfigEditing, isSessionModelWithConnectionEditing, isSessionModelWithConnections, isSessionModelWithWidgets, isSessionWithAddAssembly, isSessionWithAddSessionTrack, isSessionWithAddTracks, isSessionWithPublishTrackConf, isSessionWithDeleteTrackConf, isSessionWithPermanentPlugins, isSessionWithSessionPlugins, isSessionWithSessionTracks, isSessionWithShareURL, isSessionWithViewReplacement, isTrackModel, isTrackViewModel, isUriLocation, isViewContainer, isViewModel, } from './types/index.js';
15
+ export { AuthNeededError, addOrReplaceView, canReplaceView, isAbstractMenuManager, isAppRootModel, isAuthNeededException, isBlobLocation, isDisplayModel, isFileHandleLocation, isLocalPathLocation, isRootModelWithInternetAccounts, isSelectionContainer, isSessionModel, isSessionServices, isSessionModelWithConfigEditing, isSessionModelWithConnectionEditing, isSessionModelWithConnections, isSessionModelWithWidgets, isSessionWithAddAssembly, isSessionWithAddSessionTrack, isSessionWithAddTracks, isSessionWithPublishTrackConf, isSessionWithDeleteTrackConf, isSessionWithMultipleViews, isSessionWithPermanentPlugins, isSessionWithSessionPlugins, isSessionWithSessionTracks, isSessionWithShareURL, isSessionWithViewReplacement, isTrackModel, isTrackViewModel, isUriLocation, isViewContainer, isViewModel, } from './types/index.js';
16
16
  export { getPluginUpdate, installablePlugins, installedVersionFromUrl, isPluginInstalled, resolvePlugin, resolveStorePluginRefs, resolveStoreRefs, } from './pluginStore.js';
17
17
  export { createProgressReporter, createStatusFanOut, createStatusWindow, downloadStatus, progressLabel, statusFraction, statusMessageText, statusProgressLabel, statusReading, statusSource, throttleStatusEmits, updateStatus, withProgress, } from './progress.js';
18
18
  export { calculateRedispatchRange, doesIntersect2, intersection2, } from './range.js';
@@ -29,11 +29,11 @@ export { MAX_ZOOM_RATE_PER_MS, SCROLL_ZOOM_FACTOR_DIVISOR, ZOOM_ACTIVE_WINDOW_MS
29
29
  export { avg, clamp, getDisplayStr, getNumberGrouping, max, maxFinite, min, minmax, polarToCartesian, radToDeg, reducePrecision, setNumberGrouping, sum, toLocale, } from './numericUtils.js';
30
30
  export { bpSpanPx, bpToPx, bytesForRegions, featureSpanPx, getBpDisplayStr, getTickDisplayStr, parseBpString, } from './bpUtils.js';
31
31
  export { gatherOverlaps, mergeIntervals, } from './intervals.js';
32
- export { clampToContig } from './clampToContig.js';
33
- export { animationAllowed } from './animationAllowed.js';
32
+ export { clampToContig, clampToListedContig } from './clampToContig.js';
33
+ export { MORPH_DURATION_MS, animationAllowed, easeInOutCubic, morphClockMs, } from './animationAllowed.js';
34
34
  export { springAnimate } from './springAnimate.js';
35
35
  export { localStorageAvailable, localStorageGetBoolean, localStorageGetItem, localStorageGetJSON, localStorageGetNumber, localStorageGetStringArray, localStorageRemoveItem, localStorageSetBoolean, localStorageSetItem, localStorageSetJSON, localStorageSetNumber, notifyLocalStorageKey, subscribeToLocalStorageKey, } from './localStorage.js';
36
- export { renameRegionIfNeeded, renameRegionsIfNeeded } from './renameRegions.js';
36
+ export { renameComparativeRegions, renameRegionIfNeeded, renameRegionsIfNeeded, } from './renameRegions.js';
37
37
  export { addAndShowTrack } from './addAndShowTrack.js';
38
38
  export { addTrackFromWidget, containerDisplaysAssembly, finishAddTrack, } from './addTrackFromWidget.js';
39
39
  export { namesTemporaryAssembly } from './temporaryAssembly.js';
@@ -44,7 +44,6 @@ export { indexedDBAvailable, isElectron, isNode, rIC } from './environment.js';
44
44
  export { isWebWorker } from './isWebWorker.js';
45
45
  export { sessionStorageAvailable, sessionStorageGetItem, sessionStorageRemoveItem, sessionStorageSetItem, } from './sessionStorage.js';
46
46
  export { isObject } from './objectUtils.js';
47
- export { openPromotableDisplays } from './openDisplays.js';
48
47
  export { applyOrderWithin, reorder, reorderWithin, } from './reorder.js';
49
48
  export { getStr } from './getStr.js';
50
49
  export { downloadPhase, getLocationUri, resolveUri } from './getLocationUri.js';
@@ -53,7 +52,7 @@ export { isRpcResult } from './rpc.js';
53
52
  export { aesDecrypt, aesEncrypt, sha256, sha256Base64, sha256Base64Url, toBase64, toBase64Url, } from './crypto.js';
54
53
  export { notifyFeatureDetailsMiss, openFeatureWidget, } from './openFeatureWidget.js';
55
54
  export { withFeatureDetails } from './withFeatureDetails.js';
56
- export { canonicalizeViewRefName, findParentThat, findParentThatIs, getAssemblyHost, getContainingDisplay, getContainingTrack, getContainingView, getEnv, getRenderingServices, getSession, hashCode, objectHash, } from './mstUtils.js';
55
+ export { canonicalizeViewRefName, findParentThat, findParentThatIs, getAssemblyHost, getContainingDisplay, getContainingTrack, getContainingView, getEnv, getRenderingServices, launchOrReplaceView, getSession, hashCode, objectHash, } from './mstUtils.js';
57
56
  export { getDialogHost, getNotificationSink, getPaletteHost, getRpcHost, getSessionServices, } from './sessionServices.js';
58
57
  // this is recommended in a later comment in
59
58
  // https://github.com/electron/electron/issues/2288 for detecting electron in a
@@ -91,7 +90,6 @@ export { revlist } from './revlist.js';
91
90
  // without it that is `(0, PR.useLocalStorage) is not a function` when the panel
92
91
  // renders. The implementations never went anywhere -- only these lines did.
93
92
  export { useCreateOnce, useDebounce, useFinalUnmount, useLocalStorage, useWidthSetter, } from './hooks.js';
94
- export { renderToStaticMarkup } from './renderToStaticMarkup.js';
95
93
  export { codonTable, defaultCodonTable, generateCodonTable, } from './geneticCodes.js';
96
94
  export { IUPAC_MOTIF_REGEX, isPalindromic, iupacToRegex, reverseComplementIupac, } from './iupac.js';
97
95
  export { parseMotifList, } from './parseMotifList.js';
@@ -121,6 +119,7 @@ export function isSupportedIndexingAdapter(type = '') {
121
119
  // needing insertion order builds its own Map (see tree-sidebar's CLAUDE.md).
122
120
  export function groupBy(array, predicate) {
123
121
  const result = Object.create(null);
122
+ // eslint-disable-next-line unicorn/prefer-group-by -- Object.groupBy types its result Partial, which would widen every caller's Object.values to `T[] | undefined`
124
123
  for (const value of array) {
125
124
  const t = predicate(value);
126
125
  result[t] ??= [];
@@ -137,17 +136,19 @@ export function testAdapter(fileName, regex, adapterHint, expected) {
137
136
  export { default as SimpleFeature, isFeature, } from './simpleFeature.js';
138
137
  export { saveAs } from './FileSaver/index.js';
139
138
  export { saveSvgAsImage, svgHtmlToPngBlob, } from '../svg/saveSvgAsImage.js';
140
- export { createStatusChannel, createStopTokenRotation, } from './createStopTokenRotation.js';
139
+ export { createStatusChannel, createAbortRotation, } from './createAbortRotation.js';
141
140
  // `installFetch` is deliberately NOT re-exported here: it reaches `getSession`
142
141
  // through `fetchContext.ts`, which imports this barrel, so exporting it makes
143
142
  // the barrel initialize itself. Import it from `@jbrowse/core/util/installFetch`.
144
143
  export { createSharedSetup } from './cachedSetup.js';
144
+ export { scheduleDetachedDestroy } from './scheduleDetachedDestroy.js';
145
145
  export { isDataCurrent } from './isDataCurrent.js';
146
146
  export { handleFetchError, isAbortException, makeAbortError, } from './aborting.js';
147
147
  export { linkify } from './linkify.js';
148
+ export { isGeneLikeType, isSequenceMatchType } from './featureTypes.js';
148
149
  export { locStringsToRegions } from './locStringsToRegions.js';
149
150
  export { UnknownRefNameError, assembleLocString, assembleLocStringRaw, assembleLocStrings, compareLocStrings, compareLocs, parseLocString, parseLocStringOneBased, stringify, } from './locString.js';
150
- export { checkStopToken, checkStopTokenThrottled, createStopToken, createStopTokenChecker, hasSharedArrayBuffer, isStopToken, isStopped, markStopTokenStopped, registerStopTokenBroadcaster, stopStopToken, stopTokenSignal, withStopTokenCheck, withStopTokenSignal, } from './stopToken.js';
151
+ export { checkAbortSignal, createAbortBreakpoint, withAbortCheck, } from './aborting.js';
151
152
  export { adapterNeedsAddTrackComponent, addAddTrackComponent, } from './addTrackComponent.js';
152
153
  export { adapterConfigFromSpec } from './formatGuessers.js';
153
154
  export { UNKNOWN, UNSUPPORTED, addAdapterGuesser, addTrackTypeGuesser, clearFileFromCache, ensureFileHandleReady, expandLooseTrackConfig, findFileHandleIds, generateUnknownTrackConf, generateUnsupportedTrackConf, getBlob, getBlobMap, getConfAssemblyNames, getFileFromCache, getFileName, getRpcSessionId, getTrackAssemblyNames, getTrackName, guessAdapter, guessTrackConf, guessTrackType, hasFileHandlesInCache, hideTrackGeneric, isLooseTrackConfig, makeIndex, makeIndexType, restoreFileHandles, restoreFileHandlesFromSnapshot, setBlobMap, setFileInCache, showTrackGeneric, storeBlobLocation, storeFileHandleLocation, stripFileExtension, stripTrackIds, toggleTrackGeneric, } from './tracks.js';
@@ -155,5 +156,5 @@ export { getFileHandle, isFileSystemAccessSupported, storeFileHandle, verifyPerm
155
156
  export { IntervalTree } from './IntervalTree.js';
156
157
  export { cmpStr } from './cmpStr.js';
157
158
  export { diffTrackConfig, flattenTrackConfigDelta, mergeTrackConfig, } from './trackConfigDelta.js';
158
- export { BEZIER_CONNECTOR_MAX_REACH_PX, bezierConnectorPath, } from './bezierConnector.js';
159
+ export { BEZIER_CONNECTOR_MAX_REACH_PX, CUBIC_APEX_RATIO, bezierConnectorPath, } from './bezierConnector.js';
159
160
  export { diagonalizeRegions, } from './diagonalizeRegions.js';
@@ -1,35 +1,5 @@
1
1
  import type { FileLocation } from './types/data.ts';
2
- /**
3
- * Every conventional spelling of an index file, for the docs that describe this
4
- * behavior. Kept beside {@link indexCandidateNames}, which is the list actually
5
- * probed, so the two are edited together.
6
- */
7
- export declare const indexSpellings: {
8
- name: string;
9
- writtenBy: string;
10
- }[];
11
- /**
12
- * The index filenames worth looking for beside `fileName`, best guess first.
13
- *
14
- * One data file has several names its index might carry, and picking only the
15
- * first left everyone else with a missing-file error naming a path they never
16
- * wrote:
17
- *
18
- * - `<file>.bai` / `.crai` / `.tbi` is what samtools and tabix write
19
- * - `<file>.csi` is what htslib writes for a reference over 512 Mb, and on
20
- * request at any size
21
- * - `reads.bai` beside `reads.bam` is what Picard and GATK write, in place of
22
- * samtools' `reads.bam.bai`
23
- *
24
- * Empty for a file type that carries no sibling index (BigWig, BigBed, hic),
25
- * which is how a caller knows not to go looking.
26
- *
27
- * `jbrowse-cli` answers the same question in `siblingSidecar`
28
- * (`commands/add-track-utils/adapter-utils.ts`) rather than calling this: it
29
- * carries no `@jbrowse/core` dependency, so `npm i -g @jbrowse/cli` stays a CLI
30
- * rather than a copy of the app. Change one, change the other.
31
- */
32
- export declare function indexCandidateNames(fileName: string): string[];
2
+ export { indexCandidateNames, indexSpellings } from '@jbrowse/add-track-core';
33
3
  /**
34
4
  * `location` with its filename replaced, i.e. the sibling of a data file.
35
5
  *
@@ -1,66 +1,8 @@
1
+ import { indexCandidateNames } from '@jbrowse/add-track-core';
1
2
  import { getFileName } from './getFileName.js';
2
- /**
3
- * Every conventional spelling of an index file, for the docs that describe this
4
- * behavior. Kept beside {@link indexCandidateNames}, which is the list actually
5
- * probed, so the two are edited together.
6
- */
7
- export const indexSpellings = [
8
- {
9
- name: '`<file>.tbi`, `<file>.bai`, `<file>.crai`',
10
- writtenBy: 'samtools, tabix',
11
- },
12
- {
13
- name: '`<file>.csi`',
14
- writtenBy: 'htslib, for a reference over 512 Mb and on request at any size',
15
- },
16
- {
17
- name: '`reads.bai` beside `reads.bam`',
18
- writtenBy: 'Picard, GATK',
19
- },
20
- ];
21
- /**
22
- * The index filenames worth looking for beside `fileName`, best guess first.
23
- *
24
- * One data file has several names its index might carry, and picking only the
25
- * first left everyone else with a missing-file error naming a path they never
26
- * wrote:
27
- *
28
- * - `<file>.bai` / `.crai` / `.tbi` is what samtools and tabix write
29
- * - `<file>.csi` is what htslib writes for a reference over 512 Mb, and on
30
- * request at any size
31
- * - `reads.bai` beside `reads.bam` is what Picard and GATK write, in place of
32
- * samtools' `reads.bam.bai`
33
- *
34
- * Empty for a file type that carries no sibling index (BigWig, BigBed, hic),
35
- * which is how a caller knows not to go looking.
36
- *
37
- * `jbrowse-cli` answers the same question in `siblingSidecar`
38
- * (`commands/add-track-utils/adapter-utils.ts`) rather than calling this: it
39
- * carries no `@jbrowse/core` dependency, so `npm i -g @jbrowse/cli` stays a CLI
40
- * rather than a copy of the app. Change one, change the other.
41
- */
42
- export function indexCandidateNames(fileName) {
43
- const lower = fileName.toLowerCase();
44
- if (lower.endsWith('.bam')) {
45
- return [
46
- `${fileName}.bai`,
47
- `${fileName}.csi`,
48
- fileName.replace(/\.bam$/i, '.bai'),
49
- ];
50
- }
51
- if (lower.endsWith('.cram')) {
52
- return [`${fileName}.crai`, fileName.replace(/\.cram$/i, '.crai')];
53
- }
54
- // the tabix family is spelled by its compression, not its content: a .gz here
55
- // is a bgzipped VCF/GFF/BED/SAM, all of which index the same two ways. `.bgz`
56
- // is the same file under the name htslib's own tools give it, so it takes the
57
- // same candidates — every format guesser accepts `\.b?gz$`, and matching only
58
- // `.gz` left a `calls.vcf.bgz` with no detection at all
59
- if (/\.b?gz$/.test(lower)) {
60
- return [`${fileName}.tbi`, `${fileName}.csi`];
61
- }
62
- return [];
63
- }
3
+ // defined in `@jbrowse/add-track-core`, which is framework-free so `jbrowse-cli`
4
+ // reads the same list; re-exported because this subpath serves them to plugins
5
+ export { indexCandidateNames, indexSpellings } from '@jbrowse/add-track-core';
64
6
  /**
65
7
  * `location` with its filename replaced, i.e. the sibling of a data file.
66
8
  *
@@ -73,7 +15,7 @@ export function siblingLocation(location, fileName) {
73
15
  const replaceLast = (path) =>
74
16
  // the separator is kept: a Windows local path uses backslashes and a URI
75
17
  // never does, so rebuilding with '/' would corrupt one of them
76
- path.replace(/[^/\\]*$/, fileName);
18
+ path.replace(/[^/\\]*$/, () => fileName);
77
19
  if (location.locationType === 'UriLocation') {
78
20
  return { ...location, uri: replaceLast(location.uri) };
79
21
  }