react-msaview 3.1.11 → 3.2.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 (191) hide show
  1. package/bundle/index.js +32 -31
  2. package/dist/colorSchemes.d.ts +2 -2
  3. package/dist/colorSchemes.js +3 -4
  4. package/dist/colorSchemes.js.map +1 -1
  5. package/dist/components/Loading.d.ts +1 -1
  6. package/dist/components/Loading.js +4 -4
  7. package/dist/components/Loading.js.map +1 -1
  8. package/dist/components/MSAView.d.ts +1 -1
  9. package/dist/components/MSAView.js +13 -9
  10. package/dist/components/MSAView.js.map +1 -1
  11. package/dist/components/ResizeHandles.d.ts +1 -1
  12. package/dist/components/ResizeHandles.js +2 -2
  13. package/dist/components/SequenceTextArea.js +4 -0
  14. package/dist/components/SequenceTextArea.js.map +1 -1
  15. package/dist/components/TextTrack.d.ts +1 -1
  16. package/dist/components/Track.d.ts +1 -1
  17. package/dist/components/VerticalScrollbar.d.ts +6 -0
  18. package/dist/components/VerticalScrollbar.js +65 -0
  19. package/dist/components/VerticalScrollbar.js.map +1 -0
  20. package/dist/components/dialogs/AddTrackDialog.d.ts +1 -1
  21. package/dist/components/dialogs/DomainDialog.d.ts +6 -0
  22. package/dist/components/dialogs/DomainDialog.js +19 -0
  23. package/dist/components/dialogs/DomainDialog.js.map +1 -0
  24. package/dist/components/dialogs/ExportSVGDialog.d.ts +1 -1
  25. package/dist/components/dialogs/FeatureDialog.d.ts +1 -1
  26. package/dist/components/dialogs/FeatureDialog.js.map +1 -1
  27. package/dist/components/dialogs/InterProScanDialog.d.ts +4 -4
  28. package/dist/components/dialogs/InterProScanDialog.js +37 -8
  29. package/dist/components/dialogs/InterProScanDialog.js.map +1 -1
  30. package/dist/components/dialogs/MetadataDialog.d.ts +1 -1
  31. package/dist/components/dialogs/SettingsDialog.d.ts +1 -1
  32. package/dist/components/dialogs/SettingsDialog.js +10 -1
  33. package/dist/components/dialogs/SettingsDialog.js.map +1 -1
  34. package/dist/components/dialogs/TabPanel.d.ts +6 -0
  35. package/dist/components/dialogs/TabPanel.js +6 -0
  36. package/dist/components/dialogs/TabPanel.js.map +1 -0
  37. package/dist/components/dialogs/TracklistDialog.d.ts +1 -1
  38. package/dist/components/dialogs/UserProvidedDomainsDialog.d.ts +7 -0
  39. package/dist/components/dialogs/UserProvidedDomainsDialog.js +58 -0
  40. package/dist/components/dialogs/UserProvidedDomainsDialog.js.map +1 -0
  41. package/dist/components/header/Header.d.ts +1 -1
  42. package/dist/components/header/Header.js +8 -5
  43. package/dist/components/header/Header.js.map +1 -1
  44. package/dist/components/header/HeaderInfoArea.d.ts +1 -1
  45. package/dist/components/header/HeaderMenu.d.ts +1 -1
  46. package/dist/components/header/HeaderMenuExtra.d.ts +1 -1
  47. package/dist/components/header/HeaderMenuExtra.js +54 -41
  48. package/dist/components/header/HeaderMenuExtra.js.map +1 -1
  49. package/dist/components/header/HeaderStatusArea.d.ts +1 -1
  50. package/dist/components/header/HeaderStatusArea.js +2 -1
  51. package/dist/components/header/HeaderStatusArea.js.map +1 -1
  52. package/dist/components/header/MultiAlignmentSelector.d.ts +1 -1
  53. package/dist/components/header/ZoomControls.js +31 -1
  54. package/dist/components/header/ZoomControls.js.map +1 -1
  55. package/dist/components/import/ImportForm.d.ts +1 -1
  56. package/dist/components/import/ImportForm.js +1 -1
  57. package/dist/components/import/ImportForm.js.map +1 -1
  58. package/dist/components/import/ImportFormExamples.d.ts +1 -1
  59. package/dist/components/import/ImportFormExamples.js +10 -8
  60. package/dist/components/import/ImportFormExamples.js.map +1 -1
  61. package/dist/components/import/util.d.ts +2 -2
  62. package/dist/components/minimap/Minimap.d.ts +1 -1
  63. package/dist/components/minimap/Minimap.js +14 -15
  64. package/dist/components/minimap/Minimap.js.map +1 -1
  65. package/dist/components/minimap/MinimapSVG.d.ts +1 -1
  66. package/dist/components/minimap/MinimapSVG.js +1 -1
  67. package/dist/components/minimap/MinimapSVG.js.map +1 -1
  68. package/dist/components/msa/MSACanvas.d.ts +1 -1
  69. package/dist/components/msa/MSACanvas.js +3 -3
  70. package/dist/components/msa/MSACanvas.js.map +1 -1
  71. package/dist/components/msa/MSACanvasBlock.d.ts +3 -3
  72. package/dist/components/msa/MSACanvasBlock.js +4 -3
  73. package/dist/components/msa/MSACanvasBlock.js.map +1 -1
  74. package/dist/components/msa/MSAMouseoverCanvas.d.ts +2 -2
  75. package/dist/components/msa/MSAMouseoverCanvas.js +1 -1
  76. package/dist/components/msa/MSAMouseoverCanvas.js.map +1 -1
  77. package/dist/components/msa/MSAPanel.d.ts +1 -1
  78. package/dist/components/msa/renderBoxFeatureCanvasBlock.d.ts +1 -1
  79. package/dist/components/msa/renderBoxFeatureCanvasBlock.js +2 -3
  80. package/dist/components/msa/renderBoxFeatureCanvasBlock.js.map +1 -1
  81. package/dist/components/msa/renderMSABlock.d.ts +2 -2
  82. package/dist/components/msa/renderMSABlock.js +12 -12
  83. package/dist/components/msa/renderMSABlock.js.map +1 -1
  84. package/dist/components/msa/renderMSAMouseover.d.ts +1 -1
  85. package/dist/components/tree/TreeBranchMenu.d.ts +1 -1
  86. package/dist/components/tree/TreeCanvas.d.ts +1 -1
  87. package/dist/components/tree/TreeCanvas.js +13 -12
  88. package/dist/components/tree/TreeCanvas.js.map +1 -1
  89. package/dist/components/tree/TreeCanvasBlock.d.ts +1 -1
  90. package/dist/components/tree/TreeCanvasBlock.js +2 -1
  91. package/dist/components/tree/TreeCanvasBlock.js.map +1 -1
  92. package/dist/components/tree/TreeNodeMenu.d.ts +1 -1
  93. package/dist/components/tree/TreeNodeMenu.js +2 -2
  94. package/dist/components/tree/TreeNodeMenu.js.map +1 -1
  95. package/dist/components/tree/TreePanel.d.ts +1 -1
  96. package/dist/components/tree/TreeRuler.d.ts +1 -1
  97. package/dist/components/tree/dialogs/TreeNodeInfoDialog.d.ts +1 -1
  98. package/dist/components/tree/renderTreeCanvas.d.ts +3 -3
  99. package/dist/components/tree/renderTreeCanvas.js +25 -9
  100. package/dist/components/tree/renderTreeCanvas.js.map +1 -1
  101. package/dist/components/util.js +1 -1
  102. package/dist/components/util.js.map +1 -1
  103. package/dist/fetchUtils.d.ts +1 -1
  104. package/dist/fetchUtils.js.map +1 -1
  105. package/dist/launchInterProScan.d.ts +9 -3
  106. package/dist/launchInterProScan.js +57 -22
  107. package/dist/launchInterProScan.js.map +1 -1
  108. package/dist/model/DataModel.d.ts +5 -1
  109. package/dist/model/DataModel.js +10 -1
  110. package/dist/model/DataModel.js.map +1 -1
  111. package/dist/model/DialogQueue.d.ts +1 -1
  112. package/dist/model.d.ts +138 -43
  113. package/dist/model.js +235 -110
  114. package/dist/model.js.map +1 -1
  115. package/dist/parseNewick.js +1 -1
  116. package/dist/parseNewick.js.map +1 -1
  117. package/dist/parsers/ClustalMSA.d.ts +1 -1
  118. package/dist/parsers/FastaMSA.d.ts +1 -1
  119. package/dist/parsers/StockholmMSA.d.ts +1 -1
  120. package/dist/parsers/StockholmMSA.js.map +1 -1
  121. package/dist/renderToSvg.d.ts +2 -2
  122. package/dist/renderToSvg.js +3 -28
  123. package/dist/renderToSvg.js.map +1 -1
  124. package/dist/reparseTree.d.ts +1 -1
  125. package/dist/util.d.ts +2 -2
  126. package/dist/util.js +0 -2
  127. package/dist/util.js.map +1 -1
  128. package/dist/version.d.ts +1 -1
  129. package/dist/version.js +1 -1
  130. package/dist/version.js.map +1 -1
  131. package/package.json +5 -2
  132. package/src/colorSchemes.ts +3 -2
  133. package/src/components/Checkbox2.tsx +1 -1
  134. package/src/components/Loading.tsx +11 -5
  135. package/src/components/MSAView.tsx +27 -18
  136. package/src/components/ResizeHandles.tsx +3 -3
  137. package/src/components/SequenceTextArea.tsx +8 -0
  138. package/src/components/TextTrack.tsx +1 -1
  139. package/src/components/Track.tsx +1 -1
  140. package/src/components/VerticalScrollbar.tsx +85 -0
  141. package/src/components/dialogs/AddTrackDialog.tsx +2 -2
  142. package/src/components/dialogs/DomainDialog.tsx +38 -0
  143. package/src/components/dialogs/ExportSVGDialog.tsx +1 -1
  144. package/src/components/dialogs/FeatureDialog.tsx +3 -3
  145. package/src/components/dialogs/InterProScanDialog.tsx +49 -11
  146. package/src/components/dialogs/MetadataDialog.tsx +1 -1
  147. package/src/components/dialogs/SettingsDialog.tsx +38 -3
  148. package/src/components/dialogs/TabPanel.tsx +19 -0
  149. package/src/components/dialogs/TracklistDialog.tsx +1 -1
  150. package/src/components/dialogs/UserProvidedDomainsDialog.tsx +133 -0
  151. package/src/components/header/Header.tsx +9 -6
  152. package/src/components/header/HeaderInfoArea.tsx +1 -1
  153. package/src/components/header/HeaderMenu.tsx +1 -1
  154. package/src/components/header/HeaderMenuExtra.tsx +65 -48
  155. package/src/components/header/HeaderStatusArea.tsx +3 -2
  156. package/src/components/header/MultiAlignmentSelector.tsx +1 -1
  157. package/src/components/header/ZoomControls.tsx +34 -0
  158. package/src/components/import/ImportForm.tsx +3 -3
  159. package/src/components/import/ImportFormExamples.tsx +19 -17
  160. package/src/components/import/util.ts +2 -2
  161. package/src/components/minimap/Minimap.tsx +15 -22
  162. package/src/components/minimap/MinimapSVG.tsx +2 -2
  163. package/src/components/msa/MSACanvas.tsx +11 -4
  164. package/src/components/msa/MSACanvasBlock.tsx +5 -4
  165. package/src/components/msa/MSAMouseoverCanvas.tsx +2 -6
  166. package/src/components/msa/MSAPanel.tsx +1 -1
  167. package/src/components/msa/renderBoxFeatureCanvasBlock.ts +5 -6
  168. package/src/components/msa/renderMSABlock.ts +37 -17
  169. package/src/components/msa/renderMSAMouseover.ts +1 -1
  170. package/src/components/tree/TreeBranchMenu.tsx +1 -1
  171. package/src/components/tree/TreeCanvas.tsx +15 -16
  172. package/src/components/tree/TreeCanvasBlock.tsx +3 -2
  173. package/src/components/tree/TreeNodeMenu.tsx +3 -3
  174. package/src/components/tree/TreePanel.tsx +1 -1
  175. package/src/components/tree/TreeRuler.tsx +1 -1
  176. package/src/components/tree/dialogs/TreeNodeInfoDialog.tsx +1 -1
  177. package/src/components/tree/renderTreeCanvas.ts +32 -12
  178. package/src/components/util.ts +1 -1
  179. package/src/fetchUtils.ts +2 -2
  180. package/src/launchInterProScan.ts +69 -24
  181. package/src/model/DataModel.ts +10 -0
  182. package/src/model/DialogQueue.ts +1 -1
  183. package/src/model.ts +262 -143
  184. package/src/parseNewick.ts +1 -1
  185. package/src/parsers/ClustalMSA.ts +1 -1
  186. package/src/parsers/FastaMSA.ts +1 -1
  187. package/src/parsers/StockholmMSA.ts +1 -1
  188. package/src/renderToSvg.tsx +6 -30
  189. package/src/reparseTree.ts +1 -1
  190. package/src/util.ts +2 -4
  191. package/src/version.ts +1 -1
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export default function TabPanel({ children, value, index, ...other }: {
3
+ children?: React.ReactNode;
4
+ index: number;
5
+ value: number;
6
+ }): React.JSX.Element;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ // this is from MUI example
3
+ export default function TabPanel({ children, value, index, ...other }) {
4
+ return (React.createElement("div", { role: "tabpanel", hidden: value !== index, ...other }, value === index && React.createElement("div", null, children)));
5
+ }
6
+ //# sourceMappingURL=TabPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabPanel.js","sourceRoot":"","sources":["../../../src/components/dialogs/TabPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,2BAA2B;AAC3B,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,QAAQ,EACR,KAAK,EACL,KAAK,EACL,GAAG,KAAK,EAKT;IACC,OAAO,CACL,6BAAK,IAAI,EAAC,UAAU,EAAC,MAAM,EAAE,KAAK,KAAK,KAAK,KAAM,KAAK,IACpD,KAAK,KAAK,KAAK,IAAI,iCAAM,QAAQ,CAAO,CACrC,CACP,CAAA;AACH,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { MsaViewModel } from '../../model';
2
+ import type { MsaViewModel } from '../../model';
3
3
  declare const _default: ({ model, onClose, }: {
4
4
  model: MsaViewModel;
5
5
  onClose: () => void;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import type { MsaViewModel } from '../../model';
3
+ declare const UserProvidedDomainsDialog: ({ handleClose, model, }: {
4
+ handleClose: () => void;
5
+ model: MsaViewModel;
6
+ }) => React.JSX.Element;
7
+ export default UserProvidedDomainsDialog;
@@ -0,0 +1,58 @@
1
+ import React, { useState } from 'react';
2
+ import { observer } from 'mobx-react';
3
+ import { Button, DialogActions, DialogContent, FormControlLabel, FormControl, Radio, RadioGroup, TextField, Typography, } from '@mui/material';
4
+ import { getSession } from '@jbrowse/core/util';
5
+ import { Dialog } from '@jbrowse/core/ui';
6
+ import { jsonfetch } from '../../fetchUtils';
7
+ const UserProvidedDomainsDialog = observer(function ({ handleClose, model, }) {
8
+ const [file, setFile] = useState();
9
+ const [choice, setChoice] = useState('file');
10
+ const [interProURL, setInterProURL] = useState('');
11
+ return (React.createElement(Dialog, { maxWidth: "xl", title: "Open protein domains from file", onClose: () => handleClose(), open: true },
12
+ React.createElement(DialogContent, null,
13
+ React.createElement("div", null,
14
+ React.createElement(Typography, null, "Open a JSON file of InterProScan results that you run remotely on EBI servers or locally"),
15
+ React.createElement("div", { style: { display: 'flex', margin: 30 } },
16
+ React.createElement(FormControl, { component: "fieldset" },
17
+ React.createElement(RadioGroup, { value: choice, onChange: event => setChoice(event.target.value) },
18
+ React.createElement(FormControlLabel, { value: "url", control: React.createElement(Radio, null), label: "URL" }),
19
+ React.createElement(FormControlLabel, { value: "file", control: React.createElement(Radio, null), label: "File" }))),
20
+ choice === 'url' ? (React.createElement("div", null,
21
+ React.createElement(Typography, null, "Open a InterProScan JSON file remote URL"),
22
+ React.createElement(TextField, { label: "URL", value: interProURL, onChange: event => setInterProURL(event.target.value) }))) : null,
23
+ choice === 'file' ? (React.createElement("div", { style: { paddingTop: 20 } },
24
+ React.createElement(Typography, null, "Open a InterProScan JSON file file from your local drive"),
25
+ React.createElement(Button, { variant: "outlined", component: "label" },
26
+ "Choose File",
27
+ React.createElement("input", { type: "file", hidden: true, onChange: ({ target }) => {
28
+ const file = target?.files?.[0];
29
+ if (file) {
30
+ setFile(file);
31
+ }
32
+ } })))) : null))),
33
+ React.createElement(DialogActions, null,
34
+ React.createElement(Button, { variant: "contained", color: "primary", onClick: () => {
35
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
36
+ ;
37
+ (async () => {
38
+ try {
39
+ const ret = file
40
+ ? JSON.parse(await file.text())
41
+ : await jsonfetch(interProURL);
42
+ model.setInterProAnnotations(Object.fromEntries(ret.results.map(r => [r.xref[0].id, r])));
43
+ model.setShowDomains(true);
44
+ getSession(model).notify('Loaded interproscan results', 'success');
45
+ }
46
+ catch (e) {
47
+ console.error(e);
48
+ getSession(model).notifyError(`${e}`, e);
49
+ }
50
+ finally {
51
+ model.setStatus();
52
+ }
53
+ })();
54
+ handleClose();
55
+ } }, "Open results"))));
56
+ });
57
+ export default UserProvidedDomainsDialog;
58
+ //# sourceMappingURL=UserProvidedDomainsDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserProvidedDomainsDialog.js","sourceRoot":"","sources":["../../../src/components/dialogs/UserProvidedDomainsDialog.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { MsaViewModel } from '../../model';
2
+ import type { MsaViewModel } from '../../model';
3
3
  declare const Header: ({ model }: {
4
4
  model: MsaViewModel;
5
5
  }) => React.JSX.Element;
@@ -1,6 +1,7 @@
1
- import React, { lazy } from 'react';
1
+ import React, { lazy, useEffect } from 'react';
2
2
  import { IconButton } from '@mui/material';
3
3
  import { observer } from 'mobx-react';
4
+ import useMeasure from '@jbrowse/core/util/useMeasure';
4
5
  // icons
5
6
  import Help from '@mui/icons-material/Help';
6
7
  // locals
@@ -8,14 +9,16 @@ import ZoomControls from './ZoomControls';
8
9
  import MultiAlignmentSelector from './MultiAlignmentSelector';
9
10
  import HeaderInfoArea from './HeaderInfoArea';
10
11
  import HeaderStatusArea from './HeaderStatusArea';
11
- import HeaderMenu from './HeaderMenu';
12
12
  import HeaderMenuExtra from './HeaderMenuExtra';
13
13
  const AboutDialog = lazy(() => import('../dialogs/AboutDialog'));
14
14
  const Header = observer(function ({ model }) {
15
- return (React.createElement("div", { style: { display: 'flex' } },
16
- React.createElement(HeaderMenu, { model: model }),
17
- React.createElement(ZoomControls, { model: model }),
15
+ const [ref, { height }] = useMeasure();
16
+ useEffect(() => {
17
+ model.setHeaderHeight(height || 0);
18
+ }, [model, height]);
19
+ return (React.createElement("div", { ref: ref, style: { display: 'flex' } },
18
20
  React.createElement(HeaderMenuExtra, { model: model }),
21
+ React.createElement(ZoomControls, { model: model }),
19
22
  React.createElement(MultiAlignmentSelector, { model: model }),
20
23
  React.createElement(HeaderInfoArea, { model: model }),
21
24
  React.createElement(Spacer, null),
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/components/header/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAKrC,QAAQ;AACR,OAAO,IAAI,MAAM,0BAA0B,CAAA;AAE3C,SAAS;AACT,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,sBAAsB,MAAM,0BAA0B,CAAA;AAC7D,OAAO,cAAc,MAAM,kBAAkB,CAAA;AAC7C,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AACjD,OAAO,UAAU,MAAM,cAAc,CAAA;AACrC,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAE/C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAA;AAEhE,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IAClE,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QAC7B,oBAAC,UAAU,IAAC,KAAK,EAAE,KAAK,GAAI;QAC5B,oBAAC,YAAY,IAAC,KAAK,EAAE,KAAK,GAAI;QAC9B,oBAAC,eAAe,IAAC,KAAK,EAAE,KAAK,GAAI;QACjC,oBAAC,sBAAsB,IAAC,KAAK,EAAE,KAAK,GAAI;QACxC,oBAAC,cAAc,IAAC,KAAK,EAAE,KAAK,GAAI;QAChC,oBAAC,MAAM,OAAG;QACV,oBAAC,gBAAgB,IAAC,KAAK,EAAE,KAAK,GAAI;QAClC,oBAAC,UAAU,IACT,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAEvE,oBAAC,IAAI,OAAG,CACG,CACT,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,SAAS,MAAM;IACb,OAAO,6BAAK,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAI,CAAA;AACpC,CAAC;AAED,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/components/header/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,UAAU,MAAM,+BAA+B,CAAA;AAKtD,QAAQ;AACR,OAAO,IAAI,MAAM,0BAA0B,CAAA;AAE3C,SAAS;AACT,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,sBAAsB,MAAM,0BAA0B,CAAA;AAC7D,OAAO,cAAc,MAAM,kBAAkB,CAAA;AAC7C,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AACjD,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAE/C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAA;AAEhE,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IAClE,MAAM,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,UAAU,EAAE,CAAA;IACtC,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;IACpC,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;IACnB,OAAO,CACL,6BAAK,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QACvC,oBAAC,eAAe,IAAC,KAAK,EAAE,KAAK,GAAI;QACjC,oBAAC,YAAY,IAAC,KAAK,EAAE,KAAK,GAAI;QAC9B,oBAAC,sBAAsB,IAAC,KAAK,EAAE,KAAK,GAAI;QACxC,oBAAC,cAAc,IAAC,KAAK,EAAE,KAAK,GAAI;QAChC,oBAAC,MAAM,OAAG;QACV,oBAAC,gBAAgB,IAAC,KAAK,EAAE,KAAK,GAAI;QAClC,oBAAC,UAAU,IACT,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAEvE,oBAAC,IAAI,OAAG,CACG,CACT,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,SAAS,MAAM;IACb,OAAO,6BAAK,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAI,CAAA;AACpC,CAAC;AAED,eAAe,MAAM,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { MsaViewModel } from '../../model';
2
+ import type { MsaViewModel } from '../../model';
3
3
  declare const HeaderInfoArea: ({ model }: {
4
4
  model: MsaViewModel;
5
5
  }) => React.JSX.Element | null;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { MsaViewModel } from '../../model';
2
+ import type { MsaViewModel } from '../../model';
3
3
  declare const HeaderMenu: ({ model }: {
4
4
  model: MsaViewModel;
5
5
  }) => React.JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { MsaViewModel } from '../../model';
2
+ import type { MsaViewModel } from '../../model';
3
3
  declare const HeaderMenuExtra: ({ model }: {
4
4
  model: MsaViewModel;
5
5
  }) => React.JSX.Element;
@@ -2,27 +2,46 @@ import React, { lazy } from 'react';
2
2
  import { observer } from 'mobx-react';
3
3
  import CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton';
4
4
  // icons
5
- import MoreVert from '@mui/icons-material/MoreVert';
5
+ import MoreVert from '@mui/icons-material/Menu';
6
6
  import Sort from '@mui/icons-material/Sort';
7
7
  import Visibility from '@mui/icons-material/Visibility';
8
8
  import FilterAlt from '@mui/icons-material/FilterAlt';
9
9
  import Search from '@mui/icons-material/Search';
10
10
  import PhotoCamera from '@mui/icons-material/PhotoCamera';
11
- import RestartAlt from '@mui/icons-material/RestartAlt';
11
+ import Settings from '@mui/icons-material/Settings';
12
+ import Assignment from '@mui/icons-material/Assignment';
13
+ import List from '@mui/icons-material/List';
14
+ import FolderOpen from '@mui/icons-material/FolderOpen';
12
15
  // lazies
16
+ const SettingsDialog = lazy(() => import('../dialogs/SettingsDialog'));
17
+ const MetadataDialog = lazy(() => import('../dialogs/MetadataDialog'));
18
+ const TracklistDialog = lazy(() => import('../dialogs/TracklistDialog'));
13
19
  const ExportSVGDialog = lazy(() => import('../dialogs/ExportSVGDialog'));
14
20
  const FeatureFilterDialog = lazy(() => import('../dialogs/FeatureDialog'));
21
+ const UserProvidedDomainsDialog = lazy(() => import('../dialogs/UserProvidedDomainsDialog'));
15
22
  const InterProScanDialog = lazy(() => import('../dialogs/InterProScanDialog'));
16
- const HeaderMenuExtra = observer(function ({ model }) {
17
- const { featureMode, subFeatureRows, noAnnotations, interProScanJobIds } = model;
23
+ const HeaderMenuExtra = observer(({ model }) => {
24
+ const { showDomains, actuallyShowDomains, subFeatureRows, noDomains } = model;
18
25
  return (React.createElement(CascadingMenuButton, { menuItems: [
19
26
  {
20
- label: 'Reset zoom to default',
21
- icon: RestartAlt,
22
- onClick: () => {
23
- model.setColWidth(16);
24
- model.setRowHeight(20);
25
- },
27
+ label: 'Return to import form',
28
+ icon: FolderOpen,
29
+ onClick: () => model.reset(),
30
+ },
31
+ {
32
+ label: 'Settings',
33
+ onClick: () => model.queueDialog(onClose => [SettingsDialog, { model, onClose }]),
34
+ icon: Settings,
35
+ },
36
+ {
37
+ label: 'Metadata',
38
+ onClick: () => model.queueDialog(onClose => [MetadataDialog, { model, onClose }]),
39
+ icon: Assignment,
40
+ },
41
+ {
42
+ label: 'Extra tracks',
43
+ onClick: () => model.queueDialog(onClose => [TracklistDialog, { model, onClose }]),
44
+ icon: List,
26
45
  },
27
46
  {
28
47
  label: 'Export SVG',
@@ -34,22 +53,41 @@ const HeaderMenuExtra = observer(function ({ model }) {
34
53
  type: 'subMenu',
35
54
  subMenu: [
36
55
  {
37
- label: 'Show domains' + (noAnnotations ? ' (no domains loaded)' : ''),
56
+ label: 'Open domains...',
57
+ icon: FolderOpen,
58
+ onClick: () => model.queueDialog(handleClose => [
59
+ UserProvidedDomainsDialog,
60
+ { handleClose, model },
61
+ ]),
62
+ },
63
+ {
64
+ label: 'Query InterProScan for domains...',
65
+ icon: Search,
66
+ onClick: () => model.queueDialog(handleClose => [
67
+ InterProScanDialog,
68
+ { handleClose, model },
69
+ ]),
70
+ },
71
+ {
72
+ label: `Show domains${noDomains ? ' (no domains loaded)' : ''}`,
73
+ disabled: noDomains,
38
74
  icon: Visibility,
39
- checked: featureMode,
75
+ checked: actuallyShowDomains ? showDomains : false,
40
76
  type: 'checkbox',
41
- onClick: () => model.setFeatureMode(!featureMode),
77
+ onClick: () => model.setShowDomains(!showDomains),
42
78
  },
43
79
  {
44
- label: 'Use sub-row layout',
45
- checked: subFeatureRows,
80
+ label: `Use sub-row layout${noDomains ? ' (no domains loaded)' : ''}`,
81
+ disabled: noDomains,
82
+ checked: actuallyShowDomains ? subFeatureRows : false,
46
83
  icon: Sort,
47
84
  type: 'checkbox',
48
85
  onClick: () => model.setSubFeatureRows(!subFeatureRows),
49
86
  },
50
87
  {
51
- label: 'Filter domains',
88
+ label: `Filter domains${noDomains ? ' (no domains loaded)' : ''}`,
52
89
  icon: FilterAlt,
90
+ disabled: noDomains,
53
91
  onClick: () => {
54
92
  model.queueDialog(onClose => [
55
93
  FeatureFilterDialog,
@@ -57,31 +95,6 @@ const HeaderMenuExtra = observer(function ({ model }) {
57
95
  ]);
58
96
  },
59
97
  },
60
- {
61
- label: 'Query InterProScan for domains...',
62
- icon: Search,
63
- onClick: () => model.queueDialog(onClose => [
64
- InterProScanDialog,
65
- { onClose, model },
66
- ]),
67
- },
68
- {
69
- label: 'Load previous InterProScan results...',
70
- icon: Search,
71
- type: 'subMenu',
72
- subMenu: interProScanJobIds.length
73
- ? interProScanJobIds.map(({ jobId, date }) => ({
74
- label: new Date(date).toLocaleString('en-US') + ' - ' + jobId,
75
- onClick: () => model.loadInterProScanResults(jobId),
76
- }))
77
- : [
78
- {
79
- label: 'No previous searches',
80
- disabled: true,
81
- onClick: () => { },
82
- },
83
- ],
84
- },
85
98
  ],
86
99
  },
87
100
  ...(model.extraViewMenuItems?.() || []),
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderMenuExtra.js","sourceRoot":"","sources":["../../../src/components/header/HeaderMenuExtra.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HeaderMenuExtra.js","sourceRoot":"","sources":["../../../src/components/header/HeaderMenuExtra.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { MsaViewModel } from '../../model';
2
+ import type { MsaViewModel } from '../../model';
3
3
  declare const HeaderStatusArea: ({ model }: {
4
4
  model: MsaViewModel;
5
5
  }) => React.JSX.Element | null;
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import { Typography } from '@mui/material';
3
3
  import { observer } from 'mobx-react';
4
4
  import { makeStyles } from 'tss-react/mui';
5
+ import { LoadingEllipses } from '@jbrowse/core/ui';
5
6
  const useStyles = makeStyles()({
6
7
  margin: {
7
8
  margin: 'auto',
@@ -12,7 +13,7 @@ const HeaderStatusArea = observer(({ model }) => {
12
13
  const { status } = model;
13
14
  const { classes } = useStyles();
14
15
  return status ? (React.createElement(Typography, { className: classes.margin },
15
- status.msg,
16
+ React.createElement(LoadingEllipses, { message: status.msg, component: "span" }),
16
17
  ' ',
17
18
  status.url ? (React.createElement("a", { href: status.url, target: "_blank", rel: "noreferrer" }, "(status)")) : null)) : null;
18
19
  });
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderStatusArea.js","sourceRoot":"","sources":["../../../src/components/header/HeaderStatusArea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAK1C,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,EAAE;QACN,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,EAAE;KACf;CACF,CAAC,CAAA;AAEF,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,EAA2B,EAAE,EAAE;IACvE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;IACxB,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,OAAO,MAAM,CAAC,CAAC,CAAC,CACd,oBAAC,UAAU,IAAC,SAAS,EAAE,OAAO,CAAC,MAAM;QAClC,MAAM,CAAC,GAAG;QAAE,GAAG;QACf,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CACZ,2BAAG,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,YAAY,eAEjD,CACL,CAAC,CAAC,CAAC,IAAI,CACG,CACd,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC,CAAC,CAAA;AAEF,eAAe,gBAAgB,CAAA"}
1
+ {"version":3,"file":"HeaderStatusArea.js","sourceRoot":"","sources":["../../../src/components/header/HeaderStatusArea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAKlD,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,EAAE;QACN,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,EAAE;KACf;CACF,CAAC,CAAA;AAEF,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,EAA2B,EAAE,EAAE;IACvE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;IACxB,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,OAAO,MAAM,CAAC,CAAC,CAAC,CACd,oBAAC,UAAU,IAAC,SAAS,EAAE,OAAO,CAAC,MAAM;QACnC,oBAAC,eAAe,IAAC,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,SAAS,EAAC,MAAM,GAAG;QAAC,GAAG;QAC5D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CACZ,2BAAG,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,YAAY,eAEjD,CACL,CAAC,CAAC,CAAC,IAAI,CACG,CACd,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC,CAAC,CAAA;AAEF,eAAe,gBAAgB,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { MsaViewModel } from '../../model';
2
+ import type { MsaViewModel } from '../../model';
3
3
  declare const MultiAlignmentSelector: ({ model, }: {
4
4
  model: MsaViewModel;
5
5
  }) => React.JSX.Element | null;
@@ -1,15 +1,45 @@
1
1
  import React from 'react';
2
2
  import { IconButton } from '@mui/material';
3
3
  import { observer } from 'mobx-react';
4
+ import CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton';
4
5
  // icons
5
6
  import ZoomIn from '@mui/icons-material/ZoomIn';
6
7
  import ZoomOut from '@mui/icons-material/ZoomOut';
8
+ import MoreVert from '@mui/icons-material/MoreVert';
9
+ import RestartAlt from '@mui/icons-material/RestartAlt';
7
10
  const ZoomControls = observer(function ZoomControls({ model, }) {
8
11
  return (React.createElement(React.Fragment, null,
9
12
  React.createElement(IconButton, { onClick: () => model.zoomIn() },
10
13
  React.createElement(ZoomIn, null)),
11
14
  React.createElement(IconButton, { onClick: () => model.zoomOut() },
12
- React.createElement(ZoomOut, null))));
15
+ React.createElement(ZoomOut, null)),
16
+ React.createElement(CascadingMenuButton, { menuItems: [
17
+ {
18
+ label: 'Zoom in horizontal',
19
+ onClick: () => model.zoomInHorizontal(),
20
+ },
21
+ {
22
+ label: 'Zoom in vertical',
23
+ onClick: () => model.zoomInVertical(),
24
+ },
25
+ {
26
+ label: 'Zoom out horizontal',
27
+ onClick: () => model.zoomOutHorizontal(),
28
+ },
29
+ {
30
+ label: 'Zoom out vertical',
31
+ onClick: () => model.zoomOutVertical(),
32
+ },
33
+ {
34
+ label: 'Reset zoom to default',
35
+ icon: RestartAlt,
36
+ onClick: () => {
37
+ model.setColWidth(16);
38
+ model.setRowHeight(20);
39
+ },
40
+ },
41
+ ] },
42
+ React.createElement(MoreVert, null))));
13
43
  });
14
44
  export default ZoomControls;
15
45
  //# sourceMappingURL=ZoomControls.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ZoomControls.js","sourceRoot":"","sources":["../../../src/components/header/ZoomControls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAKrC,QAAQ;AACR,OAAO,MAAM,MAAM,4BAA4B,CAAA;AAC/C,OAAO,OAAO,MAAM,6BAA6B,CAAA;AAEjD,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,YAAY,CAAC,EAClD,KAAK,GAGN;IACC,OAAO,CACL;QACE,oBAAC,UAAU,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE;YACvC,oBAAC,MAAM,OAAG,CACC;QACb,oBAAC,UAAU,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;YACxC,oBAAC,OAAO,OAAG,CACA,CACZ,CACJ,CAAA;AACH,CAAC,CAAC,CAAA;AACF,eAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"ZoomControls.js","sourceRoot":"","sources":["../../../src/components/header/ZoomControls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,mBAAmB,MAAM,sCAAsC,CAAA;AAKtE,QAAQ;AACR,OAAO,MAAM,MAAM,4BAA4B,CAAA;AAC/C,OAAO,OAAO,MAAM,6BAA6B,CAAA;AACjD,OAAO,QAAQ,MAAM,8BAA8B,CAAA;AACnD,OAAO,UAAU,MAAM,gCAAgC,CAAA;AAEvD,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,YAAY,CAAC,EAClD,KAAK,GAGN;IACC,OAAO,CACL;QACE,oBAAC,UAAU,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE;YACvC,oBAAC,MAAM,OAAG,CACC;QACb,oBAAC,UAAU,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;YACxC,oBAAC,OAAO,OAAG,CACA;QACb,oBAAC,mBAAmB,IAClB,SAAS,EAAE;gBACT;oBACE,KAAK,EAAE,oBAAoB;oBAC3B,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE;iBACxC;gBACD;oBACE,KAAK,EAAE,kBAAkB;oBACzB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE;iBACtC;gBACD;oBACE,KAAK,EAAE,qBAAqB;oBAC5B,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE;iBACzC;gBAED;oBACE,KAAK,EAAE,mBAAmB;oBAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE;iBACvC;gBACD;oBACE,KAAK,EAAE,uBAAuB;oBAC9B,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,GAAG,EAAE;wBACZ,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;wBACrB,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;oBACxB,CAAC;iBACF;aACF;YAED,oBAAC,QAAQ,OAAG,CACQ,CACrB,CACJ,CAAA;AACH,CAAC,CAAC,CAAA;AACF,eAAe,YAAY,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { MsaViewModel } from '../../model';
2
+ import type { MsaViewModel } from '../../model';
3
3
  declare const _default: ({ model }: {
4
4
  model: MsaViewModel;
5
5
  }) => React.JSX.Element;
@@ -4,7 +4,7 @@ import { Button, Container, Grid, Typography } from '@mui/material';
4
4
  import { FileSelector } from '@jbrowse/core/ui';
5
5
  import { load } from './util';
6
6
  import ImportFormExamples from './ImportFormExamples';
7
- export default observer(({ model }) => {
7
+ export default observer(function ({ model }) {
8
8
  const [msaFile, setMsaFile] = useState();
9
9
  const [treeFile, setTreeFile] = useState();
10
10
  const { error } = model;
@@ -1 +1 @@
1
- {"version":3,"file":"ImportForm.js","sourceRoot":"","sources":["../../../src/components/import/ImportForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAK/C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,kBAAkB,MAAM,sBAAsB,CAAA;AAErD,eAAe,QAAQ,CAAC,CAAC,EAAE,KAAK,EAA2B,EAAE,EAAE;IAC7D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAgB,CAAA;IACtD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAgB,CAAA;IACxD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IAEvB,OAAO,CACL,oBAAC,SAAS;QACR,6BAAK,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;YACzB,KAAK,CAAC,CAAC,CAAC,CACP,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;gBACzB,oBAAC,UAAU,IAAC,KAAK,EAAC,OAAO;;oBAAS,GAAG,KAAK,EAAE,CAAc,CACtD,CACP,CAAC,CAAC,CAAC,IAAI;YACR,oBAAC,UAAU,6FAGE;YACb,oBAAC,UAAU,IAAC,KAAK,EAAC,OAAO,mNAKZ,CACT;QAEN,oBAAC,IAAI,IAAC,SAAS,QAAC,OAAO,EAAE,EAAE,EAAE,cAAc,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ;YACtE,oBAAC,IAAI,IAAC,IAAI;gBACR,oBAAC,UAAU,0BAA6B;gBACxC,oBAAC,YAAY,IAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,GAAI;gBAC5D,oBAAC,UAAU,2BAA8B;gBACzC,oBAAC,YAAY,IAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,GAAI,CACzD;YAEP,oBAAC,IAAI,IAAC,IAAI;gBACR,oBAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAC7C,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,SAAS,EACf,QAAQ,EAAE,CAAC,OAAO,IAAI,CAAC,QAAQ,WAGxB,CACJ;YAEP,oBAAC,IAAI,IAAC,IAAI;gBACR,oBAAC,UAAU,mBAAsB;gBACjC,oBAAC,kBAAkB,IAAC,KAAK,EAAE,KAAK,GAAI,CAC/B,CACF,CACG,CACb,CAAA;AACH,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"ImportForm.js","sourceRoot":"","sources":["../../../src/components/import/ImportForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAK/C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,kBAAkB,MAAM,sBAAsB,CAAA;AAErD,eAAe,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IAClE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAgB,CAAA;IACtD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAgB,CAAA;IACxD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IAEvB,OAAO,CACL,oBAAC,SAAS;QACR,6BAAK,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;YACzB,KAAK,CAAC,CAAC,CAAC,CACP,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;gBACzB,oBAAC,UAAU,IAAC,KAAK,EAAC,OAAO;;oBAAS,GAAG,KAAK,EAAE,CAAc,CACtD,CACP,CAAC,CAAC,CAAC,IAAI;YACR,oBAAC,UAAU,6FAGE;YACb,oBAAC,UAAU,IAAC,KAAK,EAAC,OAAO,mNAKZ,CACT;QAEN,oBAAC,IAAI,IAAC,SAAS,QAAC,OAAO,EAAE,EAAE,EAAE,cAAc,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ;YACtE,oBAAC,IAAI,IAAC,IAAI;gBACR,oBAAC,UAAU,0BAA6B;gBACxC,oBAAC,YAAY,IAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,GAAI;gBAC5D,oBAAC,UAAU,2BAA8B;gBACzC,oBAAC,YAAY,IAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,GAAI,CACzD;YAEP,oBAAC,IAAI,IAAC,IAAI;gBACR,oBAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAC7C,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,SAAS,EACf,QAAQ,EAAE,CAAC,OAAO,IAAI,CAAC,QAAQ,WAGxB,CACJ;YAEP,oBAAC,IAAI,IAAC,IAAI;gBACR,oBAAC,UAAU,mBAAsB;gBACjC,oBAAC,kBAAkB,IAAC,KAAK,EAAE,KAAK,GAAI,CAC/B,CACF,CACG,CACb,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { MsaViewModel } from '../../model';
2
+ import type { MsaViewModel } from '../../model';
3
3
  declare const ImportFormExamples: ({ model, }: {
4
4
  model: MsaViewModel;
5
5
  }) => React.JSX.Element;
@@ -3,17 +3,19 @@ import { Typography, Link } from '@mui/material';
3
3
  import { observer } from 'mobx-react';
4
4
  import { smallTree, smallMSA, smallMSAOnly } from './data/seq2';
5
5
  import { load } from './util';
6
- const ListItem = ({ onClick, model, children, }) => (React.createElement("li", null,
7
- React.createElement(Link, { onClick: event => {
8
- model.setError(undefined);
9
- event.preventDefault();
10
- onClick();
11
- }, href: "#" },
12
- React.createElement(Typography, { display: "inline" }, children))));
6
+ function ListItem({ onClick, model, children, }) {
7
+ return (React.createElement("li", null,
8
+ React.createElement(Link, { onClick: event => {
9
+ model.setError(undefined);
10
+ event.preventDefault();
11
+ onClick();
12
+ }, href: "#" },
13
+ React.createElement(Typography, { display: "inline" }, children))));
14
+ }
13
15
  const ImportFormExamples = observer(function ({ model, }) {
14
16
  return (React.createElement("ul", null,
15
17
  React.createElement(ListItem, { model: model, onClick: () => load(model, undefined, {
16
- uri: 'https://jbrowse.org/genomes/newick_trees/sarscov2phylo.pub.ft.nh',
18
+ uri: 'https://jbrowse.org/genomes/newicktrees/sarscov2phylo.pub.ft.nh',
17
19
  locationType: 'UriLocation',
18
20
  }) }, "230k COVID-19 samples (tree only)"),
19
21
  React.createElement(ListItem, { model: model, onClick: () => {
@@ -1 +1 @@
1
- {"version":3,"file":"ImportFormExamples.js","sourceRoot":"","sources":["../../../src/components/import/ImportFormExamples.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ImportFormExamples.js","sourceRoot":"","sources":["../../../src/components/import/ImportFormExamples.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { FileLocation } from '@jbrowse/core/util';
2
- import { MsaViewModel } from '../../model';
1
+ import type { FileLocation } from '@jbrowse/core/util';
2
+ import type { MsaViewModel } from '../../model';
3
3
  export declare function load(model: MsaViewModel, msaFile?: FileLocation, treeFile?: FileLocation): Promise<void>;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { MsaViewModel } from '../../model';
2
+ import type { MsaViewModel } from '../../model';
3
3
  declare const Minimap: ({ model }: {
4
4
  model: MsaViewModel;
5
5
  }) => React.JSX.Element;
@@ -4,13 +4,14 @@ const Minimap = observer(function ({ model }) {
4
4
  const [mouseDown, setMouseDown] = useState();
5
5
  const scheduled = useRef(false);
6
6
  const [hovered, setHovered] = useState(false);
7
- const { scrollX, msaAreaWidth: W, minimapHeight: H, colWidth, numColumns, } = model;
8
- const unit = W / numColumns / colWidth;
7
+ const { scrollX, msaAreaWidth, minimapHeight, colWidth, numColumns } = model;
8
+ const unit = msaAreaWidth / numColumns / colWidth;
9
9
  const left = -scrollX;
10
- const right = left + W;
10
+ const right = left + msaAreaWidth;
11
11
  const s = left * unit;
12
12
  const e = right * unit;
13
13
  const fill = 'rgba(66, 119, 127, 0.3)';
14
+ const w = Math.max(e - s, 20);
14
15
  useEffect(() => {
15
16
  function fn(event) {
16
17
  if (mouseDown !== undefined) {
@@ -35,12 +36,12 @@ const Minimap = observer(function ({ model }) {
35
36
  };
36
37
  }
37
38
  }, [model, unit, mouseDown]);
38
- const BAR_HEIGHT = 12;
39
- const H2 = H - 12;
40
- return (React.createElement("div", { style: { position: 'relative', height: H, width: '100%' } },
39
+ const barHeight = 12;
40
+ const polygonHeight = minimapHeight - barHeight;
41
+ return (React.createElement("div", { style: { position: 'relative', height: minimapHeight, width: '100%' } },
41
42
  React.createElement("div", { style: {
42
43
  boxSizing: 'border-box',
43
- height: BAR_HEIGHT,
44
+ height: barHeight,
44
45
  border: '1px solid #555',
45
46
  } }),
46
47
  React.createElement("div", { style: {
@@ -49,10 +50,8 @@ const Minimap = observer(function ({ model }) {
49
50
  left: Math.max(0, s),
50
51
  background: hovered ? 'rgba(66,119,127,0.6)' : fill,
51
52
  cursor: 'pointer',
52
- border: '1px solid #555',
53
- boxSizing: 'border-box',
54
- height: BAR_HEIGHT,
55
- width: e - s,
53
+ height: barHeight,
54
+ width: w,
56
55
  zIndex: 100,
57
56
  }, onMouseOver: () => setHovered(true), onMouseOut: () => setHovered(false), onMouseDown: event => {
58
57
  setMouseDown({
@@ -60,12 +59,12 @@ const Minimap = observer(function ({ model }) {
60
59
  scrollX: model.scrollX,
61
60
  });
62
61
  } }),
63
- React.createElement("svg", { height: H2, style: { width: '100%' } },
62
+ React.createElement("svg", { height: polygonHeight, style: { width: '100%' } },
64
63
  React.createElement("polygon", { fill: fill, points: [
65
- [e, 0],
64
+ [s + w, 0],
66
65
  [s, 0],
67
- [0, H2],
68
- [W, H2],
66
+ [0, polygonHeight],
67
+ [msaAreaWidth, polygonHeight],
69
68
  ].toString() }))));
70
69
  });
71
70
  export default Minimap;
@@ -1 +1 @@
1
- {"version":3,"file":"Minimap.js","sourceRoot":"","sources":["../../../src/components/minimap/Minimap.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Minimap.js","sourceRoot":"","sources":["../../../src/components/minimap/Minimap.tsx"],"names":[],"mappings":"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"}