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

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 (611) hide show
  1. package/README.md +1476 -265
  2. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +3 -2
  3. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +5 -3
  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 +16 -9
  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 +50 -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/configSchema.d.ts +1 -1
  35. package/esm/BaseFeatureWidget/formatDetails.d.ts +13 -29
  36. package/esm/BaseFeatureWidget/formatDetails.js +62 -83
  37. package/esm/BaseFeatureWidget/index.d.ts +2 -1
  38. package/esm/BaseFeatureWidget/stateModelFactory.d.ts +42 -29
  39. package/esm/BaseFeatureWidget/stateModelFactory.js +98 -98
  40. package/esm/BaseFeatureWidget/types.d.ts +12 -6
  41. package/esm/BaseFeatureWidget/util.d.ts +0 -10
  42. package/esm/BaseFeatureWidget/util.js +0 -17
  43. package/esm/CorePlugin.js +2 -2
  44. package/esm/PluginLoader.d.ts +24 -13
  45. package/esm/PluginLoader.js +167 -51
  46. package/esm/PluginManager.d.ts +130 -24
  47. package/esm/PluginManager.js +180 -32
  48. package/esm/ReExports/MuiDataGridReExports.d.ts +1 -0
  49. package/esm/ReExports/MuiDataGridReExports.js +2 -2
  50. package/esm/ReExports/coreModules.generated.d.ts +2 -0
  51. package/esm/ReExports/coreModules.generated.js +528 -0
  52. package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
  53. package/esm/ReExports/coreWorkerModules.generated.js +488 -0
  54. package/esm/ReExports/frameworkModules.d.ts +2 -0
  55. package/esm/ReExports/frameworkModules.js +68 -0
  56. package/esm/ReExports/frameworkShared.d.ts +12 -0
  57. package/esm/ReExports/frameworkShared.js +16 -0
  58. package/esm/ReExports/frameworkWorkerModules.generated.d.ts +2 -0
  59. package/esm/ReExports/frameworkWorkerModules.generated.js +130 -0
  60. package/esm/ReExports/list.js +527 -79
  61. package/esm/ReExports/modules.d.ts +1 -1
  62. package/esm/ReExports/modules.js +10 -165
  63. package/esm/ReExports/registry.d.ts +1 -0
  64. package/esm/ReExports/registry.js +23 -5
  65. package/esm/ReExports/uiStub.d.ts +3 -0
  66. package/esm/ReExports/uiStub.js +33 -0
  67. package/esm/ReExports/workerModules.d.ts +2 -0
  68. package/esm/ReExports/workerModules.js +11 -0
  69. package/esm/TextSearch/TextSearchManager.d.ts +27 -13
  70. package/esm/TextSearch/TextSearchManager.js +77 -36
  71. package/esm/TextSearch/places.d.ts +12 -0
  72. package/esm/TextSearch/places.js +94 -0
  73. package/esm/assemblyManager/assembly.d.ts +21 -19
  74. package/esm/assemblyManager/assembly.js +28 -26
  75. package/esm/assemblyManager/assemblyAdapters.d.ts +1 -1
  76. package/esm/assemblyManager/assemblyAdapters.js +8 -2
  77. package/esm/assemblyManager/assemblyConfigSchema.d.ts +31 -90
  78. package/esm/assemblyManager/assemblyConfigSchema.js +35 -47
  79. package/esm/assemblyManager/assemblyManager.d.ts +35 -180
  80. package/esm/assemblyManager/assemblyManager.js +47 -51
  81. package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +25 -18
  82. package/esm/assemblyManager/expandAssemblyConfigShorthand.js +78 -49
  83. package/esm/assemblyManager/geneticCodes.js +2 -5
  84. package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +10 -0
  85. package/esm/assemblyManager/getSequenceAdapterConfig.js +10 -0
  86. package/esm/assemblyManager/indexAssemblyNames.d.ts +9 -0
  87. package/esm/assemblyManager/indexAssemblyNames.js +22 -0
  88. package/esm/assemblyManager/loadRefNameMap.d.ts +1 -1
  89. package/esm/assemblyManager/loadRefNameMap.js +4 -9
  90. package/esm/assemblyManager/refNameMapKey.d.ts +7 -0
  91. package/esm/assemblyManager/refNameMapKey.js +12 -0
  92. package/esm/checkPlugins.d.ts +2 -0
  93. package/esm/checkPlugins.js +38 -17
  94. package/esm/configuration/bamIndexFields.d.ts +49 -0
  95. package/esm/configuration/bamIndexFields.js +41 -0
  96. package/esm/configuration/configurationSchema.d.ts +101 -71
  97. package/esm/configuration/configurationSchema.js +207 -134
  98. package/esm/configuration/configurationSchemaUnion.d.ts +39 -0
  99. package/esm/configuration/configurationSchemaUnion.js +56 -0
  100. package/esm/configuration/configurationSlot.d.ts +150 -60
  101. package/esm/configuration/configurationSlot.js +103 -75
  102. package/esm/configuration/fillLocations.d.ts +14 -0
  103. package/esm/configuration/fillLocations.js +14 -0
  104. package/esm/configuration/formatAboutConfigSchema.d.ts +7 -21
  105. package/esm/configuration/formatDetailsConfigSchema.d.ts +11 -37
  106. package/esm/configuration/formatDetailsConfigSchema.js +10 -13
  107. package/esm/configuration/fullConfSnapshot.d.ts +4 -19
  108. package/esm/configuration/fullConfSnapshot.js +30 -52
  109. package/esm/configuration/getConf.d.ts +45 -41
  110. package/esm/configuration/getConf.js +111 -44
  111. package/esm/configuration/index.d.ts +24 -11
  112. package/esm/configuration/index.js +15 -7
  113. package/esm/configuration/indexType.d.ts +26 -0
  114. package/esm/configuration/indexType.js +38 -0
  115. package/esm/configuration/mergeFormatCallbacks.d.ts +6 -7
  116. package/esm/configuration/mergeFormatCallbacks.js +13 -10
  117. package/esm/configuration/readConfObject.d.ts +2 -24
  118. package/esm/configuration/readConfObject.js +20 -63
  119. package/esm/configuration/requirements.d.ts +37 -0
  120. package/esm/configuration/requirements.js +88 -0
  121. package/esm/configuration/schemaRegistry.d.ts +32 -15
  122. package/esm/configuration/schemaRegistry.js +33 -35
  123. package/esm/configuration/schemaTypes.d.ts +21 -5
  124. package/esm/configuration/schemaTypes.js +66 -55
  125. package/esm/configuration/slotFacade.d.ts +12 -29
  126. package/esm/configuration/slotFacade.js +44 -23
  127. package/esm/configuration/snapshotPreprocess.d.ts +43 -0
  128. package/esm/configuration/snapshotPreprocess.js +161 -0
  129. package/esm/configuration/tabixIndexFields.d.ts +30 -4
  130. package/esm/configuration/tabixIndexFields.js +21 -4
  131. package/esm/configuration/tabixShorthand.d.ts +34 -17
  132. package/esm/configuration/tabixShorthand.js +49 -22
  133. package/esm/configuration/types.d.ts +182 -43
  134. package/esm/configuration/uriShorthand.d.ts +9 -0
  135. package/esm/configuration/uriShorthand.js +16 -0
  136. package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +13 -19
  137. package/esm/data_adapters/BaseAdapter/BaseAdapter.js +12 -19
  138. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +40 -2
  139. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +68 -5
  140. package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +40 -0
  141. package/esm/data_adapters/BaseAdapter/featureDensity.js +31 -0
  142. package/esm/data_adapters/BaseAdapter/index.d.ts +23 -3
  143. package/esm/data_adapters/BaseAdapter/index.js +1 -0
  144. package/esm/data_adapters/BaseAdapter/rowSources.d.ts +37 -0
  145. package/esm/data_adapters/BaseAdapter/rowSources.js +7 -0
  146. package/esm/data_adapters/BaseAdapter/stats.d.ts +33 -1
  147. package/esm/data_adapters/BaseAdapter/stats.js +52 -13
  148. package/esm/data_adapters/BaseAdapter/types.d.ts +8 -12
  149. package/esm/data_adapters/BaseAdapter/zoomRange.d.ts +10 -0
  150. package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +1 -1
  151. package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +7 -11
  152. package/esm/data_adapters/CytobandAdapter/configSchema.js +3 -17
  153. package/esm/data_adapters/dataAdapterCache.d.ts +19 -2
  154. package/esm/data_adapters/dataAdapterCache.js +44 -10
  155. package/esm/data_adapters/getFeatureAdapter.d.ts +6 -4
  156. package/esm/data_adapters/getFeatureAdapter.js +8 -8
  157. package/esm/data_adapters/getSequenceSubAdapter.d.ts +7 -9
  158. package/esm/data_adapters/getSequenceSubAdapter.js +8 -10
  159. package/esm/pluggableElementTypes/AdapterType.d.ts +8 -8
  160. package/esm/pluggableElementTypes/AdapterType.js +1 -1
  161. package/esm/pluggableElementTypes/DisplayType.d.ts +46 -16
  162. package/esm/pluggableElementTypes/DisplayType.js +22 -12
  163. package/esm/pluggableElementTypes/LazyStateModelElement.d.ts +32 -0
  164. package/esm/pluggableElementTypes/LazyStateModelElement.js +77 -0
  165. package/esm/pluggableElementTypes/PluggableElementBase.d.ts +3 -5
  166. package/esm/pluggableElementTypes/PluggableElementBase.js +3 -5
  167. package/esm/pluggableElementTypes/RpcMethodType.d.ts +11 -1
  168. package/esm/pluggableElementTypes/RpcMethodType.js +25 -9
  169. package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +1 -2
  170. package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +7 -7
  171. package/esm/pluggableElementTypes/ViewType.d.ts +20 -4
  172. package/esm/pluggableElementTypes/ViewType.js +32 -4
  173. package/esm/pluggableElementTypes/addMenuItems.d.ts +3 -2
  174. package/esm/pluggableElementTypes/extendElementType.d.ts +1 -2
  175. package/esm/pluggableElementTypes/extendElementType.js +9 -5
  176. package/esm/pluggableElementTypes/index.d.ts +2 -1
  177. package/esm/pluggableElementTypes/index.js +1 -1
  178. package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +19 -9
  179. package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +65 -27
  180. package/esm/pluggableElementTypes/models/BaseDisplayModel.js +72 -10
  181. package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +65 -16
  182. package/esm/pluggableElementTypes/models/BaseTrackModel.js +179 -117
  183. package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +85 -16
  184. package/esm/pluggableElementTypes/models/BaseViewModel.js +53 -10
  185. package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +26 -16
  186. package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +15 -11
  187. package/esm/pluggableElementTypes/models/assertDisplayContract.js +25 -32
  188. package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -18
  189. package/esm/pluggableElementTypes/models/baseConnectionConfig.js +5 -5
  190. package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +26 -31
  191. package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +108 -147
  192. package/esm/pluggableElementTypes/models/baseTrackConfig.js +96 -73
  193. package/esm/pluggableElementTypes/models/components/SaveTrackData.js +4 -6
  194. package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +3 -4
  195. package/esm/pluggableElementTypes/models/components/fetchTrackData.js +3 -3
  196. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +23 -13
  197. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +80 -48
  198. package/esm/pluggableElementTypes/models/index.d.ts +2 -3
  199. package/esm/pluggableElementTypes/models/index.js +2 -3
  200. package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +15 -1
  201. package/esm/pluggableElementTypes/models/migrateTrackConfig.js +85 -25
  202. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +4 -3
  203. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +141 -19
  204. package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +3 -3
  205. package/esm/pluginDefinitions.d.ts +34 -7
  206. package/esm/pluginDefinitions.js +54 -20
  207. package/esm/rpc/BaseRpcDriver.d.ts +2 -2
  208. package/esm/rpc/BaseRpcDriver.js +25 -30
  209. package/esm/rpc/MainThreadRpcDriver.d.ts +2 -2
  210. package/esm/rpc/MainThreadRpcDriver.js +13 -8
  211. package/esm/rpc/RpcClient.d.ts +18 -6
  212. package/esm/rpc/RpcClient.js +51 -16
  213. package/esm/rpc/RpcManager.d.ts +14 -10
  214. package/esm/rpc/RpcManager.js +11 -1
  215. package/esm/rpc/RpcRegistry.d.ts +40 -7
  216. package/esm/rpc/RpcServer.d.ts +3 -1
  217. package/esm/rpc/RpcServer.js +19 -12
  218. package/esm/rpc/WebWorkerRpcDriver.d.ts +11 -4
  219. package/esm/rpc/WebWorkerRpcDriver.js +64 -68
  220. package/esm/rpc/byteBudget.d.ts +20 -5
  221. package/esm/rpc/byteBudget.js +16 -5
  222. package/esm/rpc/configSchema.d.ts +7 -21
  223. package/esm/rpc/coreRpcMethods.d.ts +4 -0
  224. package/esm/rpc/coreRpcMethods.js +4 -0
  225. package/esm/rpc/methods/CoreGetEncodedFeature.d.ts +13 -0
  226. package/esm/rpc/methods/CoreGetEncodedFeature.js +32 -0
  227. package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +16 -0
  228. package/esm/rpc/methods/CoreGetEncodedLayers.js +59 -0
  229. package/esm/rpc/methods/CoreGetExportData.js +3 -4
  230. package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
  231. package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
  232. package/esm/rpc/methods/CoreGetFeatures.js +3 -5
  233. package/esm/rpc/methods/CoreGetRefNames.js +2 -12
  234. package/esm/rpc/methods/CoreGetRegionByteEstimate.js +1 -1
  235. package/esm/rpc/methods/CoreGetSequence.js +2 -2
  236. package/esm/rpc/methods/CoreLoadAdapterCode.d.ts +13 -0
  237. package/esm/rpc/methods/CoreLoadAdapterCode.js +16 -0
  238. package/esm/rpc/methods/layerFeatures.d.ts +33 -0
  239. package/esm/rpc/methods/layerFeatures.js +29 -0
  240. package/esm/svg/SvgExport.js +6 -7
  241. package/esm/svg/SvgThemeProviders.d.ts +12 -0
  242. package/esm/svg/SvgThemeProviders.js +15 -0
  243. package/esm/svg/exportViewSvg.d.ts +28 -0
  244. package/esm/svg/exportViewSvg.js +13 -0
  245. package/esm/svg/normalizeSvgMarkup.d.ts +7 -0
  246. package/esm/svg/normalizeSvgMarkup.js +99 -0
  247. package/esm/svg/serializeSvg.d.ts +7 -0
  248. package/esm/svg/serializeSvg.js +11 -0
  249. package/esm/svg/svgId.d.ts +1 -1
  250. package/esm/svg/svgId.js +1 -1
  251. package/esm/svg/svgReady.d.ts +9 -7
  252. package/esm/svg/svgReady.js +8 -7
  253. package/esm/svg/trackNames.d.ts +7 -5
  254. package/esm/svg/trackNames.js +12 -9
  255. package/esm/svg/wrapSvgExport.js +6 -74
  256. package/esm/ui/AddCustomPluginDialog.js +3 -8
  257. package/esm/ui/AppReadyMarker.d.ts +45 -0
  258. package/esm/ui/AppReadyMarker.js +89 -0
  259. package/esm/ui/BaseExportSvgDialog.d.ts +1 -1
  260. package/esm/ui/CascadingMenu.js +181 -104
  261. package/esm/ui/DropDownMenu.js +2 -1
  262. package/esm/ui/ErrorBanner.js +1 -1
  263. package/esm/ui/ErrorBoundary.d.ts +2 -2
  264. package/esm/ui/ErrorMessageStackTraceContents.js +2 -1
  265. package/esm/ui/ErrorMessageStackTraceDialog.js +5 -11
  266. package/esm/ui/ExportSvgDialog.d.ts +1 -1
  267. package/esm/ui/FileDropZone.js +2 -1
  268. package/esm/ui/FileSelector/useInternetAccounts.d.ts +156 -96
  269. package/esm/ui/HoverMenu.d.ts +1 -2
  270. package/esm/ui/HoverMenu.js +6 -3
  271. package/esm/ui/JexlFilterDialog.d.ts +13 -10
  272. package/esm/ui/JexlFilterDialog.js +122 -49
  273. package/esm/ui/JexlFilterRowEditors.d.ts +15 -0
  274. package/esm/ui/JexlFilterRowEditors.js +90 -0
  275. package/esm/ui/LazyBaseTooltip.d.ts +4 -0
  276. package/esm/ui/LazyBaseTooltip.js +9 -0
  277. package/esm/ui/LegendSwatchGlyph.js +26 -21
  278. package/esm/ui/LoadingOverlay.d.ts +14 -0
  279. package/esm/ui/LoadingOverlay.js +4 -2
  280. package/esm/ui/MenuTypes.d.ts +23 -53
  281. package/esm/ui/MenuTypes.js +3 -0
  282. package/esm/ui/MonospaceTextField.d.ts +2 -1
  283. package/esm/ui/MonospaceTextField.js +23 -20
  284. package/esm/ui/PaletteContext.d.ts +10 -5
  285. package/esm/ui/PaletteContext.js +44 -6
  286. package/esm/ui/RefNameAutocomplete/SearchOption.d.ts +13 -0
  287. package/esm/ui/RefNameAutocomplete/SearchOption.js +45 -0
  288. package/esm/ui/RefNameAutocomplete/index.d.ts +1 -2
  289. package/esm/ui/RefNameAutocomplete/index.js +8 -2
  290. package/esm/ui/RefNameAutocomplete/util.d.ts +13 -0
  291. package/esm/ui/RefNameAutocomplete/util.js +42 -1
  292. package/esm/ui/ResizeHandle.d.ts +3 -1
  293. package/esm/ui/ResizeHandle.js +44 -11
  294. package/esm/ui/ScrollChrome.d.ts +13 -0
  295. package/esm/ui/ScrollChrome.js +11 -0
  296. package/esm/ui/ScrollEdgeShadow.d.ts +6 -9
  297. package/esm/ui/ScrollEdgeShadow.js +14 -35
  298. package/esm/ui/ScrollZoomToggle.d.ts +4 -27
  299. package/esm/ui/ScrollZoomToggle.js +34 -51
  300. package/esm/ui/SessionJsonPanel.d.ts +3 -0
  301. package/esm/ui/SessionJsonPanel.js +14 -0
  302. package/esm/ui/SettingsChangesTable.d.ts +1 -0
  303. package/esm/ui/SettingsChangesTable.js +49 -11
  304. package/esm/ui/ShareLinkField.d.ts +1 -3
  305. package/esm/ui/ShareLinkField.js +13 -40
  306. package/esm/ui/SizeSliderRow.d.ts +1 -3
  307. package/esm/ui/SizeSliderRow.js +4 -6
  308. package/esm/ui/SnackbarModel.js +79 -67
  309. package/esm/ui/StatusProgressBar.js +2 -2
  310. package/esm/ui/SvgColorLegend.d.ts +9 -4
  311. package/esm/ui/SvgColorLegend.js +82 -41
  312. package/esm/ui/VerticalScrollbar.d.ts +13 -34
  313. package/esm/ui/VerticalScrollbar.js +29 -83
  314. package/esm/ui/ViewLoadingScreen.d.ts +5 -4
  315. package/esm/ui/ViewLoadingScreen.js +8 -32
  316. package/esm/ui/colorScale.d.ts +92 -0
  317. package/esm/ui/colorScale.js +72 -0
  318. package/esm/ui/colors.d.ts +64 -0
  319. package/esm/ui/colors.js +230 -1
  320. package/esm/ui/hoverBoxStyle.d.ts +14 -2
  321. package/esm/ui/hoverBoxStyle.js +17 -2
  322. package/esm/ui/index.d.ts +12 -12
  323. package/esm/ui/index.js +14 -22
  324. package/esm/ui/launchViewMenu.js +15 -5
  325. package/esm/ui/legendMenuItem.d.ts +10 -32
  326. package/esm/ui/legendMenuItem.js +9 -36
  327. package/esm/ui/legendSpec.d.ts +15 -8
  328. package/esm/ui/legendSpec.js +14 -23
  329. package/esm/ui/makeSizeMenu.d.ts +0 -6
  330. package/esm/ui/makeSizeMenu.js +6 -30
  331. package/esm/ui/measureLegendText.js +1 -1
  332. package/esm/ui/menuItemAdornment.d.ts +9 -20
  333. package/esm/ui/menuItemAdornment.js +10 -32
  334. package/esm/ui/menuItems.d.ts +2 -7
  335. package/esm/ui/menuItems.js +1 -6
  336. package/esm/ui/multiTrackMenuItems.d.ts +6 -0
  337. package/esm/ui/palette.d.ts +118 -116
  338. package/esm/ui/palette.js +114 -75
  339. package/esm/ui/replaceViewAction.d.ts +1 -1
  340. package/esm/ui/replaceViewAction.js +1 -1
  341. package/esm/ui/theme.d.ts +43 -119
  342. package/esm/ui/theme.js +62 -78
  343. package/esm/ui/toggleMenuItems.d.ts +1 -3
  344. package/esm/ui/toggleMenuItems.js +6 -5
  345. package/esm/ui/useAssemblySelection.d.ts +4 -4
  346. package/esm/ui/viewHeaderHeight.d.ts +1 -0
  347. package/esm/ui/viewHeaderHeight.js +1 -0
  348. package/esm/util/Base1DUtils.d.ts +5 -3
  349. package/esm/util/Base1DUtils.js +14 -6
  350. package/esm/util/Base1DViewModel.d.ts +2 -1
  351. package/esm/util/Base1DViewModel.js +3 -2
  352. package/esm/util/SvgCanvas.d.ts +15 -13
  353. package/esm/util/SvgCanvas.js +76 -56
  354. package/esm/util/aborting.d.ts +39 -0
  355. package/esm/util/aborting.js +88 -6
  356. package/esm/util/adapterMetadata.d.ts +1 -1
  357. package/esm/util/adapterMetadata.js +6 -5
  358. package/esm/util/addAndShowTrack.d.ts +2 -5
  359. package/esm/util/addAndShowTrack.js +5 -1
  360. package/esm/util/addRelativeUris.d.ts +17 -5
  361. package/esm/util/addRelativeUris.js +46 -10
  362. package/esm/util/addTrackFromWidget.d.ts +2 -5
  363. package/esm/util/addTrackFromWidget.js +5 -4
  364. package/esm/util/aggregateFieldName.d.ts +10 -0
  365. package/esm/util/aggregateFieldName.js +8 -0
  366. package/esm/util/analytics.js +46 -13
  367. package/esm/util/animationAllowed.d.ts +9 -0
  368. package/esm/util/animationAllowed.js +13 -0
  369. package/esm/util/applyRowResizeWheel.d.ts +10 -5
  370. package/esm/util/applyRowResizeWheel.js +10 -21
  371. package/esm/util/bandHeight.d.ts +10 -0
  372. package/esm/util/bandHeight.js +29 -0
  373. package/esm/util/bandLayout.d.ts +4 -4
  374. package/esm/util/bandLayout.js +4 -4
  375. package/esm/util/bezierConnector.d.ts +4 -3
  376. package/esm/util/bezierConnector.js +38 -45
  377. package/esm/util/bgzfWorkerPool.d.ts +20 -74
  378. package/esm/util/bgzfWorkerPool.js +20 -74
  379. package/esm/util/binnedAggregate.d.ts +17 -0
  380. package/esm/util/binnedAggregate.js +275 -0
  381. package/esm/util/cacheBudgets.d.ts +22 -19
  382. package/esm/util/cacheBudgets.js +22 -19
  383. package/esm/util/cachedSetup.d.ts +1 -1
  384. package/esm/util/cachedSetup.js +2 -2
  385. package/esm/util/categoricalField.d.ts +56 -0
  386. package/esm/util/categoricalField.js +73 -0
  387. package/esm/util/clampToContig.d.ts +17 -0
  388. package/esm/util/clampToContig.js +19 -0
  389. package/esm/util/coarseStripHTML.js +1 -2
  390. package/esm/util/color/cssColorsLevel4.d.ts +1 -0
  391. package/esm/util/color/cssColorsLevel4.js +1 -0
  392. package/esm/util/color/index.d.ts +5 -3
  393. package/esm/util/color/index.js +7 -4
  394. package/esm/util/colorBits.d.ts +3 -3
  395. package/esm/util/colorBits.js +19 -44
  396. package/esm/util/colorRamp.d.ts +49 -5
  397. package/esm/util/colorRamp.js +169 -18
  398. package/esm/util/colorScale.d.ts +156 -0
  399. package/esm/util/colorScale.js +243 -0
  400. package/esm/util/colorSchemes.d.ts +21 -0
  401. package/esm/util/colorSchemes.js +30 -0
  402. package/esm/util/{createStopTokenRotation.d.ts → createAbortRotation.d.ts} +21 -23
  403. package/esm/util/{createStopTokenRotation.js → createAbortRotation.js} +21 -52
  404. package/esm/util/createSvgRasterCanvas.d.ts +10 -0
  405. package/esm/util/cssColorParse.d.ts +15 -0
  406. package/esm/util/cssColorParse.js +53 -0
  407. package/esm/util/diagonalizeRegions.d.ts +2 -3
  408. package/esm/util/diagonalizeRegions.js +8 -13
  409. package/esm/util/expandLooseSearchIndex.d.ts +19 -0
  410. package/esm/util/expandLooseSearchIndex.js +29 -0
  411. package/esm/util/featureTable.d.ts +224 -0
  412. package/esm/util/featureTable.js +366 -0
  413. package/esm/util/featureTransforms.d.ts +80 -0
  414. package/esm/util/featureTransforms.js +1579 -0
  415. package/esm/util/featureTypes.d.ts +24 -0
  416. package/esm/util/featureTypes.js +35 -0
  417. package/esm/util/fetchAndMaybeUnzip.js +16 -9
  418. package/esm/util/fetchContext.d.ts +7 -8
  419. package/esm/util/fetchContext.js +3 -3
  420. package/esm/util/fetchHub.d.ts +4 -2
  421. package/esm/util/fetchHub.js +2 -2
  422. package/esm/util/fetchPhases.d.ts +10 -10
  423. package/esm/util/fetchSeq.d.ts +2 -3
  424. package/esm/util/fetchSeq.js +2 -2
  425. package/esm/util/fieldReader.d.ts +17 -0
  426. package/esm/util/fieldReader.js +62 -0
  427. package/esm/util/freezeDeep.d.ts +8 -10
  428. package/esm/util/freezeDeep.js +8 -10
  429. package/esm/util/groupKeys.d.ts +77 -0
  430. package/esm/util/groupKeys.js +155 -0
  431. package/esm/util/highlights.d.ts +10 -6
  432. package/esm/util/highlights.js +12 -25
  433. package/esm/util/hooks.d.ts +31 -2
  434. package/esm/util/hooks.js +72 -3
  435. package/esm/util/index.d.ts +11 -11
  436. package/esm/util/index.js +11 -10
  437. package/esm/util/indexCandidates.d.ts +1 -31
  438. package/esm/util/indexCandidates.js +5 -63
  439. package/esm/util/installFetch.d.ts +77 -37
  440. package/esm/util/installFetch.js +65 -38
  441. package/esm/util/installInitAutorun.d.ts +14 -13
  442. package/esm/util/installInitAutorun.js +17 -17
  443. package/esm/util/installPrerequisiteFetch.d.ts +115 -0
  444. package/esm/util/installPrerequisiteFetch.js +111 -0
  445. package/esm/util/io/index.js +19 -14
  446. package/esm/util/isDataCurrent.d.ts +7 -5
  447. package/esm/util/isDataCurrent.js +9 -6
  448. package/esm/util/isTextEntryFocused.d.ts +7 -0
  449. package/esm/util/isTextEntryFocused.js +16 -0
  450. package/esm/util/jexl.js +24 -21
  451. package/esm/util/jexlFilterRows.d.ts +89 -0
  452. package/esm/util/jexlFilterRows.js +252 -0
  453. package/esm/util/jexlFilters.d.ts +20 -27
  454. package/esm/util/jexlFilters.js +23 -11
  455. package/esm/util/jexlStrings.d.ts +3 -4
  456. package/esm/util/jexlStrings.js +2 -3
  457. package/esm/util/layouts/GranularRectLayout.d.ts +8 -1
  458. package/esm/util/layouts/GranularRectLayout.js +25 -8
  459. package/esm/util/lazyAfterAttach.d.ts +13 -0
  460. package/esm/util/lazyAfterAttach.js +31 -0
  461. package/esm/util/lazyWithPreload.d.ts +19 -0
  462. package/esm/util/lazyWithPreload.js +27 -0
  463. package/esm/util/legendCandidates.d.ts +72 -0
  464. package/esm/util/legendCandidates.js +138 -0
  465. package/esm/util/localStorage.js +4 -4
  466. package/esm/util/markEncoding.d.ts +150 -0
  467. package/esm/util/markEncoding.js +845 -0
  468. package/esm/util/markEncodingTypes.d.ts +588 -0
  469. package/esm/util/markEncodingTypes.js +8 -0
  470. package/esm/util/mst-reflection.d.ts +2 -20
  471. package/esm/util/mst-reflection.js +3 -53
  472. package/esm/util/mstUtils.d.ts +31 -23
  473. package/esm/util/mstUtils.js +39 -24
  474. package/esm/util/numericUtils.d.ts +7 -0
  475. package/esm/util/numericUtils.js +16 -0
  476. package/esm/util/numericValue.d.ts +14 -0
  477. package/esm/util/numericValue.js +34 -0
  478. package/esm/util/openFeatureWidget.d.ts +5 -0
  479. package/esm/util/openFeatureWidget.js +2 -2
  480. package/esm/util/openViews.d.ts +17 -0
  481. package/esm/util/openViews.js +22 -0
  482. package/esm/util/parentWalk.d.ts +1 -1
  483. package/esm/util/parentWalk.js +1 -1
  484. package/esm/util/parseLineByLine.d.ts +4 -5
  485. package/esm/util/parseLineByLine.js +8 -14
  486. package/esm/util/pluginStore.d.ts +6 -8
  487. package/esm/util/pluginStore.js +17 -16
  488. package/esm/util/preloadComponent.d.ts +5 -0
  489. package/esm/util/preloadComponent.js +11 -0
  490. package/esm/util/progress.d.ts +22 -22
  491. package/esm/util/progress.js +27 -26
  492. package/esm/util/quantileExtent.d.ts +49 -0
  493. package/esm/util/quantileExtent.js +162 -0
  494. package/esm/util/range.d.ts +13 -9
  495. package/esm/util/range.js +17 -8
  496. package/esm/util/renameRegions.d.ts +26 -6
  497. package/esm/util/renameRegions.js +68 -54
  498. package/esm/util/renderToStaticMarkup.js +24 -14
  499. package/esm/util/rxjs.d.ts +23 -8
  500. package/esm/util/rxjs.js +61 -15
  501. package/esm/util/samplesTsv.d.ts +49 -0
  502. package/esm/util/samplesTsv.js +86 -0
  503. package/esm/util/scheduleDetachedDestroy.d.ts +18 -0
  504. package/esm/util/scheduleDetachedDestroy.js +24 -0
  505. package/esm/util/scrollLatch.d.ts +1 -0
  506. package/esm/util/scrollLatch.js +8 -0
  507. package/esm/util/selectEncodedFeature.d.ts +16 -0
  508. package/esm/util/selectEncodedFeature.js +34 -0
  509. package/esm/util/sessionSharing.d.ts +7 -5
  510. package/esm/util/sessionSharing.js +23 -23
  511. package/esm/util/shapeNameList.d.ts +2 -0
  512. package/esm/util/shapeNameList.js +6 -0
  513. package/esm/util/shapeNames.d.ts +7 -0
  514. package/esm/util/shapeNames.js +11 -0
  515. package/esm/util/simpleFeature.d.ts +0 -1
  516. package/esm/util/starFusion.d.ts +26 -0
  517. package/esm/util/starFusion.js +37 -0
  518. package/esm/util/stepTables.d.ts +82 -0
  519. package/esm/util/stepTables.js +243 -0
  520. package/esm/util/svAlt.d.ts +145 -0
  521. package/esm/util/svAlt.js +364 -0
  522. package/esm/util/svgColorProps.d.ts +11 -0
  523. package/esm/util/svgColorProps.js +28 -1
  524. package/esm/util/systemColorScheme.d.ts +12 -0
  525. package/esm/util/systemColorScheme.js +27 -0
  526. package/esm/util/tabix.d.ts +13 -8
  527. package/esm/util/tabix.js +17 -12
  528. package/esm/util/thresholdScale.d.ts +91 -0
  529. package/esm/util/thresholdScale.js +166 -0
  530. package/esm/util/timeGate.d.ts +4 -5
  531. package/esm/util/timeGate.js +4 -5
  532. package/esm/util/trackConfigDelta.d.ts +26 -26
  533. package/esm/util/trackConfigDelta.js +63 -47
  534. package/esm/util/tracks.d.ts +121 -40
  535. package/esm/util/tracks.js +497 -112
  536. package/esm/util/translateTranscript.d.ts +44 -0
  537. package/esm/util/translateTranscript.js +102 -0
  538. package/esm/util/types/data.d.ts +0 -2
  539. package/esm/util/types/index.d.ts +121 -22
  540. package/esm/util/types/index.js +9 -0
  541. package/esm/util/types/mst.d.ts +3 -0
  542. package/esm/util/types/mst.js +4 -0
  543. package/esm/util/types/renameIds.d.ts +1 -0
  544. package/esm/util/types/renameIds.js +29 -0
  545. package/esm/util/types/services.d.ts +1 -1
  546. package/esm/util/unknownSnapshotKeys.d.ts +51 -0
  547. package/esm/util/unknownSnapshotKeys.js +82 -0
  548. package/esm/util/useFeatureSequence.js +5 -5
  549. package/esm/util/useFetch.d.ts +3 -4
  550. package/esm/util/useFetch.js +19 -10
  551. package/esm/util/useFetchPlugins.d.ts +6 -2
  552. package/esm/util/useFetchPlugins.js +7 -3
  553. package/esm/util/usePanelVirtualScroll.d.ts +7 -35
  554. package/esm/util/usePanelVirtualScroll.js +9 -36
  555. package/esm/util/useRowVirtualScroll.d.ts +6 -29
  556. package/esm/util/useRowVirtualScroll.js +8 -49
  557. package/esm/util/useVirtualScrollWheel.d.ts +20 -4
  558. package/esm/util/useVirtualScrollWheel.js +40 -74
  559. package/esm/util/viewHighlights.d.ts +3 -0
  560. package/esm/util/viewHighlights.js +5 -0
  561. package/esm/util/viewStatus.d.ts +47 -15
  562. package/esm/util/viewStatus.js +34 -0
  563. package/esm/util/wheelZoom.d.ts +7 -1
  564. package/esm/util/wheelZoom.js +85 -19
  565. package/esm/util/whenViewSettled.d.ts +55 -8
  566. package/esm/util/whenViewSettled.js +56 -7
  567. package/esm/util/withLaunchInput.d.ts +174 -0
  568. package/esm/util/withLaunchInput.js +274 -0
  569. package/package.json +70 -20
  570. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +0 -2
  571. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +0 -8
  572. package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +0 -8
  573. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +0 -80
  574. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.js +0 -583
  575. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +0 -141
  576. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.js +0 -1116
  577. package/esm/ReExports/BaseFeatureDetails.d.ts +0 -1
  578. package/esm/ReExports/BaseFeatureDetails.js +0 -10
  579. package/esm/ReExports/index.d.ts +0 -1
  580. package/esm/ReExports/index.js +0 -1
  581. package/esm/ReExports/publicUtil.d.ts +0 -1
  582. package/esm/ReExports/publicUtil.js +0 -28
  583. package/esm/configuration/promotableDefaults.d.ts +0 -199
  584. package/esm/configuration/promotableDefaults.js +0 -326
  585. package/esm/configuration/promotablePin.d.ts +0 -55
  586. package/esm/configuration/promotablePin.js +0 -1
  587. package/esm/configuration/promotableResolve.d.ts +0 -108
  588. package/esm/configuration/promotableResolve.js +0 -117
  589. package/esm/configuration/promotableSlots.d.ts +0 -12
  590. package/esm/configuration/promotableSlots.js +0 -45
  591. package/esm/configuration/slotShape.d.ts +0 -12
  592. package/esm/configuration/slotShape.js +0 -84
  593. package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +0 -51
  594. package/esm/pluggableElementTypes/models/HighlightsMixin.js +0 -78
  595. package/esm/ui/PinAdornment.d.ts +0 -5
  596. package/esm/ui/PinAdornment.js +0 -79
  597. package/esm/ui/SvgGradientLegend.d.ts +0 -26
  598. package/esm/ui/SvgGradientLegend.js +0 -26
  599. package/esm/ui/highlightChipReveal.d.ts +0 -32
  600. package/esm/ui/highlightChipReveal.js +0 -39
  601. package/esm/ui/promotableMenuItems.d.ts +0 -19
  602. package/esm/ui/promotableMenuItems.js +0 -89
  603. package/esm/ui/promotablePinCoverage.d.ts +0 -44
  604. package/esm/ui/promotablePinCoverage.js +0 -87
  605. package/esm/util/applyInitSettings.d.ts +0 -79
  606. package/esm/util/applyInitSettings.js +0 -91
  607. package/esm/util/openDisplays.d.ts +0 -23
  608. package/esm/util/openDisplays.js +0 -79
  609. package/esm/util/stopToken.d.ts +0 -211
  610. package/esm/util/stopToken.js +0 -438
  611. /package/esm/{BaseFeatureWidget/BaseFeatureDetail/types.js → data_adapters/BaseAdapter/zoomRange.js} +0 -0
@@ -1,6 +1,6 @@
1
+ import { checkAbortSignal } from './aborting.js';
1
2
  import { cmpStr } from './cmpStr.js';
2
3
  import { createProgressReporter } from './progress.js';
3
- import { checkStopToken } from './stopToken.js';
4
4
  // A strand vote at least this lopsided (80% of aligned bases agreeing) decides
5
5
  // the reversal by itself. Below that the vote is unreliable: a chromosome
6
6
  // carrying many inversions splits it near 50/50, and MCScan `strand` is the
@@ -61,19 +61,14 @@ function anchorStats({ alignments, bases, strandWeightedSum }) {
61
61
  //
62
62
  // - refRefName: horizontal-axis (reference) chromosome
63
63
  // - queryRefName: vertical-axis (query) chromosome
64
- export async function diagonalizeRegions(alignments, referenceRegions, currentRegions, { stopToken, statusCallback, } = {}) {
65
- // Both passes below are long enough to notice on a whole-genome alignment —
66
- // the grouping walks every alignment, and the ordering pass sorts each query
67
- // chromosome's group. They used to share a single cancel check between them,
68
- // so the whole grouping pass ran after a cancel and the bar sat on the
69
- // fetch's last message throughout. Two reporters because the phases count
70
- // different things (alignments, then chromosomes), so one auto-incrementing
71
- // counter across both would report a meaningless fraction.
64
+ export async function diagonalizeRegions(alignments, referenceRegions, currentRegions, { signal, statusCallback, } = {}) {
65
+ // Two reporters because the phases count different things (alignments, then
66
+ // chromosomes). No breakpoint: each pass measured ~50ms over 500k alignments.
72
67
  const reportGrouping = createProgressReporter({
73
- label: 'Grouping alignments',
68
+ label: 'Ordering chromosomes',
74
69
  total: alignments.length,
75
70
  statusCallback,
76
- stopToken,
71
+ signal,
77
72
  });
78
73
  // first appearance wins: a refName can appear in more than one reference
79
74
  // region, and the ordering key is where that chromosome starts on the axis
@@ -118,7 +113,7 @@ export async function diagonalizeRegions(alignments, referenceRegions, currentRe
118
113
  label: 'Ordering chromosomes',
119
114
  total: queryGroups.size,
120
115
  statusCallback,
121
- stopToken,
116
+ signal,
122
117
  });
123
118
  for (const [verticalChrom, group] of queryGroups) {
124
119
  reportOrdering();
@@ -142,7 +137,7 @@ export async function diagonalizeRegions(alignments, referenceRegions, currentRe
142
137
  });
143
138
  }
144
139
  }
145
- checkStopToken(stopToken);
140
+ checkAbortSignal(signal);
146
141
  queryOrdering.sort((a, b) => a.bestRefIndex - b.bestRefIndex ||
147
142
  a.bestRefPos - b.bestRefPos ||
148
143
  cmpStr(a.refName, b.refName));
@@ -0,0 +1,19 @@
1
+ /**
2
+ * A search index as a config may write it: the whole adapter config, or just
3
+ * the `.ix` that `jbrowse text-index` wrote, as a string or as `{ uri }`.
4
+ */
5
+ export type LooseSearchIndex = string | {
6
+ uri: string;
7
+ baseUri?: string;
8
+ assemblyNames?: string[];
9
+ } | {
10
+ type: string;
11
+ [key: string]: unknown;
12
+ };
13
+ /**
14
+ * Fill in what a search index written short leaves out: a string is its `uri`,
15
+ * `type` comes from a `uri` naming a `.ix`, and `assemblyNames` from the caller
16
+ * — the track's own for a per-track index, or a config's only assembly. A key
17
+ * already written is kept.
18
+ */
19
+ export declare function expandLooseSearchIndex(snap: unknown, assemblyNames?: unknown): unknown;
@@ -0,0 +1,29 @@
1
+ function isTrixUri(uri) {
2
+ return /\.ix$/i.test(uri.split(/[?#]/)[0]);
3
+ }
4
+ /**
5
+ * Fill in what a search index written short leaves out: a string is its `uri`,
6
+ * `type` comes from a `uri` naming a `.ix`, and `assemblyNames` from the caller
7
+ * — the track's own for a per-track index, or a config's only assembly. A key
8
+ * already written is kept.
9
+ */
10
+ export function expandLooseSearchIndex(snap, assemblyNames) {
11
+ const index = typeof snap === 'string' ? { uri: snap } : snap;
12
+ if (typeof index !== 'object' || index === null || Array.isArray(index)) {
13
+ return snap;
14
+ }
15
+ const entry = index;
16
+ const guessType = entry.type === undefined &&
17
+ typeof entry.uri === 'string' &&
18
+ isTrixUri(entry.uri);
19
+ const fillNames = entry.assemblyNames === undefined &&
20
+ Array.isArray(assemblyNames) &&
21
+ assemblyNames.length > 0;
22
+ return guessType || fillNames || index !== snap
23
+ ? {
24
+ ...entry,
25
+ ...(guessType ? { type: 'TrixTextSearchAdapter' } : {}),
26
+ ...(fillNames ? { assemblyNames } : {}),
27
+ }
28
+ : snap;
29
+ }
@@ -0,0 +1,224 @@
1
+ import type { Feature, SimpleFeatureSerialized } from './simpleFeature.ts';
2
+ /**
3
+ * #api
4
+ * A typed lane a step wrote, one number per row.
5
+ */
6
+ export type NumberLane = Float64Array | Float32Array | Uint32Array | Int32Array | Uint16Array | Int16Array | Uint8Array | Int8Array;
7
+ /**
8
+ * #api
9
+ * Codes into a list of labels, one per row.
10
+ */
11
+ export type CodeLane = Uint8Array | Uint16Array | Uint32Array;
12
+ /**
13
+ * #api
14
+ * Text held as bytes, one per character: row `i`'s is `length[i]` bytes of
15
+ * `bytes` from `offset[i]`, so many rows share one buffer, as an adapter's
16
+ * arena holds them.
17
+ */
18
+ export interface TextColumn {
19
+ kind: 'text';
20
+ bytes: Uint8Array;
21
+ offset: Uint32Array;
22
+ length: Uint32Array;
23
+ at: Uint32Array | undefined;
24
+ }
25
+ /**
26
+ * #api
27
+ * A list of rows per row: row `i`'s entries are the rows of `entries` from
28
+ * `start[i]` up to `start[i + 1]`, and `keys`, where the list is a record
29
+ * keyed by name, the name of each entry.
30
+ */
31
+ export interface ListColumn {
32
+ kind: 'list';
33
+ start: Uint32Array;
34
+ entries: ColumnTable;
35
+ keys: Column | undefined;
36
+ at: Uint32Array | undefined;
37
+ }
38
+ /**
39
+ * #api
40
+ * A field's values over a table's rows, resolved once per step so the loop
41
+ * reading it is chosen before the loop runs: a lane a step wrote, codes into
42
+ * labels, a field read off the parser's own features, text or lists an
43
+ * adapter holds typed, or a value a step computes per row. `at` is the row
44
+ * each of the table's rows reads, where the lane or the features belong to a
45
+ * table this one stands on.
46
+ */
47
+ export type Column = {
48
+ kind: 'number';
49
+ values: NumberLane;
50
+ at: Uint32Array | undefined;
51
+ /** A `NaN` in the lane is a row holding no value, which `get` answers as `undefined`. */
52
+ nanIsAbsent?: boolean;
53
+ } | {
54
+ kind: 'category';
55
+ codes: CodeLane;
56
+ labels: readonly string[];
57
+ at: Uint32Array | undefined;
58
+ } | {
59
+ kind: 'feature';
60
+ features: readonly Feature[];
61
+ field: string;
62
+ at: Uint32Array | undefined;
63
+ } | TextColumn | ListColumn | {
64
+ kind: 'value';
65
+ read: (row: number) => unknown;
66
+ } | {
67
+ kind: 'none';
68
+ };
69
+ /**
70
+ * #api
71
+ * The rows one step of a mark's declaration hands the next: a column per
72
+ * field and a view of one row as a `Feature`, for a `jexl:` expression, a
73
+ * channel reader and the hover.
74
+ */
75
+ export interface FeatureTable {
76
+ readonly length: number;
77
+ column(field: string): Column;
78
+ row(i: number): Feature;
79
+ }
80
+ export declare const NO_COLUMN: Column;
81
+ /**
82
+ * #api
83
+ * A column's value at a row, whatever its kind: for a loop that reads few rows.
84
+ */
85
+ export declare function valueAt(column: Column, i: number): unknown;
86
+ /**
87
+ * #api
88
+ * A reader of a column's values by row, its kind resolved here once. A
89
+ * `number` lane with no index reads straight off the lane.
90
+ */
91
+ export declare function readerOf(column: Column): (i: number) => unknown;
92
+ /**
93
+ * #api
94
+ * {@link readerOf} as the number a quantitative channel or step reads,
95
+ * `NaN` where a row holds none, by `numericValue`'s rules.
96
+ */
97
+ export declare function numberReaderOf(column: Column): (i: number) => number;
98
+ /**
99
+ * A column of the table `at` indexes into, read from this one's rows: the
100
+ * index composed into a lane's, or into a reader for a `value` column.
101
+ */
102
+ export declare function throughIndex(column: Column, at: Uint32Array): Column;
103
+ /** A table over the features an adapter answered, a field read off each. */
104
+ export declare class SourceTable implements FeatureTable {
105
+ readonly length: number;
106
+ readonly features: readonly Feature[];
107
+ constructor(features: readonly Feature[]);
108
+ column(field: string): Column;
109
+ row(i: number): Feature;
110
+ }
111
+ /**
112
+ * #api
113
+ * A table an adapter answers from the typed arrays it already holds, where
114
+ * `getFeaturesArray` would make an object per row: a column per field, and
115
+ * each row's id. A row's hover JSON is every field it holds.
116
+ */
117
+ export declare class ColumnTable implements MadeRows {
118
+ readonly length: number;
119
+ private readonly columns;
120
+ private readonly ids;
121
+ constructor(length: number, columns: ReadonlyMap<string, Column>, id: (i: number) => string);
122
+ column(field: string): Column;
123
+ /** The fields the row holds, as a plain record. */
124
+ record(i: number): Record<string, unknown>;
125
+ id(i: number): string;
126
+ json(i: number): SimpleFeatureSerialized;
127
+ parentOfRow(): undefined;
128
+ row(i: number): Feature;
129
+ }
130
+ /**
131
+ * #api
132
+ * A table over a feature list, or the table itself.
133
+ */
134
+ export declare function asTable(input: readonly Feature[] | FeatureTable): FeatureTable;
135
+ /**
136
+ * A table whose rows stand on another's: each row names the parent row it came
137
+ * from, and a field it does not carry reads through to the parent's. A
138
+ * subclass answers its own fields in `own`, `undefined` for one it does not
139
+ * carry, and its own id and JSON.
140
+ */
141
+ export declare abstract class DerivedTable implements MadeRows {
142
+ readonly length: number;
143
+ readonly parent: FeatureTable;
144
+ readonly parentRow: Uint32Array | undefined;
145
+ private readonly resolved;
146
+ constructor(parent: FeatureTable, parentRow: Uint32Array | undefined, length?: number);
147
+ protected abstract own(field: string): Column | undefined;
148
+ /**
149
+ * Whether a row was made from its parent row, as a flattened entry or a run
150
+ * is, so the parent row is its `parent()`; otherwise the row is its parent
151
+ * row with fields beside it, and its `parent()` is that row's.
152
+ */
153
+ get madeFrom(): boolean;
154
+ column(field: string): Column;
155
+ protected inherited(field: string): Column;
156
+ parentOf(i: number): number;
157
+ id(i: number): string;
158
+ /** The row's fields over its parent's, as the hover shows them. */
159
+ json(i: number): SimpleFeatureSerialized;
160
+ parentOfRow(i: number): Feature | undefined;
161
+ row(i: number): Feature;
162
+ }
163
+ /**
164
+ * #api
165
+ * A table whose rows a step made, which answers each row's identity, its
166
+ * hover JSON and the feature it hangs from.
167
+ */
168
+ export interface MadeRows extends FeatureTable {
169
+ id(i: number): string;
170
+ json(i: number): SimpleFeatureSerialized;
171
+ parentOfRow(i: number): Feature | undefined;
172
+ }
173
+ /**
174
+ * One row of a table a step made, as a `Feature`: what a `jexl:` expression, a
175
+ * channel reader and the hover read.
176
+ */
177
+ export declare class TableRow implements Feature {
178
+ private readonly table;
179
+ private readonly i;
180
+ constructor(table: MadeRows, i: number);
181
+ get(name: 'refName'): string;
182
+ get(name: 'name' | 'type' | 'id' | 'source'): string | undefined;
183
+ get(name: 'start' | 'end'): number;
184
+ get(name: 'phase'): 0 | 1 | 2 | undefined;
185
+ get(name: 'strand'): -1 | 0 | 1 | undefined;
186
+ get(name: 'score'): number | undefined;
187
+ get(name: 'subfeatures'): Feature[] | undefined;
188
+ get(name: string): unknown;
189
+ id(): string;
190
+ parent(): Feature | undefined;
191
+ toJSON(): SimpleFeatureSerialized;
192
+ }
193
+ /**
194
+ * The parent's own rows, kept or reordered: what a `filter` and the facet's
195
+ * section order answer. Every field and the row's identity read through.
196
+ */
197
+ export declare class SelectTable extends DerivedTable {
198
+ protected own(): undefined;
199
+ row(i: number): Feature;
200
+ }
201
+ /**
202
+ * The parent's rows, each with fields a step wrote beside the ones it
203
+ * carries: a `formula`'s value, a `bin`'s edges. A written field shadows the
204
+ * parent's of the same name.
205
+ */
206
+ export declare class WithTable extends DerivedTable {
207
+ private readonly written;
208
+ constructor(parent: FeatureTable, written: ReadonlyMap<string, Column>, parentRow?: Uint32Array);
209
+ protected own(field: string): Column | undefined;
210
+ json(i: number): SimpleFeatureSerialized;
211
+ }
212
+ /**
213
+ * #api
214
+ * The table's rows `rows` names, in that order: over an adapter's features, a
215
+ * source table over those features again, so every field still reads straight
216
+ * off them; over rows a step made, a table standing on them.
217
+ */
218
+ export declare function selectRows(table: FeatureTable, rows: Uint32Array): FeatureTable;
219
+ /**
220
+ * #api
221
+ * The table's rows with `written` beside them, in the order `rows` names
222
+ * where it names one.
223
+ */
224
+ export declare function withColumns(table: FeatureTable, written: ReadonlyMap<string, Column>, rows?: Uint32Array): FeatureTable;
@@ -0,0 +1,366 @@
1
+ import { numericValue } from './numericValue.js';
2
+ export const NO_COLUMN = { kind: 'none' };
3
+ /**
4
+ * #api
5
+ * A column's value at a row, whatever its kind: for a loop that reads few rows.
6
+ */
7
+ export function valueAt(column, i) {
8
+ switch (column.kind) {
9
+ case 'number': {
10
+ const v = column.values[column.at ? column.at[i] : i];
11
+ return column.nanIsAbsent && Number.isNaN(v) ? undefined : v;
12
+ }
13
+ case 'category': {
14
+ return column.labels[column.codes[column.at ? column.at[i] : i]];
15
+ }
16
+ case 'feature': {
17
+ return column.features[column.at ? column.at[i] : i].get(column.field);
18
+ }
19
+ case 'text': {
20
+ return textOfRow(column, column.at ? column.at[i] : i);
21
+ }
22
+ case 'list': {
23
+ return listOfRow(column, column.at ? column.at[i] : i);
24
+ }
25
+ case 'value': {
26
+ return column.read(i);
27
+ }
28
+ case 'none': {
29
+ return undefined;
30
+ }
31
+ }
32
+ }
33
+ const decoder = new TextDecoder();
34
+ function textOfRow({ bytes, offset, length }, r) {
35
+ const from = offset[r];
36
+ return decoder.decode(bytes.subarray(from, from + length[r]));
37
+ }
38
+ // A keyed list is the record its entries are filed in by name, each entry a
39
+ // plain record; any other is its entries as features.
40
+ function listOfRow({ start, entries, keys }, r) {
41
+ const from = start[r];
42
+ const to = start[r + 1];
43
+ if (keys) {
44
+ const out = {};
45
+ for (let j = from; j < to; j++) {
46
+ out[String(valueAt(keys, j))] = entries.record(j);
47
+ }
48
+ return out;
49
+ }
50
+ const out = [];
51
+ for (let j = from; j < to; j++) {
52
+ out.push(entries.row(j));
53
+ }
54
+ return out;
55
+ }
56
+ /**
57
+ * #api
58
+ * A reader of a column's values by row, its kind resolved here once. A
59
+ * `number` lane with no index reads straight off the lane.
60
+ */
61
+ export function readerOf(column) {
62
+ switch (column.kind) {
63
+ case 'number': {
64
+ const { values, at } = column;
65
+ if (column.nanIsAbsent) {
66
+ return i => {
67
+ const v = values[at ? at[i] : i];
68
+ return Number.isNaN(v) ? undefined : v;
69
+ };
70
+ }
71
+ return at ? i => values[at[i]] : i => values[i];
72
+ }
73
+ case 'category': {
74
+ const { codes, labels, at } = column;
75
+ return at ? i => labels[codes[at[i]]] : i => labels[codes[i]];
76
+ }
77
+ case 'feature': {
78
+ const { features, field, at } = column;
79
+ return at
80
+ ? i => features[at[i]].get(field)
81
+ : i => features[i].get(field);
82
+ }
83
+ case 'text': {
84
+ const { at } = column;
85
+ return at ? i => textOfRow(column, at[i]) : i => textOfRow(column, i);
86
+ }
87
+ case 'list': {
88
+ const { at } = column;
89
+ return at ? i => listOfRow(column, at[i]) : i => listOfRow(column, i);
90
+ }
91
+ case 'value': {
92
+ return column.read;
93
+ }
94
+ case 'none': {
95
+ return () => undefined;
96
+ }
97
+ }
98
+ }
99
+ /**
100
+ * #api
101
+ * {@link readerOf} as the number a quantitative channel or step reads,
102
+ * `NaN` where a row holds none, by `numericValue`'s rules.
103
+ */
104
+ export function numberReaderOf(column) {
105
+ switch (column.kind) {
106
+ case 'number': {
107
+ const { values, at } = column;
108
+ return at ? i => values[at[i]] : i => values[i];
109
+ }
110
+ case 'none': {
111
+ return () => Number.NaN;
112
+ }
113
+ case 'feature': {
114
+ const { features, field, at } = column;
115
+ return at
116
+ ? i => numericValue(features[at[i]].get(field))
117
+ : i => numericValue(features[i].get(field));
118
+ }
119
+ case 'category':
120
+ case 'text':
121
+ case 'list':
122
+ case 'value': {
123
+ const read = readerOf(column);
124
+ return i => numericValue(read(i));
125
+ }
126
+ }
127
+ }
128
+ /**
129
+ * A column of the table `at` indexes into, read from this one's rows: the
130
+ * index composed into a lane's, or into a reader for a `value` column.
131
+ */
132
+ export function throughIndex(column, at) {
133
+ switch (column.kind) {
134
+ case 'number':
135
+ case 'category':
136
+ case 'feature':
137
+ case 'text':
138
+ case 'list': {
139
+ const inner = column.at;
140
+ if (!inner) {
141
+ return { ...column, at };
142
+ }
143
+ const composed = new Uint32Array(at.length);
144
+ for (let i = 0; i < at.length; i++) {
145
+ composed[i] = inner[at[i]];
146
+ }
147
+ return { ...column, at: composed };
148
+ }
149
+ case 'value': {
150
+ const { read } = column;
151
+ return { kind: 'value', read: i => read(at[i]) };
152
+ }
153
+ case 'none': {
154
+ return column;
155
+ }
156
+ }
157
+ }
158
+ /** A table over the features an adapter answered, a field read off each. */
159
+ export class SourceTable {
160
+ length;
161
+ features;
162
+ constructor(features) {
163
+ this.features = features;
164
+ this.length = features.length;
165
+ }
166
+ column(field) {
167
+ return { kind: 'feature', features: this.features, field, at: undefined };
168
+ }
169
+ row(i) {
170
+ return this.features[i];
171
+ }
172
+ }
173
+ /**
174
+ * #api
175
+ * A table an adapter answers from the typed arrays it already holds, where
176
+ * `getFeaturesArray` would make an object per row: a column per field, and
177
+ * each row's id. A row's hover JSON is every field it holds.
178
+ */
179
+ export class ColumnTable {
180
+ length;
181
+ columns;
182
+ ids;
183
+ constructor(length, columns, id) {
184
+ this.length = length;
185
+ this.columns = columns;
186
+ this.ids = id;
187
+ }
188
+ column(field) {
189
+ return this.columns.get(field) ?? NO_COLUMN;
190
+ }
191
+ /** The fields the row holds, as a plain record. */
192
+ record(i) {
193
+ const out = {};
194
+ for (const [field, column] of this.columns) {
195
+ const v = valueAt(column, i);
196
+ if (v !== undefined) {
197
+ out[field] = v;
198
+ }
199
+ }
200
+ return out;
201
+ }
202
+ id(i) {
203
+ return this.ids(i);
204
+ }
205
+ json(i) {
206
+ return {
207
+ ...this.record(i),
208
+ uniqueId: this.id(i),
209
+ };
210
+ }
211
+ parentOfRow() {
212
+ return undefined;
213
+ }
214
+ row(i) {
215
+ return new TableRow(this, i);
216
+ }
217
+ }
218
+ /**
219
+ * #api
220
+ * A table over a feature list, or the table itself.
221
+ */
222
+ export function asTable(input) {
223
+ return isTable(input) ? input : new SourceTable(input);
224
+ }
225
+ function isTable(input) {
226
+ return !Array.isArray(input);
227
+ }
228
+ /**
229
+ * A table whose rows stand on another's: each row names the parent row it came
230
+ * from, and a field it does not carry reads through to the parent's. A
231
+ * subclass answers its own fields in `own`, `undefined` for one it does not
232
+ * carry, and its own id and JSON.
233
+ */
234
+ export class DerivedTable {
235
+ length;
236
+ parent;
237
+ parentRow;
238
+ resolved = new Map();
239
+ constructor(parent, parentRow, length = parentRow ? parentRow.length : parent.length) {
240
+ this.parent = parent;
241
+ this.parentRow = parentRow;
242
+ this.length = length;
243
+ }
244
+ /**
245
+ * Whether a row was made from its parent row, as a flattened entry or a run
246
+ * is, so the parent row is its `parent()`; otherwise the row is its parent
247
+ * row with fields beside it, and its `parent()` is that row's.
248
+ */
249
+ get madeFrom() {
250
+ return false;
251
+ }
252
+ column(field) {
253
+ let column = this.resolved.get(field);
254
+ if (column === undefined) {
255
+ column = this.own(field) ?? this.inherited(field);
256
+ this.resolved.set(field, column);
257
+ }
258
+ return column;
259
+ }
260
+ inherited(field) {
261
+ const column = this.parent.column(field);
262
+ return this.parentRow ? throughIndex(column, this.parentRow) : column;
263
+ }
264
+ parentOf(i) {
265
+ return this.parentRow ? this.parentRow[i] : i;
266
+ }
267
+ id(i) {
268
+ return this.parent.row(this.parentOf(i)).id();
269
+ }
270
+ /** The row's fields over its parent's, as the hover shows them. */
271
+ json(i) {
272
+ return this.parent.row(this.parentOf(i)).toJSON();
273
+ }
274
+ parentOfRow(i) {
275
+ const up = this.parent.row(this.parentOf(i));
276
+ return this.madeFrom ? up : up.parent?.();
277
+ }
278
+ row(i) {
279
+ return new TableRow(this, i);
280
+ }
281
+ }
282
+ /**
283
+ * One row of a table a step made, as a `Feature`: what a `jexl:` expression, a
284
+ * channel reader and the hover read.
285
+ */
286
+ export class TableRow {
287
+ table;
288
+ i;
289
+ constructor(table, i) {
290
+ this.table = table;
291
+ this.i = i;
292
+ }
293
+ get(name) {
294
+ return valueAt(this.table.column(name), this.i);
295
+ }
296
+ id() {
297
+ return this.table.id(this.i);
298
+ }
299
+ parent() {
300
+ return this.table.parentOfRow(this.i);
301
+ }
302
+ toJSON() {
303
+ return this.table.json(this.i);
304
+ }
305
+ }
306
+ /**
307
+ * The parent's own rows, kept or reordered: what a `filter` and the facet's
308
+ * section order answer. Every field and the row's identity read through.
309
+ */
310
+ export class SelectTable extends DerivedTable {
311
+ own() {
312
+ return undefined;
313
+ }
314
+ row(i) {
315
+ return this.parent.row(this.parentOf(i));
316
+ }
317
+ }
318
+ /**
319
+ * The parent's rows, each with fields a step wrote beside the ones it
320
+ * carries: a `formula`'s value, a `bin`'s edges. A written field shadows the
321
+ * parent's of the same name.
322
+ */
323
+ export class WithTable extends DerivedTable {
324
+ written;
325
+ constructor(parent, written, parentRow) {
326
+ super(parent, parentRow);
327
+ this.written = written;
328
+ }
329
+ own(field) {
330
+ return this.written.get(field);
331
+ }
332
+ json(i) {
333
+ const out = { ...super.json(i) };
334
+ for (const [field, column] of this.written) {
335
+ out[field] = valueAt(column, i);
336
+ }
337
+ return out;
338
+ }
339
+ }
340
+ /**
341
+ * #api
342
+ * The table's rows `rows` names, in that order: over an adapter's features, a
343
+ * source table over those features again, so every field still reads straight
344
+ * off them; over rows a step made, a table standing on them.
345
+ */
346
+ export function selectRows(table, rows) {
347
+ if (table instanceof SourceTable) {
348
+ const { features } = table;
349
+ const listed = new Array(rows.length);
350
+ for (let k = 0; k < rows.length; k++) {
351
+ listed[k] = features[rows[k]];
352
+ }
353
+ return new SourceTable(listed);
354
+ }
355
+ return new SelectTable(table, rows);
356
+ }
357
+ /**
358
+ * #api
359
+ * The table's rows with `written` beside them, in the order `rows` names
360
+ * where it names one.
361
+ */
362
+ export function withColumns(table, written, rows) {
363
+ return rows && table instanceof SourceTable
364
+ ? new WithTable(selectRows(table, rows), written)
365
+ : new WithTable(table, written, rows);
366
+ }