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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (637) hide show
  1. package/README.md +1709 -390
  2. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +3 -2
  3. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +5 -5
  4. package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +3 -5
  5. package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +34 -29
  6. package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +1 -4
  7. package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +11 -0
  8. package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +37 -14
  9. package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
  10. package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +15 -31
  11. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +4 -3
  12. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +12 -25
  13. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.d.ts +11 -0
  14. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.js +11 -0
  15. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.d.ts +8 -0
  16. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.js +24 -0
  17. package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +6 -4
  18. package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.d.ts +4 -0
  19. package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.js +17 -0
  20. package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +3 -2
  21. package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +5 -3
  22. package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +6 -2
  23. package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +7 -18
  24. package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.d.ts +16 -0
  25. package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.js +49 -0
  26. package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +0 -8
  27. package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +6 -29
  28. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +7 -34
  29. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +2 -2
  30. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.js +2 -2
  31. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +3 -1
  32. package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +12 -0
  33. package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +12 -5
  34. package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.js +8 -5
  35. package/esm/BaseFeatureWidget/configSchema.d.ts +1 -1
  36. package/esm/BaseFeatureWidget/formatDetails.d.ts +13 -29
  37. package/esm/BaseFeatureWidget/formatDetails.js +62 -83
  38. package/esm/BaseFeatureWidget/index.d.ts +2 -1
  39. package/esm/BaseFeatureWidget/stateModelFactory.d.ts +42 -29
  40. package/esm/BaseFeatureWidget/stateModelFactory.js +98 -98
  41. package/esm/BaseFeatureWidget/types.d.ts +12 -6
  42. package/esm/BaseFeatureWidget/util.d.ts +0 -10
  43. package/esm/BaseFeatureWidget/util.js +0 -17
  44. package/esm/CorePlugin.js +34 -3
  45. package/esm/PluginLoader.d.ts +24 -13
  46. package/esm/PluginLoader.js +167 -51
  47. package/esm/PluginManager.d.ts +130 -24
  48. package/esm/PluginManager.js +180 -32
  49. package/esm/ReExports/MuiDataGridReExports.d.ts +1 -0
  50. package/esm/ReExports/MuiDataGridReExports.js +2 -2
  51. package/esm/ReExports/coreModules.generated.d.ts +2 -0
  52. package/esm/ReExports/coreModules.generated.js +530 -0
  53. package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
  54. package/esm/ReExports/coreWorkerModules.generated.js +490 -0
  55. package/esm/ReExports/frameworkModules.d.ts +2 -0
  56. package/esm/ReExports/frameworkModules.js +68 -0
  57. package/esm/ReExports/frameworkShared.d.ts +12 -0
  58. package/esm/ReExports/frameworkShared.js +16 -0
  59. package/esm/ReExports/frameworkWorkerModules.generated.d.ts +2 -0
  60. package/esm/ReExports/frameworkWorkerModules.generated.js +130 -0
  61. package/esm/ReExports/list.js +528 -79
  62. package/esm/ReExports/modules.d.ts +1 -1
  63. package/esm/ReExports/modules.js +10 -165
  64. package/esm/ReExports/registry.d.ts +1 -0
  65. package/esm/ReExports/registry.js +23 -5
  66. package/esm/ReExports/uiStub.d.ts +3 -0
  67. package/esm/ReExports/uiStub.js +33 -0
  68. package/esm/ReExports/workerModules.d.ts +2 -0
  69. package/esm/ReExports/workerModules.js +11 -0
  70. package/esm/TextSearch/TextSearchManager.d.ts +27 -13
  71. package/esm/TextSearch/TextSearchManager.js +77 -36
  72. package/esm/TextSearch/places.d.ts +12 -0
  73. package/esm/TextSearch/places.js +94 -0
  74. package/esm/assemblyManager/assembly.d.ts +21 -19
  75. package/esm/assemblyManager/assembly.js +28 -26
  76. package/esm/assemblyManager/assemblyAdapters.d.ts +1 -1
  77. package/esm/assemblyManager/assemblyAdapters.js +8 -2
  78. package/esm/assemblyManager/assemblyConfigSchema.d.ts +31 -90
  79. package/esm/assemblyManager/assemblyConfigSchema.js +35 -47
  80. package/esm/assemblyManager/assemblyManager.d.ts +35 -180
  81. package/esm/assemblyManager/assemblyManager.js +47 -51
  82. package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +25 -18
  83. package/esm/assemblyManager/expandAssemblyConfigShorthand.js +78 -49
  84. package/esm/assemblyManager/geneticCodes.js +2 -5
  85. package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +10 -0
  86. package/esm/assemblyManager/getSequenceAdapterConfig.js +10 -0
  87. package/esm/assemblyManager/indexAssemblyNames.d.ts +9 -0
  88. package/esm/assemblyManager/indexAssemblyNames.js +22 -0
  89. package/esm/assemblyManager/loadRefNameMap.d.ts +1 -1
  90. package/esm/assemblyManager/loadRefNameMap.js +4 -9
  91. package/esm/assemblyManager/refNameMapKey.d.ts +7 -0
  92. package/esm/assemblyManager/refNameMapKey.js +12 -0
  93. package/esm/checkPlugins.d.ts +2 -0
  94. package/esm/checkPlugins.js +38 -17
  95. package/esm/configuration/bamIndexFields.d.ts +49 -0
  96. package/esm/configuration/bamIndexFields.js +41 -0
  97. package/esm/configuration/configurationSchema.d.ts +101 -71
  98. package/esm/configuration/configurationSchema.js +207 -134
  99. package/esm/configuration/configurationSchemaUnion.d.ts +39 -0
  100. package/esm/configuration/configurationSchemaUnion.js +56 -0
  101. package/esm/configuration/configurationSlot.d.ts +150 -60
  102. package/esm/configuration/configurationSlot.js +103 -75
  103. package/esm/configuration/fillLocations.d.ts +14 -0
  104. package/esm/configuration/fillLocations.js +14 -0
  105. package/esm/configuration/formatAboutConfigSchema.d.ts +7 -21
  106. package/esm/configuration/formatDetailsConfigSchema.d.ts +11 -37
  107. package/esm/configuration/formatDetailsConfigSchema.js +10 -13
  108. package/esm/configuration/fullConfSnapshot.d.ts +4 -19
  109. package/esm/configuration/fullConfSnapshot.js +30 -52
  110. package/esm/configuration/getConf.d.ts +45 -41
  111. package/esm/configuration/getConf.js +111 -44
  112. package/esm/configuration/index.d.ts +26 -11
  113. package/esm/configuration/index.js +16 -7
  114. package/esm/configuration/indexType.d.ts +26 -0
  115. package/esm/configuration/indexType.js +38 -0
  116. package/esm/configuration/mergeFormatCallbacks.d.ts +6 -7
  117. package/esm/configuration/mergeFormatCallbacks.js +13 -10
  118. package/esm/configuration/plot.d.ts +61 -0
  119. package/esm/configuration/plot.js +142 -0
  120. package/esm/configuration/readConfObject.d.ts +2 -24
  121. package/esm/configuration/readConfObject.js +20 -63
  122. package/esm/configuration/requirements.d.ts +37 -0
  123. package/esm/configuration/requirements.js +88 -0
  124. package/esm/configuration/schemaRegistry.d.ts +32 -15
  125. package/esm/configuration/schemaRegistry.js +33 -35
  126. package/esm/configuration/schemaTypes.d.ts +21 -5
  127. package/esm/configuration/schemaTypes.js +66 -55
  128. package/esm/configuration/slotFacade.d.ts +12 -29
  129. package/esm/configuration/slotFacade.js +44 -23
  130. package/esm/configuration/snapshotPreprocess.d.ts +43 -0
  131. package/esm/configuration/snapshotPreprocess.js +161 -0
  132. package/esm/configuration/tabixIndexFields.d.ts +30 -4
  133. package/esm/configuration/tabixIndexFields.js +21 -4
  134. package/esm/configuration/tabixShorthand.d.ts +34 -17
  135. package/esm/configuration/tabixShorthand.js +49 -22
  136. package/esm/configuration/types.d.ts +182 -43
  137. package/esm/configuration/uriShorthand.d.ts +9 -0
  138. package/esm/configuration/uriShorthand.js +16 -0
  139. package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +13 -19
  140. package/esm/data_adapters/BaseAdapter/BaseAdapter.js +12 -19
  141. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +40 -2
  142. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +68 -5
  143. package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +40 -0
  144. package/esm/data_adapters/BaseAdapter/featureDensity.js +31 -0
  145. package/esm/data_adapters/BaseAdapter/index.d.ts +23 -3
  146. package/esm/data_adapters/BaseAdapter/index.js +1 -0
  147. package/esm/data_adapters/BaseAdapter/rowSources.d.ts +37 -0
  148. package/esm/data_adapters/BaseAdapter/rowSources.js +7 -0
  149. package/esm/data_adapters/BaseAdapter/stats.d.ts +33 -1
  150. package/esm/data_adapters/BaseAdapter/stats.js +52 -13
  151. package/esm/data_adapters/BaseAdapter/types.d.ts +8 -12
  152. package/esm/data_adapters/BaseAdapter/zoomRange.d.ts +10 -0
  153. package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +1 -1
  154. package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +7 -11
  155. package/esm/data_adapters/CytobandAdapter/configSchema.js +3 -17
  156. package/esm/data_adapters/dataAdapterCache.d.ts +19 -2
  157. package/esm/data_adapters/dataAdapterCache.js +44 -10
  158. package/esm/data_adapters/getFeatureAdapter.d.ts +6 -4
  159. package/esm/data_adapters/getFeatureAdapter.js +8 -8
  160. package/esm/data_adapters/getSequenceSubAdapter.d.ts +7 -9
  161. package/esm/data_adapters/getSequenceSubAdapter.js +8 -10
  162. package/esm/pluggableElementTypes/AdapterType.d.ts +8 -8
  163. package/esm/pluggableElementTypes/AdapterType.js +1 -1
  164. package/esm/pluggableElementTypes/DisplayType.d.ts +53 -16
  165. package/esm/pluggableElementTypes/DisplayType.js +28 -12
  166. package/esm/pluggableElementTypes/LazyStateModelElement.d.ts +32 -0
  167. package/esm/pluggableElementTypes/LazyStateModelElement.js +77 -0
  168. package/esm/pluggableElementTypes/PluggableElementBase.d.ts +3 -5
  169. package/esm/pluggableElementTypes/PluggableElementBase.js +3 -5
  170. package/esm/pluggableElementTypes/RpcMethodType.d.ts +11 -1
  171. package/esm/pluggableElementTypes/RpcMethodType.js +25 -9
  172. package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +1 -2
  173. package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +7 -7
  174. package/esm/pluggableElementTypes/ViewType.d.ts +20 -4
  175. package/esm/pluggableElementTypes/ViewType.js +32 -4
  176. package/esm/pluggableElementTypes/WidgetType.d.ts +6 -0
  177. package/esm/pluggableElementTypes/WidgetType.js +6 -0
  178. package/esm/pluggableElementTypes/addMenuItems.d.ts +3 -2
  179. package/esm/pluggableElementTypes/extendElementType.d.ts +1 -2
  180. package/esm/pluggableElementTypes/extendElementType.js +9 -5
  181. package/esm/pluggableElementTypes/index.d.ts +2 -1
  182. package/esm/pluggableElementTypes/index.js +2 -9
  183. package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +19 -9
  184. package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +122 -28
  185. package/esm/pluggableElementTypes/models/BaseDisplayModel.js +155 -11
  186. package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +65 -16
  187. package/esm/pluggableElementTypes/models/BaseTrackModel.js +179 -117
  188. package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +87 -18
  189. package/esm/pluggableElementTypes/models/BaseViewModel.js +54 -11
  190. package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +26 -16
  191. package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +15 -11
  192. package/esm/pluggableElementTypes/models/assertDisplayContract.js +25 -32
  193. package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -18
  194. package/esm/pluggableElementTypes/models/baseConnectionConfig.js +5 -5
  195. package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +26 -31
  196. package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +108 -147
  197. package/esm/pluggableElementTypes/models/baseTrackConfig.js +96 -73
  198. package/esm/pluggableElementTypes/models/components/SaveTrackData.js +4 -6
  199. package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +3 -4
  200. package/esm/pluggableElementTypes/models/components/fetchTrackData.js +3 -3
  201. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +23 -13
  202. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +80 -48
  203. package/esm/pluggableElementTypes/models/index.d.ts +2 -3
  204. package/esm/pluggableElementTypes/models/index.js +2 -3
  205. package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +15 -1
  206. package/esm/pluggableElementTypes/models/migrateTrackConfig.js +85 -25
  207. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +4 -3
  208. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +141 -19
  209. package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +3 -3
  210. package/esm/pluginDefinitions.d.ts +34 -7
  211. package/esm/pluginDefinitions.js +54 -20
  212. package/esm/rpc/BaseRpcDriver.d.ts +2 -2
  213. package/esm/rpc/BaseRpcDriver.js +25 -30
  214. package/esm/rpc/MainThreadRpcDriver.d.ts +2 -2
  215. package/esm/rpc/MainThreadRpcDriver.js +13 -8
  216. package/esm/rpc/RpcClient.d.ts +18 -6
  217. package/esm/rpc/RpcClient.js +51 -16
  218. package/esm/rpc/RpcManager.d.ts +14 -10
  219. package/esm/rpc/RpcManager.js +11 -1
  220. package/esm/rpc/RpcRegistry.d.ts +40 -7
  221. package/esm/rpc/RpcServer.d.ts +3 -1
  222. package/esm/rpc/RpcServer.js +19 -12
  223. package/esm/rpc/WebWorkerRpcDriver.d.ts +11 -4
  224. package/esm/rpc/WebWorkerRpcDriver.js +64 -68
  225. package/esm/rpc/byteBudget.d.ts +20 -5
  226. package/esm/rpc/byteBudget.js +16 -5
  227. package/esm/rpc/configSchema.d.ts +7 -21
  228. package/esm/rpc/coreRpcMethods.d.ts +4 -0
  229. package/esm/rpc/coreRpcMethods.js +4 -0
  230. package/esm/rpc/methods/CoreGetEncodedFeature.d.ts +13 -0
  231. package/esm/rpc/methods/CoreGetEncodedFeature.js +32 -0
  232. package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +16 -0
  233. package/esm/rpc/methods/CoreGetEncodedLayers.js +59 -0
  234. package/esm/rpc/methods/CoreGetExportData.js +3 -4
  235. package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
  236. package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
  237. package/esm/rpc/methods/CoreGetFeatures.js +3 -5
  238. package/esm/rpc/methods/CoreGetRefNames.js +2 -12
  239. package/esm/rpc/methods/CoreGetRegionByteEstimate.js +1 -1
  240. package/esm/rpc/methods/CoreGetSequence.js +2 -2
  241. package/esm/rpc/methods/CoreLoadAdapterCode.d.ts +13 -0
  242. package/esm/rpc/methods/CoreLoadAdapterCode.js +16 -0
  243. package/esm/rpc/methods/layerFeatures.d.ts +33 -0
  244. package/esm/rpc/methods/layerFeatures.js +29 -0
  245. package/esm/svg/SvgExport.js +6 -7
  246. package/esm/svg/SvgThemeProviders.d.ts +12 -0
  247. package/esm/svg/SvgThemeProviders.js +15 -0
  248. package/esm/svg/exportViewSvg.d.ts +28 -0
  249. package/esm/svg/exportViewSvg.js +13 -0
  250. package/esm/svg/normalizeSvgMarkup.d.ts +7 -0
  251. package/esm/svg/normalizeSvgMarkup.js +99 -0
  252. package/esm/svg/serializeSvg.d.ts +7 -0
  253. package/esm/svg/serializeSvg.js +11 -0
  254. package/esm/svg/svgId.d.ts +1 -1
  255. package/esm/svg/svgId.js +1 -1
  256. package/esm/svg/svgReady.d.ts +9 -7
  257. package/esm/svg/svgReady.js +8 -7
  258. package/esm/svg/trackNames.d.ts +7 -5
  259. package/esm/svg/trackNames.js +12 -9
  260. package/esm/svg/wrapSvgExport.js +6 -74
  261. package/esm/ui/AddCustomPluginDialog.js +3 -8
  262. package/esm/ui/AppReadyMarker.d.ts +45 -0
  263. package/esm/ui/AppReadyMarker.js +89 -0
  264. package/esm/ui/BaseExportSvgDialog.d.ts +1 -1
  265. package/esm/ui/CascadingMenu.js +181 -104
  266. package/esm/ui/DropDownMenu.js +2 -1
  267. package/esm/ui/ErrorBanner.js +1 -1
  268. package/esm/ui/ErrorBoundary.d.ts +2 -2
  269. package/esm/ui/ErrorMessageStackTraceContents.js +2 -1
  270. package/esm/ui/ErrorMessageStackTraceDialog.js +5 -11
  271. package/esm/ui/ExportSvgDialog.d.ts +1 -1
  272. package/esm/ui/FileDropZone.js +2 -1
  273. package/esm/ui/FileSelector/useInternetAccounts.d.ts +156 -96
  274. package/esm/ui/HoverMenu.d.ts +1 -2
  275. package/esm/ui/HoverMenu.js +6 -3
  276. package/esm/ui/JexlFilterDialog.d.ts +13 -10
  277. package/esm/ui/JexlFilterDialog.js +122 -50
  278. package/esm/ui/JexlFilterRowEditors.d.ts +15 -0
  279. package/esm/ui/JexlFilterRowEditors.js +90 -0
  280. package/esm/ui/LazyBaseTooltip.d.ts +4 -0
  281. package/esm/ui/LazyBaseTooltip.js +9 -0
  282. package/esm/ui/LegendSwatchGlyph.js +26 -21
  283. package/esm/ui/LoadingOverlay.d.ts +14 -0
  284. package/esm/ui/LoadingOverlay.js +4 -2
  285. package/esm/ui/MenuTypes.d.ts +23 -53
  286. package/esm/ui/MenuTypes.js +3 -0
  287. package/esm/ui/MonospaceTextField.d.ts +2 -1
  288. package/esm/ui/MonospaceTextField.js +23 -20
  289. package/esm/ui/PaletteContext.d.ts +10 -5
  290. package/esm/ui/PaletteContext.js +44 -6
  291. package/esm/ui/RefNameAutocomplete/SearchOption.d.ts +13 -0
  292. package/esm/ui/RefNameAutocomplete/SearchOption.js +45 -0
  293. package/esm/ui/RefNameAutocomplete/index.d.ts +1 -2
  294. package/esm/ui/RefNameAutocomplete/index.js +8 -2
  295. package/esm/ui/RefNameAutocomplete/util.d.ts +13 -0
  296. package/esm/ui/RefNameAutocomplete/util.js +42 -1
  297. package/esm/ui/ResizeHandle.d.ts +3 -1
  298. package/esm/ui/ResizeHandle.js +44 -11
  299. package/esm/ui/ScrollChrome.d.ts +13 -0
  300. package/esm/ui/ScrollChrome.js +11 -0
  301. package/esm/ui/ScrollEdgeShadow.d.ts +6 -9
  302. package/esm/ui/ScrollEdgeShadow.js +14 -35
  303. package/esm/ui/ScrollZoomToggle.d.ts +4 -27
  304. package/esm/ui/ScrollZoomToggle.js +34 -51
  305. package/esm/ui/SessionJsonPanel.d.ts +3 -0
  306. package/esm/ui/SessionJsonPanel.js +14 -0
  307. package/esm/ui/SettingsChangesTable.d.ts +1 -0
  308. package/esm/ui/SettingsChangesTable.js +49 -11
  309. package/esm/ui/ShareLinkField.d.ts +1 -3
  310. package/esm/ui/ShareLinkField.js +13 -40
  311. package/esm/ui/SizeSliderRow.d.ts +1 -3
  312. package/esm/ui/SizeSliderRow.js +4 -6
  313. package/esm/ui/SnackbarModel.js +79 -67
  314. package/esm/ui/StatusProgressBar.js +2 -2
  315. package/esm/ui/SvgColorLegend.d.ts +9 -4
  316. package/esm/ui/SvgColorLegend.js +82 -41
  317. package/esm/ui/VerticalScrollbar.d.ts +13 -34
  318. package/esm/ui/VerticalScrollbar.js +29 -83
  319. package/esm/ui/ViewLoadingScreen.d.ts +5 -4
  320. package/esm/ui/ViewLoadingScreen.js +8 -32
  321. package/esm/ui/colorScale.d.ts +92 -0
  322. package/esm/ui/colorScale.js +72 -0
  323. package/esm/ui/colors.d.ts +64 -0
  324. package/esm/ui/colors.js +230 -1
  325. package/esm/ui/hoverBoxStyle.d.ts +14 -2
  326. package/esm/ui/hoverBoxStyle.js +17 -2
  327. package/esm/ui/index.d.ts +12 -12
  328. package/esm/ui/index.js +14 -22
  329. package/esm/ui/launchViewMenu.js +15 -5
  330. package/esm/ui/legendMenuItem.d.ts +10 -32
  331. package/esm/ui/legendMenuItem.js +9 -36
  332. package/esm/ui/legendSpec.d.ts +15 -8
  333. package/esm/ui/legendSpec.js +14 -23
  334. package/esm/ui/makeSizeMenu.d.ts +0 -6
  335. package/esm/ui/makeSizeMenu.js +6 -30
  336. package/esm/ui/measureLegendText.js +1 -1
  337. package/esm/ui/menuItemAdornment.d.ts +9 -20
  338. package/esm/ui/menuItemAdornment.js +10 -32
  339. package/esm/ui/menuItems.d.ts +2 -7
  340. package/esm/ui/menuItems.js +1 -6
  341. package/esm/ui/multiTrackMenuItems.d.ts +6 -0
  342. package/esm/ui/palette.d.ts +118 -116
  343. package/esm/ui/palette.js +114 -75
  344. package/esm/ui/replaceViewAction.d.ts +1 -1
  345. package/esm/ui/replaceViewAction.js +1 -1
  346. package/esm/ui/theme.d.ts +43 -119
  347. package/esm/ui/theme.js +62 -78
  348. package/esm/ui/toggleMenuItems.d.ts +1 -3
  349. package/esm/ui/toggleMenuItems.js +6 -5
  350. package/esm/ui/useAssemblySelection.d.ts +4 -4
  351. package/esm/ui/viewHeaderHeight.d.ts +1 -0
  352. package/esm/ui/viewHeaderHeight.js +1 -0
  353. package/esm/util/Base1DUtils.d.ts +5 -3
  354. package/esm/util/Base1DUtils.js +14 -6
  355. package/esm/util/Base1DViewModel.d.ts +2 -1
  356. package/esm/util/Base1DViewModel.js +3 -2
  357. package/esm/util/SvgCanvas.d.ts +15 -13
  358. package/esm/util/SvgCanvas.js +76 -56
  359. package/esm/util/TimeTraveller.d.ts +3 -0
  360. package/esm/util/TimeTraveller.js +34 -2
  361. package/esm/util/aborting.d.ts +39 -0
  362. package/esm/util/aborting.js +88 -6
  363. package/esm/util/adapterMetadata.d.ts +1 -1
  364. package/esm/util/adapterMetadata.js +6 -5
  365. package/esm/util/addAndShowTrack.d.ts +2 -5
  366. package/esm/util/addAndShowTrack.js +5 -1
  367. package/esm/util/addRelativeUris.d.ts +17 -5
  368. package/esm/util/addRelativeUris.js +46 -10
  369. package/esm/util/addTrackFromWidget.d.ts +2 -5
  370. package/esm/util/addTrackFromWidget.js +5 -4
  371. package/esm/util/aggregateFieldName.d.ts +10 -0
  372. package/esm/util/aggregateFieldName.js +8 -0
  373. package/esm/util/analytics.js +46 -13
  374. package/esm/util/animationAllowed.d.ts +9 -0
  375. package/esm/util/animationAllowed.js +13 -0
  376. package/esm/util/applyRowResizeWheel.d.ts +10 -5
  377. package/esm/util/applyRowResizeWheel.js +10 -21
  378. package/esm/util/bandHeight.d.ts +10 -0
  379. package/esm/util/bandHeight.js +29 -0
  380. package/esm/util/bandLayout.d.ts +4 -4
  381. package/esm/util/bandLayout.js +4 -4
  382. package/esm/util/baseDisplayConfig.d.ts +8 -0
  383. package/esm/util/baseDisplayConfig.js +27 -0
  384. package/esm/util/bezierConnector.d.ts +4 -3
  385. package/esm/util/bezierConnector.js +38 -45
  386. package/esm/util/bgzfWorkerPool.d.ts +20 -74
  387. package/esm/util/bgzfWorkerPool.js +20 -74
  388. package/esm/util/binnedAggregate.d.ts +17 -0
  389. package/esm/util/binnedAggregate.js +275 -0
  390. package/esm/util/cacheBudgets.d.ts +22 -19
  391. package/esm/util/cacheBudgets.js +22 -19
  392. package/esm/util/cachedSetup.d.ts +16 -6
  393. package/esm/util/cachedSetup.js +108 -38
  394. package/esm/util/categoricalField.d.ts +56 -0
  395. package/esm/util/categoricalField.js +73 -0
  396. package/esm/util/cellMatches.d.ts +23 -0
  397. package/esm/util/cellMatches.js +264 -0
  398. package/esm/util/cellsStep.d.ts +29 -0
  399. package/esm/util/cellsStep.js +437 -0
  400. package/esm/util/clampToContig.d.ts +17 -0
  401. package/esm/util/clampToContig.js +19 -0
  402. package/esm/util/coarseStripHTML.js +1 -2
  403. package/esm/util/color/cssColorsLevel4.d.ts +1 -0
  404. package/esm/util/color/cssColorsLevel4.js +1 -0
  405. package/esm/util/color/index.d.ts +5 -3
  406. package/esm/util/color/index.js +7 -4
  407. package/esm/util/colorBits.d.ts +3 -3
  408. package/esm/util/colorBits.js +19 -44
  409. package/esm/util/colorRamp.d.ts +49 -5
  410. package/esm/util/colorRamp.js +169 -18
  411. package/esm/util/colorScale.d.ts +156 -0
  412. package/esm/util/colorScale.js +243 -0
  413. package/esm/util/colorSchemes.d.ts +21 -0
  414. package/esm/util/colorSchemes.js +30 -0
  415. package/esm/util/copyToClipboard.js +8 -1
  416. package/esm/util/{createStopTokenRotation.d.ts → createAbortRotation.d.ts} +21 -23
  417. package/esm/util/{createStopTokenRotation.js → createAbortRotation.js} +21 -52
  418. package/esm/util/createSvgRasterCanvas.d.ts +10 -0
  419. package/esm/util/cssColorParse.d.ts +15 -0
  420. package/esm/util/cssColorParse.js +53 -0
  421. package/esm/util/diagonalizeRegions.d.ts +2 -3
  422. package/esm/util/diagonalizeRegions.js +8 -13
  423. package/esm/util/expandLooseSearchIndex.d.ts +19 -0
  424. package/esm/util/expandLooseSearchIndex.js +29 -0
  425. package/esm/util/featureTable.d.ts +224 -0
  426. package/esm/util/featureTable.js +366 -0
  427. package/esm/util/featureTransforms.d.ts +81 -0
  428. package/esm/util/featureTransforms.js +1231 -0
  429. package/esm/util/featureTypes.d.ts +24 -0
  430. package/esm/util/featureTypes.js +35 -0
  431. package/esm/util/fetchAndMaybeUnzip.js +16 -9
  432. package/esm/util/fetchContext.d.ts +7 -8
  433. package/esm/util/fetchContext.js +3 -3
  434. package/esm/util/fetchHub.d.ts +4 -2
  435. package/esm/util/fetchHub.js +2 -2
  436. package/esm/util/fetchPhases.d.ts +10 -10
  437. package/esm/util/fetchSeq.d.ts +2 -3
  438. package/esm/util/fetchSeq.js +2 -2
  439. package/esm/util/fieldReader.d.ts +17 -0
  440. package/esm/util/fieldReader.js +62 -0
  441. package/esm/util/formatBytes.js +1 -1
  442. package/esm/util/formatGuessers.d.ts +25 -14
  443. package/esm/util/formatGuessers.js +42 -27
  444. package/esm/util/formatRelativeTime.js +1 -1
  445. package/esm/util/freezeDeep.d.ts +8 -10
  446. package/esm/util/freezeDeep.js +8 -10
  447. package/esm/util/getLocationUri.d.ts +2 -1
  448. package/esm/util/getLocationUri.js +8 -2
  449. package/esm/util/groupKeys.d.ts +76 -0
  450. package/esm/util/groupKeys.js +156 -0
  451. package/esm/util/highlights.d.ts +10 -6
  452. package/esm/util/highlights.js +12 -25
  453. package/esm/util/hooks.d.ts +31 -2
  454. package/esm/util/hooks.js +72 -3
  455. package/esm/util/index.d.ts +11 -11
  456. package/esm/util/index.js +11 -10
  457. package/esm/util/indexCandidates.d.ts +1 -31
  458. package/esm/util/indexCandidates.js +5 -63
  459. package/esm/util/installFetch.d.ts +77 -37
  460. package/esm/util/installFetch.js +65 -38
  461. package/esm/util/installInitAutorun.d.ts +14 -13
  462. package/esm/util/installInitAutorun.js +17 -17
  463. package/esm/util/installPrerequisiteFetch.d.ts +115 -0
  464. package/esm/util/installPrerequisiteFetch.js +111 -0
  465. package/esm/util/intervals.js +9 -4
  466. package/esm/util/io/index.js +22 -15
  467. package/esm/util/isDataCurrent.d.ts +7 -5
  468. package/esm/util/isDataCurrent.js +9 -6
  469. package/esm/util/isTextEntryFocused.d.ts +7 -0
  470. package/esm/util/isTextEntryFocused.js +16 -0
  471. package/esm/util/jexl.js +24 -21
  472. package/esm/util/jexlFilterRows.d.ts +89 -0
  473. package/esm/util/jexlFilterRows.js +252 -0
  474. package/esm/util/jexlFilters.d.ts +32 -57
  475. package/esm/util/jexlFilters.js +31 -29
  476. package/esm/util/jexlStrings.d.ts +3 -4
  477. package/esm/util/jexlStrings.js +2 -3
  478. package/esm/util/layouts/GranularRectLayout.d.ts +8 -1
  479. package/esm/util/layouts/GranularRectLayout.js +25 -8
  480. package/esm/util/lazyAfterAttach.d.ts +13 -0
  481. package/esm/util/lazyAfterAttach.js +31 -0
  482. package/esm/util/lazyWithPreload.d.ts +19 -0
  483. package/esm/util/lazyWithPreload.js +27 -0
  484. package/esm/util/legendCandidates.d.ts +72 -0
  485. package/esm/util/legendCandidates.js +138 -0
  486. package/esm/util/locString.js +5 -2
  487. package/esm/util/localStorage.js +4 -4
  488. package/esm/util/markEncoding.d.ts +150 -0
  489. package/esm/util/markEncoding.js +885 -0
  490. package/esm/util/markEncodingTypes.d.ts +595 -0
  491. package/esm/util/markEncodingTypes.js +8 -0
  492. package/esm/util/mst-reflection.d.ts +2 -20
  493. package/esm/util/mst-reflection.js +3 -53
  494. package/esm/util/mstUtils.d.ts +31 -23
  495. package/esm/util/mstUtils.js +39 -24
  496. package/esm/util/numericUtils.d.ts +7 -0
  497. package/esm/util/numericUtils.js +16 -0
  498. package/esm/util/numericValue.d.ts +14 -0
  499. package/esm/util/numericValue.js +34 -0
  500. package/esm/util/openFeatureWidget.d.ts +5 -0
  501. package/esm/util/openFeatureWidget.js +2 -2
  502. package/esm/util/openViews.d.ts +17 -0
  503. package/esm/util/openViews.js +22 -0
  504. package/esm/util/parentWalk.d.ts +1 -1
  505. package/esm/util/parentWalk.js +1 -1
  506. package/esm/util/parseLineByLine.d.ts +4 -5
  507. package/esm/util/parseLineByLine.js +8 -14
  508. package/esm/util/pluginStore.d.ts +6 -8
  509. package/esm/util/pluginStore.js +17 -16
  510. package/esm/util/preloadComponent.d.ts +5 -0
  511. package/esm/util/preloadComponent.js +11 -0
  512. package/esm/util/progress.d.ts +22 -22
  513. package/esm/util/progress.js +27 -26
  514. package/esm/util/quantileExtent.d.ts +49 -0
  515. package/esm/util/quantileExtent.js +162 -0
  516. package/esm/util/range.d.ts +13 -9
  517. package/esm/util/range.js +17 -8
  518. package/esm/util/renameRegions.d.ts +26 -6
  519. package/esm/util/renameRegions.js +68 -54
  520. package/esm/util/renderToStaticMarkup.js +24 -14
  521. package/esm/util/rxjs.d.ts +23 -8
  522. package/esm/util/rxjs.js +61 -15
  523. package/esm/util/samplesTsv.d.ts +49 -0
  524. package/esm/util/samplesTsv.js +86 -0
  525. package/esm/util/scheduleDetachedDestroy.d.ts +18 -0
  526. package/esm/util/scheduleDetachedDestroy.js +24 -0
  527. package/esm/util/scrollLatch.d.ts +1 -0
  528. package/esm/util/scrollLatch.js +8 -0
  529. package/esm/util/selectEncodedFeature.d.ts +16 -0
  530. package/esm/util/selectEncodedFeature.js +34 -0
  531. package/esm/util/sessionSharing.d.ts +7 -5
  532. package/esm/util/sessionSharing.js +23 -23
  533. package/esm/util/shapeNameList.d.ts +2 -0
  534. package/esm/util/shapeNameList.js +6 -0
  535. package/esm/util/shapeNames.d.ts +7 -0
  536. package/esm/util/shapeNames.js +11 -0
  537. package/esm/util/simpleFeature.d.ts +0 -1
  538. package/esm/util/springAnimate.js +1 -1
  539. package/esm/util/starFusion.d.ts +26 -0
  540. package/esm/util/starFusion.js +37 -0
  541. package/esm/util/stepTables.d.ts +96 -0
  542. package/esm/util/stepTables.js +277 -0
  543. package/esm/util/svAlt.d.ts +145 -0
  544. package/esm/util/svAlt.js +364 -0
  545. package/esm/util/svgColorProps.d.ts +11 -0
  546. package/esm/util/svgColorProps.js +28 -1
  547. package/esm/util/systemColorScheme.d.ts +12 -0
  548. package/esm/util/systemColorScheme.js +27 -0
  549. package/esm/util/tabix.d.ts +19 -10
  550. package/esm/util/tabix.js +19 -14
  551. package/esm/util/thresholdScale.d.ts +91 -0
  552. package/esm/util/thresholdScale.js +166 -0
  553. package/esm/util/timeGate.d.ts +4 -5
  554. package/esm/util/timeGate.js +4 -5
  555. package/esm/util/trackConfigDelta.d.ts +26 -26
  556. package/esm/util/trackConfigDelta.js +63 -47
  557. package/esm/util/tracks.d.ts +120 -66
  558. package/esm/util/tracks.js +501 -151
  559. package/esm/util/translateTranscript.d.ts +44 -0
  560. package/esm/util/translateTranscript.js +102 -0
  561. package/esm/util/types/data.d.ts +0 -2
  562. package/esm/util/types/index.d.ts +121 -22
  563. package/esm/util/types/index.js +9 -0
  564. package/esm/util/types/mst.d.ts +3 -0
  565. package/esm/util/types/mst.js +4 -0
  566. package/esm/util/types/renameIds.d.ts +1 -0
  567. package/esm/util/types/renameIds.js +29 -0
  568. package/esm/util/types/services.d.ts +1 -1
  569. package/esm/util/unknownSnapshotKeys.d.ts +53 -0
  570. package/esm/util/unknownSnapshotKeys.js +76 -0
  571. package/esm/util/useFeatureSequence.js +5 -5
  572. package/esm/util/useFetch.d.ts +3 -4
  573. package/esm/util/useFetch.js +19 -10
  574. package/esm/util/useFetchPlugins.d.ts +6 -2
  575. package/esm/util/useFetchPlugins.js +7 -3
  576. package/esm/util/usePanZoom.js +10 -3
  577. package/esm/util/usePanelVirtualScroll.d.ts +7 -35
  578. package/esm/util/usePanelVirtualScroll.js +9 -36
  579. package/esm/util/useRafCommit.js +1 -0
  580. package/esm/util/useRowVirtualScroll.d.ts +6 -29
  581. package/esm/util/useRowVirtualScroll.js +8 -49
  582. package/esm/util/useVirtualScrollWheel.d.ts +20 -4
  583. package/esm/util/useVirtualScrollWheel.js +40 -74
  584. package/esm/util/viewHighlights.d.ts +3 -0
  585. package/esm/util/viewHighlights.js +5 -0
  586. package/esm/util/viewStatus.d.ts +47 -15
  587. package/esm/util/viewStatus.js +34 -0
  588. package/esm/util/wheelZoom.d.ts +7 -1
  589. package/esm/util/wheelZoom.js +85 -19
  590. package/esm/util/whenViewSettled.d.ts +55 -8
  591. package/esm/util/whenViewSettled.js +56 -7
  592. package/esm/util/withFeatureDetails.js +4 -0
  593. package/esm/util/withLaunchInput.d.ts +174 -0
  594. package/esm/util/withLaunchInput.js +274 -0
  595. package/package.json +75 -24
  596. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +0 -2
  597. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +0 -8
  598. package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +0 -8
  599. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +0 -80
  600. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.js +0 -583
  601. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +0 -141
  602. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.js +0 -1116
  603. package/esm/ReExports/BaseFeatureDetails.d.ts +0 -1
  604. package/esm/ReExports/BaseFeatureDetails.js +0 -10
  605. package/esm/ReExports/index.d.ts +0 -1
  606. package/esm/ReExports/index.js +0 -1
  607. package/esm/ReExports/publicUtil.d.ts +0 -1
  608. package/esm/ReExports/publicUtil.js +0 -28
  609. package/esm/configuration/promotableDefaults.d.ts +0 -199
  610. package/esm/configuration/promotableDefaults.js +0 -326
  611. package/esm/configuration/promotablePin.d.ts +0 -55
  612. package/esm/configuration/promotablePin.js +0 -1
  613. package/esm/configuration/promotableResolve.d.ts +0 -108
  614. package/esm/configuration/promotableResolve.js +0 -117
  615. package/esm/configuration/promotableSlots.d.ts +0 -12
  616. package/esm/configuration/promotableSlots.js +0 -45
  617. package/esm/configuration/slotShape.d.ts +0 -12
  618. package/esm/configuration/slotShape.js +0 -84
  619. package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +0 -51
  620. package/esm/pluggableElementTypes/models/HighlightsMixin.js +0 -78
  621. package/esm/ui/PinAdornment.d.ts +0 -5
  622. package/esm/ui/PinAdornment.js +0 -79
  623. package/esm/ui/SvgGradientLegend.d.ts +0 -26
  624. package/esm/ui/SvgGradientLegend.js +0 -26
  625. package/esm/ui/highlightChipReveal.d.ts +0 -32
  626. package/esm/ui/highlightChipReveal.js +0 -39
  627. package/esm/ui/promotableMenuItems.d.ts +0 -19
  628. package/esm/ui/promotableMenuItems.js +0 -89
  629. package/esm/ui/promotablePinCoverage.d.ts +0 -44
  630. package/esm/ui/promotablePinCoverage.js +0 -87
  631. package/esm/util/applyInitSettings.d.ts +0 -79
  632. package/esm/util/applyInitSettings.js +0 -91
  633. package/esm/util/openDisplays.d.ts +0 -23
  634. package/esm/util/openDisplays.js +0 -79
  635. package/esm/util/stopToken.d.ts +0 -211
  636. package/esm/util/stopToken.js +0 -438
  637. /package/esm/{BaseFeatureWidget/BaseFeatureDetail/types.js → data_adapters/BaseAdapter/zoomRange.js} +0 -0
@@ -0,0 +1,44 @@
1
+ import type { TranslExcept } from './geneticCodes.ts';
2
+ import type { Feature } from './simpleFeature.ts';
3
+ export interface CdsSegment {
4
+ start: number;
5
+ end: number;
6
+ phase: number;
7
+ }
8
+ /**
9
+ * A transcript's CDS segments in genome coordinates, sorted and deduplicated. A
10
+ * GFF3 file can repeat a CDS row, and the duplicated bases would stitch into
11
+ * the translation and frameshift the protein. A standalone polyprotein CDS
12
+ * carries cleavage products rather than CDS children, so its own span is the
13
+ * one segment.
14
+ */
15
+ export declare function transcriptCDS(transcript: Feature): CdsSegment[];
16
+ /**
17
+ * The genetic code a transcript translates with: a `transl_table` on it or on
18
+ * its CDS, else the assembly's code for its contig, else undefined for the
19
+ * standard code.
20
+ */
21
+ export declare function transcriptGeneticCodeId(transcript: Feature, assemblyGeneticCodeId?: number): number | undefined;
22
+ /**
23
+ * A transcript's `transl_except` overrides (RefSeq's selenocysteines), read off
24
+ * the CDS by NCBI convention or the transcript itself, in the transcript-
25
+ * relative, strand-corrected frame `translateTranscript` translates in.
26
+ */
27
+ export declare function transcriptTranslExcept(transcript: Feature): TranslExcept[] | undefined;
28
+ /**
29
+ * A transcript's protein as JBrowse shows it: its CDS stitched in order, read
30
+ * with its genetic code and that code's alternative initiators, with any
31
+ * `transl_except` applied. `seq` is the genome under the transcript, its start
32
+ * to its end. Undefined for a transcript with no CDS. `cds` and `translExcept`
33
+ * are the transcript-relative, strand-corrected frame the protein was read in,
34
+ * for a caller placing residues back on it.
35
+ */
36
+ export declare function translateTranscript({ transcript, seq, assemblyGeneticCodeId, }: {
37
+ transcript: Feature;
38
+ seq: string;
39
+ assemblyGeneticCodeId?: number;
40
+ }): {
41
+ protein: string;
42
+ cds: CdsSegment[];
43
+ translExcept?: TranslExcept[];
44
+ } | undefined;
@@ -0,0 +1,102 @@
1
+ import { convertCodingSequenceToPeptides } from './convertCodingSequenceToPeptides.js';
2
+ import { getGeneticCode, parseTranslTable, relativizeTranslExcept, } from './geneticCodes.js';
3
+ import { revlist } from './revlist.js';
4
+ import { revcom } from './seqUtils.js';
5
+ function isCDS(feature) {
6
+ return feature.get('type')?.toLowerCase() === 'cds';
7
+ }
8
+ function subfeatures(feature) {
9
+ return feature.get('subfeatures') ?? [];
10
+ }
11
+ /**
12
+ * A transcript's CDS segments in genome coordinates, sorted and deduplicated. A
13
+ * GFF3 file can repeat a CDS row, and the duplicated bases would stitch into
14
+ * the translation and frameshift the protein. A standalone polyprotein CDS
15
+ * carries cleavage products rather than CDS children, so its own span is the
16
+ * one segment.
17
+ */
18
+ export function transcriptCDS(transcript) {
19
+ const seen = new Set();
20
+ const cds = [];
21
+ const sorted = subfeatures(transcript).toSorted((a, b) => a.get('start') - b.get('start'));
22
+ for (const sub of sorted) {
23
+ const start = sub.get('start');
24
+ const end = sub.get('end');
25
+ const key = `${start}-${end}`;
26
+ if (isCDS(sub) && start < end && !seen.has(key)) {
27
+ seen.add(key);
28
+ cds.push({ start, end, phase: sub.get('phase') ?? 0 });
29
+ }
30
+ }
31
+ if (cds.length === 0 && isCDS(transcript)) {
32
+ const start = transcript.get('start');
33
+ const end = transcript.get('end');
34
+ if (start < end) {
35
+ cds.push({ start, end, phase: transcript.get('phase') ?? 0 });
36
+ }
37
+ }
38
+ return cds;
39
+ }
40
+ /**
41
+ * The genetic code a transcript translates with: a `transl_table` on it or on
42
+ * its CDS, else the assembly's code for its contig, else undefined for the
43
+ * standard code.
44
+ */
45
+ export function transcriptGeneticCodeId(transcript, assemblyGeneticCodeId) {
46
+ const cds = subfeatures(transcript).find(isCDS);
47
+ return (parseTranslTable(transcript.get('transl_table')) ??
48
+ parseTranslTable(cds?.get('transl_table')) ??
49
+ assemblyGeneticCodeId);
50
+ }
51
+ /**
52
+ * A transcript's `transl_except` overrides (RefSeq's selenocysteines), read off
53
+ * the CDS by NCBI convention or the transcript itself, in the transcript-
54
+ * relative, strand-corrected frame `translateTranscript` translates in.
55
+ */
56
+ export function transcriptTranslExcept(transcript) {
57
+ const cds = subfeatures(transcript).find(isCDS);
58
+ const raw = transcript.get('transl_except') ?? cds?.get('transl_except');
59
+ const start = transcript.get('start');
60
+ return raw
61
+ ? relativizeTranslExcept({
62
+ raw,
63
+ featureStart: start,
64
+ featureLength: transcript.get('end') - start,
65
+ strand: transcript.get('strand'),
66
+ })
67
+ : undefined;
68
+ }
69
+ /**
70
+ * A transcript's protein as JBrowse shows it: its CDS stitched in order, read
71
+ * with its genetic code and that code's alternative initiators, with any
72
+ * `transl_except` applied. `seq` is the genome under the transcript, its start
73
+ * to its end. Undefined for a transcript with no CDS. `cds` and `translExcept`
74
+ * are the transcript-relative, strand-corrected frame the protein was read in,
75
+ * for a caller placing residues back on it.
76
+ */
77
+ export function translateTranscript({ transcript, seq, assemblyGeneticCodeId, }) {
78
+ const start = transcript.get('start');
79
+ const relative = transcriptCDS(transcript).map(c => ({
80
+ ...c,
81
+ start: c.start - start,
82
+ end: c.end - start,
83
+ }));
84
+ if (relative.length === 0) {
85
+ return undefined;
86
+ }
87
+ const minus = transcript.get('strand') === -1;
88
+ const cds = minus ? revlist(relative, seq.length) : relative;
89
+ const translExcept = transcriptTranslExcept(transcript);
90
+ const { codonTable, starts } = getGeneticCode(transcriptGeneticCodeId(transcript, assemblyGeneticCodeId));
91
+ return {
92
+ protein: convertCodingSequenceToPeptides({
93
+ cds,
94
+ sequence: minus ? revcom(seq) : seq,
95
+ codonTable,
96
+ starts,
97
+ translExcept,
98
+ }),
99
+ cds,
100
+ translExcept,
101
+ };
102
+ }
@@ -53,7 +53,6 @@ export interface JBrowsePluginVersion {
53
53
  url?: string;
54
54
  umdUrl?: string;
55
55
  esmUrl?: string;
56
- cjsUrl?: string;
57
56
  integrity?: string;
58
57
  }
59
58
  export interface JBrowsePlugin {
@@ -65,7 +64,6 @@ export interface JBrowsePlugin {
65
64
  url?: string;
66
65
  umdUrl?: string;
67
66
  esmUrl?: string;
68
- cjsUrl?: string;
69
67
  integrity?: string;
70
68
  versions?: JBrowsePluginVersion[];
71
69
  latestUrl?: string;
@@ -1,15 +1,17 @@
1
+ import type { ViewSnapshotInput } from '../../PluginManager.ts';
1
2
  import type TextSearchManager from '../../TextSearch/TextSearchManager.ts';
2
- import type { AnyConfigurationModel, ResolvableDisplay } from '../../configuration/index.ts';
3
- import type { BaseInternetAccountModel } from '../../pluggableElementTypes/models/index.ts';
3
+ import type { AnyConfigurationModel } from '../../configuration/index.ts';
4
+ import type { BaseInternetAccountModel, BaseTrackConfig } from '../../pluggableElementTypes/models/index.ts';
4
5
  import type { PluginDefinition } from '../../pluginDefinitions.ts';
5
6
  import type RpcManager from '../../rpc/RpcManager.ts';
6
7
  import type { MenuItem } from '../../ui/index.ts';
8
+ import type { HighlightType } from '../highlights.ts';
7
9
  import type { Feature } from '../simpleFeature.ts';
8
10
  import type { TrackConfigChange } from '../trackConfigDelta.ts';
9
11
  import type { UriLocation } from './data.ts';
10
12
  import type { RenderingServices } from './renderingServices.ts';
11
13
  import type { DialogHost, NotificationSink } from './services.ts';
12
- import type { IAnyStateTreeNode, IStateTreeNode, SnapshotIn } from '@jbrowse/mobx-state-tree';
14
+ import type { IAnyStateTreeNode, IAnyType, IStateTreeNode, SnapshotIn } from '@jbrowse/mobx-state-tree';
13
15
  import type { Theme, ThemeOptions } from '@mui/material';
14
16
  export type { AnyReactComponentType, ClassReturnedBy, InstanceTypeRestrictive, TypeTestedByPredicate, } from './util.ts';
15
17
  export type { IsAny } from './isAny.ts';
@@ -22,7 +24,8 @@ export type { AugmentedRegion, BasePlugin, BlobLocation, FileHandleLocation, Fil
22
24
  export interface AbstractViewContainer extends IStateTreeNode {
23
25
  views: AbstractViewModel[];
24
26
  removeView(view: AbstractViewModel): void;
25
- addView(typeName: string, initialState?: Record<string, unknown>): AbstractViewModel;
27
+ addView<N extends string>(typeName: N, initialState?: NoInfer<ViewSnapshotInput<N>>): AbstractViewModel;
28
+ launchView(typeName: string, initialState?: Record<string, unknown>): Promise<AbstractViewModel>;
26
29
  }
27
30
  export declare function isViewContainer(thing: unknown): thing is AbstractViewContainer;
28
31
  /**
@@ -32,6 +35,7 @@ export declare function isViewContainer(thing: unknown): thing is AbstractViewCo
32
35
  */
33
36
  export interface TrackActionView {
34
37
  showTrack: (id: string) => void;
38
+ launchTrack: (id: string) => Promise<unknown>;
35
39
  getActiveDisplayId?: (trackId: string) => string | undefined;
36
40
  }
37
41
  /**
@@ -63,6 +67,7 @@ export interface AbstractSessionModel extends AbstractViewContainer, RenderingSe
63
67
  jbrowse: IAnyStateTreeNode;
64
68
  drawerPosition?: DrawerPosition;
65
69
  stickyViewHeaders?: boolean;
70
+ viewTitleBars?: boolean;
66
71
  configuration: AnyConfigurationModel;
67
72
  rpcManager: RpcManager;
68
73
  assemblyNames: string[];
@@ -72,15 +77,19 @@ export interface AbstractSessionModel extends AbstractViewContainer, RenderingSe
72
77
  theme: Theme;
73
78
  animationMode: AnimationMode;
74
79
  scrollZoom: boolean;
80
+ highlights: readonly HighlightType[];
81
+ addHighlight: (highlight: HighlightType) => void;
82
+ removeHighlight: (highlight: HighlightType) => void;
83
+ updateHighlight: (old: HighlightType, updates: Partial<HighlightType>) => void;
84
+ setHighlights: (highlights: HighlightType[]) => void;
75
85
  highlightsVisible: boolean;
76
86
  setHighlightsVisible: (arg: boolean) => void;
77
- revealHighlights: () => void;
87
+ highlightLabelsVisible: boolean;
88
+ setHighlightLabelsVisible: (arg: boolean) => void;
78
89
  getPreference: (key: string) => unknown;
79
90
  setPreferenceOverride: (key: string, value: unknown) => void;
80
91
  clearPreferenceOverrides: () => void;
81
92
  setScrollZoom: (flag: boolean) => void;
82
- getDisplayTypeDefault: (displayType: string, slot: string) => unknown;
83
- setDisplayTypeDefault: (displayType: string, slot: string, value: unknown) => void;
84
93
  hovered: unknown;
85
94
  setHovered: (arg: unknown) => void;
86
95
  setFocusedViewId?: (id: string) => void;
@@ -100,11 +109,11 @@ export interface AbstractSessionModel extends AbstractViewContainer, RenderingSe
100
109
  version: string;
101
110
  gitCommit?: string;
102
111
  getTrackActionMenuItems?: (arg: {
103
- config: AnyConfigurationModel;
112
+ config: BaseTrackConfig;
104
113
  view?: TrackActionView;
105
114
  }) => MenuItem[];
106
- getTrackActions?: (arg: AnyConfigurationModel, view?: TrackActionView) => MenuItem[];
107
- getTrackListMenuItems?: (arg: AnyConfigurationModel, view?: TrackActionView) => MenuItem[];
115
+ getTrackActions?: (arg: BaseTrackConfig, view?: TrackActionView) => MenuItem[];
116
+ getTrackListMenuItems?: (arg: BaseTrackConfig, view?: TrackActionView) => MenuItem[];
108
117
  addAssembly?: (conf: Record<string, unknown>) => void;
109
118
  addSessionAssembly?: (conf: Record<string, unknown>) => void;
110
119
  sessionAssemblies?: AnyConfigurationModel[];
@@ -153,6 +162,43 @@ export interface SessionWithConfigEditing extends AbstractSessionModel {
153
162
  }): void;
154
163
  }
155
164
  export declare function isSessionModelWithConfigEditing(t: unknown): t is SessionWithConfigEditing;
165
+ /**
166
+ * A session that edits its tracks as deltas over a base it can hand back: what
167
+ * a display compares its live config against to say whether a setting is the
168
+ * reader's or the one the track was configured or added with.
169
+ */
170
+ export interface SessionWithBaseTrackConfig extends AbstractSessionModel {
171
+ baseTrackConfig(trackId: string): {
172
+ trackId: string;
173
+ [key: string]: unknown;
174
+ } | undefined;
175
+ }
176
+ export declare function isSessionWithBaseTrackConfig(t: unknown): t is SessionWithBaseTrackConfig;
177
+ /**
178
+ * A session that hands a shown track a private working copy of its config, so
179
+ * a non-admin's quick edits land as deltas and never on the shared base
180
+ * (ADR-032). `TrackConfigurationReference` resolves through it where it is
181
+ * one, and through `getTrackById` otherwise.
182
+ */
183
+ export interface SessionWithEditableTrackConfig extends AbstractSessionModel {
184
+ getEditableTrackConfig(trackId: string, schemaType: IAnyType): AnyConfigurationModel | undefined;
185
+ }
186
+ export declare function isSessionWithEditableTrackConfig(t: unknown): t is SessionWithEditableTrackConfig;
187
+ /**
188
+ * abstract interface for a session that keeps a list of views, so that `addView`
189
+ * appends and the view a launch came out of survives it.
190
+ *
191
+ * `AbstractViewContainer` alone does not say this. The single-view embedded
192
+ * products satisfy it with a `views` getter that wraps their one `view` in a
193
+ * fresh plain array and an `addView` that overwrites that view, so "Open in new
194
+ * view" there would destroy the view it was offered from. A view list that is
195
+ * itself part of the state tree is what tells the two apart: only a session
196
+ * that stores its views can hold one more.
197
+ */
198
+ export interface SessionWithMultipleViews extends AbstractSessionModel {
199
+ views: AbstractViewModel[] & IStateTreeNode;
200
+ }
201
+ export declare function isSessionWithMultipleViews(t: unknown): t is SessionWithMultipleViews;
156
202
  /**
157
203
  * abstract interface for a session that can swap one of its views for a new one
158
204
  * of another type, in the slot the old view occupied.
@@ -164,7 +210,7 @@ export declare function isSessionModelWithConfigEditing(t: unknown): t is Sessio
164
210
  * and the guard is what a launcher asks before offering it.
165
211
  */
166
212
  export interface SessionWithViewReplacement extends AbstractSessionModel {
167
- replaceView(view: AbstractViewModel, typeName: string, initialState?: Record<string, unknown>): AbstractViewModel;
213
+ replaceView<N extends string>(view: AbstractViewModel, typeName: N, initialState?: NoInfer<ViewSnapshotInput<N>>): AbstractViewModel;
168
214
  }
169
215
  export declare function isSessionWithViewReplacement(t: unknown): t is SessionWithViewReplacement;
170
216
  /**
@@ -188,10 +234,10 @@ export declare function canReplaceView(session: AbstractViewContainer, view: Abs
188
234
  * that can't replace a view falls back to appending, so a caller passes the
189
235
  * source view unconditionally and never has to ask twice.
190
236
  */
191
- export declare function addOrReplaceView({ session, typeName, initialState, replacing, }: {
237
+ export declare function addOrReplaceView<N extends string>({ session, typeName, initialState, replacing, }: {
192
238
  session: AbstractViewContainer;
193
- typeName: string;
194
- initialState?: Record<string, unknown>;
239
+ typeName: N;
240
+ initialState?: NoInfer<ViewSnapshotInput<N>>;
195
241
  replacing?: AbstractViewModel;
196
242
  }): AbstractViewModel;
197
243
  /**
@@ -294,6 +340,9 @@ export interface SessionWithWidgets extends AbstractSessionModel {
294
340
  addWidget(typeName: string, id: string, initialState?: Record<string, unknown>, configuration?: {
295
341
  type: string;
296
342
  }): Widget;
343
+ openWidget(typeName: string, id: string, initialState?: Record<string, unknown>, configuration?: {
344
+ type: string;
345
+ }): Widget;
297
346
  showWidget(widget: unknown): void;
298
347
  hideWidget(widget: unknown): void;
299
348
  }
@@ -325,6 +374,12 @@ export interface SessionWithDrawerWidgets extends SessionWithWidgets {
325
374
  poppedOut: boolean;
326
375
  popoutWidget(): void;
327
376
  returnWidgetToDrawer(): void;
377
+ /** true on a host with no room for a drawer, where every widget is a modal */
378
+ modalWidgets: boolean;
379
+ setModalWidgets(flag: boolean): void;
380
+ /** whether the visible widget is on screen in a modal */
381
+ modalWidgetVisible: boolean;
382
+ closeModalWidget(): void;
328
383
  }
329
384
  export declare function isSessionModelWithWidgets(thing: unknown): thing is SessionWithWidgets;
330
385
  /** a live connection instance held in a session's `connectionInstances` */
@@ -358,21 +413,30 @@ export interface SessionWithSessionPlugins extends AbstractSessionModel {
358
413
  removeSessionPlugin: (plugin: PluginDefinition) => void;
359
414
  }
360
415
  export declare function isSessionWithSessionPlugins(thing: unknown): thing is SessionWithSessionPlugins;
416
+ export interface PermanentPluginsSafeMode {
417
+ reason: 'requested' | 'previousLaunchFailed';
418
+ /** what was loading when the launch that failed did not finish */
419
+ suspects: string[];
420
+ }
361
421
  /**
362
422
  * A session whose product keeps a plugin list of its own, outside both the
363
423
  * config and the session — jbrowse-web's permanent plugins, stored in the
364
424
  * browser against the config being viewed, so an install survives a new session
365
425
  * and the next visit.
366
426
  *
367
- * The list is not MST state, so `permanentPlugins` re-reads storage on each
368
- * call and nothing observes it. That is enough for its two readers, both of
369
- * which run in response to a click: adding or removing one asks for the whole-
370
- * app reload every plugin change needs anyway.
427
+ * The plugin store is the whole surface: the pin beside an installed plugin
428
+ * writes the list, and an entry the load skipped is a row there with a switch
429
+ * on it, which is what makes the safe mode below something a user can act on.
371
430
  */
372
431
  export interface SessionWithPermanentPlugins extends AbstractSessionModel {
373
- permanentPlugins: PluginDefinition[];
432
+ permanentPlugins: (PluginDefinition & {
433
+ disabled?: boolean;
434
+ })[];
435
+ permanentPluginsSafeMode: PermanentPluginsSafeMode | undefined;
374
436
  addPermanentPlugin: (plugin: PluginDefinition) => void;
375
437
  removePermanentPlugin: (plugin: PluginDefinition) => void;
438
+ setPermanentPluginDisabled: (plugin: PluginDefinition, disabled: boolean) => void;
439
+ reloadWithPermanentPlugins: () => void;
376
440
  }
377
441
  export declare function isSessionWithPermanentPlugins(thing: unknown): thing is SessionWithPermanentPlugins;
378
442
  /** abstract interface for a session that manages a global selection */
@@ -398,7 +462,10 @@ export interface TrackContainer {
398
462
  configuration: {
399
463
  trackId: string;
400
464
  };
401
- displays: ResolvableDisplay[];
465
+ displays: {
466
+ type: string;
467
+ configuration: AnyConfigurationModel;
468
+ }[];
402
469
  }[];
403
470
  assemblyNames?: string[];
404
471
  /**
@@ -410,6 +477,13 @@ export interface TrackContainer {
410
477
  * silence.
411
478
  */
412
479
  showTrack: (trackId: string, initialSnapshot?: object, displayInitialSnapshot?: Record<string, unknown>, inlineConf?: Record<string, unknown>) => unknown;
480
+ /**
481
+ * The sync pair still works on an unloaded display — it loads and shows a
482
+ * tick later, returning undefined — so these are for a caller that needs
483
+ * the track back.
484
+ */
485
+ launchTrack: (trackId: string, initialSnapshot?: object, displayInitialSnapshot?: Record<string, unknown>, inlineConf?: Record<string, unknown>) => Promise<unknown>;
486
+ launchToggleTrack: (trackId: string) => Promise<unknown>;
413
487
  hideTrack: (trackId: string) => unknown;
414
488
  toggleTrack: (trackId: string) => unknown;
415
489
  }
@@ -428,10 +502,13 @@ export interface AbstractViewModel {
428
502
  /**
429
503
  * The same, counting the views this one is nested inside — a synteny row has
430
504
  * no container of its own to write `bodyMounted`, so that flag alone reads
431
- * `true` for a row whose whole stack is off screen. This is what a display's
505
+ * `true` for a row whose whole stack is off screen — and false while the body
506
+ * renders none of its displays (`rendersDisplays`). This is what a display's
432
507
  * phase asks.
433
508
  */
434
509
  effectiveBodyMounted: boolean;
510
+ /** See `BaseViewModel.rendersDisplays`. */
511
+ rendersDisplays: boolean;
435
512
  setWidth(width: number): void;
436
513
  setBodyMounted(flag: boolean): void;
437
514
  setMinimized(flag: boolean): void;
@@ -445,6 +522,13 @@ export interface AbstractViewModel {
445
522
  * the view itself.
446
523
  */
447
524
  trackContainerFor?: (id: string) => TrackContainer | undefined;
525
+ /**
526
+ * the node a display in this view lays its regions out against, where that
527
+ * is not the view's own box — the circular view's strip. A display's
528
+ * foundation reads its host through `containingHost`, which answers this
529
+ * before the view itself.
530
+ */
531
+ regionHost?: unknown;
448
532
  /**
449
533
  * every track container this view owns INSTEAD of a `tracks` array of its
450
534
  * own. The synteny view is the only one: its tracks hang off the levels, one
@@ -453,6 +537,20 @@ export interface AbstractViewModel {
453
537
  * `trackContainerFor` cannot answer that — a walker has no id to ask with.
454
538
  */
455
539
  trackContainers?: TrackContainer[];
540
+ /**
541
+ * what this view contributes to the census of what is open: the tracks it
542
+ * holds itself, and the views nested directly inside it. `BaseViewModel`
543
+ * answers both with nothing, so a view declares what it owns instead of the
544
+ * base reading properties whose meaning belongs to the view — see
545
+ * `util/openViews.ts`, where the recursion over them lives.
546
+ *
547
+ * Required, like `bodyMounted`, so a stand-in that means to be enumerated
548
+ * says so; the empty default means forgetting under-reports rather than
549
+ * putting something that is not a track in front of the readiness marker.
550
+ */
551
+ ownTracks: AbstractTrackModel[];
552
+ /** the views nested directly inside this one — see `ownTracks` */
553
+ ownViews: AbstractViewModel[];
456
554
  }
457
555
  export declare function isViewModel(thing: unknown): thing is AbstractViewModel;
458
556
  type Display = {
@@ -461,12 +559,13 @@ type Display = {
461
559
  export interface AbstractTrackModel {
462
560
  id: string;
463
561
  displays: AbstractDisplayModel[];
464
- configuration: AnyConfigurationModel & {
562
+ configuration: BaseTrackConfig & {
465
563
  displays: Display[];
466
564
  };
467
565
  minimized: boolean;
468
566
  resizing: boolean;
469
567
  setResizing: (flag: boolean) => void;
568
+ persistConfigurationNow?: () => void;
470
569
  }
471
570
  export declare function isTrackModel(thing: unknown): thing is AbstractTrackModel;
472
571
  export interface AbstractDisplayModel {
@@ -18,6 +18,15 @@ export function isSessionModel(thing) {
18
18
  export function isSessionModelWithConfigEditing(t) {
19
19
  return isSessionModel(t) && 'editConfiguration' in t;
20
20
  }
21
+ export function isSessionWithBaseTrackConfig(t) {
22
+ return isSessionModel(t) && 'baseTrackConfig' in t;
23
+ }
24
+ export function isSessionWithEditableTrackConfig(t) {
25
+ return isSessionModel(t) && 'getEditableTrackConfig' in t;
26
+ }
27
+ export function isSessionWithMultipleViews(t) {
28
+ return isSessionModel(t) && isStateTreeNode(t.views);
29
+ }
21
30
  export function isSessionWithViewReplacement(t) {
22
31
  return isSessionModel(t) && 'replaceView' in t;
23
32
  }
@@ -145,4 +145,7 @@ export declare const FileLocation: import("@jbrowse/mobx-state-tree").ISnapshotP
145
145
  authInfo: any;
146
146
  }> | undefined;
147
147
  }>, import("@jbrowse/mobx-state-tree")._NotCustomized>;
148
+ /** A `jexl:` expression; a bare string is refused rather than read as one. */
149
+ export declare const JexlExpressionString: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
148
150
  export { ElementId, createElementId } from './ElementId.ts';
151
+ export { renameIds } from './renameIds.ts';
@@ -1,4 +1,5 @@
1
1
  import { types } from '@jbrowse/mobx-state-tree';
2
+ import { isJexl } from '../jexlStrings.js';
2
3
  // #region regionModel
3
4
  export const NoAssemblyRegion = types
4
5
  .model('NoAssemblyRegion', {
@@ -78,4 +79,7 @@ export const FileLocation = types.snapshotProcessor(FileLocationUnion, {
78
79
  }
79
80
  },
80
81
  });
82
+ /** A `jexl:` expression; a bare string is refused rather than read as one. */
83
+ export const JexlExpressionString = types.refinement('JexlExpression', types.string, isJexl, value => `${JSON.stringify(value)} is not an expression: one is written with its prefix, as "jexl:get(feature,'score') > 10"`);
81
84
  export { ElementId, createElementId } from './ElementId.js';
85
+ export { renameIds } from './renameIds.js';
@@ -0,0 +1 @@
1
+ export declare function renameIds(obj: Record<string, unknown>): Record<string, unknown>;
@@ -0,0 +1,29 @@
1
+ import { createElementId } from './ElementId.js';
2
+ export function renameIds(obj) {
3
+ const idMap = new Map();
4
+ function transformIds(value) {
5
+ if (value === null || value === undefined) {
6
+ return value;
7
+ }
8
+ if (Array.isArray(value)) {
9
+ return value.map(transformIds);
10
+ }
11
+ if (typeof value === 'object') {
12
+ const result = {};
13
+ for (const [key, val] of Object.entries(value)) {
14
+ if (key === 'id' && typeof val === 'string') {
15
+ if (!idMap.has(val)) {
16
+ idMap.set(val, createElementId());
17
+ }
18
+ result[key] = idMap.get(val);
19
+ }
20
+ else {
21
+ result[key] = transformIds(val);
22
+ }
23
+ }
24
+ return result;
25
+ }
26
+ return value;
27
+ }
28
+ return transformIds(obj);
29
+ }
@@ -38,7 +38,7 @@ export type DialogComponentType = React.LazyExoticComponent<React.FC<any>> | Rea
38
38
  * dialog. It is the most-called session member from plugin code (49 sites), and
39
39
  * nearly all of them are a display saying "the user wants to configure
40
40
  * something" — so a host drawing its own UI needs exactly this one name, not a
41
- * session. `agent-docs/ideas/lightweight-toolkit.md` §3.
41
+ * session. `agent-docs/ideas/waiting-on-a-call/lightweight-toolkit.md` §3.
42
42
  */
43
43
  export interface DialogHost {
44
44
  DialogComponent?: DialogComponentType;
@@ -0,0 +1,53 @@
1
+ import type { IStateTreeNode } from '@jbrowse/mobx-state-tree';
2
+ /** what a diagnostic calls the view: its snapshot `type`, or the model name */
3
+ export declare function viewLabel(self: IStateTreeNode): string;
4
+ /**
5
+ * What every surface calls this mistake. A session spec launches a view without
6
+ * ever building a snapshot, so it classifies its own keys and reports them
7
+ * through its own session rather than through the sink below — one wording, so
8
+ * a typo reads the same whether it was written in a config or in a URL.
9
+ */
10
+ export declare function unknownKeysMessage(label: string, keys: string[]): string;
11
+ /** Why a settings key `applyDisplaySettings` was handed wrote nothing. */
12
+ export type UnappliedReason = 'no-slot' | 'setter-only' | 'display-type';
13
+ export interface UnappliedSetting {
14
+ key: string;
15
+ reason: UnappliedReason;
16
+ }
17
+ /** The action `setter-only` names: `height` -> `setHeight`. */
18
+ export declare function displaySetterName(key: string): string;
19
+ /**
20
+ * What a surface calls a key the display has an action for but no slot. Its own
21
+ * sentence rather than `unknownKeysMessage`'s: the display does take the
22
+ * setting, just not written this way, and saying "unknown key" over a key whose
23
+ * setter we name in the same breath contradicts itself.
24
+ */
25
+ export declare function setterOnlyMessage(label: string, keys: string[]): string;
26
+ /**
27
+ * Name the keys a view was handed and could not place, from the partition
28
+ * `withLaunchInput` runs on the snapshot. The console alone, like
29
+ * `reportLegacyInit`: the view opened without them, and the keys are usually a
30
+ * v4 session's retired state that a visitor holding the link cannot act on.
31
+ */
32
+ export declare function reportUnknownKeys(self: IStateTreeNode, keys: string[]): void;
33
+ /**
34
+ * Name the row lists a view refused whole. `withLaunchInput` splits an authored
35
+ * array into the recipes a launcher resolves and the built snapshots MST
36
+ * restores, per entry — but a row list is indexed against the view's `levels`
37
+ * and per-level tracks, so a list holding both kinds has no correct split and
38
+ * is refused rather than renumbered.
39
+ */
40
+ export declare function reportMalformedRows(self: IStateTreeNode, keys: string[]): void;
41
+ /**
42
+ * What every surface calls v4's nested `init`. v5 takes every setting directly
43
+ * on the view object and unwraps the nesting on the way in, so the settings
44
+ * still arrive — this names the spelling to fix while they do.
45
+ */
46
+ export declare function legacyInitMessage(label: string): string;
47
+ /**
48
+ * Name a snapshot that still writes v4's nested `init`. The console alone,
49
+ * unlike the two reporters above: the settings were applied, so there is
50
+ * nothing for a visitor to act on and a warning toast over a working view is
51
+ * noise. `jbrowse validate` is where the author of the config hears about it.
52
+ */
53
+ export declare function reportLegacyInit(self: IStateTreeNode): void;