@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
package/README.md CHANGED
@@ -58,6 +58,8 @@ in `config.json`. A key the config does not declare is reported for the caller
58
58
  to route or refuse, and a declared key whose write throws costs that key alone.
59
59
 
60
60
  ```js
61
+ import { applyConfSettings } from '@jbrowse/core/configuration'
62
+
61
63
  // type signature
62
64
  (target: AnyConfigurationModel | { configuration: AnyConfigurationModel; }, settings: Record<string, unknown>) => ConfSettingsReport
63
65
  ```
@@ -70,6 +72,8 @@ The `ConfigurationSchemaUnion` an array slot's entries answer to, read off the
70
72
  slot's MST type, or undefined for any other slot.
71
73
 
72
74
  ```js
75
+ import { arraySlotUnion } from '@jbrowse/core/configuration'
76
+
73
77
  // type signature
74
78
  (slotType: IAnyType) => ConfigurationSchemaUnionMetadata | undefined
75
79
  ```
@@ -81,6 +85,8 @@ slot's MST type, or undefined for any other slot.
81
85
  A table over a feature list, or the table itself.
82
86
 
83
87
  ```js
88
+ import { asTable } from '@jbrowse/core/util/featureTable'
89
+
84
90
  // type signature
85
91
  (input: readonly Feature[] | FeatureTable) => FeatureTable
86
92
  ```
@@ -106,6 +112,8 @@ this the reader's" compares against: the config.json's, or the one a track the
106
112
  session owns was added with; empty in a session that keeps no base.
107
113
 
108
114
  ```js
115
+ import { baseDisplayConfig } from '@jbrowse/core/util/baseDisplayConfig'
116
+
109
117
  // type signature
110
118
  (self: object) => Record<string, unknown>
111
119
  ```
@@ -147,6 +155,8 @@ rather than each band re-deriving the reasoning — that is how the two
147
155
  this rule and a doc comment claiming to be the whole of it.
148
156
 
149
157
  ```js
158
+ import { boundBandHeight } from '@jbrowse/core/util/bandHeight'
159
+
150
160
  // type signature
151
161
  (n: number, { min, max }?: BandBounds) => number
152
162
  ```
@@ -174,6 +184,8 @@ Split out of `parseSvAlt` because a consumer holding an already-parsed
174
184
  polarity — the shape that produced 78bb7b84f9.
175
185
 
176
186
  ```js
187
+ import { breakendKeepsDirections } from '@jbrowse/core/util/svAlt'
188
+
177
189
  // type signature
178
190
  (bnd: Breakend) => { mateDirection: number; joinDirection: number; }
179
191
  ```
@@ -192,6 +204,8 @@ off the centre of the domain reads it through `rampMidT`, the shader's rule and
192
204
  its generated twin, so the middle follows a moving domain without a new table.
193
205
 
194
206
  ```js
207
+ import { buildColorRampLut } from '@jbrowse/core/util/colorRamp'
208
+
195
209
  // type signature
196
210
  (stops: readonly ColorRampStop[]) => Uint8Array<ArrayBuffer>
197
211
  ```
@@ -226,6 +240,8 @@ and a caller reading an untyped `frozen` slot must first check that the value is
226
240
  a refName.
227
241
 
228
242
  ```js
243
+ import { canonicalizeViewRefName } from '@jbrowse/core/util'
244
+
229
245
  // type signature
230
246
  (node: IAnyStateTreeNode, refName: string) => string
231
247
  ```
@@ -240,8 +256,10 @@ domain does not list a color of its own on first sight (`categoricalScale`); the
240
256
  caller keeps it for as long as the colors should hold.
241
257
 
242
258
  ```js
259
+ import { categoricalField } from '@jbrowse/core/util/categoricalField'
260
+
243
261
  // type signature
244
- (field: string, {…}?: {…}) => CategoricalField
262
+ (field: string, { domain, range, labels, held, }?: { domain?: readonly string[] | undefined; range?: readonly string[] | undefined; labels?: readonly string[] | undefined; held?: HeldSlots | undefined; }) => CategoricalField
245
263
  ```
246
264
 
247
265
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/categoricalField.ts)
@@ -261,7 +279,7 @@ a key off the colors of the keys met before it.
261
279
  ### CategoricalRef
262
280
 
263
281
  A field bound to a categorical scale: each distinct value takes one entry of the
264
- channel's `range` — a colour for `color`, a shape name for `shape`. Every value
282
+ channel's `range` — a color for `color`, a shape name for `shape`. Every value
265
283
  derives its entry from itself (an integer takes the slot it names, anything else
266
284
  hashes in), so every region agrees on a value it shares with another at the cost
267
285
  of an occasional collision. A `domain` spends the range deliberately: the listed
@@ -314,6 +332,8 @@ component computing the target from a rendered height drops every tick that
314
332
  lands before React re-renders.
315
333
 
316
334
  ```js
335
+ import { clampBandHeight } from '@jbrowse/core/util/bandHeight'
336
+
317
337
  // type signature
318
338
  (current: number, target: number, bounds?: BandBounds) => number
319
339
  ```
@@ -326,6 +346,8 @@ The quantile a clip toggle writes: a scale's declared default where that clips,
326
346
  below 1, else DEFAULT_CLIP_QUANTILE.
327
347
 
328
348
  ```js
349
+ import { clipQuantileOf } from '@jbrowse/core/util/quantileExtent'
350
+
329
351
  // type signature
330
352
  (declaredDefault: unknown) => number
331
353
  ```
@@ -340,18 +362,21 @@ Codes into a list of labels, one per row.
340
362
 
341
363
  ### COLOR_SCHEMES
342
364
 
343
- The named ramps a continuous colour scale's `scheme` takes, each one a stop
344
- table in `colorRamp.ts` that every ramp baker reads, so no display can name a
345
- scheme nothing bakes. `viridis`, `magma`, `inferno` and `cividis` are
346
- matplotlib's perceptual ramps, dark at the low end; `juicebox` fades from
347
- transparent to red, as Juicebox paints contacts; `fall` runs white through
348
- yellow and red to black, as HiGlass does; `reds` and `blues` are ColorBrewer's,
349
- from white; `redblue` and `purpleorange` diverge through white, ColorBrewer's
350
- RdBu and PuOr; `redgreyblue` diverges through a grey middle, which stays visible
351
- on a white page where a white middle would not, as the MAF display's identity
352
- ramp paints it.
365
+ The named ramps a continuous color scale's `scheme` takes, each one a stop table
366
+ in `colorRamp.ts` that every ramp baker reads, so no display can name a scheme
367
+ nothing bakes. `viridis`, `magma`, `inferno` and `cividis` are matplotlib's
368
+ perceptual ramps, dark at the low end; `juicebox` fades from transparent to red,
369
+ as Juicebox paints contacts; `fall` runs white through yellow and red to black,
370
+ as HiGlass does; `reds` and `blues` are ColorBrewer's, from white; `redblue` and
371
+ `purpleorange` diverge through white, ColorBrewer's RdBu and PuOr; `redgreyblue`
372
+ diverges through a grey middle, which stays visible on a white page where a
373
+ white middle would not, as `identity` paints; `blueyellowred` is ColorBrewer's
374
+ RdYlBu turned round, so low reads cool and high hot through a pale yellow
375
+ middle, as `dnds` paints.
353
376
 
354
377
  ```js
378
+ import { COLOR_SCHEMES } from '@jbrowse/core/util/colorSchemes'
379
+
355
380
  // type signature
356
381
  readonly[
357
382
  ('viridis',
@@ -364,7 +389,8 @@ readonly[
364
389
  'blues',
365
390
  'redblue',
366
391
  'purpleorange',
367
- 'redgreyblue')
392
+ 'redgreyblue',
393
+ 'blueyellowred')
368
394
  ]
369
395
  ```
370
396
 
@@ -372,10 +398,12 @@ readonly[
372
398
 
373
399
  ### colorAt
374
400
 
375
- The packed colour instance `i` of `channels` paints: `color[i]`, or `color`
376
- itself where the colour is a constant and so shipped as one number.
401
+ The packed color instance `i` of `channels` paints: `color[i]`, or `color`
402
+ itself where the color is a constant and so shipped as one number.
377
403
 
378
404
  ```js
405
+ import { colorAt } from '@jbrowse/core/util/markEncoding'
406
+
379
407
  // type signature
380
408
  (channels: Pick<EncodedChannels, "color">, i: number) => number | undefined
381
409
  ```
@@ -384,7 +412,7 @@ itself where the colour is a constant and so shipped as one number.
384
412
 
385
413
  ### ColorEncoding
386
414
 
387
- How a mark's `color` channel resolves. A CSS colour or a `jexl:` expression
415
+ How a mark's `color` channel resolves. A CSS color or a `jexl:` expression
388
416
  returning one paints per feature with no scale; the object forms bind a field to
389
417
  a scale, which a legend can describe, and share the config's member names.
390
418
 
@@ -392,11 +420,13 @@ a scale, which a legend can describe, and share the config's member names.
392
420
 
393
421
  ### colorEvaluator
394
422
 
395
- A CSS colour or `jexl:` colour expression as a per-feature packed ABGR — the
423
+ A CSS color or `jexl:` color expression as a per-feature packed ABGR — the
396
424
  unscaled arm of ColorEncoding, on its own for a display that carries a plain
397
425
  `color` slot.
398
426
 
399
427
  ```js
428
+ import { colorEvaluator } from '@jbrowse/core/util/markEncoding'
429
+
400
430
  // type signature
401
431
  (color: string, jexl: JexlInstance | undefined) => (feature: Feature) => number
402
432
  ```
@@ -405,11 +435,13 @@ unscaled arm of ColorEncoding, on its own for a display that carries a plain
405
435
 
406
436
  ### colorRampStops
407
437
 
408
- The stops a continuous colour scale samples: `range`'s CSS colours where it
409
- lists any, else the named `scheme`, viridis while that is unset, turned round
410
- under `reverse`.
438
+ The stops a continuous color scale samples: `range`'s CSS colors where it lists
439
+ any, else the named `scheme`, viridis while that is unset, turned round under
440
+ `reverse`.
411
441
 
412
442
  ```js
443
+ import { colorRampStops } from '@jbrowse/core/util/colorRamp'
444
+
413
445
  // type signature
414
446
  ({ range, scheme, reverse, }: RampDeclaration) => readonly ColorRampStop[]
415
447
  ```
@@ -418,8 +450,8 @@ under `reverse`.
418
450
 
419
451
  ### ColorScaleTable
420
452
 
421
- The scale a colour channel was resolved through, as the legend reads it — the
422
- same table the colours in the payload came from, so the key cannot disagree with
453
+ The scale a color channel was resolved through, as the legend reads it — the
454
+ same table the colors in the payload came from, so the key cannot disagree with
423
455
  the painting.
424
456
 
425
457
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/markEncodingTypes.ts)
@@ -445,6 +477,8 @@ A table an adapter answers from the typed arrays it already holds, where
445
477
  row's id. A row's hover JSON is every field it holds.
446
478
 
447
479
  ```js
480
+ import { ColumnTable } from '@jbrowse/core/util/featureTable'
481
+
448
482
  // type signature
449
483
  typeof ColumnTable
450
484
  ```
@@ -459,10 +493,12 @@ A list entry that is one of several configuration schemas, each keyed by the
459
493
  the vocabulary, the snapshot's `type` picks the member, and a `type` naming no
460
494
  member is refused in every build — where a bare `types.union` would load it as
461
495
  its first member. Each member is an `explicitlyTyped`, `closed` schema named by
462
- its key, so a key belonging to another member is refused rather than dropped;
463
- one that is not throws here.
496
+ its key, so a key belonging to another member is named on a load and refused on
497
+ a write rather than dropped; one that is not throws here.
464
498
 
465
499
  ```js
500
+ import { ConfigurationSchemaUnion } from '@jbrowse/core/configuration'
501
+
466
502
  // type signature
467
503
  <const MEMBERS extends Record<string, AnyConfigurationSchemaType>>(name: string, members: MEMBERS) => ConfigurationSchemaUnionType<MEMBERS>
468
504
  ```
@@ -471,14 +507,16 @@ one that is not throws here.
471
507
 
472
508
  ### continuousColorScale
473
509
 
474
- A continuous colour scale over `extent`, the values it met: the domain its
510
+ A continuous color scale over `extent`, the values it met: the domain its
475
511
  declared ends and the extent make, the straight table its stops bake to and
476
- where its middle stop sits, and the packed colour a value paints through them:
477
- an infinity the end on its side, as a threshold places it, and NaN, text that is
478
- no number, the misconfiguration grey. The encoder and every display painting a
479
- ramp itself read it, so a value takes one colour whoever paints it.
512
+ where its middle stop sits, and the packed color a value paints through them: an
513
+ infinity the end on its side, as a threshold places it, and NaN, text that is no
514
+ number, the misconfiguration grey. The encoder and every display painting a ramp
515
+ itself read it, so a value takes one color whoever paints it.
480
516
 
481
517
  ```js
518
+ import { continuousColorScale } from '@jbrowse/core/util/markEncoding'
519
+
482
520
  // type signature
483
521
  (encoding: ContinuousRef, extent: readonly [number, number]) => { domain: [number, number]; lut: Uint8Array<ArrayBufferLike>; midNorm: number; colorOf: (value: number) => number; }
484
522
  ```
@@ -489,8 +527,8 @@ ramp itself read it, so a value takes one colour whoever paints it.
489
527
 
490
528
  A numeric field read through a linear or log scale into a ramp. Each end of the
491
529
  domain is pinned by `domainMin` or `domainMax`, or is the region's own extreme
492
- where unset, so pinning both keeps colours consistent across a whole view. The
493
- ramp is `range`'s CSS colours, evenly spaced, where it lists any, else the named
530
+ where unset, so pinning both keeps colors consistent across a whole view. The
531
+ ramp is `range`'s CSS colors, evenly spaced, where it lists any, else the named
494
532
  `scheme`; `reverse` turns it round.
495
533
 
496
534
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/markEncodingTypes.ts)
@@ -511,33 +549,55 @@ Whether a named ramp runs dark at its low end, drawn over white: viridis and its
511
549
  siblings do, juicebox, fall, reds and blues do not.
512
550
 
513
551
  ```js
552
+ import { darkAtLowEnd } from '@jbrowse/core/util/colorRamp'
553
+
514
554
  // type signature
515
- (scheme: "blues" | "cividis" | "fall" | "inferno" | "juicebox" | "magma" | "purpleorange" | "redblue" | "redgreyblue" | "reds" | "viridis") => boolean
555
+ (scheme: "blues" | "blueyellowred" | "cividis" | "fall" | "inferno" | "juicebox" | "magma" | "purpleorange" | "redblue" | "redgreyblue" | "reds" | "viridis") => boolean
516
556
  ```
517
557
 
518
558
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/colorRamp.ts)
519
559
 
520
560
  ### dealKeyColors
521
561
 
522
- Deals `keys` their colours in `field.compare` order, so the colours a set of
523
- keys first seen together takes do not depend on the order they arrive in. A
524
- no-op for a field that deals nothing.
562
+ Deals `keys` their colors in `field.compare` order, so the colors a set of keys
563
+ first seen together takes do not depend on the order they arrive in. A no-op for
564
+ a field that deals nothing.
525
565
 
526
566
  ```js
567
+ import { dealKeyColors } from '@jbrowse/core/util/categoricalField'
568
+
527
569
  // type signature
528
570
  (field: CategoricalField, keys: Iterable<string>) => void
529
571
  ```
530
572
 
531
573
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/categoricalField.ts)
532
574
 
575
+ ### declaredSnapshot
576
+
577
+ A snapshot as `type` lifts it, without the keys it does not declare: the config
578
+ half of an entry that carries its owner's keys beside one, as a
579
+ `MultiWiggleAdapter` subadapter carries its row's `name` and `color`.
580
+
581
+ ```js
582
+ import { declaredSnapshot } from '@jbrowse/core/configuration'
583
+
584
+ // type signature
585
+ (type: IAnyType, snapshot: Record<string, unknown>) => Record<string, unknown>
586
+ ```
587
+
588
+ [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/configuration/snapshotPreprocess.ts)
589
+
533
590
  ### DEFAULT_COLOR_SCHEME
534
591
 
535
592
  The ramp a continuous scale samples while it names no `range` and no `scheme`,
536
593
  so a declaration spelling it out and one leaving it unset resolve alike.
537
594
 
538
595
  ```js
596
+ import { DEFAULT_COLOR_SCHEME } from '@jbrowse/core/util/colorSchemes'
597
+
539
598
  // type signature
540
599
  ;'blues' |
600
+ 'blueyellowred' |
541
601
  'cividis' |
542
602
  'fall' |
543
603
  'inferno' |
@@ -582,6 +642,8 @@ feature `i` (featureIndexAt). A lane is present when the caller asked for it
582
642
  The buffers an EncodedChannels owns, for `rpcResult`'s transfer list.
583
643
 
584
644
  ```js
645
+ import { encodedChannelTransferables } from '@jbrowse/core/util/markEncoding'
646
+
585
647
  // type signature
586
648
  (c: EncodedChannels) => ArrayBufferLike[]
587
649
  ```
@@ -613,6 +675,8 @@ its own loop over the admitted rows, a lane straight off a typed column and a
613
675
  categorical over a `category` column per label.
614
676
 
615
677
  ```js
678
+ import { encodeFeatures } from '@jbrowse/core/util/markEncoding'
679
+
616
680
  // type signature
617
681
  <L extends LaneName>(input: readonly Feature[] | FeatureTable, encoding: MarkEncodingInput, lanes: readonly L[], ctx?: EncodeContext) => Encoded<L>
618
682
  ```
@@ -625,6 +689,8 @@ A config value as `feature` reads it: a `jexl:` callback evaluated against the
625
689
  feature, anything else as written.
626
690
 
627
691
  ```js
692
+ import { evaluateForFeature } from '@jbrowse/core/configuration'
693
+
628
694
  // type signature
629
695
  (value: unknown, feature: Feature, jexl: JexlInstance) => unknown
630
696
  ```
@@ -654,8 +720,10 @@ every step runs once over the ordered rows, keeping section order, and one that
654
720
  groups rows groups within a section.
655
721
 
656
722
  ```js
723
+ import { facetLayers } from '@jbrowse/core/util/featureTransforms'
724
+
657
725
  // type signature
658
- (input: readonly Feature[] | FeatureTable, facet: FacetSpec, layers: readonly {…}[], jexl?: JexlInstance | undefined) => { ...; }
726
+ (input: readonly Feature[] | FeatureTable, facet: FacetSpec, layers: readonly { transform?: readonly TransformStep[] | undefined; row?: string | undefined; }[], jexl?: JexlInstance | undefined) => { layers: FacetedLayer[]; sections: FacetSection[]; }
659
727
  ```
660
728
 
661
729
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/featureTransforms.ts)
@@ -681,6 +749,8 @@ The input feature instance `i` of `channels` was: `featureIndex[i]`, or `i`
681
749
  itself where the encoder skipped none and so shipped no index.
682
750
 
683
751
  ```js
752
+ import { featureIndexAt } from '@jbrowse/core/util/markEncoding'
753
+
684
754
  // type signature
685
755
  (channels: Pick<EncodedChannels, "featureIndex">, i: number) => number
686
756
  ```
@@ -706,6 +776,8 @@ Quantiles that meet span their own size, as a flat domain widens in
706
776
  `getNiceDomain`.
707
777
 
708
778
  ```js
779
+ import { fenceOutliers } from '@jbrowse/core/util/quantileExtent'
780
+
709
781
  // type signature
710
782
  ({ extremes, quantiles, zero, }: { extremes: readonly [number, number]; quantiles: readonly [number, number]; zero: boolean; }) => [number, number]
711
783
  ```
@@ -720,6 +792,8 @@ record), or a `jexl:` expression over `feature`. A jexl expression that does not
720
792
  compile throws here, once, rather than on every feature.
721
793
 
722
794
  ```js
795
+ import { fieldReader } from '@jbrowse/core/util/fieldReader'
796
+
723
797
  // type signature
724
798
  (ref: string, jexl: JexlInstance | undefined) => (feature: Feature) => unknown
725
799
  ```
@@ -747,6 +821,8 @@ The least and greatest finite values of `values[0, count)`,
747
821
  `[Infinity, -Infinity]` where none is finite.
748
822
 
749
823
  ```js
824
+ import { finiteExtremes } from '@jbrowse/core/util/quantileExtent'
825
+
750
826
  // type signature
751
827
  (values: ArrayLike<number>, count: number) => [number, number]
752
828
  ```
@@ -784,6 +860,8 @@ wanted, and because that cost is the finding: the assembly manager is the one
784
860
  thing on `AbstractSessionModel` a third-party host cannot simply implement.
785
861
 
786
862
  ```js
863
+ import { getAssemblyHost } from '@jbrowse/core/util'
864
+
787
865
  // type signature
788
866
  (node: IAnyStateTreeNode) => AssemblyHost
789
867
  ```
@@ -800,6 +878,8 @@ allele id where a contig name belongs. Callers that navigate or split-view a
800
878
  mate must drop both rather than treat `<DEL>` as a refName.
801
879
 
802
880
  ```js
881
+ import { getBreakendMateLocString } from '@jbrowse/core/util/svAlt'
882
+
803
883
  // type signature
804
884
  (breakend?: Breakend | undefined) => string | undefined
805
885
  ```
@@ -812,8 +892,11 @@ Reads a configuration value from a track or display state model: exactly
812
892
  `readConfObject(model.configuration, path)`, with the same slot-name check.
813
893
 
814
894
  ```js
895
+ import { getConf } from '@jbrowse/core/configuration'
896
+
815
897
  // type signature
816
- {…}
898
+ (model: { configuration: AnyConfigurationModel; }) => AnyConfigurationSnapshot
899
+ <CONFMODEL extends AnyConfigurationModel, const SLOT extends ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>> | ConfigurationSlotPath<ConfigurationSchemaForModel<CONFMODEL>> = ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>>>(model: { configuration: CONFMODEL; }, slotPath: SLOT, args?: Record<string, unknown>) => SLOT extends string ? ConfigurationSlotValue<ConfigurationSchemaForModel<CONFMODEL>, SLOT> : ConfigurationSlotPathValue<ConfigurationSchemaForModel<CONFMODEL>, SLOT>
817
900
  ```
818
901
 
819
902
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/configuration/getConf.ts)
@@ -824,6 +907,8 @@ Returns the display model that contains the given node. Throws if the node has
824
907
  no containing display.
825
908
 
826
909
  ```js
910
+ import { getContainingDisplay } from '@jbrowse/core/util'
911
+
827
912
  // type signature
828
913
  (node: IAnyStateTreeNode) => AbstractDisplayModel
829
914
  ```
@@ -836,6 +921,8 @@ Returns the track model that contains the given node. Throws if the node has no
836
921
  containing track.
837
922
 
838
923
  ```js
924
+ import { getContainingTrack } from '@jbrowse/core/util'
925
+
839
926
  // type signature
840
927
  (node: IAnyStateTreeNode) => AbstractTrackModel
841
928
  ```
@@ -848,6 +935,8 @@ Returns the view model that contains the given node. Throws if the node has no
848
935
  containing view.
849
936
 
850
937
  ```js
938
+ import { getContainingView } from '@jbrowse/core/util'
939
+
851
940
  // type signature
852
941
  (node: IAnyStateTreeNode) => AbstractViewModel
853
942
  ```
@@ -859,6 +948,8 @@ containing view.
859
948
  Where a display puts a dialog it cannot mount itself.
860
949
 
861
950
  ```js
951
+ import { getDialogHost } from '@jbrowse/core/util'
952
+
862
953
  // type signature
863
954
  (node: IAnyStateTreeNode) => DialogHost
864
955
  ```
@@ -870,6 +961,8 @@ Where a display puts a dialog it cannot mount itself.
870
961
  Returns the MST environment for a node, which carries the `pluginManager`.
871
962
 
872
963
  ```js
964
+ import { getEnv } from '@jbrowse/core/util'
965
+
873
966
  // type signature
874
967
  (obj: IAnyStateTreeNode) => { pluginManager: PluginManager; }
875
968
  ```
@@ -881,6 +974,8 @@ Returns the MST environment for a node, which carries the `pluginManager`.
881
974
  Where a display puts a message it cannot draw itself.
882
975
 
883
976
  ```js
977
+ import { getNotificationSink } from '@jbrowse/core/util'
978
+
884
979
  // type signature
885
980
  (node: IAnyStateTreeNode) => NotificationSink
886
981
  ```
@@ -892,6 +987,8 @@ Where a display puts a message it cannot draw itself.
892
987
  The colors to draw with, and the args that rebuild them in a worker.
893
988
 
894
989
  ```js
990
+ import { getPaletteHost } from '@jbrowse/core/util'
991
+
895
992
  // type signature
896
993
  (node: IAnyStateTreeNode) => PaletteHost
897
994
  ```
@@ -904,6 +1001,8 @@ Everything a display needs of its host in order to draw a region: the
904
1001
  assemblies, the RPC entry point and the colors.
905
1002
 
906
1003
  ```js
1004
+ import { getRenderingServices } from '@jbrowse/core/util'
1005
+
907
1006
  // type signature
908
1007
  (node: IAnyStateTreeNode) => RenderingServices
909
1008
  ```
@@ -915,6 +1014,8 @@ assemblies, the RPC entry point and the colors.
915
1014
  The host's RPC entry point, for a module that issues RPCs and nothing else.
916
1015
 
917
1016
  ```js
1017
+ import { getRpcHost } from '@jbrowse/core/util'
1018
+
918
1019
  // type signature
919
1020
  (node: IAnyStateTreeNode) => RpcHost
920
1021
  ```
@@ -927,6 +1028,8 @@ Returns the JBrowse session model for any node in the state tree. Throws if the
927
1028
  node has no session ancestor.
928
1029
 
929
1030
  ```js
1031
+ import { getSession } from '@jbrowse/core/util'
1032
+
930
1033
  // type signature
931
1034
  (node: IAnyStateTreeNode) => AbstractSessionModel
932
1035
  ```
@@ -940,6 +1043,8 @@ Prefer one of the narrower accessors below, which say which of them the calling
940
1043
  module actually uses.
941
1044
 
942
1045
  ```js
1046
+ import { getSessionServices } from '@jbrowse/core/util'
1047
+
943
1048
  // type signature
944
1049
  (node: IAnyStateTreeNode) => SessionServices
945
1050
  ```
@@ -952,6 +1057,8 @@ The `HeldSlots` `owner` keeps under `key`, made empty on first ask. Lives as
952
1057
  long as `owner` and is never persisted, so a reload deals afresh.
953
1058
 
954
1059
  ```js
1060
+ import { heldSlotsOf } from '@jbrowse/core/util/categoricalField'
1061
+
955
1062
  // type signature
956
1063
  (owner: object, key: string) => HeldSlots
957
1064
  ```
@@ -971,6 +1078,8 @@ The hit index over `count` instances: each a box from `x` to `x2` at its `y`, or
971
1078
  at 0 for a mark with no value.
972
1079
 
973
1080
  ```js
1081
+ import { hitIndexOf } from '@jbrowse/core/util/markEncoding'
1082
+
974
1083
  // type signature
975
1084
  (x: Uint32Array<ArrayBufferLike>, x2: Uint32Array<ArrayBufferLike>, y: Float32Array<ArrayBufferLike> | undefined, count?: number) => Flatbush
976
1085
  ```
@@ -990,6 +1099,8 @@ Hydrating one entry twice returns one node. A shown track resolves to the
990
1099
  session's working copy instead (ADR-032), which has the same content.
991
1100
 
992
1101
  ```js
1102
+ import { hydrateTrackConfig } from '@jbrowse/core/configuration'
1103
+
993
1104
  // type signature
994
1105
  (pluginManager: PluginManager, config: Record<string, unknown>) => AnyConfigurationModel | undefined
995
1106
  ```
@@ -1003,6 +1114,8 @@ breakends (`.A` / `G.`), and the symbolic-mate form (`G<DEL>`, an angle bracket
1003
1114
  past position 0; a leading `<` is a plain symbolic allele).
1004
1115
 
1005
1116
  ```js
1117
+ import { isBreakend } from '@jbrowse/core/util/svAlt'
1118
+
1006
1119
  // type signature
1007
1120
  (alt: string) => boolean
1008
1121
  ```
@@ -1015,6 +1128,8 @@ Whether a field holds no value at all, as against text that fails to parse:
1015
1128
  absent, empty, or a VCF's `AF=.`, which arrives as `[undefined]`.
1016
1129
 
1017
1130
  ```js
1131
+ import { isMissing } from '@jbrowse/core/util/thresholdScale'
1132
+
1018
1133
  // type signature
1019
1134
  (value: unknown) => boolean
1020
1135
  ```
@@ -1028,6 +1143,8 @@ no path to walk and no expression to evaluate. A loop over a plain name keeps
1028
1143
  the direct call, and only a config that writes a path pays for one.
1029
1144
 
1030
1145
  ```js
1146
+ import { isPlainFieldRef } from '@jbrowse/core/util/fieldReader'
1147
+
1031
1148
  // type signature
1032
1149
  (ref: string) => ref is never
1033
1150
  ```
@@ -1051,6 +1168,8 @@ face each other. A PAF row's strand is the query's orientation and states none
1051
1168
  for the target, so it names no side.
1052
1169
 
1053
1170
  ```js
1171
+ import { junctionEnds } from '@jbrowse/core/util/svAlt'
1172
+
1054
1173
  // type signature
1055
1174
  (feature: Feature, alt?: string | undefined, alleleIndex?: number | undefined) => { own: JunctionEnd; mate: JunctionEnd; } | undefined
1056
1175
  ```
@@ -1059,12 +1178,14 @@ for the target, so it names no side.
1059
1178
 
1060
1179
  ### keyNames
1061
1180
 
1062
- What a key names each of `keys`, from a colour object's `labels`: one each in
1181
+ What a key names each of `keys`, from a color object's `labels`: one each in
1063
1182
  order, an empty or missing entry leaving that key its own name. Every key that
1064
1183
  takes `labels` reads them through this, so a config means one thing by them
1065
1184
  everywhere.
1066
1185
 
1067
1186
  ```js
1187
+ import { keyNames } from '@jbrowse/core/util/categoricalField'
1188
+
1068
1189
  // type signature
1069
1190
  (keys: readonly unknown[], labels?: readonly string[]) => ReadonlyMap<string, string>
1070
1191
  ```
@@ -1087,8 +1208,10 @@ hovers declines the index, which is most of the encoder's cost after the walk.
1087
1208
  synchronous `addOrReplaceView` requires it loaded already.
1088
1209
 
1089
1210
  ```js
1211
+ import { launchOrReplaceView } from '@jbrowse/core/util'
1212
+
1090
1213
  // type signature
1091
- (args: { session: AbstractViewContainer; typeName: string; initialState?: Record<string, unknown> | undefined; replacing?: AbstractViewModel | undefined; }) => Promise<...>
1214
+ (args: { session: AbstractViewContainer; typeName: string; initialState?: Record<string, unknown> | undefined; replacing?: AbstractViewModel | undefined; }) => Promise<AbstractViewModel>
1092
1215
  ```
1093
1216
 
1094
1217
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/mstUtils.ts)
@@ -1109,8 +1232,10 @@ early as it can: after the last shared step that must see every row, so the
1109
1232
  steps that follow it read the rows already in section order.
1110
1233
 
1111
1234
  ```js
1235
+ import { layerTables } from '@jbrowse/core/util/featureTransforms'
1236
+
1112
1237
  // type signature
1113
- (input: readonly Feature[] | FeatureTable, request: {…}, jexl?: JexlInstance | undefined) => { ...; }
1238
+ (input: readonly Feature[] | FeatureTable, request: { transform?: readonly TransformStep[] | undefined; facet?: FacetSpec | undefined; layers: readonly { transform?: readonly TransformStep[] | undefined; row?: string | undefined; }[]; }, jexl?: JexlInstance | undefined) => { layers: { table: FeatureTable; row: string | Uint32Array<ArrayBufferLike> | undefined; }[]; sections: FacetSection[] | undefined; }
1114
1239
  ```
1115
1240
 
1116
1241
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/featureTransforms.ts)
@@ -1125,6 +1250,8 @@ members off it. The draft is copied first, since MST freezes what it creates
1125
1250
  from.
1126
1251
 
1127
1252
  ```js
1253
+ import { liftPlot } from '@jbrowse/core/configuration'
1254
+
1128
1255
  // type signature
1129
1256
  (conf: AnyConfigurationModel, draft: Plot) => AnyConfigurationModel
1130
1257
  ```
@@ -1142,7 +1269,7 @@ name, the name of each entry.
1142
1269
  ### ListedRowSource
1143
1270
 
1144
1271
  One row an adapter lists: `name` is a value of the listing's field, and `label`
1145
- and `color` are what the adapter names and colours that row with.
1272
+ and `color` are what the adapter names and colors that row with.
1146
1273
 
1147
1274
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/data_adapters/BaseAdapter/rowSources.ts)
1148
1275
 
@@ -1151,6 +1278,8 @@ and `color` are what the adapter names and colours that row with.
1151
1278
  Whether an adapter implements RowSourceLister.
1152
1279
 
1153
1280
  ```js
1281
+ import { listsRowSources } from '@jbrowse/core/data_adapters/BaseAdapter/rowSources'
1282
+
1154
1283
  // type signature
1155
1284
  (adapter: object) => adapter is RowSourceLister
1156
1285
  ```
@@ -1204,6 +1333,8 @@ whether links are the picture a track wants asks here rather than re-reading the
1204
1333
  fields.
1205
1334
 
1206
1335
  ```js
1336
+ import { matedBy } from '@jbrowse/core/util/featureTransforms'
1337
+
1207
1338
  // type signature
1208
1339
  (f: Feature) => "alt" | "mate" | "pair" | undefined
1209
1340
  ```
@@ -1225,11 +1356,13 @@ ends answer once.
1225
1356
 
1226
1357
  ### MISCONFIGURED_ABGR
1227
1358
 
1228
- The misconfiguration grey packed as the encoder paints it: a `jexl:` colour that
1359
+ The misconfiguration grey packed as the encoder paints it: a `jexl:` color that
1229
1360
  answered no string, a ramp value that is no number, text a threshold cannot
1230
1361
  read.
1231
1362
 
1232
1363
  ```js
1364
+ import { MISCONFIGURED_ABGR } from '@jbrowse/core/util/markEncoding'
1365
+
1233
1366
  // type signature
1234
1367
  number
1235
1368
  ```
@@ -1242,6 +1375,8 @@ The no-value grey packed as the encoder paints it: a feature with nothing in the
1242
1375
  field a threshold reads.
1243
1376
 
1244
1377
  ```js
1378
+ import { NO_VALUE_ABGR } from '@jbrowse/core/util/markEncoding'
1379
+
1245
1380
  // type signature
1246
1381
  number
1247
1382
  ```
@@ -1254,8 +1389,10 @@ The row a feature with nothing in a categorical field lands on, so a key says
1254
1389
  why a mark is grey rather than listing a blank value.
1255
1390
 
1256
1391
  ```js
1392
+ import { NO_VALUE_LABEL } from '@jbrowse/core/util/markEncoding'
1393
+
1257
1394
  // type signature
1258
- '(no value)'
1395
+ ;('(no value)')
1259
1396
  ```
1260
1397
 
1261
1398
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/categoricalField.ts)
@@ -1266,8 +1403,10 @@ The key a value holding text that is no number files under on a threshold scale,
1266
1403
  painted the misconfiguration grey rather than passing for a missing value.
1267
1404
 
1268
1405
  ```js
1406
+ import { NOT_A_NUMBER_LABEL } from '@jbrowse/core/util/thresholdScale'
1407
+
1269
1408
  // type signature
1270
- '(not a number)'
1409
+ ;('(not a number)')
1271
1410
  ```
1272
1411
 
1273
1412
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/thresholdScale.ts)
@@ -1284,6 +1423,8 @@ readerOf as the number a quantitative channel or step reads, `NaN` where a row
1284
1423
  holds none, by `numericValue`'s rules.
1285
1424
 
1286
1425
  ```js
1426
+ import { numberReaderOf } from '@jbrowse/core/util/featureTable'
1427
+
1287
1428
  // type signature
1288
1429
  (column: Column) => (i: number) => number
1289
1430
  ```
@@ -1297,6 +1438,8 @@ back as the numbers it names. A member that is not a number reads NaN, which
1297
1438
  every comparison against it declines.
1298
1439
 
1299
1440
  ```js
1441
+ import { numericDomain } from '@jbrowse/core/util/thresholdScale'
1442
+
1300
1443
  // type signature
1301
1444
  (domain: readonly (string | number)[]) => number[]
1302
1445
  ```
@@ -1309,6 +1452,8 @@ The text as a plot, refusing a key the display's plot does not hold. The schema
1309
1452
  is the parser past this point.
1310
1453
 
1311
1454
  ```js
1455
+ import { parsePlot } from '@jbrowse/core/configuration'
1456
+
1312
1457
  // type signature
1313
1458
  (text: string, keys: readonly string[]) => Plot
1314
1459
  ```
@@ -1323,12 +1468,38 @@ alt's place in `ALT`, which a record repeating one symbolic allele with several
1323
1468
  lengths needs; it defaults to the first place `alt` appears.
1324
1469
 
1325
1470
  ```js
1471
+ import { parseSvAlt } from '@jbrowse/core/util/svAlt'
1472
+
1326
1473
  // type signature
1327
- (feature: Feature, alt?: string | undefined, alleleIndex?: number) => {…} | undefined
1474
+ (feature: Feature, alt?: string | undefined, alleleIndex?: number) => { mateRefName: string; matePos: number; mateDirection?: number | undefined; joinDirection?: number | undefined; } | undefined
1328
1475
  ```
1329
1476
 
1330
1477
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/svAlt.ts)
1331
1478
 
1479
+ ### pathSeries
1480
+
1481
+ A path layer's table in series order, as PathSpec defines a series, with each
1482
+ row's series beside it and the stretch past which a series breaks. `steps` are
1483
+ every step the layer's rows went through, which a `window` among them reads the
1484
+ default break from.
1485
+
1486
+ ```js
1487
+ // type signature
1488
+ (table: FeatureTable, row: RowEncoding, path: PathSpec, steps: readonly TransformStep[], jexl?: JexlInstance | undefined) => { table: FeatureTable; row: RowEncoding; series: Uint32Array<ArrayBuffer>; gapBp: number | undefined; }
1489
+ ```
1490
+
1491
+ [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/pathSeries.ts)
1492
+
1493
+ ### PathSpec
1494
+
1495
+ A path's series, as Vega-Lite draws a line: one per row and, within a row, one
1496
+ per distinct value of `by`, a categorical color's field, each in start order.
1497
+ `gapBp` breaks a series where the next instance's middle lies further on than
1498
+ that; absent, a `window` step among the layer's steps sets it to the bases a
1499
+ frame spans at the median row, and with none a series is one run.
1500
+
1501
+ [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/markEncodingTypes.ts)
1502
+
1332
1503
  ### PileupStep
1333
1504
 
1334
1505
  Assign every feature the lowest row on which it overlaps nothing already there —
@@ -1355,6 +1526,8 @@ and what each holds: what "Edit plot..." shows and an agent reads as a display's
1355
1526
  `plot`. A display's plot is the ones its config declares (`plotKeysOf`).
1356
1527
 
1357
1528
  ```js
1529
+ import { PLOT_VOCABULARY } from '@jbrowse/core/configuration'
1530
+
1358
1531
  // type signature
1359
1532
  Readonly<Record<string, string>>
1360
1533
  ```
@@ -1373,6 +1546,8 @@ what it does.
1373
1546
  The plot keys a display config declares.
1374
1547
 
1375
1548
  ```js
1549
+ import { plotKeysOf } from '@jbrowse/core/configuration'
1550
+
1376
1551
  // type signature
1377
1552
  (conf: AnyConfigurationModel) => string[]
1378
1553
  ```
@@ -1386,6 +1561,8 @@ shares with no other display, a default plot's marks, shows its entries, since
1386
1561
  they are what is drawn.
1387
1562
 
1388
1563
  ```js
1564
+ import { plotOf } from '@jbrowse/core/configuration'
1565
+
1389
1566
  // type signature
1390
1567
  (conf: AnyConfigurationModel) => Plot
1391
1568
  ```
@@ -1400,6 +1577,8 @@ way but lifting to the same setting writes nothing. Throws a refusal before
1400
1577
  anything is written.
1401
1578
 
1402
1579
  ```js
1580
+ import { plotWrites } from '@jbrowse/core/configuration'
1581
+
1403
1582
  // type signature
1404
1583
  (conf: AnyConfigurationModel, draft: Plot) => Record<string, unknown>
1405
1584
  ```
@@ -1408,11 +1587,13 @@ anything is written.
1408
1587
 
1409
1588
  ### preProcessConfigSnapshot
1410
1589
 
1411
- A snapshot as `type` admits it: the same lift and checks `type.create` applies,
1412
- so a dialog or a validator refuses exactly what a config file cannot hold.
1413
- Throws what the schema's `preProcessSnapshot` throws.
1590
+ A snapshot as a write to `type` admits it: the lift and checks `setConf`
1591
+ applies, so a dialog or a validator refuses what an edit cannot hold, an
1592
+ undeclared key included. Throws what the schema's `preProcessSnapshot` throws.
1414
1593
 
1415
1594
  ```js
1595
+ import { preProcessConfigSnapshot } from '@jbrowse/core/configuration'
1596
+
1416
1597
  // type signature
1417
1598
  (type: IAnyType, snapshot: unknown) => Record<string, unknown>
1418
1599
  ```
@@ -1426,15 +1607,17 @@ What the open ends of a scale follow over `values[0, count)`: at a `quantile` of
1426
1607
  values on its side of 0, so one spike takes neither the axis nor the ramp, and a
1427
1608
  sparse tail of the other sign keeps its own end. An axis that starts at 0 adds
1428
1609
  it itself. Under 0.5 reads as 0.5, where the ends meet rather than cross.
1429
- `scales.y.domainQuantile` and a colour's `domainQuantile` both name it.
1610
+ `scales.y.domainQuantile` and a color's `domainQuantile` both name it.
1430
1611
  `[Infinity, -Infinity]` where nothing is finite.
1431
1612
 
1432
1613
  Nearest rank keeps ties: where one value holds the rank, as on a segmented
1433
- copy-number track, a ramp clipped below 1 paints nearly every value one colour.
1434
- A value axis fences instead (fenceOutliers); a ramp takes the same fence once a
1435
- colour default below 1 meets tied data.
1614
+ copy-number track, a ramp clipped below 1 paints nearly every value one color. A
1615
+ value axis fences instead (fenceOutliers); a ramp takes the same fence once a
1616
+ color default below 1 meets tied data.
1436
1617
 
1437
1618
  ```js
1619
+ import { quantileExtent } from '@jbrowse/core/util/quantileExtent'
1620
+
1438
1621
  // type signature
1439
1622
  (values: ArrayLike<number>, count: number, quantile?: number) => [number, number]
1440
1623
  ```
@@ -1448,6 +1631,8 @@ of them sit at or below, so a handful of values clips at their maximum. Permutes
1448
1631
  `a`; 0 where `n` is.
1449
1632
 
1450
1633
  ```js
1634
+ import { quantileOf } from '@jbrowse/core/util/quantileExtent'
1635
+
1451
1636
  // type signature
1452
1637
  (a: Float32Array<ArrayBufferLike>, n: number, quantile: number) => number
1453
1638
  ```
@@ -1456,18 +1641,20 @@ of them sit at or below, so a handful of values clips at their maximum. Permutes
1456
1641
 
1457
1642
  ### RampDeclaration
1458
1643
 
1459
- A continuous colour scale's ramp as a config declares it.
1644
+ A continuous color scale's ramp as a config declares it.
1460
1645
 
1461
1646
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/colorRamp.ts)
1462
1647
 
1463
1648
  ### rampDomain
1464
1649
 
1465
- The domain a continuous colour scale spans: each end `min` or `max` pins, else
1650
+ The domain a continuous color scale spans: each end `min` or `max` pins, else
1466
1651
  the extent's, ascending, since a span has no direction and `reverse` is the
1467
1652
  ramp's. An open end stops at a pinned one rather than crossing it, and an extent
1468
1653
  holding no value (`[Infinity, -Infinity]`) spans [0, 1].
1469
1654
 
1470
1655
  ```js
1656
+ import { rampDomain } from '@jbrowse/core/util/colorRamp'
1657
+
1471
1658
  // type signature
1472
1659
  (min: number | undefined, max: number | undefined, extent: readonly [number, number]) => [number, number]
1473
1660
  ```
@@ -1481,6 +1668,8 @@ not-a-number and no-value rows a threshold's key ends with. Empty while neither
1481
1668
  painted.
1482
1669
 
1483
1670
  ```js
1671
+ import { rampGapScales } from '@jbrowse/core/util/thresholdScale'
1672
+
1484
1673
  // type signature
1485
1674
  (id: string, met: { missing?: boolean | undefined; notNumber?: boolean | undefined; }) => CategoricalScale[]
1486
1675
  ```
@@ -1494,6 +1683,8 @@ for the same declaration, since a GPU backend re-uploads its ramp texture when
1494
1683
  the identity changes and a render state is rebuilt far more often than its ramp.
1495
1684
 
1496
1685
  ```js
1686
+ import { rampLutOf } from '@jbrowse/core/util/colorRamp'
1687
+
1497
1688
  // type signature
1498
1689
  (ramp: RampDeclaration) => Uint8Array<ArrayBufferLike>
1499
1690
  ```
@@ -1508,8 +1699,10 @@ The table stays straight and `domainMid` a value, so the middle stop follows the
1508
1699
  widened domain with no table baked again.
1509
1700
 
1510
1701
  ```js
1702
+ import { rampOverExtent } from '@jbrowse/core/util/markEncoding'
1703
+
1511
1704
  // type signature
1512
- (table: {…}, extent: [...]) => { ...; }
1705
+ (table: {…}, extent: [number, number]) => { kind: "ramp"; field: string; scale: "linear" | "log"; domain: [number, number]; pinned: [boolean, boolean]; domainMid?: number | undefined; range?: string[] | undefined; scheme?: "blues" | "blueyellowred" | "cividis" | "fall" | "inferno" | "juicebox" | "magma" | "purpleorange" | "redblue" | "redgreyblue" | "reds" | "viridis" | undefined; reverse?: boolean | undefined; extent: [number, number]; quantile?: number | undefined; lut: Uint8Array<…>; missing?: boolean | undefined; notNumber?: boolean | undefined; }
1513
1706
  ```
1514
1707
 
1515
1708
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/markEncoding.ts)
@@ -1525,8 +1718,11 @@ and `type` directly, and a slot through a helper that supplies the default, such
1525
1718
  as `getConfAssemblyNamesOrNone`.
1526
1719
 
1527
1720
  ```js
1721
+ import { readConfObject } from '@jbrowse/core/configuration'
1722
+
1528
1723
  // type signature
1529
- {…}
1724
+ (confObject: AnyConfigurationModel) => AnyConfigurationSnapshot
1725
+ <CONFMODEL extends AnyConfigurationModel, const SLOT extends ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>> | ConfigurationSlotPath<ConfigurationSchemaForModel<CONFMODEL>> = ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>>>(confObject: CONFMODEL, slotPath?: SLOT, args?: Record<string, unknown>) => SLOT extends string ? ConfigurationSlotValue<ConfigurationSchemaForModel<CONFMODEL>, SLOT> : ConfigurationSlotPathValue<ConfigurationSchemaForModel<CONFMODEL>, SLOT>
1530
1726
  ```
1531
1727
 
1532
1728
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/configuration/readConfObject.ts)
@@ -1537,6 +1733,8 @@ A reader of a column's values by row, its kind resolved here once. A `number`
1537
1733
  lane with no index reads straight off the lane.
1538
1734
 
1539
1735
  ```js
1736
+ import { readerOf } from '@jbrowse/core/util/featureTable'
1737
+
1540
1738
  // type signature
1541
1739
  (column: Column) => (i: number) => unknown
1542
1740
  ```
@@ -1555,12 +1753,30 @@ other adapter keys on its config alone: a synteny adapter is fetched from each
1555
1753
  of its assemblies and reads no reference.
1556
1754
 
1557
1755
  ```js
1756
+ import { READS_REFERENCE } from '@jbrowse/core/data_adapters/dataAdapterCache'
1757
+
1558
1758
  // type signature
1559
- 'readsReference'
1759
+ ;('readsReference')
1560
1760
  ```
1561
1761
 
1562
1762
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/data_adapters/dataAdapterCache.ts)
1563
1763
 
1764
+ ### refusingUndeclaredKeys
1765
+
1766
+ Runs `write` as a write: a `closed` schema created inside it refuses a key it
1767
+ does not declare, at any depth, where a config loading only names the key on the
1768
+ console. `setConf`, a settings bag and a plot draft write this way, so a typo in
1769
+ an edit is an error and a config written for another version still draws.
1770
+
1771
+ ```js
1772
+ import { refusingUndeclaredKeys } from '@jbrowse/core/configuration'
1773
+
1774
+ // type signature
1775
+ <T>(write: () => T) => T
1776
+ ```
1777
+
1778
+ [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/configuration/snapshotPreprocess.ts)
1779
+
1564
1780
  ### relight
1565
1781
 
1566
1782
  Move a color's OKLCH lightness by `lightnessShift` and scale its chroma, holding
@@ -1582,6 +1798,8 @@ same coefficient moves a yellow and a blue by visibly different amounts: a lap
1582
1798
  has to read as one tone across the whole palette or it reads as noise.
1583
1799
 
1584
1800
  ```js
1801
+ import { relight } from '@jbrowse/core/util/color'
1802
+
1585
1803
  // type signature
1586
1804
  (color: string, lightnessShift: number, chromaScale?: number) => string
1587
1805
  ```
@@ -1596,6 +1814,8 @@ default, so a `when` value that is the default fires for an absent slot, which
1596
1814
  is what the generated JSON Schema's `if` does.
1597
1815
 
1598
1816
  ```js
1817
+ import { requirementProblems } from '@jbrowse/core/configuration'
1818
+
1599
1819
  // type signature
1600
1820
  (type: IAnyType, snapshot: Record<string, unknown>) => RequirementProblem[]
1601
1821
  ```
@@ -1608,6 +1828,8 @@ The pixels a band takes from the plot below it: 0 when off, the (optionally
1608
1828
  bound) stated height when on. This is the single spelling of "off spends 0 px".
1609
1829
 
1610
1830
  ```js
1831
+ import { reservedPx } from '@jbrowse/core/util/bandLayout'
1832
+
1611
1833
  // type signature
1612
1834
  (band: Band) => number
1613
1835
  ```
@@ -1624,7 +1846,7 @@ files, a MAF its species.
1624
1846
  ### RowSourceListing
1625
1847
 
1626
1848
  Every row an adapter has, in its own order, whatever the loaded regions hold, so
1627
- a row display gives a row with nothing in view its place, label and colour.
1849
+ a row display gives a row with nothing in view its place, label and color.
1628
1850
 
1629
1851
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/data_adapters/BaseAdapter/rowSources.ts)
1630
1852
 
@@ -1640,6 +1862,8 @@ what `reload()` clears, and nothing would re-run the install behind it. Three
1640
1862
  displays hand-rolled this IIFE and each drew the lines differently.
1641
1863
 
1642
1864
  ```js
1865
+ import { runLazyAfterAttach } from '@jbrowse/core/util/lazyAfterAttach'
1866
+
1643
1867
  // type signature
1644
1868
  <Self extends IStateTreeNode>(self: Self, load: () => Promise<(self: Self) => void>) => void
1645
1869
  ```
@@ -1653,6 +1877,8 @@ The table a step answers is what the next one reads, and the last one is what
1653
1877
  the encoder walks.
1654
1878
 
1655
1879
  ```js
1880
+ import { runTransforms } from '@jbrowse/core/util/featureTransforms'
1881
+
1656
1882
  // type signature
1657
1883
  (input: readonly Feature[] | FeatureTable, steps: readonly TransformStep[], jexl?: JexlInstance | undefined) => FeatureTable
1658
1884
  ```
@@ -1665,6 +1891,8 @@ parseBreakend, honoring its `Breakend | undefined` signature. ALT strings are
1665
1891
  user data and malformed breakends do occur;
1666
1892
 
1667
1893
  ```js
1894
+ import { safeParseBreakend } from '@jbrowse/core/util/svAlt'
1895
+
1668
1896
  // type signature
1669
1897
  (alt: string) => Breakend | undefined
1670
1898
  ```
@@ -1678,6 +1906,8 @@ interpolated per channel. `t` is clamped, so the ends are the end stops rather
1678
1906
  than an extrapolation past them, and a one-stop ramp is that stop everywhere.
1679
1907
 
1680
1908
  ```js
1909
+ import { sampleColorRamp } from '@jbrowse/core/util/colorRamp'
1910
+
1681
1911
  // type signature
1682
1912
  (stops: readonly ColorRampStop[], t: number) => ColorRampStop
1683
1913
  ```
@@ -1694,6 +1924,8 @@ clampBandHeight rule). Whole pixels, rounded by largest remainder, so the stack
1694
1924
  moves by exactly the rounded distance.
1695
1925
 
1696
1926
  ```js
1927
+ import { scaleBandHeights } from '@jbrowse/core/util/bandHeight'
1928
+
1697
1929
  // type signature
1698
1930
  (heights: number[], distance: number, floor?: number) => number[]
1699
1931
  ```
@@ -1708,6 +1940,8 @@ met there would floor the domain at 1 and fold a domain below 1 flat.
1708
1940
  `[Infinity, -Infinity]` where the scale reads nothing.
1709
1941
 
1710
1942
  ```js
1943
+ import { scaleExtent } from '@jbrowse/core/util/quantileExtent'
1944
+
1711
1945
  // type signature
1712
1946
  (values: ArrayLike<number>, count: number, scale: string, quantile?: number) => [number, number]
1713
1947
  ```
@@ -1716,7 +1950,7 @@ met there would floor the domain at 1 and fold a domain below 1 flat.
1716
1950
 
1717
1951
  ### ScaleTable
1718
1952
 
1719
- The table behind a channel a key is drawn from: a colour's, whose `kind` names
1953
+ The table behind a channel a key is drawn from: a color's, whose `kind` names
1720
1954
  the scale it resolved through, or a shape's. A `size` channel's (SizeScaleTable)
1721
1955
  draws no key and stands outside.
1722
1956
 
@@ -1732,8 +1966,10 @@ and the worker answers the entry of `layer`'s list that the instance's
1732
1966
  steps made. A second click aborts the first.
1733
1967
 
1734
1968
  ```js
1969
+ import { selectEncodedFeature } from '@jbrowse/core/util/selectEncodedFeature'
1970
+
1735
1971
  // type signature
1736
- (self: IStateTreeNode<IAnyType>, rotation: { begin(): ActiveFetch; cancel: () => void; dispose(): void; }, args: Omit<CoreGetEncodedLayersArgs, "byteLimit"> & { ...; }) => void
1972
+ (self: IStateTreeNode<IAnyType>, rotation: { begin(): ActiveFetch; cancel: () => void; dispose(): void; }, args: Omit<CoreGetEncodedLayersArgs, "byteLimit"> & { layer: number; featureIndex: number; }) => void
1737
1973
  ```
1738
1974
 
1739
1975
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/selectEncodedFeature.ts)
@@ -1746,6 +1982,8 @@ a sort of 4.5M counts measured ~1s. Median-of-three because Hi-C contacts arrive
1746
1982
  nearly sorted.
1747
1983
 
1748
1984
  ```js
1985
+ import { selectNth } from '@jbrowse/core/util/quantileExtent'
1986
+
1749
1987
  // type signature
1750
1988
  (a: Float32Array<ArrayBufferLike>, n: number, k: number) => number
1751
1989
  ```
@@ -1759,6 +1997,8 @@ source table over those features again, so every field still reads straight off
1759
1997
  them; over rows a step made, a table standing on them.
1760
1998
 
1761
1999
  ```js
2000
+ import { selectRows } from '@jbrowse/core/util/featureTable'
2001
+
1762
2002
  // type signature
1763
2003
  (table: FeatureTable, rows: Uint32Array<ArrayBufferLike>) => FeatureTable
1764
2004
  ```
@@ -1777,7 +2017,8 @@ Make JBrowse follow the host's light/dark state — the whole of it, in one moun
1777
2017
 
1778
2018
  `mode` is optional. Left out, JBrowse follows the page's declared `color-scheme`
1779
2019
  — so a host whose dark-mode toggle sets it, as most do, mounts this with a
1780
- session and nothing else — and the OS preference where the page declares none.
2020
+ session and nothing else. A page that declares `light dark` follows the OS, and
2021
+ a page that declares nothing stays light.
1781
2022
 
1782
2023
  A component rather than a documented pair of calls because the pair has a half
1783
2024
  that can be left out with nothing to show for it. `PaletteProvider` is the name
@@ -1791,6 +2032,8 @@ The session is the only thing that resolves a palette here, so a host supplying
1791
2032
  colors of its own mounts `PaletteProvider` directly instead.
1792
2033
 
1793
2034
  ```js
2035
+ import { SessionPaletteProvider } from '@jbrowse/core/ui/PaletteContext'
2036
+
1794
2037
  // type signature
1795
2038
  ({ session, mode, children, }: { session: ThemeModeSession; mode?: "dark" | "light" | undefined; children: ReactNode; }) => Element
1796
2039
  ```
@@ -1811,8 +2054,10 @@ together. On a concrete schema an unknown slot name is a compile error, and
1811
2054
  runtime; `null` or `undefined` resets the slot to its default (ADR-146).
1812
2055
 
1813
2056
  ```js
2057
+ import { setConf } from '@jbrowse/core/configuration'
2058
+
1814
2059
  // type signature
1815
- <…>(target: CONFMODEL | { ...; }, slotPath: SLOT, value: unknown) => void
2060
+ <CONFMODEL extends AnyConfigurationModel, const SLOT extends ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>> | ConfigurationSlotPath<ConfigurationSchemaForModel<CONFMODEL>> = ConfigurationSlotName<ConfigurationSchemaForModel<CONFMODEL>>>(target: CONFMODEL | { configuration: CONFMODEL; }, slotPath: SLOT, value: unknown) => void
1816
2061
  ```
1817
2062
 
1818
2063
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/configuration/getConf.ts)
@@ -1822,6 +2067,8 @@ runtime; `null` or `undefined` resets the slot to its default (ADR-146).
1822
2067
  The `point` mark's painter code for each shape an encoding can name.
1823
2068
 
1824
2069
  ```js
2070
+ import { SHAPE_CODES } from '@jbrowse/core/util/shapeNames'
2071
+
1825
2072
  // type signature
1826
2073
  Record<ShapeName, number>
1827
2074
  ```
@@ -1856,7 +2103,7 @@ binds the field to a scale.
1856
2103
  A numeric field read through a linear or log scale into a width in CSS px:
1857
2104
  `range` is the px at each end of the domain (1 to 6 unset), and each end of the
1858
2105
  domain is pinned by `domainMin` or `domainMax` or follows the loaded regions'
1859
- extremes where unset, as a colour ramp's does. A feature holding no number takes
2106
+ extremes where unset, as a color ramp's does. A feature holding no number takes
1860
2107
  the range's first px.
1861
2108
 
1862
2109
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/markEncodingTypes.ts)
@@ -1882,6 +2129,8 @@ projected to the screen, and a band drawn outside its reservation (an overlay)
1882
2129
  carries its own draw rect beside the stack.
1883
2130
 
1884
2131
  ```js
2132
+ import { stackBands } from '@jbrowse/core/util/bandLayout'
2133
+
1885
2134
  // type signature
1886
2135
  <K extends string>(order: readonly K[], bands: Record<K, Band>) => BandStack<K>
1887
2136
  ```
@@ -1899,6 +2148,8 @@ ramp entry both backends read at `t`, through the ramp's middle stop at
1899
2148
  into the color string.
1900
2149
 
1901
2150
  ```js
2151
+ import { stopsFromRampLut } from '@jbrowse/core/util/colorRamp'
2152
+
1902
2153
  // type signature
1903
2154
  (lut: Uint8Array<ArrayBufferLike>, n: number, midNorm?: number) => RampStop[]
1904
2155
  ```
@@ -1908,8 +2159,10 @@ into the color string.
1908
2159
  ### STRAND_FIELD
1909
2160
 
1910
2161
  ```js
2162
+ import { STRAND_FIELD } from '@jbrowse/core/util/categoricalField'
2163
+
1911
2164
  // type signature
1912
- 'strand'
2165
+ ;('strand')
1913
2166
  ```
1914
2167
 
1915
2168
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/categoricalField.ts)
@@ -1919,6 +2172,8 @@ into the color string.
1919
2172
  The conventional size floor for calling a sequence indel structural.
1920
2173
 
1921
2174
  ```js
2175
+ import { SV_MIN_LENGTH } from '@jbrowse/core/util/svAlt'
2176
+
1922
2177
  // type signature
1923
2178
  50
1924
2179
  ```
@@ -1931,8 +2186,10 @@ The structural-variant class `svClassOf` names. A VCF record and a BEDPE row
1931
2186
  carry it, and the mark display's `mate` step writes it per allele.
1932
2187
 
1933
2188
  ```js
2189
+ import { SV_TYPE_FIELD } from '@jbrowse/core/util/categoricalField'
2190
+
1934
2191
  // type signature
1935
- 'svType'
2192
+ ;('svType')
1936
2193
  ```
1937
2194
 
1938
2195
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/categoricalField.ts)
@@ -1944,6 +2201,8 @@ alleles state, CNV where they are losses and gains of one segment, OTHER where
1944
2201
  they otherwise disagree, and `''` for a record with no structural allele.
1945
2202
 
1946
2203
  ```js
2204
+ import { svClassOf } from '@jbrowse/core/util/svAlt'
2205
+
1947
2206
  // type signature
1948
2207
  (feature: Feature) => string
1949
2208
  ```
@@ -1959,6 +2218,8 @@ than BND, and a sequence allele is an insertion or deletion by its length
1959
2218
  against REF, else its `SVTYPE`'s class.
1960
2219
 
1961
2220
  ```js
2221
+ import { svClassOfAlt } from '@jbrowse/core/util/svAlt'
2222
+
1962
2223
  // type signature
1963
2224
  (alt: string, { ref, info, alleleIndex, }?: { ref?: string | undefined; info?: Record<string, unknown> | undefined; alleleIndex?: number | undefined; }) => string
1964
2225
  ```
@@ -1975,6 +2236,8 @@ none is a deletion and two or more a duplication. `''` for an empty or missing
1975
2236
  token.
1976
2237
 
1977
2238
  ```js
2239
+ import { svClassOfToken } from '@jbrowse/core/util/svAlt'
2240
+
1978
2241
  // type signature
1979
2242
  (raw: string) => string
1980
2243
  ```
@@ -1997,6 +2260,8 @@ are, left the middle interval unreachable, the walk stopping at the first cut a
1997
2260
  value is under.
1998
2261
 
1999
2262
  ```js
2263
+ import { thresholdCuts } from '@jbrowse/core/util/thresholdScale'
2264
+
2000
2265
  // type signature
2001
2266
  (domain: readonly (string | number)[]) => number[]
2002
2267
  ```
@@ -2013,8 +2278,10 @@ each from the lowest, where a config spells them for a reader; a bin's key stays
2013
2278
  its interval.
2014
2279
 
2015
2280
  ```js
2281
+ import { thresholdField } from '@jbrowse/core/util/thresholdScale'
2282
+
2016
2283
  // type signature
2017
- (field: string, {…}?: { domain?: readonly string[] | undefined; range?: readonly string[] | undefined; labels?: readonly string[] | undefined; }) => CategoricalField
2284
+ (field: string, { domain, range, labels: names, }?: { domain?: readonly string[] | undefined; range?: readonly string[] | undefined; labels?: readonly string[] | undefined; }) => CategoricalField
2018
2285
  ```
2019
2286
 
2020
2287
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/thresholdScale.ts)
@@ -2028,6 +2295,8 @@ bin and answers -1; an infinite one takes the end bin on its side, as d3's
2028
2295
  threshold scale places it, so a `-log10` of a zero p-value lands in the top bin.
2029
2296
 
2030
2297
  ```js
2298
+ import { thresholdIndex } from '@jbrowse/core/util/thresholdScale'
2299
+
2031
2300
  // type signature
2032
2301
  (value: unknown, domain: readonly number[]) => number
2033
2302
  ```
@@ -2041,8 +2310,10 @@ whole domain, then the not-a-number and no-value rows where a feature took one,
2041
2310
  in the order `thresholdField` sorts them.
2042
2311
 
2043
2312
  ```js
2313
+ import { thresholdKeyEntries } from '@jbrowse/core/util/thresholdScale'
2314
+
2044
2315
  // type signature
2045
- (cuts: readonly number[], range: readonly string[] | undefined, met: {…}, names?: readonly string[]) => {…}[]
2316
+ (cuts: readonly number[], range: readonly string[] | undefined, met: { missing?: boolean | undefined; notNumber?: boolean | undefined; }, names?: readonly string[]) => { value: string; label: string; color: string; missing?: true | undefined; }[]
2046
2317
  ```
2047
2318
 
2048
2319
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/thresholdScale.ts)
@@ -2053,6 +2324,8 @@ What a threshold scale's bins are called in a key, one label per palette entry:
2053
2324
  `< a` below the first cut, `a – b` between two, `≥ b` past the last.
2054
2325
 
2055
2326
  ```js
2327
+ import { thresholdLabels } from '@jbrowse/core/util/thresholdScale'
2328
+
2056
2329
  // type signature
2057
2330
  (domain: readonly number[]) => string[]
2058
2331
  ```
@@ -2061,10 +2334,12 @@ What a threshold scale's bins are called in a key, one label per palette entry:
2061
2334
 
2062
2335
  ### thresholdPalette
2063
2336
 
2064
- The colour of each interval, in order: the declared palette, and the default
2337
+ The color of each interval, in order: the declared palette, and the default
2065
2338
  categorical palette where it runs out.
2066
2339
 
2067
2340
  ```js
2341
+ import { thresholdPalette } from '@jbrowse/core/util/thresholdScale'
2342
+
2068
2343
  // type signature
2069
2344
  (bins: number, palette?: readonly string[]) => string[]
2070
2345
  ```
@@ -2074,7 +2349,7 @@ categorical palette where it runs out.
2074
2349
  ### ThresholdRef
2075
2350
 
2076
2351
  A numeric field cut into intervals: `domain` is the ascending cut points and
2077
- `range` holds one colour more, so a value paints the entry for the number of cut
2352
+ `range` holds one color more, so a value paints the entry for the number of cut
2078
2353
  points it is at or past. A value that is not a number belongs to no interval.
2079
2354
 
2080
2355
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/markEncodingTypes.ts)
@@ -2092,6 +2367,8 @@ the last answered.
2092
2367
  A column's value at a row, whatever its kind: for a loop that reads few rows.
2093
2368
 
2094
2369
  ```js
2370
+ import { valueAt } from '@jbrowse/core/util/featureTable'
2371
+
2095
2372
  // type signature
2096
2373
  (column: Column, i: number) => unknown
2097
2374
  ```
@@ -2104,18 +2381,35 @@ The 256 viridis stops, fully opaque. Feed them to buildColorRampLut for the
2104
2381
  texture/fillStyle form, or to sampleColorRamp for legend stops.
2105
2382
 
2106
2383
  ```js
2384
+ import { VIRIDIS_STOPS } from '@jbrowse/core/util/colorRamp'
2385
+
2107
2386
  // type signature
2108
2387
  readonly ColorRampStop[]
2109
2388
  ```
2110
2389
 
2111
2390
  [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/colorRamp.ts)
2112
2391
 
2392
+ ### WindowStep
2393
+
2394
+ Every row kept, each written with `ops` summarized over the rows of its group
2395
+ around it, Vega-Lite's window transform: a group is a distinct `groupby` value
2396
+ set within a section, its rows taken in `start` order, and `frame` counts rows
2397
+ before and after the current one, `null` running to the group's end.
2398
+ `[-10, 10]`, the default, is a moving average over 21 rows, whatever bases they
2399
+ span; `[null, 0]` a running total. A frame cut off at a group's end summarizes
2400
+ the rows it has. The rows come out grouped, each group in `start` order, so a
2401
+ `line` walks one group at a time.
2402
+
2403
+ [Source code](https://github.com/GMOD/jbrowse-components/blob/main/packages/core/src/util/markEncodingTypes.ts)
2404
+
2113
2405
  ### withColumns
2114
2406
 
2115
2407
  The table's rows with `written` beside them, in the order `rows` names where it
2116
2408
  names one.
2117
2409
 
2118
2410
  ```js
2411
+ import { withColumns } from '@jbrowse/core/util/featureTable'
2412
+
2119
2413
  // type signature
2120
2414
  (table: FeatureTable, written: ReadonlyMap<string, Column>, rows?: Uint32Array<ArrayBufferLike> | undefined) => FeatureTable
2121
2415
  ```
@@ -2127,6 +2421,8 @@ names one.
2127
2421
  HitIndexed over what the worker shipped.
2128
2422
 
2129
2423
  ```js
2424
+ import { withHitIndex } from '@jbrowse/core/util/markEncoding'
2425
+
2130
2426
  // type signature
2131
2427
  <T extends EncodedChannels>(channels: T) => HitIndexed<T>
2132
2428
  ```