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

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 (611) hide show
  1. package/README.md +1476 -265
  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 +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 +16 -9
  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 +50 -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/configSchema.d.ts +1 -1
  35. package/esm/BaseFeatureWidget/formatDetails.d.ts +13 -29
  36. package/esm/BaseFeatureWidget/formatDetails.js +62 -83
  37. package/esm/BaseFeatureWidget/index.d.ts +2 -1
  38. package/esm/BaseFeatureWidget/stateModelFactory.d.ts +42 -29
  39. package/esm/BaseFeatureWidget/stateModelFactory.js +98 -98
  40. package/esm/BaseFeatureWidget/types.d.ts +12 -6
  41. package/esm/BaseFeatureWidget/util.d.ts +0 -10
  42. package/esm/BaseFeatureWidget/util.js +0 -17
  43. package/esm/CorePlugin.js +2 -2
  44. package/esm/PluginLoader.d.ts +24 -13
  45. package/esm/PluginLoader.js +167 -51
  46. package/esm/PluginManager.d.ts +130 -24
  47. package/esm/PluginManager.js +180 -32
  48. package/esm/ReExports/MuiDataGridReExports.d.ts +1 -0
  49. package/esm/ReExports/MuiDataGridReExports.js +2 -2
  50. package/esm/ReExports/coreModules.generated.d.ts +2 -0
  51. package/esm/ReExports/coreModules.generated.js +528 -0
  52. package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
  53. package/esm/ReExports/coreWorkerModules.generated.js +488 -0
  54. package/esm/ReExports/frameworkModules.d.ts +2 -0
  55. package/esm/ReExports/frameworkModules.js +68 -0
  56. package/esm/ReExports/frameworkShared.d.ts +12 -0
  57. package/esm/ReExports/frameworkShared.js +16 -0
  58. package/esm/ReExports/frameworkWorkerModules.generated.d.ts +2 -0
  59. package/esm/ReExports/frameworkWorkerModules.generated.js +130 -0
  60. package/esm/ReExports/list.js +527 -79
  61. package/esm/ReExports/modules.d.ts +1 -1
  62. package/esm/ReExports/modules.js +10 -165
  63. package/esm/ReExports/registry.d.ts +1 -0
  64. package/esm/ReExports/registry.js +23 -5
  65. package/esm/ReExports/uiStub.d.ts +3 -0
  66. package/esm/ReExports/uiStub.js +33 -0
  67. package/esm/ReExports/workerModules.d.ts +2 -0
  68. package/esm/ReExports/workerModules.js +11 -0
  69. package/esm/TextSearch/TextSearchManager.d.ts +27 -13
  70. package/esm/TextSearch/TextSearchManager.js +77 -36
  71. package/esm/TextSearch/places.d.ts +12 -0
  72. package/esm/TextSearch/places.js +94 -0
  73. package/esm/assemblyManager/assembly.d.ts +21 -19
  74. package/esm/assemblyManager/assembly.js +28 -26
  75. package/esm/assemblyManager/assemblyAdapters.d.ts +1 -1
  76. package/esm/assemblyManager/assemblyAdapters.js +8 -2
  77. package/esm/assemblyManager/assemblyConfigSchema.d.ts +31 -90
  78. package/esm/assemblyManager/assemblyConfigSchema.js +35 -47
  79. package/esm/assemblyManager/assemblyManager.d.ts +35 -180
  80. package/esm/assemblyManager/assemblyManager.js +47 -51
  81. package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +25 -18
  82. package/esm/assemblyManager/expandAssemblyConfigShorthand.js +78 -49
  83. package/esm/assemblyManager/geneticCodes.js +2 -5
  84. package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +10 -0
  85. package/esm/assemblyManager/getSequenceAdapterConfig.js +10 -0
  86. package/esm/assemblyManager/indexAssemblyNames.d.ts +9 -0
  87. package/esm/assemblyManager/indexAssemblyNames.js +22 -0
  88. package/esm/assemblyManager/loadRefNameMap.d.ts +1 -1
  89. package/esm/assemblyManager/loadRefNameMap.js +4 -9
  90. package/esm/assemblyManager/refNameMapKey.d.ts +7 -0
  91. package/esm/assemblyManager/refNameMapKey.js +12 -0
  92. package/esm/checkPlugins.d.ts +2 -0
  93. package/esm/checkPlugins.js +38 -17
  94. package/esm/configuration/bamIndexFields.d.ts +49 -0
  95. package/esm/configuration/bamIndexFields.js +41 -0
  96. package/esm/configuration/configurationSchema.d.ts +101 -71
  97. package/esm/configuration/configurationSchema.js +207 -134
  98. package/esm/configuration/configurationSchemaUnion.d.ts +39 -0
  99. package/esm/configuration/configurationSchemaUnion.js +56 -0
  100. package/esm/configuration/configurationSlot.d.ts +150 -60
  101. package/esm/configuration/configurationSlot.js +103 -75
  102. package/esm/configuration/fillLocations.d.ts +14 -0
  103. package/esm/configuration/fillLocations.js +14 -0
  104. package/esm/configuration/formatAboutConfigSchema.d.ts +7 -21
  105. package/esm/configuration/formatDetailsConfigSchema.d.ts +11 -37
  106. package/esm/configuration/formatDetailsConfigSchema.js +10 -13
  107. package/esm/configuration/fullConfSnapshot.d.ts +4 -19
  108. package/esm/configuration/fullConfSnapshot.js +30 -52
  109. package/esm/configuration/getConf.d.ts +45 -41
  110. package/esm/configuration/getConf.js +111 -44
  111. package/esm/configuration/index.d.ts +24 -11
  112. package/esm/configuration/index.js +15 -7
  113. package/esm/configuration/indexType.d.ts +26 -0
  114. package/esm/configuration/indexType.js +38 -0
  115. package/esm/configuration/mergeFormatCallbacks.d.ts +6 -7
  116. package/esm/configuration/mergeFormatCallbacks.js +13 -10
  117. package/esm/configuration/readConfObject.d.ts +2 -24
  118. package/esm/configuration/readConfObject.js +20 -63
  119. package/esm/configuration/requirements.d.ts +37 -0
  120. package/esm/configuration/requirements.js +88 -0
  121. package/esm/configuration/schemaRegistry.d.ts +32 -15
  122. package/esm/configuration/schemaRegistry.js +33 -35
  123. package/esm/configuration/schemaTypes.d.ts +21 -5
  124. package/esm/configuration/schemaTypes.js +66 -55
  125. package/esm/configuration/slotFacade.d.ts +12 -29
  126. package/esm/configuration/slotFacade.js +44 -23
  127. package/esm/configuration/snapshotPreprocess.d.ts +43 -0
  128. package/esm/configuration/snapshotPreprocess.js +161 -0
  129. package/esm/configuration/tabixIndexFields.d.ts +30 -4
  130. package/esm/configuration/tabixIndexFields.js +21 -4
  131. package/esm/configuration/tabixShorthand.d.ts +34 -17
  132. package/esm/configuration/tabixShorthand.js +49 -22
  133. package/esm/configuration/types.d.ts +182 -43
  134. package/esm/configuration/uriShorthand.d.ts +9 -0
  135. package/esm/configuration/uriShorthand.js +16 -0
  136. package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +13 -19
  137. package/esm/data_adapters/BaseAdapter/BaseAdapter.js +12 -19
  138. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +40 -2
  139. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +68 -5
  140. package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +40 -0
  141. package/esm/data_adapters/BaseAdapter/featureDensity.js +31 -0
  142. package/esm/data_adapters/BaseAdapter/index.d.ts +23 -3
  143. package/esm/data_adapters/BaseAdapter/index.js +1 -0
  144. package/esm/data_adapters/BaseAdapter/rowSources.d.ts +37 -0
  145. package/esm/data_adapters/BaseAdapter/rowSources.js +7 -0
  146. package/esm/data_adapters/BaseAdapter/stats.d.ts +33 -1
  147. package/esm/data_adapters/BaseAdapter/stats.js +52 -13
  148. package/esm/data_adapters/BaseAdapter/types.d.ts +8 -12
  149. package/esm/data_adapters/BaseAdapter/zoomRange.d.ts +10 -0
  150. package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +1 -1
  151. package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +7 -11
  152. package/esm/data_adapters/CytobandAdapter/configSchema.js +3 -17
  153. package/esm/data_adapters/dataAdapterCache.d.ts +19 -2
  154. package/esm/data_adapters/dataAdapterCache.js +44 -10
  155. package/esm/data_adapters/getFeatureAdapter.d.ts +6 -4
  156. package/esm/data_adapters/getFeatureAdapter.js +8 -8
  157. package/esm/data_adapters/getSequenceSubAdapter.d.ts +7 -9
  158. package/esm/data_adapters/getSequenceSubAdapter.js +8 -10
  159. package/esm/pluggableElementTypes/AdapterType.d.ts +8 -8
  160. package/esm/pluggableElementTypes/AdapterType.js +1 -1
  161. package/esm/pluggableElementTypes/DisplayType.d.ts +46 -16
  162. package/esm/pluggableElementTypes/DisplayType.js +22 -12
  163. package/esm/pluggableElementTypes/LazyStateModelElement.d.ts +32 -0
  164. package/esm/pluggableElementTypes/LazyStateModelElement.js +77 -0
  165. package/esm/pluggableElementTypes/PluggableElementBase.d.ts +3 -5
  166. package/esm/pluggableElementTypes/PluggableElementBase.js +3 -5
  167. package/esm/pluggableElementTypes/RpcMethodType.d.ts +11 -1
  168. package/esm/pluggableElementTypes/RpcMethodType.js +25 -9
  169. package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +1 -2
  170. package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +7 -7
  171. package/esm/pluggableElementTypes/ViewType.d.ts +20 -4
  172. package/esm/pluggableElementTypes/ViewType.js +32 -4
  173. package/esm/pluggableElementTypes/addMenuItems.d.ts +3 -2
  174. package/esm/pluggableElementTypes/extendElementType.d.ts +1 -2
  175. package/esm/pluggableElementTypes/extendElementType.js +9 -5
  176. package/esm/pluggableElementTypes/index.d.ts +2 -1
  177. package/esm/pluggableElementTypes/index.js +1 -1
  178. package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +19 -9
  179. package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +65 -27
  180. package/esm/pluggableElementTypes/models/BaseDisplayModel.js +72 -10
  181. package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +65 -16
  182. package/esm/pluggableElementTypes/models/BaseTrackModel.js +179 -117
  183. package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +85 -16
  184. package/esm/pluggableElementTypes/models/BaseViewModel.js +53 -10
  185. package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +26 -16
  186. package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +15 -11
  187. package/esm/pluggableElementTypes/models/assertDisplayContract.js +25 -32
  188. package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -18
  189. package/esm/pluggableElementTypes/models/baseConnectionConfig.js +5 -5
  190. package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +26 -31
  191. package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +108 -147
  192. package/esm/pluggableElementTypes/models/baseTrackConfig.js +96 -73
  193. package/esm/pluggableElementTypes/models/components/SaveTrackData.js +4 -6
  194. package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +3 -4
  195. package/esm/pluggableElementTypes/models/components/fetchTrackData.js +3 -3
  196. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +23 -13
  197. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +80 -48
  198. package/esm/pluggableElementTypes/models/index.d.ts +2 -3
  199. package/esm/pluggableElementTypes/models/index.js +2 -3
  200. package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +15 -1
  201. package/esm/pluggableElementTypes/models/migrateTrackConfig.js +85 -25
  202. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +4 -3
  203. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +141 -19
  204. package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +3 -3
  205. package/esm/pluginDefinitions.d.ts +34 -7
  206. package/esm/pluginDefinitions.js +54 -20
  207. package/esm/rpc/BaseRpcDriver.d.ts +2 -2
  208. package/esm/rpc/BaseRpcDriver.js +25 -30
  209. package/esm/rpc/MainThreadRpcDriver.d.ts +2 -2
  210. package/esm/rpc/MainThreadRpcDriver.js +13 -8
  211. package/esm/rpc/RpcClient.d.ts +18 -6
  212. package/esm/rpc/RpcClient.js +51 -16
  213. package/esm/rpc/RpcManager.d.ts +14 -10
  214. package/esm/rpc/RpcManager.js +11 -1
  215. package/esm/rpc/RpcRegistry.d.ts +40 -7
  216. package/esm/rpc/RpcServer.d.ts +3 -1
  217. package/esm/rpc/RpcServer.js +19 -12
  218. package/esm/rpc/WebWorkerRpcDriver.d.ts +11 -4
  219. package/esm/rpc/WebWorkerRpcDriver.js +64 -68
  220. package/esm/rpc/byteBudget.d.ts +20 -5
  221. package/esm/rpc/byteBudget.js +16 -5
  222. package/esm/rpc/configSchema.d.ts +7 -21
  223. package/esm/rpc/coreRpcMethods.d.ts +4 -0
  224. package/esm/rpc/coreRpcMethods.js +4 -0
  225. package/esm/rpc/methods/CoreGetEncodedFeature.d.ts +13 -0
  226. package/esm/rpc/methods/CoreGetEncodedFeature.js +32 -0
  227. package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +16 -0
  228. package/esm/rpc/methods/CoreGetEncodedLayers.js +59 -0
  229. package/esm/rpc/methods/CoreGetExportData.js +3 -4
  230. package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
  231. package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
  232. package/esm/rpc/methods/CoreGetFeatures.js +3 -5
  233. package/esm/rpc/methods/CoreGetRefNames.js +2 -12
  234. package/esm/rpc/methods/CoreGetRegionByteEstimate.js +1 -1
  235. package/esm/rpc/methods/CoreGetSequence.js +2 -2
  236. package/esm/rpc/methods/CoreLoadAdapterCode.d.ts +13 -0
  237. package/esm/rpc/methods/CoreLoadAdapterCode.js +16 -0
  238. package/esm/rpc/methods/layerFeatures.d.ts +33 -0
  239. package/esm/rpc/methods/layerFeatures.js +29 -0
  240. package/esm/svg/SvgExport.js +6 -7
  241. package/esm/svg/SvgThemeProviders.d.ts +12 -0
  242. package/esm/svg/SvgThemeProviders.js +15 -0
  243. package/esm/svg/exportViewSvg.d.ts +28 -0
  244. package/esm/svg/exportViewSvg.js +13 -0
  245. package/esm/svg/normalizeSvgMarkup.d.ts +7 -0
  246. package/esm/svg/normalizeSvgMarkup.js +99 -0
  247. package/esm/svg/serializeSvg.d.ts +7 -0
  248. package/esm/svg/serializeSvg.js +11 -0
  249. package/esm/svg/svgId.d.ts +1 -1
  250. package/esm/svg/svgId.js +1 -1
  251. package/esm/svg/svgReady.d.ts +9 -7
  252. package/esm/svg/svgReady.js +8 -7
  253. package/esm/svg/trackNames.d.ts +7 -5
  254. package/esm/svg/trackNames.js +12 -9
  255. package/esm/svg/wrapSvgExport.js +6 -74
  256. package/esm/ui/AddCustomPluginDialog.js +3 -8
  257. package/esm/ui/AppReadyMarker.d.ts +45 -0
  258. package/esm/ui/AppReadyMarker.js +89 -0
  259. package/esm/ui/BaseExportSvgDialog.d.ts +1 -1
  260. package/esm/ui/CascadingMenu.js +181 -104
  261. package/esm/ui/DropDownMenu.js +2 -1
  262. package/esm/ui/ErrorBanner.js +1 -1
  263. package/esm/ui/ErrorBoundary.d.ts +2 -2
  264. package/esm/ui/ErrorMessageStackTraceContents.js +2 -1
  265. package/esm/ui/ErrorMessageStackTraceDialog.js +5 -11
  266. package/esm/ui/ExportSvgDialog.d.ts +1 -1
  267. package/esm/ui/FileDropZone.js +2 -1
  268. package/esm/ui/FileSelector/useInternetAccounts.d.ts +156 -96
  269. package/esm/ui/HoverMenu.d.ts +1 -2
  270. package/esm/ui/HoverMenu.js +6 -3
  271. package/esm/ui/JexlFilterDialog.d.ts +13 -10
  272. package/esm/ui/JexlFilterDialog.js +122 -49
  273. package/esm/ui/JexlFilterRowEditors.d.ts +15 -0
  274. package/esm/ui/JexlFilterRowEditors.js +90 -0
  275. package/esm/ui/LazyBaseTooltip.d.ts +4 -0
  276. package/esm/ui/LazyBaseTooltip.js +9 -0
  277. package/esm/ui/LegendSwatchGlyph.js +26 -21
  278. package/esm/ui/LoadingOverlay.d.ts +14 -0
  279. package/esm/ui/LoadingOverlay.js +4 -2
  280. package/esm/ui/MenuTypes.d.ts +23 -53
  281. package/esm/ui/MenuTypes.js +3 -0
  282. package/esm/ui/MonospaceTextField.d.ts +2 -1
  283. package/esm/ui/MonospaceTextField.js +23 -20
  284. package/esm/ui/PaletteContext.d.ts +10 -5
  285. package/esm/ui/PaletteContext.js +44 -6
  286. package/esm/ui/RefNameAutocomplete/SearchOption.d.ts +13 -0
  287. package/esm/ui/RefNameAutocomplete/SearchOption.js +45 -0
  288. package/esm/ui/RefNameAutocomplete/index.d.ts +1 -2
  289. package/esm/ui/RefNameAutocomplete/index.js +8 -2
  290. package/esm/ui/RefNameAutocomplete/util.d.ts +13 -0
  291. package/esm/ui/RefNameAutocomplete/util.js +42 -1
  292. package/esm/ui/ResizeHandle.d.ts +3 -1
  293. package/esm/ui/ResizeHandle.js +44 -11
  294. package/esm/ui/ScrollChrome.d.ts +13 -0
  295. package/esm/ui/ScrollChrome.js +11 -0
  296. package/esm/ui/ScrollEdgeShadow.d.ts +6 -9
  297. package/esm/ui/ScrollEdgeShadow.js +14 -35
  298. package/esm/ui/ScrollZoomToggle.d.ts +4 -27
  299. package/esm/ui/ScrollZoomToggle.js +34 -51
  300. package/esm/ui/SessionJsonPanel.d.ts +3 -0
  301. package/esm/ui/SessionJsonPanel.js +14 -0
  302. package/esm/ui/SettingsChangesTable.d.ts +1 -0
  303. package/esm/ui/SettingsChangesTable.js +49 -11
  304. package/esm/ui/ShareLinkField.d.ts +1 -3
  305. package/esm/ui/ShareLinkField.js +13 -40
  306. package/esm/ui/SizeSliderRow.d.ts +1 -3
  307. package/esm/ui/SizeSliderRow.js +4 -6
  308. package/esm/ui/SnackbarModel.js +79 -67
  309. package/esm/ui/StatusProgressBar.js +2 -2
  310. package/esm/ui/SvgColorLegend.d.ts +9 -4
  311. package/esm/ui/SvgColorLegend.js +82 -41
  312. package/esm/ui/VerticalScrollbar.d.ts +13 -34
  313. package/esm/ui/VerticalScrollbar.js +29 -83
  314. package/esm/ui/ViewLoadingScreen.d.ts +5 -4
  315. package/esm/ui/ViewLoadingScreen.js +8 -32
  316. package/esm/ui/colorScale.d.ts +92 -0
  317. package/esm/ui/colorScale.js +72 -0
  318. package/esm/ui/colors.d.ts +64 -0
  319. package/esm/ui/colors.js +230 -1
  320. package/esm/ui/hoverBoxStyle.d.ts +14 -2
  321. package/esm/ui/hoverBoxStyle.js +17 -2
  322. package/esm/ui/index.d.ts +12 -12
  323. package/esm/ui/index.js +14 -22
  324. package/esm/ui/launchViewMenu.js +15 -5
  325. package/esm/ui/legendMenuItem.d.ts +10 -32
  326. package/esm/ui/legendMenuItem.js +9 -36
  327. package/esm/ui/legendSpec.d.ts +15 -8
  328. package/esm/ui/legendSpec.js +14 -23
  329. package/esm/ui/makeSizeMenu.d.ts +0 -6
  330. package/esm/ui/makeSizeMenu.js +6 -30
  331. package/esm/ui/measureLegendText.js +1 -1
  332. package/esm/ui/menuItemAdornment.d.ts +9 -20
  333. package/esm/ui/menuItemAdornment.js +10 -32
  334. package/esm/ui/menuItems.d.ts +2 -7
  335. package/esm/ui/menuItems.js +1 -6
  336. package/esm/ui/multiTrackMenuItems.d.ts +6 -0
  337. package/esm/ui/palette.d.ts +118 -116
  338. package/esm/ui/palette.js +114 -75
  339. package/esm/ui/replaceViewAction.d.ts +1 -1
  340. package/esm/ui/replaceViewAction.js +1 -1
  341. package/esm/ui/theme.d.ts +43 -119
  342. package/esm/ui/theme.js +62 -78
  343. package/esm/ui/toggleMenuItems.d.ts +1 -3
  344. package/esm/ui/toggleMenuItems.js +6 -5
  345. package/esm/ui/useAssemblySelection.d.ts +4 -4
  346. package/esm/ui/viewHeaderHeight.d.ts +1 -0
  347. package/esm/ui/viewHeaderHeight.js +1 -0
  348. package/esm/util/Base1DUtils.d.ts +5 -3
  349. package/esm/util/Base1DUtils.js +14 -6
  350. package/esm/util/Base1DViewModel.d.ts +2 -1
  351. package/esm/util/Base1DViewModel.js +3 -2
  352. package/esm/util/SvgCanvas.d.ts +15 -13
  353. package/esm/util/SvgCanvas.js +76 -56
  354. package/esm/util/aborting.d.ts +39 -0
  355. package/esm/util/aborting.js +88 -6
  356. package/esm/util/adapterMetadata.d.ts +1 -1
  357. package/esm/util/adapterMetadata.js +6 -5
  358. package/esm/util/addAndShowTrack.d.ts +2 -5
  359. package/esm/util/addAndShowTrack.js +5 -1
  360. package/esm/util/addRelativeUris.d.ts +17 -5
  361. package/esm/util/addRelativeUris.js +46 -10
  362. package/esm/util/addTrackFromWidget.d.ts +2 -5
  363. package/esm/util/addTrackFromWidget.js +5 -4
  364. package/esm/util/aggregateFieldName.d.ts +10 -0
  365. package/esm/util/aggregateFieldName.js +8 -0
  366. package/esm/util/analytics.js +46 -13
  367. package/esm/util/animationAllowed.d.ts +9 -0
  368. package/esm/util/animationAllowed.js +13 -0
  369. package/esm/util/applyRowResizeWheel.d.ts +10 -5
  370. package/esm/util/applyRowResizeWheel.js +10 -21
  371. package/esm/util/bandHeight.d.ts +10 -0
  372. package/esm/util/bandHeight.js +29 -0
  373. package/esm/util/bandLayout.d.ts +4 -4
  374. package/esm/util/bandLayout.js +4 -4
  375. package/esm/util/bezierConnector.d.ts +4 -3
  376. package/esm/util/bezierConnector.js +38 -45
  377. package/esm/util/bgzfWorkerPool.d.ts +20 -74
  378. package/esm/util/bgzfWorkerPool.js +20 -74
  379. package/esm/util/binnedAggregate.d.ts +17 -0
  380. package/esm/util/binnedAggregate.js +275 -0
  381. package/esm/util/cacheBudgets.d.ts +22 -19
  382. package/esm/util/cacheBudgets.js +22 -19
  383. package/esm/util/cachedSetup.d.ts +1 -1
  384. package/esm/util/cachedSetup.js +2 -2
  385. package/esm/util/categoricalField.d.ts +56 -0
  386. package/esm/util/categoricalField.js +73 -0
  387. package/esm/util/clampToContig.d.ts +17 -0
  388. package/esm/util/clampToContig.js +19 -0
  389. package/esm/util/coarseStripHTML.js +1 -2
  390. package/esm/util/color/cssColorsLevel4.d.ts +1 -0
  391. package/esm/util/color/cssColorsLevel4.js +1 -0
  392. package/esm/util/color/index.d.ts +5 -3
  393. package/esm/util/color/index.js +7 -4
  394. package/esm/util/colorBits.d.ts +3 -3
  395. package/esm/util/colorBits.js +19 -44
  396. package/esm/util/colorRamp.d.ts +49 -5
  397. package/esm/util/colorRamp.js +169 -18
  398. package/esm/util/colorScale.d.ts +156 -0
  399. package/esm/util/colorScale.js +243 -0
  400. package/esm/util/colorSchemes.d.ts +21 -0
  401. package/esm/util/colorSchemes.js +30 -0
  402. package/esm/util/{createStopTokenRotation.d.ts → createAbortRotation.d.ts} +21 -23
  403. package/esm/util/{createStopTokenRotation.js → createAbortRotation.js} +21 -52
  404. package/esm/util/createSvgRasterCanvas.d.ts +10 -0
  405. package/esm/util/cssColorParse.d.ts +15 -0
  406. package/esm/util/cssColorParse.js +53 -0
  407. package/esm/util/diagonalizeRegions.d.ts +2 -3
  408. package/esm/util/diagonalizeRegions.js +8 -13
  409. package/esm/util/expandLooseSearchIndex.d.ts +19 -0
  410. package/esm/util/expandLooseSearchIndex.js +29 -0
  411. package/esm/util/featureTable.d.ts +224 -0
  412. package/esm/util/featureTable.js +366 -0
  413. package/esm/util/featureTransforms.d.ts +80 -0
  414. package/esm/util/featureTransforms.js +1579 -0
  415. package/esm/util/featureTypes.d.ts +24 -0
  416. package/esm/util/featureTypes.js +35 -0
  417. package/esm/util/fetchAndMaybeUnzip.js +16 -9
  418. package/esm/util/fetchContext.d.ts +7 -8
  419. package/esm/util/fetchContext.js +3 -3
  420. package/esm/util/fetchHub.d.ts +4 -2
  421. package/esm/util/fetchHub.js +2 -2
  422. package/esm/util/fetchPhases.d.ts +10 -10
  423. package/esm/util/fetchSeq.d.ts +2 -3
  424. package/esm/util/fetchSeq.js +2 -2
  425. package/esm/util/fieldReader.d.ts +17 -0
  426. package/esm/util/fieldReader.js +62 -0
  427. package/esm/util/freezeDeep.d.ts +8 -10
  428. package/esm/util/freezeDeep.js +8 -10
  429. package/esm/util/groupKeys.d.ts +77 -0
  430. package/esm/util/groupKeys.js +155 -0
  431. package/esm/util/highlights.d.ts +10 -6
  432. package/esm/util/highlights.js +12 -25
  433. package/esm/util/hooks.d.ts +31 -2
  434. package/esm/util/hooks.js +72 -3
  435. package/esm/util/index.d.ts +11 -11
  436. package/esm/util/index.js +11 -10
  437. package/esm/util/indexCandidates.d.ts +1 -31
  438. package/esm/util/indexCandidates.js +5 -63
  439. package/esm/util/installFetch.d.ts +77 -37
  440. package/esm/util/installFetch.js +65 -38
  441. package/esm/util/installInitAutorun.d.ts +14 -13
  442. package/esm/util/installInitAutorun.js +17 -17
  443. package/esm/util/installPrerequisiteFetch.d.ts +115 -0
  444. package/esm/util/installPrerequisiteFetch.js +111 -0
  445. package/esm/util/io/index.js +19 -14
  446. package/esm/util/isDataCurrent.d.ts +7 -5
  447. package/esm/util/isDataCurrent.js +9 -6
  448. package/esm/util/isTextEntryFocused.d.ts +7 -0
  449. package/esm/util/isTextEntryFocused.js +16 -0
  450. package/esm/util/jexl.js +24 -21
  451. package/esm/util/jexlFilterRows.d.ts +89 -0
  452. package/esm/util/jexlFilterRows.js +252 -0
  453. package/esm/util/jexlFilters.d.ts +20 -27
  454. package/esm/util/jexlFilters.js +23 -11
  455. package/esm/util/jexlStrings.d.ts +3 -4
  456. package/esm/util/jexlStrings.js +2 -3
  457. package/esm/util/layouts/GranularRectLayout.d.ts +8 -1
  458. package/esm/util/layouts/GranularRectLayout.js +25 -8
  459. package/esm/util/lazyAfterAttach.d.ts +13 -0
  460. package/esm/util/lazyAfterAttach.js +31 -0
  461. package/esm/util/lazyWithPreload.d.ts +19 -0
  462. package/esm/util/lazyWithPreload.js +27 -0
  463. package/esm/util/legendCandidates.d.ts +72 -0
  464. package/esm/util/legendCandidates.js +138 -0
  465. package/esm/util/localStorage.js +4 -4
  466. package/esm/util/markEncoding.d.ts +150 -0
  467. package/esm/util/markEncoding.js +845 -0
  468. package/esm/util/markEncodingTypes.d.ts +588 -0
  469. package/esm/util/markEncodingTypes.js +8 -0
  470. package/esm/util/mst-reflection.d.ts +2 -20
  471. package/esm/util/mst-reflection.js +3 -53
  472. package/esm/util/mstUtils.d.ts +31 -23
  473. package/esm/util/mstUtils.js +39 -24
  474. package/esm/util/numericUtils.d.ts +7 -0
  475. package/esm/util/numericUtils.js +16 -0
  476. package/esm/util/numericValue.d.ts +14 -0
  477. package/esm/util/numericValue.js +34 -0
  478. package/esm/util/openFeatureWidget.d.ts +5 -0
  479. package/esm/util/openFeatureWidget.js +2 -2
  480. package/esm/util/openViews.d.ts +17 -0
  481. package/esm/util/openViews.js +22 -0
  482. package/esm/util/parentWalk.d.ts +1 -1
  483. package/esm/util/parentWalk.js +1 -1
  484. package/esm/util/parseLineByLine.d.ts +4 -5
  485. package/esm/util/parseLineByLine.js +8 -14
  486. package/esm/util/pluginStore.d.ts +6 -8
  487. package/esm/util/pluginStore.js +17 -16
  488. package/esm/util/preloadComponent.d.ts +5 -0
  489. package/esm/util/preloadComponent.js +11 -0
  490. package/esm/util/progress.d.ts +22 -22
  491. package/esm/util/progress.js +27 -26
  492. package/esm/util/quantileExtent.d.ts +49 -0
  493. package/esm/util/quantileExtent.js +162 -0
  494. package/esm/util/range.d.ts +13 -9
  495. package/esm/util/range.js +17 -8
  496. package/esm/util/renameRegions.d.ts +26 -6
  497. package/esm/util/renameRegions.js +68 -54
  498. package/esm/util/renderToStaticMarkup.js +24 -14
  499. package/esm/util/rxjs.d.ts +23 -8
  500. package/esm/util/rxjs.js +61 -15
  501. package/esm/util/samplesTsv.d.ts +49 -0
  502. package/esm/util/samplesTsv.js +86 -0
  503. package/esm/util/scheduleDetachedDestroy.d.ts +18 -0
  504. package/esm/util/scheduleDetachedDestroy.js +24 -0
  505. package/esm/util/scrollLatch.d.ts +1 -0
  506. package/esm/util/scrollLatch.js +8 -0
  507. package/esm/util/selectEncodedFeature.d.ts +16 -0
  508. package/esm/util/selectEncodedFeature.js +34 -0
  509. package/esm/util/sessionSharing.d.ts +7 -5
  510. package/esm/util/sessionSharing.js +23 -23
  511. package/esm/util/shapeNameList.d.ts +2 -0
  512. package/esm/util/shapeNameList.js +6 -0
  513. package/esm/util/shapeNames.d.ts +7 -0
  514. package/esm/util/shapeNames.js +11 -0
  515. package/esm/util/simpleFeature.d.ts +0 -1
  516. package/esm/util/starFusion.d.ts +26 -0
  517. package/esm/util/starFusion.js +37 -0
  518. package/esm/util/stepTables.d.ts +82 -0
  519. package/esm/util/stepTables.js +243 -0
  520. package/esm/util/svAlt.d.ts +145 -0
  521. package/esm/util/svAlt.js +364 -0
  522. package/esm/util/svgColorProps.d.ts +11 -0
  523. package/esm/util/svgColorProps.js +28 -1
  524. package/esm/util/systemColorScheme.d.ts +12 -0
  525. package/esm/util/systemColorScheme.js +27 -0
  526. package/esm/util/tabix.d.ts +13 -8
  527. package/esm/util/tabix.js +17 -12
  528. package/esm/util/thresholdScale.d.ts +91 -0
  529. package/esm/util/thresholdScale.js +166 -0
  530. package/esm/util/timeGate.d.ts +4 -5
  531. package/esm/util/timeGate.js +4 -5
  532. package/esm/util/trackConfigDelta.d.ts +26 -26
  533. package/esm/util/trackConfigDelta.js +63 -47
  534. package/esm/util/tracks.d.ts +121 -40
  535. package/esm/util/tracks.js +497 -112
  536. package/esm/util/translateTranscript.d.ts +44 -0
  537. package/esm/util/translateTranscript.js +102 -0
  538. package/esm/util/types/data.d.ts +0 -2
  539. package/esm/util/types/index.d.ts +121 -22
  540. package/esm/util/types/index.js +9 -0
  541. package/esm/util/types/mst.d.ts +3 -0
  542. package/esm/util/types/mst.js +4 -0
  543. package/esm/util/types/renameIds.d.ts +1 -0
  544. package/esm/util/types/renameIds.js +29 -0
  545. package/esm/util/types/services.d.ts +1 -1
  546. package/esm/util/unknownSnapshotKeys.d.ts +51 -0
  547. package/esm/util/unknownSnapshotKeys.js +82 -0
  548. package/esm/util/useFeatureSequence.js +5 -5
  549. package/esm/util/useFetch.d.ts +3 -4
  550. package/esm/util/useFetch.js +19 -10
  551. package/esm/util/useFetchPlugins.d.ts +6 -2
  552. package/esm/util/useFetchPlugins.js +7 -3
  553. package/esm/util/usePanelVirtualScroll.d.ts +7 -35
  554. package/esm/util/usePanelVirtualScroll.js +9 -36
  555. package/esm/util/useRowVirtualScroll.d.ts +6 -29
  556. package/esm/util/useRowVirtualScroll.js +8 -49
  557. package/esm/util/useVirtualScrollWheel.d.ts +20 -4
  558. package/esm/util/useVirtualScrollWheel.js +40 -74
  559. package/esm/util/viewHighlights.d.ts +3 -0
  560. package/esm/util/viewHighlights.js +5 -0
  561. package/esm/util/viewStatus.d.ts +47 -15
  562. package/esm/util/viewStatus.js +34 -0
  563. package/esm/util/wheelZoom.d.ts +7 -1
  564. package/esm/util/wheelZoom.js +85 -19
  565. package/esm/util/whenViewSettled.d.ts +55 -8
  566. package/esm/util/whenViewSettled.js +56 -7
  567. package/esm/util/withLaunchInput.d.ts +174 -0
  568. package/esm/util/withLaunchInput.js +274 -0
  569. package/package.json +70 -20
  570. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +0 -2
  571. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +0 -8
  572. package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +0 -8
  573. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +0 -80
  574. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.js +0 -583
  575. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +0 -141
  576. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.js +0 -1116
  577. package/esm/ReExports/BaseFeatureDetails.d.ts +0 -1
  578. package/esm/ReExports/BaseFeatureDetails.js +0 -10
  579. package/esm/ReExports/index.d.ts +0 -1
  580. package/esm/ReExports/index.js +0 -1
  581. package/esm/ReExports/publicUtil.d.ts +0 -1
  582. package/esm/ReExports/publicUtil.js +0 -28
  583. package/esm/configuration/promotableDefaults.d.ts +0 -199
  584. package/esm/configuration/promotableDefaults.js +0 -326
  585. package/esm/configuration/promotablePin.d.ts +0 -55
  586. package/esm/configuration/promotablePin.js +0 -1
  587. package/esm/configuration/promotableResolve.d.ts +0 -108
  588. package/esm/configuration/promotableResolve.js +0 -117
  589. package/esm/configuration/promotableSlots.d.ts +0 -12
  590. package/esm/configuration/promotableSlots.js +0 -45
  591. package/esm/configuration/slotShape.d.ts +0 -12
  592. package/esm/configuration/slotShape.js +0 -84
  593. package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +0 -51
  594. package/esm/pluggableElementTypes/models/HighlightsMixin.js +0 -78
  595. package/esm/ui/PinAdornment.d.ts +0 -5
  596. package/esm/ui/PinAdornment.js +0 -79
  597. package/esm/ui/SvgGradientLegend.d.ts +0 -26
  598. package/esm/ui/SvgGradientLegend.js +0 -26
  599. package/esm/ui/highlightChipReveal.d.ts +0 -32
  600. package/esm/ui/highlightChipReveal.js +0 -39
  601. package/esm/ui/promotableMenuItems.d.ts +0 -19
  602. package/esm/ui/promotableMenuItems.js +0 -89
  603. package/esm/ui/promotablePinCoverage.d.ts +0 -44
  604. package/esm/ui/promotablePinCoverage.js +0 -87
  605. package/esm/util/applyInitSettings.d.ts +0 -79
  606. package/esm/util/applyInitSettings.js +0 -91
  607. package/esm/util/openDisplays.d.ts +0 -23
  608. package/esm/util/openDisplays.js +0 -79
  609. package/esm/util/stopToken.d.ts +0 -211
  610. package/esm/util/stopToken.js +0 -438
  611. /package/esm/{BaseFeatureWidget/BaseFeatureDetail/types.js → data_adapters/BaseAdapter/zoomRange.js} +0 -0
@@ -1 +0,0 @@
1
- export declare const BaseFeatureDetail: any;
@@ -1,10 +0,0 @@
1
- import { lazy } from 'react';
2
- import { lazyMap } from './lazify.js';
3
- export const BaseFeatureDetail = lazyMap({
4
- Attributes: lazy(() => import('../BaseFeatureWidget/BaseFeatureDetail/Attributes.js')),
5
- FeatureDetails: lazy(() => import('../BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js')),
6
- FeatureWash: lazy(() => import('../BaseFeatureWidget/BaseFeatureDetail/FeatureWash.js')),
7
- BaseCard: lazy(() => import('../BaseFeatureWidget/BaseFeatureDetail/BaseCard.js')),
8
- BaseAttributes: lazy(() => import('../BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.js')),
9
- BaseCoreDetails: lazy(() => import('../BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.js')),
10
- }, '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/');
@@ -1 +0,0 @@
1
- export { default } from './modules.ts';
@@ -1 +0,0 @@
1
- export { default } from './modules.js';
@@ -1 +0,0 @@
1
- export { AuthNeededError, BEZIER_CONNECTOR_MAX_REACH_PX, ENCODED_PREFIX, IUPAC_MOTIF_REGEX, IntervalTree, JSON_PREFIX, MAX_ZOOM_RATE_PER_MS, SCROLL_ZOOM_FACTOR_DIVISOR, SHARE_PREFIX, SimpleFeature, UNKNOWN, UNSUPPORTED, UnknownRefNameError, ZOOM_ACTIVE_WINDOW_MS, accumulateScroll, adapterConfigFromSpec, addAdapterGuesser, addAddTrackComponent, addAndShowTrack, addOrReplaceView, addTrackFromWidget, addTrackTypeGuesser, aesDecrypt, aesEncrypt, animationAllowed, applyOrderWithin, applyZoomAccum, assembleLocString, assembleLocStringRaw, avg, b64PadSuffix, bezierConnectorPath, bpSpanPx, bpToPx, bytesForRegions, calculateRedispatchRange, canReplaceView, capitalizeFirst, checkStopToken, checkStopTokenThrottled, clamp, clearFileFromCache, cmpStr, coarseStripHTML, codonTable, compareLocStrings, compareLocs, complement, complementTable, createProgressReporter, createScrollLatch, createSharedSetup, createStatusChannel, createStatusFanOut, createStatusWindow, createStopToken, createStopTokenChecker, createStopTokenRotation, dedupe, defaultCodonTable, defaultStarts, diagonalizeRegions, diffTrackConfig, doesIntersect2, downloadStatus, drawImageOntoCanvasContext, encodeSessionParam, ensureFileHandleReady, expandLooseTrackConfig, featureSpanPx, fetchAndMaybeUnzip, fetchAndMaybeUnzipText, fetchJson, fileToLocation, findFileHandleIds, findParentThat, findParentThatIs, flattenTrackConfigDelta, formatRelativeTime, fromUrlSafeB64, gatherOverlaps, generateCodonTable, generateUnknownTrackConf, generateUnsupportedTrackConf, getAssemblyHost, getBlob, getBlobMap, getBpDisplayStr, getConfAssemblyNames, getContainingDisplay, getContainingTrack, getContainingView, getDialogHost, getEnv, getFileFromCache, getFileHandle, getFileName, getFillProps, getFrame, getNotificationSink, getNumberGrouping, getPaletteHost, getPluginUpdate, getRenderingServices, getRpcHost, getRpcSessionId, getSession, getSessionServices, getStr, getStrokeProps, getTickDisplayStr, getTrackAssemblyNames, getTrackName, getZoomNormalizer, groupBy, guessAdapter, guessTrackConf, guessTrackType, hasFileHandlesInCache, hasSharedArrayBuffer, hashCode, hideTrackGeneric, installedVersionFromUrl, intersection2, isAbortException, isAbstractMenuManager, isActivelyZooming, isAppRootModel, isAuthNeededException, isBlobLocation, isDataCurrent, isDisplayModel, isElectron, isFeature, isFileHandleLocation, isFileSystemAccessSupported, isGzip, isLocalPathLocation, isLooseTrackConfig, isNode, isObject, isPalindromic, isPluginInstalled, isRootModelWithInternetAccounts, isRpcResult, isSelectionContainer, isSessionModel, isSessionServices, isSessionModelWithConfigEditing, isSessionModelWithConnectionEditing, isSessionModelWithConnections, isSessionModelWithWidgets, isSessionWithAddAssembly, isSessionWithAddSessionTrack, isSessionWithAddTracks, isSessionWithPublishTrackConf, isSessionWithDeleteTrackConf, isSessionWithSessionPlugins, isSessionWithSessionTracks, isSessionWithShareURL, isSessionWithViewReplacement, isStopToken, isStopped, isSupportedIndexingAdapter, isTrackModel, isTrackViewModel, isUriLocation, isValidTag, isViewContainer, isViewModel, iupacToRegex, linkify, locStringsToRegions, localStorageGetBoolean, localStorageGetItem, localStorageGetJSON, localStorageGetNumber, localStorageRemoveItem, localStorageSetBoolean, localStorageSetItem, localStorageSetJSON, localStorageSetNumber, makeAbortError, makeIndex, makeIndexType, makeTrackId, markStopTokenStopped, matchTrackId, max, maxFinite, measureGridWidth, measureText, mergeIntervals, mergeTrackConfig, min, minmax, normalizeWheelDelta, notEmpty, objectHash, openFeatureWidget, openPromotableDisplays, parseLocString, parseLocStringOneBased, parseMotifList, pluralize, polarToCartesian, progressLabel, rIC, radToDeg, readSessionFromDynamo, reducePrecision, registerStopTokenBroadcaster, renameRegionIfNeeded, renameRegionsIfNeeded, renderToStaticMarkup, reorder, reorderWithin, resolvePlugin, resolveSelectedIds, restoreFileHandles, restoreFileHandlesFromSnapshot, revcom, reverse, reverseComplementIupac, revlist, saveAs, saveSvgAsImage, selectNamedRegions, setBlobMap, setFileInCache, setNumberGrouping, sha256, sha256Base64, sha256Base64Url, shareEndpoint, shorten, shorten2, showTrackGeneric, springAnimate, statusFraction, statusMessageText, statusProgressLabel, statusReading, stitch, stopStopToken, stopTokenSignal, storeBlobLocation, storeFileHandle, storeFileHandleLocation, stringify, stripAlpha, stripFileExtension, stripTrackIds, sum, svgHtmlToPngBlob, tagRegex, testAdapter, toBase64, toBase64Url, toLocale, toUrlSafeB64, toggleTrackGeneric, truncateMiddle, updateStatus, useDebounce, useLocalStorage, useWidthSetter, verifyPermission, wheelFrameElapsedMs, wheelZoomAccum, withProgress, withStopTokenCheck, withStopTokenSignal, } from '../util/index.ts';
@@ -1,28 +0,0 @@
1
- // The published `@jbrowse/core/util` module, listed by name.
2
- //
3
- // modules.ts used to serve `import * as coreUtil from '../util/index.ts'`, which
4
- // made the external ABI a side effect of an internal barrel. The two want
5
- // opposite things: in-tree code wants util/ reorganized freely, and a published
6
- // plugin wants the names it linked against to still be there. Coupling them
7
- // meant moving a file inside util/ silently edited the ABI, and nothing in the
8
- // diff said so -- that is how `defaultCodonTable`, `iterMap`, `when` and the
9
- // rest went, each one an `undefined` inside a bundle nobody was going to build
10
- // again.
11
- //
12
- // Re-exporting by name from the barrel splits those jobs without freezing
13
- // anything. Moving code between modules under util/ is still free, since only
14
- // the barrel's own line changes. Taking a name *out* of the barrel stops
15
- // compiling here, and the fix -- deleting the line below -- is an ABI removal
16
- // that reads as one in review.
17
- //
18
- // So: adding a line is how a helper becomes public, and it is a decision rather
19
- // than a side effect of where the code happens to live. This list is the ABI,
20
- // which abiBaseline.json is deliberately not: that baseline fails on removals
21
- // but not additions, so it sat 11 names behind what was actually being served
22
- // by the time this was written. A list that has to be edited by hand cannot
23
- // drift that way.
24
- //
25
- // The same split is worth making for '@jbrowse/core/ui' (115 pinned names) and
26
- // '@jbrowse/core/util/tracks' (36), which have the same shape and the same
27
- // history: BaseTooltip and getParentRenderProps each left this way.
28
- export { AuthNeededError, BEZIER_CONNECTOR_MAX_REACH_PX, ENCODED_PREFIX, IUPAC_MOTIF_REGEX, IntervalTree, JSON_PREFIX, MAX_ZOOM_RATE_PER_MS, SCROLL_ZOOM_FACTOR_DIVISOR, SHARE_PREFIX, SimpleFeature, UNKNOWN, UNSUPPORTED, UnknownRefNameError, ZOOM_ACTIVE_WINDOW_MS, accumulateScroll, adapterConfigFromSpec, addAdapterGuesser, addAddTrackComponent, addAndShowTrack, addOrReplaceView, addTrackFromWidget, addTrackTypeGuesser, aesDecrypt, aesEncrypt, animationAllowed, applyOrderWithin, applyZoomAccum, assembleLocString, assembleLocStringRaw, avg, b64PadSuffix, bezierConnectorPath, bpSpanPx, bpToPx, bytesForRegions, calculateRedispatchRange, canReplaceView, capitalizeFirst, checkStopToken, checkStopTokenThrottled, clamp, clearFileFromCache, cmpStr, coarseStripHTML, codonTable, compareLocStrings, compareLocs, complement, complementTable, createProgressReporter, createScrollLatch, createSharedSetup, createStatusChannel, createStatusFanOut, createStatusWindow, createStopToken, createStopTokenChecker, createStopTokenRotation, dedupe, defaultCodonTable, defaultStarts, diagonalizeRegions, diffTrackConfig, doesIntersect2, downloadStatus, drawImageOntoCanvasContext, encodeSessionParam, ensureFileHandleReady, expandLooseTrackConfig, featureSpanPx, fetchAndMaybeUnzip, fetchAndMaybeUnzipText, fetchJson, fileToLocation, findFileHandleIds, findParentThat, findParentThatIs, flattenTrackConfigDelta, formatRelativeTime, fromUrlSafeB64, gatherOverlaps, generateCodonTable, generateUnknownTrackConf, generateUnsupportedTrackConf, getAssemblyHost, getBlob, getBlobMap, getBpDisplayStr, getConfAssemblyNames, getContainingDisplay, getContainingTrack, getContainingView, getDialogHost, getEnv, getFileFromCache, getFileHandle, getFileName, getFillProps, getFrame, getNotificationSink, getNumberGrouping, getPaletteHost, getPluginUpdate, getRenderingServices, getRpcHost, getRpcSessionId, getSession, getSessionServices, getStr, getStrokeProps, getTickDisplayStr, getTrackAssemblyNames, getTrackName, getZoomNormalizer, groupBy, guessAdapter, guessTrackConf, guessTrackType, hasFileHandlesInCache, hasSharedArrayBuffer, hashCode, hideTrackGeneric, installedVersionFromUrl, intersection2, isAbortException, isAbstractMenuManager, isActivelyZooming, isAppRootModel, isAuthNeededException, isBlobLocation, isDataCurrent, isDisplayModel, isElectron, isFeature, isFileHandleLocation, isFileSystemAccessSupported, isGzip, isLocalPathLocation, isLooseTrackConfig, isNode, isObject, isPalindromic, isPluginInstalled, isRootModelWithInternetAccounts, isRpcResult, isSelectionContainer, isSessionModel, isSessionServices, isSessionModelWithConfigEditing, isSessionModelWithConnectionEditing, isSessionModelWithConnections, isSessionModelWithWidgets, isSessionWithAddAssembly, isSessionWithAddSessionTrack, isSessionWithAddTracks, isSessionWithPublishTrackConf, isSessionWithDeleteTrackConf, isSessionWithSessionPlugins, isSessionWithSessionTracks, isSessionWithShareURL, isSessionWithViewReplacement, isStopToken, isStopped, isSupportedIndexingAdapter, isTrackModel, isTrackViewModel, isUriLocation, isValidTag, isViewContainer, isViewModel, iupacToRegex, linkify, locStringsToRegions, localStorageGetBoolean, localStorageGetItem, localStorageGetJSON, localStorageGetNumber, localStorageRemoveItem, localStorageSetBoolean, localStorageSetItem, localStorageSetJSON, localStorageSetNumber, makeAbortError, makeIndex, makeIndexType, makeTrackId, markStopTokenStopped, matchTrackId, max, maxFinite, measureGridWidth, measureText, mergeIntervals, mergeTrackConfig, min, minmax, normalizeWheelDelta, notEmpty, objectHash, openFeatureWidget, openPromotableDisplays, parseLocString, parseLocStringOneBased, parseMotifList, pluralize, polarToCartesian, progressLabel, rIC, radToDeg, readSessionFromDynamo, reducePrecision, registerStopTokenBroadcaster, renameRegionIfNeeded, renameRegionsIfNeeded, renderToStaticMarkup, reorder, reorderWithin, resolvePlugin, resolveSelectedIds, restoreFileHandles, restoreFileHandlesFromSnapshot, revcom, reverse, reverseComplementIupac, revlist, saveAs, saveSvgAsImage, selectNamedRegions, setBlobMap, setFileInCache, setNumberGrouping, sha256, sha256Base64, sha256Base64Url, shareEndpoint, shorten, shorten2, showTrackGeneric, springAnimate, statusFraction, statusMessageText, statusProgressLabel, statusReading, stitch, stopStopToken, stopTokenSignal, storeBlobLocation, storeFileHandle, storeFileHandleLocation, stringify, stripAlpha, stripFileExtension, stripTrackIds, sum, svgHtmlToPngBlob, tagRegex, testAdapter, toBase64, toBase64Url, toLocale, toUrlSafeB64, toggleTrackGeneric, truncateMiddle, updateStatus, useDebounce, useLocalStorage, useWidthSetter, verifyPermission, wheelFrameElapsedMs, wheelZoomAccum, withProgress, withStopTokenCheck, withStopTokenSignal, } from '../util/index.js';
@@ -1,199 +0,0 @@
1
- import type { TrackConfigChange } from '../util/trackConfigDelta.ts';
2
- import type { Pin } from './promotablePin.ts';
3
- import type { PromotedDefaultStore, ResolvableDisplay } from './promotableResolve.ts';
4
- import type { AnyConfigurationModel, ConfigurationSchemaForModel, ConfigurationSlotName, ConfigurationSlotValueResolved } from './types.ts';
5
- export type { Pin } from './promotablePin.ts';
6
- /**
7
- * #api core/configuration
8
- * Whether this track has customized the slot (holds a non-default value of its
9
- * own) rather than following the display type's default. The correct "reset to
10
- * default" predicate for a promotable slot: comparing the resolved value to the
11
- * base instead reads as at-default for a track merely *following* a non-base
12
- * promoted default, so the reset control lights up on a no-op.
13
- *
14
- * `SLOT` is constrained the way `getConf`'s is. A pin or a reset over a slot
15
- * name the schema does not declare is inert and silent — `resolveSlot` answers
16
- * about nothing, so the control draws outline forever — and a widened `self`
17
- * switches the check off (`HostChecksSlotNames`).
18
- */
19
- export declare function isSlotCustomized<CONFMODEL extends AnyConfigurationModel, SLOT extends ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>>>(self: ResolvableDisplay<CONFMODEL>, slot: SLOT): boolean;
20
- declare const promotablesResolved: unique symbol;
21
- /**
22
- * #api core/configuration
23
- * A display config snapshot whose promotable slots hold RESOLVED values rather
24
- * than the inherit sentinel — what a worker payload has to be built from.
25
- *
26
- * The brand is required and unforgeable, so a plain `Record<string, unknown>`
27
- * is not assignable to it and neither is `getSnapshot(self.configuration)`.
28
- * That is the whole point. Everything downstream of the resolve is an ERASED
29
- * container — a snapshot is `Record<string, unknown>`, and the payload it
30
- * becomes is an `as`-asserted interface — so a payload builder handed the RAW
31
- * snapshot instead typechecks, ships `undefined` for every promotable slot, and
32
- * types it as the resolved value. That was measured, not supposed: the raw
33
- * spelling in `LinearBasicDisplay`'s `rpcProps()` passed `pnpm typecheck` and
34
- * every suite in `plugins/canvas`, `packages/core/src/configuration` and
35
- * `products/jbrowse-web`, while sending the worker `undefined` for chevrons,
36
- * subfeature labels and feature height.
37
- *
38
- * The rest of this subsystem's guarantees are carried by types that stay
39
- * connected to the schema: a raw read of a promotable `maybe*` slot is
40
- * `T | undefined` (see `ConfigurationSlotValue`), so `getConf` where
41
- * `resolveConf` was meant is a compile error at any typed consumer. The brand is
42
- * that guarantee re-established at the point where the connection is cut.
43
- */
44
- export interface ResolvedConfigSnapshot extends Record<string, unknown> {
45
- readonly [promotablesResolved]: true;
46
- }
47
- /**
48
- * #api core/configuration
49
- * The display's full config snapshot with every `promotable`
50
- * slot overwritten by its resolved value in place. For building a worker payload:
51
- * a promotable slot serializes as its raw inherit sentinel (`undefined`, since
52
- * they're all `maybe*` types), which the worker can't interpret — it has no
53
- * session to resolve against. This hands it concrete values instead, with no per-slot
54
- * bookkeeping, so adding a promotable worker-consumed slot needs no rpcProps
55
- * change and can't silently ship a sentinel. Main-thread only (the cascade
56
- * consults the session). Display-only promotable slots the worker never reads
57
- * (e.g. displayMode) are still excluded by the caller — resolving them here is a
58
- * harmless no-op since they're dropped anyway.
59
- *
60
- * The return type is branded (`ResolvedConfigSnapshot`) so a payload builder can
61
- * demand a snapshot that has been through here. The assertion below is the one
62
- * place the brand is applied, and it sits on the line after the resolve.
63
- */
64
- export declare function getConfigSnapshotWithPromotables(self: ResolvableDisplay): ResolvedConfigSnapshot;
65
- /**
66
- * #api core/configuration
67
- * A track config snapshot with every display's `promotable` slots resolved, plus
68
- * the list of values that came from a session-wide default rather than from the
69
- * config itself.
70
- *
71
- * For handing a track's config to somewhere that leaves the cascade for good —
72
- * the About dialog's "Copy config", whose output a user pastes into a
73
- * `config.json`. A raw `getSnapshot` records a slot a track merely *follows* as
74
- * absent (`stripDefault` collapsed it), so the copied config renders differently
75
- * from the track it was copied from. This is `getComputedStyle` at that
76
- * boundary, and `fromDisplayTypeDefaults` is what lets the UI say so rather than
77
- * silently materializing a session preference into a track config.
78
- *
79
- * Resolves from the display *config* alone, whether or not the track is open.
80
- * Everything the cascade takes is on the config node: it is the same node an
81
- * open display's `configuration` points at (the hydration cache makes it
82
- * stable), its `type` is the display type the session-wide tier is keyed on
83
- * (every display schema is `explicitlyTyped` under the display type's own name),
84
- * and the session is passed in. So an unopened track — which has no display
85
- * state at all — still has an answer to "what would this render as", by the same
86
- * code path.
87
- *
88
- * **Writes every promotable slot, including the ones sitting at `promotedBase`,
89
- * and that is the decision — don't "align" it with the share bake.** A pasted
90
- * `config.json` is read by a mechanism with no cascade in it at all, so writing
91
- * only the inherited values would leave every other slot to pick up whatever the
92
- * reader has promoted in their own browser. Pinned by
93
- * `products/jbrowse-web/src/tests/CopyConfigPromotedDefaults.test.ts`.
94
- */
95
- export interface TrackConfigWithPromotables {
96
- config: Record<string, unknown>;
97
- /** `<displayType>.<slot>`, one per value inherited from a promoted default */
98
- fromDisplayTypeDefaults: string[];
99
- }
100
- /**
101
- * #api core/configuration
102
- * See {@link TrackConfigWithPromotables}.
103
- */
104
- export declare function getTrackConfigWithPromotables(session: PromotedDefaultStore, trackConfig: AnyConfigurationModel): TrackConfigWithPromotables;
105
- /**
106
- * Open displays of this display's type, **one entry per track** — the set the
107
- * pin's click writes. Module-internal (exercised by promotableDefaults.test.ts);
108
- * not part of the public barrel.
109
- *
110
- * A track open in two views is two display *models* over one display *config* —
111
- * `TrackConfigurationReference` resolves both through the hydration cache
112
- * (ADR-031) — so the raw walk yields it twice. That is the ordinary case in a
113
- * breakpoint-split view, which shows the same track in both halves and is one of
114
- * the composite shapes `openPromotableDisplays` recurses into. The count reaches
115
- * the user in the snackbar and the set gets written, and both
116
- * go wrong on a duplicate: the toast offered to act on "2 tracks" over a single
117
- * track, and the second write was a no-op against a node the first had already
118
- * set.
119
- *
120
- * Keying on the config node rather than on `trackId` is what keeps this
121
- * cast-free: the node is a member of `ResolvableDisplay`, and within one display
122
- * type it is 1:1 with the track.
123
- */
124
- export declare function openTracksOfType(self: ResolvableDisplay): ResolvableDisplay[];
125
- /**
126
- * Whether `value` is the current session default for `slot`. The live state the
127
- * pin's filled/outline reflects — a session-wide fact, so it reads the raw
128
- * promoted default rather than what this display resolves to (a customized track
129
- * can be showing something else entirely). The named form of the comparison
130
- * {@link makePin} inlines off a resolution it already holds. Module-internal
131
- * (exercised by promotableDefaults.test.ts); not part of the public barrel.
132
- */
133
- export declare function isPromotableDefault(self: ResolvableDisplay, slot: string, value: unknown): boolean;
134
- /**
135
- * Write `value` into each display's own config for `slot`, so the track *holds*
136
- * it rather than resolving it through the cascade. The pin's click, over every
137
- * open track of the display type.
138
- *
139
- * **A track already showing `value` still has to be written**, which is why this
140
- * compares the *stored* value and not the resolved one: a follower stores
141
- * nothing and is showing `value` only by way of some promoted default, so
142
- * skipping it would leave it to move again the moment that default changed.
143
- * Comparing the stored value is also what lets a `jexl:` value answer "is this
144
- * already what we would write?" without being evaluated.
145
- *
146
- * Skips dead displays, since the caller supplies the list and MST throws on any
147
- * read or write to a destroyed node.
148
- */
149
- export declare function applySlotToOpenTracks(displays: ResolvableDisplay[], slot: string, value: unknown): void;
150
- /**
151
- * #api core/configuration
152
- * The pin for one promotable slot: "apply this value to every open track of this
153
- * display type", and — via the snackbar it raises — "keep it as the default for
154
- * the ones opened later".
155
- *
156
- * `value` chooses between the subsystem's two meanings, which are otherwise
157
- * identical:
158
- *
159
- * - **Give it** for a per-value pin — "make *arcs* the default" — independent of
160
- * what the track currently shows. Use on an always-visible pin so it can never
161
- * promote a meaningless value, and so two rows sharing one slot (arcs `'arc'`
162
- * vs read cloud `'cloud'`; sashimi `'down'` vs `'auto'`) stay independent.
163
- * - **Omit it** for "whatever I'm showing", resolved through the cascade. Use for
164
- * a symmetric or continuous setting where no fixed on-value makes sense
165
- * (wiggle point size, arc line width, `mismatchAlpha`).
166
- *
167
- * One function with an optional argument, rather than the two exported builders
168
- * it replaces — a per-value one and a `…CurrentValue…` one, the second of which
169
- * was exactly the first applied to `resolveSlot(self, slot).value`. The pair was
170
- * one function plus a doc section explaining which name to reach for; omitting
171
- * the argument now says what the longer name said.
172
- */
173
- export declare function makePin<CONFMODEL extends AnyConfigurationModel, SLOT extends ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>>>(self: ResolvableDisplay<CONFMODEL>, slot: SLOT, ...value: [] | [
174
- ConfigurationSlotValueResolved<ConfigurationSchemaForModel<CONFMODEL>, SLOT>
175
- ]): Pin;
176
- /**
177
- * #api core/configuration
178
- * Effective differences a track following the default inherits from session-wide
179
- * defaults, one per promotable slot whose inherited value differs from its schema
180
- * default. Drives the track-selector "affected by a session default" badge.
181
- */
182
- export declare function getDisplayTypeDefaultChanges(self: ResolvableDisplay): TrackConfigChange[];
183
- /**
184
- * #api core/configuration
185
- * Clear the named promoted defaults for this display type, so every track
186
- * following one reverts to its own config value. Backs the badge's "clear
187
- * session default" action, which passes the slots it actually listed
188
- * (`getDisplayTypeDefaultChanges`).
189
- *
190
- * **`slots` is required, and an all-slots default is not the convenience it
191
- * looks like.** It reaches further than any list a dialog can have shown: a
192
- * promoted default the track *customized* over, or one promoted to a value
193
- * equal to `promotedBase`, is `inherited: false` and so appears in no row, yet
194
- * still governs sibling tracks — so clearing it from a dialog that never showed
195
- * it moves tracks other than the one whose badge was clicked. Clearing every
196
- * promoted default at once is a preferences-scope action, and Preferences →
197
- * "Reset to defaults" is where it lives (`clearPreferenceOverrides`).
198
- */
199
- export declare function clearPromotedDefaults(self: ResolvableDisplay, slots: Iterable<string>): void;
@@ -1,326 +0,0 @@
1
- /**
2
- * @module
3
- * Session-wide "promoted defaults" for display-type config slots — the UI /
4
- * control layer over the read-time cascade in `promotableResolve.ts`, whose
5
- * `SlotResolution` every function here reads a field off. The session store
6
- * (`get/setDisplayTypeDefault`) holds the promoted value.
7
- */
8
- import { getSnapshot, isAlive } from '@jbrowse/mobx-state-tree';
9
- import { deepEqual } from '../util/deepEqual.js';
10
- import { getSession } from '../util/mstUtils.js';
11
- import { isObject } from '../util/objectUtils.js';
12
- import { openPromotableDisplays } from '../util/openDisplays.js';
13
- import { pluralize } from '../util/stringUtils.js';
14
- import { fullConfSnapshot } from './fullConfSnapshot.js';
15
- import { setConf } from './getConf.js';
16
- import { cascadeContextFor, isPromotableValue, resolveSlot, resolveSlotIn, storedSlotValue, } from './promotableResolve.js';
17
- import { promotableSlotNames } from './promotableSlots.js';
18
- import { isConfigurationModel } from './schemaTypes.js';
19
- /**
20
- * #api core/configuration
21
- * Whether this track has customized the slot (holds a non-default value of its
22
- * own) rather than following the display type's default. The correct "reset to
23
- * default" predicate for a promotable slot: comparing the resolved value to the
24
- * base instead reads as at-default for a track merely *following* a non-base
25
- * promoted default, so the reset control lights up on a no-op.
26
- *
27
- * `SLOT` is constrained the way `getConf`'s is. A pin or a reset over a slot
28
- * name the schema does not declare is inert and silent — `resolveSlot` answers
29
- * about nothing, so the control draws outline forever — and a widened `self`
30
- * switches the check off (`HostChecksSlotNames`).
31
- */
32
- export function isSlotCustomized(self, slot) {
33
- return resolveSlot(self, slot).customized;
34
- }
35
- /**
36
- * #api core/configuration
37
- * The display's full config snapshot with every `promotable`
38
- * slot overwritten by its resolved value in place. For building a worker payload:
39
- * a promotable slot serializes as its raw inherit sentinel (`undefined`, since
40
- * they're all `maybe*` types), which the worker can't interpret — it has no
41
- * session to resolve against. This hands it concrete values instead, with no per-slot
42
- * bookkeeping, so adding a promotable worker-consumed slot needs no rpcProps
43
- * change and can't silently ship a sentinel. Main-thread only (the cascade
44
- * consults the session). Display-only promotable slots the worker never reads
45
- * (e.g. displayMode) are still excluded by the caller — resolving them here is a
46
- * harmless no-op since they're dropped anyway.
47
- *
48
- * The return type is branded (`ResolvedConfigSnapshot`) so a payload builder can
49
- * demand a snapshot that has been through here. The assertion below is the one
50
- * place the brand is applied, and it sits on the line after the resolve.
51
- */
52
- export function getConfigSnapshotWithPromotables(self) {
53
- // the unresolved walk: this is the one place allowed to snapshot a promotable
54
- // config, because `resolvePromotablesInto` is what resolves every such slot
55
- const snap = fullConfSnapshot(self.configuration);
56
- resolvePromotablesInto(cascadeContextFor(self), snap);
57
- return snap;
58
- }
59
- /**
60
- * The subsystem's one resolve loop: every promotable slot of `ctx.config`
61
- * written into `snap` in place, returning the slots whose value came from a
62
- * promoted default rather than from the config. Both serialization boundaries
63
- * are this function over a different context — a display state node for the
64
- * worker payload, a bare display config for the About dialog's copy.
65
- */
66
- function resolvePromotablesInto(ctx, snap) {
67
- const inherited = [];
68
- for (const slot of promotableSlotNames(ctx.config)) {
69
- const res = resolveSlotIn(ctx, slot);
70
- snap[slot] = res.value;
71
- if (res.inherited) {
72
- inherited.push(slot);
73
- }
74
- }
75
- return inherited;
76
- }
77
- /**
78
- * #api core/configuration
79
- * See {@link TrackConfigWithPromotables}.
80
- */
81
- export function getTrackConfigWithPromotables(session, trackConfig) {
82
- const config = structuredClone(getSnapshot(trackConfig));
83
- const fromDisplayTypeDefaults = [];
84
- const displayConfigs = trackConfig.displays;
85
- const displaySnaps = config.displays;
86
- // a config with no `displays` (an assembly, a plain customized About config)
87
- // has no promotable slot to resolve — every one of them is display-level
88
- if (Array.isArray(displayConfigs) && Array.isArray(displaySnaps)) {
89
- for (const [i, displayConfig] of displayConfigs.entries()) {
90
- const snap = displaySnaps[i];
91
- if (!isConfigurationModel(displayConfig) || !isObject(snap)) {
92
- continue;
93
- }
94
- // off the live config node, not off `snap` — the snapshot is what this
95
- // function *writes*, so the key it resolves against shouldn't depend on
96
- // what survived `stripDefault` on the way out. A display schema is
97
- // `explicitlyTyped`, so the node always carries `type`; reading the
98
- // snapshot's copy meant a display whose `type` ever stopped being emitted
99
- // got skipped whole, and a skipped display is a copied config that
100
- // silently isn't flattened. Same source `cascadeContextFor` reads.
101
- const displayType = displayConfig.type;
102
- if (typeof displayType === 'string') {
103
- const ctx = { config: displayConfig, displayType, defaults: session };
104
- for (const slot of resolvePromotablesInto(ctx, snap)) {
105
- fromDisplayTypeDefaults.push(`${displayType}.${slot}`);
106
- }
107
- }
108
- }
109
- }
110
- return { config, fromDisplayTypeDefaults };
111
- }
112
- /**
113
- * Open displays of this display's type, **one entry per track** — the set the
114
- * pin's click writes. Module-internal (exercised by promotableDefaults.test.ts);
115
- * not part of the public barrel.
116
- *
117
- * A track open in two views is two display *models* over one display *config* —
118
- * `TrackConfigurationReference` resolves both through the hydration cache
119
- * (ADR-031) — so the raw walk yields it twice. That is the ordinary case in a
120
- * breakpoint-split view, which shows the same track in both halves and is one of
121
- * the composite shapes `openPromotableDisplays` recurses into. The count reaches
122
- * the user in the snackbar and the set gets written, and both
123
- * go wrong on a duplicate: the toast offered to act on "2 tracks" over a single
124
- * track, and the second write was a no-op against a node the first had already
125
- * set.
126
- *
127
- * Keying on the config node rather than on `trackId` is what keeps this
128
- * cast-free: the node is a member of `ResolvableDisplay`, and within one display
129
- * type it is 1:1 with the track.
130
- */
131
- export function openTracksOfType(self) {
132
- // seeded with the clicked display so it is in the set by construction rather
133
- // than by the walk happening to reach it. A display the walk misses used to
134
- // cost nothing — the click wrote only the session default — and would now be
135
- // the whole of the click. A duplicate from the walk lands on the same config
136
- // key, so this adds no entry.
137
- const byTrack = new Map([
138
- [self.configuration, self],
139
- ]);
140
- for (const display of openPromotableDisplays(getSession(self))) {
141
- if (display.type === self.type) {
142
- byTrack.set(display.configuration, display);
143
- }
144
- }
145
- return [...byTrack.values()];
146
- }
147
- /**
148
- * Whether `value` is the current session default for `slot`. The live state the
149
- * pin's filled/outline reflects — a session-wide fact, so it reads the raw
150
- * promoted default rather than what this display resolves to (a customized track
151
- * can be showing something else entirely). The named form of the comparison
152
- * {@link makePin} inlines off a resolution it already holds. Module-internal
153
- * (exercised by promotableDefaults.test.ts); not part of the public barrel.
154
- */
155
- export function isPromotableDefault(self, slot, value) {
156
- return deepEqual(resolveSlot(self, slot).promoted, value);
157
- }
158
- /**
159
- * Write `value` into each display's own config for `slot`, so the track *holds*
160
- * it rather than resolving it through the cascade. The pin's click, over every
161
- * open track of the display type.
162
- *
163
- * **A track already showing `value` still has to be written**, which is why this
164
- * compares the *stored* value and not the resolved one: a follower stores
165
- * nothing and is showing `value` only by way of some promoted default, so
166
- * skipping it would leave it to move again the moment that default changed.
167
- * Comparing the stored value is also what lets a `jexl:` value answer "is this
168
- * already what we would write?" without being evaluated.
169
- *
170
- * Skips dead displays, since the caller supplies the list and MST throws on any
171
- * read or write to a destroyed node.
172
- */
173
- export function applySlotToOpenTracks(displays, slot, value) {
174
- for (const display of displays.filter(display => isAlive(display))) {
175
- if (!deepEqual(storedSlotValue(display.configuration, slot), value)) {
176
- setConf(display, slot, value);
177
- }
178
- }
179
- }
180
- /**
181
- * The pin's click. Two branches, chosen by whether this value is *already* the
182
- * display type's promoted default:
183
- *
184
- * - **It isn't** — write `value` into every open track of the type, and offer
185
- * the promotion as a snackbar action. Applying to the tracks in front of the
186
- * user is the click they mean far more often, so it is the one that needs no
187
- * second click; a default outlives the tracks it was set for and governs every
188
- * track of the type opened later, so it is the escalation (ADR-048).
189
- * - **It is** — clear it, touching no track. The open tracks hold their values
190
- * because the user applied them, so reverting them here would make a toggle
191
- * into a bulk discard.
192
- *
193
- * The apply is one operation over *every* open track, not a labeled pair over
194
- * the tracks that differ and the tracks that follow. Overwriting a customized
195
- * track is the same write as filling in a follower, and the distinction the two
196
- * actions drew is not one the user has any reason to see.
197
- *
198
- * The snackbar outlives the click that raised it, so the promotion re-derives
199
- * `self`'s liveness inside `onClick` rather than closing over a decision —
200
- * ADR-048 has the ways that goes wrong.
201
- */
202
- function applyPinClick(self, slot, value, isDefault) {
203
- const session = getSession(self);
204
- if (isDefault) {
205
- session.setDisplayTypeDefault(self.type, slot, undefined);
206
- session.notify('Cleared the default', 'info');
207
- }
208
- else {
209
- const open = openTracksOfType(self);
210
- applySlotToOpenTracks(open, slot, value);
211
- session.notify(`Applied to ${open.length} open ${pluralize(open.length, 'track')}`, 'info', {
212
- name: 'Set as the default',
213
- onClick: () => {
214
- if (isAlive(self)) {
215
- session.setDisplayTypeDefault(self.type, slot, value);
216
- }
217
- },
218
- });
219
- }
220
- }
221
- /**
222
- * #api core/configuration
223
- * The pin for one promotable slot: "apply this value to every open track of this
224
- * display type", and — via the snackbar it raises — "keep it as the default for
225
- * the ones opened later".
226
- *
227
- * `value` chooses between the subsystem's two meanings, which are otherwise
228
- * identical:
229
- *
230
- * - **Give it** for a per-value pin — "make *arcs* the default" — independent of
231
- * what the track currently shows. Use on an always-visible pin so it can never
232
- * promote a meaningless value, and so two rows sharing one slot (arcs `'arc'`
233
- * vs read cloud `'cloud'`; sashimi `'down'` vs `'auto'`) stay independent.
234
- * - **Omit it** for "whatever I'm showing", resolved through the cascade. Use for
235
- * a symmetric or continuous setting where no fixed on-value makes sense
236
- * (wiggle point size, arc line width, `mismatchAlpha`).
237
- *
238
- * One function with an optional argument, rather than the two exported builders
239
- * it replaces — a per-value one and a `…CurrentValue…` one, the second of which
240
- * was exactly the first applied to `resolveSlot(self, slot).value`. The pair was
241
- * one function plus a doc section explaining which name to reach for; omitting
242
- * the argument now says what the longer name said.
243
- */
244
- export function makePin(self, slot, ...value) {
245
- // One walk of the cascade feeds both halves. The value-omitted form's
246
- // on-value IS the settled value, and `active` compares against the raw
247
- // promoted default of that same resolution — taking the two from separate
248
- // `resolveSlot` calls read as though they could disagree, and cost a second
249
- // walk per pin on a menu that builds a dozen of them.
250
- const res = resolveSlot(self, slot);
251
- // rest-tuple, not `value?: unknown`: the promote-current case has to stay
252
- // distinguishable from an explicit `undefined` rather than collapsing into it.
253
- const onValue = value.length ? value[0] : res.value;
254
- // The value-omitted form can't fail this — the cascade only ever settles on a
255
- // usable value — so this is entirely about a caller-supplied one. An on-value
256
- // the cascade would refuse builds a pin that is inert *and* silent: clicking
257
- // it stores a key `resolveSlotIn` then drops, so no track moves and the pin
258
- // draws outline forever. The reachable mistakes are the inherit sentinel
259
- // itself (`makePin(self, slot, undefined)`, which additionally reads as the
260
- // default the moment nothing is promoted, so it draws *filled* and does
261
- // nothing), a non-finite number, and a value outside a `maybeStringEnum`'s
262
- // vocabulary. The `value` parameter's type catches those wherever the slot
263
- // resolves to a real value type; what is left for runtime is the slot whose
264
- // schema widened to `any` — a `frozen`/`maybeFrozen` one by design, or a
265
- // display whose config model was not narrowed. Same bargain `ConfigSlot`
266
- // strikes over `promotedBase`, which is this gate at the other end.
267
- if (!isPromotableValue(self.configuration, slot, onValue)) {
268
- throw new Error(`cannot pin ${JSON.stringify(onValue)} as the default for config slot "${slot}": the cascade refuses it, so the pin could never light up`);
269
- }
270
- // `isPromotableDefault` off the resolution already in hand — same comparison,
271
- // same `deepEqual`, no second walk.
272
- const active = deepEqual(res.promoted, onValue);
273
- return {
274
- slot,
275
- onValue,
276
- active,
277
- toggle: () => {
278
- applyPinClick(self, slot, onValue, active);
279
- },
280
- };
281
- }
282
- /**
283
- * #api core/configuration
284
- * Effective differences a track following the default inherits from session-wide
285
- * defaults, one per promotable slot whose inherited value differs from its schema
286
- * default. Drives the track-selector "affected by a session default" badge.
287
- */
288
- export function getDisplayTypeDefaultChanges(self) {
289
- const changes = [];
290
- for (const slot of promotableSlotNames(self.configuration)) {
291
- const res = resolveSlot(self, slot);
292
- if (res.inherited) {
293
- changes.push({
294
- path: [slot],
295
- // a cascade value is `unknown` here but JSON by contract — it has to
296
- // survive `postMessage` to a worker. Asserted per field rather than on
297
- // the whole entry, so `path` stays type-checked.
298
- from: res.base,
299
- to: res.value,
300
- });
301
- }
302
- }
303
- return changes;
304
- }
305
- /**
306
- * #api core/configuration
307
- * Clear the named promoted defaults for this display type, so every track
308
- * following one reverts to its own config value. Backs the badge's "clear
309
- * session default" action, which passes the slots it actually listed
310
- * (`getDisplayTypeDefaultChanges`).
311
- *
312
- * **`slots` is required, and an all-slots default is not the convenience it
313
- * looks like.** It reaches further than any list a dialog can have shown: a
314
- * promoted default the track *customized* over, or one promoted to a value
315
- * equal to `promotedBase`, is `inherited: false` and so appears in no row, yet
316
- * still governs sibling tracks — so clearing it from a dialog that never showed
317
- * it moves tracks other than the one whose badge was clicked. Clearing every
318
- * promoted default at once is a preferences-scope action, and Preferences →
319
- * "Reset to defaults" is where it lives (`clearPreferenceOverrides`).
320
- */
321
- export function clearPromotedDefaults(self, slots) {
322
- const session = getSession(self);
323
- for (const slot of slots) {
324
- session.setDisplayTypeDefault(self.type, slot, undefined);
325
- }
326
- }
@@ -1,55 +0,0 @@
1
- /**
2
- * #api core/configuration
3
- * The "apply this to every open track of this type" affordance on a menu row —
4
- * the trailing `PushPin`, bundled so the row consumes it as one prop. Built by
5
- * {@link makePin}.
6
- *
7
- * `active` = this value is currently the session default (a filled pin), which
8
- * is the state, not the click. `toggle` **applies the value to every open track
9
- * of the display type** and raises a snackbar whose one action promotes it to
10
- * the display type's default; on an already-promoted value it clears that
11
- * default instead, touching no track (see `applyPinClick`).
12
- *
13
- * **`toggle` rather than an `apply`/`clear` pair**, which was tried and dropped:
14
- * the sole renderer is a MUI `ToggleButton` whose `onChange` means exactly
15
- * "flip", so splitting it adds a member *and* a branch at the one call site that
16
- * never needed one. `active` is already public for a caller that wants to state a
17
- * direction. (The house preference for explicit setters over toggles is about MST
18
- * actions, where a toggle destroys the ability to set a known state; nothing here
19
- * stores a value.)
20
- *
21
- * Lives here, alone and with no imports, rather than beside `makePin` in
22
- * `promotableDefaults.ts`: the menu types describe a pin without building one,
23
- * and `MenuTypes.ts` taking this one interface from that module gave a
24
- * React-free type file a type closure of 374 files. See
25
- * `agent-docs/ideas/barrels-block-extraction.md` and `scripts/moduleClosure.ts`.
26
- */
27
- export interface Pin {
28
- /**
29
- * The promotable slot this pin promotes a value of. Nothing in the UI reads
30
- * it — a pin renders from `active`, `onValue` and the toggle. It is here so a
31
- * *built menu* can be asked which promotable slots it offers a pin for, which
32
- * is the only way that question has an answer: declaring `promotedBase` is a
33
- * schema fact and the pin is a menu fact, and a display that inherits the slot
34
- * but never builds a row has a slot nothing can ever promote, silently
35
- * (`promotableSlotsWithoutPin`, guarded by
36
- * `products/jbrowse-web/src/tests/PromotablePinCoverage.test.ts`).
37
- */
38
- slot: string;
39
- /**
40
- * The value `toggle` promotes — the on-value {@link makePin} was given, or the
41
- * track's current resolved value for the value-omitted form.
42
- *
43
- * `PinAdornment` words itself from this, and has to: a **boolean** on-value
44
- * promotes a *state*, so a row whose label names the setting rather than a
45
- * value ("Show legend") gets a pin that promotes hiding the legend as often as
46
- * showing it. Every other on-value IS what the row's label says — a radio
47
- * option, a slider's current size — so those keep the value-shaped copy.
48
- *
49
- * Required, like `slot`: a pin that cannot say what it promotes is what let
50
- * that copy state the opposite of what the click does.
51
- */
52
- onValue: unknown;
53
- active: boolean;
54
- toggle: () => void;
55
- }
@@ -1 +0,0 @@
1
- export {};