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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (637) hide show
  1. package/README.md +1709 -390
  2. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +3 -2
  3. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +5 -5
  4. package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +3 -5
  5. package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +34 -29
  6. package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +1 -4
  7. package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +11 -0
  8. package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +37 -14
  9. package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
  10. package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +15 -31
  11. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +4 -3
  12. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +12 -25
  13. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.d.ts +11 -0
  14. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.js +11 -0
  15. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.d.ts +8 -0
  16. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.js +24 -0
  17. package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +6 -4
  18. package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.d.ts +4 -0
  19. package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.js +17 -0
  20. package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +3 -2
  21. package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +5 -3
  22. package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +6 -2
  23. package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +7 -18
  24. package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.d.ts +16 -0
  25. package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.js +49 -0
  26. package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +0 -8
  27. package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +6 -29
  28. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +7 -34
  29. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +2 -2
  30. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.js +2 -2
  31. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +3 -1
  32. package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +12 -0
  33. package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +12 -5
  34. package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.js +8 -5
  35. package/esm/BaseFeatureWidget/configSchema.d.ts +1 -1
  36. package/esm/BaseFeatureWidget/formatDetails.d.ts +13 -29
  37. package/esm/BaseFeatureWidget/formatDetails.js +62 -83
  38. package/esm/BaseFeatureWidget/index.d.ts +2 -1
  39. package/esm/BaseFeatureWidget/stateModelFactory.d.ts +42 -29
  40. package/esm/BaseFeatureWidget/stateModelFactory.js +98 -98
  41. package/esm/BaseFeatureWidget/types.d.ts +12 -6
  42. package/esm/BaseFeatureWidget/util.d.ts +0 -10
  43. package/esm/BaseFeatureWidget/util.js +0 -17
  44. package/esm/CorePlugin.js +34 -3
  45. package/esm/PluginLoader.d.ts +24 -13
  46. package/esm/PluginLoader.js +167 -51
  47. package/esm/PluginManager.d.ts +130 -24
  48. package/esm/PluginManager.js +180 -32
  49. package/esm/ReExports/MuiDataGridReExports.d.ts +1 -0
  50. package/esm/ReExports/MuiDataGridReExports.js +2 -2
  51. package/esm/ReExports/coreModules.generated.d.ts +2 -0
  52. package/esm/ReExports/coreModules.generated.js +530 -0
  53. package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
  54. package/esm/ReExports/coreWorkerModules.generated.js +490 -0
  55. package/esm/ReExports/frameworkModules.d.ts +2 -0
  56. package/esm/ReExports/frameworkModules.js +68 -0
  57. package/esm/ReExports/frameworkShared.d.ts +12 -0
  58. package/esm/ReExports/frameworkShared.js +16 -0
  59. package/esm/ReExports/frameworkWorkerModules.generated.d.ts +2 -0
  60. package/esm/ReExports/frameworkWorkerModules.generated.js +130 -0
  61. package/esm/ReExports/list.js +528 -79
  62. package/esm/ReExports/modules.d.ts +1 -1
  63. package/esm/ReExports/modules.js +10 -165
  64. package/esm/ReExports/registry.d.ts +1 -0
  65. package/esm/ReExports/registry.js +23 -5
  66. package/esm/ReExports/uiStub.d.ts +3 -0
  67. package/esm/ReExports/uiStub.js +33 -0
  68. package/esm/ReExports/workerModules.d.ts +2 -0
  69. package/esm/ReExports/workerModules.js +11 -0
  70. package/esm/TextSearch/TextSearchManager.d.ts +27 -13
  71. package/esm/TextSearch/TextSearchManager.js +77 -36
  72. package/esm/TextSearch/places.d.ts +12 -0
  73. package/esm/TextSearch/places.js +94 -0
  74. package/esm/assemblyManager/assembly.d.ts +21 -19
  75. package/esm/assemblyManager/assembly.js +28 -26
  76. package/esm/assemblyManager/assemblyAdapters.d.ts +1 -1
  77. package/esm/assemblyManager/assemblyAdapters.js +8 -2
  78. package/esm/assemblyManager/assemblyConfigSchema.d.ts +31 -90
  79. package/esm/assemblyManager/assemblyConfigSchema.js +35 -47
  80. package/esm/assemblyManager/assemblyManager.d.ts +35 -180
  81. package/esm/assemblyManager/assemblyManager.js +47 -51
  82. package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +25 -18
  83. package/esm/assemblyManager/expandAssemblyConfigShorthand.js +78 -49
  84. package/esm/assemblyManager/geneticCodes.js +2 -5
  85. package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +10 -0
  86. package/esm/assemblyManager/getSequenceAdapterConfig.js +10 -0
  87. package/esm/assemblyManager/indexAssemblyNames.d.ts +9 -0
  88. package/esm/assemblyManager/indexAssemblyNames.js +22 -0
  89. package/esm/assemblyManager/loadRefNameMap.d.ts +1 -1
  90. package/esm/assemblyManager/loadRefNameMap.js +4 -9
  91. package/esm/assemblyManager/refNameMapKey.d.ts +7 -0
  92. package/esm/assemblyManager/refNameMapKey.js +12 -0
  93. package/esm/checkPlugins.d.ts +2 -0
  94. package/esm/checkPlugins.js +38 -17
  95. package/esm/configuration/bamIndexFields.d.ts +49 -0
  96. package/esm/configuration/bamIndexFields.js +41 -0
  97. package/esm/configuration/configurationSchema.d.ts +101 -71
  98. package/esm/configuration/configurationSchema.js +207 -134
  99. package/esm/configuration/configurationSchemaUnion.d.ts +39 -0
  100. package/esm/configuration/configurationSchemaUnion.js +56 -0
  101. package/esm/configuration/configurationSlot.d.ts +150 -60
  102. package/esm/configuration/configurationSlot.js +103 -75
  103. package/esm/configuration/fillLocations.d.ts +14 -0
  104. package/esm/configuration/fillLocations.js +14 -0
  105. package/esm/configuration/formatAboutConfigSchema.d.ts +7 -21
  106. package/esm/configuration/formatDetailsConfigSchema.d.ts +11 -37
  107. package/esm/configuration/formatDetailsConfigSchema.js +10 -13
  108. package/esm/configuration/fullConfSnapshot.d.ts +4 -19
  109. package/esm/configuration/fullConfSnapshot.js +30 -52
  110. package/esm/configuration/getConf.d.ts +45 -41
  111. package/esm/configuration/getConf.js +111 -44
  112. package/esm/configuration/index.d.ts +26 -11
  113. package/esm/configuration/index.js +16 -7
  114. package/esm/configuration/indexType.d.ts +26 -0
  115. package/esm/configuration/indexType.js +38 -0
  116. package/esm/configuration/mergeFormatCallbacks.d.ts +6 -7
  117. package/esm/configuration/mergeFormatCallbacks.js +13 -10
  118. package/esm/configuration/plot.d.ts +61 -0
  119. package/esm/configuration/plot.js +142 -0
  120. package/esm/configuration/readConfObject.d.ts +2 -24
  121. package/esm/configuration/readConfObject.js +20 -63
  122. package/esm/configuration/requirements.d.ts +37 -0
  123. package/esm/configuration/requirements.js +88 -0
  124. package/esm/configuration/schemaRegistry.d.ts +32 -15
  125. package/esm/configuration/schemaRegistry.js +33 -35
  126. package/esm/configuration/schemaTypes.d.ts +21 -5
  127. package/esm/configuration/schemaTypes.js +66 -55
  128. package/esm/configuration/slotFacade.d.ts +12 -29
  129. package/esm/configuration/slotFacade.js +44 -23
  130. package/esm/configuration/snapshotPreprocess.d.ts +43 -0
  131. package/esm/configuration/snapshotPreprocess.js +161 -0
  132. package/esm/configuration/tabixIndexFields.d.ts +30 -4
  133. package/esm/configuration/tabixIndexFields.js +21 -4
  134. package/esm/configuration/tabixShorthand.d.ts +34 -17
  135. package/esm/configuration/tabixShorthand.js +49 -22
  136. package/esm/configuration/types.d.ts +182 -43
  137. package/esm/configuration/uriShorthand.d.ts +9 -0
  138. package/esm/configuration/uriShorthand.js +16 -0
  139. package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +13 -19
  140. package/esm/data_adapters/BaseAdapter/BaseAdapter.js +12 -19
  141. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +40 -2
  142. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +68 -5
  143. package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +40 -0
  144. package/esm/data_adapters/BaseAdapter/featureDensity.js +31 -0
  145. package/esm/data_adapters/BaseAdapter/index.d.ts +23 -3
  146. package/esm/data_adapters/BaseAdapter/index.js +1 -0
  147. package/esm/data_adapters/BaseAdapter/rowSources.d.ts +37 -0
  148. package/esm/data_adapters/BaseAdapter/rowSources.js +7 -0
  149. package/esm/data_adapters/BaseAdapter/stats.d.ts +33 -1
  150. package/esm/data_adapters/BaseAdapter/stats.js +52 -13
  151. package/esm/data_adapters/BaseAdapter/types.d.ts +8 -12
  152. package/esm/data_adapters/BaseAdapter/zoomRange.d.ts +10 -0
  153. package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +1 -1
  154. package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +7 -11
  155. package/esm/data_adapters/CytobandAdapter/configSchema.js +3 -17
  156. package/esm/data_adapters/dataAdapterCache.d.ts +19 -2
  157. package/esm/data_adapters/dataAdapterCache.js +44 -10
  158. package/esm/data_adapters/getFeatureAdapter.d.ts +6 -4
  159. package/esm/data_adapters/getFeatureAdapter.js +8 -8
  160. package/esm/data_adapters/getSequenceSubAdapter.d.ts +7 -9
  161. package/esm/data_adapters/getSequenceSubAdapter.js +8 -10
  162. package/esm/pluggableElementTypes/AdapterType.d.ts +8 -8
  163. package/esm/pluggableElementTypes/AdapterType.js +1 -1
  164. package/esm/pluggableElementTypes/DisplayType.d.ts +53 -16
  165. package/esm/pluggableElementTypes/DisplayType.js +28 -12
  166. package/esm/pluggableElementTypes/LazyStateModelElement.d.ts +32 -0
  167. package/esm/pluggableElementTypes/LazyStateModelElement.js +77 -0
  168. package/esm/pluggableElementTypes/PluggableElementBase.d.ts +3 -5
  169. package/esm/pluggableElementTypes/PluggableElementBase.js +3 -5
  170. package/esm/pluggableElementTypes/RpcMethodType.d.ts +11 -1
  171. package/esm/pluggableElementTypes/RpcMethodType.js +25 -9
  172. package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +1 -2
  173. package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +7 -7
  174. package/esm/pluggableElementTypes/ViewType.d.ts +20 -4
  175. package/esm/pluggableElementTypes/ViewType.js +32 -4
  176. package/esm/pluggableElementTypes/WidgetType.d.ts +6 -0
  177. package/esm/pluggableElementTypes/WidgetType.js +6 -0
  178. package/esm/pluggableElementTypes/addMenuItems.d.ts +3 -2
  179. package/esm/pluggableElementTypes/extendElementType.d.ts +1 -2
  180. package/esm/pluggableElementTypes/extendElementType.js +9 -5
  181. package/esm/pluggableElementTypes/index.d.ts +2 -1
  182. package/esm/pluggableElementTypes/index.js +2 -9
  183. package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +19 -9
  184. package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +122 -28
  185. package/esm/pluggableElementTypes/models/BaseDisplayModel.js +155 -11
  186. package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +65 -16
  187. package/esm/pluggableElementTypes/models/BaseTrackModel.js +179 -117
  188. package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +87 -18
  189. package/esm/pluggableElementTypes/models/BaseViewModel.js +54 -11
  190. package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +26 -16
  191. package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +15 -11
  192. package/esm/pluggableElementTypes/models/assertDisplayContract.js +25 -32
  193. package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -18
  194. package/esm/pluggableElementTypes/models/baseConnectionConfig.js +5 -5
  195. package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +26 -31
  196. package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +108 -147
  197. package/esm/pluggableElementTypes/models/baseTrackConfig.js +96 -73
  198. package/esm/pluggableElementTypes/models/components/SaveTrackData.js +4 -6
  199. package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +3 -4
  200. package/esm/pluggableElementTypes/models/components/fetchTrackData.js +3 -3
  201. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +23 -13
  202. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +80 -48
  203. package/esm/pluggableElementTypes/models/index.d.ts +2 -3
  204. package/esm/pluggableElementTypes/models/index.js +2 -3
  205. package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +15 -1
  206. package/esm/pluggableElementTypes/models/migrateTrackConfig.js +85 -25
  207. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +4 -3
  208. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +141 -19
  209. package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +3 -3
  210. package/esm/pluginDefinitions.d.ts +34 -7
  211. package/esm/pluginDefinitions.js +54 -20
  212. package/esm/rpc/BaseRpcDriver.d.ts +2 -2
  213. package/esm/rpc/BaseRpcDriver.js +25 -30
  214. package/esm/rpc/MainThreadRpcDriver.d.ts +2 -2
  215. package/esm/rpc/MainThreadRpcDriver.js +13 -8
  216. package/esm/rpc/RpcClient.d.ts +18 -6
  217. package/esm/rpc/RpcClient.js +51 -16
  218. package/esm/rpc/RpcManager.d.ts +14 -10
  219. package/esm/rpc/RpcManager.js +11 -1
  220. package/esm/rpc/RpcRegistry.d.ts +40 -7
  221. package/esm/rpc/RpcServer.d.ts +3 -1
  222. package/esm/rpc/RpcServer.js +19 -12
  223. package/esm/rpc/WebWorkerRpcDriver.d.ts +11 -4
  224. package/esm/rpc/WebWorkerRpcDriver.js +64 -68
  225. package/esm/rpc/byteBudget.d.ts +20 -5
  226. package/esm/rpc/byteBudget.js +16 -5
  227. package/esm/rpc/configSchema.d.ts +7 -21
  228. package/esm/rpc/coreRpcMethods.d.ts +4 -0
  229. package/esm/rpc/coreRpcMethods.js +4 -0
  230. package/esm/rpc/methods/CoreGetEncodedFeature.d.ts +13 -0
  231. package/esm/rpc/methods/CoreGetEncodedFeature.js +32 -0
  232. package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +16 -0
  233. package/esm/rpc/methods/CoreGetEncodedLayers.js +59 -0
  234. package/esm/rpc/methods/CoreGetExportData.js +3 -4
  235. package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
  236. package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
  237. package/esm/rpc/methods/CoreGetFeatures.js +3 -5
  238. package/esm/rpc/methods/CoreGetRefNames.js +2 -12
  239. package/esm/rpc/methods/CoreGetRegionByteEstimate.js +1 -1
  240. package/esm/rpc/methods/CoreGetSequence.js +2 -2
  241. package/esm/rpc/methods/CoreLoadAdapterCode.d.ts +13 -0
  242. package/esm/rpc/methods/CoreLoadAdapterCode.js +16 -0
  243. package/esm/rpc/methods/layerFeatures.d.ts +33 -0
  244. package/esm/rpc/methods/layerFeatures.js +29 -0
  245. package/esm/svg/SvgExport.js +6 -7
  246. package/esm/svg/SvgThemeProviders.d.ts +12 -0
  247. package/esm/svg/SvgThemeProviders.js +15 -0
  248. package/esm/svg/exportViewSvg.d.ts +28 -0
  249. package/esm/svg/exportViewSvg.js +13 -0
  250. package/esm/svg/normalizeSvgMarkup.d.ts +7 -0
  251. package/esm/svg/normalizeSvgMarkup.js +99 -0
  252. package/esm/svg/serializeSvg.d.ts +7 -0
  253. package/esm/svg/serializeSvg.js +11 -0
  254. package/esm/svg/svgId.d.ts +1 -1
  255. package/esm/svg/svgId.js +1 -1
  256. package/esm/svg/svgReady.d.ts +9 -7
  257. package/esm/svg/svgReady.js +8 -7
  258. package/esm/svg/trackNames.d.ts +7 -5
  259. package/esm/svg/trackNames.js +12 -9
  260. package/esm/svg/wrapSvgExport.js +6 -74
  261. package/esm/ui/AddCustomPluginDialog.js +3 -8
  262. package/esm/ui/AppReadyMarker.d.ts +45 -0
  263. package/esm/ui/AppReadyMarker.js +89 -0
  264. package/esm/ui/BaseExportSvgDialog.d.ts +1 -1
  265. package/esm/ui/CascadingMenu.js +181 -104
  266. package/esm/ui/DropDownMenu.js +2 -1
  267. package/esm/ui/ErrorBanner.js +1 -1
  268. package/esm/ui/ErrorBoundary.d.ts +2 -2
  269. package/esm/ui/ErrorMessageStackTraceContents.js +2 -1
  270. package/esm/ui/ErrorMessageStackTraceDialog.js +5 -11
  271. package/esm/ui/ExportSvgDialog.d.ts +1 -1
  272. package/esm/ui/FileDropZone.js +2 -1
  273. package/esm/ui/FileSelector/useInternetAccounts.d.ts +156 -96
  274. package/esm/ui/HoverMenu.d.ts +1 -2
  275. package/esm/ui/HoverMenu.js +6 -3
  276. package/esm/ui/JexlFilterDialog.d.ts +13 -10
  277. package/esm/ui/JexlFilterDialog.js +122 -50
  278. package/esm/ui/JexlFilterRowEditors.d.ts +15 -0
  279. package/esm/ui/JexlFilterRowEditors.js +90 -0
  280. package/esm/ui/LazyBaseTooltip.d.ts +4 -0
  281. package/esm/ui/LazyBaseTooltip.js +9 -0
  282. package/esm/ui/LegendSwatchGlyph.js +26 -21
  283. package/esm/ui/LoadingOverlay.d.ts +14 -0
  284. package/esm/ui/LoadingOverlay.js +4 -2
  285. package/esm/ui/MenuTypes.d.ts +23 -53
  286. package/esm/ui/MenuTypes.js +3 -0
  287. package/esm/ui/MonospaceTextField.d.ts +2 -1
  288. package/esm/ui/MonospaceTextField.js +23 -20
  289. package/esm/ui/PaletteContext.d.ts +10 -5
  290. package/esm/ui/PaletteContext.js +44 -6
  291. package/esm/ui/RefNameAutocomplete/SearchOption.d.ts +13 -0
  292. package/esm/ui/RefNameAutocomplete/SearchOption.js +45 -0
  293. package/esm/ui/RefNameAutocomplete/index.d.ts +1 -2
  294. package/esm/ui/RefNameAutocomplete/index.js +8 -2
  295. package/esm/ui/RefNameAutocomplete/util.d.ts +13 -0
  296. package/esm/ui/RefNameAutocomplete/util.js +42 -1
  297. package/esm/ui/ResizeHandle.d.ts +3 -1
  298. package/esm/ui/ResizeHandle.js +44 -11
  299. package/esm/ui/ScrollChrome.d.ts +13 -0
  300. package/esm/ui/ScrollChrome.js +11 -0
  301. package/esm/ui/ScrollEdgeShadow.d.ts +6 -9
  302. package/esm/ui/ScrollEdgeShadow.js +14 -35
  303. package/esm/ui/ScrollZoomToggle.d.ts +4 -27
  304. package/esm/ui/ScrollZoomToggle.js +34 -51
  305. package/esm/ui/SessionJsonPanel.d.ts +3 -0
  306. package/esm/ui/SessionJsonPanel.js +14 -0
  307. package/esm/ui/SettingsChangesTable.d.ts +1 -0
  308. package/esm/ui/SettingsChangesTable.js +49 -11
  309. package/esm/ui/ShareLinkField.d.ts +1 -3
  310. package/esm/ui/ShareLinkField.js +13 -40
  311. package/esm/ui/SizeSliderRow.d.ts +1 -3
  312. package/esm/ui/SizeSliderRow.js +4 -6
  313. package/esm/ui/SnackbarModel.js +79 -67
  314. package/esm/ui/StatusProgressBar.js +2 -2
  315. package/esm/ui/SvgColorLegend.d.ts +9 -4
  316. package/esm/ui/SvgColorLegend.js +82 -41
  317. package/esm/ui/VerticalScrollbar.d.ts +13 -34
  318. package/esm/ui/VerticalScrollbar.js +29 -83
  319. package/esm/ui/ViewLoadingScreen.d.ts +5 -4
  320. package/esm/ui/ViewLoadingScreen.js +8 -32
  321. package/esm/ui/colorScale.d.ts +92 -0
  322. package/esm/ui/colorScale.js +72 -0
  323. package/esm/ui/colors.d.ts +64 -0
  324. package/esm/ui/colors.js +230 -1
  325. package/esm/ui/hoverBoxStyle.d.ts +14 -2
  326. package/esm/ui/hoverBoxStyle.js +17 -2
  327. package/esm/ui/index.d.ts +12 -12
  328. package/esm/ui/index.js +14 -22
  329. package/esm/ui/launchViewMenu.js +15 -5
  330. package/esm/ui/legendMenuItem.d.ts +10 -32
  331. package/esm/ui/legendMenuItem.js +9 -36
  332. package/esm/ui/legendSpec.d.ts +15 -8
  333. package/esm/ui/legendSpec.js +14 -23
  334. package/esm/ui/makeSizeMenu.d.ts +0 -6
  335. package/esm/ui/makeSizeMenu.js +6 -30
  336. package/esm/ui/measureLegendText.js +1 -1
  337. package/esm/ui/menuItemAdornment.d.ts +9 -20
  338. package/esm/ui/menuItemAdornment.js +10 -32
  339. package/esm/ui/menuItems.d.ts +2 -7
  340. package/esm/ui/menuItems.js +1 -6
  341. package/esm/ui/multiTrackMenuItems.d.ts +6 -0
  342. package/esm/ui/palette.d.ts +118 -116
  343. package/esm/ui/palette.js +114 -75
  344. package/esm/ui/replaceViewAction.d.ts +1 -1
  345. package/esm/ui/replaceViewAction.js +1 -1
  346. package/esm/ui/theme.d.ts +43 -119
  347. package/esm/ui/theme.js +62 -78
  348. package/esm/ui/toggleMenuItems.d.ts +1 -3
  349. package/esm/ui/toggleMenuItems.js +6 -5
  350. package/esm/ui/useAssemblySelection.d.ts +4 -4
  351. package/esm/ui/viewHeaderHeight.d.ts +1 -0
  352. package/esm/ui/viewHeaderHeight.js +1 -0
  353. package/esm/util/Base1DUtils.d.ts +5 -3
  354. package/esm/util/Base1DUtils.js +14 -6
  355. package/esm/util/Base1DViewModel.d.ts +2 -1
  356. package/esm/util/Base1DViewModel.js +3 -2
  357. package/esm/util/SvgCanvas.d.ts +15 -13
  358. package/esm/util/SvgCanvas.js +76 -56
  359. package/esm/util/TimeTraveller.d.ts +3 -0
  360. package/esm/util/TimeTraveller.js +34 -2
  361. package/esm/util/aborting.d.ts +39 -0
  362. package/esm/util/aborting.js +88 -6
  363. package/esm/util/adapterMetadata.d.ts +1 -1
  364. package/esm/util/adapterMetadata.js +6 -5
  365. package/esm/util/addAndShowTrack.d.ts +2 -5
  366. package/esm/util/addAndShowTrack.js +5 -1
  367. package/esm/util/addRelativeUris.d.ts +17 -5
  368. package/esm/util/addRelativeUris.js +46 -10
  369. package/esm/util/addTrackFromWidget.d.ts +2 -5
  370. package/esm/util/addTrackFromWidget.js +5 -4
  371. package/esm/util/aggregateFieldName.d.ts +10 -0
  372. package/esm/util/aggregateFieldName.js +8 -0
  373. package/esm/util/analytics.js +46 -13
  374. package/esm/util/animationAllowed.d.ts +9 -0
  375. package/esm/util/animationAllowed.js +13 -0
  376. package/esm/util/applyRowResizeWheel.d.ts +10 -5
  377. package/esm/util/applyRowResizeWheel.js +10 -21
  378. package/esm/util/bandHeight.d.ts +10 -0
  379. package/esm/util/bandHeight.js +29 -0
  380. package/esm/util/bandLayout.d.ts +4 -4
  381. package/esm/util/bandLayout.js +4 -4
  382. package/esm/util/baseDisplayConfig.d.ts +8 -0
  383. package/esm/util/baseDisplayConfig.js +27 -0
  384. package/esm/util/bezierConnector.d.ts +4 -3
  385. package/esm/util/bezierConnector.js +38 -45
  386. package/esm/util/bgzfWorkerPool.d.ts +20 -74
  387. package/esm/util/bgzfWorkerPool.js +20 -74
  388. package/esm/util/binnedAggregate.d.ts +17 -0
  389. package/esm/util/binnedAggregate.js +275 -0
  390. package/esm/util/cacheBudgets.d.ts +22 -19
  391. package/esm/util/cacheBudgets.js +22 -19
  392. package/esm/util/cachedSetup.d.ts +16 -6
  393. package/esm/util/cachedSetup.js +108 -38
  394. package/esm/util/categoricalField.d.ts +56 -0
  395. package/esm/util/categoricalField.js +73 -0
  396. package/esm/util/cellMatches.d.ts +23 -0
  397. package/esm/util/cellMatches.js +264 -0
  398. package/esm/util/cellsStep.d.ts +29 -0
  399. package/esm/util/cellsStep.js +437 -0
  400. package/esm/util/clampToContig.d.ts +17 -0
  401. package/esm/util/clampToContig.js +19 -0
  402. package/esm/util/coarseStripHTML.js +1 -2
  403. package/esm/util/color/cssColorsLevel4.d.ts +1 -0
  404. package/esm/util/color/cssColorsLevel4.js +1 -0
  405. package/esm/util/color/index.d.ts +5 -3
  406. package/esm/util/color/index.js +7 -4
  407. package/esm/util/colorBits.d.ts +3 -3
  408. package/esm/util/colorBits.js +19 -44
  409. package/esm/util/colorRamp.d.ts +49 -5
  410. package/esm/util/colorRamp.js +169 -18
  411. package/esm/util/colorScale.d.ts +156 -0
  412. package/esm/util/colorScale.js +243 -0
  413. package/esm/util/colorSchemes.d.ts +21 -0
  414. package/esm/util/colorSchemes.js +30 -0
  415. package/esm/util/copyToClipboard.js +8 -1
  416. package/esm/util/{createStopTokenRotation.d.ts → createAbortRotation.d.ts} +21 -23
  417. package/esm/util/{createStopTokenRotation.js → createAbortRotation.js} +21 -52
  418. package/esm/util/createSvgRasterCanvas.d.ts +10 -0
  419. package/esm/util/cssColorParse.d.ts +15 -0
  420. package/esm/util/cssColorParse.js +53 -0
  421. package/esm/util/diagonalizeRegions.d.ts +2 -3
  422. package/esm/util/diagonalizeRegions.js +8 -13
  423. package/esm/util/expandLooseSearchIndex.d.ts +19 -0
  424. package/esm/util/expandLooseSearchIndex.js +29 -0
  425. package/esm/util/featureTable.d.ts +224 -0
  426. package/esm/util/featureTable.js +366 -0
  427. package/esm/util/featureTransforms.d.ts +81 -0
  428. package/esm/util/featureTransforms.js +1231 -0
  429. package/esm/util/featureTypes.d.ts +24 -0
  430. package/esm/util/featureTypes.js +35 -0
  431. package/esm/util/fetchAndMaybeUnzip.js +16 -9
  432. package/esm/util/fetchContext.d.ts +7 -8
  433. package/esm/util/fetchContext.js +3 -3
  434. package/esm/util/fetchHub.d.ts +4 -2
  435. package/esm/util/fetchHub.js +2 -2
  436. package/esm/util/fetchPhases.d.ts +10 -10
  437. package/esm/util/fetchSeq.d.ts +2 -3
  438. package/esm/util/fetchSeq.js +2 -2
  439. package/esm/util/fieldReader.d.ts +17 -0
  440. package/esm/util/fieldReader.js +62 -0
  441. package/esm/util/formatBytes.js +1 -1
  442. package/esm/util/formatGuessers.d.ts +25 -14
  443. package/esm/util/formatGuessers.js +42 -27
  444. package/esm/util/formatRelativeTime.js +1 -1
  445. package/esm/util/freezeDeep.d.ts +8 -10
  446. package/esm/util/freezeDeep.js +8 -10
  447. package/esm/util/getLocationUri.d.ts +2 -1
  448. package/esm/util/getLocationUri.js +8 -2
  449. package/esm/util/groupKeys.d.ts +76 -0
  450. package/esm/util/groupKeys.js +156 -0
  451. package/esm/util/highlights.d.ts +10 -6
  452. package/esm/util/highlights.js +12 -25
  453. package/esm/util/hooks.d.ts +31 -2
  454. package/esm/util/hooks.js +72 -3
  455. package/esm/util/index.d.ts +11 -11
  456. package/esm/util/index.js +11 -10
  457. package/esm/util/indexCandidates.d.ts +1 -31
  458. package/esm/util/indexCandidates.js +5 -63
  459. package/esm/util/installFetch.d.ts +77 -37
  460. package/esm/util/installFetch.js +65 -38
  461. package/esm/util/installInitAutorun.d.ts +14 -13
  462. package/esm/util/installInitAutorun.js +17 -17
  463. package/esm/util/installPrerequisiteFetch.d.ts +115 -0
  464. package/esm/util/installPrerequisiteFetch.js +111 -0
  465. package/esm/util/intervals.js +9 -4
  466. package/esm/util/io/index.js +22 -15
  467. package/esm/util/isDataCurrent.d.ts +7 -5
  468. package/esm/util/isDataCurrent.js +9 -6
  469. package/esm/util/isTextEntryFocused.d.ts +7 -0
  470. package/esm/util/isTextEntryFocused.js +16 -0
  471. package/esm/util/jexl.js +24 -21
  472. package/esm/util/jexlFilterRows.d.ts +89 -0
  473. package/esm/util/jexlFilterRows.js +252 -0
  474. package/esm/util/jexlFilters.d.ts +32 -57
  475. package/esm/util/jexlFilters.js +31 -29
  476. package/esm/util/jexlStrings.d.ts +3 -4
  477. package/esm/util/jexlStrings.js +2 -3
  478. package/esm/util/layouts/GranularRectLayout.d.ts +8 -1
  479. package/esm/util/layouts/GranularRectLayout.js +25 -8
  480. package/esm/util/lazyAfterAttach.d.ts +13 -0
  481. package/esm/util/lazyAfterAttach.js +31 -0
  482. package/esm/util/lazyWithPreload.d.ts +19 -0
  483. package/esm/util/lazyWithPreload.js +27 -0
  484. package/esm/util/legendCandidates.d.ts +72 -0
  485. package/esm/util/legendCandidates.js +138 -0
  486. package/esm/util/locString.js +5 -2
  487. package/esm/util/localStorage.js +4 -4
  488. package/esm/util/markEncoding.d.ts +150 -0
  489. package/esm/util/markEncoding.js +885 -0
  490. package/esm/util/markEncodingTypes.d.ts +595 -0
  491. package/esm/util/markEncodingTypes.js +8 -0
  492. package/esm/util/mst-reflection.d.ts +2 -20
  493. package/esm/util/mst-reflection.js +3 -53
  494. package/esm/util/mstUtils.d.ts +31 -23
  495. package/esm/util/mstUtils.js +39 -24
  496. package/esm/util/numericUtils.d.ts +7 -0
  497. package/esm/util/numericUtils.js +16 -0
  498. package/esm/util/numericValue.d.ts +14 -0
  499. package/esm/util/numericValue.js +34 -0
  500. package/esm/util/openFeatureWidget.d.ts +5 -0
  501. package/esm/util/openFeatureWidget.js +2 -2
  502. package/esm/util/openViews.d.ts +17 -0
  503. package/esm/util/openViews.js +22 -0
  504. package/esm/util/parentWalk.d.ts +1 -1
  505. package/esm/util/parentWalk.js +1 -1
  506. package/esm/util/parseLineByLine.d.ts +4 -5
  507. package/esm/util/parseLineByLine.js +8 -14
  508. package/esm/util/pluginStore.d.ts +6 -8
  509. package/esm/util/pluginStore.js +17 -16
  510. package/esm/util/preloadComponent.d.ts +5 -0
  511. package/esm/util/preloadComponent.js +11 -0
  512. package/esm/util/progress.d.ts +22 -22
  513. package/esm/util/progress.js +27 -26
  514. package/esm/util/quantileExtent.d.ts +49 -0
  515. package/esm/util/quantileExtent.js +162 -0
  516. package/esm/util/range.d.ts +13 -9
  517. package/esm/util/range.js +17 -8
  518. package/esm/util/renameRegions.d.ts +26 -6
  519. package/esm/util/renameRegions.js +68 -54
  520. package/esm/util/renderToStaticMarkup.js +24 -14
  521. package/esm/util/rxjs.d.ts +23 -8
  522. package/esm/util/rxjs.js +61 -15
  523. package/esm/util/samplesTsv.d.ts +49 -0
  524. package/esm/util/samplesTsv.js +86 -0
  525. package/esm/util/scheduleDetachedDestroy.d.ts +18 -0
  526. package/esm/util/scheduleDetachedDestroy.js +24 -0
  527. package/esm/util/scrollLatch.d.ts +1 -0
  528. package/esm/util/scrollLatch.js +8 -0
  529. package/esm/util/selectEncodedFeature.d.ts +16 -0
  530. package/esm/util/selectEncodedFeature.js +34 -0
  531. package/esm/util/sessionSharing.d.ts +7 -5
  532. package/esm/util/sessionSharing.js +23 -23
  533. package/esm/util/shapeNameList.d.ts +2 -0
  534. package/esm/util/shapeNameList.js +6 -0
  535. package/esm/util/shapeNames.d.ts +7 -0
  536. package/esm/util/shapeNames.js +11 -0
  537. package/esm/util/simpleFeature.d.ts +0 -1
  538. package/esm/util/springAnimate.js +1 -1
  539. package/esm/util/starFusion.d.ts +26 -0
  540. package/esm/util/starFusion.js +37 -0
  541. package/esm/util/stepTables.d.ts +96 -0
  542. package/esm/util/stepTables.js +277 -0
  543. package/esm/util/svAlt.d.ts +145 -0
  544. package/esm/util/svAlt.js +364 -0
  545. package/esm/util/svgColorProps.d.ts +11 -0
  546. package/esm/util/svgColorProps.js +28 -1
  547. package/esm/util/systemColorScheme.d.ts +12 -0
  548. package/esm/util/systemColorScheme.js +27 -0
  549. package/esm/util/tabix.d.ts +19 -10
  550. package/esm/util/tabix.js +19 -14
  551. package/esm/util/thresholdScale.d.ts +91 -0
  552. package/esm/util/thresholdScale.js +166 -0
  553. package/esm/util/timeGate.d.ts +4 -5
  554. package/esm/util/timeGate.js +4 -5
  555. package/esm/util/trackConfigDelta.d.ts +26 -26
  556. package/esm/util/trackConfigDelta.js +63 -47
  557. package/esm/util/tracks.d.ts +120 -66
  558. package/esm/util/tracks.js +501 -151
  559. package/esm/util/translateTranscript.d.ts +44 -0
  560. package/esm/util/translateTranscript.js +102 -0
  561. package/esm/util/types/data.d.ts +0 -2
  562. package/esm/util/types/index.d.ts +121 -22
  563. package/esm/util/types/index.js +9 -0
  564. package/esm/util/types/mst.d.ts +3 -0
  565. package/esm/util/types/mst.js +4 -0
  566. package/esm/util/types/renameIds.d.ts +1 -0
  567. package/esm/util/types/renameIds.js +29 -0
  568. package/esm/util/types/services.d.ts +1 -1
  569. package/esm/util/unknownSnapshotKeys.d.ts +53 -0
  570. package/esm/util/unknownSnapshotKeys.js +76 -0
  571. package/esm/util/useFeatureSequence.js +5 -5
  572. package/esm/util/useFetch.d.ts +3 -4
  573. package/esm/util/useFetch.js +19 -10
  574. package/esm/util/useFetchPlugins.d.ts +6 -2
  575. package/esm/util/useFetchPlugins.js +7 -3
  576. package/esm/util/usePanZoom.js +10 -3
  577. package/esm/util/usePanelVirtualScroll.d.ts +7 -35
  578. package/esm/util/usePanelVirtualScroll.js +9 -36
  579. package/esm/util/useRafCommit.js +1 -0
  580. package/esm/util/useRowVirtualScroll.d.ts +6 -29
  581. package/esm/util/useRowVirtualScroll.js +8 -49
  582. package/esm/util/useVirtualScrollWheel.d.ts +20 -4
  583. package/esm/util/useVirtualScrollWheel.js +40 -74
  584. package/esm/util/viewHighlights.d.ts +3 -0
  585. package/esm/util/viewHighlights.js +5 -0
  586. package/esm/util/viewStatus.d.ts +47 -15
  587. package/esm/util/viewStatus.js +34 -0
  588. package/esm/util/wheelZoom.d.ts +7 -1
  589. package/esm/util/wheelZoom.js +85 -19
  590. package/esm/util/whenViewSettled.d.ts +55 -8
  591. package/esm/util/whenViewSettled.js +56 -7
  592. package/esm/util/withFeatureDetails.js +4 -0
  593. package/esm/util/withLaunchInput.d.ts +174 -0
  594. package/esm/util/withLaunchInput.js +274 -0
  595. package/package.json +75 -24
  596. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +0 -2
  597. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +0 -8
  598. package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +0 -8
  599. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +0 -80
  600. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.js +0 -583
  601. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +0 -141
  602. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.js +0 -1116
  603. package/esm/ReExports/BaseFeatureDetails.d.ts +0 -1
  604. package/esm/ReExports/BaseFeatureDetails.js +0 -10
  605. package/esm/ReExports/index.d.ts +0 -1
  606. package/esm/ReExports/index.js +0 -1
  607. package/esm/ReExports/publicUtil.d.ts +0 -1
  608. package/esm/ReExports/publicUtil.js +0 -28
  609. package/esm/configuration/promotableDefaults.d.ts +0 -199
  610. package/esm/configuration/promotableDefaults.js +0 -326
  611. package/esm/configuration/promotablePin.d.ts +0 -55
  612. package/esm/configuration/promotablePin.js +0 -1
  613. package/esm/configuration/promotableResolve.d.ts +0 -108
  614. package/esm/configuration/promotableResolve.js +0 -117
  615. package/esm/configuration/promotableSlots.d.ts +0 -12
  616. package/esm/configuration/promotableSlots.js +0 -45
  617. package/esm/configuration/slotShape.d.ts +0 -12
  618. package/esm/configuration/slotShape.js +0 -84
  619. package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +0 -51
  620. package/esm/pluggableElementTypes/models/HighlightsMixin.js +0 -78
  621. package/esm/ui/PinAdornment.d.ts +0 -5
  622. package/esm/ui/PinAdornment.js +0 -79
  623. package/esm/ui/SvgGradientLegend.d.ts +0 -26
  624. package/esm/ui/SvgGradientLegend.js +0 -26
  625. package/esm/ui/highlightChipReveal.d.ts +0 -32
  626. package/esm/ui/highlightChipReveal.js +0 -39
  627. package/esm/ui/promotableMenuItems.d.ts +0 -19
  628. package/esm/ui/promotableMenuItems.js +0 -89
  629. package/esm/ui/promotablePinCoverage.d.ts +0 -44
  630. package/esm/ui/promotablePinCoverage.js +0 -87
  631. package/esm/util/applyInitSettings.d.ts +0 -79
  632. package/esm/util/applyInitSettings.js +0 -91
  633. package/esm/util/openDisplays.d.ts +0 -23
  634. package/esm/util/openDisplays.js +0 -79
  635. package/esm/util/stopToken.d.ts +0 -211
  636. package/esm/util/stopToken.js +0 -438
  637. /package/esm/{BaseFeatureWidget/BaseFeatureDetail/types.js → data_adapters/BaseAdapter/zoomRange.js} +0 -0
@@ -1,108 +0,0 @@
1
- import type { AnyConfigurationModel } from './types.ts';
2
- import type { IStateTreeNode } from '@jbrowse/mobx-state-tree';
3
- /**
4
- * Everything the cascade needs to read a promotable slot: the display type it
5
- * keys the session-wide default on, and the config holding the track's own
6
- * value. Every entry point takes this — `resolveConf`, the control builders,
7
- * the worker snapshot, the badge diff — so each can take a display state node
8
- * directly rather than through a cast.
9
- *
10
- * Read-only, and there is no write-capable variant. A `PromotableDisplay` used
11
- * to exist for the one member the subsystem wrote (`setIgnorePromotedDefaults`,
12
- * the received-session opt-out); with that flag gone the subsystem writes
13
- * nothing to a display but a config slot, which `setConf` reaches through
14
- * `configuration`.
15
- *
16
- * **`CONF` is a parameter rather than always `AnyConfigurationModel` because
17
- * intersecting is not narrowing.** A caller wanting the cascade's members *and*
18
- * a concrete schema — a mixin casting to reach its host — writes
19
- * `ResolvableDisplay<XConfigModel>`. Spelling it
20
- * `ResolvableDisplay & { configuration: XConfigModel }` instead reads identical
21
- * and silently does the opposite: the intersected `configuration` is
22
- * `AnyConfigurationModel & XConfigModel`, `ConfigurationSchemaForModel` infers
23
- * the widened brand off it, and every slot name typechecks again. Two mixins
24
- * shipped that spelling and only a sabotage found it.
25
- */
26
- export type ResolvableDisplay<CONF extends AnyConfigurationModel = AnyConfigurationModel> = IStateTreeNode & {
27
- type: string;
28
- configuration: CONF;
29
- };
30
- /**
31
- * Where the session-wide tier of the cascade is read from. Narrowed to the one
32
- * method so the resolver doesn't depend on the whole session type — and exported
33
- * for the same reason, so an entry point taking the store directly
34
- * (`getTrackConfigWithPromotables`) can ask for what it uses instead of for a
35
- * whole session a test then has to fake.
36
- */
37
- export interface PromotedDefaultStore {
38
- getDisplayTypeDefault: (displayType: string, slot: string) => unknown;
39
- }
40
- /**
41
- * The cascade's inputs, stated directly rather than read off a display state
42
- * node. `ResolvableDisplay` is the usual way to supply them (see
43
- * `cascadeContextFor`), but nothing here *needs* a state node: the About
44
- * dialog's "Copy config" resolves a track's display configs directly, which is
45
- * what lets it answer "what would this render as" for a track that was never
46
- * opened. Reaching for the open display instead buys nothing — its
47
- * `configuration` is the same node, and its `type` is that config's own.
48
- */
49
- export interface CascadeContext {
50
- config: AnyConfigurationModel;
51
- displayType: string;
52
- defaults: PromotedDefaultStore;
53
- }
54
- export declare function cascadeContextFor(self: ResolvableDisplay): CascadeContext;
55
- /**
56
- * What the slot literally holds, unevaluated — a stray `jexl:` string yields the
57
- * raw string rather than running it. Both callers ask "is the slot set, and to
58
- * what kind of thing?", which has to be answerable with no feature context.
59
- *
60
- * Deliberately not `readConfObject`: for a promotable slot this is the whole
61
- * stored read, and both of that reader's extra behaviors are unwanted here — it
62
- * evaluates a `jexl:` string (which `isUsableValue` refuses anyway) and it
63
- * snapshots an MST-node value, which a `maybe*` slot never holds.
64
- */
65
- export declare function storedSlotValue(config: AnyConfigurationModel, slot: string): unknown;
66
- /**
67
- * Whether `value` could actually become this slot's promoted default — the same
68
- * `isUsableValue` gate the cascade puts both tiers through, asked ahead of time
69
- * about a value a caller is about to offer as a pin's on-value.
70
- *
71
- * Exists because a pin built over a value the gate refuses is inert in a way
72
- * nothing reports: `applyDefaultToggle` writes it to the session store happily,
73
- * `resolveSlotIn` then drops it and every track keeps resolving to the tier
74
- * below, and `isPromotableDefault` compares the *raw* stored value, so the pin
75
- * draws outline forever while a dead key sits in the user's localStorage. See
76
- * `makePin`, which is the one caller.
77
- */
78
- export declare function isPromotableValue(config: AnyConfigurationModel, slot: string, value: unknown): boolean;
79
- /**
80
- * The outcome of walking the cascade for one slot: the two tiers that fed it,
81
- * whether the track customized it, and the settled value.
82
- *
83
- * There is deliberately **no callback case** — a `jexl:` value fails
84
- * `isUsableValue` like any other unusable value and degrades to the inherited
85
- * one, so `value` is always readable. See `isUsableValue`.
86
- */
87
- export interface SlotResolution {
88
- /** value a track following the default shows with nothing promoted (CSS `initial`) */
89
- base: unknown;
90
- /** the raw session-wide promoted default, if any */
91
- promoted: unknown;
92
- /** track holds its own value rather than following the default */
93
- customized: boolean;
94
- /**
95
- * the value came from the session-wide tier — the track follows the default
96
- * *and* that default moves it off `base`. The "this display picked something
97
- * up from the session" predicate, for the badge diff and the About dialog's
98
- * copy-config note. A field rather than a `!customized && !deepEqual(value,
99
- * base)` at each call site, because getting either half wrong is silent:
100
- * dropping `customized` reports a customized track as inheriting, dropping
101
- * the `base` compare flags a promoted default that changes nothing.
102
- */
103
- inherited: boolean;
104
- /** the final cascaded value (never the `undefined` inherit sentinel) */
105
- value: unknown;
106
- }
107
- export declare function resolveSlot(self: ResolvableDisplay, slot: string): SlotResolution;
108
- export declare function resolveSlotIn(ctx: CascadeContext, slot: string): SlotResolution;
@@ -1,117 +0,0 @@
1
- /**
2
- * @module
3
- * The read-time resolver behind `promotable` config slots — a small CSS cascade
4
- * for one slot: the track's own set value -> the session-wide default for its
5
- * display type -> the slot's `promotedBase`. `resolveSlotIn` is the whole of it;
6
- * `resolveConf` and the control builders in `promotableDefaults.ts` each read a
7
- * field off the `SlotResolution` it returns.
8
- *
9
- * Mechanism: `agent-docs/reference/DISPLAY_TYPE_DEFAULTS.md`. Two decisions this
10
- * file rests on: resolution is named at its call sites rather than folded into
11
- * `getConf` (ADR-046), and unset is the only inherit sentinel — so declaring
12
- * `promotedBase` is what makes a slot promotable (ADR-047, enforced by
13
- * `ConfigSlot`).
14
- *
15
- * Every comparison against a promoted or base value is `deepEqual`, never `===`:
16
- * an object-valued slot (`maybeFrozen`, e.g. alignments `colorBy`) reconstructs a
17
- * fresh value out of MST that is never `===` its stored twin, so `===` would read
18
- * it as permanently differing and no pin would ever light up.
19
- *
20
- * The gate a candidate value passes to count at all is `isUsableValue`, in
21
- * `slotShape.ts` — shared with `ConfigSlot`, which applies it to `promotedBase`
22
- * at construction so the tier this file falls back to is usable by construction.
23
- */
24
- import { deepEqual } from '../util/deepEqual.js';
25
- import { getSession } from '../util/mstUtils.js';
26
- import { getSlotDefinition } from './slotFacade.js';
27
- import { isUsableValue } from './slotShape.js';
28
- export function cascadeContextFor(self) {
29
- return {
30
- config: self.configuration,
31
- displayType: self.type,
32
- defaults: getSession(self),
33
- };
34
- }
35
- /**
36
- * What the slot literally holds, unevaluated — a stray `jexl:` string yields the
37
- * raw string rather than running it. Both callers ask "is the slot set, and to
38
- * what kind of thing?", which has to be answerable with no feature context.
39
- *
40
- * Deliberately not `readConfObject`: for a promotable slot this is the whole
41
- * stored read, and both of that reader's extra behaviors are unwanted here — it
42
- * evaluates a `jexl:` string (which `isUsableValue` refuses anyway) and it
43
- * snapshots an MST-node value, which a `maybe*` slot never holds.
44
- */
45
- export function storedSlotValue(config, slot) {
46
- return config[slot];
47
- }
48
- /**
49
- * Whether `value` could actually become this slot's promoted default — the same
50
- * `isUsableValue` gate the cascade puts both tiers through, asked ahead of time
51
- * about a value a caller is about to offer as a pin's on-value.
52
- *
53
- * Exists because a pin built over a value the gate refuses is inert in a way
54
- * nothing reports: `applyDefaultToggle` writes it to the session store happily,
55
- * `resolveSlotIn` then drops it and every track keeps resolving to the tier
56
- * below, and `isPromotableDefault` compares the *raw* stored value, so the pin
57
- * draws outline forever while a dead key sits in the user's localStorage. See
58
- * `makePin`, which is the one caller.
59
- */
60
- export function isPromotableValue(config, slot, value) {
61
- return isUsableValue(getSlotDefinition(config, slot), value);
62
- }
63
- // The whole three-tier cascade for one slot, in one place. `resolveConf` is the
64
- // public reader over it, and the control builders in `promotableDefaults.ts`
65
- // read a field off it.
66
- export function resolveSlot(self, slot) {
67
- return resolveSlotIn(cascadeContextFor(self), slot);
68
- }
69
- // The cascade over explicit inputs. `resolveSlot` is the display-state spelling
70
- // of this and the one nearly every consumer wants; the direct form exists for
71
- // the config-only path (a track that isn't open has no display state — see
72
- // `CascadeContext`).
73
- export function resolveSlotIn(ctx, slot) {
74
- const def = getSlotDefinition(ctx.config, slot);
75
- // A plain slot would otherwise resolve silently wrong here — with no
76
- // `promotedBase` every tier collapses to `undefined` — and, through a control
77
- // builder, write a promoted default nothing ever reads. `getSlotDefinition`
78
- // already throws on a slot name that doesn't exist at all.
79
- //
80
- // Declaring `promotedBase` is what makes a slot promotable, so its absence is
81
- // the whole test; there is no separate flag that could disagree with it.
82
- if (def.promotedBase === undefined) {
83
- throw new Error(`config slot "${slot}" is not promotable`);
84
- }
85
- // the slot's CSS `initial`
86
- const base = def.promotedBase;
87
- // a session-wide fact, and `isPromotableDefault` (the pin's filled/outline
88
- // state) reports on the session, not on one display's view of it
89
- const promoted = ctx.defaults.getDisplayTypeDefault(ctx.displayType, slot);
90
- const own = storedSlotValue(ctx.config, slot);
91
- // A track is customized exactly when it holds a *usable* value — being unset
92
- // is the inherit sentinel, so "set to something the slot could hold" is the
93
- // whole test. Routing `own` through the same gate as a promoted default is
94
- // what makes a malformed or stale own value (a saved `colorBy` naming a
95
- // since-removed scheme) read as not-customized and degrade in lockstep,
96
- // instead of reaching a consumer that trusts every value it sees.
97
- const customized = isUsableValue(def, own);
98
- const inheritedValue = isUsableValue(def, promoted) ? promoted : base;
99
- // A customized value wins unconditionally, which is what makes the share bake
100
- // sufficient on its own: a baked value lands in the track's config, so the
101
- // recipient reads it as customized and their own promoted default never gets
102
- // consulted. The one case a bake cannot cover is the sender sitting at `base`
103
- // while the recipient has promoted something — nothing is baked (the value
104
- // *is* base, and `stripDefault` drops it from the snapshot), so the recipient
105
- // resolves it from their own cascade. That is accepted: a promoted default is
106
- // personal and local, exactly like the theme a session is viewed in, and the
107
- // alternative was a per-display `ignorePromotedDefaults` flag that also
108
- // detached received tracks from the recipient's own pins for good.
109
- const value = customized ? own : inheritedValue;
110
- return {
111
- base,
112
- customized,
113
- promoted,
114
- inherited: !customized && !deepEqual(value, base),
115
- value,
116
- };
117
- }
@@ -1,12 +0,0 @@
1
- import type { AnyConfigurationModel } from './types.ts';
2
- import type { IAnyType } from '@jbrowse/mobx-state-tree';
3
- /**
4
- * Takes a live config node *or* the schema type itself, for the reason
5
- * `getConfigurationSchemaDefinition` does: every resolver here holds a node,
6
- * while a caller enumerating registered display types
7
- * (`displayTypesWithPromotableSlots`) holds only `DisplayType.configSchema` and
8
- * has nothing to create a node from. Caching under whichever handle it was
9
- * given is safe — a schema registers both its outer `stripDefault` wrapper and
10
- * its inner model against the same slot table, so the two entries agree.
11
- */
12
- export declare function promotableSlotNames(configOrType: AnyConfigurationModel | IAnyType): ReadonlySet<string>;
@@ -1,45 +0,0 @@
1
- import { getType, isType } from '@jbrowse/mobx-state-tree';
2
- import { getConfigurationSchemaDefinition } from './schemaRegistry.js';
3
- import { isSlotDefinitionEntry } from './schemaTypes.js';
4
- // The `promotable` slot names of one config schema (includes slots inherited via
5
- // baseConfiguration — merged into the table at construction), cached by MST type
6
- // since a schema's slot table is fixed.
7
- //
8
- // Only the functions that genuinely *enumerate* promotable slots call this — the
9
- // worker-payload resolver, the badge diff, "clear every default", and
10
- // `assertNoPromotableSlots`. It is deliberately NOT on any read path:
11
- // `getConf` used to consult it on all ~1300 config reads in the repo to decide
12
- // whether to cascade, which cost a `getType` per read (measured at ~60% overhead
13
- // over `readConfObject`) to serve the ~15 promotable ones. `resolveConf` names
14
- // the cascade at the call site instead, so there is nothing to look up.
15
- //
16
- // Its own module, and a leaf one, because `ui/promotablePinCoverage.ts` wants
17
- // the slot names and nothing else: reaching them through a module that also held
18
- // `readConfObject` pulled jexl and the whole read path into the ui graph. See the
19
- // note on that export in `ui/index.ts`.
20
- const promotableSlotsByType = new WeakMap();
21
- /**
22
- * Takes a live config node *or* the schema type itself, for the reason
23
- * `getConfigurationSchemaDefinition` does: every resolver here holds a node,
24
- * while a caller enumerating registered display types
25
- * (`displayTypesWithPromotableSlots`) holds only `DisplayType.configSchema` and
26
- * has nothing to create a node from. Caching under whichever handle it was
27
- * given is safe — a schema registers both its outer `stripDefault` wrapper and
28
- * its inner model against the same slot table, so the two entries agree.
29
- */
30
- export function promotableSlotNames(configOrType) {
31
- const type = isType(configOrType) ? configOrType : getType(configOrType);
32
- const cached = promotableSlotsByType.get(type);
33
- if (cached) {
34
- return cached;
35
- }
36
- const names = new Set();
37
- const table = getConfigurationSchemaDefinition(configOrType);
38
- for (const [name, def] of Object.entries(table ?? {})) {
39
- if (isSlotDefinitionEntry(def) && def.promotedBase !== undefined) {
40
- names.add(name);
41
- }
42
- }
43
- promotableSlotsByType.set(type, names);
44
- return names;
45
- }
@@ -1,12 +0,0 @@
1
- import type { ConfigSlotDefinition } from './configurationSlot.ts';
2
- /**
3
- * Whether a stored value could really be a value of this slot. An unusable value
4
- * is dropped by the cascade, so the getter, the pin and the badge all fall back
5
- * in lockstep.
6
- *
7
- * The `jexl:` check is the only place the subsystem handles a callback, and it
8
- * handles it by refusing it — a hand-edited config or default store is untyped,
9
- * and a callback string would otherwise reach a renderer as a literal value.
10
- * DISPLAY_TYPE_DEFAULTS.md §"No callbacks".
11
- */
12
- export declare function isUsableValue(def: ConfigSlotDefinition, value: unknown): boolean;
@@ -1,84 +0,0 @@
1
- /**
2
- * @module
3
- * The one gate a candidate value for a `promotable` slot has to pass. Shared,
4
- * deliberately, by the two places that ask the question:
5
- *
6
- * - `promotableResolve.ts` at read time, for both cascade tiers — a session-wide
7
- * promoted default and a track's own value out of an untyped saved snapshot;
8
- * - `configurationSlot.ts` at construction, for the slot's own `promotedBase`.
9
- *
10
- * One implementation is what makes "the base is always a usable value" true by
11
- * construction rather than assumed: the resolver falls back to `promotedBase`
12
- * whenever a tier fails this gate, so a base that would itself fail has nowhere
13
- * left to fall.
14
- */
15
- import { getEnumerationValues } from '../util/mst-reflection.js';
16
- import { isCallbackValue } from './slotValueUtils.js';
17
- // Per-slot-type JS shape checks, for the slot types whose value needs more than
18
- // a `typeof` against `promotedBase`. Only the `maybe*` types appear, because
19
- // `ConfigSlot` rejects a `promotedBase` on anything else and this table is only
20
- // ever consulted for a promotable slot. Any type absent here (`maybeBoolean`,
21
- // `maybeColor`, `maybeFrozen`) falls through to the `promotedBase`-derived check
22
- // in `matchesSlotShape`.
23
- const SHAPE_CHECKS = {
24
- // a bare `typeof value === 'number'` would admit `NaN`/`±Infinity`, which no
25
- // slot legitimately holds
26
- maybeNumber: value => Number.isFinite(value),
27
- // a `maybeStringEnum` with no `model` can't be membership-checked; reject
28
- // rather than admit any string. `def.model` is the author's plain enumeration
29
- // (ConfigSlot adds the nullability), so this reads the real vocabulary.
30
- maybeStringEnum: (value, def) => !!def.model &&
31
- typeof value === 'string' &&
32
- getEnumerationValues(def.model).includes(value),
33
- };
34
- /**
35
- * Whether `value` has a JS shape this slot could hold. Guards the untyped
36
- * session store / saved snapshot against garbage; not a full validation
37
- * (`validate` layers semantics on top).
38
- *
39
- * Module-private on purpose: `isUsableValue` is the gate, and this is only one
40
- * of its four checks. A caller reaching for the shape test alone would skip the
41
- * `jexl:` refusal and the slot's `validate` hook — the two checks that exist
42
- * precisely because a shape-valid value can still be unusable.
43
- *
44
- * Keyed off `promotedBase` because that is the only concrete specimen of the
45
- * slot's value space a promotable slot declares — `defaultValue` is always the
46
- * inherit sentinel, so keying off it would demand `typeof value === 'undefined'`.
47
- * A `promotedBase` checked against itself therefore only exercises the
48
- * `SHAPE_CHECKS` entries, which is exactly the half that can be authored wrong
49
- * (an enum member that isn't in the vocabulary, a non-finite number).
50
- *
51
- * Can't delegate to the slot's MST `model.is(value)`, which is too permissive
52
- * exactly where this guard matters — `slotShape.test.ts` pins the two cases.
53
- */
54
- function matchesSlotShape(def, value) {
55
- const { promotedBase } = def;
56
- const check = SHAPE_CHECKS[def.type];
57
- return check
58
- ? check(value, def)
59
- : typeof promotedBase === 'object' && promotedBase !== null
60
- ? // object/array slot (e.g. `colorBy`): match null-ness and array-ness —
61
- // a bare `typeof` compare would admit `null` (typeof null === 'object')
62
- // and an array against an object base
63
- typeof value === 'object' &&
64
- value !== null &&
65
- Array.isArray(value) === Array.isArray(promotedBase)
66
- : typeof value === typeof promotedBase;
67
- }
68
- /**
69
- * Whether a stored value could really be a value of this slot. An unusable value
70
- * is dropped by the cascade, so the getter, the pin and the badge all fall back
71
- * in lockstep.
72
- *
73
- * The `jexl:` check is the only place the subsystem handles a callback, and it
74
- * handles it by refusing it — a hand-edited config or default store is untyped,
75
- * and a callback string would otherwise reach a renderer as a literal value.
76
- * DISPLAY_TYPE_DEFAULTS.md §"No callbacks".
77
- */
78
- export function isUsableValue(def, value) {
79
- const { validate } = def;
80
- return (value !== undefined &&
81
- !isCallbackValue(value) &&
82
- matchesSlotShape(def, value) &&
83
- (!validate || validate(value)));
84
- }
@@ -1,51 +0,0 @@
1
- import type { HighlightType } from '../../util/highlights.ts';
2
- /**
3
- * #stateModel HighlightsMixin
4
- * #category view
5
- *
6
- * The `view.highlight` band state shared verbatim by the LinearGenomeView and
7
- * DotplotView: an array of translucent highlight regions plus the
8
- * `showHighlightChips` toggle for their interactive chips. Both views compose
9
- * this so the props and actions stay identical by construction rather than by
10
- * two hand-kept copies. Visibility across all views is the session-wide
11
- * `highlightsVisible` flag (on BaseSession), not a prop here.
12
- */
13
- export default function HighlightsMixin(): import("@jbrowse/mobx-state-tree").IModelType<{
14
- /**
15
- * #property
16
- * translucent highlight bands, seeded from URL params or session JSON and
17
- * added interactively via the rubber-band menu
18
- */
19
- highlight: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IType<HighlightType, HighlightType, HighlightType>>, [undefined]>;
20
- /**
21
- * #property
22
- * pins the interactive highlight chip (link icon + context menu) to every
23
- * highlight band; off by default, where a band instead reveals its chip
24
- * while the pointer is in it. This is what a screenshot needs, since
25
- * nothing hovers in one
26
- */
27
- showHighlightChips: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
28
- }, {
29
- /**
30
- * #action
31
- */
32
- addToHighlights(highlight: HighlightType): void;
33
- /**
34
- * #action
35
- */
36
- setHighlight(highlight?: HighlightType[]): void;
37
- /**
38
- * #action
39
- */
40
- removeHighlight(highlight: HighlightType): void;
41
- /**
42
- * #action
43
- */
44
- updateHighlight(old: HighlightType, updates: Partial<HighlightType>): void;
45
- /**
46
- * #action
47
- */
48
- setShowHighlightChips(arg: boolean): void;
49
- } & {
50
- afterAttach(): void;
51
- }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>;
@@ -1,78 +0,0 @@
1
- import { cast, types } from '@jbrowse/mobx-state-tree';
2
- import { revealHighlightsOnGrowth } from '../../util/highlights.js';
3
- import { getSession } from '../../util/index.js';
4
- /**
5
- * #stateModel HighlightsMixin
6
- * #category view
7
- *
8
- * The `view.highlight` band state shared verbatim by the LinearGenomeView and
9
- * DotplotView: an array of translucent highlight regions plus the
10
- * `showHighlightChips` toggle for their interactive chips. Both views compose
11
- * this so the props and actions stay identical by construction rather than by
12
- * two hand-kept copies. Visibility across all views is the session-wide
13
- * `highlightsVisible` flag (on BaseSession), not a prop here.
14
- */
15
- export default function HighlightsMixin() {
16
- return types
17
- .model({
18
- /**
19
- * #property
20
- * translucent highlight bands, seeded from URL params or session JSON and
21
- * added interactively via the rubber-band menu
22
- */
23
- highlight: types.stripDefault(types.array(types.frozen()), []),
24
- /**
25
- * #property
26
- * pins the interactive highlight chip (link icon + context menu) to every
27
- * highlight band; off by default, where a band instead reveals its chip
28
- * while the pointer is in it. This is what a screenshot needs, since
29
- * nothing hovers in one
30
- */
31
- showHighlightChips: types.stripDefault(types.boolean, false),
32
- })
33
- .actions(self => ({
34
- /**
35
- * #action
36
- */
37
- addToHighlights(highlight) {
38
- self.highlight.push(highlight);
39
- },
40
- /**
41
- * #action
42
- */
43
- setHighlight(highlight) {
44
- self.highlight = cast(highlight);
45
- },
46
- /**
47
- * #action
48
- */
49
- removeHighlight(highlight) {
50
- self.highlight.remove(highlight);
51
- },
52
- /**
53
- * #action
54
- */
55
- updateHighlight(old, updates) {
56
- const idx = self.highlight.indexOf(old);
57
- if (idx !== -1) {
58
- self.highlight[idx] = { ...old, ...updates };
59
- // reachable from the highlight grid, which lists entries even with
60
- // the bands off, so recoloring there would otherwise do nothing
61
- // visible. Not a growth, so revealHighlightsOnGrowth can't see it
62
- getSession(self).revealHighlights();
63
- }
64
- },
65
- /**
66
- * #action
67
- */
68
- setShowHighlightChips(arg) {
69
- self.showHighlightChips = arg;
70
- },
71
- }))
72
- .actions(self => ({
73
- afterAttach() {
74
- // covers the rubber-band menu, dotplot drag and URL init alike
75
- revealHighlightsOnGrowth(self, () => self.highlight.length);
76
- },
77
- }));
78
- }
@@ -1,5 +0,0 @@
1
- import type { MenuItemPin } from './MenuTypes.ts';
2
- export declare function PinAdornment({ pin, disabled, }: {
3
- pin: MenuItemPin;
4
- disabled?: boolean;
5
- }): import("react").JSX.Element;
@@ -1,79 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import PushPinIcon from '@mui/icons-material/PushPin';
3
- import PushPinOutlinedIcon from '@mui/icons-material/PushPinOutlined';
4
- import { ToggleButton, Tooltip } from '@mui/material';
5
- import { makeStyles } from '../util/tss-react/index.js';
6
- const useStyles = makeStyles()(theme => ({
7
- // compact enough to sit inline with the value check: drop the default
8
- // ToggleButton border/padding so it's ~icon-sized, but keep the selected
9
- // background tint (an unmistakable on/off signal, unlike a hollow-vs-filled
10
- // icon alone)
11
- button: {
12
- border: 0,
13
- padding: theme.spacing(0.25),
14
- },
15
- // the Tooltip listens on this rather than on the button, which fires no
16
- // events once the row disables it
17
- wrapper: {
18
- display: 'inline-flex',
19
- },
20
- }));
21
- // How the pin names what it acts on. Two shapes, decided by the on-value:
22
- //
23
- // - **A boolean on-value carries a state**, and the row's label names the
24
- // setting rather than a value ("Show legend", "Show soft clipping"). A pin on
25
- // an unchecked such row applies the setting *off*, so the value-shaped copy
26
- // below stated the opposite of what the click does — and then, once filled,
27
- // claimed the setting was on by default when it had just been turned off.
28
- // - **Everything else IS what the label says**: a radio option ("Compact"), a
29
- // size row whose caller folds the value into the label ("Line width (2px)").
30
- //
31
- // One `typeof` rather than a flag on the row, because the two forms of
32
- // `makePin` are exactly this distinction: a symmetric pin over a `maybeBoolean`
33
- // slot is the only way a pin's value and its label can disagree.
34
- function pinPredicate(onValue) {
35
- return typeof onValue === 'boolean'
36
- ? `${onValue ? 'on' : 'off'} by default`
37
- : 'the default';
38
- }
39
- // The click, which is not the state the pin draws: an outline pin applies the
40
- // value to the open tracks, a filled one clears the default it stands for.
41
- function pinCopy(label, onValue, isDefault) {
42
- return isDefault
43
- ? {
44
- title: `${label} is ${pinPredicate(onValue)} for all tracks of this type (click to clear)`,
45
- ariaLabel: `clear the default for ${label}`,
46
- }
47
- : typeof onValue === 'boolean'
48
- ? {
49
- title: `Turn ${label} ${onValue ? 'on' : 'off'} for all open tracks of this type`,
50
- ariaLabel: `turn ${label} ${onValue ? 'on' : 'off'} for all open tracks`,
51
- }
52
- : {
53
- title: `Apply ${label} to all open tracks of this type`,
54
- ariaLabel: `apply ${label} to all open tracks`,
55
- };
56
- }
57
- // Trailing pin for a promotable setting, rendered as a menu item's
58
- // `endAdornment` beside the value check. A ToggleButton (native button a11y + a
59
- // clear selected tint) with a pin — distinct from the value checkbox.
60
- //
61
- // **The click and the state are two different things.** One click writes the
62
- // value into every open track of this display type and raises a snackbar
63
- // offering to keep it as the display type's default; the filled pin means that
64
- // default is in place, so a click on a filled pin clears it and touches no
65
- // track. A default therefore takes two deliberate clicks, which is what it costs
66
- // to govern every track of the type opened later (ADR-048). Always shown so the
67
- // capability is discoverable. stopPropagation keeps the click off the row value
68
- // / menu dismissal. "of this type" because a promoted default is scoped to the
69
- // display type (e.g. every LinearAlignmentsDisplay), not literally all tracks.
70
- export function PinAdornment({ pin, disabled, }) {
71
- const { classes } = useStyles();
72
- const { label, control } = pin;
73
- const isDefault = control.active;
74
- const { title, ariaLabel } = pinCopy(label, control.onValue, isDefault);
75
- return (_jsx(Tooltip, { title: title, children: _jsx("span", { className: classes.wrapper, children: _jsx(ToggleButton, { className: classes.button, value: "default", disabled: disabled, selected: isDefault, color: "primary", size: "small", "aria-label": ariaLabel, onChange: e => {
76
- e.stopPropagation();
77
- control.toggle();
78
- }, children: isDefault ? (_jsx(PushPinIcon, { fontSize: "small" })) : (_jsx(PushPinOutlinedIcon, { fontSize: "small" })) }) }) }));
79
- }
@@ -1,26 +0,0 @@
1
- export interface GradientStop {
2
- offset: string;
3
- color: string;
4
- opacity?: number;
5
- }
6
- export interface GradientLabel {
7
- text: string;
8
- position: 'start' | 'middle' | 'end';
9
- }
10
- export declare const GRADIENT_LEGEND_WIDTH = 120;
11
- export declare const GRADIENT_LEGEND_HEIGHT = 40;
12
- export declare const GRADIENT_LEGEND_SVG_AREA_WIDTH: number;
13
- export default function SvgGradientLegend({ gradientId, stops, labels, title, x, y, width, height, barWidth, barHeight, padding, fontSize, }: {
14
- gradientId: string;
15
- stops: GradientStop[];
16
- labels: GradientLabel[];
17
- title?: string;
18
- x?: number;
19
- y?: number;
20
- width?: number;
21
- height?: number;
22
- barWidth?: number;
23
- barHeight?: number;
24
- padding?: number;
25
- fontSize?: number;
26
- }): import("react").JSX.Element;
@@ -1,26 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /* eslint-disable react-refresh/only-export-components -- layout constants belong with this leaf SVG primitive; no component state to fast-refresh */
3
- import { svgSafeId } from '../svg/svgId.js';
4
- // Default box/bar geometry shared by the LD and Hi-C legends. Exported so
5
- // callers that size an outer container (an <svg> wrapper) or compute an offset
6
- // stay in lockstep with what this component draws.
7
- export const GRADIENT_LEGEND_WIDTH = 120;
8
- export const GRADIENT_LEGEND_HEIGHT = 40;
9
- // Horizontal space a display should reserve (via `svgLegendWidth()`) to park
10
- // this legend beside the plot in an SVG export: the bar itself plus a 10px
11
- // margin either side.
12
- export const GRADIENT_LEGEND_SVG_AREA_WIDTH = GRADIENT_LEGEND_WIDTH + 20;
13
- // Shared SVG color-ramp key: a rounded translucent box, a horizontal gradient
14
- // bar, and labels below it. Used by any display that colors by a continuous
15
- // scale (Hi-C contact counts, LD r²/D'). Renders a <g>; position via x/y.
16
- export default function SvgGradientLegend({ gradientId, stops, labels, title, x = 0, y = 0, width = GRADIENT_LEGEND_WIDTH, height = GRADIENT_LEGEND_HEIGHT, barWidth = 100, barHeight = 12, padding = 8, fontSize = 10, }) {
17
- const titleGap = title ? fontSize + 4 : 0;
18
- const barY = padding + titleGap;
19
- const labelY = barY + barHeight + fontSize + 2;
20
- const safeGradientId = svgSafeId(gradientId);
21
- return (_jsxs("g", { transform: `translate(${x}, ${y})`, children: [_jsx("defs", { children: _jsx("linearGradient", { id: safeGradientId, x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: stops.map(stop => (_jsx("stop", { offset: stop.offset, style: { stopColor: stop.color, stopOpacity: stop.opacity ?? 1 } }, stop.offset))) }) }), _jsx("rect", { x: 0, y: 0, width: width, height: height + titleGap, fill: "rgba(255,255,255,0.95)", stroke: "#ccc", strokeWidth: 1, rx: 4 }), title ? (_jsx("text", { x: padding, y: padding + fontSize, fontSize: fontSize, fill: "black", children: title })) : null, _jsx("rect", { x: padding, y: barY, width: barWidth, height: barHeight, fill: `url(#${safeGradientId})`, rx: 2 }), labels.map(label => (_jsx("text", { x: label.position === 'start'
22
- ? padding
23
- : label.position === 'middle'
24
- ? padding + barWidth / 2
25
- : padding + barWidth, y: labelY, fontSize: fontSize, fill: "black", textAnchor: label.position === 'start' ? undefined : label.position, children: label.text }, `${label.position}-${label.text}`)))] }));
26
- }