@jbrowse/core 5.0.0-beta.7 → 5.0.0-beta.9

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 (379) hide show
  1. package/README.md +427 -130
  2. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +3 -2
  3. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +5 -3
  4. package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +3 -5
  5. package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +8 -9
  6. package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +8 -13
  7. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +2 -1
  8. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +3 -3
  9. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.d.ts +8 -0
  10. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.js +24 -0
  11. package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +3 -2
  12. package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +5 -3
  13. package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +1 -0
  14. package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +1 -4
  15. package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.d.ts +16 -0
  16. package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.js +53 -0
  17. package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +0 -8
  18. package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +0 -16
  19. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +7 -34
  20. package/esm/BaseFeatureWidget/configSchema.d.ts +1 -1
  21. package/esm/BaseFeatureWidget/formatDetails.d.ts +13 -29
  22. package/esm/BaseFeatureWidget/formatDetails.js +46 -79
  23. package/esm/BaseFeatureWidget/index.d.ts +1 -0
  24. package/esm/BaseFeatureWidget/stateModelFactory.d.ts +35 -28
  25. package/esm/BaseFeatureWidget/stateModelFactory.js +94 -102
  26. package/esm/BaseFeatureWidget/types.d.ts +3 -0
  27. package/esm/BaseFeatureWidget/util.d.ts +0 -3
  28. package/esm/BaseFeatureWidget/util.js +0 -17
  29. package/esm/PluginLoader.d.ts +14 -9
  30. package/esm/PluginLoader.js +34 -26
  31. package/esm/PluginManager.d.ts +4 -4
  32. package/esm/PluginManager.js +1 -1
  33. package/esm/ReExports/coreModules.generated.d.ts +2 -0
  34. package/esm/ReExports/coreModules.generated.js +492 -0
  35. package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
  36. package/esm/ReExports/coreWorkerModules.generated.js +453 -0
  37. package/esm/ReExports/frameworkModules.d.ts +2 -0
  38. package/esm/ReExports/frameworkModules.js +67 -0
  39. package/esm/ReExports/frameworkShared.d.ts +12 -0
  40. package/esm/ReExports/frameworkShared.js +16 -0
  41. package/esm/ReExports/frameworkWorkerModules.generated.d.ts +2 -0
  42. package/esm/ReExports/frameworkWorkerModules.generated.js +130 -0
  43. package/esm/ReExports/list.js +493 -79
  44. package/esm/ReExports/modules.d.ts +1 -1
  45. package/esm/ReExports/modules.js +10 -87
  46. package/esm/ReExports/registry.d.ts +1 -0
  47. package/esm/ReExports/registry.js +23 -5
  48. package/esm/ReExports/uiStub.d.ts +2 -1
  49. package/esm/ReExports/uiStub.js +24 -2
  50. package/esm/ReExports/workerModules.js +8 -12
  51. package/esm/TextSearch/TextSearchManager.d.ts +3 -12
  52. package/esm/TextSearch/TextSearchManager.js +22 -10
  53. package/esm/assemblyManager/assembly.d.ts +10 -14
  54. package/esm/assemblyManager/assembly.js +10 -14
  55. package/esm/assemblyManager/assemblyConfigSchema.d.ts +23 -81
  56. package/esm/assemblyManager/assemblyManager.d.ts +10 -16
  57. package/esm/assemblyManager/assemblyManager.js +7 -10
  58. package/esm/assemblyManager/loadRefNameMap.js +3 -3
  59. package/esm/configuration/configurationSchema.d.ts +75 -31
  60. package/esm/configuration/configurationSchema.js +74 -40
  61. package/esm/configuration/configurationSchemaUnion.d.ts +39 -0
  62. package/esm/configuration/configurationSchemaUnion.js +59 -0
  63. package/esm/configuration/configurationSlot.d.ts +37 -12
  64. package/esm/configuration/configurationSlot.js +83 -22
  65. package/esm/configuration/formatAboutConfigSchema.d.ts +7 -21
  66. package/esm/configuration/formatDetailsConfigSchema.d.ts +11 -37
  67. package/esm/configuration/formatDetailsConfigSchema.js +10 -13
  68. package/esm/configuration/getConf.d.ts +17 -9
  69. package/esm/configuration/getConf.js +52 -7
  70. package/esm/configuration/index.d.ts +11 -4
  71. package/esm/configuration/index.js +7 -4
  72. package/esm/configuration/mergeFormatCallbacks.d.ts +6 -7
  73. package/esm/configuration/mergeFormatCallbacks.js +13 -10
  74. package/esm/configuration/readConfObject.d.ts +2 -22
  75. package/esm/configuration/readConfObject.js +15 -49
  76. package/esm/configuration/requirements.d.ts +37 -0
  77. package/esm/configuration/requirements.js +88 -0
  78. package/esm/configuration/schemaRegistry.d.ts +21 -1
  79. package/esm/configuration/schemaRegistry.js +11 -0
  80. package/esm/configuration/schemaTypes.d.ts +3 -0
  81. package/esm/configuration/schemaTypes.js +10 -0
  82. package/esm/configuration/slotFacade.d.ts +35 -4
  83. package/esm/configuration/slotFacade.js +96 -9
  84. package/esm/configuration/snapshotPreprocess.d.ts +27 -0
  85. package/esm/configuration/snapshotPreprocess.js +102 -0
  86. package/esm/configuration/types.d.ts +161 -22
  87. package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +2 -2
  88. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +11 -2
  89. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +12 -1
  90. package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +2 -3
  91. package/esm/data_adapters/BaseAdapter/featureDensity.js +2 -3
  92. package/esm/data_adapters/BaseAdapter/index.d.ts +22 -3
  93. package/esm/data_adapters/BaseAdapter/types.d.ts +3 -4
  94. package/esm/data_adapters/BaseAdapter/zoomRange.d.ts +10 -0
  95. package/esm/data_adapters/BaseAdapter/zoomRange.js +1 -0
  96. package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +9 -11
  97. package/esm/data_adapters/getSequenceSubAdapter.d.ts +1 -3
  98. package/esm/data_adapters/getSequenceSubAdapter.js +1 -3
  99. package/esm/pluggableElementTypes/AdapterType.d.ts +7 -7
  100. package/esm/pluggableElementTypes/RpcMethodType.d.ts +1 -1
  101. package/esm/pluggableElementTypes/RpcMethodType.js +3 -8
  102. package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +1 -2
  103. package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +7 -7
  104. package/esm/pluggableElementTypes/index.d.ts +1 -1
  105. package/esm/pluggableElementTypes/index.js +1 -1
  106. package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +17 -7
  107. package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +45 -48
  108. package/esm/pluggableElementTypes/models/BaseDisplayModel.js +40 -36
  109. package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +10 -13
  110. package/esm/pluggableElementTypes/models/BaseTrackModel.js +6 -6
  111. package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +37 -17
  112. package/esm/pluggableElementTypes/models/BaseViewModel.js +25 -10
  113. package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +26 -16
  114. package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +1 -1
  115. package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -18
  116. package/esm/pluggableElementTypes/models/baseConnectionConfig.js +5 -5
  117. package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +26 -31
  118. package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +57 -141
  119. package/esm/pluggableElementTypes/models/baseTrackConfig.js +22 -26
  120. package/esm/pluggableElementTypes/models/components/SaveTrackData.js +2 -2
  121. package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +3 -4
  122. package/esm/pluggableElementTypes/models/components/fetchTrackData.js +3 -3
  123. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +15 -7
  124. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +38 -29
  125. package/esm/pluggableElementTypes/models/index.d.ts +1 -2
  126. package/esm/pluggableElementTypes/models/index.js +1 -2
  127. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +3 -3
  128. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +4 -4
  129. package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +3 -3
  130. package/esm/rpc/BaseRpcDriver.d.ts +1 -2
  131. package/esm/rpc/BaseRpcDriver.js +23 -30
  132. package/esm/rpc/MainThreadRpcDriver.d.ts +2 -2
  133. package/esm/rpc/MainThreadRpcDriver.js +13 -8
  134. package/esm/rpc/RpcClient.d.ts +17 -6
  135. package/esm/rpc/RpcClient.js +42 -12
  136. package/esm/rpc/RpcManager.d.ts +8 -10
  137. package/esm/rpc/RpcManager.js +1 -1
  138. package/esm/rpc/RpcRegistry.d.ts +8 -2
  139. package/esm/rpc/RpcServer.d.ts +3 -1
  140. package/esm/rpc/RpcServer.js +19 -12
  141. package/esm/rpc/WebWorkerRpcDriver.d.ts +3 -3
  142. package/esm/rpc/WebWorkerRpcDriver.js +9 -47
  143. package/esm/rpc/byteBudget.d.ts +3 -5
  144. package/esm/rpc/byteBudget.js +4 -4
  145. package/esm/rpc/configSchema.d.ts +7 -21
  146. package/esm/rpc/coreRpcMethods.d.ts +1 -0
  147. package/esm/rpc/coreRpcMethods.js +1 -0
  148. package/esm/rpc/methods/CoreEncodeFeatures.d.ts +6 -5
  149. package/esm/rpc/methods/CoreEncodeFeatures.js +26 -31
  150. package/esm/rpc/methods/CoreGetEncodedFeature.d.ts +13 -0
  151. package/esm/rpc/methods/CoreGetEncodedFeature.js +31 -0
  152. package/esm/rpc/methods/CoreGetExportData.js +2 -2
  153. package/esm/rpc/methods/CoreGetFeatureDensity.js +2 -2
  154. package/esm/rpc/methods/CoreGetFeatures.js +2 -2
  155. package/esm/rpc/methods/CoreGetSequence.js +2 -2
  156. package/esm/rpc/methods/layerFeatures.d.ts +26 -0
  157. package/esm/rpc/methods/layerFeatures.js +40 -0
  158. package/esm/svg/SvgExport.js +3 -4
  159. package/esm/svg/SvgThemeProviders.d.ts +12 -0
  160. package/esm/svg/SvgThemeProviders.js +15 -0
  161. package/esm/svg/exportViewSvg.d.ts +32 -0
  162. package/esm/svg/exportViewSvg.js +13 -0
  163. package/esm/svg/normalizeSvgMarkup.d.ts +7 -0
  164. package/esm/svg/normalizeSvgMarkup.js +99 -0
  165. package/esm/svg/serializeSvg.d.ts +7 -0
  166. package/esm/svg/serializeSvg.js +11 -0
  167. package/esm/svg/svgReady.d.ts +8 -7
  168. package/esm/svg/svgReady.js +8 -7
  169. package/esm/svg/trackNames.d.ts +5 -5
  170. package/esm/svg/trackNames.js +6 -6
  171. package/esm/svg/wrapSvgExport.js +6 -74
  172. package/esm/ui/CascadingMenu.js +83 -86
  173. package/esm/ui/ErrorMessageStackTraceDialog.js +0 -5
  174. package/esm/ui/FileSelector/useInternetAccounts.d.ts +156 -96
  175. package/esm/ui/HoverMenu.d.ts +1 -2
  176. package/esm/ui/HoverMenu.js +6 -3
  177. package/esm/ui/JexlFilterDialog.d.ts +13 -10
  178. package/esm/ui/JexlFilterDialog.js +122 -49
  179. package/esm/ui/JexlFilterRowEditors.d.ts +15 -0
  180. package/esm/ui/JexlFilterRowEditors.js +90 -0
  181. package/esm/ui/LazyBaseTooltip.d.ts +4 -0
  182. package/esm/ui/LazyBaseTooltip.js +9 -0
  183. package/esm/ui/LoadingOverlay.js +3 -1
  184. package/esm/ui/MonospaceTextField.d.ts +2 -1
  185. package/esm/ui/MonospaceTextField.js +21 -19
  186. package/esm/ui/PaletteContext.d.ts +7 -9
  187. package/esm/ui/PaletteContext.js +24 -10
  188. package/esm/ui/RefNameAutocomplete/index.d.ts +1 -2
  189. package/esm/ui/RefNameAutocomplete/index.js +1 -1
  190. package/esm/ui/ScrollChrome.d.ts +6 -9
  191. package/esm/ui/ScrollChrome.js +5 -6
  192. package/esm/ui/ScrollEdgeShadow.d.ts +6 -9
  193. package/esm/ui/ScrollEdgeShadow.js +9 -24
  194. package/esm/ui/SettingsChangesTable.js +3 -3
  195. package/esm/ui/VerticalScrollbar.d.ts +13 -34
  196. package/esm/ui/VerticalScrollbar.js +29 -83
  197. package/esm/ui/ViewLoadingScreen.d.ts +2 -2
  198. package/esm/ui/ViewLoadingScreen.js +3 -3
  199. package/esm/ui/colorScale.d.ts +26 -1
  200. package/esm/ui/colorScale.js +28 -5
  201. package/esm/ui/colors.d.ts +49 -1
  202. package/esm/ui/colors.js +139 -4
  203. package/esm/ui/hoverBoxStyle.d.ts +14 -2
  204. package/esm/ui/hoverBoxStyle.js +17 -2
  205. package/esm/ui/index.d.ts +5 -3
  206. package/esm/ui/index.js +9 -7
  207. package/esm/ui/launchViewMenu.js +3 -3
  208. package/esm/ui/legendSpec.d.ts +2 -0
  209. package/esm/ui/legendSpec.js +3 -0
  210. package/esm/ui/palette.d.ts +0 -1
  211. package/esm/ui/palette.js +3 -27
  212. package/esm/ui/replaceViewAction.d.ts +1 -1
  213. package/esm/ui/replaceViewAction.js +1 -1
  214. package/esm/ui/theme.d.ts +1 -1
  215. package/esm/ui/theme.js +6 -40
  216. package/esm/ui/viewHeaderHeight.d.ts +1 -0
  217. package/esm/ui/viewHeaderHeight.js +1 -0
  218. package/esm/util/Base1DUtils.d.ts +1 -1
  219. package/esm/util/Base1DUtils.js +2 -2
  220. package/esm/util/SvgCanvas.d.ts +15 -13
  221. package/esm/util/SvgCanvas.js +72 -53
  222. package/esm/util/aborting.d.ts +39 -0
  223. package/esm/util/aborting.js +84 -0
  224. package/esm/util/adapterMetadata.d.ts +1 -1
  225. package/esm/util/adapterMetadata.js +6 -6
  226. package/esm/util/addAndShowTrack.d.ts +1 -4
  227. package/esm/util/addRelativeUris.d.ts +10 -2
  228. package/esm/util/addRelativeUris.js +22 -7
  229. package/esm/util/addTrackFromWidget.d.ts +2 -5
  230. package/esm/util/animationAllowed.d.ts +9 -0
  231. package/esm/util/animationAllowed.js +13 -0
  232. package/esm/util/applyRowResizeWheel.d.ts +10 -5
  233. package/esm/util/applyRowResizeWheel.js +10 -21
  234. package/esm/util/bandLayout.d.ts +4 -4
  235. package/esm/util/bandLayout.js +4 -4
  236. package/esm/util/bezierConnector.js +5 -4
  237. package/esm/util/bgzfWorkerPool.d.ts +20 -74
  238. package/esm/util/bgzfWorkerPool.js +20 -74
  239. package/esm/util/cachedSetup.d.ts +1 -1
  240. package/esm/util/cachedSetup.js +2 -2
  241. package/esm/util/categoricalField.d.ts +37 -0
  242. package/esm/util/categoricalField.js +52 -0
  243. package/esm/util/color/cssColorsLevel4.d.ts +1 -0
  244. package/esm/util/color/cssColorsLevel4.js +1 -0
  245. package/esm/util/color/index.d.ts +5 -3
  246. package/esm/util/color/index.js +7 -4
  247. package/esm/util/colorBits.d.ts +1 -2
  248. package/esm/util/colorBits.js +17 -39
  249. package/esm/util/colorRamp.d.ts +27 -1
  250. package/esm/util/colorRamp.js +56 -2
  251. package/esm/util/colorSchemes.d.ts +9 -0
  252. package/esm/util/colorSchemes.js +7 -0
  253. package/esm/util/{createStopTokenRotation.d.ts → createAbortRotation.d.ts} +11 -14
  254. package/esm/util/{createStopTokenRotation.js → createAbortRotation.js} +14 -26
  255. package/esm/util/cssColorParse.d.ts +15 -0
  256. package/esm/util/cssColorParse.js +53 -0
  257. package/esm/util/diagonalizeRegions.d.ts +2 -3
  258. package/esm/util/diagonalizeRegions.js +7 -12
  259. package/esm/util/expandLooseSearchIndex.d.ts +7 -0
  260. package/esm/util/expandLooseSearchIndex.js +25 -0
  261. package/esm/util/featureTransforms.d.ts +30 -3
  262. package/esm/util/featureTransforms.js +233 -36
  263. package/esm/util/fetchAndMaybeUnzip.js +5 -6
  264. package/esm/util/fetchContext.d.ts +5 -6
  265. package/esm/util/fetchContext.js +1 -1
  266. package/esm/util/fetchHub.d.ts +3 -1
  267. package/esm/util/fetchHub.js +2 -2
  268. package/esm/util/fetchSeq.d.ts +2 -3
  269. package/esm/util/fetchSeq.js +2 -2
  270. package/esm/util/fieldReader.d.ts +17 -0
  271. package/esm/util/fieldReader.js +62 -0
  272. package/esm/util/groupKeys.d.ts +75 -0
  273. package/esm/util/groupKeys.js +152 -0
  274. package/esm/util/highlights.d.ts +6 -4
  275. package/esm/util/highlights.js +12 -25
  276. package/esm/util/hooks.d.ts +1 -2
  277. package/esm/util/hooks.js +1 -2
  278. package/esm/util/index.d.ts +3 -3
  279. package/esm/util/index.js +4 -3
  280. package/esm/util/indexCandidates.js +1 -1
  281. package/esm/util/installFetch.d.ts +13 -10
  282. package/esm/util/installFetch.js +11 -10
  283. package/esm/util/installPrerequisiteFetch.d.ts +5 -3
  284. package/esm/util/installPrerequisiteFetch.js +3 -4
  285. package/esm/util/io/index.js +12 -12
  286. package/esm/util/isDataCurrent.d.ts +7 -5
  287. package/esm/util/isDataCurrent.js +9 -6
  288. package/esm/util/jexl.js +24 -21
  289. package/esm/util/jexlFilterRows.d.ts +89 -0
  290. package/esm/util/jexlFilterRows.js +252 -0
  291. package/esm/util/jexlFilters.d.ts +7 -5
  292. package/esm/util/jexlStrings.d.ts +3 -4
  293. package/esm/util/jexlStrings.js +2 -3
  294. package/esm/util/legendCandidates.d.ts +31 -27
  295. package/esm/util/legendCandidates.js +79 -53
  296. package/esm/util/localStorage.js +4 -4
  297. package/esm/util/markEncoding.d.ts +32 -16
  298. package/esm/util/markEncoding.js +177 -150
  299. package/esm/util/markEncodingTypes.d.ts +137 -66
  300. package/esm/util/mstUtils.d.ts +19 -22
  301. package/esm/util/mstUtils.js +19 -22
  302. package/esm/util/numericUtils.d.ts +7 -0
  303. package/esm/util/numericUtils.js +16 -0
  304. package/esm/util/numericValue.d.ts +14 -0
  305. package/esm/util/numericValue.js +34 -0
  306. package/esm/util/openFeatureWidget.js +1 -2
  307. package/esm/util/openViews.d.ts +1 -0
  308. package/esm/util/openViews.js +3 -3
  309. package/esm/util/parseLineByLine.d.ts +3 -4
  310. package/esm/util/parseLineByLine.js +7 -13
  311. package/esm/util/progress.d.ts +21 -21
  312. package/esm/util/progress.js +27 -26
  313. package/esm/util/renameRegions.d.ts +1 -2
  314. package/esm/util/renderToStaticMarkup.js +16 -16
  315. package/esm/util/rxjs.d.ts +7 -8
  316. package/esm/util/rxjs.js +12 -15
  317. package/esm/util/simpleFeature.d.ts +0 -1
  318. package/esm/util/svgColorProps.d.ts +11 -0
  319. package/esm/util/svgColorProps.js +28 -1
  320. package/esm/util/tabix.d.ts +3 -4
  321. package/esm/util/tabix.js +6 -7
  322. package/esm/util/thresholdScale.d.ts +54 -0
  323. package/esm/util/thresholdScale.js +112 -0
  324. package/esm/util/timeGate.d.ts +4 -5
  325. package/esm/util/timeGate.js +4 -5
  326. package/esm/util/trackConfigDelta.d.ts +22 -18
  327. package/esm/util/trackConfigDelta.js +40 -38
  328. package/esm/util/tracks.d.ts +27 -4
  329. package/esm/util/tracks.js +116 -43
  330. package/esm/util/translateTranscript.d.ts +44 -0
  331. package/esm/util/translateTranscript.js +102 -0
  332. package/esm/util/types/index.d.ts +19 -7
  333. package/esm/util/types/services.d.ts +1 -1
  334. package/esm/util/unknownSnapshotKeys.d.ts +15 -0
  335. package/esm/util/unknownSnapshotKeys.js +13 -0
  336. package/esm/util/useFeatureSequence.js +4 -4
  337. package/esm/util/useFetch.d.ts +3 -4
  338. package/esm/util/useFetch.js +5 -6
  339. package/esm/util/usePanelVirtualScroll.d.ts +7 -39
  340. package/esm/util/usePanelVirtualScroll.js +9 -40
  341. package/esm/util/useRowVirtualScroll.d.ts +6 -29
  342. package/esm/util/useRowVirtualScroll.js +8 -49
  343. package/esm/util/useVirtualScrollWheel.d.ts +20 -4
  344. package/esm/util/useVirtualScrollWheel.js +40 -84
  345. package/esm/util/viewHighlights.d.ts +3 -0
  346. package/esm/util/viewHighlights.js +5 -0
  347. package/esm/util/viewStatus.d.ts +24 -15
  348. package/esm/util/viewStatus.js +17 -0
  349. package/esm/util/withLaunchInput.d.ts +1 -1
  350. package/esm/util/withLaunchInput.js +0 -4
  351. package/package.json +26 -12
  352. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +0 -80
  353. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.js +0 -583
  354. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +0 -141
  355. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.js +0 -1116
  356. package/esm/ReExports/BaseFeatureDetails.d.ts +0 -1
  357. package/esm/ReExports/BaseFeatureDetails.js +0 -10
  358. package/esm/ReExports/barrelOnlyNames.d.ts +0 -5
  359. package/esm/ReExports/barrelOnlyNames.js +0 -63
  360. package/esm/ReExports/index.d.ts +0 -1
  361. package/esm/ReExports/index.js +0 -1
  362. package/esm/ReExports/publicTracks.d.ts +0 -1
  363. package/esm/ReExports/publicTracks.js +0 -14
  364. package/esm/ReExports/publicUi.d.ts +0 -4
  365. package/esm/ReExports/publicUi.js +0 -33
  366. package/esm/ReExports/publicUtil.d.ts +0 -1
  367. package/esm/ReExports/publicUtil.js +0 -32
  368. package/esm/ReExports/sharedModules.d.ts +0 -96
  369. package/esm/ReExports/sharedModules.js +0 -66
  370. package/esm/ReExports/workerNamespaceNames.d.ts +0 -11
  371. package/esm/ReExports/workerNamespaceNames.js +0 -275
  372. package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +0 -51
  373. package/esm/pluggableElementTypes/models/HighlightsMixin.js +0 -78
  374. package/esm/ui/highlightChipReveal.d.ts +0 -32
  375. package/esm/ui/highlightChipReveal.js +0 -39
  376. package/esm/util/adapterConfigKey.d.ts +0 -12
  377. package/esm/util/adapterConfigKey.js +0 -14
  378. package/esm/util/stopToken.d.ts +0 -212
  379. package/esm/util/stopToken.js +0 -438
@@ -14,16 +14,26 @@ declare function stateModelFactory(pluginManager: PluginManager): import("@jbrow
14
14
  */
15
15
  configuration: import("../../configuration/configurationSchema.ts").IConfigurationReference<import("../../configuration/configurationSchema.ts").ConfigurationSchemaType<{
16
16
  readonly name: {
17
- readonly type: "string";
18
- readonly defaultValue: "nameOfConnection";
19
- readonly description: "a unique name for this connection";
17
+ type: "string";
18
+ } & {
19
+ defaultValue: string;
20
20
  };
21
21
  readonly assemblyNames: {
22
- readonly type: "stringArray";
23
- readonly defaultValue: readonly [];
24
- readonly description: "optional list of names of assemblies in this connection";
22
+ type: "stringArray";
23
+ } & {
24
+ defaultValue: unknown;
25
25
  };
26
- }, import("../../configuration/configurationSchema.ts").ConfigurationSchemaOptions<undefined, "connectionId">>>;
26
+ type: {
27
+ type: "string";
28
+ } & {
29
+ defaultValue: string;
30
+ };
31
+ connectionId: {
32
+ type: "string";
33
+ } & {
34
+ defaultValue: string;
35
+ };
36
+ }, import("../../configuration/configurationSchema.ts").ConfigurationSchemaOptions<undefined, "connectionId", true, import("../../configuration/requirements.ts").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>>>>;
27
37
  /**
28
38
  * #property
29
39
  * set when the connection is being re-established on session load (its
@@ -1,6 +1,7 @@
1
1
  import type { AnyConfigurationModel } from '../../configuration/index.ts';
2
2
  import type { MenuItem } from '../../ui/index.ts';
3
3
  import type { RpcStatus } from '../../util/progress.ts';
4
+ import type { UnappliedSetting } from '../../util/unknownSnapshotKeys.ts';
4
5
  import type { Instance } from '@jbrowse/mobx-state-tree';
5
6
  import type React from 'react';
6
7
  export declare const BaseDisplay: import("@jbrowse/mobx-state-tree").IModelType<{
@@ -202,15 +203,14 @@ export declare const BaseDisplay: import("@jbrowse/mobx-state-tree").IModelType<
202
203
  readonly featureNoun: string;
203
204
  /**
204
205
  * #getter
205
- * Overridable hook: which widget `openFeatureWidget` opens for one of
206
- * this display's features. The default is the generic one, which is what
207
- * a display drawing plain features wants and what the canvas base spelled
208
- * out by hand.
206
+ * The widget `openFeatureWidget` opens for one of this display's
207
+ * features. Displays may override it. The default is the generic feature
208
+ * widget, for displays drawing plain features.
209
209
  *
210
- * An override is a display whose features have a vocabulary of their own —
211
- * a read, a variant, a synteny block — and the `id` is deliberately part
212
- * of it: two displays naming one id share the drawer panel, which is the
213
- * behaviour when the two are showing the same kind of thing.
210
+ * Displays whose features are a specific kind (a read, a variant, a
211
+ * synteny block) override it, including the `id`: two displays naming
212
+ * one id share the drawer panel, which suits two displays showing the
213
+ * same kind of feature.
214
214
  */
215
215
  readonly featureWidgetType: {
216
216
  type: string;
@@ -423,15 +423,14 @@ export declare const BaseDisplay: import("@jbrowse/mobx-state-tree").IModelType<
423
423
  readonly featureNoun: string;
424
424
  /**
425
425
  * #getter
426
- * Overridable hook: which widget `openFeatureWidget` opens for one of
427
- * this display's features. The default is the generic one, which is what
428
- * a display drawing plain features wants and what the canvas base spelled
429
- * out by hand.
426
+ * The widget `openFeatureWidget` opens for one of this display's
427
+ * features. Displays may override it. The default is the generic feature
428
+ * widget, for displays drawing plain features.
430
429
  *
431
- * An override is a display whose features have a vocabulary of their own —
432
- * a read, a variant, a synteny block — and the `id` is deliberately part
433
- * of it: two displays naming one id share the drawer panel, which is the
434
- * behaviour when the two are showing the same kind of thing.
430
+ * Displays whose features are a specific kind (a read, a variant, a
431
+ * synteny block) override it, including the `id`: two displays naming
432
+ * one id share the drawer panel, which suits two displays showing the
433
+ * same kind of feature.
435
434
  */
436
435
  readonly featureWidgetType: {
437
436
  type: string;
@@ -636,15 +635,14 @@ export declare const BaseDisplay: import("@jbrowse/mobx-state-tree").IModelType<
636
635
  readonly featureNoun: string;
637
636
  /**
638
637
  * #getter
639
- * Overridable hook: which widget `openFeatureWidget` opens for one of
640
- * this display's features. The default is the generic one, which is what
641
- * a display drawing plain features wants and what the canvas base spelled
642
- * out by hand.
638
+ * The widget `openFeatureWidget` opens for one of this display's
639
+ * features. Displays may override it. The default is the generic feature
640
+ * widget, for displays drawing plain features.
643
641
  *
644
- * An override is a display whose features have a vocabulary of their own —
645
- * a read, a variant, a synteny block — and the `id` is deliberately part
646
- * of it: two displays naming one id share the drawer panel, which is the
647
- * behaviour when the two are showing the same kind of thing.
642
+ * Displays whose features are a specific kind (a read, a variant, a
643
+ * synteny block) override it, including the `id`: two displays naming
644
+ * one id share the drawer panel, which suits two displays showing the
645
+ * same kind of feature.
648
646
  */
649
647
  readonly featureWidgetType: {
650
648
  type: string;
@@ -686,40 +684,39 @@ export declare const BaseDisplay: import("@jbrowse/mobx-state-tree").IModelType<
686
684
  reload(): void;
687
685
  /**
688
686
  * #action
689
- * Apply a bag of display settings to the LIVE display, and report what
690
- * landed. Each key runs through the display config schema's
691
- * `preProcessSnapshot` (shorthand expansions, legacy-key migrations —
692
- * the same lowering a session spec's inline track keys get in
693
- * `showTrackGeneric`), then writes the matching config slot. Keys that
694
- * are not slots come back in `unapplied` rather than vanishing: the
695
- * settings vocabulary's historical failure mode is the silently dropped
696
- * key.
687
+ * Apply a set of display settings to the live display, and report which
688
+ * were applied. Each key runs through the display config schema's
689
+ * `preProcessSnapshot` (shorthand expansions and legacy-key migrations,
690
+ * as `showTrackGeneric` applies to a session spec's inline track keys),
691
+ * then writes the matching config slot. A key naming a sub-schema
692
+ * (`facet`, `color`) replaces the whole object, its string shorthand
693
+ * lifted by that schema, and `null` clears it. Keys that are not slots
694
+ * come back in `unapplied` as `{ key, reason }`, so a caller can tell a
695
+ * misspelling from a key that has an action instead of a slot.
697
696
  *
698
- * `allowSetters` additionally routes a non-slot key to a conventionally
699
- * named single-argument `set<Key>` action. Opt-in, never the default:
700
- * the declarative surfaces (session specs, share links, embeds) feed
701
- * this whole bags of untyped JSON, and a blanket fallback would let
702
- * them reach internal setters (`setError`, `setScrollTop`, ...) and
697
+ * `allowSetters` also routes a non-slot key to a single-argument action
698
+ * named `set<Key>`. It is off by default because session specs, share
699
+ * links and embeds pass untyped JSON here, and a default fallback would
700
+ * let them call internal setters (`setError`, `setScrollTop`, ...) and
703
701
  * call multi-argument setters with one argument. A caller that wants a
704
- * specific action can also simply call it.
702
+ * specific action can call it directly.
705
703
  *
706
- * A key whose write THREW is reported separately, in `failed` — it is the
707
- * only one of the three that means the caller got something wrong, and
708
- * the only one worth a notification. `unapplied` is not: at the
709
- * `showTrackGeneric` call site it also collects keys that surface
710
- * consumed itself (`type`) and MST display props the display snapshot
711
- * already applied (`resolution`), so treating it as "dropped" would
712
- * report a correct call as broken.
704
+ * A key whose write threw is reported in `failed`. Only `failed` means
705
+ * the caller passed a bad value. `unapplied` needs the caller's own
706
+ * context to read: `showTrackGeneric` spreads the same settings into the
707
+ * display's snapshot, so a declared prop (`resolution`) has already
708
+ * landed by the time it reports here, while the restyle path spreads
709
+ * nothing and every entry there did nothing.
713
710
  *
714
- * Per-key errors do not abort the rest of the bag — a caller
711
+ * A per-key error does not abort the remaining keys. A caller
715
712
  * mid-`showTrack` has already pushed the track, and one rejected value
716
- * must not strand a half-configured track.
713
+ * should not leave it half-configured.
717
714
  */
718
715
  applyDisplaySettings(settings: Record<string, unknown>, options?: {
719
716
  allowSetters?: boolean;
720
717
  }): {
721
718
  applied: string[];
722
- unapplied: string[];
719
+ unapplied: UnappliedSetting[];
723
720
  failed: {
724
721
  key: string;
725
722
  error: string;
@@ -1,7 +1,8 @@
1
1
  import { hasParent, isAlive, types } from '@jbrowse/mobx-state-tree';
2
- import { getConf, isConfigurationSlot, preProcessSlotValues, } from '../../configuration/index.js';
2
+ import { getConf, isConfigurationSlot, isConfigurationSubschema, mergedSubschemaValue, preProcessSlotValues, } from '../../configuration/index.js';
3
3
  import { getContainingTrack, getEnv, statusFraction, statusMessageText, } from '../../util/index.js';
4
4
  import { ElementId } from '../../util/types/mst.js';
5
+ import { displaySetterName } from '../../util/unknownSnapshotKeys.js';
5
6
  /**
6
7
  * #stateModel BaseDisplay
7
8
  * #category display
@@ -139,15 +140,14 @@ function stateModelFactory() {
139
140
  },
140
141
  /**
141
142
  * #getter
142
- * Overridable hook: which widget `openFeatureWidget` opens for one of
143
- * this display's features. The default is the generic one, which is what
144
- * a display drawing plain features wants and what the canvas base spelled
145
- * out by hand.
143
+ * The widget `openFeatureWidget` opens for one of this display's
144
+ * features. Displays may override it. The default is the generic feature
145
+ * widget, for displays drawing plain features.
146
146
  *
147
- * An override is a display whose features have a vocabulary of their own —
148
- * a read, a variant, a synteny block — and the `id` is deliberately part
149
- * of it: two displays naming one id share the drawer panel, which is the
150
- * behaviour when the two are showing the same kind of thing.
147
+ * Displays whose features are a specific kind (a read, a variant, a
148
+ * synteny block) override it, including the `id`: two displays naming
149
+ * one id share the drawer panel, which suits two displays showing the
150
+ * same kind of feature.
151
151
  */
152
152
  get featureWidgetType() {
153
153
  return {
@@ -212,34 +212,33 @@ function stateModelFactory() {
212
212
  reload() { },
213
213
  /**
214
214
  * #action
215
- * Apply a bag of display settings to the LIVE display, and report what
216
- * landed. Each key runs through the display config schema's
217
- * `preProcessSnapshot` (shorthand expansions, legacy-key migrations —
218
- * the same lowering a session spec's inline track keys get in
219
- * `showTrackGeneric`), then writes the matching config slot. Keys that
220
- * are not slots come back in `unapplied` rather than vanishing: the
221
- * settings vocabulary's historical failure mode is the silently dropped
222
- * key.
215
+ * Apply a set of display settings to the live display, and report which
216
+ * were applied. Each key runs through the display config schema's
217
+ * `preProcessSnapshot` (shorthand expansions and legacy-key migrations,
218
+ * as `showTrackGeneric` applies to a session spec's inline track keys),
219
+ * then writes the matching config slot. A key naming a sub-schema
220
+ * (`facet`, `color`) replaces the whole object, its string shorthand
221
+ * lifted by that schema, and `null` clears it. Keys that are not slots
222
+ * come back in `unapplied` as `{ key, reason }`, so a caller can tell a
223
+ * misspelling from a key that has an action instead of a slot.
223
224
  *
224
- * `allowSetters` additionally routes a non-slot key to a conventionally
225
- * named single-argument `set<Key>` action. Opt-in, never the default:
226
- * the declarative surfaces (session specs, share links, embeds) feed
227
- * this whole bags of untyped JSON, and a blanket fallback would let
228
- * them reach internal setters (`setError`, `setScrollTop`, ...) and
225
+ * `allowSetters` also routes a non-slot key to a single-argument action
226
+ * named `set<Key>`. It is off by default because session specs, share
227
+ * links and embeds pass untyped JSON here, and a default fallback would
228
+ * let them call internal setters (`setError`, `setScrollTop`, ...) and
229
229
  * call multi-argument setters with one argument. A caller that wants a
230
- * specific action can also simply call it.
230
+ * specific action can call it directly.
231
231
  *
232
- * A key whose write THREW is reported separately, in `failed` — it is the
233
- * only one of the three that means the caller got something wrong, and
234
- * the only one worth a notification. `unapplied` is not: at the
235
- * `showTrackGeneric` call site it also collects keys that surface
236
- * consumed itself (`type`) and MST display props the display snapshot
237
- * already applied (`resolution`), so treating it as "dropped" would
238
- * report a correct call as broken.
232
+ * A key whose write threw is reported in `failed`. Only `failed` means
233
+ * the caller passed a bad value. `unapplied` needs the caller's own
234
+ * context to read: `showTrackGeneric` spreads the same settings into the
235
+ * display's snapshot, so a declared prop (`resolution`) has already
236
+ * landed by the time it reports here, while the restyle path spreads
237
+ * nothing and every entry there did nothing.
239
238
  *
240
- * Per-key errors do not abort the rest of the bag — a caller
239
+ * A per-key error does not abort the remaining keys. A caller
241
240
  * mid-`showTrack` has already pushed the track, and one rejected value
242
- * must not strand a half-configured track.
241
+ * should not leave it half-configured.
243
242
  */
244
243
  applyDisplaySettings(settings, options) {
245
244
  // configuration is the reference every concrete display adds at
@@ -252,7 +251,7 @@ function stateModelFactory() {
252
251
  const slots = preProcessSlotValues(configuration, settings);
253
252
  for (const [key, value] of Object.entries(slots)) {
254
253
  if (!key || key === 'type') {
255
- unapplied.push(key ? 'type (switch the display type instead)' : '(empty key)');
254
+ unapplied.push({ key, reason: key ? 'display-type' : 'no-slot' });
256
255
  continue;
257
256
  }
258
257
  try {
@@ -264,9 +263,14 @@ function stateModelFactory() {
264
263
  applied.push(key);
265
264
  continue;
266
265
  }
267
- const setter = self[`set${key[0].toUpperCase()}${key.slice(1)}`];
266
+ if (isConfigurationSubschema(configuration, key)) {
267
+ configuration.setSubschema(key, mergedSubschemaValue(configuration, key, value));
268
+ applied.push(key);
269
+ continue;
270
+ }
271
+ const setter = self[displaySetterName(key)];
268
272
  if (typeof setter !== 'function') {
269
- unapplied.push(key);
273
+ unapplied.push({ key, reason: 'no-slot' });
270
274
  }
271
275
  else if (options?.allowSetters) {
272
276
  ;
@@ -274,7 +278,7 @@ function stateModelFactory() {
274
278
  applied.push(`${key} (via setter)`);
275
279
  }
276
280
  else {
277
- unapplied.push(`${key} (not a config slot; a set${key[0].toUpperCase()}${key.slice(1)} action exists — call it, or pass { allowSetters: true })`);
281
+ unapplied.push({ key, reason: 'setter-only' });
278
282
  }
279
283
  }
280
284
  catch (e) {
@@ -1,6 +1,6 @@
1
1
  import type PluginManager from '../../PluginManager.ts';
2
2
  import type { RefNameMismatch } from '../../assemblyManager/refNameMismatch.ts';
3
- import type { AnyConfigurationSchemaType } from '../../configuration/index.ts';
3
+ import type { AnyConfigurationModel, AnyConfigurationSchemaType } from '../../configuration/index.ts';
4
4
  import type { MenuItem } from '../../ui/index.ts';
5
5
  import type { DisplayModel } from './BaseDisplayModel.tsx';
6
6
  import type { FileTypeExporter } from './saveTrackFileTypes/types.ts';
@@ -107,10 +107,7 @@ export declare function createBaseTrackModel(pm: PluginManager, trackType: strin
107
107
  * always filtered them; this exposes the same list to code, because the
108
108
  * alternative is every caller re-deriving it from the plugin manager.
109
109
  */
110
- readonly compatibleDisplays: (import("@jbrowse/mobx-state-tree").ModelInstanceTypeProps<Record<string, any>> & {
111
- setSubschema(slotName: string, data: Record<string, unknown>): any;
112
- setSlot(slotName: string, value: unknown): void;
113
- } & import("@jbrowse/mobx-state-tree").IStateTreeNode<AnyConfigurationSchemaType>)[];
110
+ readonly compatibleDisplays: AnyConfigurationModel[];
114
111
  /**
115
112
  * #getter
116
113
  */
@@ -146,7 +143,7 @@ export declare function createBaseTrackModel(pm: PluginManager, trackType: strin
146
143
  /**
147
144
  * #getter
148
145
  */
149
- readonly adapterType: import("../AdapterType.ts").default;
146
+ readonly adapterType: import("../AdapterType.ts").default<any>;
150
147
  } & {
151
148
  /**
152
149
  * #action
@@ -175,7 +172,7 @@ export declare function createBaseTrackModel(pm: PluginManager, trackType: strin
175
172
  allowSetters?: boolean;
176
173
  }): {
177
174
  applied: string[];
178
- unapplied: string[];
175
+ unapplied: import("../../util/unknownSnapshotKeys.ts").UnappliedSetting[];
179
176
  failed: {
180
177
  key: string;
181
178
  error: string;
@@ -236,12 +233,12 @@ export declare function createBaseTrackModel(pm: PluginManager, trackType: strin
236
233
  readonly exportsDataViaAdapter: boolean;
237
234
  /**
238
235
  * #getter
239
- * What "Save track data" may pull before it asks. The adapter's own
240
- * `fetchSizeLimit` where it declares one, so a save does not quietly
241
- * disagree with the size this track's display already refuses to render;
242
- * otherwise a default. Deliberately generous — unlike the display's gate
243
- * this is a confirmation rather than a refusal, and the user asked for
244
- * these bytes by name.
236
+ * The size in bytes above which "Save track data" asks for confirmation
237
+ * before fetching. Uses the adapter's `fetchSizeLimit` where it declares
238
+ * one, so a save asks at the same size at which the track's display
239
+ * refuses to render; otherwise a default. The default is generous
240
+ * because exceeding it only prompts for confirmation, and the user
241
+ * explicitly requested the data.
245
242
  */
246
243
  readonly exportByteLimit: number;
247
244
  /**
@@ -403,12 +403,12 @@ export function createBaseTrackModel(pm, trackType, baseTrackConfig) {
403
403
  },
404
404
  /**
405
405
  * #getter
406
- * What "Save track data" may pull before it asks. The adapter's own
407
- * `fetchSizeLimit` where it declares one, so a save does not quietly
408
- * disagree with the size this track's display already refuses to render;
409
- * otherwise a default. Deliberately generous — unlike the display's gate
410
- * this is a confirmation rather than a refusal, and the user asked for
411
- * these bytes by name.
406
+ * The size in bytes above which "Save track data" asks for confirmation
407
+ * before fetching. Uses the adapter's `fetchSizeLimit` where it declares
408
+ * one, so a save asks at the same size at which the track's display
409
+ * refuses to render; otherwise a default. The default is generous
410
+ * because exceeding it only prompts for confirmation, and the user
411
+ * explicitly requested the data.
412
412
  */
413
413
  get exportByteLimit() {
414
414
  return adapterByteLimit(getConf(self, ['adapter', 'fetchSizeLimit']), DEFAULT_EXPORT_BYTE_LIMIT);
@@ -47,15 +47,25 @@ declare const BaseViewModel: import("@jbrowse/mobx-state-tree").IModelType<{
47
47
  } & {
48
48
  /**
49
49
  * #getter
50
- * Whether this view's body is in the DOM, counting the views it is nested
51
- * inside — which is the question a display's phase actually asks.
50
+ * Overridable hook (default true): whether this view's mounted body
51
+ * renders its own displays. A linear genome view collapsed to its ruler
52
+ * mounts the scalebar and none of its tracks, so a display in it can no
53
+ * more paint than one in a view scrolled off screen. Views nested in this
54
+ * one are unaffected: they paint wherever their own body is.
55
+ */
56
+ readonly rendersDisplays: boolean;
57
+ /**
58
+ * #getter
59
+ * Whether this view's displays have a canvas to paint into: its body is in
60
+ * the DOM, counting the views it is nested inside, and the body renders
61
+ * them (`rendersDisplays`). This is the question a display's phase asks.
52
62
  *
53
- * `bodyMounted` alone answers it only for a view a container renders
54
- * directly. A view nested in another view (a synteny row, a breakpoint
55
- * panel) has no container writing its flag, so it reads `true` forever
56
- * while its whole subtree is out of the DOM, and every display in it waits
57
- * for a first paint that nothing will make — the hang this flag exists to
58
- * prevent, one level down.
63
+ * `bodyMounted` alone answers the DOM half only for a view a container
64
+ * renders directly. A view nested in another view (a synteny row, a
65
+ * breakpoint panel) has no container writing its flag, so it reads `true`
66
+ * forever while its whole subtree is out of the DOM, and every display in
67
+ * it waits for a first paint that nothing will make — the hang this flag
68
+ * exists to prevent, one level down.
59
69
  *
60
70
  * An ancestor that does not carry the flag at all leaves the answer alone
61
71
  * rather than excusing the paint: only an explicit `false` unmounts, so a
@@ -177,15 +187,25 @@ export declare const BaseViewModelWithDisplayedRegions: import("@jbrowse/mobx-st
177
187
  } & {
178
188
  /**
179
189
  * #getter
180
- * Whether this view's body is in the DOM, counting the views it is nested
181
- * inside — which is the question a display's phase actually asks.
182
- *
183
- * `bodyMounted` alone answers it only for a view a container renders
184
- * directly. A view nested in another view (a synteny row, a breakpoint
185
- * panel) has no container writing its flag, so it reads `true` forever
186
- * while its whole subtree is out of the DOM, and every display in it waits
187
- * for a first paint that nothing will make — the hang this flag exists to
188
- * prevent, one level down.
190
+ * Overridable hook (default true): whether this view's mounted body
191
+ * renders its own displays. A linear genome view collapsed to its ruler
192
+ * mounts the scalebar and none of its tracks, so a display in it can no
193
+ * more paint than one in a view scrolled off screen. Views nested in this
194
+ * one are unaffected: they paint wherever their own body is.
195
+ */
196
+ readonly rendersDisplays: boolean;
197
+ /**
198
+ * #getter
199
+ * Whether this view's displays have a canvas to paint into: its body is in
200
+ * the DOM, counting the views it is nested inside, and the body renders
201
+ * them (`rendersDisplays`). This is the question a display's phase asks.
202
+ *
203
+ * `bodyMounted` alone answers the DOM half only for a view a container
204
+ * renders directly. A view nested in another view (a synteny row, a
205
+ * breakpoint panel) has no container writing its flag, so it reads `true`
206
+ * forever while its whole subtree is out of the DOM, and every display in
207
+ * it waits for a first paint that nothing will make — the hang this flag
208
+ * exists to prevent, one level down.
189
209
  *
190
210
  * An ancestor that does not carry the flag at all leaves the answer alone
191
211
  * rather than excusing the paint: only an explicit `false` unmounts, so a
@@ -20,6 +20,10 @@ function containingViewOf(node) {
20
20
  }
21
21
  return undefined;
22
22
  }
23
+ function bodyInDom(view) {
24
+ const parent = containingViewOf(view);
25
+ return (view.bodyMounted !== false && (parent === undefined || bodyInDom(parent)));
26
+ }
23
27
  /**
24
28
  * #stateModel BaseViewModel
25
29
  * #category view
@@ -69,15 +73,27 @@ const BaseViewModel = types
69
73
  .views(self => ({
70
74
  /**
71
75
  * #getter
72
- * Whether this view's body is in the DOM, counting the views it is nested
73
- * inside — which is the question a display's phase actually asks.
76
+ * Overridable hook (default true): whether this view's mounted body
77
+ * renders its own displays. A linear genome view collapsed to its ruler
78
+ * mounts the scalebar and none of its tracks, so a display in it can no
79
+ * more paint than one in a view scrolled off screen. Views nested in this
80
+ * one are unaffected: they paint wherever their own body is.
81
+ */
82
+ get rendersDisplays() {
83
+ return true;
84
+ },
85
+ /**
86
+ * #getter
87
+ * Whether this view's displays have a canvas to paint into: its body is in
88
+ * the DOM, counting the views it is nested inside, and the body renders
89
+ * them (`rendersDisplays`). This is the question a display's phase asks.
74
90
  *
75
- * `bodyMounted` alone answers it only for a view a container renders
76
- * directly. A view nested in another view (a synteny row, a breakpoint
77
- * panel) has no container writing its flag, so it reads `true` forever
78
- * while its whole subtree is out of the DOM, and every display in it waits
79
- * for a first paint that nothing will make — the hang this flag exists to
80
- * prevent, one level down.
91
+ * `bodyMounted` alone answers the DOM half only for a view a container
92
+ * renders directly. A view nested in another view (a synteny row, a
93
+ * breakpoint panel) has no container writing its flag, so it reads `true`
94
+ * forever while its whole subtree is out of the DOM, and every display in
95
+ * it waits for a first paint that nothing will make — the hang this flag
96
+ * exists to prevent, one level down.
81
97
  *
82
98
  * An ancestor that does not carry the flag at all leaves the answer alone
83
99
  * rather than excusing the paint: only an explicit `false` unmounts, so a
@@ -85,8 +101,7 @@ const BaseViewModel = types
85
101
  * that shows up as a slow test rather than as a picture of an empty view.
86
102
  */
87
103
  get effectiveBodyMounted() {
88
- return (self.bodyMounted &&
89
- containingViewOf(self)?.effectiveBodyMounted !== false);
104
+ return this.rendersDisplays && bodyInDom(self);
90
105
  },
91
106
  /**
92
107
  * #method
@@ -20,31 +20,41 @@ export declare const InternetAccount: import("@jbrowse/mobx-state-tree").IModelT
20
20
  */
21
21
  configuration: import("../../configuration/configurationSchema.ts").IConfigurationReference<import("../../configuration/configurationSchema.ts").ConfigurationSchemaType<{
22
22
  readonly name: {
23
- readonly description: "descriptive name of the internet account";
24
- readonly type: "string";
25
- readonly defaultValue: "";
23
+ type: "string";
24
+ } & {
25
+ defaultValue: string;
26
26
  };
27
27
  readonly description: {
28
- readonly description: "a description of the internet account";
29
- readonly type: "string";
30
- readonly defaultValue: "";
28
+ type: "string";
29
+ } & {
30
+ defaultValue: string;
31
31
  };
32
32
  readonly authHeader: {
33
- readonly description: "request header for credentials";
34
- readonly type: "string";
35
- readonly defaultValue: "Authorization";
33
+ type: "string";
34
+ } & {
35
+ defaultValue: string;
36
36
  };
37
37
  readonly tokenType: {
38
- readonly description: "a custom name for a token to include in the header";
39
- readonly type: "string";
40
- readonly defaultValue: "";
38
+ type: "string";
39
+ } & {
40
+ defaultValue: string;
41
41
  };
42
42
  readonly domains: {
43
- readonly description: "array of valid domains the url can contain to use this account";
44
- readonly type: "stringArray";
45
- readonly defaultValue: readonly [];
43
+ type: "stringArray";
44
+ } & {
45
+ defaultValue: unknown;
46
46
  };
47
- }, import("../../configuration/configurationSchema.ts").ConfigurationSchemaOptions<undefined, "internetAccountId">>>;
47
+ type: {
48
+ type: "string";
49
+ } & {
50
+ defaultValue: string;
51
+ };
52
+ internetAccountId: {
53
+ type: "string";
54
+ } & {
55
+ defaultValue: string;
56
+ };
57
+ }, import("../../configuration/configurationSchema.ts").ConfigurationSchemaOptions<undefined, "internetAccountId", true, import("../../configuration/requirements.ts").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>>>>;
48
58
  }, {
49
59
  /**
50
60
  * #getter
@@ -50,7 +50,7 @@ export type FetchAutorunOutcome =
50
50
  * answers nothing either way — the same deferral `awaitingPrerequisite` gets,
51
51
  * reached from inside the foundation rather than declared by the display. The
52
52
  * per-region family's in-flight-fetch skip is the case: `reload()` signals the
53
- * running fetch's stop token but `activeStopToken` clears in `runFetch`'s
53
+ * running fetch's signal but `activeSignal` clears in `runFetch`'s
54
54
  * finally, so the very next run can still see `isLoading` — and that fetch
55
55
  * ending bumps `fetchGeneration`, which the autorun tracks. Consuming the bump
56
56
  * there would answer the retry with a run that predates it.