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

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 (439) hide show
  1. package/README.md +450 -132
  2. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +3 -2
  3. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +4 -2
  4. package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +6 -2
  5. package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +18 -3
  6. package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.d.ts +2 -1
  7. package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.js +4 -2
  8. package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.d.ts +2 -1
  9. package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +4 -2
  10. package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.d.ts +2 -1
  11. package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.js +4 -2
  12. package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +5 -4
  13. package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +6 -4
  14. package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +2 -1
  15. package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +4 -2
  16. package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.d.ts +3 -2
  17. package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +4 -2
  18. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +2 -2
  19. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.d.ts +3 -2
  20. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.js +4 -2
  21. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.d.ts +3 -2
  22. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.js +4 -2
  23. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.d.ts +3 -2
  24. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.js +4 -2
  25. package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.d.ts +3 -2
  26. package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +4 -2
  27. package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.d.ts +3 -2
  28. package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.js +4 -2
  29. package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +3 -2
  30. package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +4 -2
  31. package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +3 -2
  32. package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.js +4 -2
  33. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.d.ts +3 -2
  34. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.js +4 -2
  35. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.d.ts +3 -1
  36. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +15 -24
  37. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.js +1 -1
  38. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.d.ts +3 -2
  39. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.js +4 -2
  40. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +4 -4
  41. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.d.ts +3 -1
  42. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.js +2 -2
  43. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.d.ts +3 -2
  44. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.js +4 -2
  45. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.d.ts +1 -2
  46. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.js +2 -2
  47. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.d.ts +1 -2
  48. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.js +15 -36
  49. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.d.ts +3 -2
  50. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +4 -2
  51. package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.d.ts +4 -2
  52. package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.js +29 -20
  53. package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +13 -1
  54. package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +28 -1
  55. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.js +3 -3
  56. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +2 -2
  57. package/esm/BaseFeatureWidget/stateModelFactory.d.ts +9 -0
  58. package/esm/BaseFeatureWidget/stateModelFactory.js +11 -0
  59. package/esm/BaseFeatureWidget/types.d.ts +2 -0
  60. package/esm/PluginManager.d.ts +7 -3
  61. package/esm/PluginManager.js +12 -3
  62. package/esm/ReExports/coreModules.generated.js +538 -518
  63. package/esm/ReExports/coreWorkerModules.generated.js +456 -438
  64. package/esm/ReExports/lazify.js +3 -2
  65. package/esm/ReExports/list.js +22 -6
  66. package/esm/ReExports/names.d.ts +1 -0
  67. package/esm/ReExports/names.generated.d.ts +2 -0
  68. package/esm/ReExports/names.generated.js +566 -0
  69. package/esm/ReExports/names.js +3 -0
  70. package/esm/TextSearch/TextSearchManager.d.ts +3 -3
  71. package/esm/TextSearch/TextSearchManager.js +6 -13
  72. package/esm/assemblyManager/assembly.d.ts +9 -0
  73. package/esm/assemblyManager/assembly.js +13 -0
  74. package/esm/assemblyManager/assemblyConfigSchema.d.ts +6 -1
  75. package/esm/assemblyManager/assemblyConfigSchema.js +23 -22
  76. package/esm/assemblyManager/assemblyManager.d.ts +11 -0
  77. package/esm/assemblyManager/assemblyManager.js +2 -0
  78. package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +9 -0
  79. package/esm/assemblyManager/expandAssemblyConfigShorthand.js +23 -0
  80. package/esm/checkPlugins.js +10 -4
  81. package/esm/configuration/configurationSchema.d.ts +51 -100
  82. package/esm/configuration/configurationSchema.js +59 -225
  83. package/esm/configuration/configurationSchemaUnion.d.ts +2 -1
  84. package/esm/configuration/configurationSchemaUnion.js +2 -1
  85. package/esm/configuration/configurationSlot.d.ts +18 -64
  86. package/esm/configuration/configurationSlot.js +32 -98
  87. package/esm/configuration/fillLocations.d.ts +4 -2
  88. package/esm/configuration/fillLocations.js +9 -3
  89. package/esm/configuration/formatAboutConfigSchema.d.ts +2 -2
  90. package/esm/configuration/formatAboutConfigSchema.js +2 -2
  91. package/esm/configuration/formatDetailsConfigSchema.d.ts +2 -2
  92. package/esm/configuration/formatDetailsConfigSchema.js +7 -5
  93. package/esm/configuration/getConf.d.ts +7 -36
  94. package/esm/configuration/getConf.js +20 -41
  95. package/esm/configuration/index.d.ts +4 -3
  96. package/esm/configuration/index.js +3 -2
  97. package/esm/configuration/partitionAdvanced.d.ts +12 -0
  98. package/esm/configuration/partitionAdvanced.js +42 -0
  99. package/esm/configuration/plot.d.ts +6 -0
  100. package/esm/configuration/plot.js +56 -9
  101. package/esm/configuration/readConfObject.d.ts +15 -17
  102. package/esm/configuration/readConfObject.js +19 -50
  103. package/esm/configuration/schemaRegistry.d.ts +0 -2
  104. package/esm/configuration/schemaTypes.js +5 -1
  105. package/esm/configuration/slotFacade.js +2 -2
  106. package/esm/configuration/snapshotPreprocess.d.ts +42 -18
  107. package/esm/configuration/snapshotPreprocess.js +95 -37
  108. package/esm/configuration/tabixShorthand.js +1 -3
  109. package/esm/configuration/types.d.ts +60 -159
  110. package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +7 -0
  111. package/esm/data_adapters/BaseAdapter/BaseAdapter.js +7 -0
  112. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +0 -22
  113. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +0 -55
  114. package/esm/data_adapters/BaseAdapter/index.d.ts +0 -1
  115. package/esm/data_adapters/BaseAdapter/index.js +0 -1
  116. package/esm/data_adapters/BaseAdapter/rowSources.d.ts +2 -2
  117. package/esm/data_adapters/BaseAdapter/types.d.ts +1 -0
  118. package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +2 -0
  119. package/esm/data_adapters/CytobandAdapter/configSchema.js +5 -0
  120. package/esm/data_adapters/dataAdapterCache.d.ts +25 -13
  121. package/esm/data_adapters/dataAdapterCache.js +68 -24
  122. package/esm/data_adapters/getFeatureAdapter.d.ts +9 -0
  123. package/esm/data_adapters/getFeatureAdapter.js +17 -0
  124. package/esm/pluggableElementTypes/DisplayType.d.ts +7 -0
  125. package/esm/pluggableElementTypes/DisplayType.js +7 -0
  126. package/esm/pluggableElementTypes/RpcMethodType.d.ts +7 -0
  127. package/esm/pluggableElementTypes/RpcMethodType.js +9 -0
  128. package/esm/pluggableElementTypes/addMenuItems.d.ts +2 -1
  129. package/esm/pluggableElementTypes/addMenuItems.js +2 -1
  130. package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +2 -0
  131. package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.js +2 -0
  132. package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +40 -5
  133. package/esm/pluggableElementTypes/models/BaseDisplayModel.js +57 -9
  134. package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +5 -7
  135. package/esm/pluggableElementTypes/models/BaseTrackModel.js +9 -10
  136. package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +2 -0
  137. package/esm/pluggableElementTypes/models/BaseViewModel.js +2 -0
  138. package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +3 -0
  139. package/esm/pluggableElementTypes/models/InternetAccountModel.js +3 -0
  140. package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +3 -0
  141. package/esm/pluggableElementTypes/models/baseConnectionConfig.js +3 -0
  142. package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +3 -1
  143. package/esm/pluggableElementTypes/models/baseInternetAccountConfig.js +3 -1
  144. package/esm/pluggableElementTypes/models/baseTrackConfig.js +12 -1
  145. package/esm/pluggableElementTypes/models/components/SaveTrackData.js +2 -2
  146. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +1 -1
  147. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +1 -1
  148. package/esm/pluginDefinitions.d.ts +7 -0
  149. package/esm/pluginDefinitions.js +20 -0
  150. package/esm/rpc/RpcRegistry.d.ts +2 -11
  151. package/esm/rpc/byteBudget.d.ts +15 -0
  152. package/esm/rpc/byteBudget.js +23 -0
  153. package/esm/rpc/configSchema.d.ts +2 -0
  154. package/esm/rpc/configSchema.js +3 -1
  155. package/esm/rpc/coreRpcMethods.d.ts +1 -2
  156. package/esm/rpc/coreRpcMethods.js +1 -2
  157. package/esm/rpc/explainTransferError.js +3 -3
  158. package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +2 -2
  159. package/esm/rpc/methods/CoreGetEncodedLayers.js +7 -5
  160. package/esm/rpc/methods/CoreLoadTrackCode.d.ts +17 -0
  161. package/esm/rpc/methods/CoreLoadTrackCode.js +24 -0
  162. package/esm/rpc/methods/layerFeatures.d.ts +9 -6
  163. package/esm/rpc/methods/layerFeatures.js +21 -5
  164. package/esm/ui/ActionLink.d.ts +3 -2
  165. package/esm/ui/ActionLink.js +4 -2
  166. package/esm/ui/AddCustomPluginDialog.d.ts +3 -2
  167. package/esm/ui/AddCustomPluginDialog.js +6 -4
  168. package/esm/ui/AppLogo.js +43 -3
  169. package/esm/ui/BaseTooltip.d.ts +3 -2
  170. package/esm/ui/BaseTooltip.js +4 -2
  171. package/esm/ui/CascadingMenu.js +14 -12
  172. package/esm/ui/CascadingMenuButton.d.ts +2 -2
  173. package/esm/ui/CascadingMenuButton.js +5 -4
  174. package/esm/ui/CascadingMenuHelpDialog.d.ts +3 -2
  175. package/esm/ui/CascadingMenuHelpDialog.js +4 -2
  176. package/esm/ui/CascadingMenuHelpIconButton.d.ts +4 -3
  177. package/esm/ui/CascadingMenuHelpIconButton.js +9 -5
  178. package/esm/ui/ColorPicker.d.ts +5 -4
  179. package/esm/ui/ColorPicker.js +6 -4
  180. package/esm/ui/ContextMenu.d.ts +1 -1
  181. package/esm/ui/ContextMenu.js +1 -1
  182. package/esm/ui/CopyToClipboardButton.d.ts +3 -2
  183. package/esm/ui/CopyToClipboardButton.js +4 -2
  184. package/esm/ui/Crosshairs.js +13 -10
  185. package/esm/ui/DOMPurifySanitizedHTML.d.ts +3 -2
  186. package/esm/ui/DOMPurifySanitizedHTML.js +4 -2
  187. package/esm/ui/DataGridFlexContainer.d.ts +3 -2
  188. package/esm/ui/DataGridFlexContainer.js +4 -2
  189. package/esm/ui/Dialog.d.ts +1 -1
  190. package/esm/ui/Dialog.js +5 -4
  191. package/esm/ui/DropDownMenu.js +2 -2
  192. package/esm/ui/EditableTypography.d.ts +1 -1
  193. package/esm/ui/EditableTypography.js +3 -2
  194. package/esm/ui/ErrorActions.d.ts +3 -2
  195. package/esm/ui/ErrorActions.js +4 -2
  196. package/esm/ui/ErrorBanner.d.ts +2 -2
  197. package/esm/ui/ErrorBanner.js +3 -2
  198. package/esm/ui/ErrorBar.d.ts +3 -2
  199. package/esm/ui/ErrorBar.js +4 -2
  200. package/esm/ui/ErrorMessage.d.ts +3 -2
  201. package/esm/ui/ErrorMessage.js +4 -2
  202. package/esm/ui/ErrorMessageStackTraceContents.d.ts +3 -2
  203. package/esm/ui/ErrorMessageStackTraceContents.js +4 -2
  204. package/esm/ui/ErrorMessageStackTraceDialog.d.ts +3 -2
  205. package/esm/ui/ErrorMessageStackTraceDialog.js +4 -2
  206. package/esm/ui/ErrorOverlay.d.ts +3 -2
  207. package/esm/ui/ErrorOverlay.js +4 -2
  208. package/esm/ui/ExportSvgDialog.d.ts +3 -2
  209. package/esm/ui/ExportSvgDialog.js +4 -2
  210. package/esm/ui/ExternalLink.d.ts +2 -1
  211. package/esm/ui/ExternalLink.js +4 -2
  212. package/esm/ui/FactoryResetDialog.d.ts +3 -2
  213. package/esm/ui/FactoryResetDialog.js +4 -2
  214. package/esm/ui/FatalErrorDialog.d.ts +3 -2
  215. package/esm/ui/FatalErrorDialog.js +6 -4
  216. package/esm/ui/FileDropZone.d.ts +3 -2
  217. package/esm/ui/FileDropZone.js +4 -2
  218. package/esm/ui/FileSelector/LocalFileChooser.js +4 -4
  219. package/esm/ui/FileSelector/LocationInput.d.ts +3 -2
  220. package/esm/ui/FileSelector/LocationInput.js +4 -2
  221. package/esm/ui/FileSelector/SourceTypeSelector.d.ts +3 -2
  222. package/esm/ui/FileSelector/SourceTypeSelector.js +8 -6
  223. package/esm/ui/GpuFallbackButton.d.ts +3 -2
  224. package/esm/ui/GpuFallbackButton.js +4 -2
  225. package/esm/ui/HoverMenu.d.ts +2 -2
  226. package/esm/ui/HoverMenu.js +7 -3
  227. package/esm/ui/HoverTooltip.d.ts +3 -2
  228. package/esm/ui/HoverTooltip.js +4 -2
  229. package/esm/ui/Icons.d.ts +5 -5
  230. package/esm/ui/Icons.js +11 -10
  231. package/esm/ui/InlineMenuControls.d.ts +2 -2
  232. package/esm/ui/InlineMenuControls.js +4 -3
  233. package/esm/ui/JexlFilterRowEditors.d.ts +4 -4
  234. package/esm/ui/JexlFilterRowEditors.js +9 -8
  235. package/esm/ui/LabeledCheckbox.d.ts +3 -2
  236. package/esm/ui/LabeledCheckbox.js +4 -2
  237. package/esm/ui/LazyBaseTooltip.d.ts +12 -3
  238. package/esm/ui/LazyBaseTooltip.js +4 -2
  239. package/esm/ui/LegendSwatchGlyph.js +1 -0
  240. package/esm/ui/LoadingDots.d.ts +2 -1
  241. package/esm/ui/LoadingDots.js +4 -2
  242. package/esm/ui/LoadingEllipses.d.ts +5 -2
  243. package/esm/ui/LoadingEllipses.js +5 -3
  244. package/esm/ui/LoadingOverlay.d.ts +3 -2
  245. package/esm/ui/LoadingOverlay.js +4 -2
  246. package/esm/ui/LoadingProgress.d.ts +3 -2
  247. package/esm/ui/LoadingProgress.js +4 -2
  248. package/esm/ui/Logo.d.ts +2 -2
  249. package/esm/ui/Logo.js +9 -8
  250. package/esm/ui/MenuItemChevron.d.ts +2 -2
  251. package/esm/ui/MenuItemChevron.js +3 -2
  252. package/esm/ui/MenuItemEndDecoration.d.ts +2 -2
  253. package/esm/ui/MenuItemEndDecoration.js +3 -2
  254. package/esm/ui/MenuItemTrailing.d.ts +2 -2
  255. package/esm/ui/MenuItemTrailing.js +7 -6
  256. package/esm/ui/MenuTypes.d.ts +21 -1
  257. package/esm/ui/MenuTypes.js +20 -0
  258. package/esm/ui/MonospaceTextField.d.ts +3 -2
  259. package/esm/ui/MonospaceTextField.js +4 -2
  260. package/esm/ui/NumberTextField.d.ts +2 -2
  261. package/esm/ui/NumberTextField.js +4 -2
  262. package/esm/ui/PaletteContext.d.ts +11 -9
  263. package/esm/ui/PaletteContext.js +33 -18
  264. package/esm/ui/PluginStoreCard.d.ts +3 -2
  265. package/esm/ui/PluginStoreCard.js +4 -2
  266. package/esm/ui/PopoverPicker.d.ts +3 -2
  267. package/esm/ui/PopoverPicker.js +4 -2
  268. package/esm/ui/PrerenderedCanvas.d.ts +2 -2
  269. package/esm/ui/PrerenderedCanvas.js +3 -2
  270. package/esm/ui/RedErrorMessageBox.d.ts +3 -2
  271. package/esm/ui/RedErrorMessageBox.js +4 -2
  272. package/esm/ui/RefNameAutocomplete/EndAdornment.d.ts +3 -2
  273. package/esm/ui/RefNameAutocomplete/EndAdornment.js +4 -2
  274. package/esm/ui/RefNameAutocomplete/HelpDialog.d.ts +3 -2
  275. package/esm/ui/RefNameAutocomplete/HelpDialog.js +4 -2
  276. package/esm/ui/ReplaceCurrentViewButton.d.ts +3 -2
  277. package/esm/ui/ReplaceCurrentViewButton.js +4 -2
  278. package/esm/ui/ResizeHandle.d.ts +2 -2
  279. package/esm/ui/ResizeHandle.js +3 -2
  280. package/esm/ui/SanitizedHTML.d.ts +3 -2
  281. package/esm/ui/SanitizedHTML.js +6 -4
  282. package/esm/ui/ScrollChrome.d.ts +3 -2
  283. package/esm/ui/ScrollChrome.js +4 -2
  284. package/esm/ui/ScrollEdgeShadow.d.ts +2 -2
  285. package/esm/ui/ScrollEdgeShadow.js +2 -2
  286. package/esm/ui/SessionJsonPanel.d.ts +3 -2
  287. package/esm/ui/SessionJsonPanel.js +4 -2
  288. package/esm/ui/ShareLinkField.d.ts +3 -2
  289. package/esm/ui/ShareLinkField.js +4 -2
  290. package/esm/ui/SingleSlider.d.ts +2 -2
  291. package/esm/ui/SingleSlider.js +4 -2
  292. package/esm/ui/SliderTooltip.d.ts +2 -1
  293. package/esm/ui/SliderTooltip.js +4 -2
  294. package/esm/ui/SnackbarContents.d.ts +3 -2
  295. package/esm/ui/SnackbarContents.js +4 -2
  296. package/esm/ui/SnackbarModel.d.ts +2 -0
  297. package/esm/ui/SnackbarModel.js +2 -0
  298. package/esm/ui/StackTraceButton.d.ts +3 -2
  299. package/esm/ui/StackTraceButton.js +4 -2
  300. package/esm/ui/StatusProgressBar.d.ts +3 -2
  301. package/esm/ui/StatusProgressBar.js +4 -2
  302. package/esm/ui/SubmitForm.d.ts +2 -1
  303. package/esm/ui/SubmitForm.js +4 -2
  304. package/esm/ui/SvgColorLegend.d.ts +3 -4
  305. package/esm/ui/SvgColorLegend.js +27 -18
  306. package/esm/ui/TagTextField.d.ts +2 -2
  307. package/esm/ui/TagTextField.js +4 -2
  308. package/esm/ui/ViewLoadingScreen.d.ts +3 -2
  309. package/esm/ui/ViewLoadingScreen.js +4 -2
  310. package/esm/ui/buildExtraTrackMenuItems.d.ts +2 -2
  311. package/esm/ui/colorScale.d.ts +5 -1
  312. package/esm/ui/colorScale.js +12 -10
  313. package/esm/ui/colors.d.ts +42 -31
  314. package/esm/ui/colors.js +85 -48
  315. package/esm/ui/filterMenuItems.d.ts +10 -31
  316. package/esm/ui/filterMenuItems.js +13 -14
  317. package/esm/ui/index.d.ts +1 -1
  318. package/esm/ui/index.js +1 -1
  319. package/esm/ui/launchTargetsMenuItem.js +9 -13
  320. package/esm/ui/legendMenuItem.d.ts +4 -4
  321. package/esm/ui/legendMenuItem.js +4 -4
  322. package/esm/ui/menuItemAdornment.d.ts +1 -1
  323. package/esm/ui/menuItemAdornment.js +1 -1
  324. package/esm/ui/menuItems.d.ts +1 -1
  325. package/esm/ui/menuItems.js +1 -1
  326. package/esm/ui/menuLabels.d.ts +2 -2
  327. package/esm/ui/menuLabels.js +2 -2
  328. package/esm/ui/multiTrackMenuItems.d.ts +2 -2
  329. package/esm/ui/palette.d.ts +2 -2
  330. package/esm/ui/palette.js +10 -10
  331. package/esm/ui/radioSubMenu.d.ts +5 -3
  332. package/esm/ui/radioSubMenu.js +2 -2
  333. package/esm/ui/rampKey.d.ts +15 -0
  334. package/esm/ui/rampKey.js +17 -0
  335. package/esm/ui/showSubMenu.d.ts +0 -5
  336. package/esm/ui/showSubMenu.js +6 -15
  337. package/esm/ui/theme.d.ts +2 -2
  338. package/esm/ui/theme.js +1 -1
  339. package/esm/ui/useAssemblySelection.d.ts +2 -0
  340. package/esm/ui/useMouseTracking.d.ts +8 -20
  341. package/esm/ui/useMouseTracking.js +23 -62
  342. package/esm/ui/usePlacedMenuFocus.d.ts +19 -0
  343. package/esm/ui/usePlacedMenuFocus.js +28 -0
  344. package/esm/util/Base1DViewModel.d.ts +5 -3
  345. package/esm/util/Base1DViewModel.js +5 -3
  346. package/esm/util/SvgCanvas.js +1 -1
  347. package/esm/util/aggregateFieldName.d.ts +1 -10
  348. package/esm/util/aggregateFieldName.js +1 -8
  349. package/esm/util/alignedBytes.d.ts +19 -0
  350. package/esm/util/alignedBytes.js +37 -0
  351. package/esm/util/analytics.d.ts +6 -9
  352. package/esm/util/analytics.js +148 -15
  353. package/esm/util/bezierConnector.d.ts +20 -0
  354. package/esm/util/bezierConnector.js +34 -96
  355. package/esm/util/cacheBudgets.d.ts +3 -0
  356. package/esm/util/cacheBudgets.js +3 -0
  357. package/esm/util/categoricalField.d.ts +24 -4
  358. package/esm/util/categoricalField.js +38 -5
  359. package/esm/util/cellMatches.js +14 -14
  360. package/esm/util/cellsStep.d.ts +3 -5
  361. package/esm/util/cellsStep.js +31 -29
  362. package/esm/util/color/index.d.ts +1 -1
  363. package/esm/util/color/index.js +2 -2
  364. package/esm/util/color-bits/bit.js +1 -1
  365. package/esm/util/color-bits/parse.js +28 -17
  366. package/esm/util/colorBits.d.ts +15 -4
  367. package/esm/util/colorBits.js +38 -15
  368. package/esm/util/colorRamp.d.ts +3 -3
  369. package/esm/util/colorRamp.js +20 -2
  370. package/esm/util/colorScale.d.ts +123 -22
  371. package/esm/util/colorScale.js +157 -28
  372. package/esm/util/colorSchemes.d.ts +7 -3
  373. package/esm/util/colorSchemes.js +8 -2
  374. package/esm/util/createSvgRasterCanvas.d.ts +14 -1
  375. package/esm/util/createSvgRasterCanvas.js +36 -12
  376. package/esm/util/diagonalizeRegions.js +18 -9
  377. package/esm/util/featureTransforms.d.ts +2 -2
  378. package/esm/util/featureTransforms.js +85 -135
  379. package/esm/util/fileHandleStore.js +5 -0
  380. package/esm/util/groupKeys.d.ts +5 -4
  381. package/esm/util/groupKeys.js +15 -9
  382. package/esm/util/index.js +1 -1
  383. package/esm/util/installFetch.d.ts +2 -2
  384. package/esm/util/installPrerequisiteFetch.d.ts +8 -3
  385. package/esm/util/installPrerequisiteFetch.js +9 -7
  386. package/esm/util/io/RemoteFileWithRangeCache.d.ts +1 -1
  387. package/esm/util/io/RemoteFileWithRangeCache.js +1 -1
  388. package/esm/util/isoformRank.d.ts +39 -0
  389. package/esm/util/isoformRank.js +118 -0
  390. package/esm/util/jexl.js +1 -1
  391. package/esm/util/layouts/GranularRectLayout.d.ts +19 -3
  392. package/esm/util/layouts/GranularRectLayout.js +57 -34
  393. package/esm/util/leadingEdgeAutorun.d.ts +9 -1
  394. package/esm/util/leadingEdgeAutorun.js +5 -2
  395. package/esm/util/markEncoding.d.ts +10 -8
  396. package/esm/util/markEncoding.js +50 -12
  397. package/esm/util/markEncodingTypes.d.ts +77 -21
  398. package/esm/util/originCut.d.ts +14 -0
  399. package/esm/util/originCut.js +19 -0
  400. package/esm/util/paintLayer.d.ts +1 -1
  401. package/esm/util/paintLayer.js +4 -3
  402. package/esm/util/pathSeries.d.ts +18 -0
  403. package/esm/util/pathSeries.js +143 -0
  404. package/esm/util/pressOwner.d.ts +20 -0
  405. package/esm/util/pressOwner.js +26 -0
  406. package/esm/util/quantileExtent.d.ts +23 -1
  407. package/esm/util/quantileExtent.js +25 -2
  408. package/esm/util/rowStackGeometry.d.ts +1 -1
  409. package/esm/util/rowStackGeometry.js +1 -1
  410. package/esm/util/sessionActivity.d.ts +36 -0
  411. package/esm/util/sessionActivity.js +88 -0
  412. package/esm/util/stepOutputs.d.ts +165 -0
  413. package/esm/util/stepOutputs.js +201 -0
  414. package/esm/util/stepTables.d.ts +7 -3
  415. package/esm/util/stepTables.js +86 -3
  416. package/esm/util/systemColorScheme.d.ts +4 -0
  417. package/esm/util/systemColorScheme.js +21 -0
  418. package/esm/util/tabix.d.ts +1 -1
  419. package/esm/util/tabix.js +1 -1
  420. package/esm/util/temporaryAssembly.d.ts +2 -2
  421. package/esm/util/temporaryAssembly.js +2 -3
  422. package/esm/util/thresholdScale.d.ts +1 -1
  423. package/esm/util/thresholdScale.js +1 -1
  424. package/esm/util/trackConfigDelta.d.ts +1 -1
  425. package/esm/util/tracks.d.ts +25 -15
  426. package/esm/util/tracks.js +68 -44
  427. package/esm/util/types/index.d.ts +15 -7
  428. package/esm/util/types/index.js +21 -2
  429. package/esm/util/usePanZoom.js +4 -10
  430. package/esm/util/useRowVirtualScroll.d.ts +1 -0
  431. package/esm/util/windowStep.d.ts +6 -0
  432. package/esm/util/windowStep.js +153 -0
  433. package/package.json +27 -16
  434. package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +0 -40
  435. package/esm/data_adapters/BaseAdapter/featureDensity.js +0 -31
  436. package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +0 -11
  437. package/esm/rpc/methods/CoreGetFeatureDensity.js +0 -22
  438. package/esm/rpc/methods/CoreLoadAdapterCode.d.ts +0 -13
  439. package/esm/rpc/methods/CoreLoadAdapterCode.js +0 -16
@@ -1,5 +1,6 @@
1
1
  import type { IconButtonProps } from '@mui/material';
2
- export default function StackTraceButton({ error, color, }: {
2
+ declare const StackTraceButton: ({ error, color, }: {
3
3
  error: unknown;
4
4
  color?: IconButtonProps['color'];
5
- }): import("react").JSX.Element;
5
+ }) => import("react").JSX.Element;
6
+ export default StackTraceButton;
@@ -2,15 +2,17 @@ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-run
2
2
  import { Suspense, lazy, useState } from 'react';
3
3
  import ReportIcon from '@mui/icons-material/Report';
4
4
  import { IconButton, Tooltip } from '@mui/material';
5
+ import { observer } from 'mobx-react';
5
6
  const ErrorMessageStackTraceDialog = lazy(() => import('./ErrorMessageStackTraceDialog.js'));
6
7
  // "Show stack trace" icon button that lazy-loads and opens the stack-trace
7
8
  // dialog. Shared by ErrorBanner and ErrorBar so the lazy import and open/close
8
9
  // state live in one place.
9
- export default function StackTraceButton({ error, color, }) {
10
+ const StackTraceButton = observer(function StackTraceButton({ error, color, }) {
10
11
  const [showStack, setShowStack] = useState(false);
11
12
  return (_jsxs(_Fragment, { children: [_jsx(Tooltip, { title: "Show stack trace", children: _jsx(IconButton, { color: color, onClick: () => {
12
13
  setShowStack(true);
13
14
  }, children: _jsx(ReportIcon, {}) }) }), showStack ? (_jsx(Suspense, { fallback: null, children: _jsx(ErrorMessageStackTraceDialog, { error: error, onClose: () => {
14
15
  setShowStack(false);
15
16
  } }) })) : null] }));
16
- }
17
+ });
18
+ export default StackTraceButton;
@@ -30,8 +30,9 @@
30
30
  * two modules deep, and its own test asserts the rendered tree carries no `Mui*`
31
31
  * class, which catches a Material component rendered directly.
32
32
  */
33
- export default function StatusProgressBar({ fraction, className, style, }: {
33
+ declare const StatusProgressBar: ({ fraction, className, style, }: {
34
34
  fraction?: number;
35
35
  className?: string;
36
36
  style?: React.CSSProperties;
37
- }): import("react").JSX.Element;
37
+ }) => import("react").JSX.Element;
38
+ export default StatusProgressBar;
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { observer } from 'mobx-react';
2
3
  import { cx, makeStyles } from '../util/tss-react/index.js';
3
4
  import { indeterminateSweep } from './statusProgressKeyframes.js';
4
5
  const HEIGHT = 4;
@@ -64,7 +65,7 @@ const useStyles = makeStyles()(theme => ({
64
65
  * two modules deep, and its own test asserts the rendered tree carries no `Mui*`
65
66
  * class, which catches a Material component rendered directly.
66
67
  */
67
- export default function StatusProgressBar({ fraction, className, style, }) {
68
+ const StatusProgressBar = observer(function StatusProgressBar({ fraction, className, style, }) {
68
69
  const { classes } = useStyles();
69
70
  const determinate = fraction !== undefined;
70
71
  // one clamp for both halves. `statusFraction` clamps its own output, but a
@@ -73,4 +74,5 @@ export default function StatusProgressBar({ fraction, className, style, }) {
73
74
  // a negative announce a value below the `aria-valuemin` declared beside it.
74
75
  const filled = Math.min(1, Math.max(0, fraction ?? 0));
75
76
  return (_jsx("div", { className: cx(classes.track, className), style: style, role: "progressbar", "aria-valuemin": determinate ? 0 : undefined, "aria-valuemax": determinate ? 100 : undefined, "aria-valuenow": determinate ? Math.round(filled * 100) : undefined, children: _jsx("div", { className: cx(classes.bar, determinate ? undefined : classes.sweep), style: determinate ? { transform: `scaleX(${filled})` } : undefined }) }));
76
- }
77
+ });
78
+ export default StatusProgressBar;
@@ -20,4 +20,5 @@ export interface SubmitFormProps {
20
20
  * outer chrome) is shared across several tab panes uses this directly, so the
21
21
  * panes get the same keyboard behavior without each owning a Dialog.
22
22
  */
23
- export default function SubmitForm({ onSubmit, onCancel, cancelText, submitText, submitDisabled, submitColor, submitStartIcon, onReset, resetText, actions, contentClassName, children, }: SubmitFormProps): import("react").JSX.Element;
23
+ declare const SubmitForm: ({ onSubmit, onCancel, cancelText, submitText, submitDisabled, submitColor, submitStartIcon, onReset, resetText, actions, contentClassName, children, }: SubmitFormProps) => import("react").JSX.Element;
24
+ export default SubmitForm;
@@ -1,12 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Button, DialogActions, DialogContent } from '@mui/material';
3
+ import { observer } from 'mobx-react';
3
4
  /**
4
5
  * Content plus a Cancel/Submit footer, wrapped in a form so Enter submits.
5
6
  * SubmitDialog is this with a Dialog around it; a dialog whose Dialog (and
6
7
  * outer chrome) is shared across several tab panes uses this directly, so the
7
8
  * panes get the same keyboard behavior without each owning a Dialog.
8
9
  */
9
- export default function SubmitForm({ onSubmit, onCancel, cancelText = 'Cancel', submitText = 'Submit', submitDisabled = false, submitColor = 'primary', submitStartIcon, onReset, resetText = 'Restore default', actions, contentClassName, children, }) {
10
+ const SubmitForm = observer(function SubmitForm({ onSubmit, onCancel, cancelText = 'Cancel', submitText = 'Submit', submitDisabled = false, submitColor = 'primary', submitStartIcon, onReset, resetText = 'Restore default', actions, contentClassName, children, }) {
10
11
  return (_jsxs("form", { onSubmit: event => {
11
12
  event.preventDefault();
12
13
  if (!submitDisabled) {
@@ -20,4 +21,5 @@ export default function SubmitForm({ onSubmit, onCancel, cancelText = 'Cancel',
20
21
  onCancel();
21
22
  }
22
23
  }, children: onReset ? resetText : cancelText }), actions, _jsx(Button, { type: "submit", color: submitColor, variant: "contained", disabled: submitDisabled, startIcon: submitStartIcon, children: submitText })] })] }));
23
- }
24
+ });
25
+ export default SubmitForm;
@@ -3,11 +3,10 @@ export type { ColorLegendEntry } from './legendSpec.ts';
3
3
  export declare const LEGEND_ROW_HEIGHT = 14;
4
4
  export declare const LEGEND_SWATCH = 10;
5
5
  /**
6
- * Horizontal space the LGV export reserves beside the plot for a display whose
7
- * legend asked to sit off the plot (`LegendMixin.svgLegendWidth`): the widest
8
- * row this draws for a ramp, plus a margin either side.
6
+ * Width of the paper `SvgColorLegend` draws for `entries` under `maxHeight`, 0
7
+ * when it draws nothing.
9
8
  */
10
- export declare const LEGEND_SVG_GUTTER_WIDTH: number;
9
+ export declare function svgColorLegendWidth(entries: ColorLegendEntry[], maxHeight?: number): number;
11
10
  export default function SvgColorLegend({ entries, canvasWidth, x, maxHeight, testid, idPrefix, }: {
12
11
  entries: ColorLegendEntry[];
13
12
  canvasWidth: number;
@@ -15,12 +15,6 @@ const GRADIENT_BAR_WIDTH = 100;
15
15
  const GRADIENT_BAR_HEIGHT = 10;
16
16
  // the bar plus the row of domain labels under it
17
17
  const GRADIENT_ROW_HEIGHT = GRADIENT_BAR_HEIGHT + 4 + LEGEND_ROW_HEIGHT;
18
- /**
19
- * Horizontal space the LGV export reserves beside the plot for a display whose
20
- * legend asked to sit off the plot (`LegendMixin.svgLegendWidth`): the widest
21
- * row this draws for a ramp, plus a margin either side.
22
- */
23
- export const LEGEND_SVG_GUTTER_WIDTH = GRADIENT_BAR_WIDTH + 40;
24
18
  // A row's swatches, with the flat `color` shorthand read as the single
25
19
  // square it has always drawn.
26
20
  function entrySwatches(entry) {
@@ -59,23 +53,16 @@ function fitEntries(entries, maxHeight) {
59
53
  }
60
54
  return shown;
61
55
  }
56
+ // eslint-disable-next-line no-restricted-syntax -- drawn inside a frozen SVG figure
62
57
  function GradientRow({ entry, width, gradientId, }) {
63
58
  const { stops, minLabel, maxLabel } = entry.gradient;
64
59
  const barTop = (entry.label ? LEGEND_ROW_HEIGHT : 0) + 2;
65
60
  const labelY = barTop + GRADIENT_BAR_HEIGHT + 2 + FONT_SIZE;
66
61
  return (_jsxs(_Fragment, { children: [_jsx("rect", { x: 0, y: 0, width: width, height: rowHeight(entry), fill: "rgba(255,255,255,0.95)" }), entry.label ? (_jsx("text", { x: SWATCH_LEFT, y: 11, fontSize: FONT_SIZE, fill: "black", children: entry.label })) : null, _jsx("defs", { children: _jsx("linearGradient", { id: gradientId, 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: SWATCH_LEFT, y: barTop, width: GRADIENT_BAR_WIDTH, height: GRADIENT_BAR_HEIGHT, fill: `url(#${gradientId})`, rx: 2 }), _jsx("text", { x: SWATCH_LEFT, y: labelY, fontSize: FONT_SIZE, fill: "black", children: minLabel }), _jsx("text", { x: SWATCH_LEFT + GRADIENT_BAR_WIDTH, y: labelY, fontSize: FONT_SIZE, fill: "black", textAnchor: "end", children: maxLabel })] }));
67
62
  }
68
- // Shared SVG color key: one translucent row per entry — a swatch and a label,
69
- // or a ramp bar with its domain ends — right-aligned within `canvasWidth`, or
70
- // at `x` when the caller places it (the LGV export's legend gutter). A <g>, so
71
- // an on-screen SVG overlay and the export share one renderer.
72
- //
73
- // `maxHeight` (the display height) caps the box: entries past what fits
74
- // collapse into a trailing "+N more" summary row, so the legend never overflows
75
- // its display — the full list stays reachable via the track menu.
76
- export default function SvgColorLegend({ entries, canvasWidth, x, maxHeight, testid, idPrefix, }) {
77
- const reactId = useId();
78
- const legendId = idPrefix ?? reactId;
63
+ // What the key draws for `entries` under `maxHeight`, and how wide its paper
64
+ // is, so a caller sizing a gutter measures the box this renders.
65
+ function legendBox(entries, maxHeight) {
79
66
  const shown = maxHeight === undefined ? entries : fitEntries(entries, maxHeight);
80
67
  const cutRows = entries.slice(shown.length).filter(keysAColor).length;
81
68
  const overflowLabel = cutRows > 0 ? `+${cutRows} more` : undefined;
@@ -95,12 +82,34 @@ export default function SvgColorLegend({ entries, canvasWidth, x, maxHeight, tes
95
82
  contentRight = Math.max(contentRight, textLeft + measureLegendText(overflowLabel, FONT_SIZE));
96
83
  }
97
84
  const totalWidth = contentRight + 6;
98
- const left = x ?? Math.max(0, canvasWidth - totalWidth - 4);
99
85
  const rowTops = [];
100
86
  let y = 0;
101
87
  for (const entry of shown) {
102
88
  rowTops.push(y);
103
89
  y += rowHeight(entry);
104
90
  }
91
+ return { shown, overflowLabel, textLeft, totalWidth, rowTops, bottom: y };
92
+ }
93
+ /**
94
+ * Width of the paper `SvgColorLegend` draws for `entries` under `maxHeight`, 0
95
+ * when it draws nothing.
96
+ */
97
+ export function svgColorLegendWidth(entries, maxHeight) {
98
+ const { shown, overflowLabel, totalWidth } = legendBox(entries, maxHeight);
99
+ return shown.length || overflowLabel ? totalWidth : 0;
100
+ }
101
+ // Shared SVG color key: one translucent row per entry — a swatch and a label,
102
+ // or a ramp bar with its domain ends — right-aligned within `canvasWidth`, or
103
+ // at `x` when the caller places it (an export's legend gutter). A <g>, so
104
+ // an on-screen SVG overlay and the export share one renderer.
105
+ //
106
+ // `maxHeight` (the display height) caps the box: entries past what fits
107
+ // collapse into a trailing "+N more" summary row, so the legend never overflows
108
+ // its display — the full list stays reachable via the track menu.
109
+ export default function SvgColorLegend({ entries, canvasWidth, x, maxHeight, testid, idPrefix, }) {
110
+ const reactId = useId();
111
+ const legendId = idPrefix ?? reactId;
112
+ const { shown, overflowLabel, textLeft, totalWidth, rowTops, bottom: y, } = legendBox(entries, maxHeight);
113
+ const left = x ?? Math.max(0, canvasWidth - totalWidth - 4);
105
114
  return shown.length || overflowLabel ? (_jsxs("g", { transform: `translate(${left} 0)`, "data-testid": testid, children: [shown.map((entry, idx) => (_jsx("g", { transform: `translate(0 ${rowTops[idx]})`, children: entry.gradient ? (_jsx(GradientRow, { entry: entry, width: totalWidth, gradientId: svgSafeId(`${legendId}-${entry.key}`) })) : (_jsxs(_Fragment, { children: [_jsx("rect", { x: 0, y: 0, width: totalWidth, height: LEGEND_ROW_HEIGHT, fill: "rgba(255,255,255,0.95)" }), _jsxs("g", { opacity: entry.hidden ? 0.35 : 1, children: [entrySwatches(entry).map((swatch, i) => (_jsx(LegendSwatchGlyph, { swatch: swatch, size: LEGEND_SWATCH, x: SWATCH_LEFT + i * (LEGEND_SWATCH + SWATCH_GAP), y: 2 }, `${swatch.shape}-${swatch.color}`))), _jsx("text", { x: textLeft, y: 11, fontSize: FONT_SIZE, fill: "black", textDecoration: entry.hidden ? 'line-through' : undefined, children: entry.label })] })] })) }, entry.key))), overflowLabel === undefined ? null : (_jsxs("g", { transform: `translate(0 ${y})`, children: [_jsx("rect", { x: 0, y: 0, width: totalWidth, height: LEGEND_ROW_HEIGHT, fill: "rgba(255,255,255,0.95)" }), _jsx("text", { x: textLeft, y: 11, fontSize: FONT_SIZE, fill: "#555", children: overflowLabel })] }))] })) : null;
106
115
  }
@@ -36,5 +36,5 @@ type Props = Omit<TextFieldProps, 'value' | 'onChange' | 'error' | 'helperText'
36
36
  * error once two invalid characters are entered. Optional `quickPicks` render a
37
37
  * chip row of common tags that fill the field on click.
38
38
  */
39
- export default function TagTextField(props: Props): import("react").JSX.Element;
40
- export {};
39
+ declare const TagTextField: (props: Props) => import("react").JSX.Element;
40
+ export default TagTextField;
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState } from 'react';
3
3
  import { Chip, Stack, TextField } from '@mui/material';
4
+ import { observer } from 'mobx-react';
4
5
  import { isValidTag } from '../util/tags.js';
5
6
  /**
6
7
  * Uncontrolled-style TextField for a two-character SAM tag (e.g. HP, RG, XS).
@@ -9,7 +10,7 @@ import { isValidTag } from '../util/tags.js';
9
10
  * error once two invalid characters are entered. Optional `quickPicks` render a
10
11
  * chip row of common tags that fill the field on click.
11
12
  */
12
- export default function TagTextField(props) {
13
+ const TagTextField = observer(function TagTextField(props) {
13
14
  const { defaultValue = '', onValueChange, helperText, inputTestId, quickPicks, ...rest } = props;
14
15
  const [text, setText] = useState(defaultValue);
15
16
  const showError = text.length === 2 && !isValidTag(text);
@@ -29,4 +30,5 @@ export default function TagTextField(props) {
29
30
  }, onChange: event => {
30
31
  setValue(event.target.value);
31
32
  } })] }));
32
- }
33
+ });
34
+ export default TagTextField;
@@ -18,8 +18,9 @@
18
18
  * {@link LoadingProgress} directly — bare, it renders an unconstrained
19
19
  * full-width bar under an unaligned label.
20
20
  */
21
- export default function ViewLoadingScreen({ message, progress, source, }: {
21
+ declare const ViewLoadingScreen: ({ message, progress, source, }: {
22
22
  message?: string;
23
23
  progress?: number;
24
24
  source?: string;
25
- }): import("react").JSX.Element;
25
+ }) => import("react").JSX.Element;
26
+ export default ViewLoadingScreen;
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Typography } from '@mui/material';
3
+ import { observer } from 'mobx-react';
3
4
  import { useSlowLoad, useStalled } from '../util/hooks.js';
4
5
  import { makeStyles } from '../util/tss-react/index.js';
5
6
  import LoadingProgress from './LoadingProgress.js';
@@ -44,9 +45,10 @@ const useStyles = makeStyles()(theme => ({
44
45
  * {@link LoadingProgress} directly — bare, it renders an unconstrained
45
46
  * full-width bar under an unaligned label.
46
47
  */
47
- export default function ViewLoadingScreen({ message, progress, source, }) {
48
+ const ViewLoadingScreen = observer(function ViewLoadingScreen({ message, progress, source, }) {
48
49
  const { classes } = useStyles();
49
50
  const slow = useSlowLoad();
50
51
  const stalled = useStalled(`${message}|${progress}|${source}`);
51
52
  return (_jsxs("div", { className: classes.root, children: [_jsx(LoadingProgress, { variant: "h6", message: slow ? message : undefined, fraction: slow ? progress : undefined, barClassName: classes.bar }), stalled && source ? (_jsxs(Typography, { variant: "body2", className: classes.stalled, children: ["still waiting on ", source] })) : null] }));
52
- }
53
+ });
54
+ export default ViewLoadingScreen;
@@ -1,10 +1,10 @@
1
1
  import type PluginManager from '../PluginManager.ts';
2
- import type { AnyConfigurationModel } from '../configuration/index.ts';
2
+ import type { AnyTrackConfig } from '../configuration/index.ts';
3
3
  import type { AbstractSessionModel, TrackActionView } from '../util/types/index.ts';
4
4
  import type { MenuItem } from './MenuTypes.ts';
5
5
  export interface ExtraTrackMenuItemsProps {
6
6
  session: AbstractSessionModel;
7
- config: AnyConfigurationModel;
7
+ config: AnyTrackConfig;
8
8
  view?: TrackActionView;
9
9
  }
10
10
  /** Return the items to add, or nothing when the track isn't yours. */
@@ -56,7 +56,7 @@ export interface RampScale {
56
56
  format?: (value: number) => string;
57
57
  /**
58
58
  * The loaded values' extremes. An end of `domain` the data runs past prints
59
- * `≤` or `≥`, since the ramp paints every value beyond it in its end colour.
59
+ * `≤` or `≥`, since the ramp paints every value beyond it in its end color.
60
60
  */
61
61
  extent?: readonly [number, number];
62
62
  }
@@ -66,6 +66,10 @@ export interface RampScale {
66
66
  * the key cannot list a color nothing painted.
67
67
  */
68
68
  export type ColorScale = CategoricalScale | RampScale;
69
+ export declare function rampLabels({ domain, format, extent, }: RampScale): {
70
+ minLabel: string;
71
+ maxLabel: string;
72
+ };
69
73
  /**
70
74
  * The one derivation of a legend from a display's color scales: a section per
71
75
  * scale, in the order declared. On screen `FloatingLegend` renders the result
@@ -1,9 +1,6 @@
1
1
  import { groupKeyComparator } from '../util/groupKeys.js';
2
2
  import { formatScore } from '../util/numericUtils.js';
3
- // A lone ramp names itself on its row: `FloatingLegend` and `legendEntries`
4
- // draw a section's title only beside other sections, and a bar of numbers
5
- // with nothing saying what they count is not a key.
6
- function rampItem({ title, domain, stops, format = formatScore, extent }, lone) {
3
+ export function rampLabels({ domain, format = formatScore, extent, }) {
7
4
  const [min, max] = domain;
8
5
  const [lo, hi] = extent ?? domain;
9
6
  // compared at float32 as well, since a value lane carries the extent in one
@@ -11,12 +8,17 @@ function rampItem({ title, domain, stops, format = formatScore, extent }, lone)
11
8
  const below = lo < min && Math.fround(lo) < Math.fround(min);
12
9
  const above = hi > max && Math.fround(hi) > Math.fround(max);
13
10
  return {
14
- label: lone ? (title ?? '') : '',
15
- gradient: {
16
- stops,
17
- minLabel: `${below ? '≤' : ''}${format(min)}`,
18
- maxLabel: `${above ? '≥' : ''}${format(max)}`,
19
- },
11
+ minLabel: `${below ? '≤' : ''}${format(min)}`,
12
+ maxLabel: `${above ? '≥' : ''}${format(max)}`,
13
+ };
14
+ }
15
+ // A lone ramp names itself on its row: `FloatingLegend` and `legendEntries`
16
+ // draw a section's title only beside other sections, and a bar of numbers
17
+ // with nothing saying what they count is not a key.
18
+ function rampItem(scale, lone) {
19
+ return {
20
+ label: lone ? (scale.title ?? '') : '',
21
+ gradient: { stops: scale.stops, ...rampLabels(scale) },
20
22
  };
21
23
  }
22
24
  function sectionOf(scale, lone) {
@@ -15,11 +15,9 @@ export declare const paletteColors: {
15
15
  * The wide qualitative palette: every scheme above, in order, deduped and with
16
16
  * the neutrals dropped. ~40 entries.
17
17
  *
18
- * One list, because "give each row a distinct color" is one question this repo
19
- * answers in two places — the multi-row painter handing colors out by row
20
- * index, and the arrangement dialog's palette-by-attribute — and two lists
21
- * would mean a track's automatic colors and the colors it takes when a user
22
- * palettes it by hand were different palettes for no reason a reader could see.
18
+ * A feature's categorical color deals from it; a row's deals from
19
+ * `rowPaletteColorAt`, which re-lights tableau10 rather than reaching for
20
+ * another scheme's hues.
23
21
  *
24
22
  * `tableau10` leads because its hues are the most evenly separated, so a track
25
23
  * with a handful of rows spends only that. The tail is what makes the 26
@@ -31,21 +29,16 @@ export declare const paletteColors: {
31
29
  * re-palettes), while a by-position painter has no value to hash and wraps.
32
30
  *
33
31
  * **It holds 14 pairs `similarColors` calls the same** — five schemes' blues,
34
- * oranges, greens, reds and pinks — and deduping it at construction is the
35
- * wrong reading of that, measured on the 38 GENCODE gene biotypes. Hashed,
36
- * which is what a track with no `colorDomain` does, 30 of them land on 22
37
- * colors and 38 on 26; the loss is the birthday collision on 40 slots, not the
38
- * near-twins, and only 3 of the pairs they land on read alike. Pruning to the
39
- * 30 distinct entries makes that 23 and 24, so it costs ten colors and buys
40
- * nothing.
32
+ * oranges, greens, reds and pinks. A dealt scale (`categoricalScale`'s `held`)
33
+ * steps over a twin of a color already dealt, so they cost a track only once
34
+ * it has more values than the 30 distinct entries.
41
35
  *
42
- * The near-twins bite the PINNED case instead, where a `domain` spends the
43
- * list in order: 30 listed values take 30 colors today and 7 of those pairs
44
- * read alike. Ordering the distinct 30 first and the twins behind them fixes
45
- * that outright (0 pairs at 30 listed values, 11 at 38 where the twins are
46
- * reached anyway) and costs no colors — but it moves every hashed color in
47
- * marks, GWAS, canvas, multi-row and the arrangement dialog, so it is a pass
48
- * with a figure refresh in it.
36
+ * The near-twins bite a `domain` instead, which spends the list in order: 30
37
+ * listed values take 30 colors and 7 of those pairs read alike. Ordering the
38
+ * distinct 30 first and the twins behind them fixes that outright (0 pairs at
39
+ * 30 listed values, 11 at 38 where the twins are reached anyway) and costs no
40
+ * colors — but it moves every hashed color in marks, GWAS, canvas, multi-row
41
+ * and the arrangement dialog, so it is a pass with a figure refresh in it.
49
42
  */
50
43
  export declare const categoricalPalette: string[];
51
44
  /**
@@ -60,18 +53,30 @@ export declare const categoricalPalette: string[];
60
53
  export declare function categoricalValueColor(value: string): string;
61
54
  export declare function categoricalValueColor<T>(value: string, palette: readonly T[]): T;
62
55
  /**
63
- * The categorical rule every scaled channel resolves through. With no
64
- * `domain` a value takes `categoricalValueColor`'s slot in `range`. With one,
65
- * the listed values take `range` in order, continuing into the `fallback`
66
- * entries `range` lacks past its end, and any other value takes a slot of the
67
- * whole list derived from itself that no listed value holds, nor one
68
- * `isNear` calls the same. A value's entry depends only on the value and the
69
- * declaration, so every region agrees on it, and adding a listed value moves
70
- * only the unlisted values on the slots it takes.
56
+ * The slots a categorical scale has dealt the values it met that its `domain`
57
+ * does not list, each recorded on first sight and never dealt again. The
58
+ * caller owns it and hands the same one to every scale that should agree.
71
59
  */
72
- export declare function categoricalScale<T>(domain: readonly (string | number)[] | undefined, range: readonly T[], { fallback, isNear, }?: {
60
+ export type HeldSlots = Map<string, number>;
61
+ /**
62
+ * The categorical rule every scaled channel resolves through. The values
63
+ * `domain` lists take `range` in order, continuing into the `fallback`
64
+ * entries `range` lacks past its end. Any other value takes the slot derived
65
+ * from itself (`categoricalValueColor`'s, with no `domain`) unless a listed
66
+ * value holds it or one `isNear` calls the same, and then another slot derived
67
+ * from itself.
68
+ *
69
+ * With `held`, a value is dealt once, on first sight: its slot avoids every
70
+ * slot `held` already records and their near twins as well, so values met
71
+ * together never share an entry while the list has room, and the slot is
72
+ * recorded so the value keeps it as others arrive. A value nothing else
73
+ * collides with keeps the entry it takes without `held`. With no `domain`, the
74
+ * deal spends `range` before spilling into the `fallback` entries it lacks.
75
+ */
76
+ export declare function categoricalScale<T>(domain: readonly (string | number)[] | undefined, range: readonly T[], { fallback, isNear, held, }?: {
73
77
  fallback?: readonly T[];
74
78
  isNear?: (a: T, b: T) => boolean;
79
+ held?: HeldSlots;
75
80
  }): (value: string) => T;
76
81
  /**
77
82
  * Whether two CSS colors read as one: under 0.05 apart in OKLab, where the
@@ -81,9 +86,10 @@ export declare function similarColors(a: string, b: string): boolean;
81
86
  /**
82
87
  * `categoricalScale` for a color channel: `palette` (the wide palette when
83
88
  * empty) spent in `domain` order and continued into the wide palette, and an
84
- * unlisted value never on a listed value's color or one that reads the same.
89
+ * unlisted value never on a listed value's color or one that reads the same,
90
+ * nor, with `held`, on the color of a value met before it.
85
91
  */
86
- export declare function categoricalColorScale(domain: readonly (string | number)[] | undefined, palette?: readonly string[]): (value: string) => string;
92
+ export declare function categoricalColorScale(domain: readonly (string | number)[] | undefined, palette?: readonly string[], held?: HeldSlots): (value: string) => string;
87
93
  /**
88
94
  * The color one value of a categorical color channel paints, by
89
95
  * `categoricalColorScale`. A value-less feature is neutral grey, and an array
@@ -104,6 +110,11 @@ export declare function hashString(str: string): number;
104
110
  export declare function getQueryColor(queryName: string): string;
105
111
  /** The palette color for a chromosome at `position` in its assembly. */
106
112
  export declare function refNamePaletteColorAt(position: number): string;
113
+ /**
114
+ * The color the row palette deals the row or value at `position`: tableau10
115
+ * less its grey, then re-lit laps of it, as a karyotype's are.
116
+ */
117
+ export declare function rowPaletteColorAt(position: number): string;
107
118
  /**
108
119
  * The color a refName paints, BY POSITION IN THE ASSEMBLY where the caller
109
120
  * knows its chromosome order.
@@ -121,7 +132,7 @@ export declare function refNamePaletteColorAt(position: number): string;
121
132
  export declare function refNameColor(name: string, position: number | undefined): string;
122
133
  /**
123
134
  * A palette named in `namedPalettes`, or a comma-separated list of CSS
124
- * colours; undefined, with a warning, for anything else.
135
+ * colors; undefined, with a warning, for anything else.
125
136
  */
126
137
  export declare function paletteFromSpec(spec: unknown): readonly string[] | undefined;
127
138
  export { category10, set1 };