@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
@@ -7,7 +7,7 @@ import type { FeatureFormatter, FieldActions } from '../types.tsx';
7
7
  * to make the same call.
8
8
  */
9
9
  export declare function isObjectArray(value: unknown[]): value is Record<string, unknown>[];
10
- export default function ArrayValue({ name, value, description, formatter, fieldActions, prefix, width, }: {
10
+ declare const ArrayValue: ({ name, value, description, formatter, fieldActions, prefix, width, }: {
11
11
  description?: React.ReactNode;
12
12
  name: string;
13
13
  value: unknown[];
@@ -15,4 +15,5 @@ export default function ArrayValue({ name, value, description, formatter, fieldA
15
15
  fieldActions?: FieldActions;
16
16
  prefix?: string[];
17
17
  width?: number;
18
- }): import("react").JSX.Element;
18
+ }) => import("react").JSX.Element;
19
+ export default ArrayValue;
@@ -1,5 +1,6 @@
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 { isObject } from '../../util/index.js';
4
5
  import { makeStyles } from '../../util/tss-react/index.js';
5
6
  import Attributes from './Attributes.js';
@@ -33,7 +34,7 @@ const useStyles = makeStyles()(theme => ({
33
34
  export function isObjectArray(value) {
34
35
  return value.every(isObject);
35
36
  }
36
- export default function ArrayValue({ name, value, description, formatter, fieldActions, prefix = [], width, }) {
37
+ const ArrayValue = observer(function ArrayValue({ name, value, description, formatter, fieldActions, prefix = [], width, }) {
37
38
  const { classes, cx } = useStyles();
38
39
  const reveal = useRevealFieldActions();
39
40
  const [showAll, setShowAll] = useState(false);
@@ -49,4 +50,5 @@ export default function ArrayValue({ name, value, description, formatter, fieldA
49
50
  }, children: showAll
50
51
  ? 'Show less'
51
52
  : `Showing ${limit} of ${value.length}. Show all...` })) : null] }))] }));
52
- }
53
+ });
54
+ export default ArrayValue;
@@ -2,7 +2,7 @@ import type { Descriptors, FeatureFormatter, FieldActions } from '../types.tsx';
2
2
  export declare function withoutLocations(attributes: Record<string, unknown>): Record<string, unknown>;
3
3
  /** Whether `Attributes` given these `attributes` and `omit` draws any row. */
4
4
  export declare function hasAttributeRows(attributes: Record<string, unknown>, omit?: string[]): boolean;
5
- export default function Attributes(props: {
5
+ declare const Attributes: (props: {
6
6
  attributes: Record<string, unknown>;
7
7
  omit?: string[];
8
8
  omitSingleLevel?: string[];
@@ -16,4 +16,5 @@ export default function Attributes(props: {
16
16
  * down the recursion. Set by `Attributes` itself; a caller leaves it alone.
17
17
  */
18
18
  labelWidth?: number;
19
- }): import("react").JSX.Element;
19
+ }) => import("react").JSX.Element;
20
+ export default Attributes;
@@ -1,5 +1,6 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Suspense, lazy } from 'react';
3
+ import { observer } from 'mobx-react';
3
4
  import { isLocalPathLocation, isObject, isUriLocation, measureText, } from '../../util/index.js';
4
5
  import ArrayValue, { isObjectArray } from './ArrayValue.js';
5
6
  import SimpleField from './SimpleField.js';
@@ -119,7 +120,7 @@ export function hasAttributeRows(attributes, omit = []) {
119
120
  function widestLabel(attributes, opts) {
120
121
  return Math.ceil(measureLabels(attributes, opts)) + FIELD_NAME_PADDING;
121
122
  }
122
- export default function Attributes(props) {
123
+ const Attributes = observer(function Attributes(props) {
123
124
  const { omit = [], omitSingleLevel = [], descriptions, formatter, fieldActions, hideUris, prefix = [], labelWidth, } = props;
124
125
  const attributes = hideUris
125
126
  ? withoutLocations(props.attributes)
@@ -156,4 +157,5 @@ export default function Attributes(props) {
156
157
  return (_jsx(SimpleField, { name: key, formatter: formatter, fieldActions: fieldActions, value: value, description: description, prefix: prefix, width: width }, key));
157
158
  }
158
159
  }) }));
159
- }
160
+ });
161
+ export default Attributes;
@@ -1,2 +1,3 @@
1
1
  import type { BaseProps } from '../types.tsx';
2
- export default function BaseAttributes(props: BaseProps): import("react").JSX.Element;
2
+ declare const BaseAttributes: (props: BaseProps) => import("react").JSX.Element;
3
+ export default BaseAttributes;
@@ -1,7 +1,9 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { observer } from 'mobx-react';
2
3
  import Attributes from './Attributes.js';
3
4
  import BaseCard from './BaseCard.js';
4
- export default function BaseAttributes(props) {
5
+ const BaseAttributes = observer(function BaseAttributes(props) {
5
6
  const { title = 'Attributes', defaultExpanded, feature } = props;
6
7
  return (_jsx(BaseCard, { title: title, defaultExpanded: defaultExpanded, children: _jsx(Attributes, { ...props, attributes: feature }) }));
7
- }
8
+ });
9
+ export default BaseAttributes;
@@ -1,2 +1,3 @@
1
1
  import type { BaseCardProps } from '../types.tsx';
2
- export default function BaseCard({ children, title, defaultExpanded, }: BaseCardProps): import("react").JSX.Element;
2
+ declare const BaseCard: ({ children, title, defaultExpanded, }: BaseCardProps) => import("react").JSX.Element;
3
+ export default BaseCard;
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import ExpandMore from '@mui/icons-material/ExpandMore';
3
3
  import { Accordion, AccordionDetails, AccordionSummary, Typography, } from '@mui/material';
4
+ import { observer } from 'mobx-react';
4
5
  import { makeStyles } from '../../util/tss-react/index.js';
5
6
  const useStyles = makeStyles()(theme => ({
6
7
  expansionPanelDetails: {
@@ -8,7 +9,8 @@ const useStyles = makeStyles()(theme => ({
8
9
  padding: theme.spacing(1),
9
10
  },
10
11
  }));
11
- export default function BaseCard({ children, title, defaultExpanded = true, }) {
12
+ const BaseCard = observer(function BaseCard({ children, title, defaultExpanded = true, }) {
12
13
  const { classes } = useStyles();
13
14
  return (_jsxs(Accordion, { defaultExpanded: defaultExpanded, slotProps: { transition: { unmountOnExit: true } }, "data-testid": `BaseCard-${title}`, children: [_jsx(AccordionSummary, { expandIcon: _jsx(ExpandMore, {}), children: _jsx(Typography, { variant: "button", children: title }) }), _jsx(AccordionDetails, { className: classes.expansionPanelDetails, children: children })] }));
14
- }
15
+ });
16
+ export default BaseCard;
@@ -1,2 +1,3 @@
1
1
  import type { BaseProps } from '../types.tsx';
2
- export default function BaseCoreDetails(props: BaseProps): import("react").JSX.Element;
2
+ declare const BaseCoreDetails: (props: BaseProps) => import("react").JSX.Element;
3
+ export default BaseCoreDetails;
@@ -1,7 +1,9 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { observer } from 'mobx-react';
2
3
  import BaseCard from './BaseCard.js';
3
4
  import CoreDetails from './CoreDetails.js';
4
- export default function BaseCoreDetails(props) {
5
+ const BaseCoreDetails = observer(function BaseCoreDetails(props) {
5
6
  const { title = 'Primary data', defaultExpanded } = props;
6
7
  return (_jsx(BaseCard, { title: title, defaultExpanded: defaultExpanded, children: _jsx(CoreDetails, { ...props }) }));
7
- }
8
+ });
9
+ export default BaseCoreDetails;
@@ -6,9 +6,10 @@ export declare function valueText(value: unknown): string;
6
6
  * open in a new tab: navigating in place discards the session, and in an
7
7
  * embedded JBrowse it takes the host page with it.
8
8
  */
9
- export declare function ValueText({ text }: {
9
+ export declare const ValueText: ({ text, }: {
10
10
  text: string;
11
- }): import("react").JSX.Element;
12
- export default function BasicValue({ value }: {
11
+ }) => import("react").JSX.Element;
12
+ declare const BasicValue: ({ value }: {
13
13
  value: unknown;
14
- }): import("react").JSX.Element;
14
+ }) => import("react").JSX.Element;
15
+ export default BasicValue;
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { isValidElement, useState } from 'react';
3
3
  import { Link } from '@mui/material';
4
+ import { observer } from 'mobx-react';
4
5
  import { SanitizedHTML } from '../../ui/index.js';
5
6
  import { isObject } from '../../util/index.js';
6
7
  import { makeStyles } from '../../util/tss-react/index.js';
@@ -36,10 +37,10 @@ export function valueText(value) {
36
37
  * open in a new tab: navigating in place discards the session, and in an
37
38
  * embedded JBrowse it takes the host page with it.
38
39
  */
39
- export function ValueText({ text }) {
40
+ export const ValueText = observer(function ValueText({ text, }) {
40
41
  return isBareUrl(text) ? (_jsx(Link, { href: text, target: "_blank", rel: "noopener noreferrer", children: text })) : (_jsx(SanitizedHTML, { html: text }));
41
- }
42
- export default function BasicValue({ value }) {
42
+ });
43
+ const BasicValue = observer(function BasicValue({ value }) {
43
44
  const { classes, cx } = useStyles();
44
45
  const [expanded, setExpanded] = useState(false);
45
46
  const [ref, { height }] = useMeasure('height');
@@ -47,4 +48,5 @@ export default function BasicValue({ value }) {
47
48
  return (_jsxs("div", { className: classes.fieldValue, children: [_jsx("div", { className: cx(classes.clip, !expanded && classes.clamped, !expanded && overflows && classes.faded), children: _jsx("div", { ref: ref, children: isValidElement(value) ? (value) : (_jsx(ValueText, { text: valueText(value) })) }) }), overflows ? (_jsx(Link, { component: "button", variant: "caption", onClick: () => {
48
49
  setExpanded(v => !v);
49
50
  }, children: expanded ? 'Show less' : 'Show more' })) : null] }));
50
- }
51
+ });
52
+ export default BasicValue;
@@ -1,2 +1,3 @@
1
1
  import type { BaseProps } from '../types.tsx';
2
- export default function CoreDetails({ feature }: BaseProps): import("react").JSX.Element;
2
+ declare const CoreDetails: ({ feature }: BaseProps) => import("react").JSX.Element;
3
+ export default CoreDetails;
@@ -1,8 +1,9 @@
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 { assembleLocString, toLocale } from '../../util/index.js';
3
4
  import { getStrandStr } from '../util.js';
4
5
  import SimpleField from './SimpleField.js';
5
- export default function CoreDetails({ feature }) {
6
+ const CoreDetails = observer(function CoreDetails({ feature }) {
6
7
  const { name, description, type, start, end, strand } = feature;
7
8
  // only a formatDetails callback sets `length`, to rewrite or hide the row:
8
9
  // an adapter's own field of that name is in Attributes' globalOmit
@@ -16,4 +17,5 @@ export default function CoreDetails({ feature }) {
16
17
  return (_jsxs(_Fragment, { children: [_jsx(SimpleField, { name: "Position", value: [assembleLocString(feature), getStrandStr(strand)]
17
18
  .filter(Boolean)
18
19
  .join(' ') }), rows.map(([label, value]) => (_jsx(SimpleField, { name: label, value: Array.isArray(value) ? value.join(', ') : value }, label)))] }));
19
- }
20
+ });
21
+ export default CoreDetails;
@@ -1,5 +1,6 @@
1
- export default function DataGridDetails({ value, prefix, name, }: {
1
+ declare const DataGridDetails: ({ value, prefix, name, }: {
2
2
  name: string;
3
3
  prefix?: string[];
4
4
  value: Record<string, unknown>[];
5
- }): import("react").JSX.Element;
5
+ }) => import("react").JSX.Element;
6
+ export default DataGridDetails;
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState } from 'react';
3
3
  import { Typography } from '@mui/material';
4
4
  import { DataGrid } from '@mui/x-data-grid';
5
+ import { observer } from 'mobx-react';
5
6
  import DataGridFlexContainer from '../../ui/DataGridFlexContainer.js';
6
7
  import { LabeledCheckbox, SanitizedHTML } from '../../ui/index.js';
7
8
  import { getStr, measureGridWidth } from '../../util/index.js';
@@ -17,7 +18,7 @@ const useStyles = makeStyles()(theme => ({
17
18
  textOverflow: 'ellipsis',
18
19
  },
19
20
  }));
20
- export default function DataGridDetails({ value, prefix, name, }) {
21
+ const DataGridDetails = observer(function DataGridDetails({ value, prefix, name, }) {
21
22
  const { classes } = useStyles();
22
23
  const [checked, setChecked] = useState(false);
23
24
  // DataGrid needs a unique row id; rather than commandeering any 'id' field
@@ -33,4 +34,5 @@ export default function DataGridDetails({ value, prefix, name, }) {
33
34
  width: widths[index],
34
35
  renderCell: ({ value }) => (_jsx("div", { className: classes.cell, children: _jsx(SanitizedHTML, { html: getStr(value ?? '') }) })),
35
36
  })) }) })] }));
36
- }
37
+ });
38
+ export default DataGridDetails;
@@ -10,9 +10,9 @@ import Attributes from './Attributes.js';
10
10
  import BaseCard from './BaseCard.js';
11
11
  import CoreDetails from './CoreDetails.js';
12
12
  import { generateTitle } from './util.js';
13
- function SectionHeader({ title }) {
13
+ const SectionHeader = observer(function SectionHeader({ title, }) {
14
14
  return _jsx(Typography, { variant: "overline", children: title });
15
- }
15
+ });
16
16
  const shownByCoreDetails = [
17
17
  'name',
18
18
  'start',
@@ -14,7 +14,8 @@
14
14
  * sample grid); inside such a key this remounts on every swap and its counter
15
15
  * never leaves zero, so it silently never plays.
16
16
  */
17
- export default function FeatureWash({ uniqueId, children, }: {
17
+ declare const FeatureWash: ({ uniqueId, children, }: {
18
18
  uniqueId: string | undefined;
19
19
  children: React.ReactNode;
20
- }): import("react").JSX.Element;
20
+ }) => import("react").JSX.Element;
21
+ export default FeatureWash;
@@ -1,5 +1,6 @@
1
1
  import { 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 { alpha } from '../../ui/palette.js';
4
5
  import { keyframes, makeStyles } from '../../util/tss-react/index.js';
5
6
  // Long enough to register out of the corner of an eye that was on the track,
@@ -43,7 +44,7 @@ const useStyles = makeStyles()(theme => {
43
44
  * sample grid); inside such a key this remounts on every swap and its counter
44
45
  * never leaves zero, so it silently never plays.
45
46
  */
46
- export default function FeatureWash({ uniqueId, children, }) {
47
+ const FeatureWash = observer(function FeatureWash({ uniqueId, children, }) {
47
48
  const { classes } = useStyles();
48
49
  // Keyed on the feature's identity, not on the feature object: a widget's
49
50
  // formatDetails callbacks re-resolve into a fresh object, and a re-format of
@@ -63,4 +64,5 @@ export default function FeatureWash({ uniqueId, children, }) {
63
64
  });
64
65
  }
65
66
  return (_jsxs("div", { className: classes.root, children: [children, wash.count ? (_jsx("span", { className: classes.wash, "data-testid": "feature-details-wash" }, wash.count)) : null] }));
66
- }
67
+ });
68
+ export default FeatureWash;
@@ -1,8 +1,9 @@
1
1
  import type { FieldActions } from '../types.tsx';
2
2
  /** A class for a field row that shows its FieldActionsButton on hover or focus. */
3
3
  export declare function useRevealFieldActions(): string;
4
- export default function FieldActionsButton({ path, value, fieldActions, }: {
4
+ declare const FieldActionsButton: ({ path, value, fieldActions, }: {
5
5
  path: string[];
6
6
  value: unknown;
7
7
  fieldActions?: FieldActions;
8
- }): import("react").JSX.Element | null;
8
+ }) => import("react").JSX.Element | null;
9
+ export default FieldActionsButton;
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import FilterListIcon from '@mui/icons-material/FilterList';
3
+ import { observer } from 'mobx-react';
3
4
  import CascadingMenuButton from '../../ui/CascadingMenuButton.js';
4
5
  import { makeStyles } from '../../util/tss-react/index.js';
5
6
  // on a wrapper because MUI folds an Emotion class handed to one of its
@@ -17,8 +18,9 @@ export function useRevealFieldActions() {
17
18
  [`&:hover .${reveal}, &:focus-within .${reveal}`]: { opacity: 1 },
18
19
  });
19
20
  }
20
- export default function FieldActionsButton({ path, value, fieldActions, }) {
21
+ const FieldActionsButton = observer(function FieldActionsButton({ path, value, fieldActions, }) {
21
22
  const { classes } = useStyles();
22
23
  const items = fieldActions?.(path, value) ?? [];
23
24
  return items.length > 0 ? (_jsx("span", { className: classes.reveal, children: _jsx(CascadingMenuButton, { menuItems: items, size: "small", tooltip: "Filter by this value", style: { padding: 0 }, children: _jsx(FilterListIcon, { fontSize: "small" }) }) })) : null;
24
- }
25
+ });
26
+ export default FieldActionsButton;
@@ -1,6 +1,7 @@
1
- export default function FieldName({ description, name, width, prefix, }: {
1
+ declare const FieldName: ({ description, name, width, prefix, }: {
2
2
  description?: React.ReactNode;
3
3
  name: string;
4
4
  prefix?: string[];
5
5
  width?: number;
6
- }): import("react").JSX.Element;
6
+ }) => import("react").JSX.Element;
7
+ export default FieldName;
@@ -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
  import { cx, makeStyles } from '../../util/tss-react/index.js';
4
5
  const useStyles = makeStyles()(theme => ({
5
6
  fieldDescription: {
@@ -17,8 +18,9 @@ const useStyles = makeStyles()(theme => ({
17
18
  padding: theme.spacing(0.5),
18
19
  },
19
20
  }));
20
- export default function FieldName({ description, name, width, prefix = [], }) {
21
+ const FieldName = observer(function FieldName({ description, name, width, prefix = [], }) {
21
22
  const { classes } = useStyles();
22
23
  const val = [...prefix, name].join('.');
23
24
  return description ? (_jsx(Tooltip, { title: description, placement: "left", children: _jsx("div", { className: cx(classes.fieldDescription, classes.fieldName), style: { width }, children: val }) })) : (_jsx("div", { className: classes.fieldName, style: { width }, children: val }));
24
- }
25
+ });
26
+ export default FieldName;
@@ -1,3 +1,4 @@
1
- export default function Formatter({ value }: {
1
+ declare const Formatter: ({ value }: {
2
2
  value: unknown;
3
- }): import("react").JSX.Element;
3
+ }) => import("react").JSX.Element;
4
+ export default Formatter;
@@ -1,5 +1,6 @@
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 { useCopyToClipboard } from '../../ui/useCopyToClipboard.js';
4
5
  import { ValueText, isBareUrl, valueText } from './BasicValue.js';
5
6
  const TRUNCATE_LENGTH = 100;
@@ -7,7 +8,7 @@ const TRUNCATE_LENGTH = 100;
7
8
  // (e.g. a SEQ/CRAM string, or a long read's worth of data in a single div) can
8
9
  // slow down the rest of the app, so they are truncated until expanded. A URL
9
10
  // is left whole, since a truncated one links nowhere
10
- export default function Formatter({ value }) {
11
+ const Formatter = observer(function Formatter({ value }) {
11
12
  const [show, setShow] = useState(false);
12
13
  const { copied, copy } = useCopyToClipboard(700);
13
14
  const display = valueText(value);
@@ -16,4 +17,5 @@ export default function Formatter({ value }) {
16
17
  }, children: copied ? 'Copied to clipboard' : 'Copy' }), _jsx("button", { type: "button", onClick: () => {
17
18
  setShow(val => !val);
18
19
  }, children: show ? 'Show less' : 'Show more' }), _jsx("div", { children: show ? (_jsx(ValueText, { text: display })) : (`${display.slice(0, TRUNCATE_LENGTH)}...`) })] })) : (_jsx(ValueText, { text: display }));
19
- }
20
+ });
21
+ export default Formatter;
@@ -1,4 +1,5 @@
1
1
  import type { ParentFeatureSummary } from '../../util/index.ts';
2
- export default function ParentFeatureLine({ parentFeature, }: {
2
+ declare const ParentFeatureLine: ({ parentFeature, }: {
3
3
  parentFeature: ParentFeatureSummary;
4
- }): import("react").JSX.Element;
4
+ }) => import("react").JSX.Element;
5
+ export default ParentFeatureLine;
@@ -1,5 +1,6 @@
1
1
  import { jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Typography } from '@mui/material';
3
+ import { observer } from 'mobx-react';
3
4
  import { makeStyles } from '../../util/tss-react/index.js';
4
5
  const useStyles = makeStyles()(theme => ({
5
6
  line: {
@@ -10,8 +11,9 @@ const useStyles = makeStyles()(theme => ({
10
11
  // The panel is opened on the exact isoform the click resolved to, and that
11
12
  // isoform's own record is regularly the only place its accession appears --
12
13
  // nothing in `NM_004006.2 - mRNA` says DMD.
13
- export default function ParentFeatureLine({ parentFeature, }) {
14
+ const ParentFeatureLine = observer(function ParentFeatureLine({ parentFeature, }) {
14
15
  const { classes } = useStyles();
15
16
  const { name, type } = parentFeature;
16
17
  return (_jsxs(Typography, { variant: "body2", color: "textSecondary", className: classes.line, "data-testid": "parent-feature-line", children: ["in ", type ? `${type} ` : '', name] }));
17
- }
18
+ });
19
+ export default ParentFeatureLine;
@@ -1,5 +1,5 @@
1
1
  import type { FeatureFormatter, FieldActions } from '../types.tsx';
2
- export default function SimpleField({ name, value, description, prefix, width, formatter, fieldActions, }: {
2
+ declare const SimpleField: ({ name, value, description, prefix, width, formatter, fieldActions, }: {
3
3
  description?: React.ReactNode;
4
4
  name: string;
5
5
  value: unknown;
@@ -7,4 +7,5 @@ export default function SimpleField({ name, value, description, prefix, width, f
7
7
  width?: number;
8
8
  formatter?: FeatureFormatter;
9
9
  fieldActions?: FieldActions;
10
- }): import("react").JSX.Element | null;
10
+ }) => import("react").JSX.Element | null;
11
+ export default SimpleField;
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { observer } from 'mobx-react';
2
3
  import { makeStyles } from '../../util/tss-react/index.js';
3
4
  import BasicValue from './BasicValue.js';
4
5
  import FieldActionsButton, { useRevealFieldActions, } from './FieldActionsButton.js';
@@ -9,8 +10,9 @@ const useStyles = makeStyles()({
9
10
  flexWrap: 'wrap',
10
11
  },
11
12
  });
12
- export default function SimpleField({ name, value, description, prefix, width, formatter, fieldActions, }) {
13
+ const SimpleField = observer(function SimpleField({ name, value, description, prefix, width, formatter, fieldActions, }) {
13
14
  const { classes, cx } = useStyles();
14
15
  const reveal = useRevealFieldActions();
15
16
  return value != null ? (_jsxs("div", { className: cx(classes.field, reveal), children: [_jsx(FieldName, { prefix: prefix, description: description, name: name, width: width }), _jsx(BasicValue, { value: formatter ? formatter(value, name) : value }), _jsx(FieldActionsButton, { path: [...(prefix ?? []), name], value: value, fieldActions: fieldActions })] })) : null;
16
- }
17
+ });
18
+ export default SimpleField;
@@ -1,4 +1,4 @@
1
- export default function UriField({ value, prefix, name, width, }: {
1
+ declare const UriField: ({ value, prefix, name, width, }: {
2
2
  value: {
3
3
  uri: string;
4
4
  baseUri?: string;
@@ -6,4 +6,5 @@ export default function UriField({ value, prefix, name, width, }: {
6
6
  name: string;
7
7
  prefix: string[];
8
8
  width?: number;
9
- }): import("react").JSX.Element;
9
+ }) => import("react").JSX.Element;
10
+ export default UriField;
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { observer } from 'mobx-react';
2
3
  import SimpleField from './SimpleField.js';
3
- export default function UriField({ value, prefix, name, width, }) {
4
+ const UriField = observer(function UriField({ value, prefix, name, width, }) {
4
5
  const { uri, baseUri = '' } = value;
5
6
  let href;
6
7
  try {
@@ -12,4 +13,5 @@ export default function UriField({ value, prefix, name, width, }) {
12
13
  // width forwarded like any other field's: without it a URI row sized its own
13
14
  // label to content and sat out of the column every row beside it shares
14
15
  return _jsx(SimpleField, { name: name, prefix: prefix, value: href, width: width });
15
- }
16
+ });
17
+ export default UriField;
@@ -2,7 +2,7 @@ import type { RpcStatus, SimpleFeatureSerialized } from '../../util/index.ts';
2
2
  import type { ErrorState, SeqState } from '../util.tsx';
3
3
  import type { SequenceDisplayMode, SequenceFeatureDetailsModel, SequenceHoverTarget } from './model.ts';
4
4
  import type { RefObject } from 'react';
5
- export default function SequenceBody({ error, sequence, status, feature, seqPanelRef, model, mode, revcomp, assemblyGeneticCodeId, assemblyName, hoverTarget, onForceLoad, }: {
5
+ declare const SequenceBody: ({ error, sequence, status, feature, seqPanelRef, model, mode, revcomp, assemblyGeneticCodeId, assemblyName, hoverTarget, onForceLoad, }: {
6
6
  error: unknown;
7
7
  sequence: SeqState | ErrorState | undefined;
8
8
  status?: RpcStatus;
@@ -15,4 +15,5 @@ export default function SequenceBody({ error, sequence, status, feature, seqPane
15
15
  assemblyName?: string;
16
16
  hoverTarget?: SequenceHoverTarget;
17
17
  onForceLoad: () => void;
18
- }): import("react").JSX.Element;
18
+ }) => import("react").JSX.Element;
19
+ export default SequenceBody;
@@ -1,10 +1,12 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Button, Typography } from '@mui/material';
3
+ import { observer } from 'mobx-react';
3
4
  import { ErrorBanner, LoadingEllipses } from '../../ui/index.js';
4
5
  import { statusProgressLabel } from '../../util/progress.js';
5
6
  import SequencePanel from './SequencePanel.js';
6
- export default function SequenceBody({ error, sequence, status, feature, seqPanelRef, model, mode, revcomp, assemblyGeneticCodeId, assemblyName, hoverTarget, onForceLoad, }) {
7
+ const SequenceBody = observer(function SequenceBody({ error, sequence, status, feature, seqPanelRef, model, mode, revcomp, assemblyGeneticCodeId, assemblyName, hoverTarget, onForceLoad, }) {
7
8
  return (_jsx("div", { children: error ? (_jsx(ErrorBanner, { error: error })) : !sequence ? (_jsx(LoadingEllipses, { message: statusProgressLabel(status) })) : 'error' in sequence ? (_jsxs(_Fragment, { children: [_jsx(Typography, { color: "error", children: sequence.error }), _jsx(Button, { onClick: () => {
8
9
  onForceLoad();
9
10
  }, children: "Force load" })] })) : (_jsx(SequencePanel, { ref: seqPanelRef, feature: feature, sequence: sequence, model: model, mode: mode, revcomp: revcomp, assemblyGeneticCodeId: assemblyGeneticCodeId, assemblyName: assemblyName, hoverTarget: hoverTarget })) }));
10
- }
11
+ });
12
+ export default SequenceBody;
@@ -10,5 +10,5 @@ interface SequenceFeatureDetailsProps {
10
10
  showOpenInDialog?: boolean;
11
11
  canonicalTranscripts?: CanonicalTranscripts;
12
12
  }
13
- declare function SequenceFeatureDetails(props: SequenceFeatureDetailsProps): import("react").JSX.Element;
13
+ declare const SequenceFeatureDetails: (props: SequenceFeatureDetailsProps) => import("react").JSX.Element;
14
14
  export default SequenceFeatureDetails;
@@ -5,7 +5,7 @@ import { LoadingEllipses } from '../../ui/index.js';
5
5
  import SequenceFeatureMenu from './dialogs/SequenceFeatureMenu.js';
6
6
  import SequenceTypeSelector from './dialogs/SequenceTypeSelector.js';
7
7
  import TranscriptSelector from './dialogs/TranscriptSelector.js';
8
- import { getDefaultMode, getTranscripts, pickDefaultTranscriptIndex, } from './featureTypeUtil.js';
8
+ import { getTranscripts, pickDefaultTranscriptIndex, resolveMode, } from './featureTypeUtil.js';
9
9
  import { useSequenceFetch } from './useSequenceFetch.js';
10
10
  // lazies
11
11
  const SequenceBody = lazy(() => import('./SequenceBody.js'));
@@ -20,10 +20,7 @@ const SequenceFeatureDetailsPanel = observer(function SequenceFeatureDetailsPane
20
20
  const transcripts = getTranscripts(feature);
21
21
  const [transcriptIndex, setTranscriptIndex] = useState(() => pickDefaultTranscriptIndex(transcripts, canonicalTranscripts));
22
22
  const effectiveFeature = transcripts[transcriptIndex] ?? feature;
23
- // mode and revcomp are per-panel state, not on the shared model, so each
24
- // subfeature panel (e.g. coding vs noncoding transcripts of one gene) picks
25
- // its own sequence type and strand
26
- const [mode, setMode] = useState(() => getDefaultMode(effectiveFeature));
23
+ const mode = resolveMode(model.recentModes, effectiveFeature);
27
24
  const [revcomp, setRevcomp] = useState(false);
28
25
  const [openInDialog, setOpenInDialog] = useState(false);
29
26
  // spread into whichever readout is mounted, rather than forwarded field by
@@ -40,11 +37,8 @@ const SequenceFeatureDetailsPanel = observer(function SequenceFeatureDetailsPane
40
37
  // transcript lives in this component's state, so a dialog without the
41
38
  // selector strands a multi-transcript gene on whichever one was picked
42
39
  // before it opened (the inline copy is behind the modal and unclickable)
43
- const transcriptSelector = transcripts.length > 1 ? (_jsx(TranscriptSelector, { transcripts: transcripts, transcriptIndex: transcriptIndex, setTranscriptIndex: index => {
44
- setTranscriptIndex(index);
45
- setMode(getDefaultMode(transcripts[index]));
46
- } })) : null;
47
- return (_jsxs(_Fragment, { children: [_jsxs("div", { children: [transcriptSelector, _jsx(SequenceTypeSelector, { model: model, feature: effectiveFeature, mode: mode, setMode: setMode }), _jsx(SequenceFeatureMenu, { ref: seqPanelRef, model: model, session: session, mode: mode, revcomp: revcomp, setRevcomp: setRevcomp, extraItems: showOpenInDialog
40
+ const transcriptSelector = transcripts.length > 1 ? (_jsx(TranscriptSelector, { transcripts: transcripts, transcriptIndex: transcriptIndex, setTranscriptIndex: setTranscriptIndex })) : null;
41
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { children: [transcriptSelector, _jsx(SequenceTypeSelector, { model: model, feature: effectiveFeature, mode: mode }), _jsx(SequenceFeatureMenu, { ref: seqPanelRef, model: model, session: session, mode: mode, revcomp: revcomp, setRevcomp: setRevcomp, extraItems: showOpenInDialog
48
42
  ? [
49
43
  {
50
44
  label: 'Open in dialog',
@@ -53,7 +47,7 @@ const SequenceFeatureDetailsPanel = observer(function SequenceFeatureDetailsPane
53
47
  },
54
48
  },
55
49
  ]
56
- : [] })] }), openInDialog ? (_jsx(Suspense, { fallback: _jsx(LoadingEllipses, {}), children: _jsx(SequenceDialog, { ...fetched, sequenceFeatureDetails: model, session: session, transcriptSelector: transcriptSelector, feature: effectiveFeature, mode: mode, setMode: setMode, revcomp: revcomp, setRevcomp: setRevcomp, assemblyName: assemblyName, hoverTarget: hoverTarget, handleClose: () => {
50
+ : [] })] }), openInDialog ? (_jsx(Suspense, { fallback: _jsx(LoadingEllipses, {}), children: _jsx(SequenceDialog, { ...fetched, sequenceFeatureDetails: model, session: session, transcriptSelector: transcriptSelector, feature: effectiveFeature, mode: mode, revcomp: revcomp, setRevcomp: setRevcomp, assemblyName: assemblyName, hoverTarget: hoverTarget, handleClose: () => {
57
51
  setOpenInDialog(false);
58
52
  } }) })) : (_jsx(Suspense, { fallback: _jsx(LoadingEllipses, {}), children: _jsx(SequenceBody, { ...fetched, feature: effectiveFeature, seqPanelRef: seqPanelRef, model: model, mode: mode, revcomp: revcomp, assemblyName: assemblyName, hoverTarget: hoverTarget }) }))] }));
59
53
  });
@@ -61,13 +55,10 @@ const SequenceFeatureDetailsPanel = observer(function SequenceFeatureDetailsPane
61
55
  // a feature-detail widget, so anything holding a SequenceFeatureDetails model
62
56
  // (the widget, a track's right-click dialog) renders the same readout.
63
57
  //
64
- // The panel's sequence type, transcript and revcomp are initialized from the
65
- // feature, and the widget is reused (not remounted) when the user clicks a
66
- // different feature — so key the panel on the feature to reinitialize them.
67
- // Otherwise a mode picked on a coding transcript ('cds') survives onto a
68
- // feature that doesn't offer it, which renders the wrong sequence and puts an
69
- // out-of-range value in the sequence type selector.
70
- function SequenceFeatureDetails(props) {
58
+ // The panel's transcript and revcomp are initialized from the feature, and the
59
+ // widget is reused (not remounted) when the user clicks a different feature —
60
+ // so key the panel on the feature to reinitialize them.
61
+ const SequenceFeatureDetails = observer(function SequenceFeatureDetails(props) {
71
62
  return _jsx(SequenceFeatureDetailsPanel, { ...props }, props.feature.uniqueId);
72
- }
63
+ });
73
64
  export default SequenceFeatureDetails;
@@ -1,6 +1,7 @@
1
- export default function SequenceLegend({ items, }: {
1
+ declare const SequenceLegend: ({ items, }: {
2
2
  items: {
3
3
  color: string;
4
4
  label: string;
5
5
  }[];
6
- }): import("react").JSX.Element;
6
+ }) => import("react").JSX.Element;
7
+ export default SequenceLegend;