@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
@@ -1,14 +1,16 @@
1
1
  import type PluginManager from '../PluginManager.ts';
2
- import type { SimpleFeatureSerialized } from '../util/index.ts';
2
+ import type { AnyConfigurationModel } from '../configuration/index.ts';
3
+ import type { ParentFeatureSummary, SimpleFeatureSerialized } from '../util/index.ts';
3
4
  import type { SequenceHoverPosition } from './SequenceFeatureDetails/model.ts';
5
+ import type { FormatDetailsTiers } from './formatDetails.ts';
4
6
  import type { Descriptors, MaybeSerializedFeat } from './types.tsx';
5
7
  import type { Instance } from '@jbrowse/mobx-state-tree';
6
8
  /**
7
9
  * #stateModel BaseFeatureWidget
8
- * displays data about features, allowing configuration callbacks to modify the
9
- * contents of what is displayed
10
- *
11
- * see: formatDetails-\>feature,formatDetails-\>subfeatures
10
+ * The feature-details panel. `featureData` is the clicked feature with the
11
+ * track's and the session's `formatDetails` callbacks applied, derived on read
12
+ * from the raw feature the widget was opened with, so the same widget follows a
13
+ * config edit and survives its track being closed.
12
14
  */
13
15
  export declare function stateModelFactory(pluginManager: PluginManager): import("@jbrowse/mobx-state-tree").IModelType<{
14
16
  /**
@@ -21,10 +23,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
21
23
  type: import("@jbrowse/mobx-state-tree").ILiteralType<"BaseFeatureWidget">;
22
24
  /**
23
25
  * #property
24
- */
25
- featureData: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IType<MaybeSerializedFeat, MaybeSerializedFeat, MaybeSerializedFeat>, [undefined]>;
26
- /**
27
- * #property
26
+ * the feature as the click handed it over, before any callback ran.
27
+ * Persisted as `featureData`
28
28
  */
29
29
  unformattedFeatureData: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IType<MaybeSerializedFeat, MaybeSerializedFeat, MaybeSerializedFeat>, [undefined]>;
30
30
  /**
@@ -43,10 +43,6 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
43
43
  * #property
44
44
  */
45
45
  trackType: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
46
- /**
47
- * #property
48
- */
49
- maxDepth: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<number>>;
50
46
  /**
51
47
  * #property
52
48
  */
@@ -69,40 +65,57 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
69
65
  * #property
70
66
  */
71
67
  descriptions: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IType<Descriptors | undefined, Descriptors | undefined, Descriptors | undefined>, [undefined]>;
68
+ /**
69
+ * #property
70
+ * names the feature this one was reached through, when it was reached
71
+ * through one -- a transcript clicked inside its gene
72
+ */
73
+ parentFeature: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IType<ParentFeatureSummary | undefined, ParentFeatureSummary | undefined, ParentFeatureSummary | undefined>, [undefined]>;
72
74
  }, {
73
- error: unknown;
74
75
  sequenceHoverPosition: SequenceHoverPosition | undefined;
75
76
  } & {
76
77
  /**
77
- * #action
78
+ * #getter
79
+ * the config the track tier of `formatDetails` reads. The open track's
80
+ * own while it is open; after it is closed, the session's copy of the
81
+ * same config, which is why the widget records `trackId`
78
82
  */
79
- setSequenceHoverPosition(pos: SequenceHoverPosition | undefined): void;
83
+ readonly trackConfiguration: AnyConfigurationModel | undefined;
84
+ } & {
85
+ readonly formatDetailsTiers: FormatDetailsTiers;
86
+ } & {
87
+ readonly formatted: {
88
+ feature?: SimpleFeatureSerialized;
89
+ error?: Error;
90
+ };
80
91
  /**
81
- * #action
92
+ * #getter
93
+ * levels of subfeature card the panel renders; unset means no limit
82
94
  */
83
- setFeatureData(featureData: SimpleFeatureSerialized): void;
95
+ readonly maxDepth: number | undefined;
96
+ } & {
84
97
  /**
85
- * #action
98
+ * #getter
99
+ * the feature with every `formatDetails` callback applied
86
100
  */
87
- clearFeatureData(): void;
101
+ readonly featureData: SimpleFeatureSerialized | undefined;
88
102
  /**
89
- * #action
103
+ * #getter
90
104
  */
91
- setFormattedData(feat: SimpleFeatureSerialized): void;
105
+ readonly error: Error | undefined;
106
+ } & {
92
107
  /**
93
108
  * #action
94
109
  */
95
- setTrackInfo(type?: string, trackId?: string): void;
110
+ setSequenceHoverPosition(pos: SequenceHoverPosition | undefined): void;
96
111
  /**
97
112
  * #action
98
113
  */
99
- setMaxDepth(maxDepth?: number): void;
114
+ setFeatureData(featureData: SimpleFeatureSerialized): void;
100
115
  /**
101
116
  * #action
102
117
  */
103
- setError(e: unknown): void;
104
- } & {
105
- afterCreate(): void;
118
+ clearFeatureData(): void;
106
119
  }, import("@jbrowse/mobx-state-tree")._NotCustomized, {
107
120
  id: string;
108
121
  type: "BaseFeatureWidget";
@@ -110,10 +123,10 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
110
123
  track: import("@jbrowse/mobx-state-tree").ReferenceIdentifier | undefined;
111
124
  trackId: string | undefined;
112
125
  trackType: string | undefined;
113
- maxDepth: number | undefined;
114
126
  sequenceFeatureDetails: import("@jbrowse/mobx-state-tree").ModelSnapshotType<{}>;
115
127
  descriptions: Descriptors | undefined;
116
- finalizedFeatureData: any;
128
+ parentFeature: ParentFeatureSummary | undefined;
129
+ featureData: MaybeSerializedFeat;
117
130
  }>;
118
131
  export type BaseFeatureWidgetStateModel = ReturnType<typeof stateModelFactory>;
119
132
  export type BaseFeatureWidgetModel = Instance<BaseFeatureWidgetStateModel>;
@@ -1,16 +1,18 @@
1
- import { addDisposer, types } from '@jbrowse/mobx-state-tree';
2
- import { autorun } from 'mobx';
1
+ import { getEnv, isStateTreeNode, types } from '@jbrowse/mobx-state-tree';
2
+ import { hydrateTrackConfig } from '../configuration/index.js';
3
3
  import { getSession } from '../util/index.js';
4
4
  import { ElementId } from '../util/types/mst.js';
5
5
  import { SequenceFeatureDetailsF } from './SequenceFeatureDetails/model.js';
6
6
  import { applyFormatDetails, formatDetailsNumber } from './formatDetails.js';
7
- import { nullReplacer } from './util.js';
7
+ function isTrackNode(thing) {
8
+ return isStateTreeNode(thing) && 'type' in thing && 'configuration' in thing;
9
+ }
8
10
  /**
9
11
  * #stateModel BaseFeatureWidget
10
- * displays data about features, allowing configuration callbacks to modify the
11
- * contents of what is displayed
12
- *
13
- * see: formatDetails-\>feature,formatDetails-\>subfeatures
12
+ * The feature-details panel. `featureData` is the clicked feature with the
13
+ * track's and the session's `formatDetails` callbacks applied, derived on read
14
+ * from the raw feature the widget was opened with, so the same widget follows a
15
+ * config edit and survives its track being closed.
14
16
  */
15
17
  export function stateModelFactory(pluginManager) {
16
18
  return types
@@ -25,10 +27,8 @@ export function stateModelFactory(pluginManager) {
25
27
  type: types.literal('BaseFeatureWidget'),
26
28
  /**
27
29
  * #property
28
- */
29
- featureData: types.optional(types.frozen(), undefined),
30
- /**
31
- * #property
30
+ * the feature as the click handed it over, before any callback ran.
31
+ * Persisted as `featureData`
32
32
  */
33
33
  unformattedFeatureData: types.optional(types.frozen(), undefined),
34
34
  /**
@@ -50,27 +50,94 @@ export function stateModelFactory(pluginManager) {
50
50
  /**
51
51
  * #property
52
52
  */
53
- maxDepth: types.maybe(types.number),
53
+ sequenceFeatureDetails: types.optional(SequenceFeatureDetailsF(), {}),
54
54
  /**
55
55
  * #property
56
56
  */
57
- sequenceFeatureDetails: types.optional(SequenceFeatureDetailsF(), {}),
57
+ descriptions: types.optional(types.frozen(), undefined),
58
58
  /**
59
59
  * #property
60
+ * names the feature this one was reached through, when it was reached
61
+ * through one -- a transcript clicked inside its gene
60
62
  */
61
- descriptions: types.optional(types.frozen(), undefined),
63
+ parentFeature: types.optional(types.frozen(), undefined),
62
64
  })
63
65
  .volatile(() => ({
64
- /**
65
- * #volatile
66
- */
67
- error: undefined,
68
66
  /**
69
67
  * #volatile
70
68
  * genomic base currently hovered in this widget's sequence panel, read by
71
69
  * the LGV crosshair overlay
72
70
  */
73
71
  sequenceHoverPosition: undefined,
72
+ }))
73
+ .views(self => ({
74
+ /**
75
+ * #getter
76
+ * the config the track tier of `formatDetails` reads. The open track's
77
+ * own while it is open; after it is closed, the session's copy of the
78
+ * same config, which is why the widget records `trackId`
79
+ */
80
+ get trackConfiguration() {
81
+ const { track, trackId } = self;
82
+ if (track) {
83
+ return track.configuration;
84
+ }
85
+ if (!trackId) {
86
+ return undefined;
87
+ }
88
+ const conf = getSession(self).getTrackById(trackId);
89
+ return conf === undefined || isStateTreeNode(conf)
90
+ ? conf
91
+ : hydrateTrackConfig(getEnv(self).pluginManager, conf);
92
+ },
93
+ }))
94
+ .views(self => ({
95
+ get formatDetailsTiers() {
96
+ return {
97
+ session: getSession(self).configuration,
98
+ track: self.trackConfiguration,
99
+ };
100
+ },
101
+ }))
102
+ .views(self => ({
103
+ get formatted() {
104
+ const { unformattedFeatureData } = self;
105
+ if (!unformattedFeatureData) {
106
+ return {};
107
+ }
108
+ try {
109
+ return {
110
+ feature: applyFormatDetails(self.formatDetailsTiers, unformattedFeatureData),
111
+ };
112
+ }
113
+ catch (e) {
114
+ const error = new Error(`Error running the formatDetails callbacks: ${e}`, { cause: e });
115
+ console.error(error);
116
+ return { error };
117
+ }
118
+ },
119
+ /**
120
+ * #getter
121
+ * levels of subfeature card the panel renders; unset means no limit
122
+ */
123
+ get maxDepth() {
124
+ return formatDetailsNumber(self.formatDetailsTiers, 'maxDepth');
125
+ },
126
+ }))
127
+ .views(self => ({
128
+ /**
129
+ * #getter
130
+ * the feature with every `formatDetails` callback applied
131
+ */
132
+ get featureData() {
133
+ return self.formatted.feature;
134
+ },
135
+ /**
136
+ * #getter
137
+ */
138
+ get error() {
139
+ return self.formatted.error;
140
+ },
74
141
  }))
75
142
  .actions(self => ({
76
143
  /**
@@ -99,96 +166,29 @@ export function stateModelFactory(pluginManager) {
99
166
  * #action
100
167
  */
101
168
  clearFeatureData() {
102
- self.featureData = undefined;
103
- },
104
- /**
105
- * #action
106
- */
107
- setFormattedData(feat) {
108
- self.featureData = feat;
109
- },
110
- /**
111
- * #action
112
- */
113
- setTrackInfo(type, trackId) {
114
- self.trackId = trackId;
115
- self.trackType = type;
116
- },
117
- /**
118
- * #action
119
- */
120
- setMaxDepth(maxDepth) {
121
- self.maxDepth = maxDepth;
122
- },
123
- /**
124
- * #action
125
- */
126
- setError(e) {
127
- self.error = e;
128
- },
129
- }))
130
- .actions(self => ({
131
- afterCreate() {
132
- addDisposer(self, autorun(function featureWidgetAutorun() {
133
- const { track } = self;
134
- // read before any config read so the catch below can attribute
135
- // the failure without repeating one that may be what threw
136
- let trackId;
137
- try {
138
- const { unformattedFeatureData } = self;
139
- const session = getSession(self);
140
- if (track) {
141
- trackId = track.configuration.trackId;
142
- self.setTrackInfo(track.type, trackId);
143
- }
144
- // both tiers apply: a widget can outlive its track
145
- // (safeReference) or never have had one, and the session-wide
146
- // `configuration.formatDetails` still means something. The
147
- // reads stay here in the autorun body rather than moving into
148
- // an action, which would run untracked
149
- const tiers = { session, track };
150
- // an unset maxDepth is the meaningful value, not a missing one:
151
- // the panel reads it as no nesting limit
152
- self.setMaxDepth(formatDetailsNumber(tiers, 'maxDepth'));
153
- if (unformattedFeatureData) {
154
- self.setFormattedData(applyFormatDetails(tiers, unformattedFeatureData));
155
- }
156
- }
157
- catch (e) {
158
- // jexl throws a bare parse/eval message with nothing naming the
159
- // slot or the config it came from, and this banner replaces the
160
- // whole panel -- say where to look
161
- const where = trackId
162
- ? `track "${trackId}"`
163
- : 'the session configuration';
164
- const err = new Error(`Error running the formatDetails callbacks for ${where}: ${e}`, { cause: e });
165
- console.error(err);
166
- self.setError(err);
167
- }
168
- }, { name: 'FeatureWidget' }));
169
+ self.unformattedFeatureData = undefined;
169
170
  },
170
171
  }))
171
172
  .preProcessSnapshot((snap) => {
172
- // old snapshots used `featureData`, new ones use `finalizedFeatureData`;
173
- // accept both for backwards compat
174
- const { featureData, finalizedFeatureData, ...rest } = (snap ?? {});
173
+ const { featureData, ...rest } = snap ?? {};
174
+ // here rather than in afterAttach: a second feature opened into the same
175
+ // widget id reconciles onto the existing node, which never re-attaches
176
+ const { track } = rest;
175
177
  return {
176
178
  unformattedFeatureData: featureData,
177
- featureData: finalizedFeatureData,
179
+ ...(isTrackNode(track)
180
+ ? { trackId: track.configuration.trackId, trackType: track.type }
181
+ : {}),
178
182
  ...rest,
179
183
  };
180
184
  })
181
185
  .postProcessSnapshot(snap => {
182
- const { unformattedFeatureData, featureData, ...rest } = snap;
183
- // JSON.stringify can return empty if too large
184
- const s2 = JSON.stringify(featureData, nullReplacer);
185
- const featureTooLargeToBeSerialized = !s2 || s2.length > 2_000_000;
186
- // `finalizedFeatureData` is persisted (rather than `featureData`) so
187
- // loading from snapshot doesn't re-run the formatter callbacks
186
+ const { unformattedFeatureData, ...rest } = snap;
187
+ // undefined when there is no feature
188
+ const json = JSON.stringify(unformattedFeatureData);
189
+ const tooLargeToPersist = !json || json.length > 2_000_000;
188
190
  return {
189
- finalizedFeatureData: featureTooLargeToBeSerialized
190
- ? undefined
191
- : JSON.parse(s2),
191
+ featureData: tooLargeToPersist ? undefined : unformattedFeatureData,
192
192
  ...rest,
193
193
  };
194
194
  });
@@ -1,23 +1,29 @@
1
+ import type { MenuItem } from '../ui/MenuTypes.ts';
1
2
  import type { SimpleFeatureSerialized } from '../util/simpleFeature.ts';
2
- import type { BaseFeatureWidgetModel } from './stateModelFactory.ts';
3
+ import type { SequenceFeatureDetailsModel, SequenceHoverTarget } from './SequenceFeatureDetails/model.ts';
4
+ import type { IStateTreeNode } from '@jbrowse/mobx-state-tree';
3
5
  import type React from 'react';
6
+ export interface FeatureDetailsModel extends IStateTreeNode, SequenceHoverTarget {
7
+ maxDepth: number | undefined;
8
+ sequenceFeatureDetails: SequenceFeatureDetailsModel;
9
+ view: {
10
+ assemblyNames: string[];
11
+ } | undefined;
12
+ }
4
13
  export interface Descriptors {
5
14
  [key: string]: React.ReactNode | Descriptors;
6
15
  }
7
16
  export type FeatureFormatter = (value: unknown, key: string, index?: number) => React.ReactNode;
17
+ /** Menu items for one attribute's value, offered from a button on its row. */
18
+ export type FieldActions = (path: string[], value: unknown) => MenuItem[];
8
19
  export interface BaseProps extends BaseCardProps {
9
20
  feature: SimpleFeatureSerialized;
10
21
  formatter?: FeatureFormatter;
11
22
  descriptions?: Descriptors;
12
- model?: BaseFeatureWidgetModel;
13
23
  }
14
24
  export interface BaseCardProps {
15
25
  title?: string;
16
26
  defaultExpanded?: boolean;
17
27
  children?: React.ReactNode;
18
28
  }
19
- export interface SerializedFeat {
20
- [key: string]: unknown;
21
- subfeatures?: Record<string, unknown>[];
22
- }
23
29
  export type MaybeSerializedFeat = SimpleFeatureSerialized | undefined;
@@ -1,4 +1,3 @@
1
- import type { SerializedFeat } from './types.tsx';
2
1
  export interface Feat {
3
2
  start: number;
4
3
  end: number;
@@ -7,13 +6,6 @@ export interface Feat {
7
6
  id?: string | number;
8
7
  phase?: number;
9
8
  }
10
- export interface ParentFeat extends Feat {
11
- uniqueId: string;
12
- strand?: number;
13
- refName: string;
14
- subfeatures?: Feat[];
15
- parentId?: string;
16
- }
17
9
  export interface SeqState {
18
10
  seq: string;
19
11
  upstream?: string;
@@ -25,5 +17,3 @@ export interface ErrorState {
25
17
  export declare function filterSuccessiveElementsWithSameStartAndEndCoord(list: Feat[]): Feat[];
26
18
  export declare function ellipses(slug: string): string;
27
19
  export declare function getStrandStr(strand: number | undefined): "" | "(+)" | "(-)";
28
- export declare const nullReplacer: (_: string, v: unknown) => {} | null;
29
- export declare function formatSubfeatures(obj: SerializedFeat, depth: number, parse: (obj: Record<string, unknown>) => void, currentDepth?: number): void;
@@ -12,20 +12,3 @@ export function ellipses(slug) {
12
12
  export function getStrandStr(strand) {
13
13
  return strand === -1 ? '(-)' : strand === 1 ? '(+)' : '';
14
14
  }
15
- // JSON only serializes null, not undefined; feature fields are hidden by a
16
- // formatDetails callback returning undefined (jexl can't produce null), so when
17
- // persisting we round-trip undefined to null to keep the field hidden after
18
- // reload (detail components filter with `!= null`). see config guide.
19
- export const nullReplacer = (_, v) => v === undefined ? null : v;
20
- // `depth` is how many levels of subfeature the `formatDetails.subfeatures`
21
- // callback runs on, counted from the clicked feature. The caller resolves it
22
- // across the session and track tiers and passes 0 when neither declares one, so
23
- // a config with no formatDetails schema formats nothing rather than every level
24
- export function formatSubfeatures(obj, depth, parse, currentDepth = 0) {
25
- if (currentDepth < depth) {
26
- for (const sub of obj.subfeatures ?? []) {
27
- formatSubfeatures(sub, depth, parse, currentDepth + 1);
28
- parse(sub);
29
- }
30
- }
31
- }
package/esm/CorePlugin.js CHANGED
@@ -1,10 +1,40 @@
1
- import { lazy } from 'react';
1
+ import { trackTypeForAdapter } from '@jbrowse/add-track-core';
2
2
  import { configSchema, stateModelFactory } from './BaseFeatureWidget/index.js';
3
3
  import Plugin from './Plugin.js';
4
4
  import CytobandAdapterF from './data_adapters/CytobandAdapter/index.js';
5
5
  import WidgetType from './pluggableElementTypes/WidgetType.js';
6
6
  import * as coreRpcMethods from './rpc/coreRpcMethods.js';
7
- import { installFormatGuessers } from './util/formatGuessers.js';
7
+ import { guessTrackConfFromTable } from './util/formatGuessers.js';
8
+ import { getFileName } from './util/getFileName.js';
9
+ import { lazyWithPreload } from './util/lazyWithPreload.js';
10
+ import { addAdapterGuesser, addTrackTypeGuesser } from './util/tracks.js';
11
+ /**
12
+ * Guess every format `@jbrowse/add-track-core`'s table describes — the same
13
+ * table `@jbrowse/cli`'s `add-track` reads, so a file resolves to the same
14
+ * adapter config in the app and on the command line.
15
+ *
16
+ * Whether a build can open a format is decided by `hasAdapterType`, not by the
17
+ * table: guessing `BamAdapter` in a build with no alignments plugin writes a
18
+ * track config that fails at render. A plugin therefore registers its adapters
19
+ * and nothing else — there is no format list to keep in step. ADR-077.
20
+ *
21
+ * `CorePlugin` installs this first, so any `addAdapterGuesser` a plugin
22
+ * registers is later in the chain and wins over the table. That is how a format
23
+ * the table cannot express is added, and how a third-party plugin claims one.
24
+ */
25
+ // #region installFormatGuessers
26
+ function installFormatGuessers(pluginManager) {
27
+ addAdapterGuesser(pluginManager, (file, index, adapterHint) => {
28
+ const adapter = guessTrackConfFromTable(file, index, adapterHint)?.adapter;
29
+ return adapter && pluginManager.hasAdapterType(adapter.type)
30
+ ? adapter
31
+ : undefined;
32
+ });
33
+ addTrackTypeGuesser(pluginManager, (adapterName, file) => pluginManager.hasAdapterType(adapterName)
34
+ ? trackTypeForAdapter(adapterName, file && getFileName(file))
35
+ : undefined);
36
+ }
37
+ // #endregion
8
38
  // the core plugin, which registers types that ALL JBrowse applications are
9
39
  // expected to need.
10
40
  export default class CorePlugin extends Plugin {
@@ -19,10 +49,11 @@ export default class CorePlugin extends Plugin {
19
49
  pluginManager.addWidgetType(() => {
20
50
  return new WidgetType({
21
51
  name: 'BaseFeatureWidget',
52
+ discardOnClose: true,
22
53
  heading: 'Feature details',
23
54
  configSchema,
24
55
  stateModel: stateModelFactory(pluginManager),
25
- ReactComponent: lazy(() => import('./BaseFeatureWidget/BaseFeatureDetail/index.js')),
56
+ ReactComponent: lazyWithPreload(() => import('./BaseFeatureWidget/BaseFeatureDetail/index.js')),
26
57
  });
27
58
  });
28
59
  }
@@ -1,9 +1,12 @@
1
1
  import type { PluginConstructor } from './Plugin.ts';
2
- import type { CJSPluginDefinition, ESMPluginDefinition, LegacyUMDPluginDefinition, PluginDefinition, UMDPluginDefinition } from './pluginDefinitions.ts';
2
+ import type { ESMPluginDefinition, LegacyUMDPluginDefinition, PluginDefinition, UMDPluginDefinition } from './pluginDefinitions.ts';
3
3
  export interface PluginRecord {
4
4
  plugin: PluginConstructor;
5
5
  definition: PluginDefinition;
6
6
  }
7
+ export type ReExportRegistryLoader = () => Promise<{
8
+ default: Record<string, unknown>;
9
+ }>;
7
10
  export interface LoadedPlugin {
8
11
  default: PluginConstructor;
9
12
  }
@@ -12,33 +15,41 @@ export interface PluginLoadFailure {
12
15
  definition: PluginDefinition;
13
16
  error: unknown;
14
17
  }
18
+ export declare function workerScriptLoadMessage(scriptUrl: string, error: unknown): string;
19
+ /**
20
+ * The registry has to be published before a plugin bundle runs, but not before
21
+ * it downloads, so each bundle is preloaded while the registry is fetched.
22
+ * Skipped under the cache-buster, whose query string differs per request.
23
+ *
24
+ * Exported for a worker told its plugins ahead of its boot configuration.
25
+ */
26
+ export declare function preloadUMDBundles(defs: PluginDefinition[], baseUri?: string): void;
15
27
  export default class PluginLoader {
16
28
  definitions: PluginDefinition[];
17
29
  fetchESM?: (url: string) => Promise<LoadedPlugin>;
18
- fetchCJS?: (url: string) => Promise<LoadedPlugin>;
19
30
  constructor(defs?: PluginDefinition[], args?: {
20
31
  fetchESM?: (url: string) => Promise<LoadedPlugin>;
21
- fetchCJS?: (url: string) => Promise<LoadedPlugin>;
22
32
  });
23
- loadCJSPlugin(def: CJSPluginDefinition, baseUri?: string): Promise<LoadedPlugin>;
24
33
  loadESMPlugin(def: ESMPluginDefinition, baseUri?: string): Promise<LoadedPlugin>;
25
34
  loadUMDPlugin(def: UMDPluginDefinition | LegacyUMDPluginDefinition, baseUri?: string): Promise<{
26
35
  default: PluginConstructor;
27
36
  }>;
28
37
  loadPlugin(def: PluginDefinition, baseUri?: string): Promise<PluginConstructor>;
29
- private reExportTarget;
38
+ private reExports;
30
39
  /**
31
40
  * Ask for the runtime ABI (`JBrowseExports`) to be published on `target`
32
- * before any plugin bundle is evaluated. Records the target; the registry
33
- * itself is fetched in `loadSettled` below.
41
+ * before any plugin bundle is evaluated. Records the target and the loader;
42
+ * `loadSettled` fetches the registry, a ~126 KB gzipped module only a runtime
43
+ * plugin can use (see `ReExports/registry.ts` for why it cannot shrink).
34
44
  *
35
- * The split is the point. Every product calls this at startup, synchronously,
36
- * whether or not the config names a plugin — so importing the registry here
37
- * put it in every host's first paint. It is a ~126 KB gzipped module (see
38
- * `ReExports/registry.ts` for why it cannot shrink) that only a runtime plugin
39
- * can use, and loading one is async anyway.
45
+ * `registry` is the product's generated map — `reExports.generated.ts` on
46
+ * the main thread, `workerReExports.generated.ts` in its worker — which
47
+ * serves every `@jbrowse` package the product bundles. The caller names it
48
+ * because the registry serves this module: an `import()` of it from here is
49
+ * a cycle rolldown keeps in any host bundling this file, whether or not
50
+ * anything loads a plugin (EAGER_BUNDLE.md §3).
40
51
  */
41
- installGlobalReExports(target: WindowOrWorkerGlobalScope): this;
52
+ installGlobalReExports(target: WindowOrWorkerGlobalScope, registry: ReExportRegistryLoader): this;
42
53
  private publishReExports;
43
54
  /**
44
55
  * Loads every definition and separates the ones that worked from the ones