@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
@@ -2,28 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = calculateDynamicBlocks;
4
4
  const mobx_state_tree_1 = require("mobx-state-tree");
5
- const range_1 = require("./range");
6
5
  const _1 = require(".");
7
6
  const blockTypes_1 = require("./blockTypes");
8
- /**
9
- * returns a BlockSet of which the `blocks` attribute is an array of 'dynamic
10
- * blocks', which are blocks representing only the regions that are visible in
11
- * the view right now. these are mostly used by tracks for which static blocks
12
- * are not feasible.
13
- *
14
- * each block is a plain JS object like:
15
- * `{ refName, start, end, offsetPx, reversed? }`
16
- *
17
- * start and end are in bp, and start is always less than end, but if reversed
18
- * is true, startBp will be on the right side of the visible region.
19
- *
20
- * offsetPx is the number of pixels from the left edge of the view to the left
21
- * edge of the region
22
- *
23
- * NOTE: start, end, and offsetPx may all be fractional!
24
- *
25
- * @returns BlockSet of `{ refName, startBp, end, offset, reversed? }`
26
- */
7
+ const range_1 = require("./range");
27
8
  function calculateDynamicBlocks(model, padding = true, elision = true) {
28
9
  const { offsetPx, displayedRegions, bpPerPx, width, minimumBlockWidth, interRegionPaddingWidth, } = model;
29
10
  if (!width) {
@@ -41,7 +22,6 @@ function calculateDynamicBlocks(model, padding = true, elision = true) {
41
22
  const parentRegion = (0, mobx_state_tree_1.isStateTreeNode)(region) ? (0, mobx_state_tree_1.getSnapshot)(region) : region;
42
23
  const [leftPx, rightPx] = (0, range_1.intersection2)(windowLeftPx, windowRightPx, displayedRegionLeftPx, displayedRegionRightPx);
43
24
  if (leftPx !== undefined && rightPx !== undefined) {
44
- // this displayed region overlaps the view, so make a record for it
45
25
  let start;
46
26
  let end;
47
27
  let isLeftEndOfDisplayedRegion;
@@ -92,7 +72,6 @@ function calculateDynamicBlocks(model, padding = true, elision = true) {
92
72
  blocks.push(new blockTypes_1.ContentBlock(blockData));
93
73
  }
94
74
  if (padding) {
95
- // insert a inter-region padding block if we are crossing a displayed region
96
75
  if (regionWidthPx >= minimumBlockWidth &&
97
76
  blockData.isRightEndOfDisplayedRegion &&
98
77
  regionNumber < displayedRegions.length - 1) {
@@ -1,7 +1,7 @@
1
- import { Instance } from 'mobx-state-tree';
2
1
  import { BlockSet } from './blockTypes';
3
- import { Region } from './types';
2
+ import type { Region } from './types';
4
3
  import type { Region as RegionModel } from './types/mst';
4
+ import type { Instance } from 'mobx-state-tree';
5
5
  export interface Base1DViewModel {
6
6
  offsetPx: number;
7
7
  width: number;
@@ -10,7 +10,6 @@ function calculateStaticBlocks(model, padding = true, elision = true, extra = 0,
10
10
  const windowRightBp = (offsetPx + modelWidth) * bpPerPx;
11
11
  const blockSizePx = width;
12
12
  const blockSizeBp = Math.ceil(blockSizePx * bpPerPx);
13
- // for each displayed region
14
13
  let regionBpOffset = 0;
15
14
  const blocks = new blockTypes_1.BlockSet();
16
15
  for (let regionNumber = 0; regionNumber < displayedRegions.length; regionNumber++) {
@@ -75,7 +74,6 @@ function calculateStaticBlocks(model, padding = true, elision = true, extra = 0,
75
74
  blocks.push(new blockTypes_1.ContentBlock(blockData));
76
75
  }
77
76
  if (padding) {
78
- // insert a inter-region padding block if we are crossing a displayed region
79
77
  if (regionWidthPx >= minimumBlockWidth &&
80
78
  blockData.isRightEndOfDisplayedRegion &&
81
79
  regionNumber < displayedRegions.length - 1) {
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- // from https://www.w3.org/TR/css-color-4/#named-colors
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.namedColorToHex = namedColorToHex;
5
4
  exports.isNamedColor = isNamedColor;
@@ -1,23 +1,4 @@
1
- /**
2
- * Algorithmically pick a contrasting text color that will
3
- * be visible on top of the given background color. Either
4
- * black or white.
5
- *
6
- * @param color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(),
7
- * hsl(), hsla(), or named color
8
- * @returns 'black' or 'white'
9
- */
10
1
  export declare function contrastingTextColor(color: string): string;
11
- /**
12
- * Darken or lighten a color, depending on its luminance.
13
- * Light colors are darkened, dark colors are lightened.
14
- * Uses MUI's `emphasize`, but adds support for named colors
15
- *
16
- * @param color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(),
17
- * hsl(), hsla(), or named color
18
- * @param coefficient - multiplier in the range 0 - 1, defaults to 0.15
19
- * @returns A CSS color string. Hex input values are returned as rgb
20
- */
21
2
  export declare function emphasize(color: string, coefficient?: number): string;
22
3
  export declare function makeContrasting(foreground: string, background?: string, minContrastRatio?: number): string;
23
4
  export { isNamedColor, namedColorToHex } from './cssColorsLevel4';
@@ -6,44 +6,14 @@ exports.emphasize = emphasize;
6
6
  exports.makeContrasting = makeContrasting;
7
7
  const styles_1 = require("@mui/material/styles");
8
8
  const cssColorsLevel4_1 = require("./cssColorsLevel4");
9
- /**
10
- * Algorithmically pick a contrasting text color that will
11
- * be visible on top of the given background color. Either
12
- * black or white.
13
- *
14
- * @param color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(),
15
- * hsl(), hsla(), or named color
16
- * @returns 'black' or 'white'
17
- */
18
9
  function contrastingTextColor(color) {
19
10
  const luminance = getLuminance(color);
20
11
  return luminance > 0.5 ? 'black' : 'white';
21
12
  }
22
- /**
23
- * The relative brightness of any point in a color space,
24
- * normalized to 0 for darkest black and 1 for lightest white.
25
- * Uses MUI's `getLuminance`, but adds support for named colors
26
- *
27
- * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
28
- *
29
- * @param color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(),
30
- * hsl(), hsla(), or named color
31
- * @returns The relative brightness of the color in the range 0 - 1
32
- */
33
13
  function getLuminance(color) {
34
14
  const convertedColor = (0, cssColorsLevel4_1.namedColorToHex)(color);
35
15
  return (0, styles_1.getLuminance)(convertedColor || color);
36
16
  }
37
- /**
38
- * Darken or lighten a color, depending on its luminance.
39
- * Light colors are darkened, dark colors are lightened.
40
- * Uses MUI's `emphasize`, but adds support for named colors
41
- *
42
- * @param color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(),
43
- * hsl(), hsla(), or named color
44
- * @param coefficient - multiplier in the range 0 - 1, defaults to 0.15
45
- * @returns A CSS color string. Hex input values are returned as rgb
46
- */
47
17
  function emphasize(color, coefficient = 0.15) {
48
18
  const convertedColor = (0, cssColorsLevel4_1.namedColorToHex)(color);
49
19
  return (0, styles_1.emphasize)(convertedColor || color, coefficient);
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- // takes an array or Map or Set (anything iterable with values()) of Maps and
4
- // lets you query them as one Map
5
3
  class CompositeMap {
6
4
  constructor(submaps) {
7
5
  this.submaps = submaps;
package/util/dedupe.js CHANGED
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.dedupe = dedupe;
4
- // from https://github.com/seriousManual/dedupe/blob/master/LICENSE
5
4
  function dedupe(list, hasher = JSON.stringify) {
6
5
  const clone = [];
7
6
  const lookup = new Set();
@@ -2,18 +2,5 @@ export interface SeqChunk {
2
2
  header: string;
3
3
  seq: string;
4
4
  }
5
- /**
6
- * Returns sequence with new line every 80 characters
7
- * ref https://stackoverflow.com/a/51506718/2129219
8
- *
9
- * @param seqString - string
10
- * @returns formatted sequence string
11
- */
12
5
  export declare function formatFastaLines(seqString: string): string;
13
- /**
14
- * Formats the sequences chunks into Fasta format
15
- *
16
- * @param chunks - array of seq chunks of the form `{ header: string, seq: string }`
17
- * @returns formatted sequence in fasta format
18
- */
19
6
  export declare function formatSeqFasta(chunks: SeqChunk[]): string;
@@ -2,22 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.formatFastaLines = formatFastaLines;
4
4
  exports.formatSeqFasta = formatSeqFasta;
5
- /**
6
- * Returns sequence with new line every 80 characters
7
- * ref https://stackoverflow.com/a/51506718/2129219
8
- *
9
- * @param seqString - string
10
- * @returns formatted sequence string
11
- */
12
5
  function formatFastaLines(seqString) {
13
6
  return seqString.replaceAll(/(.{1,80})/g, '$1\n').trimEnd();
14
7
  }
15
- /**
16
- * Formats the sequences chunks into Fasta format
17
- *
18
- * @param chunks - array of seq chunks of the form `{ header: string, seq: string }`
19
- * @returns formatted sequence in fasta format
20
- */
21
8
  function formatSeqFasta(chunks) {
22
9
  return chunks
23
10
  .map(chunk => `>${chunk.header}\n${formatFastaLines(chunk.seq)}`)
package/util/idMaker.d.ts CHANGED
@@ -1 +1 @@
1
- export default function idMaker(args: any, id?: string): number;
1
+ export default function idMaker(args: Record<string, unknown>, id?: string, len?: number): number;
package/util/idMaker.js CHANGED
@@ -2,19 +2,23 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = idMaker;
4
4
  const _1 = require("./");
5
- // generates a short "id fingerprint" from the config passed to the base
6
- // feature adapter by recursively enumerating props, but if config is too big
7
- // does not process entire config (FromConfigAdapter for example can be large)
8
- function idMaker(args, id = '') {
9
- const keys = Object.keys(args);
10
- for (const key of keys) {
11
- if (id.length > 5000) {
12
- break;
5
+ function idMaker(args, id = '', len = 5000) {
6
+ const stack = [args];
7
+ while (stack.length) {
8
+ const obj = stack.pop();
9
+ for (const [key, val] of Object.entries(obj)) {
10
+ if (id.length > len) {
11
+ return (0, _1.hashCode)(id);
12
+ }
13
+ else {
14
+ if (typeof val === 'object' && val !== null) {
15
+ stack.push(val);
16
+ }
17
+ else {
18
+ id += `${key}-${val}`;
19
+ }
20
+ }
13
21
  }
14
- id +=
15
- typeof args[key] === 'object' && args[key]
16
- ? idMaker(args[key], id)
17
- : `${key}-${args[key]};`;
18
22
  }
19
23
  return (0, _1.hashCode)(id);
20
24
  }
package/util/index.d.ts CHANGED
@@ -1,14 +1,14 @@
1
- import React from 'react';
2
- import PluginManager from '../PluginManager';
3
- import type { Buffer } from 'buffer';
4
- import { IAnyStateTreeNode, IStateTreeNode, Instance } from 'mobx-state-tree';
5
- import { IReactionPublic, IReactionOptions } from 'mobx';
6
- import { Feature } from './simpleFeature';
7
- import { AssemblyManager, Region, TypeTestedByPredicate } from './types';
1
+ import type React from 'react';
2
+ import type PluginManager from '../PluginManager';
3
+ import type { BaseBlock } from './blockTypes';
4
+ import type { Feature } from './simpleFeature';
5
+ import type { AssemblyManager, Region, TypeTestedByPredicate } from './types';
8
6
  import type { Region as MUIRegion } from './types/mst';
9
- import { BaseBlock } from './blockTypes';
7
+ import type { BaseOptions } from '../data_adapters/BaseAdapter';
8
+ import type { Buffer } from 'buffer';
9
+ import type { GenericFilehandle } from 'generic-filehandle';
10
+ import type { IAnyStateTreeNode, IStateTreeNode, Instance } from 'mobx-state-tree';
10
11
  export * from './types';
11
- export * from './aborting';
12
12
  export * from './when';
13
13
  export * from './range';
14
14
  export * from './dedupe';
@@ -19,70 +19,13 @@ export declare function useWidthSetter(view: {
19
19
  setWidth: (arg: number) => void;
20
20
  }, padding: string): React.RefObject<HTMLDivElement>;
21
21
  export declare function useDebouncedCallback<T>(callback: (...args: T[]) => void, wait?: number): (...args: T[]) => void;
22
- /**
23
- * find the first node in the hierarchy that matches the given predicate
24
- */
25
22
  export declare function findParentThat(node: IAnyStateTreeNode, predicate: (thing: IAnyStateTreeNode) => boolean): IAnyStateTreeNode;
26
23
  export declare function springAnimate(fromValue: number, toValue: number, setValue: (value: number) => void, onFinish?: () => void, precision?: number, tension?: number, friction?: number, clamp?: boolean): (() => void)[];
27
- /**
28
- * find the first node in the hierarchy that matches the given 'is' typescript
29
- * type guard predicate
30
- */
31
24
  export declare function findParentThatIs<T extends (a: IAnyStateTreeNode) => boolean>(node: IAnyStateTreeNode, predicate: T): TypeTestedByPredicate<T>;
32
- /**
33
- * get the current JBrowse session model, starting at any node in the state
34
- * tree
35
- */
36
25
  export declare function getSession(node: IAnyStateTreeNode): import("./types").AbstractSessionModel;
37
- /**
38
- * get the state model of the view in the state tree that contains the given
39
- * node
40
- */
41
26
  export declare function getContainingView(node: IAnyStateTreeNode): import("./types").AbstractViewModel;
42
- /**
43
- * get the state model of the view in the state tree that contains the given
44
- * node
45
- */
46
27
  export declare function getContainingTrack(node: IAnyStateTreeNode): import("./types").AbstractTrackModel;
47
- /**
48
- * get the state model of the display in the state tree that contains the given
49
- * node
50
- */
51
28
  export declare function getContainingDisplay(node: IAnyStateTreeNode): import("./types").AbstractDisplayModel;
52
- /**
53
- * Assemble a 1-based "locString" from an interbase genomic location
54
- * @param region - Region
55
- * @example
56
- * ```ts
57
- * assembleLocString({ refName: 'chr1', start: 0, end: 100 })
58
- * // ↳ 'chr1:1..100'
59
- * ```
60
- * @example
61
- * ```ts
62
- * assembleLocString({ assemblyName: 'hg19', refName: 'chr1', start: 0, end: 100 })
63
- * // ↳ '{hg19}chr1:1..100'
64
- * ```
65
- * @example
66
- * ```ts
67
- * assembleLocString({ refName: 'chr1' })
68
- * // ↳ 'chr1'
69
- * ```
70
- * @example
71
- * ```ts
72
- * assembleLocString({ refName: 'chr1', start: 0 })
73
- * // ↳ 'chr1:1..'
74
- * ```
75
- * @example
76
- * ```ts
77
- * assembleLocString({ refName: 'chr1', end: 100 })
78
- * // ↳ 'chr1:1..100'
79
- * ```
80
- * @example
81
- * ```ts
82
- * assembleLocString({ refName: 'chr1', start: 0, end: 1 })
83
- * // ↳ 'chr1:1'
84
- * ```
85
- */
86
29
  export declare function assembleLocString(region: ParsedLocString): string;
87
30
  export declare function assembleLocStringFast(region: ParsedLocString, cb?: (n: number) => string | number): string;
88
31
  export interface ParsedLocString {
@@ -93,59 +36,10 @@ export interface ParsedLocString {
93
36
  reversed?: boolean;
94
37
  }
95
38
  export declare function parseLocStringOneBased(locString: string, isValidRefName: (refName: string, assemblyName?: string) => boolean): ParsedLocString;
96
- /**
97
- * Parse a 1-based location string into an interbase genomic location
98
- * @param locString - Location string
99
- * @param isValidRefName - Function that checks if a refName exists in the set
100
- * of all known refNames, or in the set of refNames for an assembly if
101
- * assemblyName is given
102
- * @example
103
- * ```ts
104
- * parseLocString('chr1:1..100', isValidRefName)
105
- * // ↳ { refName: 'chr1', start: 0, end: 100 }
106
- * ```
107
- * @example
108
- * ```ts
109
- * parseLocString('chr1:1-100', isValidRefName)
110
- * // ↳ { refName: 'chr1', start: 0, end: 100 }
111
- * ```
112
- * @example
113
- * ```ts
114
- * parseLocString(`{hg19}chr1:1..100`, isValidRefName)
115
- * // ↳ { assemblyName: 'hg19', refName: 'chr1', start: 0, end: 100 }
116
- * ```
117
- * @example
118
- * ```ts
119
- * parseLocString('chr1', isValidRefName)
120
- * // ↳ { refName: 'chr1' }
121
- * ```
122
- * @example
123
- * ```ts
124
- * parseLocString('chr1:1', isValidRefName)
125
- * // ↳ { refName: 'chr1', start: 0, end: 1 }
126
- * ```
127
- * @example
128
- * ```ts
129
- * parseLocString('chr1:1..', isValidRefName)
130
- * // ↳ { refName: 'chr1', start: 0}
131
- * ```
132
- */
133
39
  export declare function parseLocString(locString: string, isValidRefName: (refName: string, assemblyName?: string) => boolean): ParsedLocString;
134
40
  export declare function compareLocs(locA: ParsedLocString, locB: ParsedLocString): number;
135
41
  export declare function compareLocStrings(a: string, b: string, isValidRefName: (refName: string, assemblyName?: string) => boolean): number;
136
- /**
137
- * Ensure that a number is at least min and at most max.
138
- *
139
- * @param num -
140
- * @param min -
141
- * @param max -
142
- */
143
42
  export declare function clamp(num: number, min: number, max: number): number;
144
- /**
145
- * @param bp -
146
- * @param region -
147
- * @param bpPerPx -
148
- */
149
43
  export declare function bpToPx(bp: number, { reversed, end, start, }: {
150
44
  start?: number;
151
45
  end?: number;
@@ -153,67 +47,25 @@ export declare function bpToPx(bp: number, { reversed, end, start, }: {
153
47
  }, bpPerPx: number): number;
154
48
  export declare function radToDeg(radians: number): number;
155
49
  export declare function degToRad(degrees: number): number;
156
- /**
157
- * @returns [x, y]
158
- */
159
50
  export declare function polarToCartesian(rho: number, theta: number): [number, number];
160
- /**
161
- * @param x - the x
162
- * @param y - the y
163
- * @returns [rho, theta]
164
- */
165
51
  export declare function cartesianToPolar(x: number, y: number): [number, number];
166
- export declare function featureSpanPx(feature: Feature, region: {
52
+ interface MinimalRegion {
167
53
  start: number;
168
54
  end: number;
169
55
  reversed?: boolean;
170
- }, bpPerPx: number): [number, number];
171
- export declare function bpSpanPx(leftBp: number, rightBp: number, region: {
172
- start: number;
173
- end: number;
174
- reversed?: boolean;
175
- }, bpPerPx: number): [number, number];
56
+ }
57
+ export declare function featureSpanPx(feature: Feature, region: MinimalRegion, bpPerPx: number): readonly [number, number];
58
+ export declare function bpSpanPx(leftBp: number, rightBp: number, region: MinimalRegion, bpPerPx: number): readonly [number, number];
176
59
  export declare function iterMap<T, U>(iter: Iterable<T>, func: (arg: T) => U, sizeHint?: number): U[];
177
- /**
178
- * Returns the index of the last element in the array where predicate is true,
179
- * and -1 otherwise.
180
- * Based on https://stackoverflow.com/a/53187807
181
- *
182
- * @param array - The source array to search in
183
- *
184
- * @param predicate - find calls predicate once for each element of the array, in
185
- * descending order, until it finds one where predicate returns true.
186
- *
187
- * @returns findLastIndex returns element index where predicate is true.
188
- * Otherwise, findLastIndex returns -1.
189
- */
190
60
  export declare function findLastIndex<T>(array: T[], predicate: (value: T, index: number, obj: T[]) => boolean): number;
191
61
  export declare function findLast<T>(array: T[], predicate: (value: T, index: number, obj: T[]) => boolean): T | undefined;
192
- /**
193
- * makes a mobx reaction with the given functions, that calls actions on the
194
- * model for each stage of execution, and to abort the reaction function when
195
- * the model is destroyed.
196
- *
197
- * Will call startedFunction(signal), successFunction(result), and
198
- * errorFunction(error) when the async reaction function starts, completes, and
199
- * errors respectively.
200
- *
201
- * @param self -
202
- * @param dataFunction -
203
- * @param asyncReactionFunction -
204
- * @param reactionOptions -
205
- * @param startedFunction -
206
- * @param successFunction -
207
- * @param errorFunction -
208
- */
209
- export declare function makeAbortableReaction<T, U, V>(self: T, dataFunction: (arg: T) => U, asyncReactionFunction: (arg: U | undefined, signal: AbortSignal, model: T, handle: IReactionPublic) => Promise<V>, reactionOptions: IReactionOptions, startedFunction: (aborter: AbortController) => void, successFunction: (arg: V) => void, errorFunction: (err: unknown) => void): void;
210
62
  export declare function renameRegionIfNeeded(refNameMap: Record<string, string> | undefined, region: Region | Instance<typeof MUIRegion>): Region & {
211
63
  originalRefName?: string;
212
64
  };
213
65
  export declare function renameRegionsIfNeeded<ARGTYPE extends {
214
66
  assemblyName?: string;
215
67
  regions?: Region[];
216
- signal?: AbortSignal;
68
+ stopToken?: string;
217
69
  adapterConfig: Record<string, unknown>;
218
70
  sessionId: string;
219
71
  statusCallback?: (arg: string) => void;
@@ -231,9 +83,10 @@ export declare function stringify({ refName, coord, assemblyName, oob, }: {
231
83
  oob?: boolean;
232
84
  }, useAssemblyName?: boolean): string;
233
85
  export declare const isElectron: boolean;
234
- export declare function revcom(seqString: string): string;
235
- export declare function reverse(seqString: string): string;
236
- export declare const complement: (seqString: string) => string;
86
+ export declare const complementTable: Record<string, string>;
87
+ export declare function revcom(str: string): string;
88
+ export declare function reverse(str: string): string;
89
+ export declare function complement(str: string): string;
237
90
  export declare const rIC: (((callback: IdleRequestCallback, options?: IdleRequestOptions) => number) & typeof requestIdleCallback) | ((cb: () => void) => void);
238
91
  export declare function measureText(str: unknown, fontSize?: number): number;
239
92
  export type Frame = 1 | 2 | 3 | -1 | -2 | -3;
@@ -306,12 +159,9 @@ export declare const defaultCodonTable: {
306
159
  GGG: string;
307
160
  GGT: string;
308
161
  };
309
- /**
310
- * take CodonTable above and generate larger codon table that includes all
311
- * permutations of upper and lower case nucleotides
312
- */
313
162
  export declare function generateCodonTable(table: any): Record<string, string>;
314
163
  export declare function updateStatus<U>(msg: string, cb: (arg: string) => void, fn: () => U | Promise<U>): Promise<U>;
164
+ export declare function updateStatus2<U>(msg: string, cb: (arg: string) => void, stopToken: string | undefined, fn: () => U | Promise<U>): Promise<U>;
315
165
  export declare function hashCode(str: string): number;
316
166
  export declare function objectHash(obj: Record<string, any>): string;
317
167
  interface VirtualOffset {
@@ -386,13 +236,12 @@ export declare function mergeIntervals<T extends {
386
236
  start: number;
387
237
  end: number;
388
238
  }>(intervals: T[], w?: number): T[];
389
- interface BasicFeature {
239
+ export interface BasicFeature {
390
240
  end: number;
391
241
  start: number;
392
242
  refName: string;
393
- assemblyName?: string;
394
243
  }
395
- export declare function gatherOverlaps(regions: BasicFeature[], w?: number): BasicFeature[];
244
+ export declare function gatherOverlaps<T extends BasicFeature>(regions: T[], w?: number): T[];
396
245
  export declare function stripAlpha(str: string): string;
397
246
  export declare function getStrokeProps(str: string): {
398
247
  strokeOpacity: number;
@@ -406,5 +255,8 @@ export declare function renderToStaticMarkup(node: React.ReactElement, createRoo
406
255
  render: (node: React.ReactElement) => unknown;
407
256
  }): string;
408
257
  export declare function isGzip(buf: Buffer): boolean;
409
- export { default as SimpleFeature, type Feature, type SimpleFeatureSerialized, isFeature, } from './simpleFeature';
258
+ export declare function fetchAndMaybeUnzip(loc: GenericFilehandle, opts?: BaseOptions): Promise<Buffer>;
259
+ export { type Feature, type SimpleFeatureSerialized, type SimpleFeatureSerializedNoId, default as SimpleFeature, isFeature, } from './simpleFeature';
410
260
  export { blobToDataURL } from './blobToDataURL';
261
+ export { makeAbortableReaction } from './makeAbortableReaction';
262
+ export * from './aborting';