@jbrowse/core 4.3.0 → 5.0.0-beta.2

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 (1140) hide show
  1. package/README.md +822 -0
  2. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +13 -3
  3. package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +33 -22
  4. package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +8 -3
  5. package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +117 -19
  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 -2
  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 +1 -1
  13. package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +12 -5
  14. package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
  15. package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +28 -17
  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 +6 -4
  19. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +46 -30
  20. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.d.ts +20 -0
  21. package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.js +66 -0
  22. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.d.ts +1 -1
  23. package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.js +2 -2
  24. package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.d.ts +3 -0
  25. package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +17 -0
  26. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +1 -1
  27. package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +3 -9
  28. package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +3 -2
  29. package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +3 -3
  30. package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +3 -2
  31. package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.js +7 -14
  32. package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +2 -1
  33. package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +19 -13
  34. package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +5 -4
  35. package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +8 -1
  36. package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +32 -10
  37. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.d.ts +18 -0
  38. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.js +10 -0
  39. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.d.ts +7 -4
  40. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +62 -24
  41. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.d.ts +10 -5
  42. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +64 -41
  43. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +1 -1
  44. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.js +17 -8
  45. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.d.ts +6 -0
  46. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.js +19 -0
  47. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.d.ts +5 -4
  48. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.js +15 -18
  49. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.d.ts +1 -1
  50. package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +33 -17
  51. package/esm/BaseFeatureWidget/SequenceFeatureDetails/consts.d.ts +3 -3
  52. package/esm/BaseFeatureWidget/SequenceFeatureDetails/consts.js +7 -3
  53. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.d.ts +11 -0
  54. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.js +29 -0
  55. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.d.ts +1 -1
  56. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.js +4 -6
  57. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.d.ts +18 -6
  58. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.js +11 -29
  59. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.d.ts +9 -2
  60. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.js +63 -58
  61. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.d.ts +7 -3
  62. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.js +38 -51
  63. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.d.ts +1 -1
  64. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.js +19 -27
  65. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.d.ts +6 -0
  66. package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +18 -0
  67. package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.d.ts +12 -0
  68. package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.js +97 -0
  69. package/esm/BaseFeatureWidget/SequenceFeatureDetails/index.js +1 -1
  70. package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +50 -63
  71. package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +62 -59
  72. package/esm/BaseFeatureWidget/SequenceFeatureDetails/panelAssemblyName.d.ts +21 -0
  73. package/esm/BaseFeatureWidget/SequenceFeatureDetails/panelAssemblyName.js +24 -0
  74. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.d.ts +5 -3
  75. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.js +93 -75
  76. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.d.ts +1 -1
  77. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.js +4 -11
  78. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.d.ts +5 -2
  79. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.js +21 -48
  80. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/PlainSequence.d.ts +8 -0
  81. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/PlainSequence.js +20 -0
  82. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.d.ts +6 -3
  83. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.js +33 -13
  84. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.d.ts +7 -4
  85. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +67 -11
  86. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/renderSequenceSegments.d.ts +14 -0
  87. package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/renderSequenceSegments.js +42 -0
  88. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +1 -1
  89. package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +7 -7
  90. package/esm/BaseFeatureWidget/SequenceFeatureDetails/types.d.ts +8 -1
  91. package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.d.ts +9 -9
  92. package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.js +28 -44
  93. package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceFetch.d.ts +23 -0
  94. package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceFetch.js +31 -0
  95. package/esm/BaseFeatureWidget/SequenceFeatureDetails/util.d.ts +90 -1
  96. package/esm/BaseFeatureWidget/SequenceFeatureDetails/util.js +145 -23
  97. package/esm/BaseFeatureWidget/configSchema.js +1 -1
  98. package/esm/BaseFeatureWidget/formatDetails.d.ts +38 -0
  99. package/esm/BaseFeatureWidget/formatDetails.js +103 -0
  100. package/esm/BaseFeatureWidget/index.d.ts +3 -1
  101. package/esm/BaseFeatureWidget/index.js +2 -2
  102. package/esm/BaseFeatureWidget/stateModelFactory.d.ts +80 -62
  103. package/esm/BaseFeatureWidget/stateModelFactory.js +128 -29
  104. package/esm/BaseFeatureWidget/types.d.ts +4 -3
  105. package/esm/BaseFeatureWidget/util.d.ts +4 -29
  106. package/esm/BaseFeatureWidget/util.js +20 -84
  107. package/esm/CorePlugin.js +11 -6
  108. package/esm/PhasedScheduler.d.ts +4 -2
  109. package/esm/PhasedScheduler.js +18 -2
  110. package/esm/Plugin.d.ts +6 -1
  111. package/esm/Plugin.js +7 -0
  112. package/esm/PluginLoader.d.ts +41 -40
  113. package/esm/PluginLoader.js +206 -78
  114. package/esm/PluginManager.d.ts +421 -55
  115. package/esm/PluginManager.js +461 -89
  116. package/esm/ReExports/BaseFeatureDetails.js +7 -6
  117. package/esm/ReExports/MuiDataGridReExports.d.ts +2 -2
  118. package/esm/ReExports/MuiDataGridReExports.js +58 -130
  119. package/esm/ReExports/MuiReExports.d.ts +3 -134
  120. package/esm/ReExports/MuiReExports.js +43 -16
  121. package/esm/ReExports/MuiStylesReExports.d.ts +66 -0
  122. package/esm/ReExports/MuiStylesReExports.js +55 -0
  123. package/esm/ReExports/index.js +1 -1
  124. package/esm/ReExports/lazify.d.ts +2 -2
  125. package/esm/ReExports/lazify.js +16 -3
  126. package/esm/ReExports/list.js +54 -229
  127. package/esm/ReExports/modules.js +62 -93
  128. package/esm/ReExports/muiComponentNames.d.ts +18 -0
  129. package/esm/ReExports/muiComponentNames.js +130 -0
  130. package/esm/ReExports/publicUtil.d.ts +1 -0
  131. package/esm/ReExports/publicUtil.js +28 -0
  132. package/esm/ReExports/registry.d.ts +2 -0
  133. package/esm/ReExports/registry.js +28 -0
  134. package/esm/ReExports/sharedModules.d.ts +96 -0
  135. package/esm/ReExports/sharedModules.js +59 -0
  136. package/esm/ReExports/uiStub.d.ts +1 -0
  137. package/esm/ReExports/uiStub.js +13 -0
  138. package/esm/ReExports/workerModules.d.ts +2 -0
  139. package/esm/ReExports/workerModules.js +10 -0
  140. package/esm/TextSearch/BaseResults.d.ts +20 -21
  141. package/esm/TextSearch/BaseResults.js +8 -33
  142. package/esm/TextSearch/TextSearchManager.d.ts +14 -34
  143. package/esm/TextSearch/TextSearchManager.js +87 -34
  144. package/esm/assemblyManager/assembly.d.ts +307 -34
  145. package/esm/assemblyManager/assembly.js +551 -262
  146. package/esm/assemblyManager/assemblyAdapters.d.ts +12 -0
  147. package/esm/assemblyManager/assemblyAdapters.js +18 -0
  148. package/esm/assemblyManager/assemblyConfigSchema.d.ts +192 -17
  149. package/esm/assemblyManager/assemblyConfigSchema.js +213 -19
  150. package/esm/assemblyManager/assemblyManager.d.ts +711 -303
  151. package/esm/assemblyManager/assemblyManager.js +351 -46
  152. package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +32 -0
  153. package/esm/assemblyManager/expandAssemblyConfigShorthand.js +85 -0
  154. package/esm/assemblyManager/geneticCodes.d.ts +21 -0
  155. package/esm/assemblyManager/geneticCodes.js +47 -0
  156. package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +9 -0
  157. package/esm/assemblyManager/getSequenceAdapterConfig.js +12 -0
  158. package/esm/assemblyManager/index.d.ts +1 -1
  159. package/esm/assemblyManager/index.js +2 -2
  160. package/esm/assemblyManager/loadRefNameMap.d.ts +5 -0
  161. package/esm/assemblyManager/loadRefNameMap.js +80 -0
  162. package/esm/assemblyManager/refNameColors.d.ts +1 -0
  163. package/esm/assemblyManager/refNameColors.js +32 -0
  164. package/esm/assemblyManager/refNameMaps.d.ts +26 -0
  165. package/esm/assemblyManager/refNameMaps.js +87 -0
  166. package/esm/assemblyManager/refNameMismatch.d.ts +54 -0
  167. package/esm/assemblyManager/refNameMismatch.js +66 -0
  168. package/esm/checkPlugins.d.ts +11 -0
  169. package/esm/checkPlugins.js +77 -0
  170. package/esm/configuration/configurationSchema.d.ts +122 -20
  171. package/esm/configuration/configurationSchema.js +374 -140
  172. package/esm/configuration/configurationSlot.d.ts +283 -30
  173. package/esm/configuration/configurationSlot.js +205 -226
  174. package/esm/configuration/formatAboutConfigSchema.d.ts +55 -0
  175. package/esm/configuration/formatAboutConfigSchema.js +58 -0
  176. package/esm/configuration/formatDetailsConfigSchema.d.ts +80 -0
  177. package/esm/configuration/formatDetailsConfigSchema.js +90 -0
  178. package/esm/configuration/fullConfSnapshot.d.ts +28 -0
  179. package/esm/configuration/fullConfSnapshot.js +66 -0
  180. package/esm/configuration/getConf.d.ts +88 -0
  181. package/esm/configuration/getConf.js +74 -0
  182. package/esm/configuration/index.d.ts +19 -3
  183. package/esm/configuration/index.js +19 -2
  184. package/esm/configuration/mergeFormatCallbacks.d.ts +15 -0
  185. package/esm/configuration/mergeFormatCallbacks.js +24 -0
  186. package/esm/configuration/promotableDefaults.d.ts +199 -0
  187. package/esm/configuration/promotableDefaults.js +332 -0
  188. package/esm/configuration/promotablePin.d.ts +55 -0
  189. package/esm/configuration/promotableResolve.d.ts +108 -0
  190. package/esm/configuration/promotableResolve.js +117 -0
  191. package/esm/configuration/promotableSlots.d.ts +12 -0
  192. package/esm/configuration/promotableSlots.js +45 -0
  193. package/esm/configuration/readConfObject.d.ts +56 -0
  194. package/esm/configuration/readConfObject.js +161 -0
  195. package/esm/configuration/schemaRegistry.d.ts +35 -0
  196. package/esm/configuration/schemaRegistry.js +50 -0
  197. package/esm/configuration/schemaTypes.d.ts +23 -0
  198. package/esm/configuration/schemaTypes.js +94 -0
  199. package/esm/configuration/slotFacade.d.ts +82 -0
  200. package/esm/configuration/slotFacade.js +89 -0
  201. package/esm/configuration/slotShape.d.ts +12 -0
  202. package/esm/configuration/slotShape.js +84 -0
  203. package/esm/configuration/slotValueUtils.d.ts +17 -0
  204. package/esm/configuration/slotValueUtils.js +25 -0
  205. package/esm/configuration/tabixIndexFields.d.ts +44 -0
  206. package/esm/configuration/tabixIndexFields.js +45 -0
  207. package/esm/configuration/tabixShorthand.d.ts +34 -0
  208. package/esm/configuration/tabixShorthand.js +45 -0
  209. package/esm/configuration/types.d.ts +170 -7
  210. package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +24 -10
  211. package/esm/data_adapters/BaseAdapter/BaseAdapter.js +23 -15
  212. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +132 -7
  213. package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +136 -25
  214. package/esm/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.d.ts +1 -0
  215. package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.d.ts +13 -5
  216. package/esm/data_adapters/BaseAdapter/BaseSequenceAdapter.js +9 -7
  217. package/esm/data_adapters/BaseAdapter/BaseTextSearchAdapter.d.ts +2 -1
  218. package/esm/data_adapters/BaseAdapter/CytobandAdapter.d.ts +7 -0
  219. package/esm/data_adapters/BaseAdapter/RegionsAdapter.d.ts +2 -1
  220. package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +29 -0
  221. package/esm/data_adapters/BaseAdapter/featureDensity.js +17 -0
  222. package/esm/data_adapters/BaseAdapter/getAdapterId.d.ts +2 -0
  223. package/esm/data_adapters/BaseAdapter/getAdapterId.js +9 -0
  224. package/esm/data_adapters/BaseAdapter/index.d.ts +7 -4
  225. package/esm/data_adapters/BaseAdapter/index.js +6 -5
  226. package/esm/data_adapters/BaseAdapter/stats.d.ts +37 -5
  227. package/esm/data_adapters/BaseAdapter/stats.js +89 -24
  228. package/esm/data_adapters/BaseAdapter/types.d.ts +11 -8
  229. package/esm/data_adapters/BaseAdapter/types.js +1 -0
  230. package/esm/data_adapters/BaseAdapter/util.d.ts +5 -1
  231. package/esm/data_adapters/BaseAdapter/util.js +14 -3
  232. package/esm/data_adapters/CytobandAdapter/CytobandAdapter.d.ts +1 -1
  233. package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +4 -4
  234. package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +36 -4
  235. package/esm/data_adapters/CytobandAdapter/configSchema.js +46 -2
  236. package/esm/data_adapters/CytobandAdapter/index.js +3 -3
  237. package/esm/data_adapters/adapterSessionRefcount.d.ts +61 -0
  238. package/esm/data_adapters/adapterSessionRefcount.js +96 -0
  239. package/esm/data_adapters/dataAdapterCache.d.ts +35 -1
  240. package/esm/data_adapters/dataAdapterCache.js +62 -22
  241. package/esm/data_adapters/getFeatureAdapter.d.ts +22 -0
  242. package/esm/data_adapters/getFeatureAdapter.js +27 -0
  243. package/esm/data_adapters/getSequenceSubAdapter.d.ts +21 -0
  244. package/esm/data_adapters/getSequenceSubAdapter.js +44 -0
  245. package/esm/pluggableElementTypes/AdapterType.d.ts +52 -2
  246. package/esm/pluggableElementTypes/AdapterType.js +44 -5
  247. package/esm/pluggableElementTypes/AddTrackWorkflowType.d.ts +6 -1
  248. package/esm/pluggableElementTypes/AddTrackWorkflowType.js +3 -1
  249. package/esm/pluggableElementTypes/ConnectionType.d.ts +5 -5
  250. package/esm/pluggableElementTypes/ConnectionType.js +1 -1
  251. package/esm/pluggableElementTypes/DisplayType.d.ts +19 -10
  252. package/esm/pluggableElementTypes/DisplayType.js +53 -5
  253. package/esm/pluggableElementTypes/InternetAccountType.js +1 -1
  254. package/esm/pluggableElementTypes/PluggableElementBase.d.ts +13 -0
  255. package/esm/pluggableElementTypes/PluggableElementBase.js +13 -0
  256. package/esm/pluggableElementTypes/RpcMethodType.d.ts +132 -12
  257. package/esm/pluggableElementTypes/RpcMethodType.js +263 -98
  258. package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +19 -9
  259. package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.js +26 -20
  260. package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegion.d.ts +5 -0
  261. package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegion.js +18 -0
  262. package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegions.d.ts +5 -0
  263. package/esm/pluggableElementTypes/RpcMethodTypeWithRenameRegions.js +10 -0
  264. package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +3 -3
  265. package/esm/pluggableElementTypes/TextSearchAdapterType.js +3 -1
  266. package/esm/pluggableElementTypes/TrackType.d.ts +2 -1
  267. package/esm/pluggableElementTypes/TrackType.js +1 -1
  268. package/esm/pluggableElementTypes/ViewType.d.ts +27 -3
  269. package/esm/pluggableElementTypes/ViewType.js +84 -4
  270. package/esm/pluggableElementTypes/WidgetType.d.ts +2 -2
  271. package/esm/pluggableElementTypes/WidgetType.js +1 -1
  272. package/esm/pluggableElementTypes/addMenuItems.d.ts +87 -0
  273. package/esm/pluggableElementTypes/addMenuItems.js +82 -0
  274. package/esm/pluggableElementTypes/extendElementType.d.ts +30 -0
  275. package/esm/pluggableElementTypes/extendElementType.js +73 -0
  276. package/esm/pluggableElementTypes/index.d.ts +7 -7
  277. package/esm/pluggableElementTypes/index.js +24 -14
  278. package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +70 -15
  279. package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.js +90 -10
  280. package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +646 -84
  281. package/esm/pluggableElementTypes/models/BaseDisplayModel.js +241 -60
  282. package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +216 -35
  283. package/esm/pluggableElementTypes/models/BaseTrackModel.js +365 -83
  284. package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +216 -16
  285. package/esm/pluggableElementTypes/models/BaseViewModel.js +150 -16
  286. package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +51 -0
  287. package/esm/pluggableElementTypes/models/HighlightsMixin.js +78 -0
  288. package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +163 -29
  289. package/esm/pluggableElementTypes/models/InternetAccountModel.js +218 -48
  290. package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +177 -0
  291. package/esm/pluggableElementTypes/models/assertDisplayContract.js +239 -0
  292. package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -8
  293. package/esm/pluggableElementTypes/models/baseConnectionConfig.js +18 -2
  294. package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +39 -20
  295. package/esm/pluggableElementTypes/models/baseInternetAccountConfig.js +23 -2
  296. package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +181 -65
  297. package/esm/pluggableElementTypes/models/baseTrackConfig.js +191 -89
  298. package/esm/pluggableElementTypes/models/components/SaveTrackData.d.ts +3 -8
  299. package/esm/pluggableElementTypes/models/components/SaveTrackData.js +113 -139
  300. package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +55 -0
  301. package/esm/pluggableElementTypes/models/components/fetchTrackData.js +83 -0
  302. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +40 -0
  303. package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +115 -0
  304. package/esm/pluggableElementTypes/models/index.d.ts +6 -3
  305. package/esm/pluggableElementTypes/models/index.js +10 -8
  306. package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +34 -0
  307. package/esm/pluggableElementTypes/models/migrateTrackConfig.js +54 -0
  308. package/esm/pluggableElementTypes/models/saveTrackFileTypes/bed.js +75 -7
  309. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +9 -3
  310. package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +153 -103
  311. package/esm/pluggableElementTypes/models/saveTrackFileTypes/gff3.d.ts +6 -1
  312. package/esm/pluggableElementTypes/models/saveTrackFileTypes/gff3.js +70 -74
  313. package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +9 -1
  314. package/esm/pluggableElementTypes/models/saveTrackFileTypes/util.d.ts +21 -0
  315. package/esm/pluggableElementTypes/models/saveTrackFileTypes/util.js +51 -0
  316. package/esm/pluggableElementTypes/models/uriMatchesDomains.d.ts +29 -0
  317. package/esm/pluggableElementTypes/models/uriMatchesDomains.js +62 -0
  318. package/esm/pluggableElementTypes/renderers/util/serializableFilterChain.d.ts +5 -4
  319. package/esm/pluggableElementTypes/renderers/util/serializableFilterChain.js +20 -10
  320. package/esm/pluginDefinitions.d.ts +198 -0
  321. package/esm/pluginDefinitions.js +220 -0
  322. package/esm/rpc/BaseRpcDriver.d.ts +27 -35
  323. package/esm/rpc/BaseRpcDriver.js +74 -107
  324. package/esm/rpc/MainThreadRpcDriver.d.ts +9 -10
  325. package/esm/rpc/MainThreadRpcDriver.js +18 -29
  326. package/esm/rpc/RpcClient.d.ts +38 -0
  327. package/esm/rpc/RpcClient.js +154 -0
  328. package/esm/rpc/RpcManager.d.ts +116 -27
  329. package/esm/rpc/RpcManager.js +177 -50
  330. package/esm/rpc/RpcRegistry.d.ts +275 -0
  331. package/esm/rpc/RpcRegistry.js +1 -0
  332. package/esm/rpc/RpcServer.d.ts +41 -0
  333. package/esm/rpc/RpcServer.js +235 -0
  334. package/esm/rpc/WebWorkerRpcDriver.d.ts +71 -24
  335. package/esm/rpc/WebWorkerRpcDriver.js +312 -27
  336. package/esm/rpc/byteBudget.d.ts +58 -0
  337. package/esm/rpc/byteBudget.js +50 -0
  338. package/esm/rpc/configSchema.d.ts +27 -5
  339. package/esm/rpc/configSchema.js +40 -16
  340. package/esm/rpc/coreRpcMethods.d.ts +3 -5
  341. package/esm/rpc/coreRpcMethods.js +10 -12
  342. package/esm/rpc/explainTransferError.d.ts +35 -0
  343. package/esm/rpc/explainTransferError.js +158 -0
  344. package/esm/rpc/methods/CoreFreeResources.d.ts +19 -4
  345. package/esm/rpc/methods/CoreFreeResources.js +17 -6
  346. package/esm/rpc/methods/CoreGetExportData.d.ts +5 -18
  347. package/esm/rpc/methods/CoreGetExportData.js +26 -15
  348. package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
  349. package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
  350. package/esm/rpc/methods/CoreGetFeatures.d.ts +6 -15
  351. package/esm/rpc/methods/CoreGetFeatures.js +15 -17
  352. package/esm/rpc/methods/CoreGetInfo.d.ts +6 -0
  353. package/esm/rpc/methods/CoreGetInfo.js +12 -0
  354. package/esm/rpc/methods/CoreGetMetadata.d.ts +4 -7
  355. package/esm/rpc/methods/CoreGetMetadata.js +6 -9
  356. package/esm/rpc/methods/CoreGetRefNames.d.ts +4 -8
  357. package/esm/rpc/methods/CoreGetRefNames.js +24 -13
  358. package/esm/rpc/methods/CoreGetRegionByteEstimate.d.ts +6 -0
  359. package/esm/rpc/methods/CoreGetRegionByteEstimate.js +19 -0
  360. package/esm/rpc/methods/CoreGetRegions.d.ts +4 -6
  361. package/esm/rpc/methods/CoreGetRegions.js +6 -9
  362. package/esm/rpc/methods/CoreGetSequence.d.ts +4 -11
  363. package/esm/rpc/methods/CoreGetSequence.js +12 -13
  364. package/esm/rpc/serializeError/index.d.ts +9 -0
  365. package/esm/rpc/serializeError/index.js +86 -0
  366. package/esm/svg/SvgExport.d.ts +30 -0
  367. package/esm/svg/SvgExport.js +53 -0
  368. package/esm/svg/constants.d.ts +1 -0
  369. package/esm/svg/constants.js +5 -0
  370. package/esm/svg/saveSvgAsImage.d.ts +6 -0
  371. package/esm/svg/saveSvgAsImage.js +90 -0
  372. package/esm/svg/svgId.d.ts +42 -0
  373. package/esm/svg/svgId.js +84 -0
  374. package/esm/svg/svgReady.d.ts +137 -0
  375. package/esm/svg/svgReady.js +164 -0
  376. package/esm/svg/trackNames.d.ts +27 -0
  377. package/esm/svg/trackNames.js +31 -0
  378. package/esm/svg/wrapSvgExport.d.ts +12 -0
  379. package/esm/svg/wrapSvgExport.js +78 -0
  380. package/esm/ui/ActionLink.d.ts +7 -0
  381. package/esm/ui/ActionLink.js +9 -0
  382. package/esm/ui/AddCustomPluginDialog.d.ts +14 -0
  383. package/esm/ui/AddCustomPluginDialog.js +61 -0
  384. package/esm/ui/AddGenomePane.d.ts +8 -0
  385. package/esm/ui/AddGenomePane.js +228 -0
  386. package/esm/ui/AdvancedOptions.d.ts +6 -0
  387. package/esm/ui/AdvancedOptions.js +17 -0
  388. package/esm/ui/AppLogo.d.ts +1 -1
  389. package/esm/ui/AppLogo.js +2 -2
  390. package/esm/ui/AssemblySelector.d.ts +5 -8
  391. package/esm/ui/AssemblySelector.js +8 -26
  392. package/esm/ui/BaseExportSvgDialog.d.ts +16 -0
  393. package/esm/ui/BaseExportSvgDialog.js +84 -0
  394. package/esm/ui/BaseTooltip.d.ts +14 -3
  395. package/esm/ui/BaseTooltip.js +151 -34
  396. package/esm/ui/CascadingMenu.d.ts +9 -18
  397. package/esm/ui/CascadingMenu.js +390 -41
  398. package/esm/ui/CascadingMenuButton.d.ts +9 -11
  399. package/esm/ui/CascadingMenuButton.js +36 -18
  400. package/esm/ui/CascadingMenuHelpDialog.d.ts +2 -2
  401. package/esm/ui/CascadingMenuHelpDialog.js +4 -5
  402. package/esm/ui/CascadingMenuHelpIconButton.d.ts +2 -1
  403. package/esm/ui/CascadingMenuHelpIconButton.js +18 -9
  404. package/esm/ui/ColorPicker.d.ts +6 -9
  405. package/esm/ui/ColorPicker.js +36 -39
  406. package/esm/ui/ConfirmDialog.d.ts +2 -9
  407. package/esm/ui/ConfirmDialog.js +6 -9
  408. package/esm/ui/ContextMenu.d.ts +50 -0
  409. package/esm/ui/ContextMenu.js +55 -0
  410. package/esm/ui/CopyToClipboardButton.d.ts +10 -0
  411. package/esm/ui/CopyToClipboardButton.js +14 -0
  412. package/esm/ui/Crosshairs.d.ts +10 -0
  413. package/esm/ui/Crosshairs.js +15 -0
  414. package/esm/ui/DOMPurifySanitizedHTML.d.ts +1 -1
  415. package/esm/ui/DOMPurifySanitizedHTML.js +5 -5
  416. package/esm/ui/DataGridFlexContainer.d.ts +9 -2
  417. package/esm/ui/DataGridFlexContainer.js +4 -3
  418. package/esm/ui/Dialog.d.ts +5 -2
  419. package/esm/ui/Dialog.js +35 -27
  420. package/esm/ui/DraggableDialog.d.ts +3 -3
  421. package/esm/ui/DraggableDialog.js +50 -12
  422. package/esm/ui/DropDownMenu.d.ts +4 -2
  423. package/esm/ui/DropDownMenu.js +4 -4
  424. package/esm/ui/EditableTypography.d.ts +3 -1
  425. package/esm/ui/EditableTypography.js +34 -26
  426. package/esm/ui/ErrorActions.d.ts +24 -0
  427. package/esm/ui/ErrorActions.js +20 -0
  428. package/esm/ui/ErrorBanner.d.ts +7 -0
  429. package/esm/ui/ErrorBanner.js +35 -0
  430. package/esm/ui/ErrorBar.d.ts +6 -0
  431. package/esm/ui/ErrorBar.js +35 -0
  432. package/esm/ui/ErrorBoundary.d.ts +29 -5
  433. package/esm/ui/ErrorBoundary.js +32 -2
  434. package/esm/ui/ErrorMessage.d.ts +2 -4
  435. package/esm/ui/ErrorMessage.js +17 -52
  436. package/esm/ui/ErrorMessageStackTraceContents.d.ts +1 -1
  437. package/esm/ui/ErrorMessageStackTraceContents.js +3 -3
  438. package/esm/ui/ErrorMessageStackTraceDialog.d.ts +1 -1
  439. package/esm/ui/ErrorMessageStackTraceDialog.js +57 -96
  440. package/esm/ui/ErrorOverlay.d.ts +8 -0
  441. package/esm/ui/ErrorOverlay.js +5 -0
  442. package/esm/ui/ExportSvgDialog.d.ts +7 -0
  443. package/esm/ui/ExportSvgDialog.js +9 -0
  444. package/esm/ui/ExternalLink.d.ts +1 -1
  445. package/esm/ui/FactoryResetDialog.d.ts +1 -1
  446. package/esm/ui/FactoryResetDialog.js +6 -15
  447. package/esm/ui/FatalErrorDialog.d.ts +3 -2
  448. package/esm/ui/FatalErrorDialog.js +6 -5
  449. package/esm/ui/FileDropZone.d.ts +25 -0
  450. package/esm/ui/FileDropZone.js +128 -0
  451. package/esm/ui/FileSelector/FileSelector.d.ts +1 -1
  452. package/esm/ui/FileSelector/FileSelector.js +59 -30
  453. package/esm/ui/FileSelector/LocalFileChooser.d.ts +7 -2
  454. package/esm/ui/FileSelector/LocalFileChooser.js +61 -47
  455. package/esm/ui/FileSelector/LocationInput.d.ts +1 -1
  456. package/esm/ui/FileSelector/LocationInput.js +8 -12
  457. package/esm/ui/FileSelector/SourceTypeSelector.d.ts +5 -5
  458. package/esm/ui/FileSelector/SourceTypeSelector.js +9 -7
  459. package/esm/ui/FileSelector/UrlChooser.d.ts +1 -1
  460. package/esm/ui/FileSelector/UrlChooser.js +26 -2
  461. package/esm/ui/FileSelector/emptySourceType.d.ts +2 -0
  462. package/esm/ui/FileSelector/emptySourceType.js +14 -0
  463. package/esm/ui/FileSelector/useInternetAccounts.d.ts +383 -71
  464. package/esm/ui/FileSelector/useInternetAccounts.js +13 -6
  465. package/esm/ui/FileSelector/util.d.ts +58 -3
  466. package/esm/ui/FileSelector/util.js +128 -11
  467. package/esm/ui/GpuFallbackButton.d.ts +12 -0
  468. package/esm/ui/GpuFallbackButton.js +20 -0
  469. package/esm/ui/HoverMenu.d.ts +12 -3
  470. package/esm/ui/HoverMenu.js +31 -9
  471. package/esm/ui/HoverTooltip.d.ts +27 -0
  472. package/esm/ui/HoverTooltip.js +24 -0
  473. package/esm/ui/Icons.d.ts +6 -4
  474. package/esm/ui/Icons.js +9 -0
  475. package/esm/ui/InfoDialog.d.ts +7 -0
  476. package/esm/ui/InfoDialog.js +16 -0
  477. package/esm/ui/InlineMenuControls.d.ts +6 -0
  478. package/esm/ui/InlineMenuControls.js +17 -0
  479. package/esm/ui/JexlFilterDialog.d.ts +23 -0
  480. package/esm/ui/JexlFilterDialog.js +94 -0
  481. package/esm/ui/LabeledCheckbox.d.ts +9 -0
  482. package/esm/ui/LabeledCheckbox.js +7 -0
  483. package/esm/ui/LegendSwatchGlyph.d.ts +7 -0
  484. package/esm/ui/LegendSwatchGlyph.js +25 -0
  485. package/esm/ui/LoadingDots.d.ts +1 -0
  486. package/esm/ui/LoadingDots.js +30 -0
  487. package/esm/ui/LoadingEllipses.d.ts +17 -1
  488. package/esm/ui/LoadingEllipses.js +20 -29
  489. package/esm/ui/LoadingOverlay.d.ts +23 -0
  490. package/esm/ui/LoadingOverlay.js +137 -0
  491. package/esm/ui/LoadingProgress.d.ts +16 -0
  492. package/esm/ui/LoadingProgress.js +16 -0
  493. package/esm/ui/Logo.d.ts +2 -2
  494. package/esm/ui/Logo.js +23 -24
  495. package/esm/ui/Menu.js +1 -1
  496. package/esm/ui/MenuItemChevron.d.ts +3 -0
  497. package/esm/ui/MenuItemChevron.js +19 -0
  498. package/esm/ui/MenuItemEndDecoration.d.ts +4 -0
  499. package/esm/ui/MenuItemEndDecoration.js +28 -0
  500. package/esm/ui/MenuItemTrailing.d.ts +12 -0
  501. package/esm/ui/MenuItemTrailing.js +42 -0
  502. package/esm/ui/MenuTypes.d.ts +134 -5
  503. package/esm/ui/MenuTypes.js +16 -1
  504. package/esm/ui/MonospaceTextField.d.ts +9 -0
  505. package/esm/ui/MonospaceTextField.js +37 -0
  506. package/esm/ui/NumberTextField.d.ts +31 -0
  507. package/esm/ui/NumberTextField.js +33 -0
  508. package/esm/ui/PaletteContext.d.ts +92 -0
  509. package/esm/ui/PaletteContext.js +133 -0
  510. package/esm/ui/PinAdornment.d.ts +5 -0
  511. package/esm/ui/PinAdornment.js +85 -0
  512. package/esm/ui/PluggableComponent.d.ts +10 -0
  513. package/esm/ui/PluggableComponent.js +19 -0
  514. package/esm/ui/PluggableComponents.d.ts +29 -0
  515. package/esm/ui/PluggableComponents.js +28 -0
  516. package/esm/ui/PluggableElements.d.ts +23 -0
  517. package/esm/ui/PluggableElements.js +24 -0
  518. package/esm/ui/PluginStoreCard.d.ts +17 -0
  519. package/esm/ui/PluginStoreCard.js +45 -0
  520. package/esm/ui/PopoverPicker.d.ts +6 -0
  521. package/esm/ui/PopoverPicker.js +25 -0
  522. package/esm/ui/PrerenderedCanvas.d.ts +1 -1
  523. package/esm/ui/PrerenderedCanvas.js +5 -4
  524. package/esm/ui/ProgressChip.d.ts +37 -0
  525. package/esm/ui/ProgressChip.js +66 -0
  526. package/esm/ui/RedErrorMessageBox.d.ts +1 -1
  527. package/esm/ui/RedErrorMessageBox.js +9 -3
  528. package/esm/ui/RefNameAutocomplete/EndAdornment.d.ts +5 -0
  529. package/esm/ui/RefNameAutocomplete/EndAdornment.js +31 -0
  530. package/esm/ui/RefNameAutocomplete/HelpDialog.d.ts +3 -0
  531. package/esm/ui/RefNameAutocomplete/HelpDialog.js +7 -0
  532. package/esm/ui/RefNameAutocomplete/index.d.ts +22 -0
  533. package/esm/ui/RefNameAutocomplete/index.js +78 -0
  534. package/esm/ui/RefNameAutocomplete/util.d.ts +49 -0
  535. package/esm/ui/RefNameAutocomplete/util.js +168 -0
  536. package/esm/ui/ReplaceCurrentViewButton.d.ts +19 -0
  537. package/esm/ui/ReplaceCurrentViewButton.js +22 -0
  538. package/esm/ui/ResizeHandle.d.ts +13 -7
  539. package/esm/ui/ResizeHandle.js +42 -55
  540. package/esm/ui/ReturnToImportFormDialog.d.ts +1 -1
  541. package/esm/ui/ReturnToImportFormDialog.js +7 -9
  542. package/esm/ui/SanitizedHTML.d.ts +6 -1
  543. package/esm/ui/SanitizedHTML.js +7 -47
  544. package/esm/ui/ScrollEdgeShadow.d.ts +44 -0
  545. package/esm/ui/ScrollEdgeShadow.js +98 -0
  546. package/esm/ui/ScrollZoomToggle.d.ts +38 -0
  547. package/esm/ui/ScrollZoomToggle.js +92 -0
  548. package/esm/ui/SequenceAdapterInputs.d.ts +9 -0
  549. package/esm/ui/SequenceAdapterInputs.js +30 -0
  550. package/esm/ui/SettingsChangesTable.d.ts +14 -0
  551. package/esm/ui/SettingsChangesTable.js +49 -0
  552. package/esm/ui/ShareLinkField.d.ts +6 -0
  553. package/esm/ui/ShareLinkField.js +42 -0
  554. package/esm/ui/SingleSlider.d.ts +8 -0
  555. package/esm/ui/SingleSlider.js +11 -0
  556. package/esm/ui/SizeSliderRow.d.ts +16 -0
  557. package/esm/ui/SizeSliderRow.js +50 -0
  558. package/esm/ui/SliderTooltip.d.ts +2 -0
  559. package/esm/ui/SliderTooltip.js +17 -0
  560. package/esm/ui/Snackbar.d.ts +4 -2
  561. package/esm/ui/Snackbar.js +11 -8
  562. package/esm/ui/SnackbarContents.d.ts +1 -1
  563. package/esm/ui/SnackbarContents.js +21 -3
  564. package/esm/ui/SnackbarModel.d.ts +40 -0
  565. package/esm/ui/SnackbarModel.js +43 -11
  566. package/esm/ui/StackTraceButton.d.ts +5 -0
  567. package/esm/ui/StackTraceButton.js +16 -0
  568. package/esm/ui/StatusProgressBar.d.ts +37 -0
  569. package/esm/ui/StatusProgressBar.js +76 -0
  570. package/esm/ui/SubmitDialog.d.ts +6 -0
  571. package/esm/ui/SubmitDialog.js +9 -0
  572. package/esm/ui/SubmitForm.d.ts +23 -0
  573. package/esm/ui/SubmitForm.js +23 -0
  574. package/esm/ui/SvgColorLegend.d.ts +13 -0
  575. package/esm/ui/SvgColorLegend.js +65 -0
  576. package/esm/ui/SvgGradientLegend.d.ts +26 -0
  577. package/esm/ui/SvgGradientLegend.js +26 -0
  578. package/esm/ui/TagTextField.d.ts +40 -0
  579. package/esm/ui/TagTextField.js +32 -0
  580. package/esm/ui/VerticalScrollbar.d.ts +45 -0
  581. package/esm/ui/VerticalScrollbar.js +158 -0
  582. package/esm/ui/ViewLoadingScreen.d.ts +24 -0
  583. package/esm/ui/ViewLoadingScreen.js +76 -0
  584. package/esm/ui/addExtensionElement.d.ts +18 -0
  585. package/esm/ui/addExtensionElement.js +23 -0
  586. package/esm/ui/buildExtraTrackMenuItems.d.ts +22 -0
  587. package/esm/ui/buildExtraTrackMenuItems.js +14 -0
  588. package/esm/ui/colorSwatchStyle.d.ts +9 -0
  589. package/esm/ui/colorSwatchStyle.js +11 -0
  590. package/esm/ui/colors.d.ts +61 -8
  591. package/esm/ui/colors.js +135 -1
  592. package/esm/ui/extensionSelectors.d.ts +38 -0
  593. package/esm/ui/extensionSelectors.js +49 -0
  594. package/esm/ui/filterMenuItems.d.ts +112 -0
  595. package/esm/ui/filterMenuItems.js +86 -0
  596. package/esm/ui/formatErrorStack.d.ts +1 -0
  597. package/esm/ui/formatErrorStack.js +56 -0
  598. package/esm/ui/gpuFallback.d.ts +33 -0
  599. package/esm/ui/gpuFallback.js +39 -0
  600. package/esm/ui/highlightChipReveal.d.ts +32 -0
  601. package/esm/ui/highlightChipReveal.js +39 -0
  602. package/esm/ui/hoverBoxStyle.d.ts +11 -0
  603. package/esm/ui/hoverBoxStyle.js +13 -0
  604. package/esm/ui/index.d.ts +76 -4
  605. package/esm/ui/index.js +90 -19
  606. package/esm/ui/inlineMenuRowWidth.d.ts +1 -0
  607. package/esm/ui/inlineMenuRowWidth.js +8 -0
  608. package/esm/ui/launchTargetsMenuItem.d.ts +18 -0
  609. package/esm/ui/launchTargetsMenuItem.js +24 -0
  610. package/esm/ui/launchViewMenu.d.ts +4 -0
  611. package/esm/ui/launchViewMenu.js +42 -0
  612. package/esm/ui/legendMenuItem.d.ts +38 -0
  613. package/esm/ui/legendMenuItem.js +44 -0
  614. package/esm/ui/legendSpec.d.ts +62 -0
  615. package/esm/ui/legendSpec.js +78 -0
  616. package/esm/ui/loadingDotKeyframes.d.ts +18 -0
  617. package/esm/ui/loadingDotKeyframes.js +17 -0
  618. package/esm/ui/makeSizeMenu.d.ts +30 -0
  619. package/esm/ui/makeSizeMenu.js +82 -0
  620. package/esm/ui/mapStackTrace.d.ts +8 -0
  621. package/esm/ui/mapStackTrace.js +108 -0
  622. package/esm/ui/measureLegendText.d.ts +1 -0
  623. package/esm/ui/measureLegendText.js +8 -0
  624. package/esm/ui/menuItemAdornment.d.ts +33 -0
  625. package/esm/ui/menuItemAdornment.js +50 -0
  626. package/esm/ui/menuItems.d.ts +28 -0
  627. package/esm/ui/menuItems.js +26 -0
  628. package/esm/ui/menuLabels.d.ts +41 -0
  629. package/esm/ui/menuLabels.js +43 -0
  630. package/esm/ui/multiTrackMenuItems.d.ts +19 -0
  631. package/esm/ui/multiTrackMenuItems.js +15 -0
  632. package/esm/ui/palette.d.ts +559 -0
  633. package/esm/ui/palette.js +746 -0
  634. package/esm/ui/parseError.d.ts +4 -0
  635. package/esm/ui/parseError.js +18 -0
  636. package/esm/ui/persistentScrollbarStyle.d.ts +49 -0
  637. package/esm/ui/persistentScrollbarStyle.js +53 -0
  638. package/esm/ui/promotableMenuItems.d.ts +19 -0
  639. package/esm/ui/promotableMenuItems.js +91 -0
  640. package/esm/ui/promotablePinCoverage.d.ts +44 -0
  641. package/esm/ui/promotablePinCoverage.js +88 -0
  642. package/esm/ui/radioSubMenu.d.ts +33 -0
  643. package/esm/ui/radioSubMenu.js +32 -0
  644. package/esm/ui/react-colorful.js +5 -1
  645. package/esm/ui/replaceViewAction.d.ts +31 -0
  646. package/esm/ui/replaceViewAction.js +39 -0
  647. package/esm/ui/rewriteExternalAnchors.d.ts +1 -0
  648. package/esm/ui/rewriteExternalAnchors.js +8 -0
  649. package/esm/ui/scrollZoomLabels.d.ts +17 -0
  650. package/esm/ui/scrollZoomLabels.js +22 -0
  651. package/esm/ui/showSubMenu.d.ts +19 -0
  652. package/esm/ui/showSubMenu.js +30 -0
  653. package/esm/ui/sliderScale.d.ts +6 -0
  654. package/esm/ui/sliderScale.js +30 -0
  655. package/esm/ui/statusProgressKeyframes.d.ts +6 -0
  656. package/esm/ui/statusProgressKeyframes.js +14 -0
  657. package/esm/ui/stripStackTraceMessage.d.ts +1 -0
  658. package/esm/ui/stripStackTraceMessage.js +9 -0
  659. package/esm/ui/styleTheme.d.ts +158 -0
  660. package/esm/ui/styleTheme.js +115 -0
  661. package/esm/ui/submenuAim.d.ts +30 -0
  662. package/esm/ui/submenuAim.js +37 -0
  663. package/esm/ui/theme.d.ts +343 -29
  664. package/esm/ui/theme.js +258 -342
  665. package/esm/ui/toggleMenuItems.d.ts +42 -0
  666. package/esm/ui/toggleMenuItems.js +60 -0
  667. package/esm/ui/useAssemblySelection.d.ts +153 -0
  668. package/esm/ui/useAssemblySelection.js +54 -0
  669. package/esm/ui/useCoalescedPointer.d.ts +36 -0
  670. package/esm/ui/useCoalescedPointer.js +60 -0
  671. package/esm/ui/useCopyToClipboard.d.ts +15 -0
  672. package/esm/ui/useCopyToClipboard.js +41 -0
  673. package/esm/ui/useExportSvgPreference.d.ts +1 -0
  674. package/esm/ui/useExportSvgPreference.js +4 -0
  675. package/esm/ui/useMouseTracking.d.ts +71 -0
  676. package/esm/ui/useMouseTracking.js +179 -0
  677. package/esm/ui/useRecentLocations.d.ts +28 -0
  678. package/esm/ui/useRecentLocations.js +31 -0
  679. package/esm/ui/wrapComponent.d.ts +47 -0
  680. package/esm/ui/wrapComponent.js +58 -0
  681. package/esm/ui/zIndexes.d.ts +28 -0
  682. package/esm/ui/zIndexes.js +38 -0
  683. package/esm/util/Base1DUtils.d.ts +204 -16
  684. package/esm/util/Base1DUtils.js +310 -175
  685. package/esm/util/Base1DViewModel.d.ts +97 -20
  686. package/esm/util/Base1DViewModel.js +148 -39
  687. package/esm/util/FileSaver/index.d.ts +1 -0
  688. package/esm/util/FileSaver/index.js +27 -0
  689. package/esm/util/IntervalTree.d.ts +18 -39
  690. package/esm/util/IntervalTree.js +63 -244
  691. package/esm/util/SvgCanvas.d.ts +81 -0
  692. package/esm/util/SvgCanvas.js +500 -0
  693. package/esm/util/TimeTraveller.d.ts +12 -0
  694. package/esm/util/TimeTraveller.js +130 -27
  695. package/esm/util/aborting.d.ts +17 -4
  696. package/esm/util/aborting.js +30 -25
  697. package/esm/util/adapterMetadata.d.ts +20 -0
  698. package/esm/util/adapterMetadata.js +39 -0
  699. package/esm/util/addAndShowTrack.d.ts +22 -0
  700. package/esm/util/addAndShowTrack.js +27 -0
  701. package/esm/util/addRelativeUris.d.ts +17 -0
  702. package/esm/util/addRelativeUris.js +42 -0
  703. package/esm/util/addTrackComponent.d.ts +72 -0
  704. package/esm/util/addTrackComponent.js +53 -0
  705. package/esm/util/addTrackFromWidget.d.ts +94 -0
  706. package/esm/util/addTrackFromWidget.js +90 -0
  707. package/esm/util/analytics.d.ts +32 -3
  708. package/esm/util/analytics.js +102 -49
  709. package/esm/util/animationAllowed.d.ts +17 -0
  710. package/esm/util/animationAllowed.js +22 -0
  711. package/esm/util/applyRowResizeWheel.d.ts +10 -0
  712. package/esm/util/applyRowResizeWheel.js +34 -0
  713. package/esm/util/assemblyConfigUtils.d.ts +144 -0
  714. package/esm/util/assemblyConfigUtils.js +498 -0
  715. package/esm/util/bandHeight.d.ts +53 -0
  716. package/esm/util/bandHeight.js +56 -0
  717. package/esm/util/bandLayout.d.ts +51 -0
  718. package/esm/util/bandLayout.js +36 -0
  719. package/esm/util/bezierConnector.d.ts +14 -0
  720. package/esm/util/bezierConnector.js +108 -0
  721. package/esm/util/bgzfWorkerPool.d.ts +78 -0
  722. package/esm/util/bgzfWorkerPool.js +81 -0
  723. package/esm/util/blockTypes.d.ts +64 -45
  724. package/esm/util/blockTypes.js +67 -74
  725. package/esm/util/bpUtils.d.ts +81 -0
  726. package/esm/util/bpUtils.js +103 -0
  727. package/esm/util/cacheBudgets.d.ts +55 -0
  728. package/esm/util/cacheBudgets.js +55 -0
  729. package/esm/util/cachedSetup.d.ts +51 -0
  730. package/esm/util/cachedSetup.js +87 -0
  731. package/esm/util/calculateDynamicBlocks.d.ts +5 -0
  732. package/esm/util/calculateDynamicBlocks.js +85 -82
  733. package/esm/util/calculateStaticBlocks.d.ts +2 -3
  734. package/esm/util/calculateStaticBlocks.js +48 -71
  735. package/esm/util/chooseGridPitch.d.ts +9 -0
  736. package/esm/util/chooseGridPitch.js +31 -0
  737. package/esm/util/clampToContig.d.ts +26 -0
  738. package/esm/util/clampToContig.js +28 -0
  739. package/esm/util/cmpStr.d.ts +1 -0
  740. package/esm/util/cmpStr.js +7 -0
  741. package/esm/util/coarseStripHTML.js +3 -15
  742. package/esm/util/color/cssColorsLevel4.js +6 -2
  743. package/esm/util/color/index.d.ts +81 -2
  744. package/esm/util/color/index.js +194 -25
  745. package/esm/util/color-bits/bit.d.ts +4 -0
  746. package/esm/util/color-bits/bit.js +37 -0
  747. package/esm/util/color-bits/convert.d.ts +23 -0
  748. package/esm/util/color-bits/convert.js +294 -0
  749. package/esm/util/color-bits/core.d.ts +34 -0
  750. package/esm/util/color-bits/core.js +67 -0
  751. package/esm/util/color-bits/format.d.ts +24 -0
  752. package/esm/util/color-bits/format.js +82 -0
  753. package/esm/util/color-bits/functions.d.ts +33 -0
  754. package/esm/util/color-bits/functions.js +70 -0
  755. package/esm/util/color-bits/index.d.ts +5 -0
  756. package/esm/util/color-bits/index.js +4 -0
  757. package/esm/util/color-bits/parse.d.ts +17 -0
  758. package/esm/util/color-bits/parse.js +382 -0
  759. package/esm/util/colorBits.d.ts +39 -0
  760. package/esm/util/colorBits.js +180 -0
  761. package/esm/util/colorRamp.d.ts +37 -0
  762. package/esm/util/colorRamp.js +93 -0
  763. package/esm/util/colord.d.ts +8 -0
  764. package/esm/util/colord.js +43 -191
  765. package/esm/util/convertCodingSequenceToPeptides.d.ts +17 -3
  766. package/esm/util/convertCodingSequenceToPeptides.js +51 -4
  767. package/esm/util/copyText.d.ts +18 -0
  768. package/esm/util/copyText.js +30 -0
  769. package/esm/util/copyToClipboard.d.ts +4 -0
  770. package/esm/util/copyToClipboard.js +58 -0
  771. package/esm/util/createStopTokenRotation.d.ts +118 -0
  772. package/esm/util/createStopTokenRotation.js +127 -0
  773. package/esm/util/createSvgRasterCanvas.d.ts +7 -0
  774. package/esm/util/createSvgRasterCanvas.js +22 -0
  775. package/esm/util/crypto.d.ts +24 -0
  776. package/esm/util/crypto.js +85 -2
  777. package/esm/util/dataGridUtils.d.ts +9 -0
  778. package/esm/util/dataGridUtils.js +36 -0
  779. package/esm/util/dedupe.js +1 -0
  780. package/esm/util/deepEqual.d.ts +8 -0
  781. package/esm/util/deepEqual.js +22 -0
  782. package/esm/util/deepMerge.d.ts +20 -0
  783. package/esm/util/deepMerge.js +44 -0
  784. package/esm/util/diagonalizeRegions.d.ts +23 -0
  785. package/esm/util/diagonalizeRegions.js +192 -0
  786. package/esm/util/environment.d.ts +4 -0
  787. package/esm/util/environment.js +43 -0
  788. package/esm/util/eventPoint.d.ts +32 -0
  789. package/esm/util/eventPoint.js +28 -0
  790. package/esm/util/fetchAndMaybeUnzip.d.ts +6 -0
  791. package/esm/util/fetchAndMaybeUnzip.js +64 -0
  792. package/esm/util/fetchContext.d.ts +82 -0
  793. package/esm/util/fetchContext.js +59 -0
  794. package/esm/util/fetchHub.d.ts +15 -0
  795. package/esm/util/fetchHub.js +31 -0
  796. package/esm/util/fetchJson.d.ts +1 -0
  797. package/esm/util/fetchJson.js +7 -0
  798. package/esm/util/fetchPhases.d.ts +77 -0
  799. package/esm/util/fetchPhases.js +1 -0
  800. package/esm/util/fetchSeq.d.ts +5 -1
  801. package/esm/util/fetchSeq.js +18 -6
  802. package/esm/util/fileHandleStore.d.ts +19 -2
  803. package/esm/util/fileHandleStore.js +95 -35
  804. package/esm/util/flatbush/index.d.ts +27 -6
  805. package/esm/util/flatbush/index.js +194 -218
  806. package/esm/util/formatBytes.d.ts +9 -0
  807. package/esm/util/formatBytes.js +18 -0
  808. package/esm/util/formatFastaStrings.d.ts +13 -0
  809. package/esm/util/formatFastaStrings.js +13 -0
  810. package/esm/util/formatGuessers.d.ts +30 -0
  811. package/esm/util/formatGuessers.js +69 -0
  812. package/esm/util/formatRelativeTime.d.ts +1 -0
  813. package/esm/util/formatRelativeTime.js +25 -0
  814. package/esm/util/frameCoalescer.d.ts +30 -0
  815. package/esm/util/frameCoalescer.js +22 -0
  816. package/esm/util/freezeDeep.d.ts +28 -0
  817. package/esm/util/freezeDeep.js +41 -0
  818. package/esm/util/geneticCodes.d.ts +56 -0
  819. package/esm/util/geneticCodes.js +371 -0
  820. package/esm/util/getFileName.d.ts +11 -0
  821. package/esm/util/getFileName.js +34 -0
  822. package/esm/util/getLocationUri.d.ts +49 -0
  823. package/esm/util/getLocationUri.js +63 -0
  824. package/esm/util/getRelativeX.d.ts +4 -0
  825. package/esm/util/getRelativeX.js +7 -0
  826. package/esm/util/getStr.d.ts +6 -0
  827. package/esm/util/getStr.js +15 -0
  828. package/esm/util/highlights.d.ts +21 -0
  829. package/esm/util/highlights.js +100 -0
  830. package/esm/util/hooks.d.ts +168 -0
  831. package/esm/util/hooks.js +443 -0
  832. package/esm/util/htmlText.d.ts +13 -0
  833. package/esm/util/htmlText.js +66 -0
  834. package/esm/util/idMaker.d.ts +1 -1
  835. package/esm/util/idMaker.js +31 -18
  836. package/esm/util/index.d.ts +81 -268
  837. package/esm/util/index.js +135 -853
  838. package/esm/util/indexCandidates.d.ts +50 -0
  839. package/esm/util/indexCandidates.js +101 -0
  840. package/esm/util/installClearHoverOnSurfaceMove.d.ts +40 -0
  841. package/esm/util/installClearHoverOnSurfaceMove.js +41 -0
  842. package/esm/util/installFetch.d.ts +220 -0
  843. package/esm/util/installFetch.js +206 -0
  844. package/esm/util/installInitAutorun.d.ts +62 -0
  845. package/esm/util/installInitAutorun.js +107 -0
  846. package/esm/util/intervals.d.ts +20 -0
  847. package/esm/util/intervals.js +37 -0
  848. package/esm/util/io/RemoteFileWithRangeCache.d.ts +10 -11
  849. package/esm/util/io/RemoteFileWithRangeCache.js +10 -148
  850. package/esm/util/io/index.d.ts +39 -2
  851. package/esm/util/io/index.js +115 -12
  852. package/esm/util/isDataCurrent.d.ts +7 -0
  853. package/esm/util/isDataCurrent.js +9 -0
  854. package/esm/util/isWebWorker.js +1 -2
  855. package/esm/util/iupac.d.ts +4 -0
  856. package/esm/util/iupac.js +59 -0
  857. package/esm/util/jexl.js +141 -17
  858. package/esm/util/jexlFilters.d.ts +75 -0
  859. package/esm/util/jexlFilters.js +49 -0
  860. package/esm/util/jexlStrings.d.ts +22 -1
  861. package/esm/util/jexlStrings.js +21 -14
  862. package/esm/util/layouts/GranularRectLayout.d.ts +13 -25
  863. package/esm/util/layouts/GranularRectLayout.js +99 -356
  864. package/esm/util/layouts/index.d.ts +1 -7
  865. package/esm/util/layouts/index.js +2 -6
  866. package/esm/util/layouts/intervalUtils.d.ts +12 -1
  867. package/esm/util/layouts/intervalUtils.js +13 -31
  868. package/esm/util/layouts/placeRect.d.ts +50 -0
  869. package/esm/util/layouts/placeRect.js +97 -0
  870. package/esm/util/lazyAfterAttach.d.ts +13 -0
  871. package/esm/util/lazyAfterAttach.js +31 -0
  872. package/esm/util/leadingEdgeAutorun.d.ts +40 -0
  873. package/esm/util/leadingEdgeAutorun.js +51 -0
  874. package/esm/util/legendCandidates.d.ts +50 -0
  875. package/esm/util/legendCandidates.js +87 -0
  876. package/esm/util/librpc.d.ts +5 -2
  877. package/esm/util/librpc.js +6 -1
  878. package/esm/util/linkify.js +2 -0
  879. package/esm/util/locString.d.ts +72 -0
  880. package/esm/util/locString.js +178 -7
  881. package/esm/util/locStringsToRegions.d.ts +10 -0
  882. package/esm/util/locStringsToRegions.js +35 -0
  883. package/esm/util/localStorage.d.ts +36 -0
  884. package/esm/util/localStorage.js +137 -0
  885. package/esm/util/makeAssembly.d.ts +54 -0
  886. package/esm/util/makeAssembly.js +52 -0
  887. package/esm/util/makeTrackId.d.ts +14 -0
  888. package/esm/util/makeTrackId.js +14 -0
  889. package/esm/util/matchTrackId.d.ts +11 -0
  890. package/esm/util/matchTrackId.js +14 -0
  891. package/esm/util/measureText.d.ts +24 -0
  892. package/esm/util/measureText.js +51 -0
  893. package/esm/util/mst-reflection.d.ts +14 -4
  894. package/esm/util/mst-reflection.js +33 -32
  895. package/esm/util/mstUtils.d.ts +100 -0
  896. package/esm/util/mstUtils.js +140 -0
  897. package/esm/util/nanoid.d.ts +0 -4
  898. package/esm/util/nanoid.js +10 -20
  899. package/esm/util/numericUtils.d.ts +20 -0
  900. package/esm/util/numericUtils.js +127 -0
  901. package/esm/util/objectUtils.d.ts +2 -0
  902. package/esm/util/objectUtils.js +9 -0
  903. package/esm/util/offscreenCanvasPonyfill.d.ts +5 -4
  904. package/esm/util/offscreenCanvasPonyfill.js +5 -47
  905. package/esm/util/openDisplays.d.ts +23 -0
  906. package/esm/util/openDisplays.js +79 -0
  907. package/esm/util/openFeatureWidget.d.ts +33 -0
  908. package/esm/util/openFeatureWidget.js +64 -0
  909. package/esm/util/paintLayer.d.ts +32 -0
  910. package/esm/util/paintLayer.js +33 -0
  911. package/esm/util/parentWalk.d.ts +32 -0
  912. package/esm/util/parentWalk.js +84 -0
  913. package/esm/util/parseLineByLine.d.ts +45 -2
  914. package/esm/util/parseLineByLine.js +156 -15
  915. package/esm/util/parseMotifList.d.ts +17 -0
  916. package/esm/util/parseMotifList.js +69 -0
  917. package/esm/util/pluginStore.d.ts +114 -0
  918. package/esm/util/pluginStore.js +260 -0
  919. package/esm/util/pointerPresence.d.ts +5 -0
  920. package/esm/util/pointerPresence.js +21 -0
  921. package/esm/util/progress.d.ts +459 -0
  922. package/esm/util/progress.js +820 -0
  923. package/esm/util/range.d.ts +46 -1
  924. package/esm/util/range.js +68 -2
  925. package/esm/util/renameRegions.d.ts +21 -0
  926. package/esm/util/renameRegions.js +129 -0
  927. package/esm/util/renderToStaticMarkup.d.ts +2 -0
  928. package/esm/util/renderToStaticMarkup.js +50 -0
  929. package/esm/util/reorder.d.ts +35 -0
  930. package/esm/util/reorder.js +83 -0
  931. package/esm/util/resolveRowHeight.d.ts +27 -0
  932. package/esm/util/resolveRowHeight.js +30 -0
  933. package/esm/util/revlist.d.ts +13 -0
  934. package/esm/util/revlist.js +14 -0
  935. package/esm/util/rowStackGeometry.d.ts +66 -0
  936. package/esm/util/rowStackGeometry.js +70 -0
  937. package/esm/util/rpc.d.ts +16 -1
  938. package/esm/util/rpc.js +12 -1
  939. package/esm/util/rxjs.d.ts +30 -1
  940. package/esm/util/rxjs.js +88 -10
  941. package/esm/util/sameStrings.d.ts +16 -0
  942. package/esm/util/sameStrings.js +20 -0
  943. package/esm/util/scrollLatch.d.ts +4 -0
  944. package/esm/util/scrollLatch.js +59 -0
  945. package/esm/util/selectNamedRegions.d.ts +136 -0
  946. package/esm/util/selectNamedRegions.js +222 -0
  947. package/esm/util/seqUtils.d.ts +17 -0
  948. package/esm/util/seqUtils.js +80 -0
  949. package/esm/util/sessionServices.d.ts +29 -0
  950. package/esm/util/sessionServices.js +46 -0
  951. package/esm/util/sessionSharing.d.ts +38 -0
  952. package/esm/util/sessionSharing.js +154 -0
  953. package/esm/util/sessionStorage.d.ts +1 -0
  954. package/esm/util/sessionStorage.js +15 -0
  955. package/esm/util/setStackTraceLimit.d.ts +6 -0
  956. package/esm/util/setStackTraceLimit.js +20 -0
  957. package/esm/util/simpleFeature.d.ts +112 -4
  958. package/esm/util/simpleFeature.js +181 -29
  959. package/esm/util/springAnimate.d.ts +20 -0
  960. package/esm/util/springAnimate.js +80 -0
  961. package/esm/util/stats.d.ts +25 -2
  962. package/esm/util/stats.js +39 -8
  963. package/esm/util/stopToken.d.ts +207 -15
  964. package/esm/util/stopToken.js +403 -55
  965. package/esm/util/stringUtils.d.ts +5 -0
  966. package/esm/util/stringUtils.js +34 -0
  967. package/esm/util/svgColorProps.d.ts +7 -0
  968. package/esm/util/svgColorProps.js +28 -0
  969. package/esm/util/tabix.d.ts +126 -0
  970. package/esm/util/tabix.js +149 -0
  971. package/esm/util/tags.d.ts +2 -0
  972. package/esm/util/tags.js +5 -0
  973. package/esm/util/temporaryAssembly.d.ts +21 -0
  974. package/esm/util/temporaryAssembly.js +29 -0
  975. package/esm/util/tickLabels.d.ts +36 -0
  976. package/esm/util/tickLabels.js +45 -0
  977. package/esm/util/timeGate.d.ts +26 -0
  978. package/esm/util/timeGate.js +79 -0
  979. package/esm/util/trackConfigDelta.d.ts +84 -0
  980. package/esm/util/trackConfigDelta.js +190 -0
  981. package/esm/util/tracks.d.ts +398 -30
  982. package/esm/util/tracks.js +699 -191
  983. package/esm/util/tss-react/cssAndCx.js +11 -66
  984. package/esm/util/tss-react/index.d.ts +11 -2
  985. package/esm/util/tss-react/index.js +9 -2
  986. package/esm/util/tss-react/makeStyles.js +7 -4
  987. package/esm/util/tss-react/mergeClasses.js +1 -0
  988. package/esm/util/tss-react/tools/classnames.d.ts +3 -0
  989. package/esm/util/tss-react/tools/classnames.js +3 -0
  990. package/esm/util/tss-react/tools/getDependencyArrayRef.d.ts +18 -0
  991. package/esm/util/tss-react/tools/getDependencyArrayRef.js +19 -0
  992. package/esm/util/tss-react/types.d.ts +1 -1
  993. package/esm/util/tss-react/types.js +1 -6
  994. package/esm/util/types/ElementId.js +1 -1
  995. package/esm/util/types/data.d.ts +75 -0
  996. package/esm/util/types/data.js +41 -0
  997. package/esm/util/types/index.d.ts +402 -120
  998. package/esm/util/types/index.js +90 -64
  999. package/esm/util/types/isAny.d.ts +11 -0
  1000. package/esm/util/types/isAny.js +1 -0
  1001. package/esm/util/types/mst.d.ts +71 -47
  1002. package/esm/util/types/mst.js +27 -22
  1003. package/esm/util/types/predicate.d.ts +9 -0
  1004. package/esm/util/types/predicate.js +1 -0
  1005. package/esm/util/types/renderingServices.d.ts +16 -0
  1006. package/esm/util/types/renderingServices.js +1 -0
  1007. package/esm/util/types/services.d.ts +55 -0
  1008. package/esm/util/types/services.js +10 -0
  1009. package/esm/util/types/util.d.ts +8 -2
  1010. package/esm/util/unknownSnapshotKeys.d.ts +36 -0
  1011. package/esm/util/unknownSnapshotKeys.js +69 -0
  1012. package/esm/util/unzip.d.ts +1 -0
  1013. package/esm/util/unzip.js +6 -0
  1014. package/esm/util/useEventCallback.d.ts +1 -0
  1015. package/esm/util/useEventCallback.js +16 -0
  1016. package/esm/util/useFeatureSequence.d.ts +13 -7
  1017. package/esm/util/useFeatureSequence.js +56 -78
  1018. package/esm/util/useFetch.d.ts +56 -0
  1019. package/esm/util/useFetch.js +188 -0
  1020. package/esm/util/useFetchPlugins.d.ts +12 -0
  1021. package/esm/util/useFetchPlugins.js +14 -0
  1022. package/esm/util/useMeasure.d.ts +11 -1
  1023. package/esm/util/useMeasure.js +20 -6
  1024. package/esm/util/usePanZoom.d.ts +75 -0
  1025. package/esm/util/usePanZoom.js +175 -0
  1026. package/esm/util/usePanelVirtualScroll.d.ts +37 -0
  1027. package/esm/util/usePanelVirtualScroll.js +42 -0
  1028. package/esm/util/usePointerDrag.d.ts +37 -0
  1029. package/esm/util/usePointerDrag.js +61 -0
  1030. package/esm/util/useRafCommit.d.ts +4 -0
  1031. package/esm/util/useRafCommit.js +50 -0
  1032. package/esm/util/useResizeDrag.d.ts +91 -0
  1033. package/esm/util/useResizeDrag.js +105 -0
  1034. package/esm/util/useRowVirtualScroll.d.ts +32 -0
  1035. package/esm/util/useRowVirtualScroll.js +63 -0
  1036. package/esm/util/useVirtualScrollWheel.d.ts +7 -0
  1037. package/esm/util/useVirtualScrollWheel.js +108 -0
  1038. package/esm/util/viewStatus.d.ts +81 -0
  1039. package/esm/util/viewStatus.js +37 -0
  1040. package/esm/util/virtualRange.d.ts +36 -0
  1041. package/esm/util/virtualRange.js +26 -0
  1042. package/esm/util/webStorage.d.ts +26 -0
  1043. package/esm/util/webStorage.js +92 -0
  1044. package/esm/util/wheelZoom.d.ts +59 -0
  1045. package/esm/util/wheelZoom.js +231 -0
  1046. package/esm/util/whenViewSettled.d.ts +40 -0
  1047. package/esm/util/whenViewSettled.js +41 -0
  1048. package/esm/util/withFeatureDetails.d.ts +34 -0
  1049. package/esm/util/withFeatureDetails.js +59 -0
  1050. package/esm/util/withLaunchInput.d.ts +123 -0
  1051. package/esm/util/withLaunchInput.js +228 -0
  1052. package/package.json +243 -820
  1053. package/esm/ReExports/DataGrid.d.ts +0 -1
  1054. package/esm/ReExports/DataGrid.js +0 -1
  1055. package/esm/configuration/util.d.ts +0 -10
  1056. package/esm/configuration/util.js +0 -123
  1057. package/esm/data_adapters/BaseAdapter/BaseOptions.d.ts +0 -18
  1058. package/esm/data_adapters/util.d.ts +0 -1
  1059. package/esm/data_adapters/util.js +0 -6
  1060. package/esm/pluggableElementTypes/GlyphType.d.ts +0 -43
  1061. package/esm/pluggableElementTypes/GlyphType.js +0 -18
  1062. package/esm/pluggableElementTypes/models/saveTrackFileTypes/fetchSequence.d.ts +0 -5
  1063. package/esm/pluggableElementTypes/models/saveTrackFileTypes/fetchSequence.js +0 -17
  1064. package/esm/pluggableElementTypes/renderers/BoxRendererType.d.ts +0 -52
  1065. package/esm/pluggableElementTypes/renderers/BoxRendererType.js +0 -78
  1066. package/esm/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +0 -4
  1067. package/esm/pluggableElementTypes/renderers/CircularChordRendererType.js +0 -4
  1068. package/esm/pluggableElementTypes/renderers/FeatureRendererType.d.ts +0 -58
  1069. package/esm/pluggableElementTypes/renderers/FeatureRendererType.js +0 -77
  1070. package/esm/pluggableElementTypes/renderers/LayoutSession.d.ts +0 -31
  1071. package/esm/pluggableElementTypes/renderers/LayoutSession.js +0 -40
  1072. package/esm/pluggableElementTypes/renderers/RendererType.d.ts +0 -28
  1073. package/esm/pluggableElementTypes/renderers/RendererType.js +0 -20
  1074. package/esm/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +0 -58
  1075. package/esm/pluggableElementTypes/renderers/ServerSideRendererType.js +0 -108
  1076. package/esm/pluggableElementTypes/renderers/index.d.ts +0 -6
  1077. package/esm/pluggableElementTypes/renderers/index.js +0 -6
  1078. package/esm/pluggableElementTypes/renderers/util.d.ts +0 -3
  1079. package/esm/pluggableElementTypes/renderers/util.js +0 -14
  1080. package/esm/rpc/baseRpcConfig.d.ts +0 -8
  1081. package/esm/rpc/baseRpcConfig.js +0 -10
  1082. package/esm/rpc/mainThreadRpcConfig.d.ts +0 -8
  1083. package/esm/rpc/mainThreadRpcConfig.js +0 -8
  1084. package/esm/rpc/methods/CoreGetFeatureDensityStats.d.ts +0 -17
  1085. package/esm/rpc/methods/CoreGetFeatureDensityStats.js +0 -25
  1086. package/esm/rpc/methods/CoreGetFeatureDetails.d.ts +0 -11
  1087. package/esm/rpc/methods/CoreGetFeatureDetails.js +0 -24
  1088. package/esm/rpc/methods/CoreGetFileInfo.d.ts +0 -9
  1089. package/esm/rpc/methods/CoreGetFileInfo.js +0 -15
  1090. package/esm/rpc/methods/CoreRender.d.ts +0 -14
  1091. package/esm/rpc/methods/CoreRender.js +0 -40
  1092. package/esm/rpc/methods/CoreSaveFeatureData.d.ts +0 -16
  1093. package/esm/rpc/methods/CoreSaveFeatureData.js +0 -32
  1094. package/esm/rpc/methods/util.d.ts +0 -15
  1095. package/esm/rpc/methods/util.js +0 -7
  1096. package/esm/rpc/webWorkerRpcConfig.d.ts +0 -8
  1097. package/esm/rpc/webWorkerRpcConfig.js +0 -8
  1098. package/esm/ui/MenuButton.d.ts +0 -1
  1099. package/esm/ui/MenuButton.js +0 -1
  1100. package/esm/ui/MenuItems.d.ts +0 -15
  1101. package/esm/ui/MenuItems.js +0 -59
  1102. package/esm/ui/useEvent.d.ts +0 -1
  1103. package/esm/ui/useEvent.js +0 -10
  1104. package/esm/util/blobToDataURL.d.ts +0 -1
  1105. package/esm/util/blobToDataURL.js +0 -14
  1106. package/esm/util/compositeMap.d.ts +0 -11
  1107. package/esm/util/compositeMap.js +0 -59
  1108. package/esm/util/flatqueue/index.d.ts +0 -11
  1109. package/esm/util/flatqueue/index.js +0 -61
  1110. package/esm/util/layouts/BaseLayout.d.ts +0 -30
  1111. package/esm/util/layouts/MultiLayout.d.ts +0 -12
  1112. package/esm/util/layouts/MultiLayout.js +0 -40
  1113. package/esm/util/layouts/PileupLayout.d.ts +0 -41
  1114. package/esm/util/layouts/PileupLayout.js +0 -202
  1115. package/esm/util/layouts/PrecomputedLayout.d.ts +0 -30
  1116. package/esm/util/layouts/PrecomputedLayout.js +0 -71
  1117. package/esm/util/layouts/SceneGraph.d.ts +0 -31
  1118. package/esm/util/layouts/SceneGraph.js +0 -121
  1119. package/esm/util/makeAbortableReaction.d.ts +0 -3
  1120. package/esm/util/makeAbortableReaction.js +0 -47
  1121. package/esm/util/map-obj/index.d.ts +0 -13
  1122. package/esm/util/map-obj/index.js +0 -92
  1123. package/esm/util/nextTick.d.ts +0 -1
  1124. package/esm/util/nextTick.js +0 -3
  1125. package/esm/util/offscreenCanvasGetSerializingSvg.d.ts +0 -5
  1126. package/esm/util/offscreenCanvasGetSerializingSvg.js +0 -9
  1127. package/esm/util/offscreenCanvasUtils.d.ts +0 -12
  1128. package/esm/util/offscreenCanvasUtils.js +0 -19
  1129. package/esm/util/renderToAbstractCanvas.d.ts +0 -17
  1130. package/esm/util/renderToAbstractCanvas.js +0 -53
  1131. package/esm/util/transferables.d.ts +0 -2
  1132. package/esm/util/transferables.js +0 -35
  1133. package/esm/util/tss-react/mui/index.d.ts +0 -1
  1134. package/esm/util/tss-react/mui/index.js +0 -1
  1135. package/esm/util/tss-react/mui/mui.d.ts +0 -10
  1136. package/esm/util/tss-react/mui/mui.js +0 -5
  1137. package/esm/util/when.d.ts +0 -1
  1138. package/esm/util/when.js +0 -1
  1139. /package/esm/{data_adapters/BaseAdapter/BaseOptions.js → configuration/promotablePin.js} +0 -0
  1140. /package/esm/{util/layouts/BaseLayout.js → data_adapters/BaseAdapter/CytobandAdapter.js} +0 -0
@@ -0,0 +1,746 @@
1
+ /**
2
+ * JBrowse's colors, as plain data.
3
+ *
4
+ * This module is the single place a color is decided. It imports no UI toolkit,
5
+ * so it loads in an RPC worker, in a GPU renderer, and in an embedding app that
6
+ * has never heard of Material UI. `theme.ts` is a *consumer*: it takes what
7
+ * `resolvePalette` produces and splices it into an MUI theme, so JBrowse's own
8
+ * Material UI chrome and JBrowse's renderers cannot disagree about what
9
+ * `highlight` means.
10
+ *
11
+ * The color math below reproduces MUI's `augmentColor` exactly, because the
12
+ * config `theme` slot is public API shaped as MUI `ThemeOptions` and a user who
13
+ * writes `primary: { main: '#0D233F' }` has to keep getting the same light,
14
+ * dark and contrastText shades they got before. `palette.test.ts` asserts that
15
+ * value by value against a real MUI theme, so a drift shows up as a test
16
+ * failure rather than as a slightly different browser.
17
+ *
18
+ * The neutral tokens (text, background, divider, action) are JBrowse's own,
19
+ * declared here rather than read off MUI. They start at the values MUI happens
20
+ * to use, which is why the parity test passes, but they are ours: a renderer
21
+ * asking for "the color text is drawn in" should not have to reach into a
22
+ * component library to find out.
23
+ */
24
+ import { colord } from '../util/colord.js';
25
+ // ---------------------------------------------------------------------------
26
+ // MUI-compatible color math
27
+ //
28
+ // Reimplemented rather than imported so this module stays toolkit-free. The
29
+ // constants and the truncation behavior are MUI's, deliberately: see the module
30
+ // comment and the parity test.
31
+ // ---------------------------------------------------------------------------
32
+ const TONAL_OFFSET = 0.2;
33
+ const CONTRAST_THRESHOLD = 3;
34
+ // MUI picks contrast text between the two defaults below, not between the
35
+ // active mode's text colors, so this stays mode-independent
36
+ const CONTRAST_DARK_TEXT = '#fff';
37
+ const CONTRAST_LIGHT_TEXT = 'rgba(0, 0, 0, 0.87)';
38
+ /**
39
+ * MUI recomposes a channel with `parseInt`, which truncates toward zero rather
40
+ * than rounding. Matching that is the difference between `rgb(61, 79, 101)` and
41
+ * `rgb(61, 79, 102)` for the default primary, so it is not a detail.
42
+ */
43
+ function recompose(r, g, b, a) {
44
+ const [rr, gg, bb] = [r, g, b].map(Math.trunc);
45
+ return a < 1 ? `rgba(${rr}, ${gg}, ${bb}, ${a})` : `rgb(${rr}, ${gg}, ${bb})`;
46
+ }
47
+ function shiftChannels(color, fn) {
48
+ const { r, g, b, a } = colord(color).toRgb();
49
+ return recompose(fn(r), fn(g), fn(b), a);
50
+ }
51
+ export function lighten(color, coefficient) {
52
+ return shiftChannels(color, v => v + (255 - v) * coefficient);
53
+ }
54
+ export function darken(color, coefficient) {
55
+ return shiftChannels(color, v => v * (1 - coefficient));
56
+ }
57
+ /** Restate a color at a given opacity, as `rgba(r, g, b, a)`. */
58
+ export function alpha(color, value) {
59
+ const { r, g, b } = colord(color).toRgb();
60
+ const a = Math.min(Math.max(value, 0), 1);
61
+ return `rgba(${Math.trunc(r)}, ${Math.trunc(g)}, ${Math.trunc(b)}, ${a})`;
62
+ }
63
+ /** WCAG relative luminance, truncated to three digits the way MUI does. */
64
+ export function getLuminance(color) {
65
+ const { r, g, b } = colord(color).toRgb();
66
+ const [rr, gg, bb] = [r, g, b].map(channel => {
67
+ const v = channel / 255;
68
+ return v <= 0.03928 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4;
69
+ });
70
+ return Number((0.2126 * rr + 0.7152 * gg + 0.0722 * bb).toFixed(3));
71
+ }
72
+ export function getContrastRatio(foreground, background) {
73
+ const a = getLuminance(foreground);
74
+ const b = getLuminance(background);
75
+ return (Math.max(a, b) + 0.05) / (Math.min(a, b) + 0.05);
76
+ }
77
+ export function getContrastText(background) {
78
+ return getContrastRatio(background, CONTRAST_DARK_TEXT) >= CONTRAST_THRESHOLD
79
+ ? CONTRAST_DARK_TEXT
80
+ : CONTRAST_LIGHT_TEXT;
81
+ }
82
+ /**
83
+ * Expand a color into its four shades. A shade map supplies `light`/`dark`
84
+ * directly from its 300/700 entries, anything else derives them by tonal
85
+ * offset, and `contrastText` is chosen by contrast ratio against `main`.
86
+ */
87
+ export function augmentColor(input) {
88
+ const entry = typeof input === 'string' ? { main: input } : input;
89
+ const main = entry.main ?? entry[500];
90
+ if (!main) {
91
+ throw new Error(`palette color needs a \`main\` or a \`500\` shade, got ${JSON.stringify(input)}`);
92
+ }
93
+ return {
94
+ main,
95
+ light: entry.light ?? entry[300] ?? lighten(main, TONAL_OFFSET),
96
+ dark: entry.dark ?? entry[700] ?? darken(main, TONAL_OFFSET * 1.5),
97
+ contrastText: entry.contrastText ?? getContrastText(main),
98
+ };
99
+ }
100
+ // ---------------------------------------------------------------------------
101
+ // Palette shade maps
102
+ //
103
+ // The handful of MUI shade values JBrowse's defaults are built from, inlined so
104
+ // this module owns them. They are the standard Material palette stops.
105
+ // ---------------------------------------------------------------------------
106
+ const green = {
107
+ 300: '#81c784',
108
+ 400: '#66bb6a',
109
+ 500: '#4caf50',
110
+ 700: '#388e3c',
111
+ 800: '#2e7d32',
112
+ 900: '#1b5e20',
113
+ };
114
+ const blue = { 300: '#64b5f6', 500: '#2196f3', 700: '#1976d2' };
115
+ const orange = {
116
+ 300: '#ffb74d',
117
+ 400: '#ffa726',
118
+ 500: '#ff9800',
119
+ 700: '#f57c00',
120
+ 900: '#e65100',
121
+ };
122
+ const red = {
123
+ 300: '#e57373',
124
+ 400: '#ef5350',
125
+ 500: '#f44336',
126
+ 700: '#d32f2f',
127
+ 800: '#c62828',
128
+ };
129
+ const lightBlue = {
130
+ 300: '#4fc3f7',
131
+ 400: '#29b6f6',
132
+ 500: '#03a9f4',
133
+ 700: '#0288d1',
134
+ 900: '#01579b',
135
+ };
136
+ const brown = { 300: '#a1887f', 500: '#795548', 700: '#5d4037' };
137
+ export const grey = {
138
+ 50: '#fafafa',
139
+ 100: '#f5f5f5',
140
+ 200: '#eeeeee',
141
+ 300: '#e0e0e0',
142
+ 400: '#bdbdbd',
143
+ 500: '#9e9e9e',
144
+ 600: '#757575',
145
+ 700: '#616161',
146
+ 800: '#424242',
147
+ 900: '#212121',
148
+ };
149
+ // Material's own semantic stops, one set per mode. Stated with explicit
150
+ // light/dark shades because MUI states them that way: `warning.main` in light
151
+ // mode is not orange[800] but the nearest value that passes 3:1 against white.
152
+ const lightSemantics = {
153
+ error: { main: red[700], light: red[400], dark: red[800] },
154
+ warning: { main: '#ed6c02', light: orange[500], dark: orange[900] },
155
+ info: { main: lightBlue[700], light: lightBlue[500], dark: lightBlue[900] },
156
+ success: { main: green[800], light: green[500], dark: green[900] },
157
+ };
158
+ const darkSemantics = {
159
+ error: { main: red[500], light: red[300], dark: red[700] },
160
+ warning: { main: orange[400], light: orange[300], dark: orange[700] },
161
+ info: { main: lightBlue[400], light: lightBlue[300], dark: lightBlue[700] },
162
+ success: { main: green[400], light: green[300], dark: green[700] },
163
+ };
164
+ // A theme that declares no primary/secondary at all (a config `extraThemes`
165
+ // entry, in practice) falls back to the stock Material defaults rather than to
166
+ // JBrowse's brand colors, which is what it did when MUI owned this resolution.
167
+ const lightBrandFallback = {
168
+ primary: { main: '#1976d2', light: '#42a5f5', dark: '#1565c0' },
169
+ secondary: { main: '#9c27b0', light: '#ba68c8', dark: '#7b1fa2' },
170
+ };
171
+ const darkBrandFallback = {
172
+ primary: { main: '#90caf9', light: '#e3f2fd', dark: '#42a5f5' },
173
+ secondary: { main: '#ce93d8', light: '#f3e5f5', dark: '#ab47bc' },
174
+ };
175
+ const lightNeutrals = {
176
+ text: {
177
+ primary: 'rgba(0, 0, 0, 0.87)',
178
+ secondary: 'rgba(0, 0, 0, 0.6)',
179
+ disabled: 'rgba(0, 0, 0, 0.38)',
180
+ },
181
+ background: { paper: '#fff', default: '#fff' },
182
+ divider: 'rgba(0, 0, 0, 0.12)',
183
+ common: { black: '#000', white: '#fff' },
184
+ grey,
185
+ action: {
186
+ active: 'rgba(0, 0, 0, 0.54)',
187
+ hover: 'rgba(0, 0, 0, 0.04)',
188
+ hoverOpacity: 0.04,
189
+ selected: 'rgba(0, 0, 0, 0.08)',
190
+ selectedOpacity: 0.08,
191
+ disabled: 'rgba(0, 0, 0, 0.26)',
192
+ disabledBackground: 'rgba(0, 0, 0, 0.12)',
193
+ disabledOpacity: 0.38,
194
+ focus: 'rgba(0, 0, 0, 0.12)',
195
+ focusOpacity: 0.12,
196
+ activatedOpacity: 0.12,
197
+ },
198
+ };
199
+ const darkNeutrals = {
200
+ text: {
201
+ primary: '#fff',
202
+ secondary: 'rgba(255, 255, 255, 0.7)',
203
+ disabled: 'rgba(255, 255, 255, 0.5)',
204
+ },
205
+ background: { paper: '#121212', default: '#121212' },
206
+ divider: 'rgba(255, 255, 255, 0.12)',
207
+ common: { black: '#000', white: '#fff' },
208
+ grey,
209
+ action: {
210
+ active: '#fff',
211
+ hover: 'rgba(255, 255, 255, 0.08)',
212
+ hoverOpacity: 0.08,
213
+ selected: 'rgba(255, 255, 255, 0.16)',
214
+ selectedOpacity: 0.16,
215
+ disabled: 'rgba(255, 255, 255, 0.3)',
216
+ disabledBackground: 'rgba(255, 255, 255, 0.12)',
217
+ disabledOpacity: 0.38,
218
+ focus: 'rgba(255, 255, 255, 0.12)',
219
+ focusOpacity: 0.12,
220
+ activatedOpacity: 0.24,
221
+ },
222
+ };
223
+ // ---------------------------------------------------------------------------
224
+ // Static domain colors
225
+ //
226
+ // Colors that do not vary with the theme. Already plain strings, already
227
+ // imported directly by worker code, kept here so every color in the system has
228
+ // one home. `theme.ts` re-exports them, so existing imports are unaffected.
229
+ // ---------------------------------------------------------------------------
230
+ /** #color alignments-strand | Forward strand | Read maps to the forward strand */
231
+ export const colorFwdStrand = '#EC8B8B';
232
+ /** #color alignments-strand | Reverse strand | Read maps to the reverse strand */
233
+ export const colorRevStrand = '#8F8FD8';
234
+ /** #color alignments-pair-orientation | LR (→ ←, normal proper pair) | Concordant */
235
+ export const colorPairLR = '#d3d3d3';
236
+ // Dimmer grey for dark mode: the light #d3d3d3 reads as near-white glaring
237
+ // blocks against a dark track background. Wired into the dark alignmentFill.
238
+ export const colorPairLRDark = '#8a8a8a';
239
+ /** #color alignments-pair-orientation | RL (← →, mates point away from each other) | Abnormal orientation */
240
+ export const colorPairRL = '#0099bb';
241
+ /** #color alignments-pair-orientation | LL (→ →, both mates forward strand) | Abnormal orientation */
242
+ export const colorPairLL = '#4d9a4d';
243
+ /** #color alignments-pair-orientation | RR (← ←, both mates reverse strand) | Abnormal orientation */
244
+ export const colorPairRR = '#5555bb';
245
+ // Was `colorNostrand`, which named the one thing it essentially never paints. A
246
+ // SAM record's strand is DEFINED from the reverse flag inside the adapter's
247
+ // feature class (`SamRecordFeature.strand`), so it is always +1 or -1, and a
248
+ // PAF/synteny block carries a real strand too — `strandCategory`'s `noStrand`
249
+ // branch is the defensive third case of a `-1 | 0 | 1` return, not a category
250
+ // an alignments track produces. The name survived because the two places that
251
+ // DO reach 0 are strand questions of a different kind: a sashimi junction whose
252
+ // spliced reads carry no XS/TS/ts tag (ordinary unstranded RNA-seq), and a
253
+ // strand-valued read tag that a read simply lacks.
254
+ //
255
+ // What it actually paints, in volume, is neither — `nonSplit` ("Unsplit read",
256
+ // the majority of a pileup under the split-read scheme) and `mapqUnavailable`
257
+ // (MAPQ 255). What unites all five is that the scheme's question has no
258
+ // informative answer for this read, so the value is the neutral it falls back
259
+ // to rather than a statement about strand.
260
+ //
261
+ // It is NOT the only such neutral: `colorPairLR` #d3d3d3 is the baseline for
262
+ // `normalInsert`, `noTagValue` and `plain`, and the two sit dE 3.95 apart —
263
+ // close enough that `readTagColors.ts` moved its untagged-read case off this one
264
+ // and onto that one, because only that one darkens under the dark theme. Whether
265
+ // two neutrals are wanted at all is the open question here; this rename does not
266
+ // settle it, and the dark-mode half is `agent-docs/TODO.md`.
267
+ export const colorNeutralRead = '#c8c8c8';
268
+ /**
269
+ * #color alignments-pair-orientation | Inter-chromosomal | Mate maps to a different chromosome; colored distinctly rather than by orientation
270
+ * #color alignments-insert-size | Mate on a different chromosome | Suggests an inter-chromosomal event
271
+ */
272
+ // THIS SLOT AND `colorUnmappedMate` WERE CHOSEN TOGETHER, and reading either one
273
+ // alone is how the previous pair got stuck. Both are warm, both belong to all
274
+ // three mate-aware schemes, and at #6e4b3a / #b05a20 they sat 4.5 degrees apart
275
+ // in hue — which left this one nowhere to go in any direction, because every
276
+ // direction was that one:
277
+ //
278
+ // more chroma at the same L* -> dE 38.0 to unmappedMate becomes 20.7
279
+ // lighter -> dE 11.8 to it, then the greys past that
280
+ // darker -> the complaint, worse
281
+ // another hue -> the two schemes hold nine, and the widest
282
+ // gap is 91 degrees between pairLL and pairRL,
283
+ // whose midpoint reads as a second green-blue
284
+ //
285
+ // So it was the darkest slot in either scheme (L* 35.3 against 41.2 next) AND
286
+ // the dullest (C* 20.4 against 34.6), which together is what "reads as a smudge"
287
+ // means. Reported on `cancer_sv/k562_bcr_abl_split`: "the arcs for the
288
+ // interchromosomal reads are very dark". The tell is a 2 px stroke — at that
289
+ // weight it was the only colour in either scheme that disappeared, while as a
290
+ // large flat read fill it was merely dull. This slot has to survive both.
291
+ //
292
+ // The fix is that unmappedMate left the warm family (see its own note), which
293
+ // opens the band this now takes: L* 44.9, C* 60.1, and dE 42.2 to its nearest
294
+ // neighbour — the pale supplementary tan — where it used to be 30.1 to a grey.
295
+ // Contrast 5.39 on paper and 3.48 on #121212 puts it mid-pack on both grounds
296
+ // rather than worst on either; it was 2.44 on dark, the worst in the palette.
297
+ //
298
+ // Hue 51.7 keeps it clear of `colorLongInsert` at 40, which is the one warm
299
+ // neighbour that must not be confusable: red means "insert too long", and a
300
+ // second red would read as a second statement about insert size.
301
+ export const colorInterchrom = '#af4d19';
302
+ /** #color alignments-insert-size | Insert larger than expected | Suggests a deletion spanning the pair */
303
+ export const colorLongInsert = '#ff0000';
304
+ /** #color alignments-insert-size | Insert smaller than expected | Suggests an insertion between the pair */
305
+ // This slot has TWO neighbours it must stay clear of, and every past value has
306
+ // solved one by walking into the other. They sit at opposite ends of the
307
+ // lightness axis, which is what makes it a balance rather than a direction:
308
+ //
309
+ // colorLongInsert #ff0000 L* 53.2 C* 104.6 h 40 <- must not read as
310
+ // colorPairLR #d3d3d3 L* 84.6 C* 0.0 <- must not vanish on
311
+ //
312
+ // 31 L* apart, so no pink can be more than about 16 from each. The history is
313
+ // four attempts at spending that budget:
314
+ //
315
+ // #ffc0cb L* 83.6 C* 24.4 h 8 pale: red's own hue washed out, read as
316
+ // "washed-out red" beside it
317
+ // #ff3a8c L* 58.2 C* 76.9 h 1 saturated: 5 L* from red, same warm end
318
+ // of the wheel, so chroma could not part
319
+ // them (review, twice)
320
+ // #ffbcd8 L* 83.0 C* 28.6 h 351 light: 30 L* from red -- and 1.5 L* from
321
+ // the grey baseline, separated from it by
322
+ // chroma alone
323
+ // #f582c0 L* 68.9 C* 52.7 h 346 this
324
+ //
325
+ // The third is the one to understand, because it looks like the fix and is the
326
+ // reason this comment is long. It maximised the distance from red by spending
327
+ // the entire budget, so it arrived at the grey. Measured against that grey it
328
+ // is dE 28.6, the closest any categorized slot comes -- and the margin is pure
329
+ // chroma, which is the weakest channel there is on a 1px arc stroke. It is also
330
+ // contrast 1.56 against paper, against grey's own 1.50: a short-insert arc was
331
+ // very nearly as faint as the concordant ones it had to be picked out from.
332
+ // Reported as "i cant see pink short insert on grey very well", which is
333
+ // exactly what those two numbers say.
334
+ //
335
+ // dE vs red dE vs grey contrast on paper
336
+ // #ffbcd8 (was) 93.4 28.6 1.56
337
+ // #f582c0 (this) 86.2 54.9 2.38
338
+ //
339
+ // So: 15.7 L* from red -- three times the gap the rejected saturated value had,
340
+ // on the axis that review was about -- while nearly doubling the separation
341
+ // from grey and half again the contrast against the page. Hue 346 keeps it on
342
+ // the magenta side of red rather than #ffc0cb's hue 8, so what lightness cannot
343
+ // finish, hue does.
344
+ //
345
+ // Both neighbours have to be re-checked together if this is touched again. It
346
+ // is also a READ FILL, not only an arc stroke, so a value has to survive being
347
+ // a large flat area as well as a hairline; C* 52.7 puts it in the same band as
348
+ // colorPairLL (52.0) and colorSupplementary (42.1) rather than shouting past
349
+ // them.
350
+ export const colorShortInsert = '#f582c0';
351
+ /**
352
+ * #color alignments-pair-orientation | Mate unmapped | The other end of the pair aligned nowhere, so orientation and insert size say nothing
353
+ * #color alignments-insert-size | Mate unmapped | The other end of the pair aligned nowhere, so insert size says nothing
354
+ */
355
+ // A NON-COLOUR, at the dark end of the neutral scale on BOTH themes. It takes
356
+ // the first half of the `readOverlap` pattern and not the second, and that split
357
+ // is the thing to understand here.
358
+ //
359
+ // The half it takes is the reason that note gives for being a neutral at all:
360
+ // "no read color is the honest answer there, which is the whole reason the span
361
+ // is marked". An unmapped mate is the same kind of fact — nothing about the
362
+ // pair's geometry is answerable, so a hue would claim a category where there is
363
+ // an absence. This slot briefly took a teal in the last free hue region, which
364
+ // worked on every number and was the wrong answer: rendered against a pileup a
365
+ // hue reads as one more findable category beside the green LL and blue RR bars,
366
+ // where a neutral reads as a mark that is deliberately not one of them.
367
+ //
368
+ // The half it does NOT take is the inversion, and the difference is EXTENT.
369
+ // Overlap marks a SPAN INSIDE a read, so a charcoal span on a dark track is a
370
+ // gap in a mark that should be continuous — the read looks cut, which is a claim
371
+ // about the data. This fills a WHOLE read, which has its own boundary and the
372
+ // rows above and below it, so a dark grey reads as a dim read and not as a hole.
373
+ //
374
+ // So the statement is the same on both themes and only the room differs:
375
+ //
376
+ // on #ffffff #000000 contrast 21.0. The extreme is free, because dE 36.1
377
+ // from `readOverlap` #555555 is the only other dark
378
+ // neutral a read fill sits beside. Near-black is not
379
+ // free: #2e2e2e is dE 17.2 from that charcoal and
380
+ // #3d3d3d is 10.4, so on this ground it is the extreme
381
+ // or nothing.
382
+ // on #121212 #4a4a4a contrast 2.11. Here the extreme collides with the
383
+ // GROUND — black is 1.12 against it and so is #1e1e1e,
384
+ // i.e. everything from black up to #1e1e1e sits inside
385
+ // the ground's own noise and paints a hole. So the value
386
+ // walks up the same axis exactly as far as it takes to be
387
+ // a block and stops, at L* 31.5, still the darkest fill
388
+ // in either scheme by 9.7 L* (`colorPairRR` is next).
389
+ //
390
+ // Judged as a swatch #3a3a3a also clears the ground, at 1.65. Rendered as a
391
+ // pileup it does not: at a 4 px row height it carries the same weight as the
392
+ // gaps between rows and cannot be found. A few px of row is what a value here
393
+ // has to survive, not a 40 px square.
394
+ //
395
+ // The nearest dark-mode neighbour is the coverage histogram's grey[700] #616161
396
+ // at dE 9.7, which is not a collision in the sense the numbers above are about:
397
+ // coverage is a bar in a different subtrack, never a fill a read can take, so
398
+ // nothing is ever read against it.
399
+ //
400
+ // White was the previous dark value, and it reads as the loudest thing in a dark
401
+ // pileup — louder than the coloured categories it is meant to be quieter than —
402
+ // which is the "glaring near-white blocks" failure `colorPairLRDark` already
403
+ // exists to avoid. Going dark also drops the one real cost white carried, dE 9.4
404
+ // to `readOverlap`'s dark #e4e4e4 — which the note that shipped it called dE 7,
405
+ // wrongly: #e4e4e4 is L* 90.5 and white is L* 100, on a pair separated by
406
+ // lightness alone.
407
+ //
408
+ // The dark end is affordable at all because this slot has the loosest
409
+ // requirements in the palette: it is a READ FILL ONLY, in neither
410
+ // `ARC_SLOT_CATEGORY` nor `LINKED_READ_SLOT_CATEGORY`, so it never has to
411
+ // survive a hairline stroke.
412
+ //
413
+ // IGV goes further than any of this: `setPairOrientation` requires
414
+ // `mate.isMapped()`, so an unmapped mate falls through every branch and takes
415
+ // the default read colour. Going that far loses the one thing the category is
416
+ // for — under insert size, tlen is 0 and would otherwise paint
417
+ // `colorShortInsert`, a false claim — so it keeps a mark, and makes the mark a
418
+ // non-colour.
419
+ export const colorUnmappedMate = '#000000';
420
+ // See colorUnmappedMate: the same dark neutral, lifted off the #121212 ground by
421
+ // the least that still reads as a read rather than as a hole.
422
+ export const colorUnmappedMateDark = '#4a4a4a';
423
+ export const colorLongreadInv = '#7755bb';
424
+ /** #color alignments-pair-orientation | Split paired-end read (inverted) | A paired read's supplementary segment maps opposite-strand to its primary, so the junction is inverted — an inversion or an inverted duplication */
425
+ export const colorSplitReadInversion = '#9b30b0';
426
+ export const colorSupplementary = '#f0b878';
427
+ // Qualitative palette for coloring reads by an arbitrary tag value (e.g. the HP
428
+ // haplotype tag). Pale "tol_light" scheme:
429
+ // https://cran.r-project.org/web/packages/khroma/vignettes/tol.html
430
+ export const tagColorPalette = [
431
+ '#BBCCEE',
432
+ 'pink',
433
+ '#CCDDAA',
434
+ '#EEEEBB',
435
+ '#FFCCCC',
436
+ 'lightblue',
437
+ 'lightgreen',
438
+ 'tan',
439
+ '#CCEEFF',
440
+ 'lightsalmon',
441
+ ];
442
+ /**
443
+ * #color theme-colors | Feature (default) | A feature with no color of its own — no `color` slot, no BED itemRgb
444
+ *
445
+ * What an uncolored feature is painted. Lives here rather than in the display
446
+ * that draws most of them because it is not one display's default: the
447
+ * single-feature variant display resolves it through `plugins/canvas`, and the
448
+ * multi-sample variant display's lane bakes it into the color array its worker
449
+ * ships. Two copies of a color two displays are supposed to agree on is exactly
450
+ * the "never a fallback copy" this module exists to prevent.
451
+ */
452
+ export const featureDefaultColor = 'goldenrod';
453
+ /**
454
+ * #color theme-colors | UTR (default) | The untranslated ends of a gene glyph when no `utrColor` slot is set
455
+ *
456
+ * Same reasoning as featureDefaultColor: the canvas gene track and the
457
+ * multi-way synteny lanes both draw UTRs, and the two must be the same blue or
458
+ * a lane's gene models read as a different annotation from the gene track
459
+ * above them.
460
+ */
461
+ export const utrDefaultColor = '#357089';
462
+ /** #color theme-methylation | methylated5mC | 5-methylcytosine, methylated */
463
+ export const methylated5mC = '#ff0000';
464
+ /** #color theme-methylation | unmethylated5mC | 5-methylcytosine, unmethylated */
465
+ export const unmethylated5mC = '#0000ff';
466
+ /** #color theme-methylation | methylated5hmC | 5-hydroxymethylcytosine, methylated */
467
+ export const methylated5hmC = '#ffc0cb';
468
+ /** #color theme-colors | Stop codon | Stop codon in gene/CDS tracks */
469
+ const stopCodon = '#e22';
470
+ /** #color theme-colors | Start codon | Start codon in gene/CDS tracks */
471
+ const startCodon = '#3e3';
472
+ /** #color maf | Nonsynonymous codon | MAF codon view: the species' amino acid differs from the reference (nonsynonymous) */
473
+ const codonNonsynonymous = '#e8930c';
474
+ /** #color maf | Synonymous codon | MAF codon view: the codon differs from the reference but the amino acid is unchanged (silent) */
475
+ const codonSynonymous = '#3a7bd5';
476
+ /** #color maf | Codon stop | MAF codon view: a stop codon */
477
+ const codonStop = '#cc2222';
478
+ /** #color alignments-indicators | Insertion | Reads carry an insertion relative to the reference */
479
+ const insertion = '#800080';
480
+ /** #color theme-colors | Deletion | Deletion markers in alignments */
481
+ const deletion = '#808080';
482
+ /** #color alignments-indicators | Soft clip | Reads are soft-clipped (clipped bases retained in the read) */
483
+ const softclip = '#00f';
484
+ /** #color alignments-indicators | Hard clip | Reads are hard-clipped (clipped bases removed from the read) */
485
+ const hardclip = '#f00';
486
+ /** #color theme-colors | Skip (intron) | Skipped regions such as introns in RNA-seq reads */
487
+ const skip = '#009a8a';
488
+ /**
489
+ * #color alignments-indicators | Overlapping segments of one molecule | Both reads of a pair, or both arms of a split read, align here — so the junction between them is this span rather than a point
490
+ *
491
+ * Deliberately NOT a hue, and deliberately outside the categorical greys.
492
+ * Without a mark the two segments paint over each other and the display shows a
493
+ * clean junction at whichever coordinate the later one starts, which is a
494
+ * precise claim about a breakpoint that the data does not make. Painting the
495
+ * span as a darker version of either segment's color says "more of that one",
496
+ * which is the same lie louder — on a foldback the arms are opposite-strand
497
+ * red and blue, and darkening whichever drew last reads as extra-inverted.
498
+ *
499
+ * So the value has one job: read as NEITHER segment. Every categorized grey in
500
+ * the alignments vocabulary is light (`colorPairLR` #d3d3d3, `colorNeutralRead`
501
+ * #c8c8c8, and `colorPairLRDark` #8a8a8a on the dark theme), so this sits past
502
+ * the dark end of them in light mode and past the light end in dark mode,
503
+ * which is also why it inverts rather than dimming: on a dark track background
504
+ * a charcoal span is the background showing through, i.e. a gap where the mark
505
+ * should be.
506
+ */
507
+ const readOverlap = '#555555';
508
+ /** #color theme-colors | Base modification (fwd) | Base modifications on the forward strand */
509
+ const modificationFwd = '#c8c8c8';
510
+ /** #color theme-colors | Base modification (rev) | Base modifications on the reverse strand */
511
+ const modificationRev = '#c8dcc8';
512
+ /** #color theme-colors | Muted SNP base | SNP bases muted when show-modifications coloring is on */
513
+ const mutedSnpBase = '#888';
514
+ // MAF bridged-row fill where the species has no alignment (à la UCSC)
515
+ const missingData = '#ffffcc';
516
+ const lightStringColors = {
517
+ stopCodon,
518
+ startCodon,
519
+ codonNonsynonymous,
520
+ codonSynonymous,
521
+ codonStop,
522
+ coverage: grey[400],
523
+ insertion,
524
+ deletion,
525
+ readOverlap,
526
+ softclip,
527
+ hardclip,
528
+ skip,
529
+ modificationFwd,
530
+ modificationRev,
531
+ mutedSnpBase,
532
+ missingData,
533
+ // vertical gridlines behind the genome
534
+ gridlineMinor: 'rgba(0,0,0,0.12)',
535
+ gridlineMajor: 'rgba(0,0,0,0.26)',
536
+ // a plot area's own coordinate grid, and the region boundary that has to read
537
+ // as a landmark through it — three steps apart on purpose, so the boundary is
538
+ // never mistaken for a major and the grid stays under the data
539
+ plotGridlineMinor: 'rgba(0,0,0,0.06)',
540
+ plotGridlineMajor: 'rgba(0,0,0,0.13)',
541
+ regionBoundary: 'rgba(0,0,0,0.42)',
542
+ // hover shading over a feature
543
+ featureHover: 'rgba(0,0,0,0.15)',
544
+ // stronger shade for a hovered group (e.g. a linked-read chain), so the group
545
+ // reads more prominently than a single-feature hover
546
+ featureHoverStrong: 'rgba(0,0,0,0.4)',
547
+ // border accent around the click-selected feature
548
+ featureSelected: 'rgba(0,100,255,0.8)',
549
+ // blue accent for feature description labels (e.g. gene descriptions)
550
+ featureDescription: 'blue',
551
+ };
552
+ // Dark overrides. White-on-dark reads far stronger than dark-on-white at the
553
+ // same alpha, so the gridlines and hover shades are gentler and inverted rather
554
+ // than reused, and the colors that would otherwise vanish are lightened.
555
+ const darkStringColors = {
556
+ coverage: grey[700],
557
+ gridlineMinor: 'rgba(255,255,255,0.06)',
558
+ gridlineMajor: 'rgba(255,255,255,0.15)',
559
+ plotGridlineMinor: 'rgba(255,255,255,0.05)',
560
+ plotGridlineMajor: 'rgba(255,255,255,0.1)',
561
+ regionBoundary: 'rgba(255,255,255,0.3)',
562
+ featureHover: 'rgba(255,255,255,0.25)',
563
+ featureHoverStrong: 'rgba(255,255,255,0.4)',
564
+ featureSelected: 'rgba(120,180,255,0.9)',
565
+ // plain CSS 'blue' reads as near-black against a dark track
566
+ featureDescription: blue[300],
567
+ // the deletion rect replaces the read on the dark track background, where the
568
+ // mid-grey #808080 reads as a muddy block, so lighten it
569
+ deletion: '#c8c8c8',
570
+ // inverted rather than dimmed, for the reason on the light value: the mark
571
+ // has to be the one neutral no read category paints, and on a dark track that
572
+ // is the light end. Clear of the dark theme's own `colorPairLRDark` #8a8a8a
573
+ // and of `colorNostrand` #c8c8c8, the two lightest fills it can land beside.
574
+ readOverlap: '#e4e4e4',
575
+ };
576
+ const lightAlignmentFill = {
577
+ pairLR: colorPairLR,
578
+ pairRL: colorPairRL,
579
+ pairLL: colorPairLL,
580
+ pairRR: colorPairRR,
581
+ unmappedMate: colorUnmappedMate,
582
+ };
583
+ // pairLR because the light #d3d3d3 reads as glaring near-white blocks;
584
+ // unmappedMate because its black is inside the #121212 ground's own noise and
585
+ // paints a hole (see its own note)
586
+ const darkAlignmentFill = {
587
+ ...lightAlignmentFill,
588
+ pairLR: colorPairLRDark,
589
+ unmappedMate: colorUnmappedMateDark,
590
+ };
591
+ // ---------------------------------------------------------------------------
592
+ // Brand colors
593
+ // ---------------------------------------------------------------------------
594
+ const midnight = '#0D233F';
595
+ const grape = '#721E63';
596
+ const forest = '#135560';
597
+ const mandarin = '#FFB11D';
598
+ const textHighlightYellow = '#ffe066';
599
+ const lightgrey = '#aaa';
600
+ const defaultBases = {
601
+ A: green,
602
+ C: blue,
603
+ G: orange,
604
+ T: red,
605
+ // N / ambiguous bases: muted brown, a distinct hue so it never blends into
606
+ // the grey coverage histogram the way mutedSnpBase does
607
+ N: brown,
608
+ };
609
+ const defaultFramesCDS = [
610
+ null,
611
+ { main: '#FF8080' },
612
+ { main: '#80FF80' },
613
+ { main: '#8080FF' },
614
+ { main: '#8080FF' },
615
+ { main: '#80FF80' },
616
+ { main: '#FF8080' },
617
+ ];
618
+ const defaultFrames = [
619
+ null,
620
+ { main: '#8f8f8f' },
621
+ { main: '#adadad' },
622
+ { main: '#d8d8d8' },
623
+ { main: '#d8d8d8' },
624
+ { main: '#adadad' },
625
+ { main: '#8f8f8f' },
626
+ ];
627
+ /**
628
+ * The palette half of the built-in themes. `theme.ts` composes these with the
629
+ * display names and MUI component overrides that make up `defaultThemes`, so
630
+ * the preset colors are stated once.
631
+ */
632
+ // The JBrowse-branded colors every built-in preset starts from. Deliberately
633
+ // does NOT carry the string colors or alignmentFill: those have light and dark
634
+ // variants that `resolvePalette` picks off `mode`, and baking the light ones in
635
+ // here would shadow the dark set for any theme built on top.
636
+ const brandDefaults = {
637
+ primary: { main: midnight },
638
+ secondary: { main: grape },
639
+ tertiary: { main: forest },
640
+ quaternary: { main: mandarin },
641
+ highlight: { main: mandarin },
642
+ textHighlight: { main: textHighlightYellow },
643
+ bases: defaultBases,
644
+ frames: defaultFrames,
645
+ framesCDS: defaultFramesCDS,
646
+ };
647
+ export const palettePresets = {
648
+ default: { ...brandDefaults },
649
+ lightStock: { ...brandDefaults },
650
+ lightMinimal: {
651
+ ...brandDefaults,
652
+ primary: { main: grey[900] },
653
+ secondary: { main: grey[800] },
654
+ tertiary: { main: grey[900] },
655
+ },
656
+ // the dark presets change only `mode` on top of the brand colors, and the
657
+ // dark-tuned gridlines, hover, coverage and alignmentFill follow from it
658
+ darkMinimal: {
659
+ ...brandDefaults,
660
+ mode: 'dark',
661
+ primary: { main: grey[700] },
662
+ secondary: { main: grey[800] },
663
+ tertiary: { main: grey[900] },
664
+ },
665
+ darkStock: {
666
+ ...brandDefaults,
667
+ mode: 'dark',
668
+ },
669
+ };
670
+ /**
671
+ * Resolve a frame tuple. A theme's tuple replaces the default wholesale rather
672
+ * than splicing entry by entry onto stale shades, so slots it leaves out are
673
+ * filled from the default here. Consumers index by frame number and assume
674
+ * every slot resolves.
675
+ */
676
+ function resolveFrames(entry, fallback) {
677
+ const source = entry ?? fallback;
678
+ return [
679
+ null,
680
+ ...[1, 2, 3, 4, 5, 6].map(i => {
681
+ const value = source[i] ?? fallback[i];
682
+ return value === undefined ? undefined : augmentColor(value);
683
+ }),
684
+ ];
685
+ }
686
+ /**
687
+ * Build the palette for a set of theme arguments.
688
+ *
689
+ * Only the `default` theme draws from `configTheme`. Every other named theme is
690
+ * a fixed preset and intentionally ignores it, which is what the picker entry
691
+ * "Default (from config)" means. Do not "fix" that.
692
+ */
693
+ export function resolvePalette(args = {}) {
694
+ const { configTheme, themeName = 'default', extraThemes } = args;
695
+ const presets = {
696
+ ...palettePresets,
697
+ ...Object.fromEntries(Object.entries(extraThemes ?? {}).map(([k, v]) => [k, v.palette ?? {}])),
698
+ };
699
+ const preset = presets[themeName] ?? presets.default ?? {};
700
+ const input = themeName === 'default' ? { ...preset, ...configTheme?.palette } : preset;
701
+ const mode = input.mode ?? 'light';
702
+ const isDark = mode === 'dark';
703
+ const neutrals = isDark ? darkNeutrals : lightNeutrals;
704
+ const brandFallback = isDark ? darkBrandFallback : lightBrandFallback;
705
+ const semantics = isDark ? darkSemantics : lightSemantics;
706
+ const strings = {
707
+ ...lightStringColors,
708
+ ...(isDark ? darkStringColors : {}),
709
+ };
710
+ for (const key of Object.keys(strings)) {
711
+ const override = input[key];
712
+ if (override !== undefined) {
713
+ strings[key] = override;
714
+ }
715
+ }
716
+ return {
717
+ ...strings,
718
+ mode,
719
+ text: { ...neutrals.text, ...input.text },
720
+ background: { ...neutrals.background, ...input.background },
721
+ divider: input.divider ?? neutrals.divider,
722
+ common: { ...neutrals.common, ...input.common },
723
+ grey: { ...neutrals.grey, ...input.grey },
724
+ action: { ...neutrals.action, ...input.action },
725
+ primary: augmentColor(input.primary ?? brandFallback.primary),
726
+ secondary: augmentColor(input.secondary ?? brandFallback.secondary),
727
+ error: augmentColor(input.error ?? semantics.error),
728
+ warning: augmentColor(input.warning ?? semantics.warning),
729
+ info: augmentColor(input.info ?? semantics.info),
730
+ success: augmentColor(input.success ?? semantics.success),
731
+ tertiary: augmentColor(input.tertiary ?? lightgrey),
732
+ quaternary: augmentColor(input.quaternary ?? lightgrey),
733
+ highlight: augmentColor(input.highlight ?? { main: mandarin }),
734
+ textHighlight: augmentColor(input.textHighlight ?? { main: textHighlightYellow }),
735
+ bases: Object.fromEntries(['A', 'C', 'G', 'T', 'N'].map(key => [
736
+ key,
737
+ augmentColor(input.bases?.[key] ?? defaultBases[key]),
738
+ ])),
739
+ frames: resolveFrames(input.frames, defaultFrames),
740
+ framesCDS: resolveFrames(input.framesCDS, defaultFramesCDS),
741
+ alignmentFill: {
742
+ ...(isDark ? darkAlignmentFill : lightAlignmentFill),
743
+ ...input.alignmentFill,
744
+ },
745
+ };
746
+ }