@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
package/esm/ui/theme.js CHANGED
@@ -1,6 +1,6 @@
1
- import { createTheme } from '@mui/material';
1
+ import { createTheme } from '@mui/material/styles';
2
2
  import { deepMerge } from '../util/deepMerge.js';
3
- import { palettePresets, resolvePalette } from './palette.js';
3
+ import { palettePresets, resolvePalette, resolveThemeSelection, } from './palette.js';
4
4
  import { DEFAULT_FONT_SIZE, DEFAULT_SPACING } from './styleTheme.js';
5
5
  // The colors themselves live in `palette.ts`, which imports no toolkit. This
6
6
  // module's job is to hand what `resolvePalette` produces to MUI, so JBrowse's
@@ -9,46 +9,38 @@ import { DEFAULT_FONT_SIZE, DEFAULT_SPACING } from './styleTheme.js';
9
9
  // Static domain colors and the theme presets are re-exported from palette.ts so
10
10
  // existing `@jbrowse/core/ui` imports are unaffected. Import them from
11
11
  // `@jbrowse/core/ui/palette` to get them without pulling in Material UI.
12
- export { colorFwdStrand, colorInterchrom, colorLongInsert, colorLongreadInv, colorNeutralRead, colorPairLL, colorPairLR, colorPairLRDark, colorPairRL, colorPairRR, colorRevStrand, colorShortInsert, colorSplitReadInversion, colorSupplementary, colorUnmappedMate, colorUnmappedMateDark, methylated5hmC, methylated5mC, tagColorPalette, unmethylated5mC, } from './palette.js';
13
- // The display names and MUI component overrides layered on top of each palette
14
- // preset. The colors come from palette.ts, so a preset's palette is stated once
15
- // and this map is the Material UI half of it.
12
+ export { colorFwdStrand, colorInterchrom, colorLongInsert, colorLongreadInv, colorPairLL, colorPairLR, colorPairLRDark, colorPairRL, colorPairRR, colorRevStrand, colorShortInsert, colorSplitReadInversion, colorSupplementary, colorUnmappedMate, colorUnmappedMateDark, methylated5hmC, methylated5mC, tagColorPalette, unmethylated5mC, } from './palette.js';
13
+ // The display names and MUI component overrides layered on top of each palette.
14
+ // The colors come from palette.ts, so a palette is stated once and this map is
15
+ // the Material UI half of it. Light and dark are not entries here — they are
16
+ // `mode`, which every one of these resolves along.
16
17
  export const defaultThemes = {
17
18
  default: { palette: palettePresets.default, name: 'Default (from config)' },
18
- lightStock: { palette: palettePresets.lightStock, name: 'Light (stock)' },
19
- lightMinimal: {
20
- name: 'Light (minimal)',
21
- palette: palettePresets.lightMinimal,
19
+ stock: {
20
+ name: 'Stock',
21
+ palette: palettePresets.stock,
22
22
  },
23
- darkMinimal: {
24
- name: 'Dark (minimal)',
25
- palette: palettePresets.darkMinimal,
26
- },
27
- darkStock: {
28
- name: 'Dark (stock)',
29
- palette: palettePresets.darkStock,
30
- components: {
31
- // enableColorOnDark keeps the AppBar tinted with primary.main in dark
32
- // mode (default MUI behavior is to flatten it to the paper color)
33
- MuiAppBar: { defaultProps: { enableColorOnDark: true } },
34
- },
23
+ minimal: {
24
+ name: 'Minimal',
25
+ palette: palettePresets.minimal,
35
26
  },
36
27
  };
37
- // The default primary (midnight) has poor contrast as a text/control color in
38
- // dark mode, so fall back to a text-like color there. The extra selectors let
39
- // callers also recolor checked/focused states.
28
+ // The default primary (midnight) has poor contrast as a control color in dark
29
+ // mode, so a control takes `accent` there, the token JBrowse's own non-Material
30
+ // controls read. The extra selectors recolor checked/focused states too.
40
31
  // xref https://stackoverflow.com/a/72546130/2129219
41
- function darkModeContrastOverride(extraSelectors = [], textColor = 'secondary') {
32
+ function darkModeContrastOverride(extraSelectors = [], colorOf = p => p.accent) {
42
33
  return {
43
- root: ({ theme }) => theme.palette.mode === 'dark'
44
- ? {
45
- color: theme.palette.text[textColor],
46
- ...Object.fromEntries(extraSelectors.map(selector => [
47
- selector,
48
- { color: theme.palette.text[textColor] },
49
- ])),
34
+ root: ({ theme }) => {
35
+ if (theme.palette.mode !== 'dark') {
36
+ return undefined;
50
37
  }
51
- : undefined,
38
+ const color = colorOf(theme.palette);
39
+ return {
40
+ color,
41
+ ...Object.fromEntries(extraSelectors.map(s => [s, { color }])),
42
+ };
43
+ },
52
44
  };
53
45
  }
54
46
  // midnight primary is nearly invisible as an icon color on the dark header/
@@ -68,7 +60,19 @@ const baseThemeOptions = {
68
60
  fontSize: DEFAULT_FONT_SIZE,
69
61
  },
70
62
  spacing: DEFAULT_SPACING,
63
+ // an animation makes every popover, dialog and hover trail the input
64
+ motion: {
65
+ reducedMotion: 'always',
66
+ },
71
67
  components: {
68
+ MuiAppBar: {
69
+ // JBrowse's header keeps its brand in dark mode; MUI's default is to
70
+ // flatten it to the paper colour. A property of the app rather than of
71
+ // one palette — it used to sit on `darkStock` alone, so the theme a
72
+ // reader reaches by picking Dark over the default palette lost the
73
+ // header the old dark theme had. MUI reads this only in dark mode.
74
+ defaultProps: { enableColorOnDark: true },
75
+ },
72
76
  MuiTooltip: {
73
77
  styleOverrides: {
74
78
  tooltip: {
@@ -83,14 +87,13 @@ const baseThemeOptions = {
83
87
  // the default button, especially when not using variant=contained, uses
84
88
  // theme.palette.primary.main for text which is very bad with dark
85
89
  // mode+midnight primary
86
- styleOverrides: darkModeContrastOverride([], 'primary'),
90
+ styleOverrides: darkModeContrastOverride([], p => p.text.primary),
87
91
  },
88
92
  MuiAccordion: {
89
93
  defaultProps: {
90
94
  disableGutters: true,
91
95
  slotProps: {
92
96
  transition: {
93
- timeout: 150,
94
97
  unmountOnExit: true,
95
98
  },
96
99
  },
@@ -166,16 +169,6 @@ const baseThemeOptions = {
166
169
  size: 'small',
167
170
  },
168
171
  },
169
- MuiPopover: {
170
- defaultProps: {
171
- transitionDuration: 0,
172
- },
173
- },
174
- MuiMenu: {
175
- defaultProps: {
176
- transitionDuration: 0,
177
- },
178
- },
179
172
  MuiMenuItem: {
180
173
  defaultProps: {
181
174
  dense: true,
@@ -209,6 +202,11 @@ const baseThemeOptions = {
209
202
  MuiFormLabel: {
210
203
  styleOverrides: darkModeContrastOverride(['&.Mui-focused']),
211
204
  },
205
+ // the rail, track and thumb are all `currentColor` off the root, so a
206
+ // midnight root paints the whole control dark-on-dark
207
+ MuiSlider: {
208
+ styleOverrides: darkModeContrastOverride(),
209
+ },
212
210
  MuiAccordionSummary: {
213
211
  styleOverrides: {
214
212
  root: ({ theme: t }) => ({
@@ -217,6 +215,10 @@ const baseThemeOptions = {
217
215
  content: ({ theme: t }) => ({
218
216
  color: t.palette.tertiary.contrastText,
219
217
  }),
218
+ // MUI paints the chevron action.active, which vanishes on tertiary
219
+ expandIconWrapper: ({ theme: t }) => ({
220
+ color: t.palette.tertiary.contrastText,
221
+ }),
220
222
  },
221
223
  },
222
224
  MuiToggleButtonGroup: {
@@ -224,33 +226,6 @@ const baseThemeOptions = {
224
226
  size: 'small',
225
227
  },
226
228
  },
227
- // Speed up ripple animations for snappier feel (default is 550ms)
228
- // See https://mui.com/material-ui/api/button-base/
229
- // and https://github.com/mui/material-ui/blob/master/packages/mui-material/src/ButtonBase/TouchRipple.js
230
- //
231
- // The click ripple only: a *focus* ripple is a different animation on the
232
- // same two elements — childPulsate, which runs `infinite` — so a blanket
233
- // 50ms turns MUI's 2500ms breath into a 20Hz strobe that never stops. It
234
- // shows up on any focus-visible button, and Chrome hands one out unasked:
235
- // it re-evaluates :focus-visible on the already-focused element after any
236
- // keystroke, and the focus event that a browser-tab switch fires on the way
237
- // back is what makes MUI act on it. So these select the enter and leaving
238
- // keyframes by name and let the pulsate keep its own duration.
239
- //
240
- // Both selectors also outrank TouchRipple's own rules on specificity, which
241
- // is what `!important` was here for.
242
- MuiButtonBase: {
243
- styleOverrides: {
244
- root: {
245
- '& .MuiTouchRipple-ripple.MuiTouchRipple-rippleVisible:not(.MuiTouchRipple-ripplePulsate)': {
246
- animationDuration: '50ms',
247
- },
248
- '& .MuiTouchRipple-child.MuiTouchRipple-childLeaving': {
249
- animationDuration: '50ms',
250
- },
251
- },
252
- },
253
- },
254
229
  },
255
230
  };
256
231
  export function createJBrowseBaseTheme(theme = {}) {
@@ -262,12 +237,12 @@ export function createJBrowseBaseTheme(theme = {}) {
262
237
  * thread and a worker resolve to the same colors.
263
238
  */
264
239
  export function createJBrowseThemeFromArgs(args = {}) {
265
- return createJBrowseTheme(args.configTheme, { ...defaultThemes, ...args.extraThemes }, args.themeName);
240
+ return createJBrowseTheme(args.configTheme, { ...defaultThemes, ...args.extraThemes }, args.themeName, args.mode);
266
241
  }
267
242
  // Memoizes the built MUI theme across calls. Bounded in practice: the key space
268
243
  // is (config theme x selected preset), a handful of entries.
269
244
  const themeCache = new Map();
270
- function getThemeCacheKey(configTheme, selectedTheme, themeName) {
245
+ function getThemeCacheKey(configTheme, selectedTheme, themeName, mode) {
271
246
  // key on the single selected theme definition, not the whole themes map,
272
247
  // so configurable extraThemes that reuse a name still bust the cache.
273
248
  // configTheme only participates on the 'default' path that reads it
@@ -275,6 +250,7 @@ function getThemeCacheKey(configTheme, selectedTheme, themeName) {
275
250
  configTheme: themeName === 'default' ? configTheme : undefined,
276
251
  selectedTheme,
277
252
  themeName,
253
+ mode,
278
254
  },
279
255
  // a plugin-supplied theme can carry style-override callbacks, which
280
256
  // JSON.stringify drops, so two such themes would otherwise share a key
@@ -289,8 +265,11 @@ function getThemeCacheKey(configTheme, selectedTheme, themeName) {
289
265
  * component defaults and style overrides in `baseThemeOptions`, plus whatever
290
266
  * non-palette options the selected theme or the config theme declares.
291
267
  */
292
- export function createJBrowseTheme(configTheme = {}, themes = defaultThemes, themeName = 'default') {
293
- const cacheKey = getThemeCacheKey(configTheme, themes[themeName], themeName);
268
+ export function createJBrowseTheme(configTheme = {}, themes = defaultThemes, requestedName = 'default', requestedMode) {
269
+ // one resolver with resolvePalette, so a retired name and an extraThemes
270
+ // entry shadowing one mean the same thing to the colors and to the chrome
271
+ const { themeName, mode } = resolveThemeSelection(requestedName, requestedMode, themes);
272
+ const cacheKey = getThemeCacheKey(configTheme, themes[themeName], themeName, mode);
294
273
  const cached = themeCache.get(cacheKey);
295
274
  if (cached) {
296
275
  return cached;
@@ -301,7 +280,12 @@ export function createJBrowseTheme(configTheme = {}, themes = defaultThemes, the
301
280
  const merged = themeName === 'default' ? deepMerge(selected, configTheme) : selected;
302
281
  const theme = createTheme(createJBrowseBaseTheme({
303
282
  ...merged,
304
- palette: resolvePalette({ configTheme, themeName, extraThemes: themes }),
283
+ palette: resolvePalette({
284
+ configTheme,
285
+ themeName,
286
+ mode,
287
+ extraThemes: themes,
288
+ }),
305
289
  }));
306
290
  themeCache.set(cacheKey, theme);
307
291
  return theme;
@@ -26,11 +26,9 @@ export declare function checkboxItem(label: string, checked: boolean, onToggle:
26
26
  export declare function toggleItem(label: string, value: boolean, setValue: (value: boolean) => void, opts?: SettingRowOptions): CheckboxMenuItem;
27
27
  /** #menuBuilder radioItem | one radio setting row; the singular of `radioItems` */
28
28
  export declare function radioItem(label: string, checked: boolean, onClick: () => void, opts?: SettingRowOptions): RadioMenuItem;
29
- export interface RadioOption<T extends string> {
29
+ export interface RadioOption<T extends string> extends SettingRowOptions {
30
30
  value: T;
31
31
  label: string;
32
- helpText?: string;
33
- keepMenuOpen?: boolean;
34
32
  }
35
33
  /** #menuBuilder radioItems | a radio group, one row per option */
36
34
  export declare function radioItems<T extends string>(options: readonly RadioOption<T>[], current: T | undefined, setMode: (m: T) => void): RadioMenuItem[];
@@ -1,5 +1,5 @@
1
1
  /** #menuBuilder checkboxItem | one checkbox setting row */
2
- export function checkboxItem(label, checked, onToggle, opts) {
2
+ export function checkboxItem(label, checked, onToggle, opts = {}) {
3
3
  return {
4
4
  label,
5
5
  type: 'checkbox',
@@ -29,11 +29,12 @@ export function toggleItem(label, value, setValue, opts) {
29
29
  setValue(!value);
30
30
  }, opts);
31
31
  }
32
- // One radio row. The singular of `radioItems`, and what
33
- // `promotableRadioItem` builds through, so a lone radio row and a member of a
34
- // group are the same object plus or minus its pin.
32
+ // One radio row. The singular of `radioItems`, for a group the plural form
33
+ // can't express: a row with no single value (the colorBy "Tag..." row before a
34
+ // tag is picked), or a group gated row by row and mixing in a non-uniform peer
35
+ // (the alignments size presets and their "Custom..." row).
35
36
  /** #menuBuilder radioItem | one radio setting row; the singular of `radioItems` */
36
- export function radioItem(label, checked, onClick, opts) {
37
+ export function radioItem(label, checked, onClick, opts = {}) {
37
38
  return {
38
39
  label,
39
40
  type: 'radio',
@@ -19,7 +19,7 @@ export declare function useAssemblySelection(session: AbstractSessionModel, loca
19
19
  error: unknown;
20
20
  loadingP: Promise<void> | undefined;
21
21
  adapterLoads: import("@jbrowse/quick-lru").default<string, Promise<import("../assemblyManager/refNameMaps.ts").RefNameAliases>>;
22
- volatileRegions: import("../assemblyManager/assembly.ts").BasicRegion[] | undefined;
22
+ regions: import("../assemblyManager/assembly.ts").BasicRegion[] | undefined;
23
23
  refNameAliases: import("../assemblyManager/refNameMaps.ts").RefNameAliases | undefined;
24
24
  canonicalToSeqAdapterRefNames: Record<string, string> | undefined;
25
25
  cytobands: import("../util/simpleFeature.ts").Feature[] | undefined;
@@ -57,7 +57,6 @@ export declare function useAssemblySelection(session: AbstractSessionModel, loca
57
57
  afterAttach(): void;
58
58
  } & {
59
59
  readonly initialized: boolean;
60
- readonly regions: import("../assemblyManager/assembly.ts").BasicRegion[] | undefined;
61
60
  readonly allRefNames: string[] | undefined;
62
61
  readonly namesByCanonicalRefName: Map<string, string[]> | undefined;
63
62
  readonly rpcManager: import("../rpc/RpcManager.ts").default;
@@ -75,6 +74,7 @@ export declare function useAssemblySelection(session: AbstractSessionModel, loca
75
74
  getCanonicalRefName2(refName: string): string;
76
75
  isValidRefName(refName: string): boolean;
77
76
  } & {
77
+ getRefNamePosition(refName: string): number | undefined;
78
78
  getAliasesForRefName(refName: string): string[];
79
79
  getRefNameMapForAdapter(adapterConf: {
80
80
  [x: string]: unknown;
@@ -86,7 +86,7 @@ export declare function useAssemblySelection(session: AbstractSessionModel, loca
86
86
  error: unknown;
87
87
  loadingP: Promise<void> | undefined;
88
88
  adapterLoads: import("@jbrowse/quick-lru").default<string, Promise<import("../assemblyManager/refNameMaps.ts").RefNameAliases>>;
89
- volatileRegions: import("../assemblyManager/assembly.ts").BasicRegion[] | undefined;
89
+ regions: import("../assemblyManager/assembly.ts").BasicRegion[] | undefined;
90
90
  refNameAliases: import("../assemblyManager/refNameMaps.ts").RefNameAliases | undefined;
91
91
  canonicalToSeqAdapterRefNames: Record<string, string> | undefined;
92
92
  cytobands: import("../util/simpleFeature.ts").Feature[] | undefined;
@@ -124,7 +124,6 @@ export declare function useAssemblySelection(session: AbstractSessionModel, loca
124
124
  afterAttach(): void;
125
125
  } & {
126
126
  readonly initialized: boolean;
127
- readonly regions: import("../assemblyManager/assembly.ts").BasicRegion[] | undefined;
128
127
  readonly allRefNames: string[] | undefined;
129
128
  readonly namesByCanonicalRefName: Map<string, string[]> | undefined;
130
129
  readonly rpcManager: import("../rpc/RpcManager.ts").default;
@@ -142,6 +141,7 @@ export declare function useAssemblySelection(session: AbstractSessionModel, loca
142
141
  getCanonicalRefName2(refName: string): string;
143
142
  isValidRefName(refName: string): boolean;
144
143
  } & {
144
+ getRefNamePosition(refName: string): number | undefined;
145
145
  getAliasesForRefName(refName: string): string[];
146
146
  getRefNameMapForAdapter(adapterConf: {
147
147
  [x: string]: unknown;
@@ -0,0 +1 @@
1
+ export declare const VIEW_HEADER_HEIGHT = 28;
@@ -0,0 +1 @@
1
+ export const VIEW_HEADER_HEIGHT = 28;
@@ -43,7 +43,7 @@ export interface ViewLayout {
43
43
  export declare function moveTo(self: MoveSnap & {
44
44
  zoomTo: (arg: number) => number;
45
45
  scrollTo: (arg: number) => void;
46
- }, start?: BpOffset, end?: BpOffset): void;
46
+ }, start?: BpOffset, end?: BpOffset, minBpPerPx?: number): void;
47
47
  /**
48
48
  * Pure version of moveTo: returns the {bpPerPx, offsetPx} that moveTo would
49
49
  * apply, without mutating any model. Assumes no bpPerPx clamping (i.e.
@@ -121,7 +121,7 @@ export declare function bpToPx({ refName, coord, displayedRegionIndex, self, }:
121
121
  * Undefined when no displayed region holds the coord, same as `bpToPx`; a
122
122
  * caller that means "as far as the region goes" clamps before asking.
123
123
  */
124
- export declare function bpToOffset({ refName, coord, displayedRegions, }: {
124
+ export declare function bpToOffset({ refName, coord, displayedRegions, displayedRegionIndex, }: {
125
125
  refName: string;
126
126
  coord: number;
127
127
  displayedRegions: {
@@ -130,6 +130,7 @@ export declare function bpToOffset({ refName, coord, displayedRegions, }: {
130
130
  end: number;
131
131
  reversed?: boolean;
132
132
  }[];
133
+ displayedRegionIndex?: number;
133
134
  }): BpOffset | undefined;
134
135
  /**
135
136
  * Where a 0-based genomic coord sits in the LINEARIZED bp space — the
@@ -145,7 +146,7 @@ export declare function bpToOffset({ refName, coord, displayedRegions, }: {
145
146
  * `undefined` when no displayed region holds the coord, exactly as `bpToPx`
146
147
  * answers: a refName the view is not showing has no place on its screen.
147
148
  */
148
- export declare function bpToLinearBp({ refName, coord, displayedRegions, }: {
149
+ export declare function bpToLinearBp({ refName, coord, displayedRegions, displayedRegionIndex, }: {
149
150
  refName: string;
150
151
  coord: number;
151
152
  displayedRegions: {
@@ -154,6 +155,7 @@ export declare function bpToLinearBp({ refName, coord, displayedRegions, }: {
154
155
  end: number;
155
156
  reversed?: boolean;
156
157
  }[];
158
+ displayedRegionIndex?: number;
157
159
  }): number | undefined;
158
160
  /**
159
161
  * Screen order of two {@link BpOffset}s: negative when `a` is to the left of
@@ -28,10 +28,10 @@ function computeScrollPos(self, start, bpPerPx, extraBp) {
28
28
  return Math.round((cumulativeBp(self.displayedRegions, start.index, start.offset) - extraBp) /
29
29
  bpPerPx);
30
30
  }
31
- export function moveTo(self, start, end) {
31
+ export function moveTo(self, start, end, minBpPerPx = 0) {
32
32
  if (start && end) {
33
33
  const targetBpPerPx = computeTargetBpPerPx(self, start, end);
34
- const newBpPerPx = self.zoomTo(targetBpPerPx);
34
+ const newBpPerPx = self.zoomTo(Math.max(targetBpPerPx, minBpPerPx));
35
35
  const extraBp = targetBpPerPx < newBpPerPx
36
36
  ? ((newBpPerPx - targetBpPerPx) * self.width) / 2
37
37
  : 0;
@@ -187,9 +187,12 @@ export function bpToPx({ refName, coord, displayedRegionIndex, self, }) {
187
187
  * Undefined when no displayed region holds the coord, same as `bpToPx`; a
188
188
  * caller that means "as far as the region goes" clamps before asking.
189
189
  */
190
- export function bpToOffset({ refName, coord, displayedRegions, }) {
190
+ export function bpToOffset({ refName, coord, displayedRegions, displayedRegionIndex, }) {
191
191
  for (const [index, r] of displayedRegions.entries()) {
192
- if (refName === r.refName && coord >= r.start && coord <= r.end) {
192
+ if (refName === r.refName &&
193
+ coord >= r.start &&
194
+ coord <= r.end &&
195
+ (displayedRegionIndex === undefined || displayedRegionIndex === index)) {
193
196
  return { refName, index, offset: bpOffsetInRegion(r, coord) };
194
197
  }
195
198
  }
@@ -209,8 +212,13 @@ export function bpToOffset({ refName, coord, displayedRegions, }) {
209
212
  * `undefined` when no displayed region holds the coord, exactly as `bpToPx`
210
213
  * answers: a refName the view is not showing has no place on its screen.
211
214
  */
212
- export function bpToLinearBp({ refName, coord, displayedRegions, }) {
213
- const at = bpToOffset({ refName, coord, displayedRegions });
215
+ export function bpToLinearBp({ refName, coord, displayedRegions, displayedRegionIndex, }) {
216
+ const at = bpToOffset({
217
+ refName,
218
+ coord,
219
+ displayedRegions,
220
+ displayedRegionIndex,
221
+ });
214
222
  return at ? cumulativeBp(displayedRegions, at.index, at.offset) : undefined;
215
223
  }
216
224
  /**
@@ -130,8 +130,9 @@ declare const Base1DView: import("@jbrowse/mobx-state-tree").IModelType<{
130
130
  *
131
131
  * @param start - object as `{start, end, offset, index}`
132
132
  * @param end - object as `{start, end, offset, index}`
133
+ * @param minBpPerPx - zoom no further in than this, centering the span
133
134
  */
134
- moveTo(start?: BpOffset, end?: BpOffset): void;
135
+ moveTo(start?: BpOffset, end?: BpOffset, minBpPerPx?: number): void;
135
136
  }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>;
136
137
  export type Base1DViewStateModel = typeof Base1DView;
137
138
  export type Base1DViewModel = Instance<Base1DViewStateModel>;
@@ -230,9 +230,10 @@ const Base1DView = types
230
230
  *
231
231
  * @param start - object as `{start, end, offset, index}`
232
232
  * @param end - object as `{start, end, offset, index}`
233
+ * @param minBpPerPx - zoom no further in than this, centering the span
233
234
  */
234
- moveTo(start, end) {
235
- moveTo(self, start, end);
235
+ moveTo(start, end, minBpPerPx) {
236
+ moveTo(self, start, end, minBpPerPx);
236
237
  },
237
238
  }));
238
239
  export default Base1DView;
@@ -1,19 +1,21 @@
1
1
  /**
2
- * Restart clip-id numbering for a new export document.
2
+ * Run `render` as one document's clip-id numbering run, starting at 0, then put
3
+ * the counter back.
3
4
  *
4
- * Without it the counter runs for the lifetime of the process, so an export is
5
- * numbered from wherever the previous one stopped and the same view exported
6
- * twice differs in every clip id. That is the churn `svgNodeId` was written to
7
- * get rid of, arriving by a second route: diffing two saved SVGs shows changes
8
- * that aren't real, and `jest -t` on any export test but the first fails its
9
- * checked-in snapshot with a diff that is nothing but renumbering.
5
+ * Starting at 0 is what makes the same view export to the same bytes: a counter
6
+ * left running numbers each export from wherever the previous one stopped, so
7
+ * diffing two saved SVGs shows changes that aren't real and `jest -t` on any
8
+ * export test but the first fails its snapshot on renumbering alone.
10
9
  *
11
- * Called by `wrapSvgExport`, and safe there and only there: the
12
- * `renderToStaticMarkup` it wraps is synchronous, so every `PaintLayer` in the
13
- * document draws before any other export can begin. Anything that resets on a
14
- * boundary an `await` can cross would let two exports share a numbering run.
10
+ * Putting it back is what keeps a file export from renumbering the page: live
11
+ * figures (`useViewSvgFigure`) mint from the same counter into one DOM, where
12
+ * ids must not repeat, so a reset that stuck would let the next figure reuse an
13
+ * id another figure still points at.
14
+ *
15
+ * `render` must be synchronous — an `await` inside it would let two documents
16
+ * share a numbering run.
15
17
  */
16
- export declare function resetSvgClipIds(): void;
18
+ export declare function withFreshSvgClipIds<T>(render: () => T): T;
17
19
  export declare class SvgCanvas {
18
20
  private parts;
19
21
  private pathData;
@@ -36,6 +38,7 @@ export declare class SvgCanvas {
36
38
  private e;
37
39
  private f;
38
40
  private get axisAligned();
41
+ private get lengthScale();
39
42
  private transformPoint;
40
43
  private transformSize;
41
44
  private originMatrixAttr;
@@ -72,7 +75,6 @@ export declare class SvgCanvas {
72
75
  fillText(text: string, x: number, y: number): void;
73
76
  strokeText(text: string, x: number, y: number): void;
74
77
  drawImage(..._args: unknown[]): void;
75
- putImageData(..._args: unknown[]): void;
76
78
  clip(..._args: unknown[]): void;
77
79
  measureText(text: string): {
78
80
  width: number;