@jbrowse/core 5.0.0-beta.13 → 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 (391) hide show
  1. package/README.md +365 -69
  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 +3 -2
  5. package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +4 -2
  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 +1 -1
  36. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +10 -19
  37. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.d.ts +3 -2
  38. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.js +4 -2
  39. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +4 -4
  40. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.d.ts +3 -2
  41. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.js +4 -2
  42. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.d.ts +1 -2
  43. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.js +2 -2
  44. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.d.ts +1 -2
  45. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.js +15 -36
  46. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.d.ts +3 -2
  47. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +4 -2
  48. package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.d.ts +2 -1
  49. package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.js +22 -6
  50. package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +13 -1
  51. package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +28 -1
  52. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +2 -2
  53. package/esm/BaseFeatureWidget/stateModelFactory.d.ts +2 -0
  54. package/esm/PluginManager.d.ts +1 -0
  55. package/esm/PluginManager.js +6 -0
  56. package/esm/ReExports/coreModules.generated.js +538 -524
  57. package/esm/ReExports/coreWorkerModules.generated.js +454 -441
  58. package/esm/ReExports/lazify.js +3 -2
  59. package/esm/ReExports/list.js +15 -6
  60. package/esm/ReExports/names.d.ts +1 -0
  61. package/esm/ReExports/names.generated.d.ts +2 -0
  62. package/esm/ReExports/names.generated.js +566 -0
  63. package/esm/ReExports/names.js +3 -0
  64. package/esm/assemblyManager/assembly.d.ts +9 -0
  65. package/esm/assemblyManager/assembly.js +13 -0
  66. package/esm/assemblyManager/assemblyConfigSchema.d.ts +6 -1
  67. package/esm/assemblyManager/assemblyConfigSchema.js +23 -22
  68. package/esm/assemblyManager/assemblyManager.d.ts +11 -0
  69. package/esm/assemblyManager/assemblyManager.js +2 -0
  70. package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +9 -0
  71. package/esm/assemblyManager/expandAssemblyConfigShorthand.js +23 -0
  72. package/esm/checkPlugins.js +10 -4
  73. package/esm/configuration/configurationSchema.d.ts +18 -5
  74. package/esm/configuration/configurationSchema.js +9 -7
  75. package/esm/configuration/configurationSchemaUnion.d.ts +2 -1
  76. package/esm/configuration/configurationSchemaUnion.js +2 -1
  77. package/esm/configuration/configurationSlot.js +4 -4
  78. package/esm/configuration/fillLocations.d.ts +4 -2
  79. package/esm/configuration/fillLocations.js +9 -3
  80. package/esm/configuration/formatAboutConfigSchema.d.ts +2 -2
  81. package/esm/configuration/formatAboutConfigSchema.js +2 -2
  82. package/esm/configuration/formatDetailsConfigSchema.d.ts +2 -2
  83. package/esm/configuration/formatDetailsConfigSchema.js +5 -5
  84. package/esm/configuration/getConf.js +13 -4
  85. package/esm/configuration/index.d.ts +1 -1
  86. package/esm/configuration/index.js +1 -1
  87. package/esm/configuration/plot.d.ts +2 -2
  88. package/esm/configuration/plot.js +32 -18
  89. package/esm/configuration/schemaRegistry.d.ts +0 -2
  90. package/esm/configuration/slotFacade.js +2 -2
  91. package/esm/configuration/snapshotPreprocess.d.ts +42 -18
  92. package/esm/configuration/snapshotPreprocess.js +94 -34
  93. package/esm/configuration/tabixShorthand.js +1 -3
  94. package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +7 -0
  95. package/esm/data_adapters/BaseAdapter/BaseAdapter.js +7 -0
  96. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +0 -22
  97. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +0 -55
  98. package/esm/data_adapters/BaseAdapter/index.d.ts +0 -1
  99. package/esm/data_adapters/BaseAdapter/index.js +0 -1
  100. package/esm/data_adapters/BaseAdapter/rowSources.d.ts +2 -2
  101. package/esm/data_adapters/BaseAdapter/types.d.ts +1 -0
  102. package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +2 -0
  103. package/esm/data_adapters/CytobandAdapter/configSchema.js +5 -0
  104. package/esm/data_adapters/dataAdapterCache.d.ts +25 -13
  105. package/esm/data_adapters/dataAdapterCache.js +68 -24
  106. package/esm/data_adapters/getFeatureAdapter.d.ts +9 -0
  107. package/esm/data_adapters/getFeatureAdapter.js +17 -0
  108. package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +2 -0
  109. package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.js +2 -0
  110. package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +40 -6
  111. package/esm/pluggableElementTypes/models/BaseDisplayModel.js +56 -8
  112. package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +3 -3
  113. package/esm/pluggableElementTypes/models/BaseTrackModel.js +7 -6
  114. package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +2 -0
  115. package/esm/pluggableElementTypes/models/BaseViewModel.js +2 -0
  116. package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +3 -0
  117. package/esm/pluggableElementTypes/models/InternetAccountModel.js +3 -0
  118. package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +3 -0
  119. package/esm/pluggableElementTypes/models/baseConnectionConfig.js +3 -0
  120. package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +3 -1
  121. package/esm/pluggableElementTypes/models/baseInternetAccountConfig.js +3 -1
  122. package/esm/pluggableElementTypes/models/baseTrackConfig.js +9 -1
  123. package/esm/pluggableElementTypes/models/components/SaveTrackData.js +2 -2
  124. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +1 -1
  125. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +1 -1
  126. package/esm/pluginDefinitions.d.ts +7 -0
  127. package/esm/pluginDefinitions.js +20 -0
  128. package/esm/rpc/RpcRegistry.d.ts +0 -10
  129. package/esm/rpc/byteBudget.d.ts +8 -0
  130. package/esm/rpc/byteBudget.js +13 -0
  131. package/esm/rpc/configSchema.d.ts +2 -0
  132. package/esm/rpc/configSchema.js +3 -1
  133. package/esm/rpc/coreRpcMethods.d.ts +0 -1
  134. package/esm/rpc/coreRpcMethods.js +0 -1
  135. package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +2 -2
  136. package/esm/rpc/methods/CoreGetEncodedLayers.js +7 -5
  137. package/esm/rpc/methods/layerFeatures.d.ts +9 -6
  138. package/esm/rpc/methods/layerFeatures.js +21 -5
  139. package/esm/ui/ActionLink.d.ts +3 -2
  140. package/esm/ui/ActionLink.js +4 -2
  141. package/esm/ui/AddCustomPluginDialog.d.ts +3 -2
  142. package/esm/ui/AddCustomPluginDialog.js +6 -4
  143. package/esm/ui/BaseTooltip.d.ts +3 -2
  144. package/esm/ui/BaseTooltip.js +4 -2
  145. package/esm/ui/CascadingMenu.js +14 -12
  146. package/esm/ui/CascadingMenuButton.d.ts +2 -2
  147. package/esm/ui/CascadingMenuButton.js +5 -4
  148. package/esm/ui/CascadingMenuHelpDialog.d.ts +3 -2
  149. package/esm/ui/CascadingMenuHelpDialog.js +4 -2
  150. package/esm/ui/CascadingMenuHelpIconButton.d.ts +4 -3
  151. package/esm/ui/CascadingMenuHelpIconButton.js +9 -5
  152. package/esm/ui/ColorPicker.d.ts +5 -4
  153. package/esm/ui/ColorPicker.js +6 -4
  154. package/esm/ui/ContextMenu.d.ts +1 -1
  155. package/esm/ui/ContextMenu.js +1 -1
  156. package/esm/ui/CopyToClipboardButton.d.ts +3 -2
  157. package/esm/ui/CopyToClipboardButton.js +4 -2
  158. package/esm/ui/Crosshairs.js +13 -10
  159. package/esm/ui/DOMPurifySanitizedHTML.d.ts +3 -2
  160. package/esm/ui/DOMPurifySanitizedHTML.js +4 -2
  161. package/esm/ui/DataGridFlexContainer.d.ts +3 -2
  162. package/esm/ui/DataGridFlexContainer.js +4 -2
  163. package/esm/ui/Dialog.d.ts +1 -1
  164. package/esm/ui/Dialog.js +5 -4
  165. package/esm/ui/DropDownMenu.js +2 -2
  166. package/esm/ui/EditableTypography.d.ts +1 -1
  167. package/esm/ui/EditableTypography.js +3 -2
  168. package/esm/ui/ErrorActions.d.ts +3 -2
  169. package/esm/ui/ErrorActions.js +4 -2
  170. package/esm/ui/ErrorBanner.d.ts +2 -2
  171. package/esm/ui/ErrorBanner.js +3 -2
  172. package/esm/ui/ErrorBar.d.ts +3 -2
  173. package/esm/ui/ErrorBar.js +4 -2
  174. package/esm/ui/ErrorMessage.d.ts +3 -2
  175. package/esm/ui/ErrorMessage.js +4 -2
  176. package/esm/ui/ErrorMessageStackTraceContents.d.ts +3 -2
  177. package/esm/ui/ErrorMessageStackTraceContents.js +4 -2
  178. package/esm/ui/ErrorMessageStackTraceDialog.d.ts +3 -2
  179. package/esm/ui/ErrorMessageStackTraceDialog.js +4 -2
  180. package/esm/ui/ErrorOverlay.d.ts +3 -2
  181. package/esm/ui/ErrorOverlay.js +4 -2
  182. package/esm/ui/ExportSvgDialog.d.ts +3 -2
  183. package/esm/ui/ExportSvgDialog.js +4 -2
  184. package/esm/ui/ExternalLink.d.ts +2 -1
  185. package/esm/ui/ExternalLink.js +4 -2
  186. package/esm/ui/FactoryResetDialog.d.ts +3 -2
  187. package/esm/ui/FactoryResetDialog.js +4 -2
  188. package/esm/ui/FatalErrorDialog.d.ts +3 -2
  189. package/esm/ui/FatalErrorDialog.js +6 -4
  190. package/esm/ui/FileDropZone.d.ts +3 -2
  191. package/esm/ui/FileDropZone.js +4 -2
  192. package/esm/ui/FileSelector/LocalFileChooser.js +4 -4
  193. package/esm/ui/FileSelector/LocationInput.d.ts +3 -2
  194. package/esm/ui/FileSelector/LocationInput.js +4 -2
  195. package/esm/ui/FileSelector/SourceTypeSelector.d.ts +3 -2
  196. package/esm/ui/FileSelector/SourceTypeSelector.js +8 -6
  197. package/esm/ui/GpuFallbackButton.d.ts +3 -2
  198. package/esm/ui/GpuFallbackButton.js +4 -2
  199. package/esm/ui/HoverMenu.d.ts +2 -2
  200. package/esm/ui/HoverMenu.js +7 -3
  201. package/esm/ui/HoverTooltip.d.ts +3 -2
  202. package/esm/ui/HoverTooltip.js +4 -2
  203. package/esm/ui/Icons.d.ts +5 -5
  204. package/esm/ui/Icons.js +11 -10
  205. package/esm/ui/InlineMenuControls.d.ts +2 -2
  206. package/esm/ui/InlineMenuControls.js +4 -3
  207. package/esm/ui/JexlFilterRowEditors.d.ts +4 -4
  208. package/esm/ui/JexlFilterRowEditors.js +9 -8
  209. package/esm/ui/LabeledCheckbox.d.ts +3 -2
  210. package/esm/ui/LabeledCheckbox.js +4 -2
  211. package/esm/ui/LazyBaseTooltip.d.ts +12 -3
  212. package/esm/ui/LazyBaseTooltip.js +4 -2
  213. package/esm/ui/LegendSwatchGlyph.js +1 -0
  214. package/esm/ui/LoadingDots.d.ts +2 -1
  215. package/esm/ui/LoadingDots.js +4 -2
  216. package/esm/ui/LoadingEllipses.d.ts +5 -2
  217. package/esm/ui/LoadingEllipses.js +5 -3
  218. package/esm/ui/LoadingOverlay.d.ts +3 -2
  219. package/esm/ui/LoadingOverlay.js +4 -2
  220. package/esm/ui/LoadingProgress.d.ts +3 -2
  221. package/esm/ui/LoadingProgress.js +4 -2
  222. package/esm/ui/Logo.d.ts +2 -2
  223. package/esm/ui/Logo.js +9 -8
  224. package/esm/ui/MenuItemChevron.d.ts +2 -2
  225. package/esm/ui/MenuItemChevron.js +3 -2
  226. package/esm/ui/MenuItemEndDecoration.d.ts +2 -2
  227. package/esm/ui/MenuItemEndDecoration.js +3 -2
  228. package/esm/ui/MenuItemTrailing.d.ts +2 -2
  229. package/esm/ui/MenuItemTrailing.js +7 -6
  230. package/esm/ui/MenuTypes.d.ts +21 -1
  231. package/esm/ui/MenuTypes.js +20 -0
  232. package/esm/ui/MonospaceTextField.d.ts +3 -2
  233. package/esm/ui/MonospaceTextField.js +4 -2
  234. package/esm/ui/NumberTextField.d.ts +2 -2
  235. package/esm/ui/NumberTextField.js +4 -2
  236. package/esm/ui/PaletteContext.d.ts +11 -9
  237. package/esm/ui/PaletteContext.js +33 -18
  238. package/esm/ui/PluginStoreCard.d.ts +3 -2
  239. package/esm/ui/PluginStoreCard.js +4 -2
  240. package/esm/ui/PopoverPicker.d.ts +3 -2
  241. package/esm/ui/PopoverPicker.js +4 -2
  242. package/esm/ui/PrerenderedCanvas.d.ts +2 -2
  243. package/esm/ui/PrerenderedCanvas.js +3 -2
  244. package/esm/ui/RedErrorMessageBox.d.ts +3 -2
  245. package/esm/ui/RedErrorMessageBox.js +4 -2
  246. package/esm/ui/RefNameAutocomplete/EndAdornment.d.ts +3 -2
  247. package/esm/ui/RefNameAutocomplete/EndAdornment.js +4 -2
  248. package/esm/ui/RefNameAutocomplete/HelpDialog.d.ts +3 -2
  249. package/esm/ui/RefNameAutocomplete/HelpDialog.js +4 -2
  250. package/esm/ui/ReplaceCurrentViewButton.d.ts +3 -2
  251. package/esm/ui/ReplaceCurrentViewButton.js +4 -2
  252. package/esm/ui/ResizeHandle.d.ts +2 -2
  253. package/esm/ui/ResizeHandle.js +3 -2
  254. package/esm/ui/SanitizedHTML.d.ts +3 -2
  255. package/esm/ui/SanitizedHTML.js +6 -4
  256. package/esm/ui/ScrollChrome.d.ts +3 -2
  257. package/esm/ui/ScrollChrome.js +4 -2
  258. package/esm/ui/ScrollEdgeShadow.d.ts +2 -2
  259. package/esm/ui/ScrollEdgeShadow.js +2 -2
  260. package/esm/ui/SessionJsonPanel.d.ts +3 -2
  261. package/esm/ui/SessionJsonPanel.js +4 -2
  262. package/esm/ui/ShareLinkField.d.ts +3 -2
  263. package/esm/ui/ShareLinkField.js +4 -2
  264. package/esm/ui/SingleSlider.d.ts +2 -2
  265. package/esm/ui/SingleSlider.js +4 -2
  266. package/esm/ui/SliderTooltip.d.ts +2 -1
  267. package/esm/ui/SliderTooltip.js +4 -2
  268. package/esm/ui/SnackbarContents.d.ts +3 -2
  269. package/esm/ui/SnackbarContents.js +4 -2
  270. package/esm/ui/SnackbarModel.d.ts +2 -0
  271. package/esm/ui/SnackbarModel.js +2 -0
  272. package/esm/ui/StackTraceButton.d.ts +3 -2
  273. package/esm/ui/StackTraceButton.js +4 -2
  274. package/esm/ui/StatusProgressBar.d.ts +3 -2
  275. package/esm/ui/StatusProgressBar.js +4 -2
  276. package/esm/ui/SubmitForm.d.ts +2 -1
  277. package/esm/ui/SubmitForm.js +4 -2
  278. package/esm/ui/SvgColorLegend.d.ts +3 -4
  279. package/esm/ui/SvgColorLegend.js +27 -18
  280. package/esm/ui/TagTextField.d.ts +2 -2
  281. package/esm/ui/TagTextField.js +4 -2
  282. package/esm/ui/ViewLoadingScreen.d.ts +3 -2
  283. package/esm/ui/ViewLoadingScreen.js +4 -2
  284. package/esm/ui/colorScale.d.ts +5 -1
  285. package/esm/ui/colorScale.js +12 -10
  286. package/esm/ui/colors.d.ts +3 -3
  287. package/esm/ui/colors.js +7 -7
  288. package/esm/ui/filterMenuItems.d.ts +10 -31
  289. package/esm/ui/filterMenuItems.js +13 -14
  290. package/esm/ui/index.d.ts +1 -1
  291. package/esm/ui/index.js +1 -1
  292. package/esm/ui/launchTargetsMenuItem.js +9 -13
  293. package/esm/ui/legendMenuItem.d.ts +4 -4
  294. package/esm/ui/legendMenuItem.js +4 -4
  295. package/esm/ui/menuItemAdornment.d.ts +1 -1
  296. package/esm/ui/menuItemAdornment.js +1 -1
  297. package/esm/ui/menuItems.d.ts +1 -1
  298. package/esm/ui/menuItems.js +1 -1
  299. package/esm/ui/menuLabels.d.ts +2 -2
  300. package/esm/ui/menuLabels.js +2 -2
  301. package/esm/ui/palette.d.ts +2 -2
  302. package/esm/ui/palette.js +10 -10
  303. package/esm/ui/radioSubMenu.d.ts +5 -3
  304. package/esm/ui/radioSubMenu.js +2 -2
  305. package/esm/ui/rampKey.d.ts +15 -0
  306. package/esm/ui/rampKey.js +17 -0
  307. package/esm/ui/showSubMenu.d.ts +0 -5
  308. package/esm/ui/showSubMenu.js +6 -15
  309. package/esm/ui/theme.d.ts +2 -2
  310. package/esm/ui/theme.js +1 -1
  311. package/esm/ui/useAssemblySelection.d.ts +2 -0
  312. package/esm/ui/useMouseTracking.d.ts +8 -20
  313. package/esm/ui/useMouseTracking.js +23 -62
  314. package/esm/ui/usePlacedMenuFocus.d.ts +19 -0
  315. package/esm/ui/usePlacedMenuFocus.js +28 -0
  316. package/esm/util/Base1DViewModel.d.ts +5 -3
  317. package/esm/util/Base1DViewModel.js +5 -3
  318. package/esm/util/SvgCanvas.js +1 -1
  319. package/esm/util/aggregateFieldName.d.ts +1 -10
  320. package/esm/util/aggregateFieldName.js +1 -8
  321. package/esm/util/analytics.d.ts +4 -6
  322. package/esm/util/analytics.js +143 -12
  323. package/esm/util/bezierConnector.d.ts +20 -0
  324. package/esm/util/bezierConnector.js +34 -100
  325. package/esm/util/cacheBudgets.d.ts +3 -0
  326. package/esm/util/cacheBudgets.js +3 -0
  327. package/esm/util/categoricalField.d.ts +2 -2
  328. package/esm/util/categoricalField.js +3 -3
  329. package/esm/util/color/index.d.ts +1 -1
  330. package/esm/util/color/index.js +2 -2
  331. package/esm/util/color-bits/bit.js +1 -1
  332. package/esm/util/color-bits/parse.js +6 -6
  333. package/esm/util/colorBits.d.ts +15 -4
  334. package/esm/util/colorBits.js +38 -15
  335. package/esm/util/colorRamp.d.ts +3 -3
  336. package/esm/util/colorRamp.js +14 -2
  337. package/esm/util/colorScale.d.ts +114 -20
  338. package/esm/util/colorScale.js +124 -26
  339. package/esm/util/colorSchemes.d.ts +6 -4
  340. package/esm/util/colorSchemes.js +6 -3
  341. package/esm/util/createSvgRasterCanvas.d.ts +14 -1
  342. package/esm/util/createSvgRasterCanvas.js +36 -12
  343. package/esm/util/diagonalizeRegions.js +18 -9
  344. package/esm/util/featureTransforms.d.ts +2 -2
  345. package/esm/util/featureTransforms.js +85 -135
  346. package/esm/util/fileHandleStore.js +5 -0
  347. package/esm/util/groupKeys.d.ts +5 -4
  348. package/esm/util/groupKeys.js +15 -9
  349. package/esm/util/index.js +1 -1
  350. package/esm/util/installFetch.d.ts +2 -2
  351. package/esm/util/installPrerequisiteFetch.d.ts +8 -3
  352. package/esm/util/installPrerequisiteFetch.js +9 -7
  353. package/esm/util/io/RemoteFileWithRangeCache.d.ts +1 -1
  354. package/esm/util/io/RemoteFileWithRangeCache.js +1 -1
  355. package/esm/util/jexl.js +1 -1
  356. package/esm/util/layouts/GranularRectLayout.d.ts +19 -3
  357. package/esm/util/layouts/GranularRectLayout.js +57 -34
  358. package/esm/util/leadingEdgeAutorun.d.ts +9 -1
  359. package/esm/util/leadingEdgeAutorun.js +5 -2
  360. package/esm/util/markEncoding.d.ts +10 -8
  361. package/esm/util/markEncoding.js +50 -12
  362. package/esm/util/markEncodingTypes.d.ts +74 -20
  363. package/esm/util/originCut.d.ts +14 -0
  364. package/esm/util/originCut.js +19 -0
  365. package/esm/util/paintLayer.d.ts +1 -1
  366. package/esm/util/paintLayer.js +4 -3
  367. package/esm/util/pathSeries.d.ts +18 -0
  368. package/esm/util/pathSeries.js +143 -0
  369. package/esm/util/pressOwner.d.ts +20 -0
  370. package/esm/util/pressOwner.js +26 -0
  371. package/esm/util/quantileExtent.d.ts +3 -3
  372. package/esm/util/quantileExtent.js +3 -3
  373. package/esm/util/rowStackGeometry.d.ts +1 -1
  374. package/esm/util/rowStackGeometry.js +1 -1
  375. package/esm/util/sessionActivity.d.ts +36 -0
  376. package/esm/util/sessionActivity.js +88 -0
  377. package/esm/util/stepOutputs.d.ts +165 -0
  378. package/esm/util/stepOutputs.js +201 -0
  379. package/esm/util/stepTables.d.ts +7 -3
  380. package/esm/util/stepTables.js +86 -3
  381. package/esm/util/thresholdScale.d.ts +1 -1
  382. package/esm/util/thresholdScale.js +1 -1
  383. package/esm/util/tracks.js +1 -1
  384. package/esm/util/usePanZoom.js +4 -10
  385. package/esm/util/windowStep.d.ts +6 -0
  386. package/esm/util/windowStep.js +153 -0
  387. package/package.json +23 -15
  388. package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +0 -40
  389. package/esm/data_adapters/BaseAdapter/featureDensity.js +0 -31
  390. package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +0 -11
  391. package/esm/rpc/methods/CoreGetFeatureDensity.js +0 -22
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { observer } from 'mobx-react';
2
3
  import { makeStyles } from '../util/tss-react/index.js';
3
4
  const useStyles = makeStyles()(theme => ({
4
5
  bg: {
@@ -16,7 +17,8 @@ const useStyles = makeStyles()(theme => ({
16
17
  // that still showed either failed loudly — but an MST type error surfacing here
17
18
  // over a view was captured and committed as if the figure were fine. Keying off
18
19
  // `#f88` instead would break on the dark theme and on any restyle.
19
- export default function RedErrorMessageBox({ children, }) {
20
+ const RedErrorMessageBox = observer(function RedErrorMessageBox({ children, }) {
20
21
  const { classes } = useStyles();
21
22
  return (_jsx("div", { className: classes.bg, "data-testid": "error-message-box", children: children }));
22
- }
23
+ });
24
+ export default RedErrorMessageBox;
@@ -1,5 +1,6 @@
1
1
  import type { MenuItem } from '../Menu.tsx';
2
- export default function EndAdornment({ showHelp, menuItems, }: {
2
+ declare const EndAdornment: ({ showHelp, menuItems, }: {
3
3
  showHelp?: boolean;
4
4
  menuItems?: MenuItem[];
5
- }): import("react").JSX.Element;
5
+ }) => import("react").JSX.Element;
6
+ export default EndAdornment;
@@ -4,12 +4,13 @@ import Help from '@mui/icons-material/Help';
4
4
  import MoreVertIcon from '@mui/icons-material/MoreVert';
5
5
  import SearchIcon from '@mui/icons-material/Search';
6
6
  import { InputAdornment } from '@mui/material';
7
+ import { observer } from 'mobx-react';
7
8
  import CascadingMenuButton from '../CascadingMenuButton.js';
8
9
  const HelpDialog = lazy(() => import('./HelpDialog.js'));
9
10
  // The search-box overflow (⋮) menu: consumer-supplied rows (e.g. recent
10
11
  // locations) sit above the built-in help entry. Rendered only when there is
11
12
  // something to show, so a bare box keeps just its search icon.
12
- export default function EndAdornment({ showHelp, menuItems = [], }) {
13
+ const EndAdornment = observer(function EndAdornment({ showHelp, menuItems = [], }) {
13
14
  const [helpDialogOpen, setHelpDialogOpen] = useState(false);
14
15
  const items = [
15
16
  ...menuItems,
@@ -28,4 +29,5 @@ export default function EndAdornment({ showHelp, menuItems = [], }) {
28
29
  return (_jsxs(InputAdornment, { position: "end", style: { marginRight: 7 }, children: [_jsx(SearchIcon, { fontSize: "small" }), items.length ? (_jsx(CascadingMenuButton, { menuItems: items, size: "small", stopPropagation: true, tooltip: "Search box options", children: _jsx(MoreVertIcon, { fontSize: "small" }) })) : null, helpDialogOpen ? (_jsx(Suspense, { fallback: null, children: _jsx(HelpDialog, { handleClose: () => {
29
30
  setHelpDialogOpen(false);
30
31
  } }) })) : null] }));
31
- }
32
+ });
33
+ export default EndAdornment;
@@ -1,3 +1,4 @@
1
- export default function HelpDialog({ handleClose, }: {
1
+ declare const HelpDialog: ({ handleClose, }: {
2
2
  handleClose: () => void;
3
- }): import("react").JSX.Element;
3
+ }) => import("react").JSX.Element;
4
+ export default HelpDialog;
@@ -1,7 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { observer } from 'mobx-react';
2
3
  import InfoDialog from '../InfoDialog.js';
3
- export default function HelpDialog({ handleClose, }) {
4
+ const HelpDialog = observer(function HelpDialog({ handleClose, }) {
4
5
  return (_jsxs(InfoDialog, { open: true, maxWidth: "xl", onClose: () => {
5
6
  handleClose();
6
7
  }, title: "Using the search box", children: [_jsx("h3", { children: "Searching" }), _jsxs("ul", { children: [_jsx("li", { children: "Jump to a feature or reference sequence by typing its name in the location box and pressing Enter." }), _jsxs("li", { children: ["Jump to a specific region by typing the region into the location box as: ", _jsx("code", { children: "ref:start..end" }), " or ", _jsx("code", { children: "ref:start-end" }), ". Commas are allowed in the start and end coordinates. A space-separated list of locstrings can be used to open up multiple chromosomes at a time"] }), _jsxs("li", { children: ["Find a group of reference sequences by typing a pattern containing", ' ', _jsx("code", { children: "*" }), ", which stands for any run of characters. The matches appear in the dropdown, with a row at the top that opens all of them at once. Useful on a fragmented or haplotype-resolved assembly, where the useful selection is a pattern rather than a list you keep by hand."] })] }), _jsx("h3", { children: "Example Searches" }), _jsxs("ul", { children: [_jsxs("li", { children: [_jsx("code", { children: "BRCA" }), " - searches for the feature named BRCA"] }), _jsxs("li", { children: [_jsx("code", { children: "chr4" }), " - jumps to chromosome 4"] }), _jsxs("li", { children: [_jsx("code", { children: "chr4:79,500,000..80,000,000" }), " - jumps the region on chromosome 4 between 79.5Mb and 80Mb."] }), _jsxs("li", { children: [_jsx("code", { children: "chr1:1-100 chr2:1-100" }), " - create a split view of chr1:1-100 and chr2:1-100"] }), _jsxs("li", { children: [_jsx("code", { children: "chr1 chr2 chr3" }), " - open up multiple chromosomes at once"] }), _jsxs("li", { children: [_jsx("code", { children: "chr1:1-100[rev] chr2:1-100" }), " - open up the first region in the horizontally flipped orientation"] }), _jsxs("li", { children: [_jsx("code", { children: "chr1 100 200" }), " - use whitespace separated refname, start, end"] }), _jsxs("li", { children: [_jsx("code", { children: "*_hap1" }), " - list every reference sequence whose name ends in _hap1, and offer to open all of them"] })] })] }));
7
- }
8
+ });
9
+ export default HelpDialog;
@@ -13,7 +13,8 @@
13
13
  * Pair it with `isSessionWithViewReplacement` — a session that cannot replace a
14
14
  * view should not be offered the choice.
15
15
  */
16
- export default function ReplaceCurrentViewButton({ disabled, onClick, }: {
16
+ declare const ReplaceCurrentViewButton: ({ disabled, onClick, }: {
17
17
  disabled?: boolean;
18
18
  onClick: () => void;
19
- }): import("react").JSX.Element;
19
+ }) => import("react").JSX.Element;
20
+ export default ReplaceCurrentViewButton;
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Button } from '@mui/material';
3
+ import { observer } from 'mobx-react';
3
4
  /**
4
5
  * The second way out of a launch dialog: put the view it builds in the slot the
5
6
  * launching view occupies instead of appending it below. Offered by every launch
@@ -15,8 +16,9 @@ import { Button } from '@mui/material';
15
16
  * Pair it with `isSessionWithViewReplacement` — a session that cannot replace a
16
17
  * view should not be offered the choice.
17
18
  */
18
- export default function ReplaceCurrentViewButton({ disabled, onClick, }) {
19
+ const ReplaceCurrentViewButton = observer(function ReplaceCurrentViewButton({ disabled, onClick, }) {
19
20
  return (_jsx(Button, { type: "button", variant: "contained", color: "primary", disabled: disabled, onClick: () => {
20
21
  onClick();
21
22
  }, children: "Replace current view" }));
22
- }
23
+ });
24
+ export default ReplaceCurrentViewButton;
@@ -1,5 +1,5 @@
1
1
  import type React from 'react';
2
- declare function ResizeHandle({ onDrag, onDragStart, onDragEnd, vertical, bar, grip, gain, className: originalClassName, onPointerDown, ...props }: {
2
+ declare const ResizeHandle: ({ onDrag, onDragStart, onDragEnd, vertical, bar, grip, gain, className: originalClassName, onPointerDown, ...props }: {
3
3
  onDrag: (distance: number) => void;
4
4
  onDragStart?: () => void;
5
5
  onDragEnd?: () => void;
@@ -13,5 +13,5 @@ declare function ResizeHandle({ onDrag, onDragStart, onDragEnd, vertical, bar, g
13
13
  * and this handle sits below more than one of them.
14
14
  */
15
15
  gain?: number;
16
- } & Omit<React.ComponentPropsWithoutRef<'div'>, 'onDrag' | 'onDragStart' | 'onDragEnd'>): React.JSX.Element;
16
+ } & Omit<React.ComponentPropsWithoutRef<'div'>, 'onDrag' | 'onDragStart' | 'onDragEnd'>) => React.JSX.Element;
17
17
  export default ResizeHandle;
@@ -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 { useResizeDrag } from '../util/useResizeDrag.js';
4
5
  const layer = (color) => `linear-gradient(${color}, ${color})`;
@@ -57,7 +58,7 @@ const useStyles = makeStyles()(theme => ({
57
58
  borderLeft: `1px solid ${theme.palette.text.disabled}`,
58
59
  },
59
60
  }));
60
- function ResizeHandle({ onDrag, onDragStart, onDragEnd, vertical = false, bar = false, grip = false, gain, className: originalClassName, onPointerDown, ...props }) {
61
+ const ResizeHandle = observer(function ResizeHandle({ onDrag, onDragStart, onDragEnd, vertical = false, bar = false, grip = false, gain, className: originalClassName, onPointerDown, ...props }) {
61
62
  const { classes } = useStyles();
62
63
  // The gesture, including the per-frame coalescing, the delta measurement and
63
64
  // the `data-gesture-owner` marker that keeps ancestor drags (the LGV
@@ -83,5 +84,5 @@ function ResizeHandle({ onDrag, onDragStart, onDragEnd, vertical = false, bar =
83
84
  handleProps.onPointerDown(event);
84
85
  onPointerDown?.(event);
85
86
  } }));
86
- }
87
+ });
87
88
  export default ResizeHandle;
@@ -3,7 +3,8 @@ declare global {
3
3
  setHTML?(html: string): void;
4
4
  }
5
5
  }
6
- export default function SanitizedHTML({ html: pre, className, }: {
6
+ declare const SanitizedHTML: ({ html: pre, className, }: {
7
7
  className?: string;
8
8
  html: unknown;
9
- }): import("react").JSX.Element;
9
+ }) => import("react").JSX.Element;
10
+ export default SanitizedHTML;
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Suspense, lazy, useLayoutEffect, useRef } from 'react';
3
+ import { observer } from 'mobx-react';
3
4
  import { escapeHTML, looksLikeHTML } from '../util/htmlText.js';
4
5
  import { linkify } from '../util/index.js';
5
6
  import { rewriteExternalAnchors } from './rewriteExternalAnchors.js';
@@ -7,7 +8,7 @@ const DOMPurifySanitizedHTML = lazy(() => import('./DOMPurifySanitizedHTML.js'))
7
8
  function needsSanitization(str) {
8
9
  return str.includes('<') || str.includes('://');
9
10
  }
10
- function SetHTML({ value, className }) {
11
+ const SetHTML = observer(function SetHTML({ value, className, }) {
11
12
  const spanRef = useRef(null);
12
13
  useLayoutEffect(() => {
13
14
  const el = spanRef.current;
@@ -22,8 +23,8 @@ function SetHTML({ value, className }) {
22
23
  }
23
24
  }, [value]);
24
25
  return _jsx("span", { ref: spanRef, className: className });
25
- }
26
- export default function SanitizedHTML({ html: pre, className, }) {
26
+ });
27
+ const SanitizedHTML = observer(function SanitizedHTML({ html: pre, className, }) {
27
28
  const str = `${pre}`;
28
29
  if (!needsSanitization(str)) {
29
30
  return _jsx("span", { className: className, children: str });
@@ -34,4 +35,5 @@ export default function SanitizedHTML({ html: pre, className, }) {
34
35
  return _jsx(SetHTML, { value: value, className: className });
35
36
  }
36
37
  return (_jsx(Suspense, { fallback: _jsx("span", { className: className }), children: _jsx(DOMPurifySanitizedHTML, { value: value, className: className }) }));
37
- }
38
+ });
39
+ export default SanitizedHTML;
@@ -4,10 +4,11 @@ import type { VirtualScrollModel } from '../util/useVirtualScrollWheel.ts';
4
4
  * shadow saying content is hidden, and the scrollbar to reach it. Renders
5
5
  * nothing when the content fits.
6
6
  */
7
- export default function ScrollChrome({ model, controlsId, top, }: {
7
+ declare const ScrollChrome: ({ model, controlsId, top, }: {
8
8
  model: VirtualScrollModel;
9
9
  /** `id` of the scrolled viewport element, for `aria-controls`. */
10
10
  controlsId: string;
11
11
  /** Viewport offset from the top, for a display with a sticky band above it. */
12
12
  top?: number;
13
- }): import("react").JSX.Element;
13
+ }) => import("react").JSX.Element;
14
+ export default ScrollChrome;
@@ -1,4 +1,5 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { observer } from 'mobx-react';
2
3
  import ScrollEdgeShadow from './ScrollEdgeShadow.js';
3
4
  import VerticalScrollbar from './VerticalScrollbar.js';
4
5
  /**
@@ -6,6 +7,7 @@ import VerticalScrollbar from './VerticalScrollbar.js';
6
7
  * shadow saying content is hidden, and the scrollbar to reach it. Renders
7
8
  * nothing when the content fits.
8
9
  */
9
- export default function ScrollChrome({ model, controlsId, top = 0, }) {
10
+ const ScrollChrome = observer(function ScrollChrome({ model, controlsId, top = 0, }) {
10
11
  return (_jsxs(_Fragment, { children: [_jsx(ScrollEdgeShadow, { model: model, top: top }), _jsx(VerticalScrollbar, { model: model, controlsId: controlsId, top: top })] }));
11
- }
12
+ });
13
+ export default ScrollChrome;
@@ -14,9 +14,9 @@ import type { VirtualScrollModel } from '../util/useVirtualScrollWheel.ts';
14
14
  *
15
15
  * - **It costs nothing when nothing is hidden.** No content past an edge, no
16
16
  * fade at that edge; a track that fits draws neither. So it is a readout of
17
- * state, not a decoration — which a recoloured bottom border could not be
17
+ * state, not a decoration — which a recolored bottom border could not be
18
18
  * (and which would also need `showTrackOutlines`, an option the user can turn
19
- * off, to have a border to recolour).
19
+ * off, to have a border to recolor).
20
20
  * - **It says which way.** Scrolled to the bottom, the bottom fade goes and the
21
21
  * top one appears, so "am I at the end" is answerable without scrolling.
22
22
  *
@@ -44,9 +44,9 @@ const useStyles = makeStyles()(theme => {
44
44
  *
45
45
  * - **It costs nothing when nothing is hidden.** No content past an edge, no
46
46
  * fade at that edge; a track that fits draws neither. So it is a readout of
47
- * state, not a decoration — which a recoloured bottom border could not be
47
+ * state, not a decoration — which a recolored bottom border could not be
48
48
  * (and which would also need `showTrackOutlines`, an option the user can turn
49
- * off, to have a border to recolour).
49
+ * off, to have a border to recolor).
50
50
  * - **It says which way.** Scrolled to the bottom, the bottom fade goes and the
51
51
  * top one appears, so "am I at the end" is answerable without scrolling.
52
52
  *
@@ -1,3 +1,4 @@
1
- export default function SessionJsonPanel({ session }: {
1
+ declare const SessionJsonPanel: ({ session, }: {
2
2
  session: unknown;
3
- }): import("react").JSX.Element;
3
+ }) => import("react").JSX.Element;
4
+ export default SessionJsonPanel;
@@ -1,14 +1,16 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState } from 'react';
3
+ import { observer } from 'mobx-react';
3
4
  import LabeledCheckbox from './LabeledCheckbox.js';
4
5
  import MonospaceTextField from './MonospaceTextField.js';
5
6
  // The session a share or export dialog is about to hand over, as indented JSON
6
7
  // behind a checkbox, so the sender can read what they are sending whichever
7
8
  // link carries it. Shared by jbrowse-web's ShareDialog and jbrowse-desktop's
8
9
  // ExportToWebDialog.
9
- export default function SessionJsonPanel({ session }) {
10
+ const SessionJsonPanel = observer(function SessionJsonPanel({ session, }) {
10
11
  const [show, setShow] = useState(false);
11
12
  return (_jsxs(_Fragment, { children: [_jsx(LabeledCheckbox, { checked: show, onChange: val => {
12
13
  setShow(val);
13
14
  }, label: "Show readable JSON" }), show ? (_jsx(MonospaceTextField, { label: "Session JSON", value: JSON.stringify(session, null, 2), readOnly: true, fullWidth: true, maxRows: 20 })) : null] }));
14
- }
15
+ });
16
+ export default SessionJsonPanel;
@@ -1,4 +1,5 @@
1
- export default function ShareLinkField({ value, label, }: {
1
+ declare const ShareLinkField: ({ value, label, }: {
2
2
  value: string;
3
3
  label?: string;
4
- }): import("react").JSX.Element;
4
+ }) => import("react").JSX.Element;
5
+ export default ShareLinkField;
@@ -1,9 +1,10 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { TextField } from '@mui/material';
3
+ import { observer } from 'mobx-react';
3
4
  // Read-only single-line field for a shareable URL; clicking selects the whole
4
5
  // value so it's easy to copy. Shared by jbrowse-web's ShareDialog and
5
6
  // jbrowse-desktop's ExportToWebDialog.
6
- export default function ShareLinkField({ value, label = 'URL', }) {
7
+ const ShareLinkField = observer(function ShareLinkField({ value, label = 'URL', }) {
7
8
  return (_jsx(TextField, { label: label, value: value, variant: "filled", fullWidth: true, onClick: event => {
8
9
  const target = event.target;
9
10
  target.select();
@@ -12,4 +13,5 @@ export default function ShareLinkField({ value, label = 'URL', }) {
12
13
  readOnly: true,
13
14
  },
14
15
  } }));
15
- }
16
+ });
17
+ export default ShareLinkField;
@@ -4,5 +4,5 @@ type Props = Omit<SliderProps, 'value' | 'defaultValue' | 'onChange' | 'onChange
4
4
  onChange?: (value: number) => void;
5
5
  onChangeCommitted?: (value: number) => void;
6
6
  };
7
- export default function SingleSlider(props: Props): import("react").JSX.Element;
8
- export {};
7
+ declare const SingleSlider: (props: Props) => import("react").JSX.Element;
8
+ export default SingleSlider;
@@ -1,11 +1,13 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Slider } from '@mui/material';
3
+ import { observer } from 'mobx-react';
3
4
  import SliderTooltip from './SliderTooltip.js';
4
- export default function SingleSlider(props) {
5
+ const SingleSlider = observer(function SingleSlider(props) {
5
6
  const { onChange, onChangeCommitted, slots, ...rest } = props;
6
7
  return (_jsx(Slider, { ...rest, slots: { valueLabel: SliderTooltip, ...slots }, onChange: (_, value) => {
7
8
  onChange?.(typeof value === 'number' ? value : value[0]);
8
9
  }, onChangeCommitted: (_, value) => {
9
10
  onChangeCommitted?.(typeof value === 'number' ? value : value[0]);
10
11
  } }));
11
- }
12
+ });
13
+ export default SingleSlider;
@@ -1,2 +1,3 @@
1
1
  import type { SliderValueLabelProps } from '@mui/material';
2
- export default function SliderTooltip(props: SliderValueLabelProps): import("react").JSX.Element;
2
+ declare const SliderTooltip: (props: SliderValueLabelProps) => import("react").JSX.Element;
3
+ export default SliderTooltip;
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Tooltip } from '@mui/material';
3
+ import { observer } from 'mobx-react';
3
4
  // Arrow tooltip above the thumb, used as SingleSlider's default value label so
4
5
  // every slider (inline track-menu rows, the settings menus' size submenus, the
5
6
  // LGV zoom control) shows one consistent value affordance instead of MUI's default
@@ -11,7 +12,8 @@ import { Tooltip } from '@mui/material';
11
12
  // Popper. On the LGV zoom slider, whose value tracks live `bpPerPx`, that was a
12
13
  // Tooltip and a Popper re-rendering on every animation frame of a wheel zoom to
13
14
  // show nothing.
14
- export default function SliderTooltip(props) {
15
+ const SliderTooltip = observer(function SliderTooltip(props) {
15
16
  const { children, open, value } = props;
16
17
  return open ? (_jsx(Tooltip, { open: true, enterTouchDelay: 0, placement: "top", title: value, arrow: true, children: children })) : (children);
17
- }
18
+ });
19
+ export default SliderTooltip;
@@ -1,5 +1,6 @@
1
1
  import type { SnackbarMessage } from './SnackbarModel.tsx';
2
- export default function SnackbarContents({ onClose, contents, }: {
2
+ declare const SnackbarContents: ({ onClose, contents, }: {
3
3
  onClose: (_event: unknown, reason?: string) => void;
4
4
  contents: SnackbarMessage;
5
- }): import("react").JSX.Element;
5
+ }) => import("react").JSX.Element;
6
+ export default SnackbarContents;
@@ -5,6 +5,7 @@ import CloseIcon from '@mui/icons-material/Close';
5
5
  // See https://github.com/GMOD/jbrowse-components/issues/5325
6
6
  import Report from '@mui/icons-material/Report';
7
7
  import { Alert, Button, IconButton, Snackbar as MUISnackbar, } from '@mui/material';
8
+ import { observer } from 'mobx-react';
8
9
  import { makeStyles } from '../util/tss-react/index.js';
9
10
  const useStyles = makeStyles()({
10
11
  // preserve newlines in multi-line errors (e.g. MST validation dumps) while
@@ -17,7 +18,7 @@ const useStyles = makeStyles()({
17
18
  overflowY: 'auto',
18
19
  },
19
20
  });
20
- export default function SnackbarContents({ onClose, contents, }) {
21
+ const SnackbarContents = observer(function SnackbarContents({ onClose, contents, }) {
21
22
  const { classes } = useStyles();
22
23
  const { actions } = contents;
23
24
  return (_jsx(MUISnackbar, { open: true, onClose: onClose, anchorOrigin: { vertical: 'bottom', horizontal: 'center' }, children: _jsx(Alert, { onClose: onClose, action: actions?.length ? (_jsxs(_Fragment, { children: [actions.map((action, idx) => (_jsx(Button
@@ -26,4 +27,5 @@ export default function SnackbarContents({ onClose, contents, }) {
26
27
  action.onClick();
27
28
  onClose(e);
28
29
  }, children: action.name === 'report' ? _jsx(Report, {}) : action.name }, idx))), _jsx(IconButton, { color: "inherit", onClick: onClose, children: _jsx(CloseIcon, {}) })] })) : null, severity: contents.level || 'warning', "data-testid": `snackbar-${contents.level || 'warning'}`, children: _jsx("div", { className: classes.message, children: contents.message }) }) }));
29
- }
30
+ });
31
+ export default SnackbarContents;
@@ -11,6 +11,8 @@ export interface ErrorDialogState {
11
11
  /**
12
12
  * #stateModel SnackbarModel
13
13
  * #category session
14
+ * Adds notifications to a session: the snackbar messages on screen, and the
15
+ * error shown in the stack-trace dialog.
14
16
  */
15
17
  export default function SnackbarModel(): import("@jbrowse/mobx-state-tree").IModelType<{}, {
16
18
  /**
@@ -3,6 +3,8 @@ import { observable } from 'mobx';
3
3
  /**
4
4
  * #stateModel SnackbarModel
5
5
  * #category session
6
+ * Adds notifications to a session: the snackbar messages on screen, and the
7
+ * error shown in the stack-trace dialog.
6
8
  */
7
9
  export default function SnackbarModel() {
8
10
  return types
@@ -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;