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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (637) hide show
  1. package/README.md +1709 -390
  2. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +3 -2
  3. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +5 -5
  4. package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +3 -5
  5. package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +34 -29
  6. package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +1 -4
  7. package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +11 -0
  8. package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +37 -14
  9. package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
  10. package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +15 -31
  11. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +4 -3
  12. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +12 -25
  13. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.d.ts +11 -0
  14. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.js +11 -0
  15. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.d.ts +8 -0
  16. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.js +24 -0
  17. package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +6 -4
  18. package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.d.ts +4 -0
  19. package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.js +17 -0
  20. package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +3 -2
  21. package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +5 -3
  22. package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +6 -2
  23. package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +7 -18
  24. package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.d.ts +16 -0
  25. package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.js +49 -0
  26. package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +0 -8
  27. package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +6 -29
  28. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +7 -34
  29. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +2 -2
  30. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.js +2 -2
  31. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +3 -1
  32. package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +12 -0
  33. package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +12 -5
  34. package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.js +8 -5
  35. package/esm/BaseFeatureWidget/configSchema.d.ts +1 -1
  36. package/esm/BaseFeatureWidget/formatDetails.d.ts +13 -29
  37. package/esm/BaseFeatureWidget/formatDetails.js +62 -83
  38. package/esm/BaseFeatureWidget/index.d.ts +2 -1
  39. package/esm/BaseFeatureWidget/stateModelFactory.d.ts +42 -29
  40. package/esm/BaseFeatureWidget/stateModelFactory.js +98 -98
  41. package/esm/BaseFeatureWidget/types.d.ts +12 -6
  42. package/esm/BaseFeatureWidget/util.d.ts +0 -10
  43. package/esm/BaseFeatureWidget/util.js +0 -17
  44. package/esm/CorePlugin.js +34 -3
  45. package/esm/PluginLoader.d.ts +24 -13
  46. package/esm/PluginLoader.js +167 -51
  47. package/esm/PluginManager.d.ts +130 -24
  48. package/esm/PluginManager.js +180 -32
  49. package/esm/ReExports/MuiDataGridReExports.d.ts +1 -0
  50. package/esm/ReExports/MuiDataGridReExports.js +2 -2
  51. package/esm/ReExports/coreModules.generated.d.ts +2 -0
  52. package/esm/ReExports/coreModules.generated.js +530 -0
  53. package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
  54. package/esm/ReExports/coreWorkerModules.generated.js +490 -0
  55. package/esm/ReExports/frameworkModules.d.ts +2 -0
  56. package/esm/ReExports/frameworkModules.js +68 -0
  57. package/esm/ReExports/frameworkShared.d.ts +12 -0
  58. package/esm/ReExports/frameworkShared.js +16 -0
  59. package/esm/ReExports/frameworkWorkerModules.generated.d.ts +2 -0
  60. package/esm/ReExports/frameworkWorkerModules.generated.js +130 -0
  61. package/esm/ReExports/list.js +528 -79
  62. package/esm/ReExports/modules.d.ts +1 -1
  63. package/esm/ReExports/modules.js +10 -165
  64. package/esm/ReExports/registry.d.ts +1 -0
  65. package/esm/ReExports/registry.js +23 -5
  66. package/esm/ReExports/uiStub.d.ts +3 -0
  67. package/esm/ReExports/uiStub.js +33 -0
  68. package/esm/ReExports/workerModules.d.ts +2 -0
  69. package/esm/ReExports/workerModules.js +11 -0
  70. package/esm/TextSearch/TextSearchManager.d.ts +27 -13
  71. package/esm/TextSearch/TextSearchManager.js +77 -36
  72. package/esm/TextSearch/places.d.ts +12 -0
  73. package/esm/TextSearch/places.js +94 -0
  74. package/esm/assemblyManager/assembly.d.ts +21 -19
  75. package/esm/assemblyManager/assembly.js +28 -26
  76. package/esm/assemblyManager/assemblyAdapters.d.ts +1 -1
  77. package/esm/assemblyManager/assemblyAdapters.js +8 -2
  78. package/esm/assemblyManager/assemblyConfigSchema.d.ts +31 -90
  79. package/esm/assemblyManager/assemblyConfigSchema.js +35 -47
  80. package/esm/assemblyManager/assemblyManager.d.ts +35 -180
  81. package/esm/assemblyManager/assemblyManager.js +47 -51
  82. package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +25 -18
  83. package/esm/assemblyManager/expandAssemblyConfigShorthand.js +78 -49
  84. package/esm/assemblyManager/geneticCodes.js +2 -5
  85. package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +10 -0
  86. package/esm/assemblyManager/getSequenceAdapterConfig.js +10 -0
  87. package/esm/assemblyManager/indexAssemblyNames.d.ts +9 -0
  88. package/esm/assemblyManager/indexAssemblyNames.js +22 -0
  89. package/esm/assemblyManager/loadRefNameMap.d.ts +1 -1
  90. package/esm/assemblyManager/loadRefNameMap.js +4 -9
  91. package/esm/assemblyManager/refNameMapKey.d.ts +7 -0
  92. package/esm/assemblyManager/refNameMapKey.js +12 -0
  93. package/esm/checkPlugins.d.ts +2 -0
  94. package/esm/checkPlugins.js +38 -17
  95. package/esm/configuration/bamIndexFields.d.ts +49 -0
  96. package/esm/configuration/bamIndexFields.js +41 -0
  97. package/esm/configuration/configurationSchema.d.ts +101 -71
  98. package/esm/configuration/configurationSchema.js +207 -134
  99. package/esm/configuration/configurationSchemaUnion.d.ts +39 -0
  100. package/esm/configuration/configurationSchemaUnion.js +56 -0
  101. package/esm/configuration/configurationSlot.d.ts +150 -60
  102. package/esm/configuration/configurationSlot.js +103 -75
  103. package/esm/configuration/fillLocations.d.ts +14 -0
  104. package/esm/configuration/fillLocations.js +14 -0
  105. package/esm/configuration/formatAboutConfigSchema.d.ts +7 -21
  106. package/esm/configuration/formatDetailsConfigSchema.d.ts +11 -37
  107. package/esm/configuration/formatDetailsConfigSchema.js +10 -13
  108. package/esm/configuration/fullConfSnapshot.d.ts +4 -19
  109. package/esm/configuration/fullConfSnapshot.js +30 -52
  110. package/esm/configuration/getConf.d.ts +45 -41
  111. package/esm/configuration/getConf.js +111 -44
  112. package/esm/configuration/index.d.ts +26 -11
  113. package/esm/configuration/index.js +16 -7
  114. package/esm/configuration/indexType.d.ts +26 -0
  115. package/esm/configuration/indexType.js +38 -0
  116. package/esm/configuration/mergeFormatCallbacks.d.ts +6 -7
  117. package/esm/configuration/mergeFormatCallbacks.js +13 -10
  118. package/esm/configuration/plot.d.ts +61 -0
  119. package/esm/configuration/plot.js +142 -0
  120. package/esm/configuration/readConfObject.d.ts +2 -24
  121. package/esm/configuration/readConfObject.js +20 -63
  122. package/esm/configuration/requirements.d.ts +37 -0
  123. package/esm/configuration/requirements.js +88 -0
  124. package/esm/configuration/schemaRegistry.d.ts +32 -15
  125. package/esm/configuration/schemaRegistry.js +33 -35
  126. package/esm/configuration/schemaTypes.d.ts +21 -5
  127. package/esm/configuration/schemaTypes.js +66 -55
  128. package/esm/configuration/slotFacade.d.ts +12 -29
  129. package/esm/configuration/slotFacade.js +44 -23
  130. package/esm/configuration/snapshotPreprocess.d.ts +43 -0
  131. package/esm/configuration/snapshotPreprocess.js +161 -0
  132. package/esm/configuration/tabixIndexFields.d.ts +30 -4
  133. package/esm/configuration/tabixIndexFields.js +21 -4
  134. package/esm/configuration/tabixShorthand.d.ts +34 -17
  135. package/esm/configuration/tabixShorthand.js +49 -22
  136. package/esm/configuration/types.d.ts +182 -43
  137. package/esm/configuration/uriShorthand.d.ts +9 -0
  138. package/esm/configuration/uriShorthand.js +16 -0
  139. package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +13 -19
  140. package/esm/data_adapters/BaseAdapter/BaseAdapter.js +12 -19
  141. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +40 -2
  142. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +68 -5
  143. package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +40 -0
  144. package/esm/data_adapters/BaseAdapter/featureDensity.js +31 -0
  145. package/esm/data_adapters/BaseAdapter/index.d.ts +23 -3
  146. package/esm/data_adapters/BaseAdapter/index.js +1 -0
  147. package/esm/data_adapters/BaseAdapter/rowSources.d.ts +37 -0
  148. package/esm/data_adapters/BaseAdapter/rowSources.js +7 -0
  149. package/esm/data_adapters/BaseAdapter/stats.d.ts +33 -1
  150. package/esm/data_adapters/BaseAdapter/stats.js +52 -13
  151. package/esm/data_adapters/BaseAdapter/types.d.ts +8 -12
  152. package/esm/data_adapters/BaseAdapter/zoomRange.d.ts +10 -0
  153. package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +1 -1
  154. package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +7 -11
  155. package/esm/data_adapters/CytobandAdapter/configSchema.js +3 -17
  156. package/esm/data_adapters/dataAdapterCache.d.ts +19 -2
  157. package/esm/data_adapters/dataAdapterCache.js +44 -10
  158. package/esm/data_adapters/getFeatureAdapter.d.ts +6 -4
  159. package/esm/data_adapters/getFeatureAdapter.js +8 -8
  160. package/esm/data_adapters/getSequenceSubAdapter.d.ts +7 -9
  161. package/esm/data_adapters/getSequenceSubAdapter.js +8 -10
  162. package/esm/pluggableElementTypes/AdapterType.d.ts +8 -8
  163. package/esm/pluggableElementTypes/AdapterType.js +1 -1
  164. package/esm/pluggableElementTypes/DisplayType.d.ts +53 -16
  165. package/esm/pluggableElementTypes/DisplayType.js +28 -12
  166. package/esm/pluggableElementTypes/LazyStateModelElement.d.ts +32 -0
  167. package/esm/pluggableElementTypes/LazyStateModelElement.js +77 -0
  168. package/esm/pluggableElementTypes/PluggableElementBase.d.ts +3 -5
  169. package/esm/pluggableElementTypes/PluggableElementBase.js +3 -5
  170. package/esm/pluggableElementTypes/RpcMethodType.d.ts +11 -1
  171. package/esm/pluggableElementTypes/RpcMethodType.js +25 -9
  172. package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +1 -2
  173. package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +7 -7
  174. package/esm/pluggableElementTypes/ViewType.d.ts +20 -4
  175. package/esm/pluggableElementTypes/ViewType.js +32 -4
  176. package/esm/pluggableElementTypes/WidgetType.d.ts +6 -0
  177. package/esm/pluggableElementTypes/WidgetType.js +6 -0
  178. package/esm/pluggableElementTypes/addMenuItems.d.ts +3 -2
  179. package/esm/pluggableElementTypes/extendElementType.d.ts +1 -2
  180. package/esm/pluggableElementTypes/extendElementType.js +9 -5
  181. package/esm/pluggableElementTypes/index.d.ts +2 -1
  182. package/esm/pluggableElementTypes/index.js +2 -9
  183. package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +19 -9
  184. package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +122 -28
  185. package/esm/pluggableElementTypes/models/BaseDisplayModel.js +155 -11
  186. package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +65 -16
  187. package/esm/pluggableElementTypes/models/BaseTrackModel.js +179 -117
  188. package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +87 -18
  189. package/esm/pluggableElementTypes/models/BaseViewModel.js +54 -11
  190. package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +26 -16
  191. package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +15 -11
  192. package/esm/pluggableElementTypes/models/assertDisplayContract.js +25 -32
  193. package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -18
  194. package/esm/pluggableElementTypes/models/baseConnectionConfig.js +5 -5
  195. package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +26 -31
  196. package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +108 -147
  197. package/esm/pluggableElementTypes/models/baseTrackConfig.js +96 -73
  198. package/esm/pluggableElementTypes/models/components/SaveTrackData.js +4 -6
  199. package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +3 -4
  200. package/esm/pluggableElementTypes/models/components/fetchTrackData.js +3 -3
  201. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +23 -13
  202. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +80 -48
  203. package/esm/pluggableElementTypes/models/index.d.ts +2 -3
  204. package/esm/pluggableElementTypes/models/index.js +2 -3
  205. package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +15 -1
  206. package/esm/pluggableElementTypes/models/migrateTrackConfig.js +85 -25
  207. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +4 -3
  208. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +141 -19
  209. package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +3 -3
  210. package/esm/pluginDefinitions.d.ts +34 -7
  211. package/esm/pluginDefinitions.js +54 -20
  212. package/esm/rpc/BaseRpcDriver.d.ts +2 -2
  213. package/esm/rpc/BaseRpcDriver.js +25 -30
  214. package/esm/rpc/MainThreadRpcDriver.d.ts +2 -2
  215. package/esm/rpc/MainThreadRpcDriver.js +13 -8
  216. package/esm/rpc/RpcClient.d.ts +18 -6
  217. package/esm/rpc/RpcClient.js +51 -16
  218. package/esm/rpc/RpcManager.d.ts +14 -10
  219. package/esm/rpc/RpcManager.js +11 -1
  220. package/esm/rpc/RpcRegistry.d.ts +40 -7
  221. package/esm/rpc/RpcServer.d.ts +3 -1
  222. package/esm/rpc/RpcServer.js +19 -12
  223. package/esm/rpc/WebWorkerRpcDriver.d.ts +11 -4
  224. package/esm/rpc/WebWorkerRpcDriver.js +64 -68
  225. package/esm/rpc/byteBudget.d.ts +20 -5
  226. package/esm/rpc/byteBudget.js +16 -5
  227. package/esm/rpc/configSchema.d.ts +7 -21
  228. package/esm/rpc/coreRpcMethods.d.ts +4 -0
  229. package/esm/rpc/coreRpcMethods.js +4 -0
  230. package/esm/rpc/methods/CoreGetEncodedFeature.d.ts +13 -0
  231. package/esm/rpc/methods/CoreGetEncodedFeature.js +32 -0
  232. package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +16 -0
  233. package/esm/rpc/methods/CoreGetEncodedLayers.js +59 -0
  234. package/esm/rpc/methods/CoreGetExportData.js +3 -4
  235. package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
  236. package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
  237. package/esm/rpc/methods/CoreGetFeatures.js +3 -5
  238. package/esm/rpc/methods/CoreGetRefNames.js +2 -12
  239. package/esm/rpc/methods/CoreGetRegionByteEstimate.js +1 -1
  240. package/esm/rpc/methods/CoreGetSequence.js +2 -2
  241. package/esm/rpc/methods/CoreLoadAdapterCode.d.ts +13 -0
  242. package/esm/rpc/methods/CoreLoadAdapterCode.js +16 -0
  243. package/esm/rpc/methods/layerFeatures.d.ts +33 -0
  244. package/esm/rpc/methods/layerFeatures.js +29 -0
  245. package/esm/svg/SvgExport.js +6 -7
  246. package/esm/svg/SvgThemeProviders.d.ts +12 -0
  247. package/esm/svg/SvgThemeProviders.js +15 -0
  248. package/esm/svg/exportViewSvg.d.ts +28 -0
  249. package/esm/svg/exportViewSvg.js +13 -0
  250. package/esm/svg/normalizeSvgMarkup.d.ts +7 -0
  251. package/esm/svg/normalizeSvgMarkup.js +99 -0
  252. package/esm/svg/serializeSvg.d.ts +7 -0
  253. package/esm/svg/serializeSvg.js +11 -0
  254. package/esm/svg/svgId.d.ts +1 -1
  255. package/esm/svg/svgId.js +1 -1
  256. package/esm/svg/svgReady.d.ts +9 -7
  257. package/esm/svg/svgReady.js +8 -7
  258. package/esm/svg/trackNames.d.ts +7 -5
  259. package/esm/svg/trackNames.js +12 -9
  260. package/esm/svg/wrapSvgExport.js +6 -74
  261. package/esm/ui/AddCustomPluginDialog.js +3 -8
  262. package/esm/ui/AppReadyMarker.d.ts +45 -0
  263. package/esm/ui/AppReadyMarker.js +89 -0
  264. package/esm/ui/BaseExportSvgDialog.d.ts +1 -1
  265. package/esm/ui/CascadingMenu.js +181 -104
  266. package/esm/ui/DropDownMenu.js +2 -1
  267. package/esm/ui/ErrorBanner.js +1 -1
  268. package/esm/ui/ErrorBoundary.d.ts +2 -2
  269. package/esm/ui/ErrorMessageStackTraceContents.js +2 -1
  270. package/esm/ui/ErrorMessageStackTraceDialog.js +5 -11
  271. package/esm/ui/ExportSvgDialog.d.ts +1 -1
  272. package/esm/ui/FileDropZone.js +2 -1
  273. package/esm/ui/FileSelector/useInternetAccounts.d.ts +156 -96
  274. package/esm/ui/HoverMenu.d.ts +1 -2
  275. package/esm/ui/HoverMenu.js +6 -3
  276. package/esm/ui/JexlFilterDialog.d.ts +13 -10
  277. package/esm/ui/JexlFilterDialog.js +122 -50
  278. package/esm/ui/JexlFilterRowEditors.d.ts +15 -0
  279. package/esm/ui/JexlFilterRowEditors.js +90 -0
  280. package/esm/ui/LazyBaseTooltip.d.ts +4 -0
  281. package/esm/ui/LazyBaseTooltip.js +9 -0
  282. package/esm/ui/LegendSwatchGlyph.js +26 -21
  283. package/esm/ui/LoadingOverlay.d.ts +14 -0
  284. package/esm/ui/LoadingOverlay.js +4 -2
  285. package/esm/ui/MenuTypes.d.ts +23 -53
  286. package/esm/ui/MenuTypes.js +3 -0
  287. package/esm/ui/MonospaceTextField.d.ts +2 -1
  288. package/esm/ui/MonospaceTextField.js +23 -20
  289. package/esm/ui/PaletteContext.d.ts +10 -5
  290. package/esm/ui/PaletteContext.js +44 -6
  291. package/esm/ui/RefNameAutocomplete/SearchOption.d.ts +13 -0
  292. package/esm/ui/RefNameAutocomplete/SearchOption.js +45 -0
  293. package/esm/ui/RefNameAutocomplete/index.d.ts +1 -2
  294. package/esm/ui/RefNameAutocomplete/index.js +8 -2
  295. package/esm/ui/RefNameAutocomplete/util.d.ts +13 -0
  296. package/esm/ui/RefNameAutocomplete/util.js +42 -1
  297. package/esm/ui/ResizeHandle.d.ts +3 -1
  298. package/esm/ui/ResizeHandle.js +44 -11
  299. package/esm/ui/ScrollChrome.d.ts +13 -0
  300. package/esm/ui/ScrollChrome.js +11 -0
  301. package/esm/ui/ScrollEdgeShadow.d.ts +6 -9
  302. package/esm/ui/ScrollEdgeShadow.js +14 -35
  303. package/esm/ui/ScrollZoomToggle.d.ts +4 -27
  304. package/esm/ui/ScrollZoomToggle.js +34 -51
  305. package/esm/ui/SessionJsonPanel.d.ts +3 -0
  306. package/esm/ui/SessionJsonPanel.js +14 -0
  307. package/esm/ui/SettingsChangesTable.d.ts +1 -0
  308. package/esm/ui/SettingsChangesTable.js +49 -11
  309. package/esm/ui/ShareLinkField.d.ts +1 -3
  310. package/esm/ui/ShareLinkField.js +13 -40
  311. package/esm/ui/SizeSliderRow.d.ts +1 -3
  312. package/esm/ui/SizeSliderRow.js +4 -6
  313. package/esm/ui/SnackbarModel.js +79 -67
  314. package/esm/ui/StatusProgressBar.js +2 -2
  315. package/esm/ui/SvgColorLegend.d.ts +9 -4
  316. package/esm/ui/SvgColorLegend.js +82 -41
  317. package/esm/ui/VerticalScrollbar.d.ts +13 -34
  318. package/esm/ui/VerticalScrollbar.js +29 -83
  319. package/esm/ui/ViewLoadingScreen.d.ts +5 -4
  320. package/esm/ui/ViewLoadingScreen.js +8 -32
  321. package/esm/ui/colorScale.d.ts +92 -0
  322. package/esm/ui/colorScale.js +72 -0
  323. package/esm/ui/colors.d.ts +64 -0
  324. package/esm/ui/colors.js +230 -1
  325. package/esm/ui/hoverBoxStyle.d.ts +14 -2
  326. package/esm/ui/hoverBoxStyle.js +17 -2
  327. package/esm/ui/index.d.ts +12 -12
  328. package/esm/ui/index.js +14 -22
  329. package/esm/ui/launchViewMenu.js +15 -5
  330. package/esm/ui/legendMenuItem.d.ts +10 -32
  331. package/esm/ui/legendMenuItem.js +9 -36
  332. package/esm/ui/legendSpec.d.ts +15 -8
  333. package/esm/ui/legendSpec.js +14 -23
  334. package/esm/ui/makeSizeMenu.d.ts +0 -6
  335. package/esm/ui/makeSizeMenu.js +6 -30
  336. package/esm/ui/measureLegendText.js +1 -1
  337. package/esm/ui/menuItemAdornment.d.ts +9 -20
  338. package/esm/ui/menuItemAdornment.js +10 -32
  339. package/esm/ui/menuItems.d.ts +2 -7
  340. package/esm/ui/menuItems.js +1 -6
  341. package/esm/ui/multiTrackMenuItems.d.ts +6 -0
  342. package/esm/ui/palette.d.ts +118 -116
  343. package/esm/ui/palette.js +114 -75
  344. package/esm/ui/replaceViewAction.d.ts +1 -1
  345. package/esm/ui/replaceViewAction.js +1 -1
  346. package/esm/ui/theme.d.ts +43 -119
  347. package/esm/ui/theme.js +62 -78
  348. package/esm/ui/toggleMenuItems.d.ts +1 -3
  349. package/esm/ui/toggleMenuItems.js +6 -5
  350. package/esm/ui/useAssemblySelection.d.ts +4 -4
  351. package/esm/ui/viewHeaderHeight.d.ts +1 -0
  352. package/esm/ui/viewHeaderHeight.js +1 -0
  353. package/esm/util/Base1DUtils.d.ts +5 -3
  354. package/esm/util/Base1DUtils.js +14 -6
  355. package/esm/util/Base1DViewModel.d.ts +2 -1
  356. package/esm/util/Base1DViewModel.js +3 -2
  357. package/esm/util/SvgCanvas.d.ts +15 -13
  358. package/esm/util/SvgCanvas.js +76 -56
  359. package/esm/util/TimeTraveller.d.ts +3 -0
  360. package/esm/util/TimeTraveller.js +34 -2
  361. package/esm/util/aborting.d.ts +39 -0
  362. package/esm/util/aborting.js +88 -6
  363. package/esm/util/adapterMetadata.d.ts +1 -1
  364. package/esm/util/adapterMetadata.js +6 -5
  365. package/esm/util/addAndShowTrack.d.ts +2 -5
  366. package/esm/util/addAndShowTrack.js +5 -1
  367. package/esm/util/addRelativeUris.d.ts +17 -5
  368. package/esm/util/addRelativeUris.js +46 -10
  369. package/esm/util/addTrackFromWidget.d.ts +2 -5
  370. package/esm/util/addTrackFromWidget.js +5 -4
  371. package/esm/util/aggregateFieldName.d.ts +10 -0
  372. package/esm/util/aggregateFieldName.js +8 -0
  373. package/esm/util/analytics.js +46 -13
  374. package/esm/util/animationAllowed.d.ts +9 -0
  375. package/esm/util/animationAllowed.js +13 -0
  376. package/esm/util/applyRowResizeWheel.d.ts +10 -5
  377. package/esm/util/applyRowResizeWheel.js +10 -21
  378. package/esm/util/bandHeight.d.ts +10 -0
  379. package/esm/util/bandHeight.js +29 -0
  380. package/esm/util/bandLayout.d.ts +4 -4
  381. package/esm/util/bandLayout.js +4 -4
  382. package/esm/util/baseDisplayConfig.d.ts +8 -0
  383. package/esm/util/baseDisplayConfig.js +27 -0
  384. package/esm/util/bezierConnector.d.ts +4 -3
  385. package/esm/util/bezierConnector.js +38 -45
  386. package/esm/util/bgzfWorkerPool.d.ts +20 -74
  387. package/esm/util/bgzfWorkerPool.js +20 -74
  388. package/esm/util/binnedAggregate.d.ts +17 -0
  389. package/esm/util/binnedAggregate.js +275 -0
  390. package/esm/util/cacheBudgets.d.ts +22 -19
  391. package/esm/util/cacheBudgets.js +22 -19
  392. package/esm/util/cachedSetup.d.ts +16 -6
  393. package/esm/util/cachedSetup.js +108 -38
  394. package/esm/util/categoricalField.d.ts +56 -0
  395. package/esm/util/categoricalField.js +73 -0
  396. package/esm/util/cellMatches.d.ts +23 -0
  397. package/esm/util/cellMatches.js +264 -0
  398. package/esm/util/cellsStep.d.ts +29 -0
  399. package/esm/util/cellsStep.js +437 -0
  400. package/esm/util/clampToContig.d.ts +17 -0
  401. package/esm/util/clampToContig.js +19 -0
  402. package/esm/util/coarseStripHTML.js +1 -2
  403. package/esm/util/color/cssColorsLevel4.d.ts +1 -0
  404. package/esm/util/color/cssColorsLevel4.js +1 -0
  405. package/esm/util/color/index.d.ts +5 -3
  406. package/esm/util/color/index.js +7 -4
  407. package/esm/util/colorBits.d.ts +3 -3
  408. package/esm/util/colorBits.js +19 -44
  409. package/esm/util/colorRamp.d.ts +49 -5
  410. package/esm/util/colorRamp.js +169 -18
  411. package/esm/util/colorScale.d.ts +156 -0
  412. package/esm/util/colorScale.js +243 -0
  413. package/esm/util/colorSchemes.d.ts +21 -0
  414. package/esm/util/colorSchemes.js +30 -0
  415. package/esm/util/copyToClipboard.js +8 -1
  416. package/esm/util/{createStopTokenRotation.d.ts → createAbortRotation.d.ts} +21 -23
  417. package/esm/util/{createStopTokenRotation.js → createAbortRotation.js} +21 -52
  418. package/esm/util/createSvgRasterCanvas.d.ts +10 -0
  419. package/esm/util/cssColorParse.d.ts +15 -0
  420. package/esm/util/cssColorParse.js +53 -0
  421. package/esm/util/diagonalizeRegions.d.ts +2 -3
  422. package/esm/util/diagonalizeRegions.js +8 -13
  423. package/esm/util/expandLooseSearchIndex.d.ts +19 -0
  424. package/esm/util/expandLooseSearchIndex.js +29 -0
  425. package/esm/util/featureTable.d.ts +224 -0
  426. package/esm/util/featureTable.js +366 -0
  427. package/esm/util/featureTransforms.d.ts +81 -0
  428. package/esm/util/featureTransforms.js +1231 -0
  429. package/esm/util/featureTypes.d.ts +24 -0
  430. package/esm/util/featureTypes.js +35 -0
  431. package/esm/util/fetchAndMaybeUnzip.js +16 -9
  432. package/esm/util/fetchContext.d.ts +7 -8
  433. package/esm/util/fetchContext.js +3 -3
  434. package/esm/util/fetchHub.d.ts +4 -2
  435. package/esm/util/fetchHub.js +2 -2
  436. package/esm/util/fetchPhases.d.ts +10 -10
  437. package/esm/util/fetchSeq.d.ts +2 -3
  438. package/esm/util/fetchSeq.js +2 -2
  439. package/esm/util/fieldReader.d.ts +17 -0
  440. package/esm/util/fieldReader.js +62 -0
  441. package/esm/util/formatBytes.js +1 -1
  442. package/esm/util/formatGuessers.d.ts +25 -14
  443. package/esm/util/formatGuessers.js +42 -27
  444. package/esm/util/formatRelativeTime.js +1 -1
  445. package/esm/util/freezeDeep.d.ts +8 -10
  446. package/esm/util/freezeDeep.js +8 -10
  447. package/esm/util/getLocationUri.d.ts +2 -1
  448. package/esm/util/getLocationUri.js +8 -2
  449. package/esm/util/groupKeys.d.ts +76 -0
  450. package/esm/util/groupKeys.js +156 -0
  451. package/esm/util/highlights.d.ts +10 -6
  452. package/esm/util/highlights.js +12 -25
  453. package/esm/util/hooks.d.ts +31 -2
  454. package/esm/util/hooks.js +72 -3
  455. package/esm/util/index.d.ts +11 -11
  456. package/esm/util/index.js +11 -10
  457. package/esm/util/indexCandidates.d.ts +1 -31
  458. package/esm/util/indexCandidates.js +5 -63
  459. package/esm/util/installFetch.d.ts +77 -37
  460. package/esm/util/installFetch.js +65 -38
  461. package/esm/util/installInitAutorun.d.ts +14 -13
  462. package/esm/util/installInitAutorun.js +17 -17
  463. package/esm/util/installPrerequisiteFetch.d.ts +115 -0
  464. package/esm/util/installPrerequisiteFetch.js +111 -0
  465. package/esm/util/intervals.js +9 -4
  466. package/esm/util/io/index.js +22 -15
  467. package/esm/util/isDataCurrent.d.ts +7 -5
  468. package/esm/util/isDataCurrent.js +9 -6
  469. package/esm/util/isTextEntryFocused.d.ts +7 -0
  470. package/esm/util/isTextEntryFocused.js +16 -0
  471. package/esm/util/jexl.js +24 -21
  472. package/esm/util/jexlFilterRows.d.ts +89 -0
  473. package/esm/util/jexlFilterRows.js +252 -0
  474. package/esm/util/jexlFilters.d.ts +32 -57
  475. package/esm/util/jexlFilters.js +31 -29
  476. package/esm/util/jexlStrings.d.ts +3 -4
  477. package/esm/util/jexlStrings.js +2 -3
  478. package/esm/util/layouts/GranularRectLayout.d.ts +8 -1
  479. package/esm/util/layouts/GranularRectLayout.js +25 -8
  480. package/esm/util/lazyAfterAttach.d.ts +13 -0
  481. package/esm/util/lazyAfterAttach.js +31 -0
  482. package/esm/util/lazyWithPreload.d.ts +19 -0
  483. package/esm/util/lazyWithPreload.js +27 -0
  484. package/esm/util/legendCandidates.d.ts +72 -0
  485. package/esm/util/legendCandidates.js +138 -0
  486. package/esm/util/locString.js +5 -2
  487. package/esm/util/localStorage.js +4 -4
  488. package/esm/util/markEncoding.d.ts +150 -0
  489. package/esm/util/markEncoding.js +885 -0
  490. package/esm/util/markEncodingTypes.d.ts +595 -0
  491. package/esm/util/markEncodingTypes.js +8 -0
  492. package/esm/util/mst-reflection.d.ts +2 -20
  493. package/esm/util/mst-reflection.js +3 -53
  494. package/esm/util/mstUtils.d.ts +31 -23
  495. package/esm/util/mstUtils.js +39 -24
  496. package/esm/util/numericUtils.d.ts +7 -0
  497. package/esm/util/numericUtils.js +16 -0
  498. package/esm/util/numericValue.d.ts +14 -0
  499. package/esm/util/numericValue.js +34 -0
  500. package/esm/util/openFeatureWidget.d.ts +5 -0
  501. package/esm/util/openFeatureWidget.js +2 -2
  502. package/esm/util/openViews.d.ts +17 -0
  503. package/esm/util/openViews.js +22 -0
  504. package/esm/util/parentWalk.d.ts +1 -1
  505. package/esm/util/parentWalk.js +1 -1
  506. package/esm/util/parseLineByLine.d.ts +4 -5
  507. package/esm/util/parseLineByLine.js +8 -14
  508. package/esm/util/pluginStore.d.ts +6 -8
  509. package/esm/util/pluginStore.js +17 -16
  510. package/esm/util/preloadComponent.d.ts +5 -0
  511. package/esm/util/preloadComponent.js +11 -0
  512. package/esm/util/progress.d.ts +22 -22
  513. package/esm/util/progress.js +27 -26
  514. package/esm/util/quantileExtent.d.ts +49 -0
  515. package/esm/util/quantileExtent.js +162 -0
  516. package/esm/util/range.d.ts +13 -9
  517. package/esm/util/range.js +17 -8
  518. package/esm/util/renameRegions.d.ts +26 -6
  519. package/esm/util/renameRegions.js +68 -54
  520. package/esm/util/renderToStaticMarkup.js +24 -14
  521. package/esm/util/rxjs.d.ts +23 -8
  522. package/esm/util/rxjs.js +61 -15
  523. package/esm/util/samplesTsv.d.ts +49 -0
  524. package/esm/util/samplesTsv.js +86 -0
  525. package/esm/util/scheduleDetachedDestroy.d.ts +18 -0
  526. package/esm/util/scheduleDetachedDestroy.js +24 -0
  527. package/esm/util/scrollLatch.d.ts +1 -0
  528. package/esm/util/scrollLatch.js +8 -0
  529. package/esm/util/selectEncodedFeature.d.ts +16 -0
  530. package/esm/util/selectEncodedFeature.js +34 -0
  531. package/esm/util/sessionSharing.d.ts +7 -5
  532. package/esm/util/sessionSharing.js +23 -23
  533. package/esm/util/shapeNameList.d.ts +2 -0
  534. package/esm/util/shapeNameList.js +6 -0
  535. package/esm/util/shapeNames.d.ts +7 -0
  536. package/esm/util/shapeNames.js +11 -0
  537. package/esm/util/simpleFeature.d.ts +0 -1
  538. package/esm/util/springAnimate.js +1 -1
  539. package/esm/util/starFusion.d.ts +26 -0
  540. package/esm/util/starFusion.js +37 -0
  541. package/esm/util/stepTables.d.ts +96 -0
  542. package/esm/util/stepTables.js +277 -0
  543. package/esm/util/svAlt.d.ts +145 -0
  544. package/esm/util/svAlt.js +364 -0
  545. package/esm/util/svgColorProps.d.ts +11 -0
  546. package/esm/util/svgColorProps.js +28 -1
  547. package/esm/util/systemColorScheme.d.ts +12 -0
  548. package/esm/util/systemColorScheme.js +27 -0
  549. package/esm/util/tabix.d.ts +19 -10
  550. package/esm/util/tabix.js +19 -14
  551. package/esm/util/thresholdScale.d.ts +91 -0
  552. package/esm/util/thresholdScale.js +166 -0
  553. package/esm/util/timeGate.d.ts +4 -5
  554. package/esm/util/timeGate.js +4 -5
  555. package/esm/util/trackConfigDelta.d.ts +26 -26
  556. package/esm/util/trackConfigDelta.js +63 -47
  557. package/esm/util/tracks.d.ts +120 -66
  558. package/esm/util/tracks.js +501 -151
  559. package/esm/util/translateTranscript.d.ts +44 -0
  560. package/esm/util/translateTranscript.js +102 -0
  561. package/esm/util/types/data.d.ts +0 -2
  562. package/esm/util/types/index.d.ts +121 -22
  563. package/esm/util/types/index.js +9 -0
  564. package/esm/util/types/mst.d.ts +3 -0
  565. package/esm/util/types/mst.js +4 -0
  566. package/esm/util/types/renameIds.d.ts +1 -0
  567. package/esm/util/types/renameIds.js +29 -0
  568. package/esm/util/types/services.d.ts +1 -1
  569. package/esm/util/unknownSnapshotKeys.d.ts +53 -0
  570. package/esm/util/unknownSnapshotKeys.js +76 -0
  571. package/esm/util/useFeatureSequence.js +5 -5
  572. package/esm/util/useFetch.d.ts +3 -4
  573. package/esm/util/useFetch.js +19 -10
  574. package/esm/util/useFetchPlugins.d.ts +6 -2
  575. package/esm/util/useFetchPlugins.js +7 -3
  576. package/esm/util/usePanZoom.js +10 -3
  577. package/esm/util/usePanelVirtualScroll.d.ts +7 -35
  578. package/esm/util/usePanelVirtualScroll.js +9 -36
  579. package/esm/util/useRafCommit.js +1 -0
  580. package/esm/util/useRowVirtualScroll.d.ts +6 -29
  581. package/esm/util/useRowVirtualScroll.js +8 -49
  582. package/esm/util/useVirtualScrollWheel.d.ts +20 -4
  583. package/esm/util/useVirtualScrollWheel.js +40 -74
  584. package/esm/util/viewHighlights.d.ts +3 -0
  585. package/esm/util/viewHighlights.js +5 -0
  586. package/esm/util/viewStatus.d.ts +47 -15
  587. package/esm/util/viewStatus.js +34 -0
  588. package/esm/util/wheelZoom.d.ts +7 -1
  589. package/esm/util/wheelZoom.js +85 -19
  590. package/esm/util/whenViewSettled.d.ts +55 -8
  591. package/esm/util/whenViewSettled.js +56 -7
  592. package/esm/util/withFeatureDetails.js +4 -0
  593. package/esm/util/withLaunchInput.d.ts +174 -0
  594. package/esm/util/withLaunchInput.js +274 -0
  595. package/package.json +75 -24
  596. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +0 -2
  597. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +0 -8
  598. package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +0 -8
  599. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +0 -80
  600. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.js +0 -583
  601. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +0 -141
  602. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.js +0 -1116
  603. package/esm/ReExports/BaseFeatureDetails.d.ts +0 -1
  604. package/esm/ReExports/BaseFeatureDetails.js +0 -10
  605. package/esm/ReExports/index.d.ts +0 -1
  606. package/esm/ReExports/index.js +0 -1
  607. package/esm/ReExports/publicUtil.d.ts +0 -1
  608. package/esm/ReExports/publicUtil.js +0 -28
  609. package/esm/configuration/promotableDefaults.d.ts +0 -199
  610. package/esm/configuration/promotableDefaults.js +0 -326
  611. package/esm/configuration/promotablePin.d.ts +0 -55
  612. package/esm/configuration/promotablePin.js +0 -1
  613. package/esm/configuration/promotableResolve.d.ts +0 -108
  614. package/esm/configuration/promotableResolve.js +0 -117
  615. package/esm/configuration/promotableSlots.d.ts +0 -12
  616. package/esm/configuration/promotableSlots.js +0 -45
  617. package/esm/configuration/slotShape.d.ts +0 -12
  618. package/esm/configuration/slotShape.js +0 -84
  619. package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +0 -51
  620. package/esm/pluggableElementTypes/models/HighlightsMixin.js +0 -78
  621. package/esm/ui/PinAdornment.d.ts +0 -5
  622. package/esm/ui/PinAdornment.js +0 -79
  623. package/esm/ui/SvgGradientLegend.d.ts +0 -26
  624. package/esm/ui/SvgGradientLegend.js +0 -26
  625. package/esm/ui/highlightChipReveal.d.ts +0 -32
  626. package/esm/ui/highlightChipReveal.js +0 -39
  627. package/esm/ui/promotableMenuItems.d.ts +0 -19
  628. package/esm/ui/promotableMenuItems.js +0 -89
  629. package/esm/ui/promotablePinCoverage.d.ts +0 -44
  630. package/esm/ui/promotablePinCoverage.js +0 -87
  631. package/esm/util/applyInitSettings.d.ts +0 -79
  632. package/esm/util/applyInitSettings.js +0 -91
  633. package/esm/util/openDisplays.d.ts +0 -23
  634. package/esm/util/openDisplays.js +0 -79
  635. package/esm/util/stopToken.d.ts +0 -211
  636. package/esm/util/stopToken.js +0 -438
  637. /package/esm/{BaseFeatureWidget/BaseFeatureDetail/types.js → data_adapters/BaseAdapter/zoomRange.js} +0 -0
@@ -49,10 +49,13 @@ export default class GranularRectLayout {
49
49
  this.maxHeight = Math.ceil(maxHeight / this.pitchY);
50
50
  }
51
51
  /**
52
+ * `lower` gives the rows lying wholly at or past `lower.top` px below the
53
+ * rect's top a span of their own.
54
+ *
52
55
  * @returns top position for the rect, or Null if laying
53
56
  * out the rect would exceed maxHeight
54
57
  */
55
- addRect(id, left, right, height) {
58
+ addRect(id, left, right, height, lower) {
56
59
  const pitchX = this.pitchX;
57
60
  const pitchY = this.pitchY;
58
61
  // if we have already laid it out, return its layout
@@ -65,12 +68,19 @@ export default class GranularRectLayout {
65
68
  const pLeft = Math.trunc(left / pitchX);
66
69
  const pRight = Math.trunc(right / pitchX);
67
70
  const pHeight = Math.ceil(height / pitchY);
71
+ const pLowerTop = lower ? Math.ceil(lower.top / pitchY) : pHeight;
68
72
  const rectangle = {
69
73
  l: pLeft,
70
74
  r: pRight,
71
75
  top: null,
72
76
  h: pHeight,
73
77
  };
78
+ const lowerSpan = lower
79
+ ? {
80
+ l: Math.trunc(lower.left / pitchX),
81
+ r: Math.trunc(lower.right / pitchX),
82
+ }
83
+ : rectangle;
74
84
  // Allow features to start at any position up to maxHeight
75
85
  // Features starting at maxHeight or beyond are filtered out, but features
76
86
  // that start below maxHeight and extend past it are allowed
@@ -84,7 +94,10 @@ export default class GranularRectLayout {
84
94
  // between them still spans y, because y < top + pHeight — so nothing between
85
95
  // can fit. `top = y` plus the loop's own increment is that jump, and it turns
86
96
  // the scan from O(rows * pHeight) into O(rows): without it, a rect pHeight
87
- // rows tall re-tests the row that blocked it pHeight times over.
97
+ // rows tall re-tests the row that blocked it pHeight times over. Moving
98
+ // the rect down only moves y up within it, so a hit above the lower span
99
+ // blocks every top to y, and a hit in the lower span blocks just the tops
100
+ // keeping y there: the jump goes to the first top putting y above it.
88
101
  outer: for (; top <= maxTop; top += 1) {
89
102
  // Check all rows that this rectangle would occupy
90
103
  const maxY = top + pHeight;
@@ -97,13 +110,17 @@ export default class GranularRectLayout {
97
110
  const intervals = row.getIntervals();
98
111
  const len = intervals.length;
99
112
  if (len > 0) {
113
+ const inLower = y - top >= pLowerTop;
114
+ const l = inLower ? lowerSpan.l : pLeft;
115
+ const r = inLower ? lowerSpan.r : pRight;
116
+ const blockedTop = inLower ? y - pLowerTop : y;
100
117
  if (len < 40) {
101
118
  // Linear scan for small arrays
102
119
  for (let i = 0; i < len; i += 2) {
103
120
  const start = intervals[i];
104
121
  const end = intervals[i + 1];
105
- if (end > pLeft && start < pRight) {
106
- top = y;
122
+ if (end > l && start < r) {
123
+ top = blockedTop;
107
124
  continue outer;
108
125
  }
109
126
  }
@@ -115,7 +132,7 @@ export default class GranularRectLayout {
115
132
  while (low < high) {
116
133
  const mid = (low + high) >>> 1;
117
134
  const midIdx = mid << 1;
118
- if (intervals[midIdx + 1] <= pLeft) {
135
+ if (intervals[midIdx + 1] <= l) {
119
136
  low = mid + 1;
120
137
  }
121
138
  else {
@@ -125,8 +142,8 @@ export default class GranularRectLayout {
125
142
  const idx = low << 1;
126
143
  if (idx < len) {
127
144
  const start = intervals[idx];
128
- if (start < pRight) {
129
- top = y;
145
+ if (start < r) {
146
+ top = blockedTop;
130
147
  continue outer;
131
148
  }
132
149
  }
@@ -143,7 +160,7 @@ export default class GranularRectLayout {
143
160
  rectangle.top = top;
144
161
  const yEnd = top + pHeight;
145
162
  for (let y = top; y < yEnd; y += 1) {
146
- this.getOrCreateRow(y).addRect(rectangle);
163
+ this.getOrCreateRow(y).addRect(y - top >= pLowerTop ? lowerSpan : rectangle);
147
164
  }
148
165
  return top * pitchY;
149
166
  }
@@ -0,0 +1,13 @@
1
+ import type { IStateTreeNode } from '@jbrowse/mobx-state-tree';
2
+ /**
3
+ * #api core/util
4
+ * Run a display's `afterAttach` body from a module loaded on demand, so the
5
+ * autorun installers stay out of the display's eager bundle.
6
+ *
7
+ * One policy for the gap the `await` opens: a node torn down before the module
8
+ * lands installs nothing, and a module that fails to load is reported where the
9
+ * user can see it rather than onto the display's own error slot — that slot is
10
+ * what `reload()` clears, and nothing would re-run the install behind it.
11
+ * Three displays hand-rolled this IIFE and each drew the lines differently.
12
+ */
13
+ export declare function runLazyAfterAttach<Self extends IStateTreeNode>(self: Self, load: () => Promise<(self: Self) => void>): void;
@@ -0,0 +1,31 @@
1
+ import { isAlive } from '@jbrowse/mobx-state-tree';
2
+ import { getNotificationSink } from './sessionServices.js';
3
+ /**
4
+ * #api core/util
5
+ * Run a display's `afterAttach` body from a module loaded on demand, so the
6
+ * autorun installers stay out of the display's eager bundle.
7
+ *
8
+ * One policy for the gap the `await` opens: a node torn down before the module
9
+ * lands installs nothing, and a module that fails to load is reported where the
10
+ * user can see it rather than onto the display's own error slot — that slot is
11
+ * what `reload()` clears, and nothing would re-run the install behind it.
12
+ * Three displays hand-rolled this IIFE and each drew the lines differently.
13
+ */
14
+ export function runLazyAfterAttach(self, load) {
15
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
16
+ ;
17
+ (async () => {
18
+ try {
19
+ const install = await load();
20
+ if (isAlive(self)) {
21
+ install(self);
22
+ }
23
+ }
24
+ catch (e) {
25
+ if (isAlive(self)) {
26
+ console.error(e);
27
+ getNotificationSink(self).notifyError(`${e}`, e);
28
+ }
29
+ }
30
+ })();
31
+ }
@@ -0,0 +1,19 @@
1
+ import type { AnyReactComponentType } from './types/util.ts';
2
+ /**
3
+ * `React.lazy` that also exposes the import it wraps, so code that knows a
4
+ * component is about to render (a session naming a view, a track being shown)
5
+ * can start the download instead of waiting for React to reach it. A failed
6
+ * load is not kept, so the render that follows tries again.
7
+ *
8
+ * Once the import has landed, the first render gets the module synchronously.
9
+ * React.lazy suspends on any promise, settled or not, and React holds a
10
+ * suspended boundary's reveal for 300 ms after its fallback commits, so a
11
+ * preloaded component nested under another cost that 300 ms per level.
12
+ */
13
+ export declare function lazyWithPreload<T extends AnyReactComponentType>(factory: () => Promise<{
14
+ default: T;
15
+ }>): import("react").LazyExoticComponent<T> & {
16
+ preload: () => Promise<{
17
+ default: T;
18
+ }>;
19
+ };
@@ -0,0 +1,27 @@
1
+ import { lazy } from 'react';
2
+ /**
3
+ * `React.lazy` that also exposes the import it wraps, so code that knows a
4
+ * component is about to render (a session naming a view, a track being shown)
5
+ * can start the download instead of waiting for React to reach it. A failed
6
+ * load is not kept, so the render that follows tries again.
7
+ *
8
+ * Once the import has landed, the first render gets the module synchronously.
9
+ * React.lazy suspends on any promise, settled or not, and React holds a
10
+ * suspended boundary's reveal for 300 ms after its fallback commits, so a
11
+ * preloaded component nested under another cost that 300 ms per level.
12
+ */
13
+ export function lazyWithPreload(factory) {
14
+ let loaded;
15
+ let loading;
16
+ const load = () => (loading ??= factory().then(module => (loaded = module), (error) => {
17
+ loading = undefined;
18
+ throw error;
19
+ }));
20
+ const settled = (module) => ({
21
+ // eslint-disable-next-line unicorn/no-thenable -- React.lazy takes a module synchronously only from a then that calls back at once
22
+ then: (resolve) => {
23
+ resolve(module);
24
+ },
25
+ });
26
+ return Object.assign(lazy(() => (loaded ? settled(loaded) : load())), { preload: load });
27
+ }
@@ -0,0 +1,72 @@
1
+ import type { CategoricalEntry, CategoricalScale } from '../ui/colorScale.ts';
2
+ import type { LegendSwatch } from '../ui/legendSpec.ts';
3
+ import type { CategoricalField } from './categoricalField.ts';
4
+ export interface LegendCandidate {
5
+ rowIndex: number;
6
+ value: string;
7
+ color: number;
8
+ }
9
+ export interface LegendEntry {
10
+ values: string[];
11
+ color: number;
12
+ }
13
+ export declare const MAX_LEGEND_ENTRIES = 30;
14
+ export declare const MAX_LEGEND_CANDIDATES = 1024;
15
+ /**
16
+ * Accumulator for the distinct (row, value, color) combinations a packer walks
17
+ * past, in first-seen order and bounded, so the main thread never re-walks the
18
+ * features. Deduped on the whole triple: a row of the union lists every value
19
+ * painted in its color, so a second value on that color has to still be in the
20
+ * list to reach it.
21
+ */
22
+ export declare function createLegendCandidateCollector(maxCandidates?: number): {
23
+ candidates: LegendCandidate[];
24
+ add(rowIndex: number, value: string, color: number): void;
25
+ };
26
+ export interface LegendCandidateSource {
27
+ candidates: readonly LegendCandidate[];
28
+ rowPaintsCandidateColor: (rowIndex: number) => boolean;
29
+ }
30
+ /**
31
+ * The categorical color key over any number of packed regions: one entry per
32
+ * distinct color listing every value painted in it, colors in first-seen
33
+ * order. Keyed by color rather than by value because hiding a category hides
34
+ * features BY color, so two values sharing one color are one row that names
35
+ * both; a value met in two colors stays with the first.
36
+ *
37
+ * `[]` when there are more than `maxEntries` distinct colors, where the data is
38
+ * not a categorical vocabulary. `regions` is consumed lazily.
39
+ */
40
+ export declare function unionLegendCandidates<T>(regions: Iterable<T>, resolve: (region: T) => LegendCandidateSource, maxEntries?: number): LegendEntry[];
41
+ /**
42
+ * A source whose every entry is a candidate its one row paints: the entries of
43
+ * a scale table `encodeFeatures` resolved, or any walk that met each value in
44
+ * one color.
45
+ */
46
+ export declare function everyRowPaints(entries: readonly {
47
+ value: string;
48
+ color: number;
49
+ }[]): LegendCandidateSource;
50
+ /**
51
+ * The one categorical key a color channel derives from what a worker painted:
52
+ * the union above over the loaded regions, each row a painted color naming
53
+ * every value in it through `field` and ordered by it, and nothing where the
54
+ * rows would say nothing (`legendIsReadable`). A display resolving its own colors hands the
55
+ * candidates its packer recorded; one resolved by `encodeFeatures` hands the
56
+ * entries of the scale tables that came back. Either way the key lists what
57
+ * the painting holds, and a `closed` field's domain besides once anything
58
+ * painted. `title` heads it in place of the field's name, `''` heading
59
+ * nothing, and `swatches` draws a row as something other than its color's box.
60
+ * `besides` are the colors of rows a display lists beside these, which the
61
+ * one-color test counts and the length test does not.
62
+ */
63
+ export declare function derivedColorScale<T>(regions: Iterable<T>, resolve: (region: T) => LegendCandidateSource, { id, field, title, maxItems, swatches, besides, }: {
64
+ id: string;
65
+ field: CategoricalField;
66
+ title?: string;
67
+ maxItems?: number;
68
+ swatches?: (row: CategoricalEntry & {
69
+ color: string;
70
+ }) => LegendSwatch[];
71
+ besides?: readonly string[];
72
+ }): CategoricalScale[];
@@ -0,0 +1,138 @@
1
+ import { MAX_LEGEND_ITEMS, legendIsReadable } from '../ui/legendSpec.js';
2
+ import { abgrToCssRgba, cssColorToABGR } from './colorBits.js';
3
+ // How many distinct colors a derived key may name and still BE a key. Past this
4
+ // the data is not a categorical vocabulary (a track keyed by unique per-feature
5
+ // names), and a list of every feature is the thing a key exists instead of.
6
+ //
7
+ // A different question from `legendIsReadable`'s lower bar, which asks whether a
8
+ // key a display already has is worth the rows it costs.
9
+ export const MAX_LEGEND_ENTRIES = 30;
10
+ // Bound on the candidate list one region ships. Far above MAX_LEGEND_ENTRIES, so
11
+ // a vocabulary that is categorical at all crosses whole, and a track with a name
12
+ // per feature ships a prefix that reads the same way it would have.
13
+ export const MAX_LEGEND_CANDIDATES = 1024;
14
+ /**
15
+ * Accumulator for the distinct (row, value, color) combinations a packer walks
16
+ * past, in first-seen order and bounded, so the main thread never re-walks the
17
+ * features. Deduped on the whole triple: a row of the union lists every value
18
+ * painted in its color, so a second value on that color has to still be in the
19
+ * list to reach it.
20
+ */
21
+ export function createLegendCandidateCollector(maxCandidates = MAX_LEGEND_CANDIDATES) {
22
+ const candidates = [];
23
+ const seen = new Set();
24
+ return {
25
+ candidates,
26
+ add(rowIndex, value, color) {
27
+ const id = `${rowIndex}\u0000${color}\u0000${value}`;
28
+ if (candidates.length < maxCandidates && !seen.has(id)) {
29
+ seen.add(id);
30
+ candidates.push({ rowIndex, value, color });
31
+ }
32
+ },
33
+ };
34
+ }
35
+ /**
36
+ * The categorical color key over any number of packed regions: one entry per
37
+ * distinct color listing every value painted in it, colors in first-seen
38
+ * order. Keyed by color rather than by value because hiding a category hides
39
+ * features BY color, so two values sharing one color are one row that names
40
+ * both; a value met in two colors stays with the first.
41
+ *
42
+ * `[]` when there are more than `maxEntries` distinct colors, where the data is
43
+ * not a categorical vocabulary. `regions` is consumed lazily.
44
+ */
45
+ export function unionLegendCandidates(regions, resolve, maxEntries = MAX_LEGEND_ENTRIES) {
46
+ const rows = new Map();
47
+ const seenValues = new Set();
48
+ for (const region of regions) {
49
+ const { candidates, rowPaintsCandidateColor } = resolve(region);
50
+ for (const { rowIndex, value, color } of candidates) {
51
+ if (!rowPaintsCandidateColor(rowIndex) || seenValues.has(value)) {
52
+ continue;
53
+ }
54
+ seenValues.add(value);
55
+ const row = rows.get(color);
56
+ if (row) {
57
+ row.values.push(value);
58
+ }
59
+ else {
60
+ rows.set(color, { values: [value], color });
61
+ if (rows.size > maxEntries) {
62
+ return [];
63
+ }
64
+ }
65
+ }
66
+ }
67
+ return [...rows.values()];
68
+ }
69
+ /**
70
+ * A source whose every entry is a candidate its one row paints: the entries of
71
+ * a scale table `encodeFeatures` resolved, or any walk that met each value in
72
+ * one color.
73
+ */
74
+ export function everyRowPaints(entries) {
75
+ return {
76
+ candidates: entries.map(({ value, color }) => ({
77
+ rowIndex: 0,
78
+ value,
79
+ color,
80
+ })),
81
+ rowPaintsCandidateColor: () => true,
82
+ };
83
+ }
84
+ /**
85
+ * The one categorical key a color channel derives from what a worker painted:
86
+ * the union above over the loaded regions, each row a painted color naming
87
+ * every value in it through `field` and ordered by it, and nothing where the
88
+ * rows would say nothing (`legendIsReadable`). A display resolving its own colors hands the
89
+ * candidates its packer recorded; one resolved by `encodeFeatures` hands the
90
+ * entries of the scale tables that came back. Either way the key lists what
91
+ * the painting holds, and a `closed` field's domain besides once anything
92
+ * painted. `title` heads it in place of the field's name, `''` heading
93
+ * nothing, and `swatches` draws a row as something other than its color's box.
94
+ * `besides` are the colors of rows a display lists beside these, which the
95
+ * one-color test counts and the length test does not.
96
+ */
97
+ export function derivedColorScale(regions, resolve, { id, field, title = field.field, maxItems, swatches, besides = [], }) {
98
+ const painted = unionLegendCandidates(regions, resolve).map(({ values, color }) => {
99
+ const sorted = values.toSorted(field.compare);
100
+ const value = sorted[0];
101
+ return {
102
+ value,
103
+ values: sorted,
104
+ label: sorted.map(v => field.label(v)).join(', '),
105
+ color: abgrToCssRgba(color),
106
+ ...(value === '' ? { missing: true } : {}),
107
+ };
108
+ });
109
+ const named = new Set(painted.flatMap(e => e.values));
110
+ const unpainted = field.closed && painted.length > 0
111
+ ? field.domain
112
+ .filter(value => !named.has(value))
113
+ .map(value => ({
114
+ value,
115
+ label: field.label(value),
116
+ color: abgrToCssRgba(cssColorToABGR(field.color(value))),
117
+ }))
118
+ : [];
119
+ const entries = [...painted, ...unpainted].sort((a, b) => field.compare(a.value, b.value));
120
+ const beside = besides.map(color => ({
121
+ label: '',
122
+ color: abgrToCssRgba(cssColorToABGR(color)),
123
+ }));
124
+ return painted.length > 0 &&
125
+ legendIsReadable([...entries, ...beside], (maxItems ?? MAX_LEGEND_ITEMS) + beside.length)
126
+ ? [
127
+ {
128
+ kind: 'categorical',
129
+ id,
130
+ ...(title ? { title } : {}),
131
+ ...(field.domain.length > 0 ? { domain: field.domain } : {}),
132
+ entries: swatches
133
+ ? entries.map(row => ({ ...row, swatches: swatches(row) }))
134
+ : entries,
135
+ },
136
+ ]
137
+ : [];
138
+ }
@@ -36,12 +36,12 @@ export function parseLocStringOneBased(locString, isValidRefName) {
36
36
  throw new Error('no location string provided, could not parse');
37
37
  }
38
38
  // handle reverse strand notation e.g. "chr1:1-100[rev]"
39
+ locString = locString.replaceAll(/\s/g, '');
39
40
  let reversed = false;
40
41
  if (locString.endsWith('[rev]')) {
41
42
  reversed = true;
42
43
  locString = locString.slice(0, -5);
43
44
  }
44
- locString = locString.replaceAll(/\s/g, '');
45
45
  // extract optional assembly name in braces e.g. "{hg19}chr1:1-100"
46
46
  const assemblyMatch = ASSEMBLY_REGEX.exec(locString);
47
47
  if (!assemblyMatch) {
@@ -174,7 +174,10 @@ function assembleLocStringWith(region, cb = (n) => n) {
174
174
  }
175
175
  let endString;
176
176
  if (end !== undefined) {
177
- endString = start !== undefined && start + 1 === end ? '' : `..${cb(end)}`;
177
+ endString =
178
+ start !== undefined && (start + 1 === end || start === end)
179
+ ? ''
180
+ : `..${cb(end)}`;
178
181
  }
179
182
  else {
180
183
  endString = start !== undefined ? '..' : '';
@@ -12,10 +12,10 @@ export const { available: localStorageAvailable, getItem: localStorageGetItem, s
12
12
  // and has to be announced by hand. Missing that half is what let two components
13
13
  // on one key show different values until one of them remounted.
14
14
  //
15
- // Announcing is deliberately not folded into localStorageSetItem. The
16
- // grid-bookmark widget persists its list from an autorun over the list, so a
17
- // write that called its own subscriber back would re-enter that autorun and
18
- // write again, forever. A writer says when its write is news.
15
+ // Announcing is deliberately not folded into localStorageSetItem. A writer
16
+ // that persists from an autorun over its own state would, if its write called
17
+ // its own subscriber back, re-enter that autorun and write again, forever. A
18
+ // writer says when its write is news.
19
19
  const listeners = new Map();
20
20
  // Installed on the first subscription rather than at module scope, so importing
21
21
  // this file from a worker or a test never touches `window`.
@@ -0,0 +1,150 @@
1
+ import Flatbush from './flatbush/index.ts';
2
+ import type { FeatureTable } from './featureTable.ts';
3
+ import type { JexlInstance } from './jexlStrings.ts';
4
+ import type { ColorEncoding, ColorScaleTable, ContinuousRef, Encoded, EncodedChannels, FieldRef, LocusRef, ShapeEncoding, SizeEncoding, LaneName } from './markEncodingTypes.ts';
5
+ import type { ProgressReporter } from './progress.ts';
6
+ import type { Feature } from './simpleFeature.ts';
7
+ export type { AggregateOp, AggregateStep, BinStep, CategoricalRef, ColorEncoding, ContinuousRef, CoverageStep, ColorScaleTable, CoreGetEncodedLayersArgs, Encoded, EncodedChannels, EncodedLayersResult, FacetSection, FacetSpec, FieldRef, FilterStep, FormulaStep, LocusRef, MateStep, ShapeEncoding, ShapeName, ShapeScaleTable, SizeEncoding, SizeRef, SizeScaleTable, LaneName, LayerRequest, MarkEncoding, ScaleTable, ThresholdRef, TransformStep, } from './markEncodingTypes.ts';
8
+ export type { ColorSchemeName } from './colorSchemes.ts';
9
+ export { COLOR_SCHEMES } from './colorSchemes.ts';
10
+ export { NO_VALUE_LABEL } from './categoricalField.ts';
11
+ export declare const DEFAULT_MARK_COLOR = "#0068d1";
12
+ export declare const DEFAULT_SIZE_RANGE_PX: [number, number];
13
+ /**
14
+ * #api
15
+ * The misconfiguration grey packed as the encoder paints it: a `jexl:` colour
16
+ * that answered no string, a ramp value that is no number, text a threshold
17
+ * cannot read.
18
+ */
19
+ export declare const MISCONFIGURED_ABGR: number;
20
+ /**
21
+ * #api
22
+ * The no-value grey packed as the encoder paints it: a feature with nothing in
23
+ * the field a threshold reads.
24
+ */
25
+ export declare const NO_VALUE_ABGR: number;
26
+ /**
27
+ * #api
28
+ * A channel read per feature: the compiled form of a {@link FieldRef}, and
29
+ * what a display's own worker method hands the encoder for a channel no
30
+ * field name can say — a join against a second adapter, a lookup table, a
31
+ * rule over two fields.
32
+ */
33
+ export type ChannelReader<T = unknown> = (feature: Feature) => T;
34
+ /**
35
+ * #api
36
+ * What `encodeFeatures` takes: a {@link MarkEncoding}, any channel of which
37
+ * may be a {@link ChannelReader} in place of its declared form, and `row` the
38
+ * values themselves, one per input feature, where the caller computed them —
39
+ * a facet's stacked rows. The declared form is what crosses the wire; a
40
+ * reader or a value list is built in the worker.
41
+ */
42
+ export interface MarkEncodingInput {
43
+ x?: FieldRef | ChannelReader;
44
+ x2?: FieldRef | LocusRef | ChannelReader;
45
+ y?: FieldRef | ChannelReader;
46
+ row?: FieldRef | ChannelReader | ArrayLike<number>;
47
+ color?: ColorEncoding | ChannelReader<number>;
48
+ shape?: ShapeEncoding | ChannelReader<number>;
49
+ text?: FieldRef | ChannelReader;
50
+ size?: SizeEncoding;
51
+ }
52
+ /**
53
+ * #api
54
+ * What surrounds an encode: the jexl instance a `jexl:` channel compiles
55
+ * against — a caller whose channels are all readers or field names passes
56
+ * none — and a progress reporter.
57
+ */
58
+ export interface EncodeContext {
59
+ jexl?: JexlInstance;
60
+ report?: ProgressReporter;
61
+ }
62
+ /**
63
+ * #api
64
+ * The hit index over `count` instances: each a box from `x` to `x2` at its
65
+ * `y`, or at 0 for a mark with no value.
66
+ */
67
+ export declare function hitIndexOf(x: Uint32Array, x2: Uint32Array, y: Float32Array | undefined, count?: number): Flatbush;
68
+ /**
69
+ * #api
70
+ * An encoded payload as a display stores it: the hit index the worker built
71
+ * with {@link hitIndexOf}, wrapped once where the payload lands.
72
+ */
73
+ export type HitIndexed<T extends EncodedChannels> = T & {
74
+ flatbush?: Flatbush;
75
+ };
76
+ /**
77
+ * #api
78
+ * {@link HitIndexed} over what the worker shipped.
79
+ */
80
+ export declare function withHitIndex<T extends EncodedChannels>(channels: T): HitIndexed<T>;
81
+ /**
82
+ * #api
83
+ * Evaluate one encoding over a feature list into dense channel arrays for
84
+ * the lanes named, the scale table each scaled channel came from, the `y`
85
+ * extremes and — when `index` is among the lanes — a hit index.
86
+ *
87
+ * A feature whose `x`, `x2` or (declared and asked-for) `y` is not finite is
88
+ * skipped and counted in `skipped`, so every array stays index-aligned with
89
+ * the Flatbush. Pure: the RPC around it owns the adapter, the filters and the
90
+ * transferables.
91
+ *
92
+ * Columnar: one pass admits the rows over `x`, `x2` and `y` alone, and none
93
+ * runs where all three are lanes of whole numbers; every other lane is then
94
+ * filled in its own loop over the admitted rows, a lane straight off a typed
95
+ * column and a categorical over a `category` column per label.
96
+ */
97
+ export declare function encodeFeatures<L extends LaneName>(input: readonly Feature[] | FeatureTable, encoding: MarkEncodingInput, lanes: readonly L[], ctx?: EncodeContext): Encoded<L>;
98
+ /**
99
+ * #api
100
+ * A continuous colour scale over `extent`, the values it met: the domain its
101
+ * declared ends and the extent make, the straight table its stops bake to and
102
+ * where its middle stop sits, and the packed colour a value paints through
103
+ * them: an infinity the end on its side, as a threshold places it, and NaN,
104
+ * text that is no number, the misconfiguration grey. The encoder and every
105
+ * display painting a ramp itself read it, so a value takes one colour whoever
106
+ * paints it.
107
+ */
108
+ export declare function continuousColorScale(encoding: ContinuousRef, extent: readonly [number, number]): {
109
+ domain: [number, number];
110
+ lut: Uint8Array<ArrayBufferLike>;
111
+ midNorm: number;
112
+ colorOf: (value: number) => number;
113
+ };
114
+ /**
115
+ * #api
116
+ * A ramp table over `extent`, the union a display took across the regions it
117
+ * loaded: each open end of the domain moved to the union's, the pinned ends
118
+ * kept. The table stays straight and `domainMid` a value, so the middle stop
119
+ * follows the widened domain with no table baked again.
120
+ */
121
+ export declare function rampOverExtent(table: Extract<ColorScaleTable, {
122
+ kind: 'ramp';
123
+ }>, extent: [number, number]): Extract<ColorScaleTable, {
124
+ kind: 'ramp';
125
+ }>;
126
+ /**
127
+ * #api
128
+ * A CSS colour or `jexl:` colour expression as a per-feature packed ABGR —
129
+ * the unscaled arm of {@link ColorEncoding}, on its own for a display that
130
+ * carries a plain `color` slot.
131
+ */
132
+ export declare function colorEvaluator(color: string, jexl: JexlInstance | undefined): (feature: Feature) => number;
133
+ /**
134
+ * #api
135
+ * The input feature instance `i` of `channels` was: `featureIndex[i]`, or `i`
136
+ * itself where the encoder skipped none and so shipped no index.
137
+ */
138
+ export declare function featureIndexAt(channels: Pick<EncodedChannels, 'featureIndex'>, i: number): number;
139
+ /**
140
+ * #api
141
+ * The packed colour instance `i` of `channels` paints: `color[i]`, or `color`
142
+ * itself where the colour is a constant and so shipped as one number.
143
+ */
144
+ export declare function colorAt(channels: Pick<EncodedChannels, 'color'>, i: number): number | undefined;
145
+ /**
146
+ * #api
147
+ * The buffers an {@link EncodedChannels} owns, for `rpcResult`'s transfer
148
+ * list.
149
+ */
150
+ export declare function encodedChannelTransferables(c: EncodedChannels): ArrayBufferLike[];