@jbrowse/core 2.16.1 → 2.18.0

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 (308) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +1 -2
  2. package/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +4 -8
  3. package/BaseFeatureWidget/BaseFeatureDetail/BaseCard.d.ts +1 -1
  4. package/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +1 -2
  5. package/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +2 -3
  6. package/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
  7. package/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +2 -3
  8. package/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +22 -25
  9. package/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +2 -2
  10. package/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +6 -8
  11. package/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +1 -1
  12. package/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +1 -1
  13. package/BaseFeatureWidget/BaseFeatureDetail/UriField.js +1 -1
  14. package/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +3 -4
  15. package/BaseFeatureWidget/BaseFeatureDetail/index.js +5 -9
  16. package/BaseFeatureWidget/BaseFeatureDetail/util.js +0 -5
  17. package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.d.ts +2 -2
  18. package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +0 -7
  19. package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +2 -2
  20. package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.js +1 -7
  21. package/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.d.ts +3 -3
  22. package/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +24 -33
  23. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.js +1 -2
  24. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.d.ts +2 -2
  25. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.js +3 -4
  26. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.d.ts +2 -2
  27. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.js +3 -6
  28. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.d.ts +1 -1
  29. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.d.ts +1 -1
  30. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.js +2 -2
  31. package/BaseFeatureWidget/SequenceFeatureDetails/hooks.d.ts +2 -2
  32. package/BaseFeatureWidget/SequenceFeatureDetails/hooks.js +1 -2
  33. package/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +2 -35
  34. package/BaseFeatureWidget/SequenceFeatureDetails/model.js +19 -44
  35. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.d.ts +3 -3
  36. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.d.ts +2 -2
  37. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.js +5 -6
  38. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.d.ts +2 -2
  39. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.js +0 -1
  40. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.d.ts +2 -2
  41. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.js +0 -2
  42. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.d.ts +1 -1
  43. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +1 -3
  44. package/BaseFeatureWidget/SequenceFeatureDetails/util.js +1 -5
  45. package/BaseFeatureWidget/stateModelFactory.d.ts +3 -94
  46. package/BaseFeatureWidget/stateModelFactory.js +3 -73
  47. package/BaseFeatureWidget/types.d.ts +3 -3
  48. package/BaseFeatureWidget/util.js +0 -4
  49. package/CorePlugin.d.ts +1 -1
  50. package/CorePlugin.js +2 -5
  51. package/Plugin.d.ts +2 -5
  52. package/Plugin.js +0 -3
  53. package/PluginLoader.d.ts +1 -1
  54. package/PluginLoader.js +2 -19
  55. package/PluginManager.d.ts +15 -31
  56. package/PluginManager.js +11 -39
  57. package/ReExports/DataGrid.js +0 -1
  58. package/ReExports/list.d.ts +0 -5
  59. package/ReExports/list.js +0 -5
  60. package/ReExports/modules.d.ts +22 -20
  61. package/ReExports/modules.js +16 -25
  62. package/TextSearch/BaseResults.d.ts +3 -3
  63. package/TextSearch/TextSearchManager.d.ts +4 -16
  64. package/TextSearch/TextSearchManager.js +1 -13
  65. package/assemblyManager/assembly.d.ts +5 -100
  66. package/assemblyManager/assembly.js +27 -143
  67. package/assemblyManager/assemblyConfigSchema.d.ts +1 -34
  68. package/assemblyManager/assemblyConfigSchema.js +12 -46
  69. package/assemblyManager/assemblyManager.d.ts +7 -57
  70. package/assemblyManager/assemblyManager.js +2 -57
  71. package/configuration/configurationSchema.d.ts +4 -4
  72. package/configuration/configurationSchema.js +2 -14
  73. package/configuration/configurationSlot.d.ts +1 -12
  74. package/configuration/configurationSlot.js +2 -32
  75. package/configuration/index.d.ts +2 -2
  76. package/configuration/index.js +2 -2
  77. package/configuration/types.d.ts +2 -3
  78. package/configuration/util.d.ts +1 -25
  79. package/configuration/util.js +19 -56
  80. package/data_adapters/BaseAdapter/BaseAdapter.d.ts +4 -14
  81. package/data_adapters/BaseAdapter/BaseAdapter.js +1 -10
  82. package/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +10 -114
  83. package/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +13 -79
  84. package/data_adapters/BaseAdapter/BaseOptions.d.ts +2 -2
  85. package/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.d.ts +2 -2
  86. package/data_adapters/BaseAdapter/BaseSequenceAdapter.d.ts +3 -6
  87. package/data_adapters/BaseAdapter/BaseTextSearchAdapter.d.ts +3 -3
  88. package/data_adapters/BaseAdapter/RegionsAdapter.d.ts +3 -3
  89. package/data_adapters/BaseAdapter/index.d.ts +4 -4
  90. package/data_adapters/BaseAdapter/types.d.ts +2 -2
  91. package/data_adapters/BaseAdapter/util.d.ts +6 -6
  92. package/data_adapters/CytobandAdapter/CytobandAdapter.d.ts +2 -1
  93. package/data_adapters/CytobandAdapter/CytobandAdapter.js +11 -12
  94. package/data_adapters/CytobandAdapter/configSchema.d.ts +0 -3
  95. package/data_adapters/CytobandAdapter/configSchema.js +1 -7
  96. package/data_adapters/CytobandAdapter/index.d.ts +1 -1
  97. package/data_adapters/CytobandAdapter/index.js +1 -1
  98. package/data_adapters/dataAdapterCache.d.ts +4 -21
  99. package/data_adapters/dataAdapterCache.js +0 -19
  100. package/package.json +4 -5
  101. package/pluggableElementTypes/AdapterType.d.ts +2 -2
  102. package/pluggableElementTypes/AddTrackWorkflowType.d.ts +2 -2
  103. package/pluggableElementTypes/ConnectionType.d.ts +3 -3
  104. package/pluggableElementTypes/DisplayType.d.ts +3 -9
  105. package/pluggableElementTypes/InternetAccountType.d.ts +2 -2
  106. package/pluggableElementTypes/PluggableElementBase.d.ts +1 -1
  107. package/pluggableElementTypes/PluggableElementBase.js +2 -2
  108. package/pluggableElementTypes/RpcMethodType.d.ts +5 -11
  109. package/pluggableElementTypes/RpcMethodType.js +7 -19
  110. package/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +9 -0
  111. package/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.js +35 -0
  112. package/pluggableElementTypes/TextSearchAdapterType.d.ts +2 -2
  113. package/pluggableElementTypes/TrackType.d.ts +3 -3
  114. package/pluggableElementTypes/ViewType.d.ts +3 -3
  115. package/pluggableElementTypes/WidgetType.d.ts +4 -3
  116. package/pluggableElementTypes/index.d.ts +11 -11
  117. package/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +2 -29
  118. package/pluggableElementTypes/models/BaseConnectionModelFactory.js +1 -28
  119. package/pluggableElementTypes/models/BaseDisplayModel.d.ts +3 -83
  120. package/pluggableElementTypes/models/BaseDisplayModel.js +2 -69
  121. package/pluggableElementTypes/models/BaseTrackModel.d.ts +4 -46
  122. package/pluggableElementTypes/models/BaseTrackModel.js +0 -58
  123. package/pluggableElementTypes/models/BaseViewModel.d.ts +2 -42
  124. package/pluggableElementTypes/models/BaseViewModel.js +2 -38
  125. package/pluggableElementTypes/models/InternetAccountModel.d.ts +3 -119
  126. package/pluggableElementTypes/models/InternetAccountModel.js +3 -123
  127. package/pluggableElementTypes/models/baseConnectionConfig.d.ts +0 -6
  128. package/pluggableElementTypes/models/baseConnectionConfig.js +1 -13
  129. package/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +0 -15
  130. package/pluggableElementTypes/models/baseInternetAccountConfig.js +1 -23
  131. package/pluggableElementTypes/models/baseTrackConfig.d.ts +2 -53
  132. package/pluggableElementTypes/models/baseTrackConfig.js +1 -58
  133. package/pluggableElementTypes/renderers/BoxRendererType.d.ts +7 -15
  134. package/pluggableElementTypes/renderers/BoxRendererType.js +3 -14
  135. package/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +3 -2
  136. package/pluggableElementTypes/renderers/CircularChordRendererType.js +1 -6
  137. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.d.ts +6 -21
  138. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +2 -25
  139. package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +5 -47
  140. package/pluggableElementTypes/renderers/FeatureRendererType.js +15 -68
  141. package/pluggableElementTypes/renderers/RendererType.d.ts +4 -8
  142. package/pluggableElementTypes/renderers/RendererType.js +1 -5
  143. package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.d.ts +2 -2
  144. package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.js +3 -12
  145. package/pluggableElementTypes/renderers/ServerSideRenderedContent.d.ts +1 -1
  146. package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +6 -14
  147. package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +9 -49
  148. package/pluggableElementTypes/renderers/ServerSideRendererType.js +7 -57
  149. package/pluggableElementTypes/renderers/index.d.ts +1 -1
  150. package/pluggableElementTypes/renderers/util/serializableFilterChain.js +1 -3
  151. package/rpc/BaseRpcDriver.d.ts +3 -4
  152. package/rpc/BaseRpcDriver.js +20 -80
  153. package/rpc/MainThreadRpcDriver.d.ts +3 -7
  154. package/rpc/MainThreadRpcDriver.js +0 -5
  155. package/rpc/RpcManager.d.ts +3 -3
  156. package/rpc/RpcManager.js +2 -4
  157. package/rpc/WebWorkerRpcDriver.d.ts +3 -2
  158. package/rpc/WebWorkerRpcDriver.js +2 -13
  159. package/rpc/baseRpcConfig.d.ts +0 -3
  160. package/rpc/baseRpcConfig.js +1 -7
  161. package/rpc/configSchema.d.ts +0 -6
  162. package/rpc/configSchema.js +2 -11
  163. package/rpc/mainThreadRpcConfig.js +1 -7
  164. package/rpc/methods/CoreFreeResources.d.ts +0 -6
  165. package/rpc/methods/CoreFreeResources.js +2 -9
  166. package/rpc/methods/CoreGetFeatureDensityStats.d.ts +4 -5
  167. package/rpc/methods/CoreGetFeatureDensityStats.js +1 -1
  168. package/rpc/methods/CoreGetFeatureDetails.d.ts +2 -7
  169. package/rpc/methods/CoreGetFeatureDetails.js +0 -5
  170. package/rpc/methods/CoreGetFeatures.d.ts +5 -5
  171. package/rpc/methods/CoreGetFeatures.js +4 -5
  172. package/rpc/methods/CoreGetFileInfo.d.ts +1 -2
  173. package/rpc/methods/CoreGetFileInfo.js +1 -1
  174. package/rpc/methods/CoreGetMetadata.d.ts +1 -2
  175. package/rpc/methods/CoreGetMetadata.js +1 -1
  176. package/rpc/methods/CoreGetRefNames.d.ts +1 -2
  177. package/rpc/methods/CoreGetRefNames.js +1 -1
  178. package/rpc/methods/CoreRender.d.ts +2 -6
  179. package/rpc/methods/CoreRender.js +5 -7
  180. package/rpc/methods/util.d.ts +3 -3
  181. package/rpc/methods/util.js +0 -1
  182. package/rpc/webWorkerRpcConfig.js +1 -7
  183. package/stories/JBrowseCore.stories.d.ts +1 -1
  184. package/stories/JBrowseCore.stories.js +3 -3
  185. package/stories/examples/WithSequencePanel.d.ts +1 -1
  186. package/stories/examples/WithSequencePanel.js +3 -3
  187. package/tsconfig.build.tsbuildinfo +1 -1
  188. package/ui/AppLogo.d.ts +1 -1
  189. package/ui/AppLogo.js +0 -2
  190. package/ui/AssemblySelector.d.ts +2 -2
  191. package/ui/AssemblySelector.js +5 -5
  192. package/ui/BaseTooltip.js +2 -6
  193. package/ui/CascadingMenu.d.ts +2 -2
  194. package/ui/CascadingMenu.js +3 -4
  195. package/ui/CascadingMenuButton.d.ts +1 -1
  196. package/ui/CascadingMenuButton.js +1 -1
  197. package/ui/ColorPicker.js +1 -7
  198. package/ui/Dialog.d.ts +1 -1
  199. package/ui/Dialog.js +2 -6
  200. package/ui/DropDownMenu.d.ts +1 -1
  201. package/ui/DropDownMenu.js +2 -2
  202. package/ui/EditableTypography.d.ts +1 -1
  203. package/ui/EditableTypography.js +1 -5
  204. package/ui/ErrorBoundary.d.ts +2 -1
  205. package/ui/ErrorMessage.js +2 -9
  206. package/ui/ErrorMessageStackTraceDialog.js +2 -10
  207. package/ui/FactoryResetDialog.js +1 -1
  208. package/ui/FatalErrorDialog.js +1 -1
  209. package/ui/FileSelector/FileSelector.d.ts +4 -3
  210. package/ui/FileSelector/FileSelector.js +40 -40
  211. package/ui/FileSelector/LocalFileChooser.d.ts +1 -1
  212. package/ui/FileSelector/LocalFileChooser.js +0 -1
  213. package/ui/FileSelector/UrlChooser.d.ts +4 -3
  214. package/ui/FileSelector/UrlChooser.js +6 -2
  215. package/ui/Icons.d.ts +1 -1
  216. package/ui/Icons.js +1 -7
  217. package/ui/LoadingEllipses.d.ts +1 -1
  218. package/ui/LoadingEllipses.js +3 -3
  219. package/ui/Menu.d.ts +1 -1
  220. package/ui/Menu.js +3 -10
  221. package/ui/MenuButton.d.ts +1 -1
  222. package/ui/ResizeHandle.js +2 -2
  223. package/ui/ReturnToImportFormDialog.js +1 -1
  224. package/ui/SanitizedHTML.js +2 -19
  225. package/ui/Snackbar.d.ts +2 -2
  226. package/ui/Snackbar.js +1 -2
  227. package/ui/SnackbarModel.d.ts +1 -26
  228. package/ui/SnackbarModel.js +2 -30
  229. package/ui/colors.d.ts +1 -1
  230. package/ui/colors.js +1 -1
  231. package/ui/react-colorful.js +0 -3
  232. package/ui/theme.d.ts +1 -1
  233. package/ui/theme.js +24 -84
  234. package/util/Base1DUtils.d.ts +1 -1
  235. package/util/Base1DUtils.js +0 -12
  236. package/util/Base1DViewModel.d.ts +4 -81
  237. package/util/Base1DViewModel.js +4 -108
  238. package/util/QuickLRU.js +0 -9
  239. package/util/TimeTraveller.js +0 -4
  240. package/util/aborting.d.ts +0 -20
  241. package/util/aborting.js +0 -31
  242. package/util/analytics.js +1 -12
  243. package/util/blockTypes.d.ts +0 -11
  244. package/util/blockTypes.js +0 -13
  245. package/util/calculateDynamicBlocks.d.ts +1 -20
  246. package/util/calculateDynamicBlocks.js +1 -22
  247. package/util/calculateStaticBlocks.d.ts +2 -2
  248. package/util/calculateStaticBlocks.js +0 -2
  249. package/util/color/cssColorsLevel4.js +0 -1
  250. package/util/color/index.d.ts +0 -19
  251. package/util/color/index.js +0 -30
  252. package/util/compositeMap.js +0 -2
  253. package/util/dedupe.js +0 -1
  254. package/util/formatFastaStrings.d.ts +0 -13
  255. package/util/formatFastaStrings.js +0 -13
  256. package/util/idMaker.d.ts +1 -1
  257. package/util/idMaker.js +16 -12
  258. package/util/index.d.ts +25 -173
  259. package/util/index.js +87 -326
  260. package/util/io/RemoteFileWithRangeCache.d.ts +3 -2
  261. package/util/io/RemoteFileWithRangeCache.js +6 -10
  262. package/util/io/index.d.ts +3 -4
  263. package/util/io/index.js +3 -17
  264. package/util/jexl.js +3 -13
  265. package/util/jexlStrings.d.ts +0 -6
  266. package/util/jexlStrings.js +0 -8
  267. package/util/layouts/BaseLayout.d.ts +1 -1
  268. package/util/layouts/GranularRectLayout.d.ts +1 -17
  269. package/util/layouts/GranularRectLayout.js +4 -81
  270. package/util/layouts/MultiLayout.d.ts +1 -6
  271. package/util/layouts/MultiLayout.js +0 -6
  272. package/util/layouts/PrecomputedLayout.d.ts +1 -4
  273. package/util/layouts/PrecomputedLayout.js +0 -5
  274. package/util/layouts/PrecomputedMultiLayout.js +0 -2
  275. package/util/layouts/SceneGraph.d.ts +0 -12
  276. package/util/layouts/SceneGraph.js +0 -13
  277. package/util/makeAbortableReaction.d.ts +2 -0
  278. package/util/makeAbortableReaction.js +50 -0
  279. package/util/map-obj.js +0 -4
  280. package/util/mst-reflection.d.ts +1 -14
  281. package/util/mst-reflection.js +1 -28
  282. package/util/nanoid.js +0 -31
  283. package/util/nextTick.d.ts +1 -0
  284. package/util/nextTick.js +6 -0
  285. package/util/offscreenCanvasPonyfill.d.ts +0 -1
  286. package/util/offscreenCanvasPonyfill.js +1 -9
  287. package/util/offscreenCanvasUtils.js +1 -8
  288. package/util/range.d.ts +0 -25
  289. package/util/range.js +0 -34
  290. package/util/rxjs.d.ts +3 -7
  291. package/util/rxjs.js +2 -9
  292. package/util/simpleFeature.d.ts +0 -58
  293. package/util/simpleFeature.js +0 -35
  294. package/util/stats.d.ts +4 -34
  295. package/util/stats.js +0 -60
  296. package/util/stopToken.d.ts +3 -0
  297. package/util/stopToken.js +29 -0
  298. package/util/tracks.d.ts +3 -25
  299. package/util/tracks.js +0 -30
  300. package/util/types/index.d.ts +14 -30
  301. package/util/types/index.js +5 -14
  302. package/util/types/mst.js +0 -9
  303. package/util/types/util.d.ts +2 -9
  304. package/util/useMeasure.js +0 -1
  305. package/util/when.d.ts +1 -15
  306. package/util/when.js +3 -70
  307. package/rpc/remoteAbortSignals.d.ts +0 -36
  308. package/rpc/remoteAbortSignals.js +0 -79
package/ui/Icons.js CHANGED
@@ -12,14 +12,12 @@ exports.SaveAs = SaveAs;
12
12
  exports.Save = Save;
13
13
  exports.DNA = DNA;
14
14
  exports.Cable = Cable;
15
- const SvgIcon_1 = __importDefault(require("@mui/material/SvgIcon"));
16
15
  const react_1 = __importDefault(require("react"));
17
- // Icons below come from https://material.io/resources/icons/?icon=line_style&style=baseline
16
+ const SvgIcon_1 = __importDefault(require("@mui/material/SvgIcon"));
18
17
  function ContentCopy(props) {
19
18
  return (react_1.default.createElement(SvgIcon_1.default, { ...props },
20
19
  react_1.default.createElement("path", { d: "M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z" })));
21
20
  }
22
- // https://materialdesignicons.com/ text-search icon
23
21
  function Indexing(props) {
24
22
  return (react_1.default.createElement(SvgIcon_1.default, { ...props },
25
23
  react_1.default.createElement("path", { d: "M19.31 18.9L22.39 22L21 23.39L17.88 20.32C17.19 20.75 16.37 21 15.5 21C13 21 11 19 11 16.5C11 14 13 12 15.5 12C18 12 20 14 20 16.5C20 17.38 19.75 18.21 19.31 18.9M15.5 19C16.88 19 18 17.88 18 16.5C18 15.12 16.88 14 15.5 14C14.12 14 13 15.12 13 16.5C13 17.88 14.12 19 15.5 19M21 4V6H3V4H21M3 16V14H9V16H3M3 11V9H21V11H18.97C17.96 10.37 16.77 10 15.5 10C14.23 10 13.04 10.37 12.03 11H3Z" })));
@@ -32,22 +30,18 @@ function ContentPaste(props) {
32
30
  return (react_1.default.createElement(SvgIcon_1.default, { ...props },
33
31
  react_1.default.createElement("path", { d: "M19,20H5V4H7V7H17V4H19M12,2A1,1 0 0,1 13,3A1,1 0 0,1 12,4A1,1 0 0,1 11,3A1,1 0 0,1 12,2M19,2H14.82C14.4,0.84 13.3,0 12,0C10.7,0 9.6,0.84 9.18,2H5A2,2 0 0,0 3,4V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V4A2,2 0 0,0 19,2Z" })));
34
32
  }
35
- // format-list-checkbox from https://materialdesignicons.com/
36
33
  function TrackSelector(props) {
37
34
  return (react_1.default.createElement(SvgIcon_1.default, { ...props },
38
35
  react_1.default.createElement("path", { d: "M21 19v-2H8v2h13m0-6v-2H8v2h13M8 7h13V5H8v2M4 5v2h2V5H4M3 5a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1V5m1 6v2h2v-2H4m-1 0a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1v-2m1 6v2h2v-2H4m-1 0a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1v-2z" })));
39
36
  }
40
- // content-save-edit from https://materialdesignicons.com/
41
37
  function SaveAs(props) {
42
38
  return (react_1.default.createElement(SvgIcon_1.default, { ...props },
43
39
  react_1.default.createElement("path", { fill: "currentColor", d: "M10,19L10.14,18.86C8.9,18.5 8,17.36 8,16A3,3 0 0,1 11,13C12.36,13 13.5,13.9 13.86,15.14L20,9V7L16,3H4C2.89,3 2,3.9 2,5V19A2,2 0 0,0 4,21H10V19M4,5H14V9H4V5M20.04,12.13C19.9,12.13 19.76,12.19 19.65,12.3L18.65,13.3L20.7,15.35L21.7,14.35C21.92,14.14 21.92,13.79 21.7,13.58L20.42,12.3C20.31,12.19 20.18,12.13 20.04,12.13M18.07,13.88L12,19.94V22H14.06L20.12,15.93L18.07,13.88Z" })));
44
40
  }
45
- // content-save from https://materialdesignicons.com/
46
41
  function Save(props) {
47
42
  return (react_1.default.createElement(SvgIcon_1.default, { ...props },
48
43
  react_1.default.createElement("path", { fill: "currentColor", d: "M15,9H5V5H15M12,19A3,3 0 0,1 9,16A3,3 0 0,1 12,13A3,3 0 0,1 15,16A3,3 0 0,1 12,19M17,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V7L17,3Z" })));
49
44
  }
50
- // dna from https://materialdesignicons.com/
51
45
  function DNA(props) {
52
46
  return (react_1.default.createElement(SvgIcon_1.default, { ...props },
53
47
  react_1.default.createElement("path", { fill: "currentColor", d: "M4,2H6V4C6,5.44 6.68,6.61 7.88,7.78C8.74,8.61 9.89,9.41 11.09,10.2L9.26,11.39C8.27,10.72 7.31,10 6.5,9.21C5.07,7.82 4,6.1 4,4V2M18,2H20V4C20,6.1 18.93,7.82 17.5,9.21C16.09,10.59 14.29,11.73 12.54,12.84C10.79,13.96 9.09,15.05 7.88,16.22C6.68,17.39 6,18.56 6,20V22H4V20C4,17.9 5.07,16.18 6.5,14.79C7.91,13.41 9.71,12.27 11.46,11.16C13.21,10.04 14.91,8.95 16.12,7.78C17.32,6.61 18,5.44 18,4V2M14.74,12.61C15.73,13.28 16.69,14 17.5,14.79C18.93,16.18 20,17.9 20,20V22H18V20C18,18.56 17.32,17.39 16.12,16.22C15.26,15.39 14.11,14.59 12.91,13.8L14.74,12.61M7,3H17V4L16.94,4.5H7.06L7,4V3M7.68,6H16.32C16.08,6.34 15.8,6.69 15.42,7.06L14.91,7.5H9.07L8.58,7.06C8.2,6.69 7.92,6.34 7.68,6M9.09,16.5H14.93L15.42,16.94C15.8,17.31 16.08,17.66 16.32,18H7.68C7.92,17.66 8.2,17.31 8.58,16.94L9.09,16.5M7.06,19.5H16.94L17,20V21H7V20L7.06,19.5Z" })));
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { TypographyProps } from '@mui/material';
2
+ import type { TypographyProps } from '@mui/material';
3
3
  interface Props extends TypographyProps {
4
4
  message?: string;
5
5
  }
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.default = LoadingEllipses;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const material_1 = require("@mui/material");
9
- const mui_1 = require("tss-react/mui");
10
9
  const tss_react_1 = require("tss-react");
10
+ const mui_1 = require("tss-react/mui");
11
11
  const useStyles = (0, mui_1.makeStyles)()({
12
12
  dots: {
13
13
  '&::after': {
@@ -33,6 +33,6 @@ const useStyles = (0, mui_1.makeStyles)()({
33
33
  },
34
34
  });
35
35
  function LoadingEllipses({ message, variant = 'body2', ...rest }) {
36
- const { classes } = useStyles();
37
- return (react_1.default.createElement(material_1.Typography, { className: classes.dots, ...rest, variant: variant }, message || 'Loading'));
36
+ const { cx, classes } = useStyles();
37
+ return (react_1.default.createElement(material_1.Typography, { className: cx(classes.dots, rest.className), ...rest, variant: variant }, message || 'Loading'));
38
38
  }
package/ui/Menu.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { PopoverProps, SvgIconProps } from '@mui/material';
2
+ import type { PopoverProps, SvgIconProps } from '@mui/material';
3
3
  interface MenuItemEndDecorationSubMenuProps {
4
4
  type: 'subMenu';
5
5
  }
package/ui/Menu.js CHANGED
@@ -28,29 +28,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.MenuItemEndDecoration = MenuItemEndDecoration;
30
30
  const react_1 = __importStar(require("react"));
31
- const material_1 = require("@mui/material");
32
- const mui_1 = require("tss-react/mui");
33
- // icons
34
31
  const ArrowRight_1 = __importDefault(require("@mui/icons-material/ArrowRight"));
35
32
  const CheckBox_1 = __importDefault(require("@mui/icons-material/CheckBox"));
36
33
  const CheckBoxOutlineBlank_1 = __importDefault(require("@mui/icons-material/CheckBoxOutlineBlank"));
37
34
  const RadioButtonChecked_1 = __importDefault(require("@mui/icons-material/RadioButtonChecked"));
38
35
  const RadioButtonUnchecked_1 = __importDefault(require("@mui/icons-material/RadioButtonUnchecked"));
39
- // other
36
+ const material_1 = require("@mui/material");
37
+ const mui_1 = require("tss-react/mui");
40
38
  const util_1 = require("../util");
41
39
  const useStyles = (0, mui_1.makeStyles)()({
42
40
  paper: {
43
41
  position: 'fixed',
44
42
  overflowY: 'auto',
45
43
  overflowX: 'hidden',
46
- // So we see the popover when it's empty.
47
44
  minWidth: 16,
48
45
  minHeight: 16,
49
46
  maxWidth: 'calc(100% - 32px)',
50
47
  maxHeight: 'calc(100% - 32px)',
51
48
  top: 0,
52
49
  left: 0,
53
- // We disable the focus ring for mouse, touch and keyboard users.
54
50
  outline: 0,
55
51
  },
56
52
  menuItemEndDecoration: {
@@ -94,7 +90,6 @@ function MenuItemEndDecoration(props) {
94
90
  }
95
91
  break;
96
92
  }
97
- // No default
98
93
  }
99
94
  return react_1.default.createElement("div", { className: classes.menuItemEndDecoration }, icon);
100
95
  }
@@ -249,9 +244,7 @@ const MenuPage = react_1.default.forwardRef(function MenuPage2(props, ref) {
249
244
  }
250
245
  return subMenu;
251
246
  })));
252
- return top ? (ListContents) : (
253
- // Grow is required for cascading sub-menus
254
- react_1.default.createElement(material_1.Grow, { in: open, style: { transformOrigin: '0 0 0' }, ref: ref },
247
+ return top ? (ListContents) : (react_1.default.createElement(material_1.Grow, { in: open, style: { transformOrigin: '0 0 0' }, ref: ref },
255
248
  react_1.default.createElement(material_1.Paper, { elevation: 8, ref: paperRef, className: classes.paper, style: { ...position } }, ListContents)));
256
249
  });
257
250
  function Menu(props) {
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { MenuItem } from '@jbrowse/core/ui';
2
+ import type { MenuItem } from '@jbrowse/core/ui';
3
3
  declare const MenuButton: ({ children, menuItems, closeAfterItemClick, stopPropagation, setOpen, ...rest }: {
4
4
  closeAfterItemClick?: boolean;
5
5
  children?: React.ReactElement;
@@ -36,11 +36,11 @@ const useStyles = (0, mui_1.makeStyles)()({
36
36
  },
37
37
  flexbox_verticalHandle: {
38
38
  cursor: 'col-resize',
39
- alignSelf: 'stretch', // the height: 100% is actually unable to function inside flexbox
39
+ alignSelf: 'stretch',
40
40
  },
41
41
  flexbox_horizontalHandle: {
42
42
  cursor: 'row-resize',
43
- alignSelf: 'stretch', // similar to above
43
+ alignSelf: 'stretch',
44
44
  },
45
45
  });
46
46
  function ResizeHandle({ onDrag, vertical = false, flexbox = false, className: originalClassName, onMouseDown, ...props }) {
@@ -4,8 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const react_1 = __importDefault(require("react"));
7
- const mobx_react_1 = require("mobx-react");
8
7
  const material_1 = require("@mui/material");
8
+ const mobx_react_1 = require("mobx-react");
9
9
  const Dialog_1 = __importDefault(require("./Dialog"));
10
10
  const ReturnToImportFormDialog = (0, mobx_react_1.observer)(function ({ model, handleClose, }) {
11
11
  return (react_1.default.createElement(Dialog_1.default, { maxWidth: "xl", open: true, onClose: handleClose, title: "Reference sequence" },
@@ -5,14 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.default = SanitizedHTML;
7
7
  const react_1 = __importDefault(require("react"));
8
- const escape_html_1 = __importDefault(require("escape-html"));
9
8
  const dompurify_1 = __importDefault(require("dompurify"));
9
+ const escape_html_1 = __importDefault(require("escape-html"));
10
10
  const util_1 = require("../util");
11
- // source https://github.com/sindresorhus/html-tags/blob/master/html-tags.json
12
- // with some random uncommon ones removed. note: we just use this to run the content
13
- // through dompurify without escaping if we see an htmlTag from this list
14
- // otherwise we escape angle brackets and things prematurely because it might be
15
- // something like <TRA> in VCF. Ref #657
16
11
  const htmlTags = [
17
12
  'a',
18
13
  'b',
@@ -47,28 +42,16 @@ const htmlTags = [
47
42
  'ul',
48
43
  ];
49
44
  let added = false;
50
- // adapted from is-html
51
- // https://github.com/sindresorhus/is-html/blob/master/index.js
52
45
  const full = new RegExp(htmlTags.map(tag => `<${tag}\\b[^>]*>`).join('|'), 'i');
53
46
  function isHTML(str) {
54
47
  return full.test(str);
55
48
  }
56
- // note this is mocked during testing, see
57
- // packages/__mocks__/@jbrowse/core/ui/SanitizedHTML something about dompurify
58
- // behavior causes errors during tests, was seen in
59
- // products/jbrowse-web/src/tests/Connection.test.tsx test (can delete mock to
60
- // see)
61
- //
62
49
  function SanitizedHTML({ html: pre, className, }) {
63
- // try to add links to the text first
64
50
  const html = (0, util_1.linkify)(pre);
65
51
  const value = isHTML(html) ? html : (0, escape_html_1.default)(html);
66
52
  if (!added) {
67
53
  added = true;
68
- // see https://github.com/cure53/DOMPurify/issues/317
69
- // only have to add this once, and can't do it globally because dompurify
70
- // not yet initialized at global scope
71
- dompurify_1.default.addHook('afterSanitizeAttributes', (node) => {
54
+ dompurify_1.default.addHook('afterSanitizeAttributes', node => {
72
55
  if (node.tagName === 'A') {
73
56
  node.setAttribute('rel', 'noopener noreferrer');
74
57
  node.setAttribute('target', '_blank');
package/ui/Snackbar.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import { AbstractSessionModel } from '../util';
3
- import { SnackbarMessage } from './SnackbarModel';
2
+ import type { AbstractSessionModel } from '../util';
3
+ import type { SnackbarMessage } from './SnackbarModel';
4
4
  interface SnackbarSession extends AbstractSessionModel {
5
5
  snackbarMessages: SnackbarMessage[];
6
6
  popSnackbarMessage: () => void;
package/ui/Snackbar.js CHANGED
@@ -4,10 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const react_1 = __importDefault(require("react"));
7
+ const Close_1 = __importDefault(require("@mui/icons-material/Close"));
7
8
  const material_1 = require("@mui/material");
8
9
  const mobx_react_1 = require("mobx-react");
9
- // icons
10
- const Close_1 = __importDefault(require("@mui/icons-material/Close"));
11
10
  const Snackbar = (0, mobx_react_1.observer)(function ({ session }) {
12
11
  const { snackbarMessages } = session;
13
12
  const latestMessage = snackbarMessages.at(-1);
@@ -1,42 +1,17 @@
1
- import { NotificationLevel, SnackAction } from '../util/types';
1
+ import type { NotificationLevel, SnackAction } from '../util/types';
2
2
  export interface SnackbarMessage {
3
3
  message: string;
4
4
  level?: NotificationLevel;
5
5
  action?: SnackAction;
6
6
  }
7
- /**
8
- * #stateModel SnackbarModel
9
- * #category session
10
- */
11
7
  export default function SnackbarModel(): import("mobx-state-tree").IModelType<{}, {
12
- /**
13
- * #volatile
14
- */
15
8
  snackbarMessages: import("mobx").IObservableArray<SnackbarMessage>;
16
9
  } & {
17
- /**
18
- * #getter
19
- */
20
10
  readonly snackbarMessageSet: Map<string, SnackbarMessage>;
21
11
  } & {
22
- /**
23
- * #action
24
- */
25
12
  notify(message: string, level?: NotificationLevel, action?: SnackAction): void;
26
- /**
27
- * #action
28
- */
29
13
  notifyError(errorMessage: string, error?: unknown, extra?: unknown): void;
30
- /**
31
- * #action
32
- */
33
14
  pushSnackbarMessage(message: string, level?: NotificationLevel, action?: SnackAction): void;
34
- /**
35
- * #action
36
- */
37
15
  popSnackbarMessage(): SnackbarMessage | undefined;
38
- /**
39
- * #action
40
- */
41
16
  removeSnackbarMessage(message: string): void;
42
17
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
@@ -28,37 +28,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.default = SnackbarModel;
30
30
  const react_1 = __importStar(require("react"));
31
- const mobx_state_tree_1 = require("mobx-state-tree");
32
- const mobx_1 = require("mobx");
33
- // icons
34
31
  const Report_1 = __importDefault(require("@mui/icons-material/Report"));
35
- // lazies
32
+ const mobx_1 = require("mobx");
33
+ const mobx_state_tree_1 = require("mobx-state-tree");
36
34
  const ErrorMessageStackTraceDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@jbrowse/core/ui/ErrorMessageStackTraceDialog'))));
37
- /**
38
- * #stateModel SnackbarModel
39
- * #category session
40
- */
41
35
  function SnackbarModel() {
42
36
  return mobx_state_tree_1.types
43
37
  .model({})
44
38
  .volatile(() => ({
45
- /**
46
- * #volatile
47
- */
48
39
  snackbarMessages: mobx_1.observable.array(),
49
40
  }))
50
41
  .views(self => ({
51
- /**
52
- * #getter
53
- */
54
42
  get snackbarMessageSet() {
55
43
  return new Map(self.snackbarMessages.map(s => [s.message, s]));
56
44
  },
57
45
  }))
58
46
  .actions(self => ({
59
- /**
60
- * #action
61
- */
62
47
  notify(message, level, action) {
63
48
  this.pushSnackbarMessage(message, level, action);
64
49
  if (level === 'info' || level === 'success') {
@@ -67,14 +52,10 @@ function SnackbarModel() {
67
52
  }, 5000);
68
53
  }
69
54
  },
70
- /**
71
- * #action
72
- */
73
55
  notifyError(errorMessage, error, extra) {
74
56
  this.notify(errorMessage, 'error', {
75
57
  name: react_1.default.createElement(Report_1.default, null),
76
58
  onClick: () => {
77
- // @ts-expect-error
78
59
  self.queueDialog((onClose) => [
79
60
  ErrorMessageStackTraceDialog,
80
61
  {
@@ -86,23 +67,14 @@ function SnackbarModel() {
86
67
  },
87
68
  });
88
69
  },
89
- /**
90
- * #action
91
- */
92
70
  pushSnackbarMessage(message, level, action) {
93
71
  if (action || !self.snackbarMessageSet.has(message)) {
94
72
  self.snackbarMessages.push({ message, level, action });
95
73
  }
96
74
  },
97
- /**
98
- * #action
99
- */
100
75
  popSnackbarMessage() {
101
76
  return self.snackbarMessages.pop();
102
77
  },
103
- /**
104
- * #action
105
- */
106
78
  removeSnackbarMessage(message) {
107
79
  const element = self.snackbarMessageSet.get(message);
108
80
  if (element !== undefined) {
package/ui/colors.d.ts CHANGED
@@ -7,4 +7,4 @@ declare const ggplot2Colors6: string[];
7
7
  declare const ggplot2Colors5: string[];
8
8
  declare const ggplot2Colors4: string[];
9
9
  declare const ggplot2Colors3: string[];
10
- export { set1, set2, tableau10, dark2, category10, ggplot2Colors6, ggplot2Colors5, ggplot2Colors4, ggplot2Colors3, };
10
+ export { category10, dark2, ggplot2Colors3, ggplot2Colors4, ggplot2Colors5, ggplot2Colors6, set1, set2, tableau10, };
package/ui/colors.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ggplot2Colors3 = exports.ggplot2Colors4 = exports.ggplot2Colors5 = exports.ggplot2Colors6 = exports.category10 = exports.dark2 = exports.tableau10 = exports.set2 = exports.set1 = void 0;
3
+ exports.tableau10 = exports.set2 = exports.set1 = exports.ggplot2Colors6 = exports.ggplot2Colors5 = exports.ggplot2Colors4 = exports.ggplot2Colors3 = exports.dark2 = exports.category10 = void 0;
4
4
  const category10 = [
5
5
  '#1f77b4',
6
6
  '#ff7f0e',
@@ -1,7 +1,4 @@
1
1
  "use strict";
2
- /* eslint-disable */
3
- // vendored (e.g. copied into our source tree) because the tooling picks up "import" statements that confuse jest, could confuse other consumers of our modules
4
- // copy of react-colorful/dist/index.esmodule.js
5
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
3
  if (k2 === undefined) k2 = k;
7
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
package/ui/theme.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ThemeOptions } from '@mui/material/styles';
1
+ import type { ThemeOptions } from '@mui/material/styles';
2
2
  declare module '@mui/material/styles/createPalette' {
3
3
  interface Palette {
4
4
  tertiary: Palette['primary'];
package/ui/theme.js CHANGED
@@ -14,6 +14,7 @@ const midnight = '#0D233F';
14
14
  const grape = '#721E63';
15
15
  const forest = refTheme.palette.augmentColor({ color: { main: '#135560' } });
16
16
  const mandarin = refTheme.palette.augmentColor({ color: { main: '#FFB11D' } });
17
+ const lightgrey = refTheme.palette.augmentColor({ color: { main: '#aaa' } });
17
18
  const bases = {
18
19
  A: refTheme.palette.augmentColor({ color: colors_1.green }),
19
20
  C: refTheme.palette.augmentColor({ color: colors_1.blue }),
@@ -58,8 +59,6 @@ function stockTheme() {
58
59
  components: {
59
60
  MuiLink: {
60
61
  styleOverrides: {
61
- // the default link color uses theme.palette.primary.main which is
62
- // very bad with dark mode+midnight primary
63
62
  root: ({ theme }) => ({
64
63
  color: theme.palette.tertiary.main,
65
64
  }),
@@ -169,13 +168,6 @@ function createJBrowseBaseTheme(theme) {
169
168
  size: 'small',
170
169
  },
171
170
  styleOverrides: {
172
- // the default button, especially when not using variant=contained,
173
- // uses theme.palette.primary.main for text which is very bad with
174
- // dark mode+midnight primary
175
- //
176
- // keeps text secondary for darkmode, uses
177
- // a text-like coloring to ensure contrast
178
- // xref https://stackoverflow.com/a/72546130/2129219
179
171
  root: ({ theme }) => theme.palette.mode === 'dark'
180
172
  ? {
181
173
  color: theme.palette.text.primary,
@@ -251,7 +243,6 @@ function createJBrowseBaseTheme(theme) {
251
243
  },
252
244
  styleOverrides: {
253
245
  secondary: {
254
- // @ts-expect-error
255
246
  backgroundColor: (_b = (_a = theme === null || theme === void 0 ? void 0 : theme.palette) === null || _a === void 0 ? void 0 : _a.quaternary) === null || _b === void 0 ? void 0 : _b.main,
256
247
  },
257
248
  },
@@ -284,8 +275,6 @@ function createJBrowseBaseTheme(theme) {
284
275
  },
285
276
  MuiLink: {
286
277
  styleOverrides: {
287
- // the default link color uses theme.palette.primary.main which is
288
- // very bad with dark mode+midnight primary
289
278
  root: ({ theme }) => ({
290
279
  color: theme.palette.text.secondary,
291
280
  }),
@@ -293,13 +282,6 @@ function createJBrowseBaseTheme(theme) {
293
282
  },
294
283
  MuiCheckbox: {
295
284
  styleOverrides: {
296
- // the default checkbox-when-checked color uses
297
- // theme.palette.primary.main which is very bad with dark
298
- // mode+midnight primary
299
- //
300
- // keeps the forest-green checkbox by default but for darkmode, uses
301
- // a text-like coloring to ensure contrast xref
302
- // https://stackoverflow.com/a/72546130/2129219
303
285
  root: ({ theme }) => theme.palette.mode === 'dark'
304
286
  ? {
305
287
  color: theme.palette.text.secondary,
@@ -312,13 +294,6 @@ function createJBrowseBaseTheme(theme) {
312
294
  },
313
295
  MuiRadio: {
314
296
  styleOverrides: {
315
- // the default checkbox-when-checked color uses
316
- // theme.palette.primary.main which is very bad with dark
317
- // mode+midnight primary
318
- //
319
- // keeps the forest-green checkbox by default but for darkmode, uses
320
- // a text-like coloring to ensure contrast
321
- // xref https://stackoverflow.com/a/72546130/2129219
322
297
  root: ({ theme }) => theme.palette.mode === 'dark'
323
298
  ? {
324
299
  color: theme.palette.text.secondary,
@@ -331,14 +306,6 @@ function createJBrowseBaseTheme(theme) {
331
306
  },
332
307
  MuiFormLabel: {
333
308
  styleOverrides: {
334
- // the default checkbox-when-checked color uses
335
- // theme.palette.primary.main which is very bad with dark
336
- // mode+midnight primary
337
- //
338
- // keeps the forest-green checkbox by default but for darkmode, uses
339
- // a text-like coloring to ensure contrast
340
- // xref https://stackoverflow.com/a/72546130/2129219
341
- //
342
309
  root: ({ theme }) => theme.palette.mode === 'dark'
343
310
  ? {
344
311
  color: theme.palette.text.secondary,
@@ -352,11 +319,9 @@ function createJBrowseBaseTheme(theme) {
352
319
  MuiAccordionSummary: {
353
320
  styleOverrides: {
354
321
  root: {
355
- // @ts-expect-error
356
322
  backgroundColor: (_d = (_c = theme === null || theme === void 0 ? void 0 : theme.palette) === null || _c === void 0 ? void 0 : _c.tertiary) === null || _d === void 0 ? void 0 : _d.main,
357
323
  },
358
324
  content: {
359
- // @ts-expect-error
360
325
  color: (_f = (_e = theme === null || theme === void 0 ? void 0 : theme.palette) === null || _e === void 0 ? void 0 : _e.tertiary) === null || _f === void 0 ? void 0 : _f.contrastText,
361
326
  },
362
327
  },
@@ -372,58 +337,33 @@ function createJBrowseBaseTheme(theme) {
372
337
  }
373
338
  function createJBrowseTheme(configTheme = {}, themes = exports.defaultThemes, themeName = 'default') {
374
339
  return (0, styles_1.createTheme)(createJBrowseBaseTheme(themeName === 'default'
375
- ? (0, deepmerge_1.default)(themes.default, augmentTheme(configTheme), {
340
+ ? (0, deepmerge_1.default)(themes.default, augmentThemeColors(configTheme), {
376
341
  arrayMerge: overwriteArrayMerge,
377
342
  })
378
- : augmentThemePlus(themes[themeName])));
343
+ : addMissingColors(themes[themeName])));
379
344
  }
380
- function augmentTheme(theme = {}) {
381
- var _a, _b;
382
- if ((_a = theme.palette) === null || _a === void 0 ? void 0 : _a.tertiary) {
383
- theme = (0, deepmerge_1.default)(theme, {
384
- palette: {
385
- tertiary: refTheme.palette.augmentColor('color' in theme.palette.tertiary
386
- ? theme.palette.tertiary
387
- : { color: theme.palette.tertiary }),
388
- },
389
- });
390
- }
391
- if ((_b = theme.palette) === null || _b === void 0 ? void 0 : _b.quaternary) {
392
- theme = (0, deepmerge_1.default)(theme, {
393
- palette: {
394
- quaternary: refTheme.palette.augmentColor('color' in theme.palette.quaternary
395
- ? theme.palette.quaternary
396
- : { color: theme.palette.quaternary }),
397
- },
398
- });
345
+ function augmentThemeColors(theme = {}) {
346
+ var _a;
347
+ for (const entry of ['tertiary', 'quaternary', 'highlight']) {
348
+ if ((_a = theme.palette) === null || _a === void 0 ? void 0 : _a[entry]) {
349
+ theme = (0, deepmerge_1.default)(theme, {
350
+ palette: {
351
+ [entry]: refTheme.palette.augmentColor('color' in theme.palette[entry]
352
+ ? theme.palette[entry]
353
+ : { color: theme.palette[entry] }),
354
+ },
355
+ });
356
+ }
399
357
  }
400
358
  return theme;
401
359
  }
402
- // creates some blank quaternary/tertiary colors if unsupplied by a user theme
403
- function augmentThemePlus(theme = {}) {
404
- var _a, _b;
405
- theme = augmentTheme(theme);
406
- if (!((_a = theme.palette) === null || _a === void 0 ? void 0 : _a.quaternary)) {
407
- theme = (0, deepmerge_1.default)(theme, {
408
- palette: {
409
- quaternary: refTheme.palette.augmentColor({
410
- color: {
411
- main: '#aaa',
412
- },
413
- }),
414
- },
415
- });
416
- }
417
- if (!((_b = theme.palette) === null || _b === void 0 ? void 0 : _b.tertiary)) {
418
- theme = (0, deepmerge_1.default)(theme, {
419
- palette: {
420
- tertiary: refTheme.palette.augmentColor({
421
- color: {
422
- main: '#aaa',
423
- },
424
- }),
425
- },
426
- });
427
- }
428
- return theme;
360
+ function addMissingColors(theme = {}) {
361
+ var _a, _b, _c;
362
+ return augmentThemeColors((0, deepmerge_1.default)(theme, {
363
+ palette: {
364
+ quaternary: ((_a = theme.palette) === null || _a === void 0 ? void 0 : _a.quaternary) || lightgrey,
365
+ tertiary: ((_b = theme.palette) === null || _b === void 0 ? void 0 : _b.tertiary) || lightgrey,
366
+ highlight: ((_c = theme.palette) === null || _c === void 0 ? void 0 : _c.highlight) || mandarin,
367
+ },
368
+ }));
429
369
  }
@@ -1,4 +1,4 @@
1
- import { ViewSnap } from './index';
1
+ import type { ViewSnap } from './index';
2
2
  export interface BpOffset {
3
3
  refName?: string;
4
4
  index: number;
@@ -39,8 +39,6 @@ function moveTo(self, start, end) {
39
39
  }
40
40
  const targetBpPerPx = len / (width - interRegionPaddingWidth * numBlocksWideEnough);
41
41
  const newBpPerPx = self.zoomTo(targetBpPerPx);
42
- // If our target bpPerPx was smaller than the allowed minBpPerPx, adjust
43
- // the scroll so the requested range is in the middle of the screen
44
42
  let extraBp = 0;
45
43
  if (targetBpPerPx < newBpPerPx) {
46
44
  extraBp = ((newBpPerPx - targetBpPerPx) * self.width) / 2;
@@ -61,7 +59,6 @@ function moveTo(self, start, end) {
61
59
  function coord(r, bp) {
62
60
  return Math.floor(r.reversed ? r.end - bp : r.start + bp) + 1;
63
61
  }
64
- // manual return type since getSnapshot hard to infer here
65
62
  function pxToBp(self, px) {
66
63
  var _a;
67
64
  let bpSoFar = 0;
@@ -72,7 +69,6 @@ function pxToBp(self, px) {
72
69
  const r = displayedRegions[0];
73
70
  const snap = r;
74
71
  return {
75
- // xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit
76
72
  ...snap,
77
73
  oob: true,
78
74
  coord: coord(r, bp),
@@ -89,7 +85,6 @@ function pxToBp(self, px) {
89
85
  if (len + bpSoFar > bp && bpSoFar <= bp) {
90
86
  const snap = r;
91
87
  return {
92
- // xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit
93
88
  ...snap,
94
89
  oob: false,
95
90
  offset,
@@ -97,8 +92,6 @@ function pxToBp(self, px) {
97
92
  index: i,
98
93
  };
99
94
  }
100
- // add the interRegionPaddingWidth if the boundary is in the screen e.g. in
101
- // a static block
102
95
  if (((_a = blocks[currBlock]) === null || _a === void 0 ? void 0 : _a.regionNumber) === i) {
103
96
  bpSoFar += len + interRegionPaddingBp;
104
97
  currBlock++;
@@ -113,7 +106,6 @@ function pxToBp(self, px) {
113
106
  const offset = bp - bpSoFar + len;
114
107
  const snap = r;
115
108
  return {
116
- // xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit
117
109
  ...snap,
118
110
  oob: true,
119
111
  offset,
@@ -151,8 +143,6 @@ function bpToPx({ refName, coord, regionNumber, self, }) {
151
143
  bpSoFar += r.reversed ? r.end - coord : coord - r.start;
152
144
  break;
153
145
  }
154
- // add the interRegionPaddingWidth if the boundary is in the screen e.g. in
155
- // a static block
156
146
  if (((_a = blocks[currBlock]) === null || _a === void 0 ? void 0 : _a.regionNumber) === i) {
157
147
  bpSoFar += len + interRegionPaddingBp;
158
148
  currBlock++;
@@ -189,8 +179,6 @@ function bpToPxMap({ refName, coord, regionNumber, self, }) {
189
179
  bpSoFar += r.reversed ? r.end - coord : coord - r.start;
190
180
  break;
191
181
  }
192
- // add the interRegionPaddingWidth if the boundary is in the screen e.g. in
193
- // a static block
194
182
  if (((_a = blocks[currBlock]) === null || _a === void 0 ? void 0 : _a.regionNumber) === i) {
195
183
  bpSoFar += len + interRegionPaddingBp;
196
184
  currBlock++;