@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,39 +1,49 @@
1
1
  import type PluginManager from '../../PluginManager.ts';
2
+ import type { AnyConfigurationSchemaType } from '../../configuration/index.ts';
2
3
  export interface DisplaySnapshot {
3
4
  type: string;
4
5
  displayId?: string;
5
6
  [key: string]: unknown;
6
7
  }
7
8
  /**
8
- * Pure: route each shorthand `displayDefaults: {...}` setting to the display
9
- * types that define it. A setting goes to every display type whose config schema
10
- * has that slot, so slot names disambiguate across displays on their own (e.g.
11
- * `color` → LinearVariantDisplay, `strokeColor` → ChordVariantDisplay). Keys no
12
- * display defines are returned as `unknownKeys` for the caller to surface.
9
+ * Route each shorthand `displayDefaults: {...}` setting to the display types
10
+ * whose member of that name takes its value: `color: 'red'` reaches every
11
+ * display with a colour, `color: { field: 'type' }` only those whose colour
12
+ * maps a field, and a spelling a display retired reaches that display as the
13
+ * members it became. `reached` names the displays each key went to. A key no
14
+ * display knows is an `unknownKeys` entry, and one every display that knows it
15
+ * refuses a `refused` entry carrying each reason.
13
16
  */
14
- export declare function collectDisplayOverrides(displaySettings: Record<string, unknown>, displaySlots: Map<string, Set<string>>): {
17
+ export declare function collectDisplayOverrides(displaySettings: Record<string, unknown>, displaySchemas: ReadonlyMap<string, AnyConfigurationSchemaType>): {
15
18
  overrides: Map<string, Record<string, unknown>>;
19
+ reached: Map<string, string[]>;
16
20
  unknownKeys: string[];
21
+ refused: {
22
+ key: string;
23
+ reasons: string[];
24
+ }[];
17
25
  };
18
26
  /**
19
- * Pure: fold per-display override props into a `displays` array, creating an
20
- * entry (with a derived displayId) for any display type not already present.
21
- * Explicit entries in the existing array win over shorthand on conflict.
27
+ * Fold per-display override props into the entries a `displays` array already
28
+ * has; explicit props win. A display with no entry gets none: a setting never
29
+ * adds a display to a track.
22
30
  */
23
- export declare function mergeOverridesIntoDisplays(displays: DisplaySnapshot[], overrides: Map<string, Record<string, unknown>>, trackId: string): DisplaySnapshot[];
31
+ export declare function mergeOverridesIntoDisplays(displays: DisplaySnapshot[], overrides: Map<string, Record<string, unknown>>): DisplaySnapshot[];
24
32
  /**
25
33
  * Expands the shorthand `displayDefaults` **object** into the explicit `displays`
26
34
  * **array**, so users can set display settings without naming the display type
27
35
  * or nesting in `displays:[{type,...}]`. `displayDefaults:{color:'green'}` routes
28
- * each setting to the display type(s) that define that slot, folding them into
29
- * whatever `displays` array the track already has (explicit entries win).
36
+ * each setting to the display type(s) whose slot takes it, folding them into
37
+ * the entries the `displays` array has (explicit props win). A key whose every
38
+ * taker is missing from the array, a display the track's adapter cannot feed,
39
+ * is reported rather than giving the track that display.
30
40
  *
31
41
  * `displayDefaults` is kept separate from `displays` (rather than overloading
32
42
  * `displays` by shape) so a config using it still loads in a JBrowse version
33
43
  * that predates the feature — the unknown key is ignored, instead of crashing
34
44
  * when the array-typed `displays` slot receives an object.
35
45
  *
36
- * Runs inside `baseTrackConfig.preProcessSnapshot`, before display-stub
46
+ * Runs inside `baseTrackConfig.preProcessSnapshot`, after display-stub
37
47
  * injection. Takes/returns the loosely-typed snapshot (as `evaluateExtensionPoint`
38
48
  * does) — the caller casts the result to its snapshot type for validation.
39
49
  */
@@ -1,75 +1,96 @@
1
1
  import { getConfigurationSchemaMetadata } from '../../configuration/schemaRegistry.js';
2
- function schemaSlotNames(schema) {
2
+ import { slotValueRefusal } from '../../configuration/slotFacade.js';
3
+ import { isPlainObject } from '../../util/objectUtils.js';
4
+ /**
5
+ * What one display would do with a shorthand setting: the members it would
6
+ * write, or why it will not take it. `undefined` means the display has no
7
+ * member of that name and no retired spelling of one, so it is not a candidate
8
+ * and the key is not its business.
9
+ */
10
+ function verdictOf(schema, key, value) {
3
11
  const meta = getConfigurationSchemaMetadata(schema);
4
- return new Set(meta ? Object.keys(meta.definition) : []);
5
- }
6
- function isPlainObject(v) {
7
- return typeof v === 'object' && v !== null && !Array.isArray(v);
8
- }
9
- /** display type name → its config slot names, for one track type. */
10
- function trackDisplaySlots(trackType) {
11
- const displaySlots = new Map();
12
- for (const d of trackType.displayTypes) {
13
- displaySlots.set(d.name, schemaSlotNames(d.configSchema));
12
+ const retired = meta?.options.retired?.[key];
13
+ let members;
14
+ try {
15
+ members = retired
16
+ ? retired(value)
17
+ : meta?.definition[key]
18
+ ? { [key]: value }
19
+ : undefined;
20
+ }
21
+ catch (e) {
22
+ return { refusal: e instanceof Error ? e.message : String(e) };
14
23
  }
15
- return displaySlots;
24
+ // A lift answering nothing has not placed the value — a `colorBy` naming a
25
+ // scheme this display never had, a `renderer` holding none of the props it
26
+ // retired. That is the `unknownKeys` report, not a silent write of nothing.
27
+ if (!members || Object.keys(members).length === 0) {
28
+ return undefined;
29
+ }
30
+ const refusal = Object.entries(members)
31
+ .map(([name, member]) => slotValueRefusal(schema, name, member))
32
+ .find(reason => reason !== undefined);
33
+ return refusal === undefined ? { members } : { refusal };
16
34
  }
17
35
  /**
18
- * Pure: route each shorthand `displayDefaults: {...}` setting to the display
19
- * types that define it. A setting goes to every display type whose config schema
20
- * has that slot, so slot names disambiguate across displays on their own (e.g.
21
- * `color` → LinearVariantDisplay, `strokeColor` → ChordVariantDisplay). Keys no
22
- * display defines are returned as `unknownKeys` for the caller to surface.
36
+ * Route each shorthand `displayDefaults: {...}` setting to the display types
37
+ * whose member of that name takes its value: `color: 'red'` reaches every
38
+ * display with a colour, `color: { field: 'type' }` only those whose colour
39
+ * maps a field, and a spelling a display retired reaches that display as the
40
+ * members it became. `reached` names the displays each key went to. A key no
41
+ * display knows is an `unknownKeys` entry, and one every display that knows it
42
+ * refuses a `refused` entry carrying each reason.
23
43
  */
24
- export function collectDisplayOverrides(displaySettings, displaySlots) {
44
+ export function collectDisplayOverrides(displaySettings, displaySchemas) {
25
45
  const overrides = new Map();
46
+ const reached = new Map();
26
47
  const unknownKeys = [];
48
+ const refused = [];
27
49
  for (const [key, value] of Object.entries(displaySettings)) {
28
- const targets = [...displaySlots]
29
- .filter(([, slots]) => slots.has(key))
30
- .map(([name]) => name);
31
- if (targets.length) {
32
- for (const name of targets) {
33
- overrides.set(name, { ...overrides.get(name), [key]: value });
34
- }
35
- }
36
- else {
50
+ const verdicts = [...displaySchemas].flatMap(([name, schema]) => {
51
+ const verdict = verdictOf(schema, key, value);
52
+ return verdict ? [{ name, ...verdict }] : [];
53
+ });
54
+ const targets = verdicts.filter(v => v.members);
55
+ if (verdicts.length === 0) {
37
56
  unknownKeys.push(key);
38
57
  }
58
+ else if (targets.length === 0) {
59
+ refused.push({
60
+ key,
61
+ reasons: verdicts.map(v => `${v.name}: ${v.refusal}`),
62
+ });
63
+ }
64
+ for (const { name, members } of targets) {
65
+ overrides.set(name, { ...overrides.get(name), ...members });
66
+ }
67
+ reached.set(key, targets.map(t => t.name));
39
68
  }
40
- return { overrides, unknownKeys };
69
+ return { overrides, reached, unknownKeys, refused };
41
70
  }
42
71
  /**
43
- * Pure: fold per-display override props into a `displays` array, creating an
44
- * entry (with a derived displayId) for any display type not already present.
45
- * Explicit entries in the existing array win over shorthand on conflict.
72
+ * Fold per-display override props into the entries a `displays` array already
73
+ * has; explicit props win. A display with no entry gets none: a setting never
74
+ * adds a display to a track.
46
75
  */
47
- export function mergeOverridesIntoDisplays(displays, overrides, trackId) {
48
- const seen = new Set();
49
- const merged = displays.map(d => {
50
- seen.add(d.type);
51
- return { ...overrides.get(d.type), ...d };
52
- });
53
- for (const [name, props] of overrides) {
54
- if (!seen.has(name)) {
55
- merged.push({ type: name, displayId: `${trackId}-${name}`, ...props });
56
- }
57
- }
58
- return merged;
76
+ export function mergeOverridesIntoDisplays(displays, overrides) {
77
+ return displays.map(d => ({ ...overrides.get(d.type), ...d }));
59
78
  }
60
79
  /**
61
80
  * Expands the shorthand `displayDefaults` **object** into the explicit `displays`
62
81
  * **array**, so users can set display settings without naming the display type
63
82
  * or nesting in `displays:[{type,...}]`. `displayDefaults:{color:'green'}` routes
64
- * each setting to the display type(s) that define that slot, folding them into
65
- * whatever `displays` array the track already has (explicit entries win).
83
+ * each setting to the display type(s) whose slot takes it, folding them into
84
+ * the entries the `displays` array has (explicit props win). A key whose every
85
+ * taker is missing from the array, a display the track's adapter cannot feed,
86
+ * is reported rather than giving the track that display.
66
87
  *
67
88
  * `displayDefaults` is kept separate from `displays` (rather than overloading
68
89
  * `displays` by shape) so a config using it still loads in a JBrowse version
69
90
  * that predates the feature — the unknown key is ignored, instead of crashing
70
91
  * when the array-typed `displays` slot receives an object.
71
92
  *
72
- * Runs inside `baseTrackConfig.preProcessSnapshot`, before display-stub
93
+ * Runs inside `baseTrackConfig.preProcessSnapshot`, after display-stub
73
94
  * injection. Takes/returns the loosely-typed snapshot (as `evaluateExtensionPoint`
74
95
  * does) — the caller casts the result to its snapshot type for validation.
75
96
  */
@@ -101,15 +122,26 @@ export function expandTrackConfigShorthand(input, pluginManager) {
101
122
  if (!trackType.displayTypes.length) {
102
123
  return snap;
103
124
  }
104
- const { overrides, unknownKeys } = collectDisplayOverrides(shorthand, trackDisplaySlots(trackType));
125
+ const { overrides, reached, unknownKeys, refused } = collectDisplayOverrides(shorthand, new Map(trackType.displayTypes.map(d => [d.name, d.configSchema])));
105
126
  for (const key of unknownKeys) {
106
127
  console.warn(`Track "${trackId}": display setting "${key}" is not a slot on any display of a ${type}`);
107
128
  }
129
+ if (refused.length > 0) {
130
+ throw new Error(refused
131
+ .map(({ key, reasons }) => `Track "${trackId}": no display of a ${type} takes displayDefaults.${key} (${reasons.join('; ')})`)
132
+ .join('\n'));
133
+ }
108
134
  const displays = Array.isArray(rest.displays)
109
135
  ? rest.displays
110
136
  : [];
137
+ const listed = new Set(displays.map(d => d.type));
138
+ for (const [key, names] of reached) {
139
+ if (names.length > 0 && !names.some(name => listed.has(name))) {
140
+ console.warn(`Track "${trackId}": displayDefaults.${key} reaches only ${names.join(', ')}, which its adapter cannot feed`);
141
+ }
142
+ }
111
143
  return {
112
144
  ...rest,
113
- displays: mergeOverridesIntoDisplays(displays, overrides, trackId),
145
+ displays: mergeOverridesIntoDisplays(displays, overrides),
114
146
  };
115
147
  }
@@ -2,7 +2,6 @@ export { default as baseConnectionConfig } from './baseConnectionConfig.ts';
2
2
  export { default as BaseConnectionModelFactory } from './BaseConnectionModelFactory.ts';
3
3
  export { default as BaseViewModel } from './BaseViewModel.ts';
4
4
  export type { IBaseViewModel } from './BaseViewModel.ts';
5
- export { default as HighlightsMixin } from './HighlightsMixin.ts';
6
5
  export { BaseDisplay } from './BaseDisplayModel.tsx';
7
6
  export type { BaseDisplayModel, BaseDisplayStateModel, DisplayModel, } from './BaseDisplayModel.tsx';
8
7
  export { InternetAccount } from './InternetAccountModel.ts';
@@ -10,8 +9,8 @@ export type { BaseInternetAccountModel, BaseInternetAccountStateModel, } from '.
10
9
  export { BaseInternetAccountConfig } from './baseInternetAccountConfig.ts';
11
10
  export { createBaseTrackModel } from './BaseTrackModel.ts';
12
11
  export type { BaseTrackModel, BaseTrackStateModel } from './BaseTrackModel.ts';
13
- export { createBaseTrackConfig, preprocessTrackConfigSnapshot, trackConfigActions, } from './baseTrackConfig.ts';
12
+ export { createBaseTrackConfig, preprocessTrackConfigSnapshot, } from './baseTrackConfig.ts';
14
13
  export type { BaseTrackConfig } from './baseTrackConfig.ts';
15
- export { addDisplayConfigMigration } from './migrateTrackConfig.ts';
14
+ export { migrateRetiredDisplays } from './migrateTrackConfig.ts';
16
15
  export type { TrackConfigSnapshot } from './migrateTrackConfig.ts';
17
16
  export type { FileTypeExporter } from './saveTrackFileTypes/types.ts';
@@ -1,10 +1,9 @@
1
1
  export { default as baseConnectionConfig } from './baseConnectionConfig.js';
2
2
  export { default as BaseConnectionModelFactory } from './BaseConnectionModelFactory.js';
3
3
  export { default as BaseViewModel } from './BaseViewModel.js';
4
- export { default as HighlightsMixin } from './HighlightsMixin.js';
5
4
  export { BaseDisplay } from './BaseDisplayModel.js';
6
5
  export { InternetAccount } from './InternetAccountModel.js';
7
6
  export { BaseInternetAccountConfig } from './baseInternetAccountConfig.js';
8
7
  export { createBaseTrackModel } from './BaseTrackModel.js';
9
- export { createBaseTrackConfig, preprocessTrackConfigSnapshot, trackConfigActions, } from './baseTrackConfig.js';
10
- export { addDisplayConfigMigration } from './migrateTrackConfig.js';
8
+ export { createBaseTrackConfig, preprocessTrackConfigSnapshot, } from './baseTrackConfig.js';
9
+ export { migrateRetiredDisplays } from './migrateTrackConfig.js';
@@ -15,7 +15,21 @@ declare module '../../PluginManager.ts' {
15
15
  };
16
16
  }
17
17
  }
18
- export declare function addDisplayConfigMigration(pluginManager: PluginManager, displayTypes: string[], migrate: (displaySnap: Record<string, unknown>) => Record<string, unknown>): void;
18
+ /**
19
+ * Loads each display entry a retired type names as the display it retired
20
+ * into, and rewrites every entry's retired spellings, as each DisplayType's
21
+ * `retiredTypes` and its config schema's `retired` declare. Runs on the track
22
+ * config before the `Core-preProcessTrackConfig` handlers, which read the
23
+ * current names, and before the display union, which refuses a retired value
24
+ * where a schema's own `preProcessSnapshot` never runs.
25
+ *
26
+ * Entries that collapse onto one type become one: an entry written for this
27
+ * display beats one written for a retired type, a bare `{ type, displayId }`
28
+ * stub yields to either, and among equals the first wins. The survivor takes
29
+ * the first one's place and id, so the default display and the references a
30
+ * session holds stay where they were.
31
+ */
32
+ export declare function migrateRetiredDisplays(pluginManager: PluginManager, snap: TrackConfigSnapshot): TrackConfigSnapshot;
19
33
  export interface LegacyDisplaySnapshot {
20
34
  type: string;
21
35
  displayId?: string;
@@ -1,33 +1,93 @@
1
1
  // Back-compat migration for track config snapshots. Kept out of
2
2
  // baseTrackConfig.ts so the schema definition stays free of legacy-format
3
3
  // handling.
4
+ import { getConfigurationSchemaMetadata } from '../../configuration/schemaRegistry.js';
5
+ import { liftRetiredSpellings } from '../../configuration/snapshotPreprocess.js';
4
6
  // #endregion
5
- // Registers a back-compat migration for a display's CONFIG snapshot that runs
6
- // BEFORE the display `types.union` validates it.
7
- //
8
- // Use this — NOT a config-schema `preProcessSnapshot` — whenever the migration
9
- // rewrites the VALUE of an existing constrained slot (enum rename, type narrow).
10
- // A config-schema `preProcessSnapshot` does not run during union validation
11
- // (the union tests the raw snapshot), so the union rejects the legacy value
12
- // first and the migration never fires. A slot add/remove/rename, where the old
13
- // data becomes an unknown extra prop, does NOT need this — the union ignores
14
- // unknown props, so a config-schema `preProcessSnapshot` is fine there.
15
- //
16
- // Pass every type name the display answers to (canonical + aliases); this runs
17
- // before alias normalization. `migrate` must be idempotent (it also fires via
18
- // the config-schema `preProcessSnapshot` on a direct create).
19
- export function addDisplayConfigMigration(pluginManager, displayTypes, migrate) {
20
- const match = new Set(displayTypes);
21
- const matches = (d) => typeof d.type === 'string' && match.has(d.type);
22
- pluginManager.addToExtensionPoint('Core-preProcessTrackConfig', snap => {
23
- const { displays } = snap;
24
- return Array.isArray(displays) && displays.some(matches)
25
- ? {
26
- ...snap,
27
- displays: displays.map(d => (matches(d) ? migrate(d) : d)),
28
- }
29
- : snap;
7
+ const isBareEntry = (entry) => Object.keys(entry).every(k => k === 'type' || k === 'displayId');
8
+ /**
9
+ * Loads each display entry a retired type names as the display it retired
10
+ * into, and rewrites every entry's retired spellings, as each DisplayType's
11
+ * `retiredTypes` and its config schema's `retired` declare. Runs on the track
12
+ * config before the `Core-preProcessTrackConfig` handlers, which read the
13
+ * current names, and before the display union, which refuses a retired value
14
+ * where a schema's own `preProcessSnapshot` never runs.
15
+ *
16
+ * Entries that collapse onto one type become one: an entry written for this
17
+ * display beats one written for a retired type, a bare `{ type, displayId }`
18
+ * stub yields to either, and among equals the first wins. The survivor takes
19
+ * the first one's place and id, so the default display and the references a
20
+ * session holds stay where they were.
21
+ */
22
+ export function migrateRetiredDisplays(pluginManager, snap) {
23
+ const { displays, trackId } = snap;
24
+ if (!Array.isArray(displays) || displays.length === 0) {
25
+ return snap;
26
+ }
27
+ const elements = pluginManager.getDisplayElements();
28
+ const byName = new Map(elements.map(d => [d.name, d]));
29
+ const byRetiredName = new Map(elements.flatMap(d => d.retiredTypes.map(r => [r.type, { d, r }])));
30
+ const migrated = displays.map((entry) => {
31
+ const type = entry.type;
32
+ const retired = type === undefined ? undefined : byRetiredName.get(type);
33
+ const display = retired?.d ?? (type ? byName.get(type) : undefined);
34
+ if (!display) {
35
+ return { entry, rank: 0 };
36
+ }
37
+ let next = entry;
38
+ if (retired) {
39
+ const { displayId } = entry;
40
+ next = {
41
+ ...(retired.r.migrate?.(entry) ?? entry),
42
+ type: display.name,
43
+ ...(displayId === undefined
44
+ ? {}
45
+ : {
46
+ displayId: displayId === `${String(trackId)}-${type}`
47
+ ? `${String(trackId)}-${display.name}`
48
+ : displayId,
49
+ }),
50
+ };
51
+ }
52
+ const meta = getConfigurationSchemaMetadata(display.configSchema);
53
+ next = meta ? liftRetiredSpellings(meta, next) : next;
54
+ return {
55
+ entry: next,
56
+ type: display.name,
57
+ rank: isBareEntry(entry) ? 1 : retired ? 2 : 3,
58
+ };
30
59
  });
60
+ if (migrated.every((m, i) => m.entry === displays[i] && m.type === displays[i].type) &&
61
+ new Set(migrated.map(m => m.type)).size === migrated.length) {
62
+ return snap;
63
+ }
64
+ const winners = new Map();
65
+ for (const m of migrated) {
66
+ const best = m.type === undefined ? undefined : winners.get(m.type);
67
+ if (m.type !== undefined && (!best || m.rank > best.rank)) {
68
+ winners.set(m.type, m);
69
+ }
70
+ }
71
+ const placed = new Set();
72
+ return {
73
+ ...snap,
74
+ displays: migrated.flatMap(m => {
75
+ if (m.type === undefined) {
76
+ return [m.entry];
77
+ }
78
+ if (placed.has(m.type)) {
79
+ return [];
80
+ }
81
+ placed.add(m.type);
82
+ const winner = winners.get(m.type);
83
+ const displayId = m.entry.displayId ?? winner.entry.displayId;
84
+ return [
85
+ winner === m || displayId === undefined
86
+ ? winner.entry
87
+ : { ...winner.entry, displayId },
88
+ ];
89
+ }),
90
+ };
31
91
  }
32
92
  // The GPU rewrite removed the per-display `renderer` sub-config (which carried
33
93
  // color/height/etc.). Old configs still nest those values under `renderer`, so
@@ -1,13 +1,14 @@
1
- import type { AbstractSessionModel, Feature, StatusCallback, StopToken } from '../../../util/index.ts';
1
+ import type { AbstractSessionModel, Feature, StatusCallback } from '../../../util/index.ts';
2
+ export declare function insdcFeatureKey(type: string): string;
2
3
  export declare function formatFeatWithSubfeatures({ feature, minPos, geneName, }: {
3
4
  feature: Feature;
4
5
  minPos: number;
5
6
  geneName?: string;
6
7
  }): string;
7
- export declare function stringifyGBK({ features, assemblyName, session, stopToken, statusCallback, }: {
8
+ export declare function stringifyGBK({ features, assemblyName, session, signal, statusCallback, }: {
8
9
  assemblyName: string;
9
10
  session: AbstractSessionModel;
10
11
  features: Feature[];
11
- stopToken?: StopToken;
12
+ signal?: AbortSignal;
12
13
  statusCallback?: StatusCallback;
13
14
  }): Promise<string>;