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

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 (637) hide show
  1. package/README.md +1709 -390
  2. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +3 -2
  3. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +5 -5
  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 +37 -14
  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 +49 -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/SequenceFeatureDetails/useSequenceData.js +8 -5
  35. package/esm/BaseFeatureWidget/configSchema.d.ts +1 -1
  36. package/esm/BaseFeatureWidget/formatDetails.d.ts +13 -29
  37. package/esm/BaseFeatureWidget/formatDetails.js +62 -83
  38. package/esm/BaseFeatureWidget/index.d.ts +2 -1
  39. package/esm/BaseFeatureWidget/stateModelFactory.d.ts +42 -29
  40. package/esm/BaseFeatureWidget/stateModelFactory.js +98 -98
  41. package/esm/BaseFeatureWidget/types.d.ts +12 -6
  42. package/esm/BaseFeatureWidget/util.d.ts +0 -10
  43. package/esm/BaseFeatureWidget/util.js +0 -17
  44. package/esm/CorePlugin.js +34 -3
  45. package/esm/PluginLoader.d.ts +24 -13
  46. package/esm/PluginLoader.js +167 -51
  47. package/esm/PluginManager.d.ts +130 -24
  48. package/esm/PluginManager.js +180 -32
  49. package/esm/ReExports/MuiDataGridReExports.d.ts +1 -0
  50. package/esm/ReExports/MuiDataGridReExports.js +2 -2
  51. package/esm/ReExports/coreModules.generated.d.ts +2 -0
  52. package/esm/ReExports/coreModules.generated.js +530 -0
  53. package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
  54. package/esm/ReExports/coreWorkerModules.generated.js +490 -0
  55. package/esm/ReExports/frameworkModules.d.ts +2 -0
  56. package/esm/ReExports/frameworkModules.js +68 -0
  57. package/esm/ReExports/frameworkShared.d.ts +12 -0
  58. package/esm/ReExports/frameworkShared.js +16 -0
  59. package/esm/ReExports/frameworkWorkerModules.generated.d.ts +2 -0
  60. package/esm/ReExports/frameworkWorkerModules.generated.js +130 -0
  61. package/esm/ReExports/list.js +528 -79
  62. package/esm/ReExports/modules.d.ts +1 -1
  63. package/esm/ReExports/modules.js +10 -165
  64. package/esm/ReExports/registry.d.ts +1 -0
  65. package/esm/ReExports/registry.js +23 -5
  66. package/esm/ReExports/uiStub.d.ts +3 -0
  67. package/esm/ReExports/uiStub.js +33 -0
  68. package/esm/ReExports/workerModules.d.ts +2 -0
  69. package/esm/ReExports/workerModules.js +11 -0
  70. package/esm/TextSearch/TextSearchManager.d.ts +27 -13
  71. package/esm/TextSearch/TextSearchManager.js +77 -36
  72. package/esm/TextSearch/places.d.ts +12 -0
  73. package/esm/TextSearch/places.js +94 -0
  74. package/esm/assemblyManager/assembly.d.ts +21 -19
  75. package/esm/assemblyManager/assembly.js +28 -26
  76. package/esm/assemblyManager/assemblyAdapters.d.ts +1 -1
  77. package/esm/assemblyManager/assemblyAdapters.js +8 -2
  78. package/esm/assemblyManager/assemblyConfigSchema.d.ts +31 -90
  79. package/esm/assemblyManager/assemblyConfigSchema.js +35 -47
  80. package/esm/assemblyManager/assemblyManager.d.ts +35 -180
  81. package/esm/assemblyManager/assemblyManager.js +47 -51
  82. package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +25 -18
  83. package/esm/assemblyManager/expandAssemblyConfigShorthand.js +78 -49
  84. package/esm/assemblyManager/geneticCodes.js +2 -5
  85. package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +10 -0
  86. package/esm/assemblyManager/getSequenceAdapterConfig.js +10 -0
  87. package/esm/assemblyManager/indexAssemblyNames.d.ts +9 -0
  88. package/esm/assemblyManager/indexAssemblyNames.js +22 -0
  89. package/esm/assemblyManager/loadRefNameMap.d.ts +1 -1
  90. package/esm/assemblyManager/loadRefNameMap.js +4 -9
  91. package/esm/assemblyManager/refNameMapKey.d.ts +7 -0
  92. package/esm/assemblyManager/refNameMapKey.js +12 -0
  93. package/esm/checkPlugins.d.ts +2 -0
  94. package/esm/checkPlugins.js +38 -17
  95. package/esm/configuration/bamIndexFields.d.ts +49 -0
  96. package/esm/configuration/bamIndexFields.js +41 -0
  97. package/esm/configuration/configurationSchema.d.ts +101 -71
  98. package/esm/configuration/configurationSchema.js +207 -134
  99. package/esm/configuration/configurationSchemaUnion.d.ts +39 -0
  100. package/esm/configuration/configurationSchemaUnion.js +56 -0
  101. package/esm/configuration/configurationSlot.d.ts +150 -60
  102. package/esm/configuration/configurationSlot.js +103 -75
  103. package/esm/configuration/fillLocations.d.ts +14 -0
  104. package/esm/configuration/fillLocations.js +14 -0
  105. package/esm/configuration/formatAboutConfigSchema.d.ts +7 -21
  106. package/esm/configuration/formatDetailsConfigSchema.d.ts +11 -37
  107. package/esm/configuration/formatDetailsConfigSchema.js +10 -13
  108. package/esm/configuration/fullConfSnapshot.d.ts +4 -19
  109. package/esm/configuration/fullConfSnapshot.js +30 -52
  110. package/esm/configuration/getConf.d.ts +45 -41
  111. package/esm/configuration/getConf.js +111 -44
  112. package/esm/configuration/index.d.ts +26 -11
  113. package/esm/configuration/index.js +16 -7
  114. package/esm/configuration/indexType.d.ts +26 -0
  115. package/esm/configuration/indexType.js +38 -0
  116. package/esm/configuration/mergeFormatCallbacks.d.ts +6 -7
  117. package/esm/configuration/mergeFormatCallbacks.js +13 -10
  118. package/esm/configuration/plot.d.ts +61 -0
  119. package/esm/configuration/plot.js +142 -0
  120. package/esm/configuration/readConfObject.d.ts +2 -24
  121. package/esm/configuration/readConfObject.js +20 -63
  122. package/esm/configuration/requirements.d.ts +37 -0
  123. package/esm/configuration/requirements.js +88 -0
  124. package/esm/configuration/schemaRegistry.d.ts +32 -15
  125. package/esm/configuration/schemaRegistry.js +33 -35
  126. package/esm/configuration/schemaTypes.d.ts +21 -5
  127. package/esm/configuration/schemaTypes.js +66 -55
  128. package/esm/configuration/slotFacade.d.ts +12 -29
  129. package/esm/configuration/slotFacade.js +44 -23
  130. package/esm/configuration/snapshotPreprocess.d.ts +43 -0
  131. package/esm/configuration/snapshotPreprocess.js +161 -0
  132. package/esm/configuration/tabixIndexFields.d.ts +30 -4
  133. package/esm/configuration/tabixIndexFields.js +21 -4
  134. package/esm/configuration/tabixShorthand.d.ts +34 -17
  135. package/esm/configuration/tabixShorthand.js +49 -22
  136. package/esm/configuration/types.d.ts +182 -43
  137. package/esm/configuration/uriShorthand.d.ts +9 -0
  138. package/esm/configuration/uriShorthand.js +16 -0
  139. package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +13 -19
  140. package/esm/data_adapters/BaseAdapter/BaseAdapter.js +12 -19
  141. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +40 -2
  142. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +68 -5
  143. package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +40 -0
  144. package/esm/data_adapters/BaseAdapter/featureDensity.js +31 -0
  145. package/esm/data_adapters/BaseAdapter/index.d.ts +23 -3
  146. package/esm/data_adapters/BaseAdapter/index.js +1 -0
  147. package/esm/data_adapters/BaseAdapter/rowSources.d.ts +37 -0
  148. package/esm/data_adapters/BaseAdapter/rowSources.js +7 -0
  149. package/esm/data_adapters/BaseAdapter/stats.d.ts +33 -1
  150. package/esm/data_adapters/BaseAdapter/stats.js +52 -13
  151. package/esm/data_adapters/BaseAdapter/types.d.ts +8 -12
  152. package/esm/data_adapters/BaseAdapter/zoomRange.d.ts +10 -0
  153. package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +1 -1
  154. package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +7 -11
  155. package/esm/data_adapters/CytobandAdapter/configSchema.js +3 -17
  156. package/esm/data_adapters/dataAdapterCache.d.ts +19 -2
  157. package/esm/data_adapters/dataAdapterCache.js +44 -10
  158. package/esm/data_adapters/getFeatureAdapter.d.ts +6 -4
  159. package/esm/data_adapters/getFeatureAdapter.js +8 -8
  160. package/esm/data_adapters/getSequenceSubAdapter.d.ts +7 -9
  161. package/esm/data_adapters/getSequenceSubAdapter.js +8 -10
  162. package/esm/pluggableElementTypes/AdapterType.d.ts +8 -8
  163. package/esm/pluggableElementTypes/AdapterType.js +1 -1
  164. package/esm/pluggableElementTypes/DisplayType.d.ts +53 -16
  165. package/esm/pluggableElementTypes/DisplayType.js +28 -12
  166. package/esm/pluggableElementTypes/LazyStateModelElement.d.ts +32 -0
  167. package/esm/pluggableElementTypes/LazyStateModelElement.js +77 -0
  168. package/esm/pluggableElementTypes/PluggableElementBase.d.ts +3 -5
  169. package/esm/pluggableElementTypes/PluggableElementBase.js +3 -5
  170. package/esm/pluggableElementTypes/RpcMethodType.d.ts +11 -1
  171. package/esm/pluggableElementTypes/RpcMethodType.js +25 -9
  172. package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +1 -2
  173. package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +7 -7
  174. package/esm/pluggableElementTypes/ViewType.d.ts +20 -4
  175. package/esm/pluggableElementTypes/ViewType.js +32 -4
  176. package/esm/pluggableElementTypes/WidgetType.d.ts +6 -0
  177. package/esm/pluggableElementTypes/WidgetType.js +6 -0
  178. package/esm/pluggableElementTypes/addMenuItems.d.ts +3 -2
  179. package/esm/pluggableElementTypes/extendElementType.d.ts +1 -2
  180. package/esm/pluggableElementTypes/extendElementType.js +9 -5
  181. package/esm/pluggableElementTypes/index.d.ts +2 -1
  182. package/esm/pluggableElementTypes/index.js +2 -9
  183. package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +19 -9
  184. package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +122 -28
  185. package/esm/pluggableElementTypes/models/BaseDisplayModel.js +155 -11
  186. package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +65 -16
  187. package/esm/pluggableElementTypes/models/BaseTrackModel.js +179 -117
  188. package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +87 -18
  189. package/esm/pluggableElementTypes/models/BaseViewModel.js +54 -11
  190. package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +26 -16
  191. package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +15 -11
  192. package/esm/pluggableElementTypes/models/assertDisplayContract.js +25 -32
  193. package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -18
  194. package/esm/pluggableElementTypes/models/baseConnectionConfig.js +5 -5
  195. package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +26 -31
  196. package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +108 -147
  197. package/esm/pluggableElementTypes/models/baseTrackConfig.js +96 -73
  198. package/esm/pluggableElementTypes/models/components/SaveTrackData.js +4 -6
  199. package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +3 -4
  200. package/esm/pluggableElementTypes/models/components/fetchTrackData.js +3 -3
  201. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +23 -13
  202. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +80 -48
  203. package/esm/pluggableElementTypes/models/index.d.ts +2 -3
  204. package/esm/pluggableElementTypes/models/index.js +2 -3
  205. package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +15 -1
  206. package/esm/pluggableElementTypes/models/migrateTrackConfig.js +85 -25
  207. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +4 -3
  208. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +141 -19
  209. package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +3 -3
  210. package/esm/pluginDefinitions.d.ts +34 -7
  211. package/esm/pluginDefinitions.js +54 -20
  212. package/esm/rpc/BaseRpcDriver.d.ts +2 -2
  213. package/esm/rpc/BaseRpcDriver.js +25 -30
  214. package/esm/rpc/MainThreadRpcDriver.d.ts +2 -2
  215. package/esm/rpc/MainThreadRpcDriver.js +13 -8
  216. package/esm/rpc/RpcClient.d.ts +18 -6
  217. package/esm/rpc/RpcClient.js +51 -16
  218. package/esm/rpc/RpcManager.d.ts +14 -10
  219. package/esm/rpc/RpcManager.js +11 -1
  220. package/esm/rpc/RpcRegistry.d.ts +40 -7
  221. package/esm/rpc/RpcServer.d.ts +3 -1
  222. package/esm/rpc/RpcServer.js +19 -12
  223. package/esm/rpc/WebWorkerRpcDriver.d.ts +11 -4
  224. package/esm/rpc/WebWorkerRpcDriver.js +64 -68
  225. package/esm/rpc/byteBudget.d.ts +20 -5
  226. package/esm/rpc/byteBudget.js +16 -5
  227. package/esm/rpc/configSchema.d.ts +7 -21
  228. package/esm/rpc/coreRpcMethods.d.ts +4 -0
  229. package/esm/rpc/coreRpcMethods.js +4 -0
  230. package/esm/rpc/methods/CoreGetEncodedFeature.d.ts +13 -0
  231. package/esm/rpc/methods/CoreGetEncodedFeature.js +32 -0
  232. package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +16 -0
  233. package/esm/rpc/methods/CoreGetEncodedLayers.js +59 -0
  234. package/esm/rpc/methods/CoreGetExportData.js +3 -4
  235. package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
  236. package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
  237. package/esm/rpc/methods/CoreGetFeatures.js +3 -5
  238. package/esm/rpc/methods/CoreGetRefNames.js +2 -12
  239. package/esm/rpc/methods/CoreGetRegionByteEstimate.js +1 -1
  240. package/esm/rpc/methods/CoreGetSequence.js +2 -2
  241. package/esm/rpc/methods/CoreLoadAdapterCode.d.ts +13 -0
  242. package/esm/rpc/methods/CoreLoadAdapterCode.js +16 -0
  243. package/esm/rpc/methods/layerFeatures.d.ts +33 -0
  244. package/esm/rpc/methods/layerFeatures.js +29 -0
  245. package/esm/svg/SvgExport.js +6 -7
  246. package/esm/svg/SvgThemeProviders.d.ts +12 -0
  247. package/esm/svg/SvgThemeProviders.js +15 -0
  248. package/esm/svg/exportViewSvg.d.ts +28 -0
  249. package/esm/svg/exportViewSvg.js +13 -0
  250. package/esm/svg/normalizeSvgMarkup.d.ts +7 -0
  251. package/esm/svg/normalizeSvgMarkup.js +99 -0
  252. package/esm/svg/serializeSvg.d.ts +7 -0
  253. package/esm/svg/serializeSvg.js +11 -0
  254. package/esm/svg/svgId.d.ts +1 -1
  255. package/esm/svg/svgId.js +1 -1
  256. package/esm/svg/svgReady.d.ts +9 -7
  257. package/esm/svg/svgReady.js +8 -7
  258. package/esm/svg/trackNames.d.ts +7 -5
  259. package/esm/svg/trackNames.js +12 -9
  260. package/esm/svg/wrapSvgExport.js +6 -74
  261. package/esm/ui/AddCustomPluginDialog.js +3 -8
  262. package/esm/ui/AppReadyMarker.d.ts +45 -0
  263. package/esm/ui/AppReadyMarker.js +89 -0
  264. package/esm/ui/BaseExportSvgDialog.d.ts +1 -1
  265. package/esm/ui/CascadingMenu.js +181 -104
  266. package/esm/ui/DropDownMenu.js +2 -1
  267. package/esm/ui/ErrorBanner.js +1 -1
  268. package/esm/ui/ErrorBoundary.d.ts +2 -2
  269. package/esm/ui/ErrorMessageStackTraceContents.js +2 -1
  270. package/esm/ui/ErrorMessageStackTraceDialog.js +5 -11
  271. package/esm/ui/ExportSvgDialog.d.ts +1 -1
  272. package/esm/ui/FileDropZone.js +2 -1
  273. package/esm/ui/FileSelector/useInternetAccounts.d.ts +156 -96
  274. package/esm/ui/HoverMenu.d.ts +1 -2
  275. package/esm/ui/HoverMenu.js +6 -3
  276. package/esm/ui/JexlFilterDialog.d.ts +13 -10
  277. package/esm/ui/JexlFilterDialog.js +122 -50
  278. package/esm/ui/JexlFilterRowEditors.d.ts +15 -0
  279. package/esm/ui/JexlFilterRowEditors.js +90 -0
  280. package/esm/ui/LazyBaseTooltip.d.ts +4 -0
  281. package/esm/ui/LazyBaseTooltip.js +9 -0
  282. package/esm/ui/LegendSwatchGlyph.js +26 -21
  283. package/esm/ui/LoadingOverlay.d.ts +14 -0
  284. package/esm/ui/LoadingOverlay.js +4 -2
  285. package/esm/ui/MenuTypes.d.ts +23 -53
  286. package/esm/ui/MenuTypes.js +3 -0
  287. package/esm/ui/MonospaceTextField.d.ts +2 -1
  288. package/esm/ui/MonospaceTextField.js +23 -20
  289. package/esm/ui/PaletteContext.d.ts +10 -5
  290. package/esm/ui/PaletteContext.js +44 -6
  291. package/esm/ui/RefNameAutocomplete/SearchOption.d.ts +13 -0
  292. package/esm/ui/RefNameAutocomplete/SearchOption.js +45 -0
  293. package/esm/ui/RefNameAutocomplete/index.d.ts +1 -2
  294. package/esm/ui/RefNameAutocomplete/index.js +8 -2
  295. package/esm/ui/RefNameAutocomplete/util.d.ts +13 -0
  296. package/esm/ui/RefNameAutocomplete/util.js +42 -1
  297. package/esm/ui/ResizeHandle.d.ts +3 -1
  298. package/esm/ui/ResizeHandle.js +44 -11
  299. package/esm/ui/ScrollChrome.d.ts +13 -0
  300. package/esm/ui/ScrollChrome.js +11 -0
  301. package/esm/ui/ScrollEdgeShadow.d.ts +6 -9
  302. package/esm/ui/ScrollEdgeShadow.js +14 -35
  303. package/esm/ui/ScrollZoomToggle.d.ts +4 -27
  304. package/esm/ui/ScrollZoomToggle.js +34 -51
  305. package/esm/ui/SessionJsonPanel.d.ts +3 -0
  306. package/esm/ui/SessionJsonPanel.js +14 -0
  307. package/esm/ui/SettingsChangesTable.d.ts +1 -0
  308. package/esm/ui/SettingsChangesTable.js +49 -11
  309. package/esm/ui/ShareLinkField.d.ts +1 -3
  310. package/esm/ui/ShareLinkField.js +13 -40
  311. package/esm/ui/SizeSliderRow.d.ts +1 -3
  312. package/esm/ui/SizeSliderRow.js +4 -6
  313. package/esm/ui/SnackbarModel.js +79 -67
  314. package/esm/ui/StatusProgressBar.js +2 -2
  315. package/esm/ui/SvgColorLegend.d.ts +9 -4
  316. package/esm/ui/SvgColorLegend.js +82 -41
  317. package/esm/ui/VerticalScrollbar.d.ts +13 -34
  318. package/esm/ui/VerticalScrollbar.js +29 -83
  319. package/esm/ui/ViewLoadingScreen.d.ts +5 -4
  320. package/esm/ui/ViewLoadingScreen.js +8 -32
  321. package/esm/ui/colorScale.d.ts +92 -0
  322. package/esm/ui/colorScale.js +72 -0
  323. package/esm/ui/colors.d.ts +64 -0
  324. package/esm/ui/colors.js +230 -1
  325. package/esm/ui/hoverBoxStyle.d.ts +14 -2
  326. package/esm/ui/hoverBoxStyle.js +17 -2
  327. package/esm/ui/index.d.ts +12 -12
  328. package/esm/ui/index.js +14 -22
  329. package/esm/ui/launchViewMenu.js +15 -5
  330. package/esm/ui/legendMenuItem.d.ts +10 -32
  331. package/esm/ui/legendMenuItem.js +9 -36
  332. package/esm/ui/legendSpec.d.ts +15 -8
  333. package/esm/ui/legendSpec.js +14 -23
  334. package/esm/ui/makeSizeMenu.d.ts +0 -6
  335. package/esm/ui/makeSizeMenu.js +6 -30
  336. package/esm/ui/measureLegendText.js +1 -1
  337. package/esm/ui/menuItemAdornment.d.ts +9 -20
  338. package/esm/ui/menuItemAdornment.js +10 -32
  339. package/esm/ui/menuItems.d.ts +2 -7
  340. package/esm/ui/menuItems.js +1 -6
  341. package/esm/ui/multiTrackMenuItems.d.ts +6 -0
  342. package/esm/ui/palette.d.ts +118 -116
  343. package/esm/ui/palette.js +114 -75
  344. package/esm/ui/replaceViewAction.d.ts +1 -1
  345. package/esm/ui/replaceViewAction.js +1 -1
  346. package/esm/ui/theme.d.ts +43 -119
  347. package/esm/ui/theme.js +62 -78
  348. package/esm/ui/toggleMenuItems.d.ts +1 -3
  349. package/esm/ui/toggleMenuItems.js +6 -5
  350. package/esm/ui/useAssemblySelection.d.ts +4 -4
  351. package/esm/ui/viewHeaderHeight.d.ts +1 -0
  352. package/esm/ui/viewHeaderHeight.js +1 -0
  353. package/esm/util/Base1DUtils.d.ts +5 -3
  354. package/esm/util/Base1DUtils.js +14 -6
  355. package/esm/util/Base1DViewModel.d.ts +2 -1
  356. package/esm/util/Base1DViewModel.js +3 -2
  357. package/esm/util/SvgCanvas.d.ts +15 -13
  358. package/esm/util/SvgCanvas.js +76 -56
  359. package/esm/util/TimeTraveller.d.ts +3 -0
  360. package/esm/util/TimeTraveller.js +34 -2
  361. package/esm/util/aborting.d.ts +39 -0
  362. package/esm/util/aborting.js +88 -6
  363. package/esm/util/adapterMetadata.d.ts +1 -1
  364. package/esm/util/adapterMetadata.js +6 -5
  365. package/esm/util/addAndShowTrack.d.ts +2 -5
  366. package/esm/util/addAndShowTrack.js +5 -1
  367. package/esm/util/addRelativeUris.d.ts +17 -5
  368. package/esm/util/addRelativeUris.js +46 -10
  369. package/esm/util/addTrackFromWidget.d.ts +2 -5
  370. package/esm/util/addTrackFromWidget.js +5 -4
  371. package/esm/util/aggregateFieldName.d.ts +10 -0
  372. package/esm/util/aggregateFieldName.js +8 -0
  373. package/esm/util/analytics.js +46 -13
  374. package/esm/util/animationAllowed.d.ts +9 -0
  375. package/esm/util/animationAllowed.js +13 -0
  376. package/esm/util/applyRowResizeWheel.d.ts +10 -5
  377. package/esm/util/applyRowResizeWheel.js +10 -21
  378. package/esm/util/bandHeight.d.ts +10 -0
  379. package/esm/util/bandHeight.js +29 -0
  380. package/esm/util/bandLayout.d.ts +4 -4
  381. package/esm/util/bandLayout.js +4 -4
  382. package/esm/util/baseDisplayConfig.d.ts +8 -0
  383. package/esm/util/baseDisplayConfig.js +27 -0
  384. package/esm/util/bezierConnector.d.ts +4 -3
  385. package/esm/util/bezierConnector.js +38 -45
  386. package/esm/util/bgzfWorkerPool.d.ts +20 -74
  387. package/esm/util/bgzfWorkerPool.js +20 -74
  388. package/esm/util/binnedAggregate.d.ts +17 -0
  389. package/esm/util/binnedAggregate.js +275 -0
  390. package/esm/util/cacheBudgets.d.ts +22 -19
  391. package/esm/util/cacheBudgets.js +22 -19
  392. package/esm/util/cachedSetup.d.ts +16 -6
  393. package/esm/util/cachedSetup.js +108 -38
  394. package/esm/util/categoricalField.d.ts +56 -0
  395. package/esm/util/categoricalField.js +73 -0
  396. package/esm/util/cellMatches.d.ts +23 -0
  397. package/esm/util/cellMatches.js +264 -0
  398. package/esm/util/cellsStep.d.ts +29 -0
  399. package/esm/util/cellsStep.js +437 -0
  400. package/esm/util/clampToContig.d.ts +17 -0
  401. package/esm/util/clampToContig.js +19 -0
  402. package/esm/util/coarseStripHTML.js +1 -2
  403. package/esm/util/color/cssColorsLevel4.d.ts +1 -0
  404. package/esm/util/color/cssColorsLevel4.js +1 -0
  405. package/esm/util/color/index.d.ts +5 -3
  406. package/esm/util/color/index.js +7 -4
  407. package/esm/util/colorBits.d.ts +3 -3
  408. package/esm/util/colorBits.js +19 -44
  409. package/esm/util/colorRamp.d.ts +49 -5
  410. package/esm/util/colorRamp.js +169 -18
  411. package/esm/util/colorScale.d.ts +156 -0
  412. package/esm/util/colorScale.js +243 -0
  413. package/esm/util/colorSchemes.d.ts +21 -0
  414. package/esm/util/colorSchemes.js +30 -0
  415. package/esm/util/copyToClipboard.js +8 -1
  416. package/esm/util/{createStopTokenRotation.d.ts → createAbortRotation.d.ts} +21 -23
  417. package/esm/util/{createStopTokenRotation.js → createAbortRotation.js} +21 -52
  418. package/esm/util/createSvgRasterCanvas.d.ts +10 -0
  419. package/esm/util/cssColorParse.d.ts +15 -0
  420. package/esm/util/cssColorParse.js +53 -0
  421. package/esm/util/diagonalizeRegions.d.ts +2 -3
  422. package/esm/util/diagonalizeRegions.js +8 -13
  423. package/esm/util/expandLooseSearchIndex.d.ts +19 -0
  424. package/esm/util/expandLooseSearchIndex.js +29 -0
  425. package/esm/util/featureTable.d.ts +224 -0
  426. package/esm/util/featureTable.js +366 -0
  427. package/esm/util/featureTransforms.d.ts +81 -0
  428. package/esm/util/featureTransforms.js +1231 -0
  429. package/esm/util/featureTypes.d.ts +24 -0
  430. package/esm/util/featureTypes.js +35 -0
  431. package/esm/util/fetchAndMaybeUnzip.js +16 -9
  432. package/esm/util/fetchContext.d.ts +7 -8
  433. package/esm/util/fetchContext.js +3 -3
  434. package/esm/util/fetchHub.d.ts +4 -2
  435. package/esm/util/fetchHub.js +2 -2
  436. package/esm/util/fetchPhases.d.ts +10 -10
  437. package/esm/util/fetchSeq.d.ts +2 -3
  438. package/esm/util/fetchSeq.js +2 -2
  439. package/esm/util/fieldReader.d.ts +17 -0
  440. package/esm/util/fieldReader.js +62 -0
  441. package/esm/util/formatBytes.js +1 -1
  442. package/esm/util/formatGuessers.d.ts +25 -14
  443. package/esm/util/formatGuessers.js +42 -27
  444. package/esm/util/formatRelativeTime.js +1 -1
  445. package/esm/util/freezeDeep.d.ts +8 -10
  446. package/esm/util/freezeDeep.js +8 -10
  447. package/esm/util/getLocationUri.d.ts +2 -1
  448. package/esm/util/getLocationUri.js +8 -2
  449. package/esm/util/groupKeys.d.ts +76 -0
  450. package/esm/util/groupKeys.js +156 -0
  451. package/esm/util/highlights.d.ts +10 -6
  452. package/esm/util/highlights.js +12 -25
  453. package/esm/util/hooks.d.ts +31 -2
  454. package/esm/util/hooks.js +72 -3
  455. package/esm/util/index.d.ts +11 -11
  456. package/esm/util/index.js +11 -10
  457. package/esm/util/indexCandidates.d.ts +1 -31
  458. package/esm/util/indexCandidates.js +5 -63
  459. package/esm/util/installFetch.d.ts +77 -37
  460. package/esm/util/installFetch.js +65 -38
  461. package/esm/util/installInitAutorun.d.ts +14 -13
  462. package/esm/util/installInitAutorun.js +17 -17
  463. package/esm/util/installPrerequisiteFetch.d.ts +115 -0
  464. package/esm/util/installPrerequisiteFetch.js +111 -0
  465. package/esm/util/intervals.js +9 -4
  466. package/esm/util/io/index.js +22 -15
  467. package/esm/util/isDataCurrent.d.ts +7 -5
  468. package/esm/util/isDataCurrent.js +9 -6
  469. package/esm/util/isTextEntryFocused.d.ts +7 -0
  470. package/esm/util/isTextEntryFocused.js +16 -0
  471. package/esm/util/jexl.js +24 -21
  472. package/esm/util/jexlFilterRows.d.ts +89 -0
  473. package/esm/util/jexlFilterRows.js +252 -0
  474. package/esm/util/jexlFilters.d.ts +32 -57
  475. package/esm/util/jexlFilters.js +31 -29
  476. package/esm/util/jexlStrings.d.ts +3 -4
  477. package/esm/util/jexlStrings.js +2 -3
  478. package/esm/util/layouts/GranularRectLayout.d.ts +8 -1
  479. package/esm/util/layouts/GranularRectLayout.js +25 -8
  480. package/esm/util/lazyAfterAttach.d.ts +13 -0
  481. package/esm/util/lazyAfterAttach.js +31 -0
  482. package/esm/util/lazyWithPreload.d.ts +19 -0
  483. package/esm/util/lazyWithPreload.js +27 -0
  484. package/esm/util/legendCandidates.d.ts +72 -0
  485. package/esm/util/legendCandidates.js +138 -0
  486. package/esm/util/locString.js +5 -2
  487. package/esm/util/localStorage.js +4 -4
  488. package/esm/util/markEncoding.d.ts +150 -0
  489. package/esm/util/markEncoding.js +885 -0
  490. package/esm/util/markEncodingTypes.d.ts +595 -0
  491. package/esm/util/markEncodingTypes.js +8 -0
  492. package/esm/util/mst-reflection.d.ts +2 -20
  493. package/esm/util/mst-reflection.js +3 -53
  494. package/esm/util/mstUtils.d.ts +31 -23
  495. package/esm/util/mstUtils.js +39 -24
  496. package/esm/util/numericUtils.d.ts +7 -0
  497. package/esm/util/numericUtils.js +16 -0
  498. package/esm/util/numericValue.d.ts +14 -0
  499. package/esm/util/numericValue.js +34 -0
  500. package/esm/util/openFeatureWidget.d.ts +5 -0
  501. package/esm/util/openFeatureWidget.js +2 -2
  502. package/esm/util/openViews.d.ts +17 -0
  503. package/esm/util/openViews.js +22 -0
  504. package/esm/util/parentWalk.d.ts +1 -1
  505. package/esm/util/parentWalk.js +1 -1
  506. package/esm/util/parseLineByLine.d.ts +4 -5
  507. package/esm/util/parseLineByLine.js +8 -14
  508. package/esm/util/pluginStore.d.ts +6 -8
  509. package/esm/util/pluginStore.js +17 -16
  510. package/esm/util/preloadComponent.d.ts +5 -0
  511. package/esm/util/preloadComponent.js +11 -0
  512. package/esm/util/progress.d.ts +22 -22
  513. package/esm/util/progress.js +27 -26
  514. package/esm/util/quantileExtent.d.ts +49 -0
  515. package/esm/util/quantileExtent.js +162 -0
  516. package/esm/util/range.d.ts +13 -9
  517. package/esm/util/range.js +17 -8
  518. package/esm/util/renameRegions.d.ts +26 -6
  519. package/esm/util/renameRegions.js +68 -54
  520. package/esm/util/renderToStaticMarkup.js +24 -14
  521. package/esm/util/rxjs.d.ts +23 -8
  522. package/esm/util/rxjs.js +61 -15
  523. package/esm/util/samplesTsv.d.ts +49 -0
  524. package/esm/util/samplesTsv.js +86 -0
  525. package/esm/util/scheduleDetachedDestroy.d.ts +18 -0
  526. package/esm/util/scheduleDetachedDestroy.js +24 -0
  527. package/esm/util/scrollLatch.d.ts +1 -0
  528. package/esm/util/scrollLatch.js +8 -0
  529. package/esm/util/selectEncodedFeature.d.ts +16 -0
  530. package/esm/util/selectEncodedFeature.js +34 -0
  531. package/esm/util/sessionSharing.d.ts +7 -5
  532. package/esm/util/sessionSharing.js +23 -23
  533. package/esm/util/shapeNameList.d.ts +2 -0
  534. package/esm/util/shapeNameList.js +6 -0
  535. package/esm/util/shapeNames.d.ts +7 -0
  536. package/esm/util/shapeNames.js +11 -0
  537. package/esm/util/simpleFeature.d.ts +0 -1
  538. package/esm/util/springAnimate.js +1 -1
  539. package/esm/util/starFusion.d.ts +26 -0
  540. package/esm/util/starFusion.js +37 -0
  541. package/esm/util/stepTables.d.ts +96 -0
  542. package/esm/util/stepTables.js +277 -0
  543. package/esm/util/svAlt.d.ts +145 -0
  544. package/esm/util/svAlt.js +364 -0
  545. package/esm/util/svgColorProps.d.ts +11 -0
  546. package/esm/util/svgColorProps.js +28 -1
  547. package/esm/util/systemColorScheme.d.ts +12 -0
  548. package/esm/util/systemColorScheme.js +27 -0
  549. package/esm/util/tabix.d.ts +19 -10
  550. package/esm/util/tabix.js +19 -14
  551. package/esm/util/thresholdScale.d.ts +91 -0
  552. package/esm/util/thresholdScale.js +166 -0
  553. package/esm/util/timeGate.d.ts +4 -5
  554. package/esm/util/timeGate.js +4 -5
  555. package/esm/util/trackConfigDelta.d.ts +26 -26
  556. package/esm/util/trackConfigDelta.js +63 -47
  557. package/esm/util/tracks.d.ts +120 -66
  558. package/esm/util/tracks.js +501 -151
  559. package/esm/util/translateTranscript.d.ts +44 -0
  560. package/esm/util/translateTranscript.js +102 -0
  561. package/esm/util/types/data.d.ts +0 -2
  562. package/esm/util/types/index.d.ts +121 -22
  563. package/esm/util/types/index.js +9 -0
  564. package/esm/util/types/mst.d.ts +3 -0
  565. package/esm/util/types/mst.js +4 -0
  566. package/esm/util/types/renameIds.d.ts +1 -0
  567. package/esm/util/types/renameIds.js +29 -0
  568. package/esm/util/types/services.d.ts +1 -1
  569. package/esm/util/unknownSnapshotKeys.d.ts +53 -0
  570. package/esm/util/unknownSnapshotKeys.js +76 -0
  571. package/esm/util/useFeatureSequence.js +5 -5
  572. package/esm/util/useFetch.d.ts +3 -4
  573. package/esm/util/useFetch.js +19 -10
  574. package/esm/util/useFetchPlugins.d.ts +6 -2
  575. package/esm/util/useFetchPlugins.js +7 -3
  576. package/esm/util/usePanZoom.js +10 -3
  577. package/esm/util/usePanelVirtualScroll.d.ts +7 -35
  578. package/esm/util/usePanelVirtualScroll.js +9 -36
  579. package/esm/util/useRafCommit.js +1 -0
  580. package/esm/util/useRowVirtualScroll.d.ts +6 -29
  581. package/esm/util/useRowVirtualScroll.js +8 -49
  582. package/esm/util/useVirtualScrollWheel.d.ts +20 -4
  583. package/esm/util/useVirtualScrollWheel.js +40 -74
  584. package/esm/util/viewHighlights.d.ts +3 -0
  585. package/esm/util/viewHighlights.js +5 -0
  586. package/esm/util/viewStatus.d.ts +47 -15
  587. package/esm/util/viewStatus.js +34 -0
  588. package/esm/util/wheelZoom.d.ts +7 -1
  589. package/esm/util/wheelZoom.js +85 -19
  590. package/esm/util/whenViewSettled.d.ts +55 -8
  591. package/esm/util/whenViewSettled.js +56 -7
  592. package/esm/util/withFeatureDetails.js +4 -0
  593. package/esm/util/withLaunchInput.d.ts +174 -0
  594. package/esm/util/withLaunchInput.js +274 -0
  595. package/package.json +75 -24
  596. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +0 -2
  597. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +0 -8
  598. package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +0 -8
  599. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +0 -80
  600. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.js +0 -583
  601. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +0 -141
  602. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.js +0 -1116
  603. package/esm/ReExports/BaseFeatureDetails.d.ts +0 -1
  604. package/esm/ReExports/BaseFeatureDetails.js +0 -10
  605. package/esm/ReExports/index.d.ts +0 -1
  606. package/esm/ReExports/index.js +0 -1
  607. package/esm/ReExports/publicUtil.d.ts +0 -1
  608. package/esm/ReExports/publicUtil.js +0 -28
  609. package/esm/configuration/promotableDefaults.d.ts +0 -199
  610. package/esm/configuration/promotableDefaults.js +0 -326
  611. package/esm/configuration/promotablePin.d.ts +0 -55
  612. package/esm/configuration/promotablePin.js +0 -1
  613. package/esm/configuration/promotableResolve.d.ts +0 -108
  614. package/esm/configuration/promotableResolve.js +0 -117
  615. package/esm/configuration/promotableSlots.d.ts +0 -12
  616. package/esm/configuration/promotableSlots.js +0 -45
  617. package/esm/configuration/slotShape.d.ts +0 -12
  618. package/esm/configuration/slotShape.js +0 -84
  619. package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +0 -51
  620. package/esm/pluggableElementTypes/models/HighlightsMixin.js +0 -78
  621. package/esm/ui/PinAdornment.d.ts +0 -5
  622. package/esm/ui/PinAdornment.js +0 -79
  623. package/esm/ui/SvgGradientLegend.d.ts +0 -26
  624. package/esm/ui/SvgGradientLegend.js +0 -26
  625. package/esm/ui/highlightChipReveal.d.ts +0 -32
  626. package/esm/ui/highlightChipReveal.js +0 -39
  627. package/esm/ui/promotableMenuItems.d.ts +0 -19
  628. package/esm/ui/promotableMenuItems.js +0 -89
  629. package/esm/ui/promotablePinCoverage.d.ts +0 -44
  630. package/esm/ui/promotablePinCoverage.js +0 -87
  631. package/esm/util/applyInitSettings.d.ts +0 -79
  632. package/esm/util/applyInitSettings.js +0 -91
  633. package/esm/util/openDisplays.d.ts +0 -23
  634. package/esm/util/openDisplays.js +0 -79
  635. package/esm/util/stopToken.d.ts +0 -211
  636. package/esm/util/stopToken.js +0 -438
  637. /package/esm/{BaseFeatureWidget/BaseFeatureDetail/types.js → data_adapters/BaseAdapter/zoomRange.js} +0 -0
@@ -0,0 +1,76 @@
1
+ /**
2
+ * The ordering every in-track group-by shares, whatever partitioned the
3
+ * features: named groups first, then the `''` catch-all a dimension files its
4
+ * unanswerable features under, then the overflow bucket a capped partition
5
+ * merged its tail into.
6
+ */
7
+ export declare const OVERFLOW_GROUP_KEY = "\0overflow";
8
+ export declare const MAX_GROUPS = 40;
9
+ /**
10
+ * The text a field value groups, colors and labels by: a missing value is the
11
+ * `''` catch-all, a VCF's `.` among them, which `@gmod/vcf` hands over as
12
+ * `[undefined]`, and a multi-valued attribute joins, so two features carrying
13
+ * the same list land together.
14
+ */
15
+ export declare function valueText(value: unknown): string;
16
+ /**
17
+ * Numbers first by value, then every other key run by run with digit runs by
18
+ * magnitude, so -1 before 1 and chr2 before chr10. The two classes never
19
+ * interleave: a signed or decimal number read run by run orders differently
20
+ * than by value, and letting them mix made the order intransitive.
21
+ */
22
+ export declare function compareGroupKeys(a: string, b: string): number;
23
+ /**
24
+ * The order a facet stacks its sections in. `domain` is the channel's
25
+ * declared order: the keys it lists come first, in that order, and the rest
26
+ * follow under `compareGroupKeys`. Every categorical channel in the tree
27
+ * reads its domain this way, so a listed value is a placement and an
28
+ * unlisted one is not an error.
29
+ */
30
+ export declare function groupKeyComparator(domain?: readonly string[]): typeof compareGroupKeys;
31
+ /**
32
+ * The domain a re-pick keeps: a facet set from a menu or dialog names no
33
+ * domain, so one naming the field the current facet already reads carries
34
+ * the current order along. A reorder names its own domain and passes
35
+ * through, an empty one included.
36
+ */
37
+ export declare function carryGroupDomain<T extends {
38
+ field: string;
39
+ domain?: readonly string[];
40
+ }>(next: T | undefined, current: T | undefined): T | undefined;
41
+ /**
42
+ * The overflow bucket's chip. Says MERGED because that lane is the one entry
43
+ * in a stack that is not a value, and this label is the only place a reader
44
+ * is told the cap fired at all.
45
+ */
46
+ export declare function overflowLabel(count: number): string;
47
+ /**
48
+ * Which section each key stacks into once the cap applies: the first
49
+ * `MAX_GROUPS` keys in natural order keep their own and the rest fold into
50
+ * the overflow section. The catch-all `''` is held out of the merge, since
51
+ * "lacking the value" is an answer users look for. A domain orders the
52
+ * sections and never decides which exist, so reordering them changes no
53
+ * key's section.
54
+ */
55
+ export declare function capGroupKeys(keys: Iterable<string>): {
56
+ mergedCount: number;
57
+ sectionOf: (key: string) => string;
58
+ };
59
+ /**
60
+ * A group's stable identity: its sort key and the label its chip shows.
61
+ */
62
+ export interface GroupId {
63
+ key: string;
64
+ label: string;
65
+ }
66
+ /**
67
+ * Identity of the key space a facet hands out keys in: its field. A key means
68
+ * nothing on its own, since `''` is both the ungrouped section and every
69
+ * field's catch-all, so anything keyed by group key is dropped when this
70
+ * moves. The `domain` only orders the keys and is no part of the space, so a
71
+ * reorder keeps what a reader hid.
72
+ */
73
+ export declare function groupKeySpaceOf(facet: {
74
+ field: string;
75
+ domain?: readonly string[];
76
+ } | undefined): string;
@@ -0,0 +1,156 @@
1
+ /**
2
+ * The ordering every in-track group-by shares, whatever partitioned the
3
+ * features: named groups first, then the `''` catch-all a dimension files its
4
+ * unanswerable features under, then the overflow bucket a capped partition
5
+ * merged its tail into.
6
+ */
7
+ // '\0' cannot collide with a real tag value or refName, and the rank below
8
+ // pins it dead last so a merged tail never displaces a named group.
9
+ export const OVERFLOW_GROUP_KEY = '\u0000overflow';
10
+ // Hard ceiling on the sections one grouping may stack; the tail past it merges
11
+ // into the overflow section. A backstop for the dimensions that are not a
12
+ // closed set, a tag or an attribute, whose value space is the file's.
13
+ export const MAX_GROUPS = 40;
14
+ /**
15
+ * The text a field value groups, colors and labels by: a missing value is the
16
+ * `''` catch-all, a VCF's `.` among them, which `@gmod/vcf` hands over as
17
+ * `[undefined]`, and a multi-valued attribute joins, so two features carrying
18
+ * the same list land together.
19
+ */
20
+ export function valueText(value) {
21
+ return value === undefined || value === null
22
+ ? ''
23
+ : Array.isArray(value)
24
+ ? value
25
+ .filter(v => v !== undefined && v !== null)
26
+ .map(String)
27
+ .join(',')
28
+ : String(value);
29
+ }
30
+ function groupKeyRank(key) {
31
+ return key === '' ? 1 : key === OVERFLOW_GROUP_KEY ? 2 : 0;
32
+ }
33
+ const NUMERIC = /^-?\d+(\.\d+)?$/;
34
+ const DIGIT_RUNS = /\d+|\D+/g;
35
+ function compareRuns(a, b) {
36
+ const runsA = a.match(DIGIT_RUNS) ?? [];
37
+ const runsB = b.match(DIGIT_RUNS) ?? [];
38
+ const shared = Math.min(runsA.length, runsB.length);
39
+ for (let i = 0; i < shared; i++) {
40
+ const x = runsA[i];
41
+ const y = runsB[i];
42
+ if (x === y) {
43
+ continue;
44
+ }
45
+ if (/^\d/.test(x) && /^\d/.test(y)) {
46
+ const nx = Number(x);
47
+ const ny = Number(y);
48
+ if (nx !== ny) {
49
+ return nx < ny ? -1 : 1;
50
+ }
51
+ return x.length < y.length ? -1 : 1;
52
+ }
53
+ return x < y ? -1 : 1;
54
+ }
55
+ return runsA.length - runsB.length;
56
+ }
57
+ /**
58
+ * Numbers first by value, then every other key run by run with digit runs by
59
+ * magnitude, so -1 before 1 and chr2 before chr10. The two classes never
60
+ * interleave: a signed or decimal number read run by run orders differently
61
+ * than by value, and letting them mix made the order intransitive.
62
+ */
63
+ export function compareGroupKeys(a, b) {
64
+ const rankDiff = groupKeyRank(a) - groupKeyRank(b);
65
+ if (rankDiff !== 0 || a === b) {
66
+ return rankDiff;
67
+ }
68
+ const numA = NUMERIC.test(a);
69
+ const numB = NUMERIC.test(b);
70
+ if (numA !== numB) {
71
+ return numA ? -1 : 1;
72
+ }
73
+ if (numA) {
74
+ const diff = Number(a) - Number(b);
75
+ if (diff !== 0) {
76
+ return diff < 0 ? -1 : 1;
77
+ }
78
+ }
79
+ return compareRuns(a, b);
80
+ }
81
+ /**
82
+ * The order a facet stacks its sections in. `domain` is the channel's
83
+ * declared order: the keys it lists come first, in that order, and the rest
84
+ * follow under `compareGroupKeys`. Every categorical channel in the tree
85
+ * reads its domain this way, so a listed value is a placement and an
86
+ * unlisted one is not an error.
87
+ */
88
+ export function groupKeyComparator(domain) {
89
+ if (!domain?.length) {
90
+ return compareGroupKeys;
91
+ }
92
+ const rank = new Map();
93
+ domain.forEach((key, i) => {
94
+ if (!rank.has(key)) {
95
+ rank.set(key, i);
96
+ }
97
+ });
98
+ return (a, b) => {
99
+ const ra = rank.get(a) ?? Infinity;
100
+ const rb = rank.get(b) ?? Infinity;
101
+ return ra !== rb ? (ra < rb ? -1 : 1) : compareGroupKeys(a, b);
102
+ };
103
+ }
104
+ /**
105
+ * The domain a re-pick keeps: a facet set from a menu or dialog names no
106
+ * domain, so one naming the field the current facet already reads carries
107
+ * the current order along. A reorder names its own domain and passes
108
+ * through, an empty one included.
109
+ */
110
+ export function carryGroupDomain(next, current) {
111
+ return next !== undefined &&
112
+ next.domain === undefined &&
113
+ current?.domain !== undefined &&
114
+ next.field === current.field
115
+ ? { ...next, domain: current.domain }
116
+ : next;
117
+ }
118
+ /**
119
+ * The overflow bucket's chip. Says MERGED because that lane is the one entry
120
+ * in a stack that is not a value, and this label is the only place a reader
121
+ * is told the cap fired at all.
122
+ */
123
+ export function overflowLabel(count) {
124
+ return `${count} merged values`;
125
+ }
126
+ /**
127
+ * Which section each key stacks into once the cap applies: the first
128
+ * `MAX_GROUPS` keys in natural order keep their own and the rest fold into
129
+ * the overflow section. The catch-all `''` is held out of the merge, since
130
+ * "lacking the value" is an answer users look for. A domain orders the
131
+ * sections and never decides which exist, so reordering them changes no
132
+ * key's section.
133
+ */
134
+ export function capGroupKeys(keys) {
135
+ const ordered = [...new Set(keys)].sort(compareGroupKeys);
136
+ const hasUntagged = ordered.includes('');
137
+ const named = ordered.filter(key => key !== '');
138
+ const merged = ordered.length > MAX_GROUPS
139
+ ? named.slice(MAX_GROUPS - (hasUntagged ? 2 : 1))
140
+ : [];
141
+ const mergedSet = new Set(merged);
142
+ return {
143
+ mergedCount: merged.length,
144
+ sectionOf: (key) => (mergedSet.has(key) ? OVERFLOW_GROUP_KEY : key),
145
+ };
146
+ }
147
+ /**
148
+ * Identity of the key space a facet hands out keys in: its field. A key means
149
+ * nothing on its own, since `''` is both the ungrouped section and every
150
+ * field's catch-all, so anything keyed by group key is dropped when this
151
+ * moves. The `domain` only orders the keys and is no part of the space, so a
152
+ * reorder keeps what a reader hid.
153
+ */
154
+ export function groupKeySpaceOf(facet) {
155
+ return facet?.field ?? '';
156
+ }
@@ -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';