@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,4 +1,5 @@
1
1
  import { isAlive } from '@jbrowse/mobx-state-tree';
2
+ import { isAbortException } from './aborting.js';
2
3
  import { notifyFeatureDetailsMiss } from './openFeatureWidget.js';
3
4
  import { getNotificationSink } from './sessionServices.js';
4
5
  /**
@@ -48,6 +49,9 @@ export async function withFeatureDetails(self, fetch, onFeat, onMiss = () => {
48
49
  }
49
50
  }
50
51
  catch (e) {
52
+ if (isAbortException(e)) {
53
+ return;
54
+ }
51
55
  // Logged whatever happened, and only toasted while the display is still
52
56
  // there: `getSession` throws on a detached node, and a message naming a
53
57
  // track the user has already closed is noise they cannot act on.
@@ -0,0 +1,174 @@
1
+ export { legacyInitMessage, unknownKeysMessage } from './unknownSnapshotKeys.ts';
2
+ import type { IAnyModelType, IModelType, SnapshotIn, SnapshotOut } from '@jbrowse/mobx-state-tree';
3
+ /**
4
+ * The slice of a PluginManager the partition reads: which view type a
5
+ * snapshot's `type` names, and that type's state model as REGISTERED — the
6
+ * one `extendViewType` may have composed more properties onto after the
7
+ * factory wrapped its own.
8
+ */
9
+ export interface ViewTypeLookup {
10
+ viewTypes: {
11
+ has: (name: string) => boolean;
12
+ };
13
+ getViewType: (name: string) => {
14
+ isStateModelLoaded: boolean;
15
+ stateModel: IAnyModelType;
16
+ };
17
+ }
18
+ export interface LaunchInputOptions<M extends IAnyModelType> {
19
+ /** the PluginManager; without it the partition sees only the wrapped model */
20
+ registry?: ViewTypeLookup;
21
+ /**
22
+ * Whether a snapshot shows the launch applied — rows built, regions set. The
23
+ * blob persists only until then: a snapshot taken mid-load (an autosave
24
+ * firing before the launch autorun navigates) has to rebuild the view rather
25
+ * than drop it to the import form, and a materialized view has nothing left
26
+ * to rebuild. `installInitAutorun` keys its failure policy off the same line,
27
+ * read from the live node. `Partial` because a `stripDefault` property is
28
+ * absent from the snapshot when empty, whatever its declared type says.
29
+ */
30
+ materialized: (snap: Partial<SnapshotOut<M>>) => boolean;
31
+ }
32
+ /**
33
+ * How a launch key's value is told apart from the state property of the same
34
+ * name. A key whose name collides with nothing is `launch`; the rest name the
35
+ * discriminator that splits one authored array into the recipe entries the
36
+ * launcher resolves and the built snapshots MST restores.
37
+ *
38
+ * `replay` is the one that is not remapped at all: the value lands on its
39
+ * property, and a copy rides in the blob so the launcher can run the ordered
40
+ * imperative step the property write alone does not produce.
41
+ */
42
+ export type LaunchKeyKind = 'launch' | 'trackEntries' | 'rows' | 'replay';
43
+ export interface LaunchKeySpec {
44
+ kind: LaunchKeyKind;
45
+ }
46
+ export interface LaunchKeyRegistration<Commands, PassThrough extends string = never> {
47
+ keys: Record<string, LaunchKeySpec>;
48
+ passThrough: readonly PassThrough[];
49
+ /** never assigned; it carries `Commands` to `withLaunchInput`'s return type */
50
+ commands?: Commands;
51
+ }
52
+ /**
53
+ * The launch keys a view captured, plus what it has to report.
54
+ *
55
+ * `Commands` is not made partial: hand-authored JSON is what fills this, so a
56
+ * key the interface marks required is not a guarantee here either way, and the
57
+ * launcher already guards the ones it cannot proceed without.
58
+ */
59
+ export type LaunchInput<Commands> = Commands & {
60
+ unknown?: Record<string, unknown>;
61
+ malformed?: Record<string, unknown>;
62
+ legacyInit?: boolean;
63
+ };
64
+ /**
65
+ * The blob when it still holds something to apply, else undefined. A view's
66
+ * gates ask this rather than the raw property: a snapshot whose only launch
67
+ * content was a typo has nothing to launch, and a view that thinks otherwise
68
+ * waits on an assembly nobody named and never leaves the spinner.
69
+ *
70
+ * Returns the blob itself, never a copy — the launch autorun clears by
71
+ * identity, and a fresh object per read strands the init it just applied.
72
+ */
73
+ export declare function pendingLaunch<C>(launch: LaunchInput<C> | undefined): LaunchInput<C> | undefined;
74
+ /**
75
+ * A view's snapshot type, widened to the authored shape: every launch key is
76
+ * accepted beside the declared properties, and a key that is both takes either
77
+ * meaning. Excess-property checking then makes a misspelled key an error at
78
+ * every literal site — a `defaultSession` view, an `addView` call, a
79
+ * `createViewState` spec.
80
+ */
81
+ export type LaunchSnapshotIn<M extends IAnyModelType, Commands, PassThrough extends string = never> = Omit<SnapshotIn<M>, keyof Commands> & {
82
+ [K in keyof Commands]?: K extends keyof SnapshotIn<M> ? Commands[K] | SnapshotIn<M>[K] : Commands[K];
83
+ } & {
84
+ [K in PassThrough]?: unknown;
85
+ } & {
86
+ /**
87
+ * @deprecated v4's nesting. Write every setting directly on the view object;
88
+ * this is unwrapped on the way in and warns.
89
+ */
90
+ init?: Commands;
91
+ };
92
+ type ReservedKey = 'id' | 'type' | 'launch';
93
+ /**
94
+ * What a view can be launched with, derived: the keys its launcher interprets
95
+ * (`Commands`) plus every declared property of its state model, optional, in
96
+ * the property's own snapshot type. Nothing is restated, so a property is
97
+ * authorable — and TYPED — from the line that declares it.
98
+ *
99
+ * ```ts
100
+ * export type LinearSyntenyViewInit = ViewInit<
101
+ * LinearSyntenyViewStateModel,
102
+ * LinearSyntenyViewCommands
103
+ * >
104
+ * ```
105
+ *
106
+ * The twin of `LaunchSnapshotIn` above, from the other end: that one widens a
107
+ * snapshot type for a literal MST site, this one is what a caller BUILDING a
108
+ * spec annotates, so its commands stay required and its properties optional.
109
+ */
110
+ export type ViewInit<M extends IAnyModelType, Commands> = Commands & Partial<Omit<SnapshotIn<M>, keyof Commands | ReservedKey>>;
111
+ export type LaunchInputModel<M extends IAnyModelType, Commands, PassThrough extends string = never> = M extends IModelType<infer P, infer O, any, infer S> ? IModelType<P, O, LaunchSnapshotIn<M, Commands, PassThrough>, S> : never;
112
+ /**
113
+ * Declare one view's launch keys. The argument is
114
+ * `Record<keyof Commands, LaunchKeySpec>`, so a command the view interprets and
115
+ * nobody registered is a compile error rather than a key that partitions as a
116
+ * typo and warns.
117
+ *
118
+ * `passThrough` names keys that are neither a launch key nor a declared
119
+ * property and still belong on the snapshot — a legacy spelling the view's own
120
+ * `preProcessSnapshot` converts.
121
+ */
122
+ export declare function defineLaunchKeys<Commands>(): <const P extends readonly string[] = readonly never[]>(keys: Record<keyof Commands, LaunchKeySpec>, { passThrough }?: {
123
+ passThrough?: P;
124
+ }) => LaunchKeyRegistration<Commands, P[number]>;
125
+ /**
126
+ * The part of a launch spec that belongs on the snapshot: everything but the
127
+ * launch keys, and the identity and `launch` keys no spec may set. For a caller
128
+ * that applies the launch itself and builds the view from a snapshot — a
129
+ * synteny row, whose parent navigates it and opens its tracks — so what it
130
+ * hands MST is settings only, and the view's own partition sorts those into
131
+ * properties and reported typos.
132
+ */
133
+ export declare function snapshotSettings(spec: Record<string, unknown>, registration: LaunchKeyRegistration<unknown, string> | undefined): {
134
+ [k: string]: unknown;
135
+ };
136
+ /**
137
+ * A track recipe rather than a built track snapshot: a built one cannot carry
138
+ * `trackId`, which BaseTrackModel does not declare. `type` does not
139
+ * discriminate, because a spec writes display types inline.
140
+ */
141
+ export declare function isTrackRecipe(entry: unknown): boolean;
142
+ /**
143
+ * Accept a view's settings written directly on the view object, and move the
144
+ * ones a launcher has to resolve into the internal `launch` property.
145
+ *
146
+ * The partition is a `preProcessSnapshot` and is PURE. A session's view type is
147
+ * a `types.union`, so MST runs every member's preprocessor against every
148
+ * candidate snapshot while deciding which one matches, and runs it about twice
149
+ * more per instantiation; a warning from in here fires against snapshots that
150
+ * are about to be rejected. `afterAttach` — reached only by a snapshot that won
151
+ * — reports what the partition captured.
152
+ *
153
+ * `registry` is the PluginManager. With it the partition classifies against
154
+ * the view type as registered, `extendViewType`'s added properties included;
155
+ * without it, against the model as wrapped here. `materialized` draws the line
156
+ * past which the blob is no longer persisted; see `LaunchInputOptions`.
157
+ *
158
+ * ORDER: MST runs preprocessors in the reverse of the order they were added, so
159
+ * this belongs on the chain BEFORE a view's own legacy-key preprocessor, where
160
+ * it partitions the snapshot MST finally consumes rather than a key that remap
161
+ * is about to convert.
162
+ *
163
+ * The widening cast is the LAST link that may change the creation type: it
164
+ * replaces `CustomC`, so a `.props()` added after it is invisible to
165
+ * `SnapshotIn`. Further `preProcessSnapshot`/`postProcessSnapshot` links are
166
+ * fine — both carry `CustomC` through.
167
+ *
168
+ * Not `types.snapshotProcessor`, which carries the same widened input and stops
169
+ * being a `ModelType`. `PluginManager.pluggableMstType` filters union members on
170
+ * `isModelType`, so a wrapped view is dropped from the session's view union
171
+ * without a word, and `ViewType.stateModel` and every `.properties`
172
+ * introspection site break with it.
173
+ */
174
+ export declare function withLaunchInput<M extends IAnyModelType, Commands, PassThrough extends string>(model: M, registration: LaunchKeyRegistration<Commands, PassThrough>, { registry, materialized }: LaunchInputOptions<M>): LaunchInputModel<M, Commands, PassThrough>;
@@ -0,0 +1,274 @@
1
+ import { reportLegacyInit, reportMalformedRows, reportUnknownKeys, } from './unknownSnapshotKeys.js';
2
+ // re-exported here because the surfaces that classify their own keys — a
3
+ // session spec, which launches without ever building a snapshot — reach the
4
+ // partition's vocabulary through this module
5
+ export { legacyInitMessage, unknownKeysMessage } from './unknownSnapshotKeys.js';
6
+ // What afterAttach reports rather than applies. They live in the blob so the
7
+ // partition has one place to put everything, and `pendingLaunch` is what keeps
8
+ // them from reading as work to do.
9
+ const REPORTED = new Set(['unknown', 'malformed', 'legacyInit']);
10
+ /**
11
+ * The blob when it still holds something to apply, else undefined. A view's
12
+ * gates ask this rather than the raw property: a snapshot whose only launch
13
+ * content was a typo has nothing to launch, and a view that thinks otherwise
14
+ * waits on an assembly nobody named and never leaves the spinner.
15
+ *
16
+ * Returns the blob itself, never a copy — the launch autorun clears by
17
+ * identity, and a fresh object per read strands the init it just applied.
18
+ */
19
+ export function pendingLaunch(launch) {
20
+ return launch && Object.keys(launch).some(k => !REPORTED.has(k))
21
+ ? launch
22
+ : undefined;
23
+ }
24
+ /**
25
+ * Declare one view's launch keys. The argument is
26
+ * `Record<keyof Commands, LaunchKeySpec>`, so a command the view interprets and
27
+ * nobody registered is a compile error rather than a key that partitions as a
28
+ * typo and warns.
29
+ *
30
+ * `passThrough` names keys that are neither a launch key nor a declared
31
+ * property and still belong on the snapshot — a legacy spelling the view's own
32
+ * `preProcessSnapshot` converts.
33
+ */
34
+ export function defineLaunchKeys() {
35
+ return (keys, { passThrough } = {}) => ({
36
+ keys,
37
+ passThrough: passThrough ?? [],
38
+ });
39
+ }
40
+ // `id` picks up MST's optional identifier and `type` picks the view, so neither
41
+ // is ever a setting and neither can be lifted off the snapshot.
42
+ const IDENTITY = new Set(['id', 'type']);
43
+ const LAUNCH = 'launch';
44
+ /**
45
+ * The part of a launch spec that belongs on the snapshot: everything but the
46
+ * launch keys, and the identity and `launch` keys no spec may set. For a caller
47
+ * that applies the launch itself and builds the view from a snapshot — a
48
+ * synteny row, whose parent navigates it and opens its tracks — so what it
49
+ * hands MST is settings only, and the view's own partition sorts those into
50
+ * properties and reported typos.
51
+ */
52
+ export function snapshotSettings(spec, registration) {
53
+ const keys = registration?.keys ?? {};
54
+ return Object.fromEntries(Object.entries(spec).filter(([key]) => !(key in keys) && !IDENTITY.has(key) && key !== LAUNCH));
55
+ }
56
+ function isObject(value) {
57
+ return !!value && typeof value === 'object';
58
+ }
59
+ /**
60
+ * A track recipe rather than a built track snapshot: a built one cannot carry
61
+ * `trackId`, which BaseTrackModel does not declare. `type` does not
62
+ * discriminate, because a spec writes display types inline.
63
+ */
64
+ export function isTrackRecipe(entry) {
65
+ return typeof entry === 'string' || (isObject(entry) && 'trackId' in entry);
66
+ }
67
+ // Each per-entry kind says only which entries are an authored recipe. A recipe
68
+ // goes to the blob for the launcher to resolve; everything else is a built
69
+ // snapshot and stays on the property, so a mixed array splits rather than
70
+ // picking one meaning for the whole thing.
71
+ function isRecipeEntry(kind, entry) {
72
+ switch (kind) {
73
+ case 'trackEntries':
74
+ return isTrackRecipe(entry);
75
+ case 'rows':
76
+ // a built row is a view snapshot, and every view's `type` is a required
77
+ // literal
78
+ return !(isObject(entry) && 'type' in entry);
79
+ default:
80
+ return true;
81
+ }
82
+ }
83
+ function splitEntries(kind, value) {
84
+ const entries = Array.isArray(value) ? value : [value];
85
+ const recipes = entries.filter(e => isRecipeEntry(kind, e));
86
+ const built = entries.filter(e => !isRecipeEntry(kind, e));
87
+ return {
88
+ launch: recipes.length
89
+ ? Array.isArray(value)
90
+ ? recipes
91
+ : value
92
+ : undefined,
93
+ state: built.length ? (Array.isArray(value) ? built : value) : undefined,
94
+ };
95
+ }
96
+ // The properties a snapshot's keys are classified against are the REGISTERED
97
+ // view type's, read at preprocess time: `extendViewType` composes onto the
98
+ // model after `withLaunchInput` wrapped it, and a set frozen at wrap time sent
99
+ // every added property to `unknown` — restored at its default, with a warning
100
+ // naming it a typo. The wrapped model's own properties are the answer when no
101
+ // registry is given, or the snapshot names a type it does not hold, which is
102
+ // how a factory-built model in a test behaves.
103
+ function knownPropsResolver(model, registry) {
104
+ let cachedProps;
105
+ let cachedKeys = new Set();
106
+ return (snap) => {
107
+ const name = snap.type;
108
+ const registered = registry && typeof name === 'string' && registry.viewTypes.has(name)
109
+ ? registry.getViewType(name)
110
+ : undefined;
111
+ const props = registered?.isStateModelLoaded
112
+ ? registered.stateModel.properties
113
+ : model.properties;
114
+ if (props !== cachedProps) {
115
+ cachedProps = props;
116
+ cachedKeys = new Set(Object.keys(props));
117
+ }
118
+ return cachedKeys;
119
+ };
120
+ }
121
+ function classify(snap, { keys, passThrough }, known, out) {
122
+ for (const [key, value] of Object.entries(snap)) {
123
+ const spec = keys[key];
124
+ if (IDENTITY.has(key)) {
125
+ out.state[key] = value;
126
+ }
127
+ else if (spec?.kind === 'launch') {
128
+ out.launch[key] = value;
129
+ }
130
+ else if (spec?.kind === 'replay') {
131
+ out.state[key] = value;
132
+ out.launch[key] = value;
133
+ }
134
+ else if (spec) {
135
+ const { launch, state } = splitEntries(spec.kind, value);
136
+ if (spec.kind === 'rows' && launch !== undefined && state !== undefined) {
137
+ // A row list indexes against `levels` and `tracks[i]`, so lifting half
138
+ // of it renumbers the other half. Nothing here can throw — a pure
139
+ // preprocessor runs against snapshots the union is about to reject — so
140
+ // the whole list goes to the bucket afterAttach reports and the view
141
+ // comes up on its import form rather than on a silently misaligned
142
+ // stack.
143
+ out.malformed[key] = value;
144
+ }
145
+ else {
146
+ if (launch !== undefined) {
147
+ out.launch[key] = launch;
148
+ }
149
+ if (state !== undefined) {
150
+ out.state[key] = state;
151
+ }
152
+ }
153
+ }
154
+ else if (known.has(key) || passThrough.includes(key)) {
155
+ out.state[key] = value;
156
+ }
157
+ else {
158
+ out.unknown[key] = value;
159
+ }
160
+ }
161
+ }
162
+ // BreakpointSplitView's v4 `init` was a bare array of panels rather than an
163
+ // object of settings. A positional list can only be the view's row list, and a
164
+ // view declares at most one, so it is read as that key rather than classified
165
+ // per index — which would name "0" and "1" as unknown keys.
166
+ function legacyInitSnapshot(init, { keys }) {
167
+ const rows = Object.entries(keys).find(([, spec]) => spec.kind === 'rows')?.[0];
168
+ return Array.isArray(init) && rows ? { [rows]: init } : init;
169
+ }
170
+ /**
171
+ * Accept a view's settings written directly on the view object, and move the
172
+ * ones a launcher has to resolve into the internal `launch` property.
173
+ *
174
+ * The partition is a `preProcessSnapshot` and is PURE. A session's view type is
175
+ * a `types.union`, so MST runs every member's preprocessor against every
176
+ * candidate snapshot while deciding which one matches, and runs it about twice
177
+ * more per instantiation; a warning from in here fires against snapshots that
178
+ * are about to be rejected. `afterAttach` — reached only by a snapshot that won
179
+ * — reports what the partition captured.
180
+ *
181
+ * `registry` is the PluginManager. With it the partition classifies against
182
+ * the view type as registered, `extendViewType`'s added properties included;
183
+ * without it, against the model as wrapped here. `materialized` draws the line
184
+ * past which the blob is no longer persisted; see `LaunchInputOptions`.
185
+ *
186
+ * ORDER: MST runs preprocessors in the reverse of the order they were added, so
187
+ * this belongs on the chain BEFORE a view's own legacy-key preprocessor, where
188
+ * it partitions the snapshot MST finally consumes rather than a key that remap
189
+ * is about to convert.
190
+ *
191
+ * The widening cast is the LAST link that may change the creation type: it
192
+ * replaces `CustomC`, so a `.props()` added after it is invisible to
193
+ * `SnapshotIn`. Further `preProcessSnapshot`/`postProcessSnapshot` links are
194
+ * fine — both carry `CustomC` through.
195
+ *
196
+ * Not `types.snapshotProcessor`, which carries the same widened input and stops
197
+ * being a `ModelType`. `PluginManager.pluggableMstType` filters union members on
198
+ * `isModelType`, so a wrapped view is dropped from the session's view union
199
+ * without a word, and `ViewType.stateModel` and every `.properties`
200
+ * introspection site break with it.
201
+ */
202
+ export function withLaunchInput(model, registration, { registry, materialized }) {
203
+ const knownProps = knownPropsResolver(model, registry);
204
+ const partitioned = model
205
+ .preProcessSnapshot((snap) => {
206
+ if (!isObject(snap)) {
207
+ return snap;
208
+ }
209
+ const known = knownProps(snap);
210
+ const { init, ...rest } = snap;
211
+ const out = {
212
+ state: {},
213
+ launch: {},
214
+ unknown: {},
215
+ malformed: {},
216
+ };
217
+ if (isObject(init)) {
218
+ // v4's nesting, unwrapped rather than refused: a nested key sorts the
219
+ // same three ways a flat one does, so honoring it costs one more pass
220
+ // and a deprecation warning, where dropping it opens an admin's
221
+ // `defaultSession` on its defaults. First, so a snapshot spelling one
222
+ // key both ways resolves to the flat one the docs teach.
223
+ classify(legacyInitSnapshot(init, registration), registration, known, out);
224
+ out.launch.legacyInit = true;
225
+ }
226
+ classify(rest, registration, known, out);
227
+ if (Object.keys(out.unknown).length) {
228
+ out.launch.unknown = out.unknown;
229
+ }
230
+ if (Object.keys(out.malformed).length) {
231
+ out.launch.malformed = out.malformed;
232
+ }
233
+ const persisted = out.state[LAUNCH];
234
+ return Object.keys(out.launch).length
235
+ ? {
236
+ ...out.state,
237
+ [LAUNCH]: {
238
+ ...(isObject(persisted) ? persisted : {}),
239
+ ...out.launch,
240
+ },
241
+ }
242
+ : out.state;
243
+ })
244
+ .actions(self => ({
245
+ afterAttach() {
246
+ const { launch } = self;
247
+ if (launch?.legacyInit) {
248
+ reportLegacyInit(self);
249
+ }
250
+ reportUnknownKeys(self, Object.keys(launch?.unknown ?? {}));
251
+ reportMalformedRows(self, Object.keys(launch?.malformed ?? {}));
252
+ },
253
+ }))
254
+ // Whole while the view has yet to materialize, since the pending launch is
255
+ // then the only thing a reload can rebuild the view from, and gone once it
256
+ // has — the report keys with it, so a saved session never carries a
257
+ // typo report about content it no longer holds. `legacyInit` goes either
258
+ // way: it names the SPELLING of the snapshot this view was opened from,
259
+ // and the saved one does not use it, so persisting it would report nesting
260
+ // on every restore forever (`pendingLaunch` excludes the report keys, so
261
+ // no launch run ever clears it).
262
+ .postProcessSnapshot((snap) => {
263
+ const launch = snap[LAUNCH];
264
+ if (!isObject(launch)) {
265
+ return snap;
266
+ }
267
+ const { legacyInit, ...kept } = launch;
268
+ return Object.keys(kept).length &&
269
+ !materialized(snap)
270
+ ? { ...snap, [LAUNCH]: kept }
271
+ : Object.fromEntries(Object.entries(snap).filter(([key]) => key !== LAUNCH));
272
+ });
273
+ return partitioned;
274
+ }