@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,5 +1,5 @@
1
1
  import type PluginManager from '../PluginManager.ts';
2
- import type { AbstractDisplayModel, AbstractSessionModel, AbstractTrackModel, AbstractViewModel } from './types/index.ts';
2
+ import type { AbstractDisplayModel, AbstractSessionModel, AbstractViewContainer, AbstractTrackModel, AbstractViewModel } from './types/index.ts';
3
3
  import type { AssemblyHost, RenderingServices } from './types/renderingServices.ts';
4
4
  import type { IAnyStateTreeNode } from '@jbrowse/mobx-state-tree';
5
5
  export { findParentThat, findParentThatIs, getRpcSessionId, } from './parentWalk.ts';
@@ -49,33 +49,30 @@ export declare function getRenderingServices(node: IAnyStateTreeNode): Rendering
49
49
  /**
50
50
  * #api core/util
51
51
  * Resolve user-authored refName text against the assembly of the view
52
- * containing `node` — the one normalization layer, which resolves aliases and
53
- * casing together. Falls back to the input when the assembly is absent or its
54
- * aliases have not loaded.
52
+ * containing `node`, resolving aliases and casing together. Falls back to the
53
+ * input when the assembly is absent or its aliases have not loaded.
55
54
  *
56
- * Keyed off the VIEW's assembly rather than the track's, because the view is
57
- * what the comparison is against: displayed regions, loaded regions and blocks
58
- * all carry the refNames the view laid out.
55
+ * Uses the view's assembly, not the track's, because displayed regions, loaded
56
+ * regions and blocks all carry the refNames the view laid out.
59
57
  *
60
- * Reach for this wherever a refName a *person* wrote is about to be compared
61
- * against regions, features or blocks, which carry the assembly's canonical
62
- * name. A refName a display copied off a region is canonical already and needs
63
- * nothing; one that arrived in a session spec, a config slot or a URL is
64
- * whatever the author read out of the location box.
58
+ * Call it wherever a refName a *person* wrote is about to be compared against
59
+ * regions, features or blocks, which carry the assembly's canonical name. A
60
+ * refName a display copied off a region is already canonical. One from a
61
+ * session spec, a config slot or a URL is whatever the author typed.
65
62
  *
66
- * Skipping it fails silently and, worse, assembly-dependently: `chr12` matches
67
- * on an assembly canonicalized `chr12` and matches nothing on one canonicalized
68
- * `12`, so the same spec key works on one config and quietly does nothing on
69
- * the next, with no error for anyone to act on.
63
+ * Without it, matching depends on the assembly: `chr12` matches on an assembly
64
+ * canonicalized `chr12` and matches nothing on one canonicalized `12`. The
65
+ * same spec key works on one config and does nothing on the next, with no
66
+ * error.
70
67
  *
71
- * Resolves through `getCanonicalRefName2`, whose fallback is what keeps a spec
72
- * read before the alias file has loaded from throwing — and the getters that
73
- * read user specs do run from the first render.
68
+ * Resolves through `getCanonicalRefName2`, which falls back to the input
69
+ * instead of throwing when a spec is read before the alias file has loaded.
70
+ * The getters that read user specs run from the first render.
74
71
  *
75
- * Takes a refName, not a spec that might hold one: the resolver reads
76
- * `refName.toLowerCase()`, so anything else throws once the aliases are there,
77
- * and a caller reading an untyped `frozen` slot has to establish that it names
78
- * a refName at all before this is the right question to ask of it.
72
+ * Takes a refName, not a spec that might hold one. The resolver calls
73
+ * `refName.toLowerCase()`, so any other value throws once the aliases have
74
+ * loaded, and a caller reading an untyped `frozen` slot must first check that
75
+ * the value is a refName.
79
76
  */
80
77
  export declare function canonicalizeViewRefName(node: IAnyStateTreeNode, refName: string): string;
81
78
  /**
@@ -85,5 +82,16 @@ export declare function canonicalizeViewRefName(node: IAnyStateTreeNode, refName
85
82
  export declare function getEnv(obj: IAnyStateTreeNode): {
86
83
  pluginManager: PluginManager;
87
84
  };
85
+ /**
86
+ * #api core/util
87
+ * `addOrReplaceView` for view types whose state model may be lazily loaded;
88
+ * the synchronous `addOrReplaceView` requires it loaded already.
89
+ */
90
+ export declare function launchOrReplaceView(args: {
91
+ session: AbstractViewContainer;
92
+ typeName: string;
93
+ initialState?: Record<string, unknown>;
94
+ replacing?: AbstractViewModel;
95
+ }): Promise<AbstractViewModel>;
88
96
  export declare function hashCode(str: string): number;
89
97
  export declare function objectHash(obj: object): string;
@@ -1,6 +1,6 @@
1
- import { getEnv as getEnvMST } from '@jbrowse/mobx-state-tree';
1
+ import { getEnv as getEnvMST, isStateTreeNode } from '@jbrowse/mobx-state-tree';
2
2
  import { cachedParent, findParentThatIs } from './parentWalk.js';
3
- import { isDisplayModel, isSessionModel, isTrackModel, isViewModel, } from './types/index.js';
3
+ import { addOrReplaceView, isDisplayModel, isSessionModel, isTrackModel, isViewModel, } from './types/index.js';
4
4
  export { findParentThat, findParentThatIs, getRpcSessionId, } from './parentWalk.js';
5
5
  const containingDisplayCache = new WeakMap();
6
6
  const containingTrackCache = new WeakMap();
@@ -64,33 +64,30 @@ export function getRenderingServices(node) {
64
64
  /**
65
65
  * #api core/util
66
66
  * Resolve user-authored refName text against the assembly of the view
67
- * containing `node` — the one normalization layer, which resolves aliases and
68
- * casing together. Falls back to the input when the assembly is absent or its
69
- * aliases have not loaded.
67
+ * containing `node`, resolving aliases and casing together. Falls back to the
68
+ * input when the assembly is absent or its aliases have not loaded.
70
69
  *
71
- * Keyed off the VIEW's assembly rather than the track's, because the view is
72
- * what the comparison is against: displayed regions, loaded regions and blocks
73
- * all carry the refNames the view laid out.
70
+ * Uses the view's assembly, not the track's, because displayed regions, loaded
71
+ * regions and blocks all carry the refNames the view laid out.
74
72
  *
75
- * Reach for this wherever a refName a *person* wrote is about to be compared
76
- * against regions, features or blocks, which carry the assembly's canonical
77
- * name. A refName a display copied off a region is canonical already and needs
78
- * nothing; one that arrived in a session spec, a config slot or a URL is
79
- * whatever the author read out of the location box.
73
+ * Call it wherever a refName a *person* wrote is about to be compared against
74
+ * regions, features or blocks, which carry the assembly's canonical name. A
75
+ * refName a display copied off a region is already canonical. One from a
76
+ * session spec, a config slot or a URL is whatever the author typed.
80
77
  *
81
- * Skipping it fails silently and, worse, assembly-dependently: `chr12` matches
82
- * on an assembly canonicalized `chr12` and matches nothing on one canonicalized
83
- * `12`, so the same spec key works on one config and quietly does nothing on
84
- * the next, with no error for anyone to act on.
78
+ * Without it, matching depends on the assembly: `chr12` matches on an assembly
79
+ * canonicalized `chr12` and matches nothing on one canonicalized `12`. The
80
+ * same spec key works on one config and does nothing on the next, with no
81
+ * error.
85
82
  *
86
- * Resolves through `getCanonicalRefName2`, whose fallback is what keeps a spec
87
- * read before the alias file has loaded from throwing — and the getters that
88
- * read user specs do run from the first render.
83
+ * Resolves through `getCanonicalRefName2`, which falls back to the input
84
+ * instead of throwing when a spec is read before the alias file has loaded.
85
+ * The getters that read user specs run from the first render.
89
86
  *
90
- * Takes a refName, not a spec that might hold one: the resolver reads
91
- * `refName.toLowerCase()`, so anything else throws once the aliases are there,
92
- * and a caller reading an untyped `frozen` slot has to establish that it names
93
- * a refName at all before this is the right question to ask of it.
87
+ * Takes a refName, not a spec that might hold one. The resolver calls
88
+ * `refName.toLowerCase()`, so any other value throws once the aliases have
89
+ * loaded, and a caller reading an untyped `frozen` slot must first check that
90
+ * the value is a refName.
94
91
  */
95
92
  export function canonicalizeViewRefName(node, refName) {
96
93
  const { assemblyManager } = getSession(node);
@@ -105,6 +102,24 @@ export function canonicalizeViewRefName(node, refName) {
105
102
  export function getEnv(obj) {
106
103
  return getEnvMST(obj);
107
104
  }
105
+ /**
106
+ * #api core/util
107
+ * `addOrReplaceView` for view types whose state model may be lazily loaded;
108
+ * the synchronous `addOrReplaceView` requires it loaded already.
109
+ */
110
+ export async function launchOrReplaceView(args) {
111
+ // a test's fake session is not an MST node; addView's own guard is the
112
+ // error path there
113
+ if (isStateTreeNode(args.session)) {
114
+ const { pluginManager } = getEnvMST(args.session);
115
+ await pluginManager?.getViewType(args.typeName).loadStateModel();
116
+ // the displays of the tracks a launch opens with are dynamic imports too
117
+ await pluginManager?.preloadSessionTypes({
118
+ views: [{ type: args.typeName, ...args.initialState }],
119
+ });
120
+ }
121
+ return addOrReplaceView(args);
122
+ }
108
123
  export function hashCode(str) {
109
124
  let hash = 0;
110
125
  if (str.length === 0) {
@@ -10,6 +10,13 @@ export declare function getNumberGrouping(): boolean;
10
10
  export declare function toLocale(n: number): string;
11
11
  export declare function toPrecision(s: number, n?: number): number;
12
12
  export declare function reducePrecision(s: number, n?: number): string;
13
+ /**
14
+ * A score as a guide prints it: three significant figures below 100, whole
15
+ * numbers above, trailing fractional zeros dropped. The decimal-point guard
16
+ * matters because toPrecision can round up out of the fractional form —
17
+ * 99.95 comes back as "100", where a bare trailing-zero strip would report 1.
18
+ */
19
+ export declare function formatScore(n: number): string;
13
20
  /**
14
21
  * A byte count as a person reads it. Shared by the region-too-large banner and
15
22
  * the save-track-data dialog, which quote the same index estimate and would
@@ -98,6 +98,22 @@ export function toPrecision(s, n = 3) {
98
98
  export function reducePrecision(s, n = 3) {
99
99
  return toLocale(toPrecision(s, n));
100
100
  }
101
+ /**
102
+ * A score as a guide prints it: three significant figures below 100, whole
103
+ * numbers above, trailing fractional zeros dropped. The decimal-point guard
104
+ * matters because toPrecision can round up out of the fractional form —
105
+ * 99.95 comes back as "100", where a bare trailing-zero strip would report 1.
106
+ */
107
+ export function formatScore(n) {
108
+ if (n === 0) {
109
+ return '0';
110
+ }
111
+ if (Math.abs(n) >= 100) {
112
+ return n.toFixed(0);
113
+ }
114
+ const s = n.toPrecision(3);
115
+ return s.includes('.') ? s.replace(/\.?0+$/, '') : s;
116
+ }
101
117
  /**
102
118
  * A byte count as a person reads it. Shared by the region-too-large banner and
103
119
  * the save-track-data dialog, which quote the same index estimate and would
@@ -0,0 +1,14 @@
1
+ /**
2
+ * A field's value as the number a quantitative channel or step reads, `NaN`
3
+ * where it holds none. `Number()` answers 0 for `null`, `''`, `[]` and
4
+ * `[null]` — a VCF's `DP=.` arrives as the last — which plots a missing value
5
+ * as a measured zero. A one-element list is its element, as a VCF INFO value
6
+ * is; a string has to hold digits; anything else is not a number.
7
+ *
8
+ * The order is the measurement: a number returns first, and a string converts
9
+ * before its blank check, which runs only on a zero. Over a million features
10
+ * against `Number()`, interleaved in one process: numbers 0.98x, strings
11
+ * 1.00-1.02x, one-element lists 0.28x. Testing the list first and trimming
12
+ * every string measured 1.11-1.16x on a string column.
13
+ */
14
+ export declare function numericValue(value: unknown): number;
@@ -0,0 +1,34 @@
1
+ function textNumber(text) {
2
+ const n = Number(text);
3
+ return n === 0 && text.trim() === '' ? Number.NaN : n;
4
+ }
5
+ /**
6
+ * A field's value as the number a quantitative channel or step reads, `NaN`
7
+ * where it holds none. `Number()` answers 0 for `null`, `''`, `[]` and
8
+ * `[null]` — a VCF's `DP=.` arrives as the last — which plots a missing value
9
+ * as a measured zero. A one-element list is its element, as a VCF INFO value
10
+ * is; a string has to hold digits; anything else is not a number.
11
+ *
12
+ * The order is the measurement: a number returns first, and a string converts
13
+ * before its blank check, which runs only on a zero. Over a million features
14
+ * against `Number()`, interleaved in one process: numbers 0.98x, strings
15
+ * 1.00-1.02x, one-element lists 0.28x. Testing the list first and trimming
16
+ * every string measured 1.11-1.16x on a string column.
17
+ */
18
+ export function numericValue(value) {
19
+ if (typeof value === 'number') {
20
+ return value;
21
+ }
22
+ if (typeof value === 'string') {
23
+ return textNumber(value);
24
+ }
25
+ if (Array.isArray(value) && value.length === 1) {
26
+ const v = value[0];
27
+ return typeof v === 'number'
28
+ ? v
29
+ : typeof v === 'string'
30
+ ? textNumber(v)
31
+ : Number.NaN;
32
+ }
33
+ return Number.NaN;
34
+ }
@@ -5,10 +5,15 @@ export interface FeatureWidgetTypeRef {
5
5
  type: string;
6
6
  id: string;
7
7
  }
8
+ export interface ParentFeatureSummary {
9
+ name: string;
10
+ type?: string;
11
+ }
8
12
  export declare function openFeatureWidget(node: IAnyStateTreeNode, featureData: SimpleFeatureSerialized, opts?: {
9
13
  widget?: FeatureWidgetTypeRef;
10
14
  extra?: Record<string, unknown>;
11
15
  feature?: Feature;
16
+ parentFeature?: ParentFeatureSummary;
12
17
  }): Widget | undefined;
13
18
  /**
14
19
  * The other half of the flow above: the details lookup came back with nothing,
@@ -30,13 +30,13 @@ export function openFeatureWidget(node, featureData, opts = {}) {
30
30
  }
31
31
  session.setSelection(opts.feature ?? new SimpleFeature(featureData));
32
32
  const { type, id } = opts.widget ?? DEFAULT_FEATURE_WIDGET;
33
- const widget = session.addWidget(type, id, {
33
+ const widget = session.openWidget(type, id, {
34
34
  featureData,
35
+ parentFeature: opts.parentFeature,
35
36
  view: getContainingView(node),
36
37
  track: getContainingTrack(node),
37
38
  ...opts.extra,
38
39
  });
39
- session.showWidget(widget);
40
40
  return widget;
41
41
  }
42
42
  /**
@@ -0,0 +1,17 @@
1
+ import type { AbstractSessionModel, AbstractTrackModel, AbstractViewModel } from './types/index.ts';
2
+ /**
3
+ * "What is open" — the reduction four consumers wanted and each used to walk
4
+ * for itself (AppReadyMarker, jbApi, and capture's session gate and busy
5
+ * check), on different and drifting spellings of the view nesting.
6
+ *
7
+ * The recursion lives here, once. What each view contributes lives on the view,
8
+ * once, as `ownViews`/`ownTracks`. Neither half guesses at the other: the
9
+ * census is declared intent, not a shape that can be discovered, because the
10
+ * two things that look enumerable are not — the dotplot's `views` prop holds
11
+ * view-shaped axis models the user never opened, and react-msaview's `tracks`
12
+ * getter holds annotation rows that are not tracks.
13
+ */
14
+ export declare function openViews(session: AbstractSessionModel): AbstractViewModel[];
15
+ /** Every track on every open view. */
16
+ export declare function openTracks(session: AbstractSessionModel): AbstractTrackModel[];
17
+ export declare function viewAndNested(view: AbstractViewModel): AbstractViewModel[];
@@ -0,0 +1,22 @@
1
+ /**
2
+ * "What is open" — the reduction four consumers wanted and each used to walk
3
+ * for itself (AppReadyMarker, jbApi, and capture's session gate and busy
4
+ * check), on different and drifting spellings of the view nesting.
5
+ *
6
+ * The recursion lives here, once. What each view contributes lives on the view,
7
+ * once, as `ownViews`/`ownTracks`. Neither half guesses at the other: the
8
+ * census is declared intent, not a shape that can be discovered, because the
9
+ * two things that look enumerable are not — the dotplot's `views` prop holds
10
+ * view-shaped axis models the user never opened, and react-msaview's `tracks`
11
+ * getter holds annotation rows that are not tracks.
12
+ */
13
+ export function openViews(session) {
14
+ return session.views.flatMap(viewAndNested);
15
+ }
16
+ /** Every track on every open view. */
17
+ export function openTracks(session) {
18
+ return openViews(session).flatMap(v => v.ownTracks ?? []);
19
+ }
20
+ export function viewAndNested(view) {
21
+ return [view, ...(view.ownViews ?? []).flatMap(viewAndNested)];
22
+ }
@@ -14,7 +14,7 @@ export declare function findParentThatIs<T extends (a: IAnyStateTreeNode) => boo
14
14
  * Keying on the node is safe because nothing re-parents one — both `detach`
15
15
  * call sites hand the node straight to `scheduleDetachedDestroy` (ADR-069), so
16
16
  * a cached ancestor can only go stale by dying, which the `isAlive` check
17
- * catches. That is the difference from the three memos REJECTED_IDEAS records
17
+ * catches. That is the difference from the three memos agent-docs/architecture-decision-records/ records
18
18
  * removing: each keyed on something its caller had just allocated.
19
19
  */
20
20
  export declare function cachedParent<T>(cache: WeakMap<IAnyStateTreeNode, T>, node: IAnyStateTreeNode, finder: () => T, errorMsg: string): T;
@@ -39,7 +39,7 @@ export function findParentThatIs(node, predicate) {
39
39
  * Keying on the node is safe because nothing re-parents one — both `detach`
40
40
  * call sites hand the node straight to `scheduleDetachedDestroy` (ADR-069), so
41
41
  * a cached ancestor can only go stale by dying, which the `isAlive` check
42
- * catches. That is the difference from the three memos REJECTED_IDEAS records
42
+ * catches. That is the difference from the three memos agent-docs/architecture-decision-records/ records
43
43
  * removing: each keyed on something its caller had just allocated.
44
44
  */
45
45
  export function cachedParent(cache, node, finder, errorMsg) {
@@ -1,6 +1,5 @@
1
1
  import { IntervalTree } from './IntervalTree.ts';
2
2
  import type { StatusCallback } from './progress.ts';
3
- import type { StopToken } from './stopToken.ts';
4
3
  export type { StatusCallback };
5
4
  export type LineCallback = (line: string, lineIndex: number) => boolean | undefined;
6
5
  /**
@@ -36,11 +35,11 @@ export declare function makeFeatureIntervalTreeMap<T extends {
36
35
  * contract is built on ("no channel, skip the bookkeeping"), and it used to
37
36
  * default to `() => {}`, which says the opposite.
38
37
  * @param opts - `label` names the phase on the progress bar (a multi-phase
39
- * adapter wants "Parsing PAF", not another "Loading" indistinguishable from
40
- * the download that preceded it); `stopToken` makes a multi-GB parse
41
- * interruptible instead of running to completion after a cancel.
38
+ * adapter wants "Processing alignments", not another "Loading" indistinguishable from
39
+ * the download that preceded it); `signal` is read on every line, but the
40
+ * parse never yields, so it sees only an abort that landed before it began.
42
41
  */
43
42
  export declare function parseLineByLine(buffer: Uint8Array, lineCallback: LineCallback, statusCallback: StatusCallback | undefined, opts?: {
44
43
  label?: string;
45
- stopToken?: StopToken;
44
+ signal?: AbortSignal;
46
45
  }): void;
@@ -96,22 +96,18 @@ function chunkBoundary(buffer, start) {
96
96
  * contract is built on ("no channel, skip the bookkeeping"), and it used to
97
97
  * default to `() => {}`, which says the opposite.
98
98
  * @param opts - `label` names the phase on the progress bar (a multi-phase
99
- * adapter wants "Parsing PAF", not another "Loading" indistinguishable from
100
- * the download that preceded it); `stopToken` makes a multi-GB parse
101
- * interruptible instead of running to completion after a cancel.
99
+ * adapter wants "Processing alignments", not another "Loading" indistinguishable from
100
+ * the download that preceded it); `signal` is read on every line, but the
101
+ * parse never yields, so it sees only an abort that landed before it began.
102
102
  */
103
103
  export function parseLineByLine(buffer, lineCallback, statusCallback, opts = {}) {
104
- const { label = 'Loading', stopToken } = opts;
104
+ const { label = 'Loading', signal } = opts;
105
105
  const decoder = new TextDecoder('utf8');
106
- // Time-gated, not gated on a line counter: a file of few but very expensive
107
- // lines would never reach a count mask, freezing the bar at 0% for the whole
108
- // parse (the failure createProgressReporter documents). The stop-token check
109
- // rides the same tick, so cancellation lands within one window.
110
106
  const report = createProgressReporter({
111
107
  label,
112
108
  total: buffer.length,
113
109
  statusCallback,
114
- stopToken,
110
+ signal,
115
111
  });
116
112
  let chunkStart = 0;
117
113
  let i = 0;
@@ -140,11 +136,9 @@ export function parseLineByLine(buffer, lineCallback, statusCallback, opts = {})
140
136
  }
141
137
  }
142
138
  i++;
143
- // Chunk-granular position, not line-granular: `report` is called every
144
- // line so cancellation still lands within one throttle window, but the
145
- // byte offset it publishes only advances per chunk. Interpolating
146
- // within the chunk would mean converting a UTF-16 offset back to a byte
147
- // offset, and at 64KB the bar already moves in sub-percent steps.
139
+ // Chunk-granular position: interpolating within the chunk would mean
140
+ // converting a UTF-16 offset back to a byte offset, and at 64KB the bar
141
+ // already moves in sub-percent steps.
148
142
  report(chunkStart);
149
143
  p = lineEnd + 1;
150
144
  }
@@ -10,14 +10,11 @@ import type { JBrowsePlugin } from './types/data.ts';
10
10
  *
11
11
  * Two independent reasons to hide an entry:
12
12
  *
13
- * - **No build this product can load.** Web runs ESM/UMD; a CJS-only entry needs
14
- * Node's `require`, so only Desktop can install it. Asked of every build the
15
- * entry publishes rather than only the top-level urls — an entry that pins urls
16
- * per version, which `resolvePlugin`'s fallback exists to accommodate, used to
17
- * vanish from Web's list with no diagnostic. An entry whose *resolved* build is
18
- * the CJS-only one is still shown, since that is a fact about this JBrowse
19
- * version rather than about the product, and PluginStoreCard already has a
20
- * place to say so.
13
+ * - **No build at all.** Asked of every build the entry publishes rather than
14
+ * only the top-level urls — an entry that pins urls per version, which
15
+ * `resolvePlugin`'s fallback exists to accommodate, used to vanish from the
16
+ * list with no diagnostic. Both products load the same two formats, so this
17
+ * half no longer differs between them.
21
18
  * - **Already vendored into this product's core bundle**, where installing does
22
19
  * nothing because `dropVendoredPlugins` drops the definition at load. Desktop's
23
20
  * half of that list counts too, and is the half both surfaces were missing.
@@ -34,6 +31,7 @@ export interface PluginUpdate {
34
31
  name: string;
35
32
  definition: PluginDefinition;
36
33
  }
34
+ export declare function releaseVersion(jbrowseVersion: string): string;
37
35
  export declare function resolvePlugin(plugin: JBrowsePlugin, jbrowseVersion: string): ResolvedPlugin;
38
36
  export declare function installedVersionFromUrl(url: string | undefined, packageName: string | undefined): string | undefined;
39
37
  /**
@@ -16,14 +16,11 @@ function publishedBuilds(plugin) {
16
16
  *
17
17
  * Two independent reasons to hide an entry:
18
18
  *
19
- * - **No build this product can load.** Web runs ESM/UMD; a CJS-only entry needs
20
- * Node's `require`, so only Desktop can install it. Asked of every build the
21
- * entry publishes rather than only the top-level urls — an entry that pins urls
22
- * per version, which `resolvePlugin`'s fallback exists to accommodate, used to
23
- * vanish from Web's list with no diagnostic. An entry whose *resolved* build is
24
- * the CJS-only one is still shown, since that is a fact about this JBrowse
25
- * version rather than about the product, and PluginStoreCard already has a
26
- * place to say so.
19
+ * - **No build at all.** Asked of every build the entry publishes rather than
20
+ * only the top-level urls — an entry that pins urls per version, which
21
+ * `resolvePlugin`'s fallback exists to accommodate, used to vanish from the
22
+ * list with no diagnostic. Both products load the same two formats, so this
23
+ * half no longer differs between them.
27
24
  * - **Already vendored into this product's core bundle**, where installing does
28
25
  * nothing because `dropVendoredPlugins` drops the definition at load. Desktop's
29
26
  * half of that list counts too, and is the half both surfaces were missing.
@@ -34,8 +31,14 @@ export function installablePlugins(plugins, isElectron) {
34
31
  ...(isElectron ? desktopVendoredPluginNames : []),
35
32
  ]);
36
33
  return plugins.filter(plugin => !vendored.has(plugin.name) &&
37
- (isElectron ||
38
- publishedBuilds(plugin).some(b => b.esmUrl ?? b.url ?? b.umdUrl)));
34
+ publishedBuilds(plugin).some(b => b.esmUrl ?? b.url ?? b.umdUrl));
35
+ }
36
+ // A prerelease host is its release for compatibility purposes. Under semver
37
+ // 5.0.0-beta.1 sorts below 5.0.0, so a range written to keep a plugin off v5
38
+ // (`<5.0.0`) would serve it to every beta host and a v5-only range (`>=5.0.0`)
39
+ // would hide it from them. Store ranges are written against release versions.
40
+ export function releaseVersion(jbrowseVersion) {
41
+ return jbrowseVersion.split('-')[0];
39
42
  }
40
43
  // `*` (and empty) mean "any JBrowse version"; compare-versions throws on those,
41
44
  // so handle them directly. A malformed range simply fails to match rather than
@@ -44,7 +47,7 @@ function rangeMatches(jbrowseVersion, range) {
44
47
  let matched = range === '*' || range === '';
45
48
  if (!matched) {
46
49
  try {
47
- matched = satisfies(jbrowseVersion, range);
50
+ matched = satisfies(releaseVersion(jbrowseVersion), range);
48
51
  }
49
52
  catch {
50
53
  matched = false;
@@ -61,11 +64,9 @@ function definitionFrom(name, src) {
61
64
  ? { name, umdUrl: src.umdUrl, ...integrity }
62
65
  : src.esmUrl !== undefined
63
66
  ? { esmUrl: src.esmUrl }
64
- : src.cjsUrl !== undefined
65
- ? { cjsUrl: src.cjsUrl }
66
- : src.url !== undefined
67
- ? { name, url: src.url, ...integrity }
68
- : undefined;
67
+ : src.url !== undefined
68
+ ? { name, url: src.url, ...integrity }
69
+ : undefined;
69
70
  }
70
71
  function highestVersion(versions) {
71
72
  return [...versions].sort((a, b) => compareVersions(b.pluginVersion, a.pluginVersion))[0];
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Start loading a component made by `lazyWithPreload`; any other component is
3
+ * left alone. React-free, so an eagerly evaluated module can call it.
4
+ */
5
+ export declare function preloadComponent(component: unknown): void;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Start loading a component made by `lazyWithPreload`; any other component is
3
+ * left alone. React-free, so an eagerly evaluated module can call it.
4
+ */
5
+ export function preloadComponent(component) {
6
+ const { preload } = (component ?? {});
7
+ if (typeof preload === 'function') {
8
+ ;
9
+ preload().catch(() => { });
10
+ }
11
+ }