@jbrowse/plugin-linear-comparative-view 2.6.1

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 (276) hide show
  1. package/LICENSE +201 -0
  2. package/dist/LGVSyntenyDisplay/configSchemaF.d.ts +52 -0
  3. package/dist/LGVSyntenyDisplay/configSchemaF.js +18 -0
  4. package/dist/LGVSyntenyDisplay/configSchemaF.js.map +1 -0
  5. package/dist/LGVSyntenyDisplay/index.d.ts +3 -0
  6. package/dist/LGVSyntenyDisplay/index.js +24 -0
  7. package/dist/LGVSyntenyDisplay/index.js.map +1 -0
  8. package/dist/LGVSyntenyDisplay/model.d.ts +380 -0
  9. package/dist/LGVSyntenyDisplay/model.js +154 -0
  10. package/dist/LGVSyntenyDisplay/model.js.map +1 -0
  11. package/dist/LaunchLinearSyntenyView.d.ts +2 -0
  12. package/dist/LaunchLinearSyntenyView.js +58 -0
  13. package/dist/LaunchLinearSyntenyView.js.map +1 -0
  14. package/dist/LinearComparativeDisplay/configSchemaF.d.ts +5 -0
  15. package/dist/LinearComparativeDisplay/configSchemaF.js +18 -0
  16. package/dist/LinearComparativeDisplay/configSchemaF.js.map +1 -0
  17. package/dist/LinearComparativeDisplay/index.d.ts +3 -0
  18. package/dist/LinearComparativeDisplay/index.js +24 -0
  19. package/dist/LinearComparativeDisplay/index.js.map +1 -0
  20. package/dist/LinearComparativeDisplay/stateModelFactory.d.ts +275 -0
  21. package/dist/LinearComparativeDisplay/stateModelFactory.js +172 -0
  22. package/dist/LinearComparativeDisplay/stateModelFactory.js.map +1 -0
  23. package/dist/LinearComparativeView/components/Header.d.ts +7 -0
  24. package/dist/LinearComparativeView/components/Header.js +89 -0
  25. package/dist/LinearComparativeView/components/Header.js.map +1 -0
  26. package/dist/LinearComparativeView/components/LinearComparativeView.d.ts +8 -0
  27. package/dist/LinearComparativeView/components/LinearComparativeView.js +99 -0
  28. package/dist/LinearComparativeView/components/LinearComparativeView.js.map +1 -0
  29. package/dist/LinearComparativeView/components/Rubberband.d.ts +9 -0
  30. package/dist/LinearComparativeView/components/Rubberband.js +225 -0
  31. package/dist/LinearComparativeView/components/Rubberband.js.map +1 -0
  32. package/dist/LinearComparativeView/index.d.ts +3 -0
  33. package/dist/LinearComparativeView/index.js +42 -0
  34. package/dist/LinearComparativeView/index.js.map +1 -0
  35. package/dist/LinearComparativeView/model.d.ts +326 -0
  36. package/dist/LinearComparativeView/model.js +346 -0
  37. package/dist/LinearComparativeView/model.js.map +1 -0
  38. package/dist/LinearReadVsRef/LinearReadVsRef.d.ts +7 -0
  39. package/dist/LinearReadVsRef/LinearReadVsRef.js +284 -0
  40. package/dist/LinearReadVsRef/LinearReadVsRef.js.map +1 -0
  41. package/dist/LinearReadVsRef/index.d.ts +2 -0
  42. package/dist/LinearReadVsRef/index.js +55 -0
  43. package/dist/LinearReadVsRef/index.js.map +1 -0
  44. package/dist/LinearSyntenyDisplay/afterAttach.d.ts +2 -0
  45. package/dist/LinearSyntenyDisplay/afterAttach.js +108 -0
  46. package/dist/LinearSyntenyDisplay/afterAttach.js.map +1 -0
  47. package/dist/LinearSyntenyDisplay/components/Component.d.ts +6 -0
  48. package/dist/LinearSyntenyDisplay/components/Component.js +87 -0
  49. package/dist/LinearSyntenyDisplay/components/Component.js.map +1 -0
  50. package/dist/LinearSyntenyDisplay/components/LinearSyntenyRendering.d.ts +6 -0
  51. package/dist/LinearSyntenyDisplay/components/LinearSyntenyRendering.js +160 -0
  52. package/dist/LinearSyntenyDisplay/components/LinearSyntenyRendering.js.map +1 -0
  53. package/dist/LinearSyntenyDisplay/components/SyntenyTooltip.d.ts +7 -0
  54. package/dist/LinearSyntenyDisplay/components/SyntenyTooltip.js +83 -0
  55. package/dist/LinearSyntenyDisplay/components/SyntenyTooltip.js.map +1 -0
  56. package/dist/LinearSyntenyDisplay/components/util.d.ts +27 -0
  57. package/dist/LinearSyntenyDisplay/components/util.js +84 -0
  58. package/dist/LinearSyntenyDisplay/components/util.js.map +1 -0
  59. package/dist/LinearSyntenyDisplay/configSchemaF.d.ts +23 -0
  60. package/dist/LinearSyntenyDisplay/configSchemaF.js +36 -0
  61. package/dist/LinearSyntenyDisplay/configSchemaF.js.map +1 -0
  62. package/dist/LinearSyntenyDisplay/drawSynteny.d.ts +5 -0
  63. package/dist/LinearSyntenyDisplay/drawSynteny.js +235 -0
  64. package/dist/LinearSyntenyDisplay/drawSynteny.js.map +1 -0
  65. package/dist/LinearSyntenyDisplay/index.d.ts +3 -0
  66. package/dist/LinearSyntenyDisplay/index.js +47 -0
  67. package/dist/LinearSyntenyDisplay/index.js.map +1 -0
  68. package/dist/LinearSyntenyDisplay/model.d.ts +333 -0
  69. package/dist/LinearSyntenyDisplay/model.js +179 -0
  70. package/dist/LinearSyntenyDisplay/model.js.map +1 -0
  71. package/dist/LinearSyntenyView/components/ExportSvgDialog.d.ts +8 -0
  72. package/dist/LinearSyntenyView/components/ExportSvgDialog.js +86 -0
  73. package/dist/LinearSyntenyView/components/ExportSvgDialog.js.map +1 -0
  74. package/dist/LinearSyntenyView/components/Icons.d.ts +4 -0
  75. package/dist/LinearSyntenyView/components/Icons.js +19 -0
  76. package/dist/LinearSyntenyView/components/Icons.js.map +1 -0
  77. package/dist/LinearSyntenyView/components/ImportCustomTrack.d.ts +11 -0
  78. package/dist/LinearSyntenyView/components/ImportCustomTrack.js +180 -0
  79. package/dist/LinearSyntenyView/components/ImportCustomTrack.js.map +1 -0
  80. package/dist/LinearSyntenyView/components/ImportForm.d.ts +6 -0
  81. package/dist/LinearSyntenyView/components/ImportForm.js +127 -0
  82. package/dist/LinearSyntenyView/components/ImportForm.js.map +1 -0
  83. package/dist/LinearSyntenyView/components/ImportSyntenyTrackSelector.d.ts +9 -0
  84. package/dist/LinearSyntenyView/components/ImportSyntenyTrackSelector.js +63 -0
  85. package/dist/LinearSyntenyView/components/ImportSyntenyTrackSelector.js.map +1 -0
  86. package/dist/LinearSyntenyView/components/LinearSyntenyView.d.ts +7 -0
  87. package/dist/LinearSyntenyView/components/LinearSyntenyView.js +38 -0
  88. package/dist/LinearSyntenyView/components/LinearSyntenyView.js.map +1 -0
  89. package/dist/LinearSyntenyView/index.d.ts +3 -0
  90. package/dist/LinearSyntenyView/index.js +42 -0
  91. package/dist/LinearSyntenyView/index.js.map +1 -0
  92. package/dist/LinearSyntenyView/model.d.ts +754 -0
  93. package/dist/LinearSyntenyView/model.js +170 -0
  94. package/dist/LinearSyntenyView/model.js.map +1 -0
  95. package/dist/LinearSyntenyView/svgcomponents/SVGBackground.d.ts +6 -0
  96. package/dist/LinearSyntenyView/svgcomponents/SVGBackground.js +13 -0
  97. package/dist/LinearSyntenyView/svgcomponents/SVGBackground.js.map +1 -0
  98. package/dist/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.d.ts +4 -0
  99. package/dist/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.js +85 -0
  100. package/dist/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.js.map +1 -0
  101. package/dist/SyntenyFeatureDetail/SyntenyFeatureDetail.d.ts +5 -0
  102. package/dist/SyntenyFeatureDetail/SyntenyFeatureDetail.js +66 -0
  103. package/dist/SyntenyFeatureDetail/SyntenyFeatureDetail.js.map +1 -0
  104. package/dist/SyntenyFeatureDetail/index.d.ts +3 -0
  105. package/dist/SyntenyFeatureDetail/index.js +58 -0
  106. package/dist/SyntenyFeatureDetail/index.js.map +1 -0
  107. package/dist/SyntenyTrack/configSchema.d.ts +75 -0
  108. package/dist/SyntenyTrack/configSchema.js +16 -0
  109. package/dist/SyntenyTrack/configSchema.js.map +1 -0
  110. package/dist/SyntenyTrack/index.d.ts +3 -0
  111. package/dist/SyntenyTrack/index.js +19 -0
  112. package/dist/SyntenyTrack/index.js.map +1 -0
  113. package/dist/index.d.ts +7 -0
  114. package/dist/index.js +47 -0
  115. package/dist/index.js.map +1 -0
  116. package/dist/util.d.ts +25 -0
  117. package/dist/util.js +77 -0
  118. package/dist/util.js.map +1 -0
  119. package/esm/LGVSyntenyDisplay/configSchemaF.d.ts +52 -0
  120. package/esm/LGVSyntenyDisplay/configSchemaF.js +16 -0
  121. package/esm/LGVSyntenyDisplay/configSchemaF.js.map +1 -0
  122. package/esm/LGVSyntenyDisplay/index.d.ts +3 -0
  123. package/esm/LGVSyntenyDisplay/index.js +19 -0
  124. package/esm/LGVSyntenyDisplay/index.js.map +1 -0
  125. package/esm/LGVSyntenyDisplay/model.d.ts +380 -0
  126. package/esm/LGVSyntenyDisplay/model.js +152 -0
  127. package/esm/LGVSyntenyDisplay/model.js.map +1 -0
  128. package/esm/LaunchLinearSyntenyView.d.ts +2 -0
  129. package/esm/LaunchLinearSyntenyView.js +55 -0
  130. package/esm/LaunchLinearSyntenyView.js.map +1 -0
  131. package/esm/LinearComparativeDisplay/configSchemaF.d.ts +5 -0
  132. package/esm/LinearComparativeDisplay/configSchemaF.js +16 -0
  133. package/esm/LinearComparativeDisplay/configSchemaF.js.map +1 -0
  134. package/esm/LinearComparativeDisplay/index.d.ts +3 -0
  135. package/esm/LinearComparativeDisplay/index.js +19 -0
  136. package/esm/LinearComparativeDisplay/index.js.map +1 -0
  137. package/esm/LinearComparativeDisplay/stateModelFactory.d.ts +275 -0
  138. package/esm/LinearComparativeDisplay/stateModelFactory.js +170 -0
  139. package/esm/LinearComparativeDisplay/stateModelFactory.js.map +1 -0
  140. package/esm/LinearComparativeView/components/Header.d.ts +7 -0
  141. package/esm/LinearComparativeView/components/Header.js +61 -0
  142. package/esm/LinearComparativeView/components/Header.js.map +1 -0
  143. package/esm/LinearComparativeView/components/LinearComparativeView.d.ts +8 -0
  144. package/esm/LinearComparativeView/components/LinearComparativeView.js +94 -0
  145. package/esm/LinearComparativeView/components/LinearComparativeView.js.map +1 -0
  146. package/esm/LinearComparativeView/components/Rubberband.d.ts +9 -0
  147. package/esm/LinearComparativeView/components/Rubberband.js +200 -0
  148. package/esm/LinearComparativeView/components/Rubberband.js.map +1 -0
  149. package/esm/LinearComparativeView/index.d.ts +3 -0
  150. package/esm/LinearComparativeView/index.js +14 -0
  151. package/esm/LinearComparativeView/index.js.map +1 -0
  152. package/esm/LinearComparativeView/model.d.ts +326 -0
  153. package/esm/LinearComparativeView/model.js +318 -0
  154. package/esm/LinearComparativeView/model.js.map +1 -0
  155. package/esm/LinearReadVsRef/LinearReadVsRef.d.ts +7 -0
  156. package/esm/LinearReadVsRef/LinearReadVsRef.js +258 -0
  157. package/esm/LinearReadVsRef/LinearReadVsRef.js.map +1 -0
  158. package/esm/LinearReadVsRef/index.d.ts +2 -0
  159. package/esm/LinearReadVsRef/index.js +49 -0
  160. package/esm/LinearReadVsRef/index.js.map +1 -0
  161. package/esm/LinearSyntenyDisplay/afterAttach.d.ts +2 -0
  162. package/esm/LinearSyntenyDisplay/afterAttach.js +104 -0
  163. package/esm/LinearSyntenyDisplay/afterAttach.js.map +1 -0
  164. package/esm/LinearSyntenyDisplay/components/Component.d.ts +6 -0
  165. package/esm/LinearSyntenyDisplay/components/Component.js +59 -0
  166. package/esm/LinearSyntenyDisplay/components/Component.js.map +1 -0
  167. package/esm/LinearSyntenyDisplay/components/LinearSyntenyRendering.d.ts +6 -0
  168. package/esm/LinearSyntenyDisplay/components/LinearSyntenyRendering.js +132 -0
  169. package/esm/LinearSyntenyDisplay/components/LinearSyntenyRendering.js.map +1 -0
  170. package/esm/LinearSyntenyDisplay/components/SyntenyTooltip.d.ts +7 -0
  171. package/esm/LinearSyntenyDisplay/components/SyntenyTooltip.js +58 -0
  172. package/esm/LinearSyntenyDisplay/components/SyntenyTooltip.js.map +1 -0
  173. package/esm/LinearSyntenyDisplay/components/util.d.ts +27 -0
  174. package/esm/LinearSyntenyDisplay/components/util.js +77 -0
  175. package/esm/LinearSyntenyDisplay/components/util.js.map +1 -0
  176. package/esm/LinearSyntenyDisplay/configSchemaF.d.ts +23 -0
  177. package/esm/LinearSyntenyDisplay/configSchemaF.js +31 -0
  178. package/esm/LinearSyntenyDisplay/configSchemaF.js.map +1 -0
  179. package/esm/LinearSyntenyDisplay/drawSynteny.d.ts +5 -0
  180. package/esm/LinearSyntenyDisplay/drawSynteny.js +229 -0
  181. package/esm/LinearSyntenyDisplay/drawSynteny.js.map +1 -0
  182. package/esm/LinearSyntenyDisplay/index.d.ts +3 -0
  183. package/esm/LinearSyntenyDisplay/index.js +19 -0
  184. package/esm/LinearSyntenyDisplay/index.js.map +1 -0
  185. package/esm/LinearSyntenyDisplay/model.d.ts +333 -0
  186. package/esm/LinearSyntenyDisplay/model.js +151 -0
  187. package/esm/LinearSyntenyDisplay/model.js.map +1 -0
  188. package/esm/LinearSyntenyView/components/ExportSvgDialog.d.ts +8 -0
  189. package/esm/LinearSyntenyView/components/ExportSvgDialog.js +60 -0
  190. package/esm/LinearSyntenyView/components/ExportSvgDialog.js.map +1 -0
  191. package/esm/LinearSyntenyView/components/Icons.d.ts +4 -0
  192. package/esm/LinearSyntenyView/components/Icons.js +11 -0
  193. package/esm/LinearSyntenyView/components/Icons.js.map +1 -0
  194. package/esm/LinearSyntenyView/components/ImportCustomTrack.d.ts +11 -0
  195. package/esm/LinearSyntenyView/components/ImportCustomTrack.js +152 -0
  196. package/esm/LinearSyntenyView/components/ImportCustomTrack.js.map +1 -0
  197. package/esm/LinearSyntenyView/components/ImportForm.d.ts +6 -0
  198. package/esm/LinearSyntenyView/components/ImportForm.js +99 -0
  199. package/esm/LinearSyntenyView/components/ImportForm.js.map +1 -0
  200. package/esm/LinearSyntenyView/components/ImportSyntenyTrackSelector.d.ts +9 -0
  201. package/esm/LinearSyntenyView/components/ImportSyntenyTrackSelector.js +38 -0
  202. package/esm/LinearSyntenyView/components/ImportSyntenyTrackSelector.js.map +1 -0
  203. package/esm/LinearSyntenyView/components/LinearSyntenyView.d.ts +7 -0
  204. package/esm/LinearSyntenyView/components/LinearSyntenyView.js +10 -0
  205. package/esm/LinearSyntenyView/components/LinearSyntenyView.js.map +1 -0
  206. package/esm/LinearSyntenyView/index.d.ts +3 -0
  207. package/esm/LinearSyntenyView/index.js +14 -0
  208. package/esm/LinearSyntenyView/index.js.map +1 -0
  209. package/esm/LinearSyntenyView/model.d.ts +754 -0
  210. package/esm/LinearSyntenyView/model.js +141 -0
  211. package/esm/LinearSyntenyView/model.js.map +1 -0
  212. package/esm/LinearSyntenyView/svgcomponents/SVGBackground.d.ts +6 -0
  213. package/esm/LinearSyntenyView/svgcomponents/SVGBackground.js +7 -0
  214. package/esm/LinearSyntenyView/svgcomponents/SVGBackground.js.map +1 -0
  215. package/esm/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.d.ts +4 -0
  216. package/esm/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.js +78 -0
  217. package/esm/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.js.map +1 -0
  218. package/esm/SyntenyFeatureDetail/SyntenyFeatureDetail.d.ts +5 -0
  219. package/esm/SyntenyFeatureDetail/SyntenyFeatureDetail.js +38 -0
  220. package/esm/SyntenyFeatureDetail/SyntenyFeatureDetail.js.map +1 -0
  221. package/esm/SyntenyFeatureDetail/index.d.ts +3 -0
  222. package/esm/SyntenyFeatureDetail/index.js +30 -0
  223. package/esm/SyntenyFeatureDetail/index.js.map +1 -0
  224. package/esm/SyntenyTrack/configSchema.d.ts +75 -0
  225. package/esm/SyntenyTrack/configSchema.js +14 -0
  226. package/esm/SyntenyTrack/configSchema.js.map +1 -0
  227. package/esm/SyntenyTrack/index.d.ts +3 -0
  228. package/esm/SyntenyTrack/index.js +14 -0
  229. package/esm/SyntenyTrack/index.js.map +1 -0
  230. package/esm/index.d.ts +7 -0
  231. package/esm/index.js +41 -0
  232. package/esm/index.js.map +1 -0
  233. package/esm/util.d.ts +25 -0
  234. package/esm/util.js +69 -0
  235. package/esm/util.js.map +1 -0
  236. package/package.json +67 -0
  237. package/src/LGVSyntenyDisplay/configSchemaF.ts +22 -0
  238. package/src/LGVSyntenyDisplay/index.ts +20 -0
  239. package/src/LGVSyntenyDisplay/model.ts +177 -0
  240. package/src/LaunchLinearSyntenyView.ts +86 -0
  241. package/src/LinearComparativeDisplay/configSchemaF.ts +22 -0
  242. package/src/LinearComparativeDisplay/index.ts +21 -0
  243. package/src/LinearComparativeDisplay/stateModelFactory.ts +212 -0
  244. package/src/LinearComparativeView/components/Header.tsx +103 -0
  245. package/src/LinearComparativeView/components/LinearComparativeView.tsx +152 -0
  246. package/src/LinearComparativeView/components/Rubberband.tsx +329 -0
  247. package/src/LinearComparativeView/index.ts +15 -0
  248. package/src/LinearComparativeView/model.ts +395 -0
  249. package/src/LinearReadVsRef/LinearReadVsRef.tsx +360 -0
  250. package/src/LinearReadVsRef/index.ts +58 -0
  251. package/src/LinearSyntenyDisplay/afterAttach.ts +149 -0
  252. package/src/LinearSyntenyDisplay/components/Component.tsx +75 -0
  253. package/src/LinearSyntenyDisplay/components/LinearSyntenyRendering.tsx +200 -0
  254. package/src/LinearSyntenyDisplay/components/SyntenyTooltip.tsx +82 -0
  255. package/src/LinearSyntenyDisplay/components/util.ts +142 -0
  256. package/src/LinearSyntenyDisplay/configSchemaF.ts +38 -0
  257. package/src/LinearSyntenyDisplay/drawSynteny.ts +266 -0
  258. package/src/LinearSyntenyDisplay/index.ts +21 -0
  259. package/src/LinearSyntenyDisplay/model.ts +187 -0
  260. package/src/LinearSyntenyView/components/ExportSvgDialog.tsx +148 -0
  261. package/src/LinearSyntenyView/components/Icons.tsx +24 -0
  262. package/src/LinearSyntenyView/components/ImportCustomTrack.tsx +262 -0
  263. package/src/LinearSyntenyView/components/ImportForm.tsx +221 -0
  264. package/src/LinearSyntenyView/components/ImportSyntenyTrackSelector.tsx +82 -0
  265. package/src/LinearSyntenyView/components/LinearSyntenyView.tsx +20 -0
  266. package/src/LinearSyntenyView/index.ts +15 -0
  267. package/src/LinearSyntenyView/model.test.ts +1605 -0
  268. package/src/LinearSyntenyView/model.ts +169 -0
  269. package/src/LinearSyntenyView/svgcomponents/SVGBackground.tsx +21 -0
  270. package/src/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.tsx +176 -0
  271. package/src/SyntenyFeatureDetail/SyntenyFeatureDetail.tsx +64 -0
  272. package/src/SyntenyFeatureDetail/index.ts +36 -0
  273. package/src/SyntenyTrack/configSchema.ts +23 -0
  274. package/src/SyntenyTrack/index.tsx +15 -0
  275. package/src/index.tsx +42 -0
  276. package/src/util.ts +124 -0
@@ -0,0 +1,258 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { Button, CircularProgress, DialogActions, DialogContent, TextField, Typography, } from '@mui/material';
3
+ import { Dialog } from '@jbrowse/core/ui';
4
+ import { makeStyles } from 'tss-react/mui';
5
+ import { getConf } from '@jbrowse/core/configuration';
6
+ import { getRpcSessionId } from '@jbrowse/core/util/tracks';
7
+ import { getSession, getContainingView, gatherOverlaps, } from '@jbrowse/core/util';
8
+ // locals
9
+ import { MismatchParser } from '@jbrowse/plugin-alignments';
10
+ const { featurizeSA, getClip, getLength, getLengthSansClipping, getTag } = MismatchParser;
11
+ const useStyles = makeStyles()({
12
+ root: {
13
+ width: 300,
14
+ },
15
+ });
16
+ export default function ReadVsRefDialog({ track, feature: preFeature, handleClose, }) {
17
+ const { classes } = useStyles();
18
+ // window size stored as string, because it corresponds to a textfield which
19
+ // is parsed as number on submit
20
+ const [windowSizeText, setWindowSize] = useState('0');
21
+ const [error, setError] = useState();
22
+ const [primaryFeature, setPrimaryFeature] = useState();
23
+ const windowSize = +windowSizeText;
24
+ // we need to fetch the primary alignment if the selected feature is 2048.
25
+ // this should be the first in the list of the SA tag
26
+ useEffect(() => {
27
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
28
+ ;
29
+ (async () => {
30
+ setError(undefined);
31
+ try {
32
+ if (preFeature.get('flags') & 2048) {
33
+ const SA = getTag(preFeature, 'SA') || '';
34
+ const primaryAln = SA.split(';')[0];
35
+ const [saRef, saStart] = primaryAln.split(',');
36
+ const { rpcManager } = getSession(track);
37
+ const adapterConfig = getConf(track, 'adapter');
38
+ const sessionId = getRpcSessionId(track);
39
+ const feats = (await rpcManager.call(sessionId, 'CoreGetFeatures', {
40
+ adapterConfig,
41
+ sessionId,
42
+ regions: [
43
+ {
44
+ refName: saRef,
45
+ start: +saStart - 1,
46
+ end: +saStart,
47
+ },
48
+ ],
49
+ }));
50
+ const result = feats.find(f => f.get('name') === preFeature.get('name') &&
51
+ !(f.get('flags') & 2048) &&
52
+ !(f.get('flags') & 256));
53
+ if (result) {
54
+ setPrimaryFeature(result);
55
+ }
56
+ else {
57
+ throw new Error('primary feature not found');
58
+ }
59
+ }
60
+ else {
61
+ setPrimaryFeature(preFeature);
62
+ }
63
+ }
64
+ catch (e) {
65
+ console.error(e);
66
+ setError(e);
67
+ }
68
+ })();
69
+ }, [preFeature, track]);
70
+ function onSubmit() {
71
+ try {
72
+ if (!primaryFeature) {
73
+ return;
74
+ }
75
+ const feature = primaryFeature;
76
+ const session = getSession(track);
77
+ const view = getContainingView(track);
78
+ const cigar = feature.get('CIGAR');
79
+ const flags = feature.get('flags');
80
+ const origStrand = feature.get('strand');
81
+ const SA = getTag(feature, 'SA') || '';
82
+ const readName = feature.get('name');
83
+ const clipPos = getClip(cigar, 1);
84
+ const readAssembly = `${readName}_assembly_${Date.now()}`;
85
+ const [trackAssembly] = getConf(track, 'assemblyNames');
86
+ const assemblyNames = [trackAssembly, readAssembly];
87
+ const trackId = `track-${Date.now()}`;
88
+ const trackName = `${readName}_vs_${trackAssembly}`;
89
+ // get the canonical refname for the read because if the
90
+ // read.get('refName') is chr1 and the actual fasta refName is 1 then no
91
+ // tracks can be opened on the top panel of the linear read vs ref
92
+ const { assemblyManager } = session;
93
+ const assembly = assemblyManager.get(trackAssembly);
94
+ if (!assembly) {
95
+ throw new Error('assembly not found');
96
+ }
97
+ const suppAlns = featurizeSA(SA, feature.id(), origStrand, readName, true);
98
+ const feat = feature.toJSON();
99
+ feat.clipPos = clipPos;
100
+ feat.strand = 1;
101
+ feat.mate = {
102
+ refName: readName,
103
+ start: clipPos,
104
+ end: clipPos + getLengthSansClipping(cigar),
105
+ };
106
+ // if secondary alignment or supplementary, calculate length from SA[0]'s
107
+ // CIGAR which is the primary alignments. otherwise it is the primary
108
+ // alignment just use seq.length if primary alignment
109
+ const totalLength = flags & 2048 ? getLength(suppAlns[0].CIGAR) : getLength(cigar);
110
+ const features = [feat, ...suppAlns];
111
+ features.forEach((f, idx) => {
112
+ f.refName = (assembly === null || assembly === void 0 ? void 0 : assembly.getCanonicalRefName(f.refName)) || f.refName;
113
+ f.syntenyId = idx;
114
+ f.mate.syntenyId = idx;
115
+ f.mate.uniqueId = `${f.uniqueId}_mate`;
116
+ });
117
+ features.sort((a, b) => a.clipPos - b.clipPos);
118
+ const featSeq = feature.get('seq');
119
+ // the config feature store includes synthetic mate features
120
+ // mapped to the read assembly
121
+ const configFeatureStore = [...features, ...features.map(f => f.mate)];
122
+ const expand = 2 * windowSize;
123
+ const refLen = features.reduce((a, f) => a + f.end - f.start + expand, 0);
124
+ const seqTrackId = `${readName}_${Date.now()}`;
125
+ const sequenceTrackConf = getConf(assembly, 'sequence');
126
+ const lgvRegions = gatherOverlaps(features.map(f => ({
127
+ ...f,
128
+ start: Math.max(0, f.start - windowSize),
129
+ end: f.end + windowSize,
130
+ assemblyName: trackAssembly,
131
+ })));
132
+ session.addTemporaryAssembly({
133
+ name: `${readAssembly}`,
134
+ sequence: {
135
+ type: 'ReferenceSequenceTrack',
136
+ name: `Read sequence`,
137
+ trackId: seqTrackId,
138
+ assemblyNames: [readAssembly],
139
+ adapter: {
140
+ type: 'FromConfigSequenceAdapter',
141
+ noAssemblyManager: true,
142
+ features: [
143
+ {
144
+ start: 0,
145
+ end: totalLength,
146
+ seq: featSeq || '',
147
+ refName: readName,
148
+ uniqueId: `${Math.random()}`,
149
+ },
150
+ ],
151
+ },
152
+ },
153
+ });
154
+ session.addView('LinearSyntenyView', {
155
+ type: 'LinearSyntenyView',
156
+ views: [
157
+ {
158
+ type: 'LinearGenomeView',
159
+ hideHeader: true,
160
+ offsetPx: 0,
161
+ bpPerPx: refLen / view.width,
162
+ displayedRegions: lgvRegions,
163
+ tracks: [
164
+ {
165
+ id: `${Math.random()}`,
166
+ type: 'ReferenceSequenceTrack',
167
+ assemblyNames: [trackAssembly],
168
+ configuration: sequenceTrackConf.trackId,
169
+ displays: [
170
+ {
171
+ id: `${Math.random()}`,
172
+ type: 'LinearReferenceSequenceDisplay',
173
+ showReverse: true,
174
+ showTranslation: false,
175
+ height: 35,
176
+ configuration: `${seqTrackId}-LinearReferenceSequenceDisplay`,
177
+ },
178
+ ],
179
+ },
180
+ ],
181
+ },
182
+ {
183
+ type: 'LinearGenomeView',
184
+ hideHeader: true,
185
+ offsetPx: 0,
186
+ bpPerPx: totalLength / view.width,
187
+ displayedRegions: [
188
+ {
189
+ assemblyName: readAssembly,
190
+ start: 0,
191
+ end: totalLength,
192
+ refName: readName,
193
+ },
194
+ ],
195
+ tracks: [
196
+ {
197
+ id: `${Math.random()}`,
198
+ type: 'ReferenceSequenceTrack',
199
+ configuration: seqTrackId,
200
+ displays: [
201
+ {
202
+ id: `${Math.random()}`,
203
+ type: 'LinearReferenceSequenceDisplay',
204
+ showReverse: true,
205
+ showTranslation: false,
206
+ height: 35,
207
+ configuration: `${seqTrackId}-LinearReferenceSequenceDisplay`,
208
+ },
209
+ ],
210
+ },
211
+ ],
212
+ },
213
+ ],
214
+ viewTrackConfigs: [
215
+ {
216
+ type: 'SyntenyTrack',
217
+ assemblyNames,
218
+ adapter: {
219
+ type: 'FromConfigAdapter',
220
+ features: configFeatureStore,
221
+ },
222
+ trackId,
223
+ name: trackName,
224
+ },
225
+ ],
226
+ tracks: [
227
+ {
228
+ configuration: trackId,
229
+ type: 'SyntenyTrack',
230
+ displays: [
231
+ {
232
+ type: 'LinearSyntenyDisplay',
233
+ configuration: `${trackId}-LinearSyntenyDisplay`,
234
+ },
235
+ ],
236
+ },
237
+ ],
238
+ displayName: `${readName} vs ${trackAssembly}`,
239
+ });
240
+ handleClose();
241
+ }
242
+ catch (e) {
243
+ console.error(e);
244
+ setError(e);
245
+ }
246
+ }
247
+ return (React.createElement(Dialog, { open: true, onClose: handleClose, title: "Set window size" },
248
+ React.createElement(DialogContent, null, error ? (React.createElement(Typography, { color: "error" }, `${error}`)) : !primaryFeature ? (React.createElement("div", null,
249
+ React.createElement(Typography, null, "To accurately perform comparison we are fetching the primary alignment. Loading primary feature..."),
250
+ React.createElement(CircularProgress, null))) : (React.createElement("div", { className: classes.root },
251
+ primaryFeature.get('flags') & 256 ? (React.createElement(Typography, { style: { color: 'orange' } }, "Note: You selected a secondary alignment (which generally does not have SA tags or SEQ fields) so do a full reconstruction of the alignment")) : null,
252
+ React.createElement(Typography, null, "Show an extra window size around each part of the split alignment. Using a larger value can allow you to see more genomic context."),
253
+ React.createElement(TextField, { value: windowSize, onChange: event => setWindowSize(event.target.value), label: "Set window size" })))),
254
+ React.createElement(DialogActions, null,
255
+ React.createElement(Button, { variant: "contained", color: "secondary", onClick: handleClose }, "Cancel"),
256
+ React.createElement(Button, { disabled: !primaryFeature, variant: "contained", color: "primary", onClick: onSubmit }, "Submit"))));
257
+ }
258
+ //# sourceMappingURL=LinearReadVsRef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinearReadVsRef.js","sourceRoot":"","sources":["../../src/LinearReadVsRef/LinearReadVsRef.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager';
2
+ export default function (pm: PluginManager): void;
@@ -0,0 +1,49 @@
1
+ import { getSession, getContainingTrack } from '@jbrowse/core/util';
2
+ // icons
3
+ import AddIcon from '@mui/icons-material/Add';
4
+ // locals
5
+ import ReadVsRefDialog from './LinearReadVsRef';
6
+ function isDisplay(elt) {
7
+ return elt.name === 'LinearPileupDisplay';
8
+ }
9
+ export default function (pm) {
10
+ pm.addToExtensionPoint('Core-extendPluggableElement', (pluggableElement) => {
11
+ if (!isDisplay(pluggableElement)) {
12
+ return pluggableElement;
13
+ }
14
+ pluggableElement.stateModel = pluggableElement.stateModel.extend(self => {
15
+ const superContextMenuItems = self.contextMenuItems;
16
+ return {
17
+ views: {
18
+ contextMenuItems() {
19
+ const feature = self.contextMenuFeature;
20
+ const track = getContainingTrack(self);
21
+ return [
22
+ ...superContextMenuItems(),
23
+ ...(feature
24
+ ? [
25
+ {
26
+ label: 'Linear read vs ref',
27
+ icon: AddIcon,
28
+ onClick: () => {
29
+ getSession(self).queueDialog(handleClose => [
30
+ ReadVsRefDialog,
31
+ {
32
+ track,
33
+ feature,
34
+ handleClose,
35
+ },
36
+ ]);
37
+ },
38
+ },
39
+ ]
40
+ : []),
41
+ ];
42
+ },
43
+ },
44
+ };
45
+ });
46
+ return pluggableElement;
47
+ });
48
+ }
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/LinearReadVsRef/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAEnE,QAAQ;AACR,OAAO,OAAO,MAAM,yBAAyB,CAAA;AAE7C,SAAS;AACT,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAE/C,SAAS,SAAS,CAAC,GAAqB;IACtC,OAAO,GAAG,CAAC,IAAI,KAAK,qBAAqB,CAAA;AAC3C,CAAC;AAED,MAAM,CAAC,OAAO,WAAW,EAAiB;IACxC,EAAE,CAAC,mBAAmB,CACpB,6BAA6B,EAC7B,CAAC,gBAAsC,EAAE,EAAE;QACzC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE;YAChC,OAAO,gBAAgB,CAAA;SACxB;QACD,gBAAgB,CAAC,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACtE,MAAM,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAA;YACnD,OAAO;gBACL,KAAK,EAAE;oBACL,gBAAgB;wBACd,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAA;wBACvC,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;wBACtC,OAAO;4BACL,GAAG,qBAAqB,EAAE;4BAC1B,GAAG,CAAC,OAAO;gCACT,CAAC,CAAC;oCACE;wCACE,KAAK,EAAE,oBAAoB;wCAC3B,IAAI,EAAE,OAAO;wCACb,OAAO,EAAE,GAAG,EAAE;4CACZ,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;gDAC1C,eAAe;gDACf;oDACE,KAAK;oDACL,OAAO;oDACP,WAAW;iDACZ;6CACF,CAAC,CAAA;wCACJ,CAAC;qCACF;iCACF;gCACH,CAAC,CAAC,EAAE,CAAC;yBACR,CAAA;oBACH,CAAC;iBACF;aACF,CAAA;QACH,CAAC,CAAC,CAAA;QACF,OAAO,gBAAgB,CAAA;IACzB,CAAC,CACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { LinearSyntenyDisplayModel } from './model';
2
+ export declare function doAfterAttach(self: LinearSyntenyDisplayModel): void;
@@ -0,0 +1,104 @@
1
+ import { addDisposer, getSnapshot } from 'mobx-state-tree';
2
+ import { getContainingView, getSession } from '@jbrowse/core/util';
3
+ import { bpToPx } from '@jbrowse/core/util/Base1DUtils';
4
+ import { MismatchParser } from '@jbrowse/plugin-alignments';
5
+ import { reaction, autorun } from 'mobx';
6
+ import { drawMouseoverSynteny, drawRef } from './drawSynteny';
7
+ export function doAfterAttach(self) {
8
+ addDisposer(self, autorun(() => {
9
+ var _a, _b;
10
+ const view = getContainingView(self);
11
+ if (!view.initialized) {
12
+ return;
13
+ }
14
+ const ctx1 = (_a = self.mainCanvas) === null || _a === void 0 ? void 0 : _a.getContext('2d');
15
+ const ctx3 = (_b = self.cigarClickMapCanvas) === null || _b === void 0 ? void 0 : _b.getContext('2d');
16
+ if (!ctx1 || !ctx3) {
17
+ return;
18
+ }
19
+ const height = view.middleComparativeHeight;
20
+ const width = view.width;
21
+ ctx1.clearRect(0, 0, width, height);
22
+ ctx3.clearRect(0, 0, width, height);
23
+ drawRef(self, ctx1, ctx3);
24
+ }));
25
+ addDisposer(self, autorun(() => {
26
+ const view = getContainingView(self);
27
+ if (!view.initialized) {
28
+ return;
29
+ }
30
+ drawMouseoverSynteny(self);
31
+ }));
32
+ // this attempts to reduce recalculation of feature positions drawn by
33
+ // the synteny view
34
+ //
35
+ // uses a reaction to say "we know the positions don't change in any
36
+ // relevant way unless bpPerPx changes or displayedRegions changes"
37
+ addDisposer(self, reaction(() => {
38
+ const view = getContainingView(self);
39
+ return {
40
+ bpPerPx: view.views.map(v => v.bpPerPx),
41
+ // stringifying 'deeply' accesses the displayed regions, see
42
+ // issue #3456
43
+ displayedRegions: JSON.stringify(view.views.map(v => v.displayedRegions)),
44
+ features: self.features,
45
+ initialized: view.initialized,
46
+ };
47
+ }, ({ initialized }) => {
48
+ if (!initialized) {
49
+ return;
50
+ }
51
+ const { assemblyManager } = getSession(self);
52
+ const view = getContainingView(self);
53
+ const viewSnaps = view.views.map(view => ({
54
+ ...getSnapshot(view),
55
+ width: view.width,
56
+ staticBlocks: view.staticBlocks,
57
+ interRegionPaddingWidth: view.interRegionPaddingWidth,
58
+ minimumBlockWidth: view.minimumBlockWidth,
59
+ }));
60
+ const map = [];
61
+ const feats = self.features || [];
62
+ for (let i = 0; i < feats.length; i++) {
63
+ const f = feats[i];
64
+ const mate = f.get('mate');
65
+ let f1s = f.get('start');
66
+ let f1e = f.get('end');
67
+ const f2s = mate.start;
68
+ const f2e = mate.end;
69
+ if (f.get('strand') === -1) {
70
+ ;
71
+ [f1e, f1s] = [f1s, f1e];
72
+ }
73
+ const a1 = assemblyManager === null || assemblyManager === void 0 ? void 0 : assemblyManager.get(f.get('assemblyName'));
74
+ const a2 = assemblyManager === null || assemblyManager === void 0 ? void 0 : assemblyManager.get(mate.assemblyName);
75
+ const r1 = f.get('refName');
76
+ const r2 = mate.refName;
77
+ const ref1 = (a1 === null || a1 === void 0 ? void 0 : a1.getCanonicalRefName(r1)) || r1;
78
+ const ref2 = (a2 === null || a2 === void 0 ? void 0 : a2.getCanonicalRefName(r2)) || r2;
79
+ const v1 = viewSnaps[0];
80
+ const v2 = viewSnaps[1];
81
+ const p11 = bpToPx({ self: v1, refName: ref1, coord: f1s });
82
+ const p12 = bpToPx({ self: v1, refName: ref1, coord: f1e });
83
+ const p21 = bpToPx({ self: v2, refName: ref2, coord: f2s });
84
+ const p22 = bpToPx({ self: v2, refName: ref2, coord: f2e });
85
+ if (p11 === undefined ||
86
+ p12 === undefined ||
87
+ p21 === undefined ||
88
+ p22 === undefined) {
89
+ continue;
90
+ }
91
+ const cigar = f.get('CIGAR');
92
+ map.push({
93
+ p11,
94
+ p12,
95
+ p21,
96
+ p22,
97
+ f,
98
+ cigar: MismatchParser.parseCigar(cigar),
99
+ });
100
+ }
101
+ self.setFeatPositions(map);
102
+ }, { fireImmediately: true }));
103
+ }
104
+ //# sourceMappingURL=afterAttach.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"afterAttach.js","sourceRoot":"","sources":["../../src/LinearSyntenyDisplay/afterAttach.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { LinearSyntenyDisplayModel } from '../model';
3
+ declare const ServerSideRenderedBlockContent: ({ model, }: {
4
+ model: LinearSyntenyDisplayModel;
5
+ }) => React.JSX.Element;
6
+ export default ServerSideRenderedBlockContent;
@@ -0,0 +1,59 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { makeStyles } from 'tss-react/mui';
3
+ import { observer } from 'mobx-react';
4
+ import { LoadingEllipses } from '@jbrowse/core/ui';
5
+ // locals
6
+ import LinearSyntenyRendering from './LinearSyntenyRendering';
7
+ const useStyles = makeStyles()(theme => {
8
+ const bg = theme.palette.action.disabledBackground;
9
+ return {
10
+ loading: {
11
+ paddingLeft: '0.6em',
12
+ backgroundColor: theme.palette.background.default,
13
+ backgroundImage: `repeating-linear-gradient(45deg, transparent, transparent 5px, ${bg} 5px, ${bg} 10px)`,
14
+ textAlign: 'center',
15
+ },
16
+ blockMessage: {
17
+ background: '#f1f1f1',
18
+ padding: 10,
19
+ },
20
+ blockError: {
21
+ background: '#f1f1f1',
22
+ padding: 10,
23
+ color: 'red',
24
+ },
25
+ };
26
+ });
27
+ function LoadingMessage() {
28
+ // only show the loading message after 300ms to prevent excessive flickering
29
+ const [shown, setShown] = useState(false);
30
+ const { classes } = useStyles();
31
+ useEffect(() => {
32
+ const timeout = setTimeout(() => setShown(true), 300);
33
+ return () => clearTimeout(timeout);
34
+ });
35
+ return shown ? (React.createElement("div", { className: classes.loading },
36
+ React.createElement(LoadingEllipses, null))) : null;
37
+ }
38
+ function BlockMessage({ messageText }) {
39
+ const { classes } = useStyles();
40
+ return React.createElement("div", { className: classes.blockMessage }, messageText);
41
+ }
42
+ function BlockError({ error }) {
43
+ const { classes } = useStyles();
44
+ return React.createElement("div", { className: classes.blockError }, `${error}`);
45
+ }
46
+ const ServerSideRenderedBlockContent = observer(function ({ model, }) {
47
+ if (model.error) {
48
+ return React.createElement(BlockError, { error: model.error });
49
+ }
50
+ if (model.message) {
51
+ return React.createElement(BlockMessage, { messageText: model.message });
52
+ }
53
+ if (!model.features) {
54
+ return React.createElement(LoadingMessage, null);
55
+ }
56
+ return React.createElement(LinearSyntenyRendering, { model: model });
57
+ });
58
+ export default ServerSideRenderedBlockContent;
59
+ //# sourceMappingURL=Component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Component.js","sourceRoot":"","sources":["../../../src/LinearSyntenyDisplay/components/Component.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,SAAS;AACT,OAAO,sBAAsB,MAAM,0BAA0B,CAAA;AAG7D,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE;IACrC,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAA;IAClD,OAAO;QACL,OAAO,EAAE;YACP,WAAW,EAAE,OAAO;YACpB,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;YACjD,eAAe,EAAE,kEAAkE,EAAE,SAAS,EAAE,QAAQ;YACxG,SAAS,EAAE,QAAQ;SACpB;QACD,YAAY,EAAE;YACZ,UAAU,EAAE,SAAS;YACrB,OAAO,EAAE,EAAE;SACZ;QACD,UAAU,EAAE;YACV,UAAU,EAAE,SAAS;YACrB,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,KAAK;SACb;KACF,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,SAAS,cAAc;IACrB,4EAA4E;IAC5E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACzC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;QACrD,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,OAAO,KAAK,CAAC,CAAC,CAAC,CACb,6BAAK,SAAS,EAAE,OAAO,CAAC,OAAO;QAC7B,oBAAC,eAAe,OAAG,CACf,CACP,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,WAAW,EAA2B;IAC5D,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,OAAO,6BAAK,SAAS,EAAE,OAAO,CAAC,YAAY,IAAG,WAAW,CAAO,CAAA;AAClE,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,KAAK,EAAsB;IAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,OAAO,6BAAK,SAAS,EAAE,OAAO,CAAC,UAAU,IAAG,GAAG,KAAK,EAAE,CAAO,CAAA;AAC/D,CAAC;AAED,MAAM,8BAA8B,GAAG,QAAQ,CAAC,UAAU,EACxD,KAAK,GAGN;IACC,IAAI,KAAK,CAAC,KAAK,EAAE;QACf,OAAO,oBAAC,UAAU,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAI,CAAA;KAC1C;IACD,IAAI,KAAK,CAAC,OAAO,EAAE;QACjB,OAAO,oBAAC,YAAY,IAAC,WAAW,EAAE,KAAK,CAAC,OAAO,GAAI,CAAA;KACpD;IACD,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;QACnB,OAAO,oBAAC,cAAc,OAAG,CAAA;KAC1B;IAED,OAAO,oBAAC,sBAAsB,IAAC,KAAK,EAAE,KAAK,GAAI,CAAA;AACjD,CAAC,CAAC,CAAA;AAEF,eAAe,8BAA8B,CAAA"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { LinearSyntenyDisplayModel } from '../model';
3
+ declare const _default: ({ model, }: {
4
+ model: LinearSyntenyDisplayModel;
5
+ }) => React.JSX.Element;
6
+ export default _default;