@jbrowse/core 4.3.0 → 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 (1265) hide show
  1. package/README.md +1994 -0
  2. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +14 -3
  3. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +36 -23
  4. package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +10 -7
  5. package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +124 -21
  6. package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.d.ts +2 -8
  7. package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.js +4 -4
  8. package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.d.ts +1 -1
  9. package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +2 -5
  10. package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.d.ts +1 -1
  11. package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.js +4 -4
  12. package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +12 -1
  13. package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +19 -5
  14. package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
  15. package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +18 -23
  16. package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.d.ts +1 -1
  17. package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +19 -40
  18. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +9 -6
  19. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +33 -30
  20. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.d.ts +11 -0
  21. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.js +11 -0
  22. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.d.ts +20 -0
  23. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.js +66 -0
  24. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.d.ts +8 -0
  25. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.js +24 -0
  26. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.d.ts +1 -1
  27. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.js +2 -2
  28. package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.d.ts +3 -0
  29. package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +19 -0
  30. package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.d.ts +4 -0
  31. package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.js +17 -0
  32. package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +5 -3
  33. package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +8 -6
  34. package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +3 -2
  35. package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.js +7 -14
  36. package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +7 -2
  37. package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +15 -20
  38. package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.d.ts +16 -0
  39. package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.js +50 -0
  40. package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +0 -1
  41. package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +9 -10
  42. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.d.ts +18 -0
  43. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.js +10 -0
  44. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.d.ts +7 -4
  45. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +35 -24
  46. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.d.ts +10 -5
  47. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +64 -41
  48. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +3 -3
  49. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.js +17 -8
  50. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.d.ts +6 -0
  51. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.js +19 -0
  52. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.d.ts +5 -4
  53. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.js +15 -18
  54. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.d.ts +1 -1
  55. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +33 -17
  56. package/esm/BaseFeatureWidget/SequenceFeatureDetails/consts.d.ts +3 -3
  57. package/esm/BaseFeatureWidget/SequenceFeatureDetails/consts.js +7 -3
  58. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.d.ts +11 -0
  59. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.js +29 -0
  60. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.d.ts +1 -1
  61. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.js +4 -6
  62. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.d.ts +18 -6
  63. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.js +11 -29
  64. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.d.ts +9 -2
  65. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.js +63 -58
  66. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.d.ts +7 -3
  67. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.js +38 -51
  68. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.d.ts +1 -1
  69. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.js +19 -27
  70. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.d.ts +6 -0
  71. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +20 -0
  72. package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.d.ts +12 -0
  73. package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.js +97 -0
  74. package/esm/BaseFeatureWidget/SequenceFeatureDetails/index.js +1 -1
  75. package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +62 -63
  76. package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +69 -59
  77. package/esm/BaseFeatureWidget/SequenceFeatureDetails/panelAssemblyName.d.ts +21 -0
  78. package/esm/BaseFeatureWidget/SequenceFeatureDetails/panelAssemblyName.js +24 -0
  79. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.d.ts +5 -3
  80. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.js +93 -75
  81. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.d.ts +1 -1
  82. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.js +4 -11
  83. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.d.ts +5 -2
  84. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.js +21 -48
  85. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/PlainSequence.d.ts +8 -0
  86. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/PlainSequence.js +20 -0
  87. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.d.ts +6 -3
  88. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.js +33 -13
  89. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.d.ts +7 -4
  90. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +67 -11
  91. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/renderSequenceSegments.d.ts +14 -0
  92. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/renderSequenceSegments.js +42 -0
  93. package/esm/BaseFeatureWidget/SequenceFeatureDetails/types.d.ts +8 -1
  94. package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.d.ts +9 -9
  95. package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.js +28 -44
  96. package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceFetch.d.ts +23 -0
  97. package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceFetch.js +31 -0
  98. package/esm/BaseFeatureWidget/SequenceFeatureDetails/util.d.ts +90 -1
  99. package/esm/BaseFeatureWidget/SequenceFeatureDetails/util.js +145 -23
  100. package/esm/BaseFeatureWidget/configSchema.d.ts +1 -1
  101. package/esm/BaseFeatureWidget/configSchema.js +1 -1
  102. package/esm/BaseFeatureWidget/formatDetails.d.ts +22 -0
  103. package/esm/BaseFeatureWidget/formatDetails.js +82 -0
  104. package/esm/BaseFeatureWidget/index.d.ts +4 -1
  105. package/esm/BaseFeatureWidget/index.js +2 -2
  106. package/esm/BaseFeatureWidget/stateModelFactory.d.ts +102 -71
  107. package/esm/BaseFeatureWidget/stateModelFactory.js +162 -63
  108. package/esm/BaseFeatureWidget/types.d.ts +15 -8
  109. package/esm/BaseFeatureWidget/util.d.ts +2 -37
  110. package/esm/BaseFeatureWidget/util.js +4 -85
  111. package/esm/CorePlugin.js +12 -7
  112. package/esm/PhasedScheduler.d.ts +4 -2
  113. package/esm/PhasedScheduler.js +18 -2
  114. package/esm/Plugin.d.ts +6 -1
  115. package/esm/Plugin.js +7 -0
  116. package/esm/PluginLoader.d.ts +55 -44
  117. package/esm/PluginLoader.js +290 -90
  118. package/esm/PluginManager.d.ts +476 -57
  119. package/esm/PluginManager.js +480 -91
  120. package/esm/ReExports/MuiDataGridReExports.d.ts +3 -2
  121. package/esm/ReExports/MuiDataGridReExports.js +58 -130
  122. package/esm/ReExports/MuiReExports.d.ts +3 -134
  123. package/esm/ReExports/MuiReExports.js +43 -16
  124. package/esm/ReExports/MuiStylesReExports.d.ts +66 -0
  125. package/esm/ReExports/MuiStylesReExports.js +55 -0
  126. package/esm/ReExports/coreModules.generated.d.ts +2 -0
  127. package/esm/ReExports/coreModules.generated.js +528 -0
  128. package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
  129. package/esm/ReExports/coreWorkerModules.generated.js +488 -0
  130. package/esm/ReExports/frameworkModules.d.ts +2 -0
  131. package/esm/ReExports/frameworkModules.js +68 -0
  132. package/esm/ReExports/frameworkShared.d.ts +12 -0
  133. package/esm/ReExports/frameworkShared.js +16 -0
  134. package/esm/ReExports/frameworkWorkerModules.generated.d.ts +2 -0
  135. package/esm/ReExports/frameworkWorkerModules.generated.js +130 -0
  136. package/esm/ReExports/lazify.d.ts +2 -2
  137. package/esm/ReExports/lazify.js +16 -3
  138. package/esm/ReExports/list.js +433 -160
  139. package/esm/ReExports/modules.d.ts +1 -1
  140. package/esm/ReExports/modules.js +10 -146
  141. package/esm/ReExports/muiComponentNames.d.ts +18 -0
  142. package/esm/ReExports/muiComponentNames.js +130 -0
  143. package/esm/ReExports/registry.d.ts +3 -0
  144. package/esm/ReExports/registry.js +46 -0
  145. package/esm/ReExports/uiStub.d.ts +3 -0
  146. package/esm/ReExports/uiStub.js +33 -0
  147. package/esm/ReExports/workerModules.d.ts +2 -0
  148. package/esm/ReExports/workerModules.js +11 -0
  149. package/esm/TextSearch/BaseResults.d.ts +20 -21
  150. package/esm/TextSearch/BaseResults.js +8 -33
  151. package/esm/TextSearch/TextSearchManager.d.ts +30 -36
  152. package/esm/TextSearch/TextSearchManager.js +138 -44
  153. package/esm/TextSearch/places.d.ts +12 -0
  154. package/esm/TextSearch/places.js +94 -0
  155. package/esm/assemblyManager/assembly.d.ts +310 -35
  156. package/esm/assemblyManager/assembly.js +554 -263
  157. package/esm/assemblyManager/assemblyAdapters.d.ts +12 -0
  158. package/esm/assemblyManager/assemblyAdapters.js +24 -0
  159. package/esm/assemblyManager/assemblyConfigSchema.d.ts +135 -19
  160. package/esm/assemblyManager/assemblyConfigSchema.js +205 -23
  161. package/esm/assemblyManager/assemblyManager.d.ts +586 -323
  162. package/esm/assemblyManager/assemblyManager.js +352 -51
  163. package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +39 -0
  164. package/esm/assemblyManager/expandAssemblyConfigShorthand.js +114 -0
  165. package/esm/assemblyManager/geneticCodes.d.ts +21 -0
  166. package/esm/assemblyManager/geneticCodes.js +44 -0
  167. package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +19 -0
  168. package/esm/assemblyManager/getSequenceAdapterConfig.js +22 -0
  169. package/esm/assemblyManager/index.d.ts +1 -1
  170. package/esm/assemblyManager/index.js +2 -2
  171. package/esm/assemblyManager/indexAssemblyNames.d.ts +9 -0
  172. package/esm/assemblyManager/indexAssemblyNames.js +22 -0
  173. package/esm/assemblyManager/loadRefNameMap.d.ts +5 -0
  174. package/esm/assemblyManager/loadRefNameMap.js +75 -0
  175. package/esm/assemblyManager/refNameColors.d.ts +1 -0
  176. package/esm/assemblyManager/refNameColors.js +32 -0
  177. package/esm/assemblyManager/refNameMapKey.d.ts +7 -0
  178. package/esm/assemblyManager/refNameMapKey.js +12 -0
  179. package/esm/assemblyManager/refNameMaps.d.ts +26 -0
  180. package/esm/assemblyManager/refNameMaps.js +87 -0
  181. package/esm/assemblyManager/refNameMismatch.d.ts +54 -0
  182. package/esm/assemblyManager/refNameMismatch.js +66 -0
  183. package/esm/checkPlugins.d.ts +13 -0
  184. package/esm/checkPlugins.js +98 -0
  185. package/esm/configuration/bamIndexFields.d.ts +49 -0
  186. package/esm/configuration/bamIndexFields.js +41 -0
  187. package/esm/configuration/configurationSchema.d.ts +194 -29
  188. package/esm/configuration/configurationSchema.js +439 -145
  189. package/esm/configuration/configurationSchemaUnion.d.ts +39 -0
  190. package/esm/configuration/configurationSchemaUnion.js +56 -0
  191. package/esm/configuration/configurationSlot.d.ts +373 -30
  192. package/esm/configuration/configurationSlot.js +231 -224
  193. package/esm/configuration/fillLocations.d.ts +14 -0
  194. package/esm/configuration/fillLocations.js +14 -0
  195. package/esm/configuration/formatAboutConfigSchema.d.ts +41 -0
  196. package/esm/configuration/formatAboutConfigSchema.js +58 -0
  197. package/esm/configuration/formatDetailsConfigSchema.d.ts +54 -0
  198. package/esm/configuration/formatDetailsConfigSchema.js +87 -0
  199. package/esm/configuration/fullConfSnapshot.d.ts +13 -0
  200. package/esm/configuration/fullConfSnapshot.js +44 -0
  201. package/esm/configuration/getConf.d.ts +92 -0
  202. package/esm/configuration/getConf.js +141 -0
  203. package/esm/configuration/index.d.ts +32 -3
  204. package/esm/configuration/index.js +27 -2
  205. package/esm/configuration/indexType.d.ts +26 -0
  206. package/esm/configuration/indexType.js +38 -0
  207. package/esm/configuration/mergeFormatCallbacks.d.ts +14 -0
  208. package/esm/configuration/mergeFormatCallbacks.js +27 -0
  209. package/esm/configuration/readConfObject.d.ts +34 -0
  210. package/esm/configuration/readConfObject.js +118 -0
  211. package/esm/configuration/requirements.d.ts +37 -0
  212. package/esm/configuration/requirements.js +88 -0
  213. package/esm/configuration/schemaRegistry.d.ts +52 -0
  214. package/esm/configuration/schemaRegistry.js +48 -0
  215. package/esm/configuration/schemaTypes.d.ts +39 -0
  216. package/esm/configuration/schemaTypes.js +105 -0
  217. package/esm/configuration/slotFacade.d.ts +65 -0
  218. package/esm/configuration/slotFacade.js +110 -0
  219. package/esm/configuration/slotValueUtils.d.ts +17 -0
  220. package/esm/configuration/slotValueUtils.js +25 -0
  221. package/esm/configuration/snapshotPreprocess.d.ts +43 -0
  222. package/esm/configuration/snapshotPreprocess.js +161 -0
  223. package/esm/configuration/tabixIndexFields.d.ts +70 -0
  224. package/esm/configuration/tabixIndexFields.js +62 -0
  225. package/esm/configuration/tabixShorthand.d.ts +51 -0
  226. package/esm/configuration/tabixShorthand.js +72 -0
  227. package/esm/configuration/types.d.ts +315 -13
  228. package/esm/configuration/uriShorthand.d.ts +9 -0
  229. package/esm/configuration/uriShorthand.js +16 -0
  230. package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +19 -11
  231. package/esm/data_adapters/BaseAdapter/BaseAdapter.js +19 -18
  232. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +158 -7
  233. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +164 -29
  234. package/esm/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.d.ts +1 -0
  235. package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.d.ts +13 -5
  236. package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.js +9 -7
  237. package/esm/data_adapters/BaseAdapter/BaseTextSearchAdapter.d.ts +2 -1
  238. package/esm/data_adapters/BaseAdapter/CytobandAdapter.d.ts +7 -0
  239. package/esm/data_adapters/BaseAdapter/RegionsAdapter.d.ts +2 -1
  240. package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +40 -0
  241. package/esm/data_adapters/BaseAdapter/featureDensity.js +31 -0
  242. package/esm/data_adapters/BaseAdapter/getAdapterId.d.ts +2 -0
  243. package/esm/data_adapters/BaseAdapter/getAdapterId.js +9 -0
  244. package/esm/data_adapters/BaseAdapter/index.d.ts +28 -6
  245. package/esm/data_adapters/BaseAdapter/index.js +6 -5
  246. package/esm/data_adapters/BaseAdapter/rowSources.d.ts +37 -0
  247. package/esm/data_adapters/BaseAdapter/rowSources.js +7 -0
  248. package/esm/data_adapters/BaseAdapter/stats.d.ts +37 -5
  249. package/esm/data_adapters/BaseAdapter/stats.js +89 -24
  250. package/esm/data_adapters/BaseAdapter/types.d.ts +11 -13
  251. package/esm/data_adapters/BaseAdapter/types.js +1 -0
  252. package/esm/data_adapters/BaseAdapter/util.d.ts +5 -1
  253. package/esm/data_adapters/BaseAdapter/util.js +14 -3
  254. package/esm/data_adapters/BaseAdapter/zoomRange.d.ts +10 -0
  255. package/esm/data_adapters/CytobandAdapter/CytobandAdapter.d.ts +1 -1
  256. package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +5 -5
  257. package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +34 -6
  258. package/esm/data_adapters/CytobandAdapter/configSchema.js +47 -17
  259. package/esm/data_adapters/CytobandAdapter/index.js +3 -3
  260. package/esm/data_adapters/adapterSessionRefcount.d.ts +61 -0
  261. package/esm/data_adapters/adapterSessionRefcount.js +96 -0
  262. package/esm/data_adapters/dataAdapterCache.d.ts +53 -2
  263. package/esm/data_adapters/dataAdapterCache.js +99 -25
  264. package/esm/data_adapters/getFeatureAdapter.d.ts +24 -0
  265. package/esm/data_adapters/getFeatureAdapter.js +27 -0
  266. package/esm/data_adapters/getSequenceSubAdapter.d.ts +19 -0
  267. package/esm/data_adapters/getSequenceSubAdapter.js +42 -0
  268. package/esm/pluggableElementTypes/AdapterType.d.ts +57 -7
  269. package/esm/pluggableElementTypes/AdapterType.js +44 -5
  270. package/esm/pluggableElementTypes/AddTrackWorkflowType.d.ts +6 -1
  271. package/esm/pluggableElementTypes/AddTrackWorkflowType.js +3 -1
  272. package/esm/pluggableElementTypes/ConnectionType.d.ts +5 -5
  273. package/esm/pluggableElementTypes/ConnectionType.js +1 -1
  274. package/esm/pluggableElementTypes/DisplayType.d.ts +54 -14
  275. package/esm/pluggableElementTypes/DisplayType.js +30 -7
  276. package/esm/pluggableElementTypes/InternetAccountType.js +1 -1
  277. package/esm/pluggableElementTypes/LazyStateModelElement.d.ts +32 -0
  278. package/esm/pluggableElementTypes/LazyStateModelElement.js +77 -0
  279. package/esm/pluggableElementTypes/PluggableElementBase.d.ts +11 -0
  280. package/esm/pluggableElementTypes/PluggableElementBase.js +11 -0
  281. package/esm/pluggableElementTypes/RpcMethodType.d.ts +142 -12
  282. package/esm/pluggableElementTypes/RpcMethodType.js +279 -98
  283. package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +18 -9
  284. package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.js +26 -20
  285. package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegion.d.ts +5 -0
  286. package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegion.js +18 -0
  287. package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegions.d.ts +5 -0
  288. package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegions.js +10 -0
  289. package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +7 -7
  290. package/esm/pluggableElementTypes/TextSearchAdapterType.js +3 -1
  291. package/esm/pluggableElementTypes/TrackType.d.ts +2 -1
  292. package/esm/pluggableElementTypes/TrackType.js +1 -1
  293. package/esm/pluggableElementTypes/ViewType.d.ts +22 -5
  294. package/esm/pluggableElementTypes/ViewType.js +40 -5
  295. package/esm/pluggableElementTypes/WidgetType.d.ts +2 -2
  296. package/esm/pluggableElementTypes/WidgetType.js +1 -1
  297. package/esm/pluggableElementTypes/addMenuItems.d.ts +88 -0
  298. package/esm/pluggableElementTypes/addMenuItems.js +82 -0
  299. package/esm/pluggableElementTypes/extendElementType.d.ts +29 -0
  300. package/esm/pluggableElementTypes/extendElementType.js +72 -0
  301. package/esm/pluggableElementTypes/index.d.ts +8 -7
  302. package/esm/pluggableElementTypes/index.js +24 -14
  303. package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +80 -15
  304. package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.js +90 -10
  305. package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +643 -84
  306. package/esm/pluggableElementTypes/models/BaseDisplayModel.js +230 -60
  307. package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +246 -37
  308. package/esm/pluggableElementTypes/models/BaseTrackModel.js +416 -107
  309. package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +236 -16
  310. package/esm/pluggableElementTypes/models/BaseViewModel.js +154 -16
  311. package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +169 -25
  312. package/esm/pluggableElementTypes/models/InternetAccountModel.js +218 -48
  313. package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +178 -0
  314. package/esm/pluggableElementTypes/models/assertDisplayContract.js +239 -0
  315. package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +26 -8
  316. package/esm/pluggableElementTypes/models/baseConnectionConfig.js +18 -2
  317. package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +31 -17
  318. package/esm/pluggableElementTypes/models/baseInternetAccountConfig.js +23 -2
  319. package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +142 -65
  320. package/esm/pluggableElementTypes/models/baseTrackConfig.js +215 -90
  321. package/esm/pluggableElementTypes/models/components/SaveTrackData.d.ts +3 -8
  322. package/esm/pluggableElementTypes/models/components/SaveTrackData.js +111 -139
  323. package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +54 -0
  324. package/esm/pluggableElementTypes/models/components/fetchTrackData.js +83 -0
  325. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +50 -0
  326. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +147 -0
  327. package/esm/pluggableElementTypes/models/index.d.ts +5 -3
  328. package/esm/pluggableElementTypes/models/index.js +9 -8
  329. package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +48 -0
  330. package/esm/pluggableElementTypes/models/migrateTrackConfig.js +114 -0
  331. package/esm/pluggableElementTypes/models/saveTrackFileTypes/bed.js +75 -7
  332. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +10 -3
  333. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +272 -100
  334. package/esm/pluggableElementTypes/models/saveTrackFileTypes/gff3.d.ts +6 -1
  335. package/esm/pluggableElementTypes/models/saveTrackFileTypes/gff3.js +70 -74
  336. package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +9 -1
  337. package/esm/pluggableElementTypes/models/saveTrackFileTypes/util.d.ts +21 -0
  338. package/esm/pluggableElementTypes/models/saveTrackFileTypes/util.js +51 -0
  339. package/esm/pluggableElementTypes/models/uriMatchesDomains.d.ts +29 -0
  340. package/esm/pluggableElementTypes/models/uriMatchesDomains.js +62 -0
  341. package/esm/pluggableElementTypes/renderers/util/serializableFilterChain.d.ts +5 -4
  342. package/esm/pluggableElementTypes/renderers/util/serializableFilterChain.js +20 -10
  343. package/esm/pluginDefinitions.d.ts +225 -0
  344. package/esm/pluginDefinitions.js +254 -0
  345. package/esm/rpc/BaseRpcDriver.d.ts +27 -35
  346. package/esm/rpc/BaseRpcDriver.js +68 -106
  347. package/esm/rpc/MainThreadRpcDriver.d.ts +9 -10
  348. package/esm/rpc/MainThreadRpcDriver.js +23 -29
  349. package/esm/rpc/RpcClient.d.ts +50 -0
  350. package/esm/rpc/RpcClient.js +189 -0
  351. package/esm/rpc/RpcManager.d.ts +120 -27
  352. package/esm/rpc/RpcManager.js +187 -50
  353. package/esm/rpc/RpcRegistry.d.ts +298 -0
  354. package/esm/rpc/RpcServer.d.ts +43 -0
  355. package/esm/rpc/RpcServer.js +242 -0
  356. package/esm/rpc/WebWorkerRpcDriver.d.ts +78 -24
  357. package/esm/rpc/WebWorkerRpcDriver.js +311 -30
  358. package/esm/rpc/byteBudget.d.ts +64 -0
  359. package/esm/rpc/byteBudget.js +61 -0
  360. package/esm/rpc/configSchema.d.ts +13 -5
  361. package/esm/rpc/configSchema.js +40 -16
  362. package/esm/rpc/coreRpcMethods.d.ts +6 -5
  363. package/esm/rpc/coreRpcMethods.js +13 -12
  364. package/esm/rpc/explainTransferError.d.ts +35 -0
  365. package/esm/rpc/explainTransferError.js +158 -0
  366. package/esm/rpc/methods/CoreFreeResources.d.ts +19 -4
  367. package/esm/rpc/methods/CoreFreeResources.js +17 -6
  368. package/esm/rpc/methods/CoreGetEncodedFeature.d.ts +13 -0
  369. package/esm/rpc/methods/CoreGetEncodedFeature.js +32 -0
  370. package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +16 -0
  371. package/esm/rpc/methods/CoreGetEncodedLayers.js +59 -0
  372. package/esm/rpc/methods/CoreGetExportData.d.ts +5 -18
  373. package/esm/rpc/methods/CoreGetExportData.js +25 -15
  374. package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
  375. package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
  376. package/esm/rpc/methods/CoreGetFeatures.d.ts +6 -15
  377. package/esm/rpc/methods/CoreGetFeatures.js +14 -18
  378. package/esm/rpc/methods/CoreGetInfo.d.ts +6 -0
  379. package/esm/rpc/methods/CoreGetInfo.js +12 -0
  380. package/esm/rpc/methods/CoreGetMetadata.d.ts +4 -7
  381. package/esm/rpc/methods/CoreGetMetadata.js +6 -9
  382. package/esm/rpc/methods/CoreGetRefNames.d.ts +4 -8
  383. package/esm/rpc/methods/CoreGetRefNames.js +16 -15
  384. package/esm/rpc/methods/CoreGetRegionByteEstimate.d.ts +6 -0
  385. package/esm/rpc/methods/CoreGetRegionByteEstimate.js +19 -0
  386. package/esm/rpc/methods/CoreGetRegions.d.ts +4 -6
  387. package/esm/rpc/methods/CoreGetRegions.js +6 -9
  388. package/esm/rpc/methods/CoreGetSequence.d.ts +4 -11
  389. package/esm/rpc/methods/CoreGetSequence.js +12 -13
  390. package/esm/rpc/methods/CoreLoadAdapterCode.d.ts +13 -0
  391. package/esm/rpc/methods/CoreLoadAdapterCode.js +16 -0
  392. package/esm/rpc/methods/layerFeatures.d.ts +33 -0
  393. package/esm/rpc/methods/layerFeatures.js +29 -0
  394. package/esm/rpc/serializeError/index.d.ts +9 -0
  395. package/esm/rpc/serializeError/index.js +86 -0
  396. package/esm/svg/SvgExport.d.ts +30 -0
  397. package/esm/svg/SvgExport.js +52 -0
  398. package/esm/svg/SvgThemeProviders.d.ts +12 -0
  399. package/esm/svg/SvgThemeProviders.js +15 -0
  400. package/esm/svg/constants.d.ts +1 -0
  401. package/esm/svg/constants.js +5 -0
  402. package/esm/svg/exportViewSvg.d.ts +28 -0
  403. package/esm/svg/exportViewSvg.js +13 -0
  404. package/esm/svg/normalizeSvgMarkup.d.ts +7 -0
  405. package/esm/svg/normalizeSvgMarkup.js +99 -0
  406. package/esm/svg/saveSvgAsImage.d.ts +6 -0
  407. package/esm/svg/saveSvgAsImage.js +90 -0
  408. package/esm/svg/serializeSvg.d.ts +7 -0
  409. package/esm/svg/serializeSvg.js +11 -0
  410. package/esm/svg/svgId.d.ts +42 -0
  411. package/esm/svg/svgId.js +84 -0
  412. package/esm/svg/svgReady.d.ts +138 -0
  413. package/esm/svg/svgReady.js +165 -0
  414. package/esm/svg/trackNames.d.ts +29 -0
  415. package/esm/svg/trackNames.js +34 -0
  416. package/esm/svg/wrapSvgExport.d.ts +12 -0
  417. package/esm/svg/wrapSvgExport.js +10 -0
  418. package/esm/ui/ActionLink.d.ts +7 -0
  419. package/esm/ui/ActionLink.js +9 -0
  420. package/esm/ui/AddCustomPluginDialog.d.ts +14 -0
  421. package/esm/ui/AddCustomPluginDialog.js +56 -0
  422. package/esm/ui/AddGenomePane.d.ts +8 -0
  423. package/esm/ui/AddGenomePane.js +228 -0
  424. package/esm/ui/AdvancedOptions.d.ts +6 -0
  425. package/esm/ui/AdvancedOptions.js +17 -0
  426. package/esm/ui/AppLogo.d.ts +1 -1
  427. package/esm/ui/AppLogo.js +2 -2
  428. package/esm/ui/AppReadyMarker.d.ts +45 -0
  429. package/esm/ui/AppReadyMarker.js +89 -0
  430. package/esm/ui/AssemblySelector.d.ts +5 -8
  431. package/esm/ui/AssemblySelector.js +8 -26
  432. package/esm/ui/BaseExportSvgDialog.d.ts +16 -0
  433. package/esm/ui/BaseExportSvgDialog.js +84 -0
  434. package/esm/ui/BaseTooltip.d.ts +14 -3
  435. package/esm/ui/BaseTooltip.js +151 -34
  436. package/esm/ui/CascadingMenu.d.ts +9 -18
  437. package/esm/ui/CascadingMenu.js +446 -42
  438. package/esm/ui/CascadingMenuButton.d.ts +9 -11
  439. package/esm/ui/CascadingMenuButton.js +36 -18
  440. package/esm/ui/CascadingMenuHelpDialog.d.ts +2 -2
  441. package/esm/ui/CascadingMenuHelpDialog.js +4 -5
  442. package/esm/ui/CascadingMenuHelpIconButton.d.ts +2 -1
  443. package/esm/ui/CascadingMenuHelpIconButton.js +18 -9
  444. package/esm/ui/ColorPicker.d.ts +6 -9
  445. package/esm/ui/ColorPicker.js +36 -39
  446. package/esm/ui/ConfirmDialog.d.ts +2 -9
  447. package/esm/ui/ConfirmDialog.js +6 -9
  448. package/esm/ui/ContextMenu.d.ts +50 -0
  449. package/esm/ui/ContextMenu.js +55 -0
  450. package/esm/ui/CopyToClipboardButton.d.ts +10 -0
  451. package/esm/ui/CopyToClipboardButton.js +14 -0
  452. package/esm/ui/Crosshairs.d.ts +10 -0
  453. package/esm/ui/Crosshairs.js +15 -0
  454. package/esm/ui/DOMPurifySanitizedHTML.d.ts +1 -1
  455. package/esm/ui/DOMPurifySanitizedHTML.js +5 -5
  456. package/esm/ui/DataGridFlexContainer.d.ts +9 -2
  457. package/esm/ui/DataGridFlexContainer.js +4 -3
  458. package/esm/ui/Dialog.d.ts +5 -2
  459. package/esm/ui/Dialog.js +35 -27
  460. package/esm/ui/DraggableDialog.d.ts +3 -3
  461. package/esm/ui/DraggableDialog.js +50 -12
  462. package/esm/ui/DropDownMenu.d.ts +4 -2
  463. package/esm/ui/DropDownMenu.js +6 -5
  464. package/esm/ui/EditableTypography.d.ts +3 -1
  465. package/esm/ui/EditableTypography.js +34 -26
  466. package/esm/ui/ErrorActions.d.ts +24 -0
  467. package/esm/ui/ErrorActions.js +20 -0
  468. package/esm/ui/ErrorBanner.d.ts +7 -0
  469. package/esm/ui/ErrorBanner.js +35 -0
  470. package/esm/ui/ErrorBar.d.ts +6 -0
  471. package/esm/ui/ErrorBar.js +35 -0
  472. package/esm/ui/ErrorBoundary.d.ts +29 -5
  473. package/esm/ui/ErrorBoundary.js +32 -2
  474. package/esm/ui/ErrorMessage.d.ts +2 -4
  475. package/esm/ui/ErrorMessage.js +17 -52
  476. package/esm/ui/ErrorMessageStackTraceContents.d.ts +1 -1
  477. package/esm/ui/ErrorMessageStackTraceContents.js +5 -4
  478. package/esm/ui/ErrorMessageStackTraceDialog.d.ts +1 -1
  479. package/esm/ui/ErrorMessageStackTraceDialog.js +51 -96
  480. package/esm/ui/ErrorOverlay.d.ts +8 -0
  481. package/esm/ui/ErrorOverlay.js +5 -0
  482. package/esm/ui/ExportSvgDialog.d.ts +7 -0
  483. package/esm/ui/ExportSvgDialog.js +9 -0
  484. package/esm/ui/ExternalLink.d.ts +1 -1
  485. package/esm/ui/FactoryResetDialog.d.ts +1 -1
  486. package/esm/ui/FactoryResetDialog.js +6 -15
  487. package/esm/ui/FatalErrorDialog.d.ts +3 -2
  488. package/esm/ui/FatalErrorDialog.js +6 -5
  489. package/esm/ui/FileDropZone.d.ts +25 -0
  490. package/esm/ui/FileDropZone.js +129 -0
  491. package/esm/ui/FileSelector/FileSelector.d.ts +1 -1
  492. package/esm/ui/FileSelector/FileSelector.js +59 -30
  493. package/esm/ui/FileSelector/LocalFileChooser.d.ts +7 -2
  494. package/esm/ui/FileSelector/LocalFileChooser.js +61 -47
  495. package/esm/ui/FileSelector/LocationInput.d.ts +1 -1
  496. package/esm/ui/FileSelector/LocationInput.js +8 -12
  497. package/esm/ui/FileSelector/SourceTypeSelector.d.ts +5 -5
  498. package/esm/ui/FileSelector/SourceTypeSelector.js +9 -7
  499. package/esm/ui/FileSelector/UrlChooser.d.ts +1 -1
  500. package/esm/ui/FileSelector/UrlChooser.js +26 -2
  501. package/esm/ui/FileSelector/emptySourceType.d.ts +2 -0
  502. package/esm/ui/FileSelector/emptySourceType.js +14 -0
  503. package/esm/ui/FileSelector/useInternetAccounts.d.ts +436 -64
  504. package/esm/ui/FileSelector/useInternetAccounts.js +13 -6
  505. package/esm/ui/FileSelector/util.d.ts +58 -3
  506. package/esm/ui/FileSelector/util.js +128 -11
  507. package/esm/ui/GpuFallbackButton.d.ts +12 -0
  508. package/esm/ui/GpuFallbackButton.js +20 -0
  509. package/esm/ui/HoverMenu.d.ts +11 -3
  510. package/esm/ui/HoverMenu.js +34 -9
  511. package/esm/ui/HoverTooltip.d.ts +27 -0
  512. package/esm/ui/HoverTooltip.js +24 -0
  513. package/esm/ui/Icons.d.ts +6 -4
  514. package/esm/ui/Icons.js +9 -0
  515. package/esm/ui/InfoDialog.d.ts +7 -0
  516. package/esm/ui/InfoDialog.js +16 -0
  517. package/esm/ui/InlineMenuControls.d.ts +6 -0
  518. package/esm/ui/InlineMenuControls.js +17 -0
  519. package/esm/ui/JexlFilterDialog.d.ts +26 -0
  520. package/esm/ui/JexlFilterDialog.js +167 -0
  521. package/esm/ui/JexlFilterRowEditors.d.ts +15 -0
  522. package/esm/ui/JexlFilterRowEditors.js +90 -0
  523. package/esm/ui/LabeledCheckbox.d.ts +9 -0
  524. package/esm/ui/LabeledCheckbox.js +7 -0
  525. package/esm/ui/LazyBaseTooltip.d.ts +4 -0
  526. package/esm/ui/LazyBaseTooltip.js +9 -0
  527. package/esm/ui/LegendSwatchGlyph.d.ts +7 -0
  528. package/esm/ui/LegendSwatchGlyph.js +30 -0
  529. package/esm/ui/LoadingDots.d.ts +1 -0
  530. package/esm/ui/LoadingDots.js +30 -0
  531. package/esm/ui/LoadingEllipses.d.ts +17 -1
  532. package/esm/ui/LoadingEllipses.js +20 -29
  533. package/esm/ui/LoadingOverlay.d.ts +23 -0
  534. package/esm/ui/LoadingOverlay.js +139 -0
  535. package/esm/ui/LoadingProgress.d.ts +16 -0
  536. package/esm/ui/LoadingProgress.js +16 -0
  537. package/esm/ui/Logo.d.ts +2 -2
  538. package/esm/ui/Logo.js +23 -24
  539. package/esm/ui/Menu.js +1 -1
  540. package/esm/ui/MenuItemChevron.d.ts +3 -0
  541. package/esm/ui/MenuItemChevron.js +19 -0
  542. package/esm/ui/MenuItemEndDecoration.d.ts +4 -0
  543. package/esm/ui/MenuItemEndDecoration.js +28 -0
  544. package/esm/ui/MenuItemTrailing.d.ts +12 -0
  545. package/esm/ui/MenuItemTrailing.js +42 -0
  546. package/esm/ui/MenuTypes.d.ts +95 -5
  547. package/esm/ui/MenuTypes.js +16 -1
  548. package/esm/ui/MonospaceTextField.d.ts +10 -0
  549. package/esm/ui/MonospaceTextField.js +40 -0
  550. package/esm/ui/NumberTextField.d.ts +31 -0
  551. package/esm/ui/NumberTextField.js +33 -0
  552. package/esm/ui/PaletteContext.d.ts +90 -0
  553. package/esm/ui/PaletteContext.js +142 -0
  554. package/esm/ui/PluggableComponent.d.ts +10 -0
  555. package/esm/ui/PluggableComponent.js +19 -0
  556. package/esm/ui/PluggableComponents.d.ts +29 -0
  557. package/esm/ui/PluggableComponents.js +28 -0
  558. package/esm/ui/PluggableElements.d.ts +23 -0
  559. package/esm/ui/PluggableElements.js +24 -0
  560. package/esm/ui/PluginStoreCard.d.ts +17 -0
  561. package/esm/ui/PluginStoreCard.js +45 -0
  562. package/esm/ui/PopoverPicker.d.ts +6 -0
  563. package/esm/ui/PopoverPicker.js +25 -0
  564. package/esm/ui/PrerenderedCanvas.d.ts +1 -1
  565. package/esm/ui/PrerenderedCanvas.js +5 -4
  566. package/esm/ui/ProgressChip.d.ts +37 -0
  567. package/esm/ui/ProgressChip.js +66 -0
  568. package/esm/ui/RedErrorMessageBox.d.ts +1 -1
  569. package/esm/ui/RedErrorMessageBox.js +9 -3
  570. package/esm/ui/RefNameAutocomplete/EndAdornment.d.ts +5 -0
  571. package/esm/ui/RefNameAutocomplete/EndAdornment.js +31 -0
  572. package/esm/ui/RefNameAutocomplete/HelpDialog.d.ts +3 -0
  573. package/esm/ui/RefNameAutocomplete/HelpDialog.js +7 -0
  574. package/esm/ui/RefNameAutocomplete/SearchOption.d.ts +13 -0
  575. package/esm/ui/RefNameAutocomplete/SearchOption.js +45 -0
  576. package/esm/ui/RefNameAutocomplete/index.d.ts +21 -0
  577. package/esm/ui/RefNameAutocomplete/index.js +84 -0
  578. package/esm/ui/RefNameAutocomplete/util.d.ts +62 -0
  579. package/esm/ui/RefNameAutocomplete/util.js +209 -0
  580. package/esm/ui/ReplaceCurrentViewButton.d.ts +19 -0
  581. package/esm/ui/ReplaceCurrentViewButton.js +22 -0
  582. package/esm/ui/ResizeHandle.d.ts +15 -7
  583. package/esm/ui/ResizeHandle.js +73 -53
  584. package/esm/ui/ReturnToImportFormDialog.d.ts +1 -1
  585. package/esm/ui/ReturnToImportFormDialog.js +7 -9
  586. package/esm/ui/SanitizedHTML.d.ts +6 -1
  587. package/esm/ui/SanitizedHTML.js +7 -47
  588. package/esm/ui/ScrollChrome.d.ts +13 -0
  589. package/esm/ui/ScrollChrome.js +11 -0
  590. package/esm/ui/ScrollEdgeShadow.d.ts +41 -0
  591. package/esm/ui/ScrollEdgeShadow.js +77 -0
  592. package/esm/ui/ScrollZoomToggle.d.ts +15 -0
  593. package/esm/ui/ScrollZoomToggle.js +75 -0
  594. package/esm/ui/SequenceAdapterInputs.d.ts +9 -0
  595. package/esm/ui/SequenceAdapterInputs.js +30 -0
  596. package/esm/ui/SessionJsonPanel.d.ts +3 -0
  597. package/esm/ui/SessionJsonPanel.js +14 -0
  598. package/esm/ui/SettingsChangesTable.d.ts +15 -0
  599. package/esm/ui/SettingsChangesTable.js +87 -0
  600. package/esm/ui/ShareLinkField.d.ts +4 -0
  601. package/esm/ui/ShareLinkField.js +15 -0
  602. package/esm/ui/SingleSlider.d.ts +8 -0
  603. package/esm/ui/SingleSlider.js +11 -0
  604. package/esm/ui/SizeSliderRow.d.ts +14 -0
  605. package/esm/ui/SizeSliderRow.js +48 -0
  606. package/esm/ui/SliderTooltip.d.ts +2 -0
  607. package/esm/ui/SliderTooltip.js +17 -0
  608. package/esm/ui/Snackbar.d.ts +4 -2
  609. package/esm/ui/Snackbar.js +11 -8
  610. package/esm/ui/SnackbarContents.d.ts +1 -1
  611. package/esm/ui/SnackbarContents.js +21 -3
  612. package/esm/ui/SnackbarModel.d.ts +40 -0
  613. package/esm/ui/SnackbarModel.js +96 -52
  614. package/esm/ui/StackTraceButton.d.ts +5 -0
  615. package/esm/ui/StackTraceButton.js +16 -0
  616. package/esm/ui/StatusProgressBar.d.ts +37 -0
  617. package/esm/ui/StatusProgressBar.js +76 -0
  618. package/esm/ui/SubmitDialog.d.ts +6 -0
  619. package/esm/ui/SubmitDialog.js +9 -0
  620. package/esm/ui/SubmitForm.d.ts +23 -0
  621. package/esm/ui/SubmitForm.js +23 -0
  622. package/esm/ui/SvgColorLegend.d.ts +18 -0
  623. package/esm/ui/SvgColorLegend.js +106 -0
  624. package/esm/ui/TagTextField.d.ts +40 -0
  625. package/esm/ui/TagTextField.js +32 -0
  626. package/esm/ui/VerticalScrollbar.d.ts +24 -0
  627. package/esm/ui/VerticalScrollbar.js +104 -0
  628. package/esm/ui/ViewLoadingScreen.d.ts +25 -0
  629. package/esm/ui/ViewLoadingScreen.js +52 -0
  630. package/esm/ui/addExtensionElement.d.ts +18 -0
  631. package/esm/ui/addExtensionElement.js +23 -0
  632. package/esm/ui/buildExtraTrackMenuItems.d.ts +22 -0
  633. package/esm/ui/buildExtraTrackMenuItems.js +14 -0
  634. package/esm/ui/colorScale.d.ts +92 -0
  635. package/esm/ui/colorScale.js +72 -0
  636. package/esm/ui/colorSwatchStyle.d.ts +9 -0
  637. package/esm/ui/colorSwatchStyle.js +11 -0
  638. package/esm/ui/colors.d.ts +125 -8
  639. package/esm/ui/colors.js +364 -1
  640. package/esm/ui/extensionSelectors.d.ts +38 -0
  641. package/esm/ui/extensionSelectors.js +49 -0
  642. package/esm/ui/filterMenuItems.d.ts +112 -0
  643. package/esm/ui/filterMenuItems.js +86 -0
  644. package/esm/ui/formatErrorStack.d.ts +1 -0
  645. package/esm/ui/formatErrorStack.js +56 -0
  646. package/esm/ui/gpuFallback.d.ts +33 -0
  647. package/esm/ui/gpuFallback.js +39 -0
  648. package/esm/ui/hoverBoxStyle.d.ts +23 -0
  649. package/esm/ui/hoverBoxStyle.js +28 -0
  650. package/esm/ui/index.d.ts +77 -5
  651. package/esm/ui/index.js +83 -20
  652. package/esm/ui/inlineMenuRowWidth.d.ts +1 -0
  653. package/esm/ui/inlineMenuRowWidth.js +8 -0
  654. package/esm/ui/launchTargetsMenuItem.d.ts +18 -0
  655. package/esm/ui/launchTargetsMenuItem.js +24 -0
  656. package/esm/ui/launchViewMenu.d.ts +4 -0
  657. package/esm/ui/launchViewMenu.js +46 -0
  658. package/esm/ui/legendMenuItem.d.ts +16 -0
  659. package/esm/ui/legendMenuItem.js +17 -0
  660. package/esm/ui/legendSpec.d.ts +69 -0
  661. package/esm/ui/legendSpec.js +69 -0
  662. package/esm/ui/loadingDotKeyframes.d.ts +18 -0
  663. package/esm/ui/loadingDotKeyframes.js +17 -0
  664. package/esm/ui/makeSizeMenu.d.ts +24 -0
  665. package/esm/ui/makeSizeMenu.js +58 -0
  666. package/esm/ui/mapStackTrace.d.ts +8 -0
  667. package/esm/ui/mapStackTrace.js +108 -0
  668. package/esm/ui/measureLegendText.d.ts +1 -0
  669. package/esm/ui/measureLegendText.js +8 -0
  670. package/esm/ui/menuItemAdornment.d.ts +22 -0
  671. package/esm/ui/menuItemAdornment.js +28 -0
  672. package/esm/ui/menuItems.d.ts +23 -0
  673. package/esm/ui/menuItems.js +21 -0
  674. package/esm/ui/menuLabels.d.ts +41 -0
  675. package/esm/ui/menuLabels.js +43 -0
  676. package/esm/ui/multiTrackMenuItems.d.ts +25 -0
  677. package/esm/ui/multiTrackMenuItems.js +15 -0
  678. package/esm/ui/palette.d.ts +561 -0
  679. package/esm/ui/palette.js +785 -0
  680. package/esm/ui/parseError.d.ts +4 -0
  681. package/esm/ui/parseError.js +18 -0
  682. package/esm/ui/persistentScrollbarStyle.d.ts +49 -0
  683. package/esm/ui/persistentScrollbarStyle.js +53 -0
  684. package/esm/ui/radioSubMenu.d.ts +33 -0
  685. package/esm/ui/radioSubMenu.js +32 -0
  686. package/esm/ui/react-colorful.js +5 -1
  687. package/esm/ui/replaceViewAction.d.ts +31 -0
  688. package/esm/ui/replaceViewAction.js +39 -0
  689. package/esm/ui/rewriteExternalAnchors.d.ts +1 -0
  690. package/esm/ui/rewriteExternalAnchors.js +8 -0
  691. package/esm/ui/scrollZoomLabels.d.ts +17 -0
  692. package/esm/ui/scrollZoomLabels.js +22 -0
  693. package/esm/ui/showSubMenu.d.ts +19 -0
  694. package/esm/ui/showSubMenu.js +30 -0
  695. package/esm/ui/sliderScale.d.ts +6 -0
  696. package/esm/ui/sliderScale.js +30 -0
  697. package/esm/ui/statusProgressKeyframes.d.ts +6 -0
  698. package/esm/ui/statusProgressKeyframes.js +14 -0
  699. package/esm/ui/stripStackTraceMessage.d.ts +1 -0
  700. package/esm/ui/stripStackTraceMessage.js +9 -0
  701. package/esm/ui/styleTheme.d.ts +158 -0
  702. package/esm/ui/styleTheme.js +115 -0
  703. package/esm/ui/submenuAim.d.ts +30 -0
  704. package/esm/ui/submenuAim.js +37 -0
  705. package/esm/ui/theme.d.ts +268 -30
  706. package/esm/ui/theme.js +250 -350
  707. package/esm/ui/toggleMenuItems.d.ts +42 -0
  708. package/esm/ui/toggleMenuItems.js +61 -0
  709. package/esm/ui/useAssemblySelection.d.ts +153 -0
  710. package/esm/ui/useAssemblySelection.js +54 -0
  711. package/esm/ui/useCoalescedPointer.d.ts +36 -0
  712. package/esm/ui/useCoalescedPointer.js +60 -0
  713. package/esm/ui/useCopyToClipboard.d.ts +15 -0
  714. package/esm/ui/useCopyToClipboard.js +41 -0
  715. package/esm/ui/useExportSvgPreference.d.ts +1 -0
  716. package/esm/ui/useExportSvgPreference.js +4 -0
  717. package/esm/ui/useMouseTracking.d.ts +71 -0
  718. package/esm/ui/useMouseTracking.js +179 -0
  719. package/esm/ui/useRecentLocations.d.ts +28 -0
  720. package/esm/ui/useRecentLocations.js +31 -0
  721. package/esm/ui/viewHeaderHeight.d.ts +1 -0
  722. package/esm/ui/viewHeaderHeight.js +1 -0
  723. package/esm/ui/wrapComponent.d.ts +47 -0
  724. package/esm/ui/wrapComponent.js +58 -0
  725. package/esm/ui/zIndexes.d.ts +28 -0
  726. package/esm/ui/zIndexes.js +38 -0
  727. package/esm/util/Base1DUtils.d.ts +207 -17
  728. package/esm/util/Base1DUtils.js +316 -173
  729. package/esm/util/Base1DViewModel.d.ts +99 -21
  730. package/esm/util/Base1DViewModel.js +151 -41
  731. package/esm/util/FileSaver/index.d.ts +1 -0
  732. package/esm/util/FileSaver/index.js +27 -0
  733. package/esm/util/IntervalTree.d.ts +18 -39
  734. package/esm/util/IntervalTree.js +63 -244
  735. package/esm/util/SvgCanvas.d.ts +83 -0
  736. package/esm/util/SvgCanvas.js +520 -0
  737. package/esm/util/TimeTraveller.d.ts +12 -0
  738. package/esm/util/TimeTraveller.js +130 -27
  739. package/esm/util/aborting.d.ts +56 -4
  740. package/esm/util/aborting.js +112 -25
  741. package/esm/util/adapterMetadata.d.ts +20 -0
  742. package/esm/util/adapterMetadata.js +40 -0
  743. package/esm/util/addAndShowTrack.d.ts +19 -0
  744. package/esm/util/addAndShowTrack.js +27 -0
  745. package/esm/util/addRelativeUris.d.ts +29 -0
  746. package/esm/util/addRelativeUris.js +78 -0
  747. package/esm/util/addTrackComponent.d.ts +72 -0
  748. package/esm/util/addTrackComponent.js +53 -0
  749. package/esm/util/addTrackFromWidget.d.ts +91 -0
  750. package/esm/util/addTrackFromWidget.js +91 -0
  751. package/esm/util/aggregateFieldName.d.ts +10 -0
  752. package/esm/util/aggregateFieldName.js +8 -0
  753. package/esm/util/analytics.d.ts +32 -3
  754. package/esm/util/analytics.js +135 -49
  755. package/esm/util/animationAllowed.d.ts +26 -0
  756. package/esm/util/animationAllowed.js +35 -0
  757. package/esm/util/applyRowResizeWheel.d.ts +15 -0
  758. package/esm/util/applyRowResizeWheel.js +23 -0
  759. package/esm/util/assemblyConfigUtils.d.ts +144 -0
  760. package/esm/util/assemblyConfigUtils.js +498 -0
  761. package/esm/util/bandHeight.d.ts +63 -0
  762. package/esm/util/bandHeight.js +85 -0
  763. package/esm/util/bandLayout.d.ts +51 -0
  764. package/esm/util/bandLayout.js +36 -0
  765. package/esm/util/bezierConnector.d.ts +15 -0
  766. package/esm/util/bezierConnector.js +101 -0
  767. package/esm/util/bgzfWorkerPool.d.ts +24 -0
  768. package/esm/util/bgzfWorkerPool.js +27 -0
  769. package/esm/util/binnedAggregate.d.ts +17 -0
  770. package/esm/util/binnedAggregate.js +275 -0
  771. package/esm/util/blockTypes.d.ts +64 -45
  772. package/esm/util/blockTypes.js +67 -74
  773. package/esm/util/bpUtils.d.ts +81 -0
  774. package/esm/util/bpUtils.js +103 -0
  775. package/esm/util/cacheBudgets.d.ts +55 -0
  776. package/esm/util/cacheBudgets.js +55 -0
  777. package/esm/util/cachedSetup.d.ts +51 -0
  778. package/esm/util/cachedSetup.js +87 -0
  779. package/esm/util/calculateDynamicBlocks.d.ts +5 -0
  780. package/esm/util/calculateDynamicBlocks.js +85 -82
  781. package/esm/util/calculateStaticBlocks.d.ts +2 -3
  782. package/esm/util/calculateStaticBlocks.js +48 -71
  783. package/esm/util/categoricalField.d.ts +56 -0
  784. package/esm/util/categoricalField.js +73 -0
  785. package/esm/util/chooseGridPitch.d.ts +9 -0
  786. package/esm/util/chooseGridPitch.js +31 -0
  787. package/esm/util/clampToContig.d.ts +43 -0
  788. package/esm/util/clampToContig.js +47 -0
  789. package/esm/util/cmpStr.d.ts +1 -0
  790. package/esm/util/cmpStr.js +7 -0
  791. package/esm/util/coarseStripHTML.js +2 -15
  792. package/esm/util/color/cssColorsLevel4.d.ts +1 -0
  793. package/esm/util/color/cssColorsLevel4.js +7 -2
  794. package/esm/util/color/index.d.ts +84 -3
  795. package/esm/util/color/index.js +197 -25
  796. package/esm/util/color-bits/bit.d.ts +4 -0
  797. package/esm/util/color-bits/bit.js +37 -0
  798. package/esm/util/color-bits/convert.d.ts +23 -0
  799. package/esm/util/color-bits/convert.js +294 -0
  800. package/esm/util/color-bits/core.d.ts +34 -0
  801. package/esm/util/color-bits/core.js +67 -0
  802. package/esm/util/color-bits/format.d.ts +24 -0
  803. package/esm/util/color-bits/format.js +82 -0
  804. package/esm/util/color-bits/functions.d.ts +33 -0
  805. package/esm/util/color-bits/functions.js +70 -0
  806. package/esm/util/color-bits/index.d.ts +5 -0
  807. package/esm/util/color-bits/index.js +4 -0
  808. package/esm/util/color-bits/parse.d.ts +17 -0
  809. package/esm/util/color-bits/parse.js +382 -0
  810. package/esm/util/colorBits.d.ts +39 -0
  811. package/esm/util/colorBits.js +155 -0
  812. package/esm/util/colorRamp.d.ts +81 -0
  813. package/esm/util/colorRamp.js +244 -0
  814. package/esm/util/colorScale.d.ts +156 -0
  815. package/esm/util/colorScale.js +243 -0
  816. package/esm/util/colorSchemes.d.ts +21 -0
  817. package/esm/util/colorSchemes.js +30 -0
  818. package/esm/util/colord.d.ts +8 -0
  819. package/esm/util/colord.js +43 -191
  820. package/esm/util/convertCodingSequenceToPeptides.d.ts +17 -3
  821. package/esm/util/convertCodingSequenceToPeptides.js +51 -4
  822. package/esm/util/copyText.d.ts +18 -0
  823. package/esm/util/copyText.js +30 -0
  824. package/esm/util/copyToClipboard.d.ts +4 -0
  825. package/esm/util/copyToClipboard.js +58 -0
  826. package/esm/util/createAbortRotation.d.ts +115 -0
  827. package/esm/util/createAbortRotation.js +116 -0
  828. package/esm/util/createSvgRasterCanvas.d.ts +17 -0
  829. package/esm/util/createSvgRasterCanvas.js +22 -0
  830. package/esm/util/crypto.d.ts +24 -0
  831. package/esm/util/crypto.js +85 -2
  832. package/esm/util/cssColorParse.d.ts +15 -0
  833. package/esm/util/cssColorParse.js +53 -0
  834. package/esm/util/dataGridUtils.d.ts +9 -0
  835. package/esm/util/dataGridUtils.js +36 -0
  836. package/esm/util/dedupe.js +1 -0
  837. package/esm/util/deepEqual.d.ts +8 -0
  838. package/esm/util/deepEqual.js +22 -0
  839. package/esm/util/deepMerge.d.ts +20 -0
  840. package/esm/util/deepMerge.js +44 -0
  841. package/esm/util/diagonalizeRegions.d.ts +22 -0
  842. package/esm/util/diagonalizeRegions.js +187 -0
  843. package/esm/util/environment.d.ts +4 -0
  844. package/esm/util/environment.js +43 -0
  845. package/esm/util/eventPoint.d.ts +32 -0
  846. package/esm/util/eventPoint.js +28 -0
  847. package/esm/util/expandLooseSearchIndex.d.ts +19 -0
  848. package/esm/util/expandLooseSearchIndex.js +29 -0
  849. package/esm/util/featureTable.d.ts +224 -0
  850. package/esm/util/featureTable.js +366 -0
  851. package/esm/util/featureTransforms.d.ts +80 -0
  852. package/esm/util/featureTransforms.js +1579 -0
  853. package/esm/util/featureTypes.d.ts +24 -0
  854. package/esm/util/featureTypes.js +35 -0
  855. package/esm/util/fetchAndMaybeUnzip.d.ts +6 -0
  856. package/esm/util/fetchAndMaybeUnzip.js +71 -0
  857. package/esm/util/fetchContext.d.ts +81 -0
  858. package/esm/util/fetchContext.js +59 -0
  859. package/esm/util/fetchHub.d.ts +17 -0
  860. package/esm/util/fetchHub.js +31 -0
  861. package/esm/util/fetchJson.d.ts +1 -0
  862. package/esm/util/fetchJson.js +7 -0
  863. package/esm/util/fetchPhases.d.ts +77 -0
  864. package/esm/util/fetchPhases.js +1 -0
  865. package/esm/util/fetchSeq.d.ts +4 -1
  866. package/esm/util/fetchSeq.js +18 -6
  867. package/esm/util/fieldReader.d.ts +17 -0
  868. package/esm/util/fieldReader.js +62 -0
  869. package/esm/util/fileHandleStore.d.ts +19 -2
  870. package/esm/util/fileHandleStore.js +95 -35
  871. package/esm/util/flatbush/index.d.ts +27 -6
  872. package/esm/util/flatbush/index.js +194 -218
  873. package/esm/util/formatBytes.d.ts +9 -0
  874. package/esm/util/formatBytes.js +18 -0
  875. package/esm/util/formatFastaStrings.d.ts +13 -0
  876. package/esm/util/formatFastaStrings.js +13 -0
  877. package/esm/util/formatGuessers.d.ts +30 -0
  878. package/esm/util/formatGuessers.js +69 -0
  879. package/esm/util/formatRelativeTime.d.ts +1 -0
  880. package/esm/util/formatRelativeTime.js +25 -0
  881. package/esm/util/frameCoalescer.d.ts +30 -0
  882. package/esm/util/frameCoalescer.js +22 -0
  883. package/esm/util/freezeDeep.d.ts +26 -0
  884. package/esm/util/freezeDeep.js +39 -0
  885. package/esm/util/geneticCodes.d.ts +56 -0
  886. package/esm/util/geneticCodes.js +371 -0
  887. package/esm/util/getFileName.d.ts +11 -0
  888. package/esm/util/getFileName.js +34 -0
  889. package/esm/util/getLocationUri.d.ts +49 -0
  890. package/esm/util/getLocationUri.js +63 -0
  891. package/esm/util/getRelativeX.d.ts +4 -0
  892. package/esm/util/getRelativeX.js +7 -0
  893. package/esm/util/getStr.d.ts +6 -0
  894. package/esm/util/getStr.js +15 -0
  895. package/esm/util/groupKeys.d.ts +77 -0
  896. package/esm/util/groupKeys.js +155 -0
  897. package/esm/util/highlights.d.ts +25 -0
  898. package/esm/util/highlights.js +87 -0
  899. package/esm/util/hooks.d.ts +189 -0
  900. package/esm/util/hooks.js +485 -0
  901. package/esm/util/htmlText.d.ts +13 -0
  902. package/esm/util/htmlText.js +66 -0
  903. package/esm/util/idMaker.d.ts +1 -1
  904. package/esm/util/idMaker.js +31 -18
  905. package/esm/util/index.d.ts +82 -268
  906. package/esm/util/index.js +137 -853
  907. package/esm/util/indexCandidates.d.ts +20 -0
  908. package/esm/util/indexCandidates.js +43 -0
  909. package/esm/util/installClearHoverOnSurfaceMove.d.ts +40 -0
  910. package/esm/util/installClearHoverOnSurfaceMove.js +41 -0
  911. package/esm/util/installFetch.d.ts +234 -0
  912. package/esm/util/installFetch.js +205 -0
  913. package/esm/util/installInitAutorun.d.ts +63 -0
  914. package/esm/util/installInitAutorun.js +107 -0
  915. package/esm/util/installPrerequisiteFetch.d.ts +115 -0
  916. package/esm/util/installPrerequisiteFetch.js +111 -0
  917. package/esm/util/intervals.d.ts +20 -0
  918. package/esm/util/intervals.js +37 -0
  919. package/esm/util/io/RemoteFileWithRangeCache.d.ts +10 -11
  920. package/esm/util/io/RemoteFileWithRangeCache.js +10 -148
  921. package/esm/util/io/index.d.ts +39 -2
  922. package/esm/util/io/index.js +120 -12
  923. package/esm/util/isDataCurrent.d.ts +9 -0
  924. package/esm/util/isDataCurrent.js +12 -0
  925. package/esm/util/isTextEntryFocused.d.ts +7 -0
  926. package/esm/util/isTextEntryFocused.js +16 -0
  927. package/esm/util/isWebWorker.js +1 -2
  928. package/esm/util/iupac.d.ts +4 -0
  929. package/esm/util/iupac.js +59 -0
  930. package/esm/util/jexl.js +146 -19
  931. package/esm/util/jexlFilterRows.d.ts +89 -0
  932. package/esm/util/jexlFilterRows.js +252 -0
  933. package/esm/util/jexlFilters.d.ts +68 -0
  934. package/esm/util/jexlFilters.js +61 -0
  935. package/esm/util/jexlStrings.d.ts +21 -1
  936. package/esm/util/jexlStrings.js +20 -14
  937. package/esm/util/layouts/GranularRectLayout.d.ts +20 -25
  938. package/esm/util/layouts/GranularRectLayout.js +116 -356
  939. package/esm/util/layouts/index.d.ts +1 -7
  940. package/esm/util/layouts/index.js +2 -6
  941. package/esm/util/layouts/intervalUtils.d.ts +12 -1
  942. package/esm/util/layouts/intervalUtils.js +13 -31
  943. package/esm/util/layouts/placeRect.d.ts +50 -0
  944. package/esm/util/layouts/placeRect.js +97 -0
  945. package/esm/util/lazyAfterAttach.d.ts +13 -0
  946. package/esm/util/lazyAfterAttach.js +31 -0
  947. package/esm/util/lazyWithPreload.d.ts +19 -0
  948. package/esm/util/lazyWithPreload.js +27 -0
  949. package/esm/util/leadingEdgeAutorun.d.ts +40 -0
  950. package/esm/util/leadingEdgeAutorun.js +51 -0
  951. package/esm/util/legendCandidates.d.ts +72 -0
  952. package/esm/util/legendCandidates.js +138 -0
  953. package/esm/util/librpc.d.ts +5 -2
  954. package/esm/util/librpc.js +6 -1
  955. package/esm/util/linkify.js +2 -0
  956. package/esm/util/locString.d.ts +72 -0
  957. package/esm/util/locString.js +178 -7
  958. package/esm/util/locStringsToRegions.d.ts +10 -0
  959. package/esm/util/locStringsToRegions.js +35 -0
  960. package/esm/util/localStorage.d.ts +36 -0
  961. package/esm/util/localStorage.js +137 -0
  962. package/esm/util/makeAssembly.d.ts +54 -0
  963. package/esm/util/makeAssembly.js +52 -0
  964. package/esm/util/makeTrackId.d.ts +14 -0
  965. package/esm/util/makeTrackId.js +14 -0
  966. package/esm/util/markEncoding.d.ts +150 -0
  967. package/esm/util/markEncoding.js +845 -0
  968. package/esm/util/markEncodingTypes.d.ts +588 -0
  969. package/esm/util/markEncodingTypes.js +8 -0
  970. package/esm/util/matchTrackId.d.ts +11 -0
  971. package/esm/util/matchTrackId.js +14 -0
  972. package/esm/util/measureText.d.ts +24 -0
  973. package/esm/util/measureText.js +51 -0
  974. package/esm/util/mst-reflection.d.ts +3 -11
  975. package/esm/util/mst-reflection.js +3 -52
  976. package/esm/util/mstUtils.d.ts +97 -0
  977. package/esm/util/mstUtils.js +137 -0
  978. package/esm/util/nanoid.d.ts +0 -4
  979. package/esm/util/nanoid.js +10 -20
  980. package/esm/util/numericUtils.d.ts +27 -0
  981. package/esm/util/numericUtils.js +143 -0
  982. package/esm/util/numericValue.d.ts +14 -0
  983. package/esm/util/numericValue.js +34 -0
  984. package/esm/util/objectUtils.d.ts +2 -0
  985. package/esm/util/objectUtils.js +9 -0
  986. package/esm/util/offscreenCanvasPonyfill.d.ts +5 -4
  987. package/esm/util/offscreenCanvasPonyfill.js +5 -47
  988. package/esm/util/openFeatureWidget.d.ts +38 -0
  989. package/esm/util/openFeatureWidget.js +64 -0
  990. package/esm/util/openViews.d.ts +17 -0
  991. package/esm/util/openViews.js +22 -0
  992. package/esm/util/paintLayer.d.ts +32 -0
  993. package/esm/util/paintLayer.js +33 -0
  994. package/esm/util/parentWalk.d.ts +32 -0
  995. package/esm/util/parentWalk.js +84 -0
  996. package/esm/util/parseLineByLine.d.ts +44 -2
  997. package/esm/util/parseLineByLine.js +150 -15
  998. package/esm/util/parseMotifList.d.ts +17 -0
  999. package/esm/util/parseMotifList.js +69 -0
  1000. package/esm/util/pluginStore.d.ts +111 -0
  1001. package/esm/util/pluginStore.js +254 -0
  1002. package/esm/util/pointerPresence.d.ts +5 -0
  1003. package/esm/util/pointerPresence.js +21 -0
  1004. package/esm/util/preloadComponent.d.ts +5 -0
  1005. package/esm/util/preloadComponent.js +11 -0
  1006. package/esm/util/progress.d.ts +459 -0
  1007. package/esm/util/progress.js +821 -0
  1008. package/esm/util/quantileExtent.d.ts +49 -0
  1009. package/esm/util/quantileExtent.js +162 -0
  1010. package/esm/util/range.d.ts +46 -1
  1011. package/esm/util/range.js +68 -2
  1012. package/esm/util/renameRegions.d.ts +41 -0
  1013. package/esm/util/renameRegions.js +143 -0
  1014. package/esm/util/renderToStaticMarkup.d.ts +2 -0
  1015. package/esm/util/renderToStaticMarkup.js +60 -0
  1016. package/esm/util/reorder.d.ts +35 -0
  1017. package/esm/util/reorder.js +83 -0
  1018. package/esm/util/resolveRowHeight.d.ts +27 -0
  1019. package/esm/util/resolveRowHeight.js +30 -0
  1020. package/esm/util/revlist.d.ts +13 -0
  1021. package/esm/util/revlist.js +14 -0
  1022. package/esm/util/rowStackGeometry.d.ts +66 -0
  1023. package/esm/util/rowStackGeometry.js +70 -0
  1024. package/esm/util/rpc.d.ts +16 -1
  1025. package/esm/util/rpc.js +12 -1
  1026. package/esm/util/rxjs.d.ts +30 -2
  1027. package/esm/util/rxjs.js +85 -10
  1028. package/esm/util/sameStrings.d.ts +16 -0
  1029. package/esm/util/sameStrings.js +20 -0
  1030. package/esm/util/samplesTsv.d.ts +49 -0
  1031. package/esm/util/samplesTsv.js +86 -0
  1032. package/esm/util/scheduleDetachedDestroy.d.ts +18 -0
  1033. package/esm/util/scheduleDetachedDestroy.js +24 -0
  1034. package/esm/util/scrollLatch.d.ts +5 -0
  1035. package/esm/util/scrollLatch.js +67 -0
  1036. package/esm/util/selectEncodedFeature.d.ts +16 -0
  1037. package/esm/util/selectEncodedFeature.js +34 -0
  1038. package/esm/util/selectNamedRegions.d.ts +136 -0
  1039. package/esm/util/selectNamedRegions.js +222 -0
  1040. package/esm/util/seqUtils.d.ts +17 -0
  1041. package/esm/util/seqUtils.js +80 -0
  1042. package/esm/util/sessionServices.d.ts +29 -0
  1043. package/esm/util/sessionServices.js +46 -0
  1044. package/esm/util/sessionSharing.d.ts +40 -0
  1045. package/esm/util/sessionSharing.js +154 -0
  1046. package/esm/util/sessionStorage.d.ts +1 -0
  1047. package/esm/util/sessionStorage.js +15 -0
  1048. package/esm/util/setStackTraceLimit.d.ts +6 -0
  1049. package/esm/util/setStackTraceLimit.js +20 -0
  1050. package/esm/util/shapeNameList.d.ts +2 -0
  1051. package/esm/util/shapeNameList.js +6 -0
  1052. package/esm/util/shapeNames.d.ts +7 -0
  1053. package/esm/util/shapeNames.js +11 -0
  1054. package/esm/util/simpleFeature.d.ts +111 -4
  1055. package/esm/util/simpleFeature.js +181 -29
  1056. package/esm/util/springAnimate.d.ts +20 -0
  1057. package/esm/util/springAnimate.js +80 -0
  1058. package/esm/util/starFusion.d.ts +26 -0
  1059. package/esm/util/starFusion.js +37 -0
  1060. package/esm/util/stats.d.ts +25 -2
  1061. package/esm/util/stats.js +39 -8
  1062. package/esm/util/stepTables.d.ts +82 -0
  1063. package/esm/util/stepTables.js +243 -0
  1064. package/esm/util/stringUtils.d.ts +5 -0
  1065. package/esm/util/stringUtils.js +34 -0
  1066. package/esm/util/svAlt.d.ts +145 -0
  1067. package/esm/util/svAlt.js +364 -0
  1068. package/esm/util/svgColorProps.d.ts +18 -0
  1069. package/esm/util/svgColorProps.js +55 -0
  1070. package/esm/util/systemColorScheme.d.ts +12 -0
  1071. package/esm/util/systemColorScheme.js +27 -0
  1072. package/esm/util/tabix.d.ts +125 -0
  1073. package/esm/util/tabix.js +148 -0
  1074. package/esm/util/tags.d.ts +2 -0
  1075. package/esm/util/tags.js +5 -0
  1076. package/esm/util/temporaryAssembly.d.ts +21 -0
  1077. package/esm/util/temporaryAssembly.js +29 -0
  1078. package/esm/util/thresholdScale.d.ts +91 -0
  1079. package/esm/util/thresholdScale.js +166 -0
  1080. package/esm/util/tickLabels.d.ts +36 -0
  1081. package/esm/util/tickLabels.js +45 -0
  1082. package/esm/util/timeGate.d.ts +25 -0
  1083. package/esm/util/timeGate.js +78 -0
  1084. package/esm/util/trackConfigDelta.d.ts +84 -0
  1085. package/esm/util/trackConfigDelta.js +206 -0
  1086. package/esm/util/tracks.d.ts +431 -30
  1087. package/esm/util/tracks.js +952 -185
  1088. package/esm/util/translateTranscript.d.ts +44 -0
  1089. package/esm/util/translateTranscript.js +102 -0
  1090. package/esm/util/tss-react/cssAndCx.js +11 -66
  1091. package/esm/util/tss-react/index.d.ts +11 -2
  1092. package/esm/util/tss-react/index.js +9 -2
  1093. package/esm/util/tss-react/makeStyles.js +7 -4
  1094. package/esm/util/tss-react/mergeClasses.js +1 -0
  1095. package/esm/util/tss-react/tools/classnames.d.ts +3 -0
  1096. package/esm/util/tss-react/tools/classnames.js +3 -0
  1097. package/esm/util/tss-react/tools/getDependencyArrayRef.d.ts +18 -0
  1098. package/esm/util/tss-react/tools/getDependencyArrayRef.js +19 -0
  1099. package/esm/util/tss-react/types.d.ts +1 -1
  1100. package/esm/util/tss-react/types.js +1 -6
  1101. package/esm/util/types/ElementId.js +1 -1
  1102. package/esm/util/types/data.d.ts +73 -0
  1103. package/esm/util/types/data.js +41 -0
  1104. package/esm/util/types/index.d.ts +459 -121
  1105. package/esm/util/types/index.js +96 -64
  1106. package/esm/util/types/isAny.d.ts +11 -0
  1107. package/esm/util/types/isAny.js +1 -0
  1108. package/esm/util/types/mst.d.ts +74 -47
  1109. package/esm/util/types/mst.js +31 -22
  1110. package/esm/util/types/predicate.d.ts +9 -0
  1111. package/esm/util/types/predicate.js +1 -0
  1112. package/esm/util/types/renameIds.d.ts +1 -0
  1113. package/esm/util/types/renameIds.js +29 -0
  1114. package/esm/util/types/renderingServices.d.ts +16 -0
  1115. package/esm/util/types/renderingServices.js +1 -0
  1116. package/esm/util/types/services.d.ts +55 -0
  1117. package/esm/util/types/services.js +10 -0
  1118. package/esm/util/types/util.d.ts +8 -2
  1119. package/esm/util/unknownSnapshotKeys.d.ts +51 -0
  1120. package/esm/util/unknownSnapshotKeys.js +82 -0
  1121. package/esm/util/unzip.d.ts +1 -0
  1122. package/esm/util/unzip.js +6 -0
  1123. package/esm/util/useEventCallback.d.ts +1 -0
  1124. package/esm/util/useEventCallback.js +16 -0
  1125. package/esm/util/useFeatureSequence.d.ts +13 -7
  1126. package/esm/util/useFeatureSequence.js +55 -77
  1127. package/esm/util/useFetch.d.ts +55 -0
  1128. package/esm/util/useFetch.js +197 -0
  1129. package/esm/util/useFetchPlugins.d.ts +16 -0
  1130. package/esm/util/useFetchPlugins.js +18 -0
  1131. package/esm/util/useMeasure.d.ts +11 -1
  1132. package/esm/util/useMeasure.js +20 -6
  1133. package/esm/util/usePanZoom.d.ts +75 -0
  1134. package/esm/util/usePanZoom.js +175 -0
  1135. package/esm/util/usePanelVirtualScroll.d.ts +9 -0
  1136. package/esm/util/usePanelVirtualScroll.js +15 -0
  1137. package/esm/util/usePointerDrag.d.ts +37 -0
  1138. package/esm/util/usePointerDrag.js +61 -0
  1139. package/esm/util/useRafCommit.d.ts +4 -0
  1140. package/esm/util/useRafCommit.js +50 -0
  1141. package/esm/util/useResizeDrag.d.ts +91 -0
  1142. package/esm/util/useResizeDrag.js +105 -0
  1143. package/esm/util/useRowVirtualScroll.d.ts +9 -0
  1144. package/esm/util/useRowVirtualScroll.js +22 -0
  1145. package/esm/util/useVirtualScrollWheel.d.ts +23 -0
  1146. package/esm/util/useVirtualScrollWheel.js +74 -0
  1147. package/esm/util/viewHighlights.d.ts +3 -0
  1148. package/esm/util/viewHighlights.js +5 -0
  1149. package/esm/util/viewStatus.d.ts +90 -0
  1150. package/esm/util/viewStatus.js +54 -0
  1151. package/esm/util/virtualRange.d.ts +36 -0
  1152. package/esm/util/virtualRange.js +26 -0
  1153. package/esm/util/webStorage.d.ts +26 -0
  1154. package/esm/util/webStorage.js +92 -0
  1155. package/esm/util/wheelZoom.d.ts +65 -0
  1156. package/esm/util/wheelZoom.js +297 -0
  1157. package/esm/util/whenViewSettled.d.ts +74 -0
  1158. package/esm/util/whenViewSettled.js +77 -0
  1159. package/esm/util/withFeatureDetails.d.ts +34 -0
  1160. package/esm/util/withFeatureDetails.js +59 -0
  1161. package/esm/util/withLaunchInput.d.ts +174 -0
  1162. package/esm/util/withLaunchInput.js +274 -0
  1163. package/package.json +290 -820
  1164. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +0 -2
  1165. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +0 -14
  1166. package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +0 -7
  1167. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +0 -80
  1168. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.js +0 -583
  1169. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +0 -141
  1170. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.js +0 -1116
  1171. package/esm/ReExports/BaseFeatureDetails.d.ts +0 -1
  1172. package/esm/ReExports/BaseFeatureDetails.js +0 -9
  1173. package/esm/ReExports/DataGrid.d.ts +0 -1
  1174. package/esm/ReExports/DataGrid.js +0 -1
  1175. package/esm/ReExports/index.d.ts +0 -1
  1176. package/esm/ReExports/index.js +0 -1
  1177. package/esm/configuration/util.d.ts +0 -10
  1178. package/esm/configuration/util.js +0 -123
  1179. package/esm/data_adapters/BaseAdapter/BaseOptions.d.ts +0 -18
  1180. package/esm/data_adapters/util.d.ts +0 -1
  1181. package/esm/data_adapters/util.js +0 -6
  1182. package/esm/pluggableElementTypes/GlyphType.d.ts +0 -43
  1183. package/esm/pluggableElementTypes/GlyphType.js +0 -18
  1184. package/esm/pluggableElementTypes/models/saveTrackFileTypes/fetchSequence.d.ts +0 -5
  1185. package/esm/pluggableElementTypes/models/saveTrackFileTypes/fetchSequence.js +0 -17
  1186. package/esm/pluggableElementTypes/renderers/BoxRendererType.d.ts +0 -52
  1187. package/esm/pluggableElementTypes/renderers/BoxRendererType.js +0 -78
  1188. package/esm/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +0 -4
  1189. package/esm/pluggableElementTypes/renderers/CircularChordRendererType.js +0 -4
  1190. package/esm/pluggableElementTypes/renderers/FeatureRendererType.d.ts +0 -58
  1191. package/esm/pluggableElementTypes/renderers/FeatureRendererType.js +0 -77
  1192. package/esm/pluggableElementTypes/renderers/LayoutSession.d.ts +0 -31
  1193. package/esm/pluggableElementTypes/renderers/LayoutSession.js +0 -40
  1194. package/esm/pluggableElementTypes/renderers/RendererType.d.ts +0 -28
  1195. package/esm/pluggableElementTypes/renderers/RendererType.js +0 -20
  1196. package/esm/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +0 -58
  1197. package/esm/pluggableElementTypes/renderers/ServerSideRendererType.js +0 -108
  1198. package/esm/pluggableElementTypes/renderers/index.d.ts +0 -6
  1199. package/esm/pluggableElementTypes/renderers/index.js +0 -6
  1200. package/esm/pluggableElementTypes/renderers/util.d.ts +0 -3
  1201. package/esm/pluggableElementTypes/renderers/util.js +0 -14
  1202. package/esm/rpc/baseRpcConfig.d.ts +0 -8
  1203. package/esm/rpc/baseRpcConfig.js +0 -10
  1204. package/esm/rpc/mainThreadRpcConfig.d.ts +0 -8
  1205. package/esm/rpc/mainThreadRpcConfig.js +0 -8
  1206. package/esm/rpc/methods/CoreGetFeatureDensityStats.d.ts +0 -17
  1207. package/esm/rpc/methods/CoreGetFeatureDensityStats.js +0 -25
  1208. package/esm/rpc/methods/CoreGetFeatureDetails.d.ts +0 -11
  1209. package/esm/rpc/methods/CoreGetFeatureDetails.js +0 -24
  1210. package/esm/rpc/methods/CoreGetFileInfo.d.ts +0 -9
  1211. package/esm/rpc/methods/CoreGetFileInfo.js +0 -15
  1212. package/esm/rpc/methods/CoreRender.d.ts +0 -14
  1213. package/esm/rpc/methods/CoreRender.js +0 -40
  1214. package/esm/rpc/methods/CoreSaveFeatureData.d.ts +0 -16
  1215. package/esm/rpc/methods/CoreSaveFeatureData.js +0 -32
  1216. package/esm/rpc/methods/util.d.ts +0 -15
  1217. package/esm/rpc/methods/util.js +0 -7
  1218. package/esm/rpc/webWorkerRpcConfig.d.ts +0 -8
  1219. package/esm/rpc/webWorkerRpcConfig.js +0 -8
  1220. package/esm/ui/MenuButton.d.ts +0 -1
  1221. package/esm/ui/MenuButton.js +0 -1
  1222. package/esm/ui/MenuItems.d.ts +0 -15
  1223. package/esm/ui/MenuItems.js +0 -59
  1224. package/esm/ui/useEvent.d.ts +0 -1
  1225. package/esm/ui/useEvent.js +0 -10
  1226. package/esm/util/blobToDataURL.d.ts +0 -1
  1227. package/esm/util/blobToDataURL.js +0 -14
  1228. package/esm/util/compositeMap.d.ts +0 -11
  1229. package/esm/util/compositeMap.js +0 -59
  1230. package/esm/util/flatqueue/index.d.ts +0 -11
  1231. package/esm/util/flatqueue/index.js +0 -61
  1232. package/esm/util/layouts/BaseLayout.d.ts +0 -30
  1233. package/esm/util/layouts/MultiLayout.d.ts +0 -12
  1234. package/esm/util/layouts/MultiLayout.js +0 -40
  1235. package/esm/util/layouts/PileupLayout.d.ts +0 -41
  1236. package/esm/util/layouts/PileupLayout.js +0 -202
  1237. package/esm/util/layouts/PrecomputedLayout.d.ts +0 -30
  1238. package/esm/util/layouts/PrecomputedLayout.js +0 -71
  1239. package/esm/util/layouts/SceneGraph.d.ts +0 -31
  1240. package/esm/util/layouts/SceneGraph.js +0 -121
  1241. package/esm/util/makeAbortableReaction.d.ts +0 -3
  1242. package/esm/util/makeAbortableReaction.js +0 -47
  1243. package/esm/util/map-obj/index.d.ts +0 -13
  1244. package/esm/util/map-obj/index.js +0 -92
  1245. package/esm/util/nextTick.d.ts +0 -1
  1246. package/esm/util/nextTick.js +0 -3
  1247. package/esm/util/offscreenCanvasGetSerializingSvg.d.ts +0 -5
  1248. package/esm/util/offscreenCanvasGetSerializingSvg.js +0 -9
  1249. package/esm/util/offscreenCanvasUtils.d.ts +0 -12
  1250. package/esm/util/offscreenCanvasUtils.js +0 -19
  1251. package/esm/util/renderToAbstractCanvas.d.ts +0 -17
  1252. package/esm/util/renderToAbstractCanvas.js +0 -53
  1253. package/esm/util/stopToken.d.ts +0 -19
  1254. package/esm/util/stopToken.js +0 -90
  1255. package/esm/util/transferables.d.ts +0 -2
  1256. package/esm/util/transferables.js +0 -35
  1257. package/esm/util/tss-react/mui/index.d.ts +0 -1
  1258. package/esm/util/tss-react/mui/index.js +0 -1
  1259. package/esm/util/tss-react/mui/mui.d.ts +0 -10
  1260. package/esm/util/tss-react/mui/mui.js +0 -5
  1261. package/esm/util/when.d.ts +0 -1
  1262. package/esm/util/when.js +0 -1
  1263. /package/esm/{BaseFeatureWidget/BaseFeatureDetail/types.js → data_adapters/BaseAdapter/CytobandAdapter.js} +0 -0
  1264. /package/esm/data_adapters/BaseAdapter/{BaseOptions.js → zoomRange.js} +0 -0
  1265. /package/esm/{util/layouts/BaseLayout.js → rpc/RpcRegistry.js} +0 -0
@@ -0,0 +1,165 @@
1
+ import { when } from 'mobx';
2
+ import { whenViewSettled } from '../util/whenViewSettled.js';
3
+ // Elapsed, not idle. An idle bound would be the better instrument — a slow
4
+ // export progresses, a stuck one does not — but there is no signal to hang it
5
+ // on: `svgReady` is a computed that stays false for the whole fetch, so mobx
6
+ // never re-evaluates the predicate to say work is still landing, and only one
7
+ // of the five display families exposes `isLoading`.
8
+ //
9
+ // So the number carries the whole argument, and it is picked to make a false
10
+ // failure implausible rather than merely unlikely: half an hour, against real
11
+ // exports over remote 1000 Genomes data that finish in about ten seconds and a
12
+ // worst measured case in low minutes. A caller that knows it is slower than
13
+ // that passes its own bound; nothing here fails an export that is merely slow.
14
+ const SVG_READY_TIMEOUT_MS = 1_800_000;
15
+ /**
16
+ * Whether an off-screen (SVG) export can read this display's data now: the held
17
+ * data is current for what is on screen, or the fetch reached a terminal state.
18
+ *
19
+ * Single-sourced for the same reason as `computeDisplayPhase`: every display
20
+ * family expresses freshness differently — spatial coverage (per-region), a
21
+ * signature compare (global, dotplot, synteny) — but the *policy* wrapping it
22
+ * is identical, and each of the five
23
+ * hand-written copies this replaced was one place to forget a terminal and hang
24
+ * the export, or to forget freshness and capture a stale viewport (both have
25
+ * shipped; see agent-docs/reference/SVG_EXPORT.md).
26
+ *
27
+ * `dataCurrent` is a **thunk**, evaluated only after the terminals are ruled
28
+ * out, for the same MobX reason `computeDisplayPhase`'s `loading` is: freshness
29
+ * typically reads the containing view's `visibleRegions` / `loadedRegions`, and
30
+ * the `when()` in `awaitSvgReady` shouldn't subscribe to that churn while a
31
+ * banner is up.
32
+ */
33
+ export function computeSvgReady({ error, regionTooLarge, extraTerminal, fetchCanceled }, dataCurrent) {
34
+ return (!!error || regionTooLarge || extraTerminal || fetchCanceled || dataCurrent());
35
+ }
36
+ /**
37
+ * Off-screen renderers (SVG export, headless jbrowse-img) must wait until the
38
+ * display reaches a terminal state before reading its data. That whole policy
39
+ * lives in `svgReady`; this is the one shared way to await it, so renderers
40
+ * never re-inline `data != null || error || …`. `svgReady` is a terminal state
41
+ * (data loaded, or error / too-large / canceled), so it resolves once the fetch
42
+ * it observes settles; the half-hour `timeoutMs` is only a backstop for a gate
43
+ * that cannot converge. If a throwing `svgReady` getter rejects the wait, that
44
+ * error propagates faithfully rather than being masked.
45
+ *
46
+ * It then fails the export if the terminal it settled on was the error
47
+ * (`throwOnExportErrors`, below, for why that is fatal), making this the exact
48
+ * display-level twin of `awaitViewInitialized`: both wait for `settled || error`
49
+ * and both refuse to continue on the error, so the postcondition of each is
50
+ * "there is something to draw". Folded in rather than left to the caller because
51
+ * `svgReady` is *true* on error, so a caller that awaits and stops there gets a
52
+ * display with nothing to draw and no sign of why.
53
+ *
54
+ * Every display uses this one, including the ones with nowhere to draw an error
55
+ * (dotplot, synteny) — a display never has to know whether it owns the surface
56
+ * it paints, because the thing that made that distinction matter, reporting all
57
+ * the failures rather than one, is `awaitSvgRenders`'s job.
58
+ *
59
+ * A standing user cancel fails the export the same way an error does, and for
60
+ * the same reason the error is folded in rather than left to the caller: the
61
+ * cancel terminal makes `svgReady` *true* over a display with nothing to draw,
62
+ * so a caller that awaits and stops there exports that track blank in silence.
63
+ * On screen the same state shows "Loading canceled / Retry", so the loud
64
+ * failure matches what the user is looking at.
65
+ */
66
+ export async function awaitSvgReady(model, timeoutMs = SVG_READY_TIMEOUT_MS) {
67
+ // Only the bound is rewritten. A `svgReady` getter that throws rejects here
68
+ // too, and that error is the caller's answer, not a timeout.
69
+ await when(() => model.svgReady, { timeout: timeoutMs }).catch((e) => {
70
+ throw e instanceof Error && e.message === 'WHEN_TIMEOUT'
71
+ ? new Error(`a display never became ready to export, after ${Math.round(timeoutMs / 60_000)} minutes. ` +
72
+ 'Every wait here ends on data, an error or a cancel, so this is ' +
73
+ 'none of the three: a gate that cannot converge. Pass a longer ' +
74
+ 'timeoutMs if this export really does take longer than that.')
75
+ : e;
76
+ });
77
+ throwOnExportErrors([
78
+ model.error == null && model.fetchCanceled
79
+ ? new Error('data loading was canceled — Retry the track, then export')
80
+ : model.error,
81
+ ]);
82
+ }
83
+ /**
84
+ * The view-level counterpart, for the wait every `renderToSvg` opens with:
85
+ * `whenViewSettled` in the export's own vocabulary. Why the bare
86
+ * `when(() => view.initialized)` it replaced could not fail — only hang — is
87
+ * documented there.
88
+ *
89
+ * Only a view that never initialized is fatal *here*. A track error on an
90
+ * initialized view is fatal too, but it is the displays' readiness waits that
91
+ * report it (`throwOnExportErrors`), after this one has let the export start.
92
+ */
93
+ export async function awaitViewInitialized(view) {
94
+ if (!(await whenViewSettled(view))) {
95
+ // the wait only resolves on one of the two, so `error` is set here — and
96
+ // routing it through the shared thrower keeps one wording for "the export
97
+ // failed", whichever half of the export noticed
98
+ throwOnExportErrors([view.error]);
99
+ }
100
+ }
101
+ /**
102
+ * How the export answers "a track failed": by failing. A track whose data won't
103
+ * load has its error caught by the fetch layer and stored on the display, so the
104
+ * render itself still returns — with that track blank.
105
+ *
106
+ * An export is a standalone artifact, so a failed track is fatal: the dialog
107
+ * shows its error banner and saves nothing, and a headless caller (jbrowse-img)
108
+ * exits nonzero instead of writing a broken image. Drawing the error into the
109
+ * figure instead costs more than the red rect it leaves in the picture: on a
110
+ * shared surface (dotplot plot rect, synteny band) the box covers the tracks
111
+ * that *did* render, and a snapshot regenerated while a display is broken
112
+ * absorbs the stack trace as expected output — which is how a real crash sat
113
+ * inside two committed goldens without turning anything red.
114
+ *
115
+ * `regionTooLarge` is deliberately not routed here — see `SvgChrome`.
116
+ *
117
+ * The failures are kept on the thrown error so that nesting one `awaitSvgRenders`
118
+ * inside another (synteny: rows of tracks *and* levels of ribbons) still reports
119
+ * every leaf rather than one per group.
120
+ */
121
+ export function throwOnExportErrors(errors) {
122
+ const failed = errors.filter(e => e != null);
123
+ if (failed.length > 0) {
124
+ throw Object.assign(new Error(`Cannot export: ${failed.join('\n')}`, { cause: failed[0] }), { exportFailures: failed });
125
+ }
126
+ }
127
+ /**
128
+ * The individual failures behind one rejection: the list `throwOnExportErrors`
129
+ * attached, or the rejection itself for anything else (a body that threw, which
130
+ * is a failure the same way a 404 is).
131
+ */
132
+ function leafFailures(error) {
133
+ return error !== null &&
134
+ typeof error === 'object' &&
135
+ 'exportFailures' in error &&
136
+ Array.isArray(error.exportFailures)
137
+ ? error.exportFailures
138
+ : [error];
139
+ }
140
+ async function settledOrThrow(renders) {
141
+ const settled = await Promise.allSettled(renders);
142
+ throwOnExportErrors(settled.flatMap(r => r.status === 'rejected' ? leafFailures(r.reason) : []));
143
+ return settled.flatMap(r => (r.status === 'fulfilled' ? [r.value] : []));
144
+ }
145
+ /**
146
+ * `Promise.all` for the renders a view fans out, differing in the one way an
147
+ * export needs: it fails with **every** failure instead of whichever rejected
148
+ * first. Exporting a session with three broken tracks should not mean finding
149
+ * the second one by fixing the first and exporting again. Nest it freely — an
150
+ * inner fan-out's failures are flattened into the outer one's report.
151
+ *
152
+ * That is also what lets every display await through the plain `awaitSvgReady`.
153
+ * A display on a shared surface (the dotplot's plot rect, a synteny level's
154
+ * band) has nowhere to draw an error and nothing complete to say alone; the
155
+ * alternative is for it to stay silent and let its view read the combined error
156
+ * back *after* the waits, which nothing enforces and every new shared-surface
157
+ * view has to rediscover. Here the display just throws, and being complete is
158
+ * the fan-out's job rather than the display's.
159
+ */
160
+ export async function awaitSvgRenders(renders) {
161
+ // the mapped-tuple return type `Promise.all` also declares, and also can't
162
+ // produce from a value-level `map`. Past the throw inside, every entry is
163
+ // fulfilled, so the array really is that tuple.
164
+ return (await settledOrThrow(renders));
165
+ }
@@ -0,0 +1,29 @@
1
+ import type { AnyConfigurationModel } from '../configuration/index.ts';
2
+ import type { NotificationSink, TrackCatalog } from '../util/index.ts';
3
+ /**
4
+ * The name an export writes for a track. HTML in a config's name is stripped
5
+ * before it is measured or drawn, so the reserved gutter matches the glyphs.
6
+ *
7
+ * In core rather than in the LGV plugin because the skip notification below has
8
+ * to name tracks the same way the labels do, and the views that need to send it
9
+ * are not all LGV-family — a circular view depends on neither.
10
+ */
11
+ export declare function svgTrackName(track: {
12
+ configuration: AnyConfigurationModel;
13
+ }, session: TrackCatalog): string;
14
+ /**
15
+ * Tell the user which visible tracks the export left out, by default because
16
+ * their display type implements no `renderSvg`. Called once per reason per
17
+ * export, after the renders — the stacked views flatten every row's
18
+ * `skippedTracks` into one call rather than notifying per row.
19
+ *
20
+ * A track shown in several rows is named once.
21
+ *
22
+ * Skipping is deliberate (see `SvgExportTrack.renderSvg`), so this is
23
+ * informational rather than an error. But it is not silent: a figure that is
24
+ * quietly short a track is worse than one whose author was told why, and the
25
+ * reader of the file has no way to tell the difference afterwards.
26
+ */
27
+ export declare function notifySkippedSvgTracks(session: NotificationSink & TrackCatalog, skipped: {
28
+ configuration: AnyConfigurationModel;
29
+ }[], reason?: string): void;
@@ -0,0 +1,34 @@
1
+ import { coarseStripHTML } from '../util/index.js';
2
+ import { getTrackName } from '../util/tracks.js';
3
+ /**
4
+ * The name an export writes for a track. HTML in a config's name is stripped
5
+ * before it is measured or drawn, so the reserved gutter matches the glyphs.
6
+ *
7
+ * In core rather than in the LGV plugin because the skip notification below has
8
+ * to name tracks the same way the labels do, and the views that need to send it
9
+ * are not all LGV-family — a circular view depends on neither.
10
+ */
11
+ export function svgTrackName(track, session) {
12
+ return coarseStripHTML(getTrackName(track.configuration, session));
13
+ }
14
+ /**
15
+ * Tell the user which visible tracks the export left out, by default because
16
+ * their display type implements no `renderSvg`. Called once per reason per
17
+ * export, after the renders — the stacked views flatten every row's
18
+ * `skippedTracks` into one call rather than notifying per row.
19
+ *
20
+ * A track shown in several rows is named once.
21
+ *
22
+ * Skipping is deliberate (see `SvgExportTrack.renderSvg`), so this is
23
+ * informational rather than an error. But it is not silent: a figure that is
24
+ * quietly short a track is worse than one whose author was told why, and the
25
+ * reader of the file has no way to tell the difference afterwards.
26
+ */
27
+ export function notifySkippedSvgTracks(session, skipped, reason) {
28
+ const names = [...new Set(skipped.map(t => svgTrackName(t, session)))];
29
+ if (names.length > 0) {
30
+ const why = reason ??
31
+ `${names.length === 1 ? 'Its display type does' : 'Their display types do'} not support SVG export.`;
32
+ session.notify(`Not included in the SVG: ${names.join(', ')}. ${why}`, 'info');
33
+ }
34
+ }
@@ -0,0 +1,12 @@
1
+ import type { ThemeOptions } from '@mui/material';
2
+ export declare function wrapSvgExport({ theme, width, height, margin, fontFamily, Wrapper, children, }: {
3
+ theme: ThemeOptions | undefined;
4
+ width: number;
5
+ height: number;
6
+ margin?: number;
7
+ fontFamily?: string;
8
+ Wrapper?: React.FC<{
9
+ children: React.ReactNode;
10
+ }>;
11
+ children: React.ReactNode;
12
+ }): string;
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { SVGExportRoot } from './SvgExport.js';
3
+ import { SvgThemeProviders } from './SvgThemeProviders.js';
4
+ import { serializeSvg } from './serializeSvg.js';
5
+ // The identical tail every view's `renderToSvg` ends in: the export theme's
6
+ // providers, the caller-supplied Wrapper, the root <svg>, and serialization to
7
+ // a file's markup. Callers keep their own layout math and children.
8
+ export function wrapSvgExport({ theme, width, height, margin, fontFamily, Wrapper = ({ children }) => children, children, }) {
9
+ return serializeSvg(_jsx(SvgThemeProviders, { theme: theme, children: _jsx(Wrapper, { children: _jsx(SVGExportRoot, { width: width, height: height, margin: margin, fontFamily: fontFamily, children: children }) }) }));
10
+ }
@@ -0,0 +1,7 @@
1
+ /** A Link that acts as a button — no real navigation, just calls onClick. */
2
+ export default function ActionLink({ onClick, children, className, title, }: {
3
+ onClick: () => void;
4
+ children: React.ReactNode;
5
+ className?: string;
6
+ title?: string;
7
+ }): import("react").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Link } from '@mui/material';
3
+ /** A Link that acts as a button — no real navigation, just calls onClick. */
4
+ export default function ActionLink({ onClick, children, className, title, }) {
5
+ return (_jsx(Link, { href: "#", className: className, title: title, onClick: (e) => {
6
+ e.preventDefault();
7
+ onClick();
8
+ }, children: children }));
9
+ }
@@ -0,0 +1,14 @@
1
+ import type { PluginDefinition } from '../pluginDefinitions.ts';
2
+ /**
3
+ * The "add a plugin by url" form, shared by every place a plugin can be
4
+ * installed from outside the store — the in-session plugin store widget and
5
+ * Desktop's global plugins dialog — so both mint the same definition shapes
6
+ * from the same fields.
7
+ *
8
+ * `onAdd` returns false to reject the definition and keep the dialog open (the
9
+ * plugin store rejects a name already installed).
10
+ */
11
+ export default function AddCustomPluginDialog({ onClose, onAdd, }: {
12
+ onClose: () => void;
13
+ onAdd: (definition: PluginDefinition) => boolean;
14
+ }): import("react").JSX.Element;
@@ -0,0 +1,56 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
4
+ import { Collapse, DialogContentText, IconButton, TextField, } from '@mui/material';
5
+ import { cx, makeStyles } from '../util/tss-react/index.js';
6
+ import SubmitDialog from './SubmitDialog.js';
7
+ const useStyles = makeStyles()({
8
+ dialogContent: {
9
+ display: 'flex',
10
+ flexDirection: 'column',
11
+ },
12
+ expand: {
13
+ transform: 'rotate(0deg)',
14
+ marginLeft: 'auto',
15
+ // Material's `shortest` duration and default easing, spelled out
16
+ transition: 'transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms',
17
+ },
18
+ expandOpen: {
19
+ transform: 'rotate(180deg)',
20
+ },
21
+ });
22
+ /**
23
+ * The "add a plugin by url" form, shared by every place a plugin can be
24
+ * installed from outside the store — the in-session plugin store widget and
25
+ * Desktop's global plugins dialog — so both mint the same definition shapes
26
+ * from the same fields.
27
+ *
28
+ * `onAdd` returns false to reject the definition and keep the dialog open (the
29
+ * plugin store rejects a name already installed).
30
+ */
31
+ export default function AddCustomPluginDialog({ onClose, onAdd, }) {
32
+ const { classes } = useStyles();
33
+ const [umdPluginName, setUMDPluginName] = useState('');
34
+ const [umdPluginUrl, setUMDPluginUrl] = useState('');
35
+ const [esmPluginUrl, setESMPluginUrl] = useState('');
36
+ const [advancedOptionsOpen, setAdvancedOptionsOpen] = useState(false);
37
+ const ready = Boolean((umdPluginName && umdPluginUrl) || esmPluginUrl);
38
+ return (_jsx(SubmitDialog, { open: true, maxWidth: "sm", fullWidth: true, title: "Add custom plugin", submitDisabled: !ready, onCancel: onClose, onSubmit: () => {
39
+ const definition = umdPluginName && umdPluginUrl
40
+ ? { name: umdPluginName, umdUrl: umdPluginUrl }
41
+ : { esmUrl: esmPluginUrl };
42
+ if (onAdd(definition)) {
43
+ onClose();
44
+ }
45
+ }, children: _jsxs("div", { className: classes.dialogContent, children: [_jsx(DialogContentText, { children: "Enter the name of the plugin and its URL. The name should match what is defined in the plugin's build." }), _jsx(TextField, { label: "Plugin name", variant: "outlined", fullWidth: true, margin: "dense", value: umdPluginName, onChange: event => {
46
+ setUMDPluginName(event.target.value);
47
+ } }), _jsx(TextField, { label: "Plugin URL", variant: "outlined", fullWidth: true, margin: "dense", value: umdPluginUrl, onChange: event => {
48
+ setUMDPluginUrl(event.target.value);
49
+ } }), _jsxs(DialogContentText, { onClick: () => {
50
+ setAdvancedOptionsOpen(!advancedOptionsOpen);
51
+ }, children: [_jsx(IconButton, { className: cx(classes.expand, {
52
+ [classes.expandOpen]: advancedOptionsOpen,
53
+ }), "aria-expanded": advancedOptionsOpen, "aria-label": "show more", children: _jsx(ExpandMoreIcon, {}) }), "Advanced options"] }), _jsx(Collapse, { in: advancedOptionsOpen, children: _jsxs("div", { className: classes.dialogContent, children: [_jsx(DialogContentText, { children: "The above fields assume that the plugin is built in UMD format. For an ESM build, enter its URL here instead; it carries its own name, so the fields above stay empty." }), _jsx(TextField, { label: "ESM build URL", variant: "outlined", fullWidth: true, margin: "dense", value: esmPluginUrl, onChange: event => {
54
+ setESMPluginUrl(event.target.value);
55
+ } })] }) })] }) }));
56
+ }
@@ -0,0 +1,8 @@
1
+ import type { FormState } from '../util/assemblyConfigUtils.ts';
2
+ declare const AddGenomePane: ({ form, setForm, loading, onStageAnother, }: {
3
+ form: FormState;
4
+ setForm: (update: (prev: FormState) => FormState) => void;
5
+ loading?: string;
6
+ onStageAnother?: () => Promise<boolean>;
7
+ }) => import("react").JSX.Element;
8
+ export default AddGenomePane;
@@ -0,0 +1,228 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import CheckCircleIcon from '@mui/icons-material/CheckCircle';
4
+ import ExpandLessIcon from '@mui/icons-material/ExpandLess';
5
+ import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
6
+ import { Alert, Button, Link, TextField, Typography } from '@mui/material';
7
+ import { observer } from 'mobx-react';
8
+ import { adapterHasSequence, applyClassifiedFiles, applyPrimaryFile, applyTwoBitFile, classifyLocations, clearSequenceFiles, formHasSequence, getMissingSidecars, isBlank, isFormReady, isSequenceRole, partitionExtraLocations, urlTextToLocations, } from '../util/assemblyConfigUtils.js';
9
+ import { getFileName } from '../util/getFileName.js';
10
+ import { fileToLocation } from '../util/index.js';
11
+ import { makeStyles } from '../util/tss-react/index.js';
12
+ import AdvancedOptions from './AdvancedOptions.js';
13
+ import FileDropZone from './FileDropZone.js';
14
+ import FileSelector from './FileSelector/FileSelector.js';
15
+ import { EmptySourceTypeProvider } from './FileSelector/emptySourceType.js';
16
+ import SequenceAdapterInputs from './SequenceAdapterInputs.js';
17
+ const shortAdapterLabels = {
18
+ IndexedFastaAdapter: 'Indexed FASTA',
19
+ BgzipFastaAdapter: 'Compressed FASTA',
20
+ FastaAdapter: 'FASTA',
21
+ TwoBitAdapter: '2bit',
22
+ ChromSizesAdapter: 'chrom.sizes, no sequence',
23
+ };
24
+ const useStyles = makeStyles()(theme => ({
25
+ intro: {
26
+ marginBottom: theme.spacing(1),
27
+ },
28
+ links: {
29
+ marginTop: theme.spacing(1),
30
+ display: 'flex',
31
+ gap: theme.spacing(2),
32
+ },
33
+ recognized: {
34
+ marginTop: theme.spacing(2),
35
+ },
36
+ recognizedRow: {
37
+ display: 'flex',
38
+ alignItems: 'center',
39
+ gap: theme.spacing(1),
40
+ },
41
+ check: {
42
+ color: theme.palette.success.main,
43
+ },
44
+ filename: {
45
+ flexGrow: 1,
46
+ },
47
+ muted: {
48
+ color: theme.palette.text.secondary,
49
+ },
50
+ name: {
51
+ marginTop: theme.spacing(2),
52
+ },
53
+ advanced: {
54
+ marginTop: theme.spacing(1),
55
+ },
56
+ extras: {
57
+ marginTop: theme.spacing(1),
58
+ color: theme.palette.text.secondary,
59
+ },
60
+ }));
61
+ // The "More options" expander revealing AdvancedOptions (display name, refName
62
+ // aliases, cytobands). Shared by the recognition card and the manual form so the
63
+ // optional extras always hide behind the same affordance.
64
+ const MoreOptions = observer(function MoreOptions({ form, setForm, showMore, setShowMore, }) {
65
+ const { classes } = useStyles();
66
+ return (_jsxs("div", { className: classes.advanced, children: [_jsx(Button, { variant: "text", size: "small", startIcon: showMore ? _jsx(ExpandLessIcon, {}) : _jsx(ExpandMoreIcon, {}), onClick: () => {
67
+ setShowMore(!showMore);
68
+ }, children: showMore ? 'Fewer options' : 'More options' }), showMore ? _jsx(AdvancedOptions, { form: form, setForm: setForm }) : null] }));
69
+ });
70
+ // A required index for the chosen adapter that the drop didn't include, so we
71
+ // give the user a place to point at it inline. Plain-FASTA auto-indexing has no
72
+ // required input, so it's surfaced as a caption by the caller instead.
73
+ const RequiredIndexInputs = observer(function RequiredIndexInputs({ form, setForm, onEdit, }) {
74
+ const { classes } = useStyles();
75
+ const missing = getMissingSidecars(form);
76
+ return missing.length ? (_jsxs("div", { className: classes.advanced, children: [_jsx(Alert, { severity: "warning", children: "This format needs its index file(s). Add them below." }), missing.map(({ field, label }) => (_jsx(FileSelector, { inline: true, name: label, location: form[field], setLocation: (loc) => {
77
+ onEdit(field);
78
+ setForm(f => ({ ...f, [field]: loc }));
79
+ } }, field)))] })) : null;
80
+ });
81
+ // The compact confirmation shown once a sequence is recognized: name (editable),
82
+ // a one-line summary of what was detected, and required index inputs. Everything
83
+ // else lives behind "More options".
84
+ const RecognitionCard = observer(function RecognitionCard({ form, setForm, onEdit, onChangeFile, showMore, setShowMore, }) {
85
+ const { classes } = useStyles();
86
+ const primaryLoc = isBlank(form.twoBitLocation)
87
+ ? form.fastaLocation
88
+ : form.twoBitLocation;
89
+ const { used, unused } = partitionExtraLocations(form);
90
+ const autoIndex = form.adapterSelection === 'FastaAdapter';
91
+ return (_jsxs("div", { className: classes.recognized, children: [_jsxs("div", { className: classes.recognizedRow, children: [_jsx(CheckCircleIcon, { fontSize: "small", className: classes.check }), _jsxs(Typography, { variant: "body2", className: classes.filename, children: [_jsx("b", { children: getFileName(primaryLoc) }), _jsxs("span", { className: classes.muted, children: [' · ', shortAdapterLabels[form.adapterSelection]] })] }), _jsx(Link, { component: "button", type: "button", variant: "body2", onClick: () => {
92
+ onChangeFile();
93
+ }, children: "change" })] }), _jsx(TextField, { className: classes.name, label: "Genome name", variant: "outlined", size: "small", fullWidth: true, value: form.assemblyName, onChange: event => {
94
+ onEdit('assemblyName');
95
+ const { value } = event.target;
96
+ setForm(f => ({ ...f, assemblyName: value }));
97
+ }, slotProps: { htmlInput: { 'data-testid': 'assembly-name' } } }), used.length ? (_jsxs(Typography, { variant: "caption", component: "div", className: classes.extras, children: ["Also loading: ", used.map(loc => getFileName(loc)).join(', ')] })) : null, unused.length ? (_jsxs(Typography, { variant: "caption", component: "div", className: classes.extras, children: [shortAdapterLabels[form.adapterSelection], " does not use", ' ', unused.map(loc => getFileName(loc)).join(', '), ", so it will be ignored."] })) : null, autoIndex ? (_jsx(Typography, { variant: "caption", component: "div", className: classes.extras, children: "A FASTA index will be built on open (may take a minute for large or remote files)." })) : null, _jsx(RequiredIndexInputs, { form: form, setForm: setForm, onEdit: onEdit }), _jsx(MoreOptions, { form: form, setForm: setForm, showMore: showMore, setShowMore: setShowMore })] }));
98
+ });
99
+ // The escape hatch: pick the format and every file slot by hand, for assemblies
100
+ // whose filenames don't follow the conventions we auto-detect.
101
+ const ManualEntry = observer(function ManualEntry({ form, setForm, showMore, setShowMore, onBack, }) {
102
+ const { classes } = useStyles();
103
+ return (_jsxs(_Fragment, { children: [_jsx(TextField, { label: "Genome name", helperText: "The genome name e.g. hg38", variant: "outlined", fullWidth: true, value: form.assemblyName, onChange: event => {
104
+ const { value } = event.target;
105
+ setForm(f => ({ ...f, assemblyName: value }));
106
+ }, slotProps: { htmlInput: { 'data-testid': 'assembly-name' } } }), _jsx(SequenceAdapterInputs, { form: form, setForm: setForm, setPrimaryFile: (loc) => {
107
+ setForm(f => applyPrimaryFile(f, loc));
108
+ }, setTwoBitFile: (loc) => {
109
+ setForm(f => applyTwoBitFile(f, loc));
110
+ } }), _jsx(MoreOptions, { form: form, setForm: setForm, showMore: showMore, setShowMore: setShowMore }), _jsx("div", { className: classes.links, children: _jsx(Link, { component: "button", type: "button", variant: "body2", onClick: () => {
111
+ onBack();
112
+ }, children: "\u2190 Use automatic file detection" }) })] }));
113
+ });
114
+ // Where the files come from: a drop zone or a box of URLs, with a link to swap
115
+ // between them. It stays mounted for the whole flow, including after a sequence
116
+ // is recognized, so that more files can be added to the same genome — and so
117
+ // that the box someone is typing a URL into cannot be unmounted out from under
118
+ // them the moment a prefix of that URL looks like a FASTA.
119
+ const SourceInput = observer(function SourceInput({ source, setSource, urls, setUrls, hasSequence, onDropFiles, }) {
120
+ const { classes } = useStyles();
121
+ return (_jsxs(_Fragment, { children: [source === 'files' ? (_jsx(FileDropZone, { message: hasSequence
122
+ ? 'Drop any other files for this genome here — index, refName aliases, cytobands'
123
+ : 'Drop your genome files here — FASTA, .fa.gz, or .2bit, plus any .fai/.gzi index — or click to browse', onDrop: onDropFiles })) : (_jsxs(_Fragment, { children: [_jsx(Typography, { variant: "body2", className: classes.intro, children: "Paste a URL to a sequence file (FASTA, .fa.gz, or .2bit) or a .chrom.sizes, plus any index files, one per line. We fill in the rest." }), _jsx(TextField, { variant: "outlined", placeholder: [
124
+ 'https://example.com/hg38.fa.gz',
125
+ 'https://example.com/hg38.fa.gz.fai',
126
+ 'https://example.com/hg38.fa.gz.gzi',
127
+ ].join('\n'), multiline: true, rows: 5, fullWidth: true, value: urls, onChange: event => {
128
+ setUrls(event.target.value);
129
+ }, slotProps: { htmlInput: { 'data-testid': 'genome-urls' } } })] })), _jsx("div", { className: classes.links, children: _jsx(Link, { component: "button", type: "button", variant: "body2", onClick: () => {
130
+ setSource(source === 'files' ? 'urls' : 'files');
131
+ }, children: source === 'files' ? 'Open from a URL' : 'Use local files' }) })] }));
132
+ });
133
+ // What the current file set says about itself: what couldn't be placed, whether
134
+ // it holds more than one genome, and what is still missing. Every file that
135
+ // arrives is accounted for in one of these — a set that silently produces no
136
+ // notice and no recognition card reads as a dead drop zone.
137
+ const FileNotices = observer(function FileNotices({ locations, hasSequence, canStageAnother, onEnterManually, }) {
138
+ const { classes } = useStyles();
139
+ const classified = classifyLocations(locations);
140
+ const placed = classified.filter(f => f.role).map(f => f.location);
141
+ const unrecognized = classified.filter(f => !f.role).map(f => f.location);
142
+ const sequences = classified.filter(f => isSequenceRole(f.role));
143
+ const primary = sequences.at(-1)?.location;
144
+ return (_jsxs(_Fragment, { children: [unrecognized.length ? (_jsxs(Alert, { severity: "warning", className: classes.intro, action: _jsx(Button, { color: "inherit", size: "small", onClick: onEnterManually, children: "Enter details manually" }), children: ["Couldn't place: ", unrecognized.map(loc => getFileName(loc)).join(', ')] })) : null, sequences.length > 1 && primary ? (_jsxs(Alert, { severity: "warning", className: classes.intro, children: ["This is more than one genome. The form holds one at a time, so only", ' ', getFileName(primary), " is being read", canStageAnother
145
+ ? ' — open the rest one at a time with "Add another genome".'
146
+ : '.'] })) : null, !hasSequence && placed.length ? (_jsxs(Alert, { severity: "info", className: classes.intro, children: ["Got ", placed.map(loc => getFileName(loc)).join(', '), ". Add the sequence itself \u2014 a FASTA, .fa.gz, or .2bit \u2014 to go with it."] })) : null] }));
147
+ });
148
+ // What a sequence-free assembly costs, said where the choice is made rather
149
+ // than left for the empty track to imply. A .chrom.sizes is the right input for
150
+ // a whole-genome or synteny view and the wrong one for everything that reads a
151
+ // base, and the two are not obvious from the file itself.
152
+ const NoSequenceWarning = observer(function NoSequenceWarning() {
153
+ const { classes } = useStyles();
154
+ return (_jsxs(Alert, { severity: "warning", className: classes.intro, children: ["This genome will have no sequence \u2014 a ", _jsx("code", { children: ".chrom.sizes" }), " carries reference names and lengths and nothing else. The sequence track and GC content draw nothing, CRAM tracks cannot decode without the reference, and a feature's DNA or protein sequence is unavailable. Whole-genome and synteny views read no bases, which is what the format is for; open a FASTA or 2bit instead if you need any of the above."] }));
155
+ });
156
+ // Drop/paste a genome's files, auto-detect the format, and confirm. Falls back
157
+ // to a manual format picker when filenames don't match our conventions. Produces
158
+ // a FormState the caller turns into an assembly config (desktop indexes plain
159
+ // FASTA via faidx; web keeps it unindexed). Pass onStageAnother to allow queuing
160
+ // several genomes before submitting (desktop multi-assembly open).
161
+ const AddGenomePane = observer(function AddGenomePane({ form, setForm, loading = '', onStageAnother, }) {
162
+ const { classes } = useStyles();
163
+ const [source, setSource] = useState('files');
164
+ const [manual, setManual] = useState(false);
165
+ const [dropped, setDropped] = useState([]);
166
+ const [urls, setUrls] = useState('');
167
+ const [showMore, setShowMore] = useState(false);
168
+ // fields the user filled in themselves, which the file set does not overwrite
169
+ const [edited, setEdited] = useState(() => new Set());
170
+ const markEdited = (field) => {
171
+ setEdited(prev => new Set(prev).add(field));
172
+ };
173
+ const reclassify = (next, nextUrls) => {
174
+ setForm(f => applyClassifiedFiles(f, [...next, ...urlTextToLocations(nextUrls)], edited));
175
+ };
176
+ const all = [...dropped, ...urlTextToLocations(urls)];
177
+ const hasSequence = formHasSequence(form);
178
+ const resetInputs = () => {
179
+ setDropped([]);
180
+ setUrls('');
181
+ setEdited(new Set());
182
+ setShowMore(false);
183
+ };
184
+ // Swap the sequence file but keep the name/advanced fields the user entered.
185
+ // A hand-edited name stays marked so it survives the next drop; the sidecars
186
+ // do not, because clearSequenceFiles just blanked them and a mark would stop
187
+ // the replacement file set from filling them back in.
188
+ const changeFile = () => {
189
+ setForm(clearSequenceFiles);
190
+ setDropped([]);
191
+ setUrls('');
192
+ setShowMore(false);
193
+ setEdited(prev => new Set([...prev].filter(f => f === 'assemblyName')));
194
+ };
195
+ // The pane's inputs are cleared by the staging actually landing, not by the
196
+ // click: on desktop a plain FASTA is indexed first, which takes as long as it
197
+ // takes and can still fail on a name already in use. Clearing up front left
198
+ // the recognition card describing a genome whose files had vanished from the
199
+ // box, and erased anything typed while the index ran.
200
+ const stageAnother = async () => {
201
+ if (await onStageAnother?.()) {
202
+ resetInputs();
203
+ }
204
+ };
205
+ return (_jsxs(EmptySourceTypeProvider, { value: source === 'urls' ? 'url' : 'file', children: [adapterHasSequence(form.adapterSelection) ? null : _jsx(NoSequenceWarning, {}), manual ? (_jsx(ManualEntry, { form: form, setForm: setForm, showMore: showMore, setShowMore: setShowMore, onBack: () => {
206
+ setManual(false);
207
+ setShowMore(false);
208
+ } })) : (_jsxs(_Fragment, { children: [_jsx(SourceInput, { source: source, setSource: setSource, urls: urls, hasSequence: hasSequence, setUrls: value => {
209
+ setUrls(value);
210
+ reclassify(dropped, value);
211
+ }, onDropFiles: files => {
212
+ const next = [...dropped, ...files.map(f => fileToLocation(f))];
213
+ setDropped(next);
214
+ reclassify(next, urls);
215
+ } }), _jsx(FileNotices, { locations: all, hasSequence: hasSequence, canStageAnother: !!onStageAnother, onEnterManually: () => {
216
+ setManual(true);
217
+ setShowMore(false);
218
+ } }), hasSequence ? (_jsxs(_Fragment, { children: [_jsx(RecognitionCard, { form: form, setForm: setForm, onEdit: markEdited, onChangeFile: () => {
219
+ changeFile();
220
+ }, showMore: showMore, setShowMore: setShowMore }), onStageAnother ? (_jsx("div", { className: classes.links, children: _jsx(Button, { variant: "text", size: "small",
221
+ // the same gate the caller's submit button uses: staging a
222
+ // form the config builder will refuse only reports its
223
+ // internal "FASTA, FAI, and GZI locations are all required"
224
+ disabled: !!loading || !isFormReady(form), onClick: () => {
225
+ void stageAnother();
226
+ }, children: "Add another genome" }) })) : null] })) : null] }))] }));
227
+ });
228
+ export default AddGenomePane;
@@ -0,0 +1,6 @@
1
+ import type { FormState } from '../util/assemblyConfigUtils.ts';
2
+ declare const AdvancedOptions: ({ form, setForm, }: {
3
+ form: FormState;
4
+ setForm: (update: (prev: FormState) => FormState) => void;
5
+ }) => import("react").JSX.Element;
6
+ export default AdvancedOptions;
@@ -0,0 +1,17 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { TextField } from '@mui/material';
3
+ import { observer } from 'mobx-react';
4
+ import { makeSetField } from '../util/assemblyConfigUtils.js';
5
+ import FileSelector from './FileSelector/FileSelector.js';
6
+ // Display name plus the optional refName-aliases and cytobands files. Shared by
7
+ // every add-assembly surface (desktop Open genome dialog, in-app Assembly
8
+ // manager) behind a "More options" expander so it never adds to the up-front
9
+ // load.
10
+ const AdvancedOptions = observer(function AdvancedOptions({ form, setForm, }) {
11
+ const setField = makeSetField(setForm);
12
+ return (_jsxs(_Fragment, { children: [_jsx(TextField, { label: "Assembly display name", helperText: '(optional) A human readable display name e.g. "Homo sapiens (hg38)"', variant: "outlined", fullWidth: true, value: form.assemblyDisplayName, onChange: event => {
13
+ const { value } = event.target;
14
+ setForm(f => ({ ...f, assemblyDisplayName: value }));
15
+ } }), _jsx(FileSelector, { inline: true, name: "refName aliases", description: "Remap equivalent refNames (e.g. chr1 and 1). Tab-separated file such as a UCSC .chromAliases file.", location: form.refNameAliasesLocation, setLocation: setField('refNameAliasesLocation') }), _jsx(FileSelector, { inline: true, name: "Cytobands", description: "UCSC cytoBand.txt / cytoBandIdeo.txt format (.gz allowed).", location: form.cytobandsLocation, setLocation: setField('cytobandsLocation') })] }));
16
+ });
17
+ export default AdvancedOptions;
@@ -3,5 +3,5 @@ declare const Logo: ({ session, }: {
3
3
  session: {
4
4
  configuration: AnyConfigurationModel;
5
5
  };
6
- }) => import("react/jsx-runtime").JSX.Element;
6
+ }) => import("react").JSX.Element;
7
7
  export default Logo;
package/esm/ui/AppLogo.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { observer } from 'mobx-react';
3
- import { LogoFull } from "./Logo.js";
4
- import { readConfObject } from "../configuration/index.js";
3
+ import { readConfObject } from '../configuration/index.js';
4
+ import { LogoFull } from './Logo.js';
5
5
  const Logo = observer(function Logo({ session, }) {
6
6
  const { configuration } = session;
7
7
  const logoPath = readConfObject(configuration, 'logoPath');