react-msaview 4.4.3 → 4.4.4

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 (139) hide show
  1. package/bundle/index.js +10 -10
  2. package/bundle/index.js.LICENSE.txt +5 -5
  3. package/bundle/index.js.map +1 -1
  4. package/dist/DataModel.d.ts +34 -0
  5. package/dist/DataModel.js +46 -0
  6. package/dist/DataModel.js.map +1 -0
  7. package/dist/DialogQueue.d.ts +25 -0
  8. package/dist/DialogQueue.js +44 -0
  9. package/dist/DialogQueue.js.map +1 -0
  10. package/dist/SelectedStructuresMixin.d.ts +46 -0
  11. package/dist/SelectedStructuresMixin.js +52 -0
  12. package/dist/SelectedStructuresMixin.js.map +1 -0
  13. package/dist/StructureModel.d.ts +9 -0
  14. package/dist/StructureModel.js +11 -0
  15. package/dist/StructureModel.js.map +1 -0
  16. package/dist/UniprotTrack.d.ts +27 -0
  17. package/dist/UniprotTrack.js +53 -0
  18. package/dist/UniprotTrack.js.map +1 -0
  19. package/dist/components/BoxTrack.d.ts +7 -0
  20. package/dist/components/BoxTrack.js +15 -0
  21. package/dist/components/BoxTrack.js.map +1 -0
  22. package/dist/components/BoxTrackBlock.d.ts +8 -0
  23. package/dist/components/BoxTrackBlock.js +136 -0
  24. package/dist/components/BoxTrackBlock.js.map +1 -0
  25. package/dist/components/ExportSVGDialog.d.ts +6 -0
  26. package/dist/components/ExportSVGDialog.js +39 -0
  27. package/dist/components/ExportSVGDialog.js.map +1 -0
  28. package/dist/components/Header.d.ts +6 -0
  29. package/dist/components/Header.js +62 -0
  30. package/dist/components/Header.js.map +1 -0
  31. package/dist/components/HeaderInfoArea.d.ts +6 -0
  32. package/dist/components/HeaderInfoArea.js +12 -0
  33. package/dist/components/HeaderInfoArea.js.map +1 -0
  34. package/dist/components/ImportForm/ImportFormExamples.d.ts +6 -0
  35. package/dist/components/ImportForm/ImportFormExamples.js +50 -0
  36. package/dist/components/ImportForm/ImportFormExamples.js.map +1 -0
  37. package/dist/components/ImportForm/data/seq2.d.ts +3 -0
  38. package/dist/components/ImportForm/data/seq2.js +33 -0
  39. package/dist/components/ImportForm/data/seq2.js.map +1 -0
  40. package/dist/components/ImportForm/index.d.ts +6 -0
  41. package/dist/components/ImportForm/index.js +31 -0
  42. package/dist/components/ImportForm/index.js.map +1 -0
  43. package/dist/components/ImportForm/util.d.ts +3 -0
  44. package/dist/components/ImportForm/util.js +16 -0
  45. package/dist/components/ImportForm/util.js.map +1 -0
  46. package/dist/components/MSACanvas.d.ts +6 -0
  47. package/dist/components/MSACanvas.js +141 -0
  48. package/dist/components/MSACanvas.js.map +1 -0
  49. package/dist/components/MSAPanel/Loading.d.ts +2 -0
  50. package/dist/components/MSAPanel/Loading.js +12 -0
  51. package/dist/components/MSAPanel/Loading.js.map +1 -0
  52. package/dist/components/MSAPanel/MSABlock.d.ts +8 -0
  53. package/dist/components/MSAPanel/MSABlock.js +62 -0
  54. package/dist/components/MSAPanel/MSABlock.js.map +1 -0
  55. package/dist/components/MSAPanel/MSACanvas.d.ts +7 -0
  56. package/dist/components/MSAPanel/MSACanvas.js +69 -0
  57. package/dist/components/MSAPanel/MSACanvas.js.map +1 -0
  58. package/dist/components/MSAPanel/MSAMouseoverCanvas.d.ts +6 -0
  59. package/dist/components/MSAPanel/MSAMouseoverCanvas.js +27 -0
  60. package/dist/components/MSAPanel/MSAMouseoverCanvas.js.map +1 -0
  61. package/dist/components/MSAPanel/index.d.ts +5 -0
  62. package/dist/components/MSAPanel/index.js +9 -0
  63. package/dist/components/MSAPanel/index.js.map +1 -0
  64. package/dist/components/MSAPanel/renderMSABlock.d.ts +9 -0
  65. package/dist/components/MSAPanel/renderMSABlock.js +89 -0
  66. package/dist/components/MSAPanel/renderMSABlock.js.map +1 -0
  67. package/dist/components/MSAPanel/renderMSABlock_BACKUP_139826.d.ts +9 -0
  68. package/dist/components/MSAPanel/renderMSABlock_BACKUP_139826.js +89 -0
  69. package/dist/components/MSAPanel/renderMSABlock_BACKUP_139826.js.map +1 -0
  70. package/dist/components/MSAPanel/renderMSABlock_BASE_139826.d.ts +13 -0
  71. package/dist/components/MSAPanel/renderMSABlock_BASE_139826.js +82 -0
  72. package/dist/components/MSAPanel/renderMSABlock_BASE_139826.js.map +1 -0
  73. package/dist/components/MSAPanel/renderMSABlock_LOCAL_139826.d.ts +9 -0
  74. package/dist/components/MSAPanel/renderMSABlock_LOCAL_139826.js +89 -0
  75. package/dist/components/MSAPanel/renderMSABlock_LOCAL_139826.js.map +1 -0
  76. package/dist/components/MSAPanel/renderMSABlock_REMOTE_139826.d.ts +0 -0
  77. package/dist/components/MSAPanel/renderMSABlock_REMOTE_139826.js +2 -0
  78. package/dist/components/MSAPanel/renderMSABlock_REMOTE_139826.js.map +1 -0
  79. package/dist/components/MSAPanel/renderMSAMouseover.d.ts +5 -0
  80. package/dist/components/MSAPanel/renderMSAMouseover.js +30 -0
  81. package/dist/components/MSAPanel/renderMSAMouseover.js.map +1 -0
  82. package/dist/components/Minimap.d.ts +6 -0
  83. package/dist/components/Minimap.js +72 -0
  84. package/dist/components/Minimap.js.map +1 -0
  85. package/dist/components/MinimapSVG.d.ts +6 -0
  86. package/dist/components/MinimapSVG.js +25 -0
  87. package/dist/components/MinimapSVG.js.map +1 -0
  88. package/dist/components/MultiAlignmentSelector.d.ts +6 -0
  89. package/dist/components/MultiAlignmentSelector.js +13 -0
  90. package/dist/components/MultiAlignmentSelector.js.map +1 -0
  91. package/dist/components/TreePanel/TreeBranchMenu.d.ts +14 -0
  92. package/dist/components/TreePanel/TreeBranchMenu.js +26 -0
  93. package/dist/components/TreePanel/TreeBranchMenu.js.map +1 -0
  94. package/dist/components/TreePanel/TreeCanvas.d.ts +6 -0
  95. package/dist/components/TreePanel/TreeCanvas.js +100 -0
  96. package/dist/components/TreePanel/TreeCanvas.js.map +1 -0
  97. package/dist/components/TreePanel/TreeCanvasBlock.d.ts +7 -0
  98. package/dist/components/TreePanel/TreeCanvasBlock.js +118 -0
  99. package/dist/components/TreePanel/TreeCanvasBlock.js.map +1 -0
  100. package/dist/components/TreePanel/TreeNodeMenu.d.ts +13 -0
  101. package/dist/components/TreePanel/TreeNodeMenu.js +74 -0
  102. package/dist/components/TreePanel/TreeNodeMenu.js.map +1 -0
  103. package/dist/components/TreePanel/TreeRuler.d.ts +6 -0
  104. package/dist/components/TreePanel/TreeRuler.js +8 -0
  105. package/dist/components/TreePanel/TreeRuler.js.map +1 -0
  106. package/dist/components/TreePanel/dialogs/TreeNodeInfoDialog.d.ts +9 -0
  107. package/dist/components/TreePanel/dialogs/TreeNodeInfoDialog.js +16 -0
  108. package/dist/components/TreePanel/dialogs/TreeNodeInfoDialog.js.map +1 -0
  109. package/dist/components/TreePanel/index.d.ts +6 -0
  110. package/dist/components/TreePanel/index.js +10 -0
  111. package/dist/components/TreePanel/index.js.map +1 -0
  112. package/dist/components/TreePanel/renderTreeCanvas.d.ts +46 -0
  113. package/dist/components/TreePanel/renderTreeCanvas.js +180 -0
  114. package/dist/components/TreePanel/renderTreeCanvas.js.map +1 -0
  115. package/dist/components/VerticalGuide.d.ts +7 -0
  116. package/dist/components/VerticalGuide.js +30 -0
  117. package/dist/components/VerticalGuide.js.map +1 -0
  118. package/dist/components/ZoomControls.d.ts +6 -0
  119. package/dist/components/ZoomControls.js +59 -0
  120. package/dist/components/ZoomControls.js.map +1 -0
  121. package/dist/components/msa/MSACanvas_BACKUP_139826.d.ts +7 -0
  122. package/dist/components/msa/MSACanvas_BACKUP_139826.js +68 -0
  123. package/dist/components/msa/MSACanvas_BACKUP_139826.js.map +1 -0
  124. package/dist/components/msa/MSACanvas_BASE_139826.d.ts +6 -0
  125. package/dist/components/msa/MSACanvas_BASE_139826.js +107 -0
  126. package/dist/components/msa/MSACanvas_BASE_139826.js.map +1 -0
  127. package/dist/components/msa/MSACanvas_LOCAL_139826.d.ts +7 -0
  128. package/dist/components/msa/MSACanvas_LOCAL_139826.js +69 -0
  129. package/dist/components/msa/MSACanvas_LOCAL_139826.js.map +1 -0
  130. package/dist/components/msa/MSACanvas_REMOTE_139826.d.ts +6 -0
  131. package/dist/components/msa/MSACanvas_REMOTE_139826.js +106 -0
  132. package/dist/components/msa/MSACanvas_REMOTE_139826.js.map +1 -0
  133. package/dist/sansserif.d.ts +3 -0
  134. package/dist/sansserif.js +1583 -0
  135. package/dist/sansserif.js.map +1 -0
  136. package/dist/version.d.ts +1 -1
  137. package/dist/version.js +1 -1
  138. package/package.json +2 -2
  139. package/src/version.ts +1 -1
@@ -0,0 +1,62 @@
1
+ import React, { Suspense, lazy, useState } from 'react';
2
+ import { IconButton } from '@mui/material';
3
+ import { observer } from 'mobx-react';
4
+ // icons
5
+ import FolderOpen from '@mui/icons-material/FolderOpen';
6
+ import Settings from '@mui/icons-material/Settings';
7
+ import Help from '@mui/icons-material/Help';
8
+ import Assignment from '@mui/icons-material/Assignment';
9
+ import List from '@mui/icons-material/List';
10
+ // locals
11
+ import ZoomControls from './ZoomControls';
12
+ import MultiAlignmentSelector from './MultiAlignmentSelector';
13
+ import HeaderInfoArea from './HeaderInfoArea';
14
+ const SettingsDialog = lazy(() => import('./dialogs/SettingsDialog'));
15
+ const AboutDialog = lazy(() => import('./dialogs/AboutDialog'));
16
+ const MetadataDialog = lazy(() => import('./dialogs/MetadataDialog'));
17
+ const TracklistDialog = lazy(() => import('./dialogs/TracklistDialog'));
18
+ const Header = observer(function ({ model }) {
19
+ const [settingsDialogViz, setSettingsDialogViz] = useState(false);
20
+ const [aboutDialogViz, setAboutDialogViz] = useState(false);
21
+ const [detailsDialogViz, setMetadataDialogViz] = useState(false);
22
+ const [tracklistDialogViz, setTracklistDialogViz] = useState(false);
23
+ return (React.createElement("div", { style: { display: 'flex' } },
24
+ React.createElement(IconButton, { onClick: async () => {
25
+ try {
26
+ model.setData({ tree: '', msa: '' });
27
+ model.clearSelectedStructures();
28
+ model.setScrollY(0);
29
+ model.setScrollX(0);
30
+ model.setCurrentAlignment(0);
31
+ await model.setTreeFilehandle(undefined);
32
+ await model.setMSAFilehandle(undefined);
33
+ }
34
+ catch (e) {
35
+ console.error(e);
36
+ model.setError(e);
37
+ }
38
+ } },
39
+ React.createElement(FolderOpen, null)),
40
+ React.createElement(IconButton, { onClick: () => setSettingsDialogViz(true) },
41
+ React.createElement(Settings, null)),
42
+ React.createElement(IconButton, { onClick: () => setMetadataDialogViz(true) },
43
+ React.createElement(Assignment, null)),
44
+ React.createElement(IconButton, { onClick: () => setTracklistDialogViz(true) },
45
+ React.createElement(List, null)),
46
+ React.createElement(Suspense, { fallback: null },
47
+ settingsDialogViz ? (React.createElement(SettingsDialog, { model: model, onClose: () => setSettingsDialogViz(false) })) : null,
48
+ aboutDialogViz ? (React.createElement(AboutDialog, { onClose: () => setAboutDialogViz(false) })) : null,
49
+ detailsDialogViz ? (React.createElement(MetadataDialog, { model: model, onClose: () => setMetadataDialogViz(false) })) : null,
50
+ tracklistDialogViz ? (React.createElement(TracklistDialog, { model: model, onClose: () => setTracklistDialogViz(false) })) : null),
51
+ React.createElement(MultiAlignmentSelector, { model: model }),
52
+ React.createElement(ZoomControls, { model: model }),
53
+ React.createElement(HeaderInfoArea, { model: model }),
54
+ React.createElement(Spacer, null),
55
+ React.createElement(IconButton, { onClick: () => setAboutDialogViz(true) },
56
+ React.createElement(Help, null))));
57
+ });
58
+ function Spacer() {
59
+ return React.createElement("div", { style: { flex: 1 } });
60
+ }
61
+ export default Header;
62
+ //# sourceMappingURL=Header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { MsaViewModel } from '../model';
3
+ declare const HeaderInfoArea: ({ model }: {
4
+ model: MsaViewModel;
5
+ }) => React.JSX.Element;
6
+ export default HeaderInfoArea;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { Typography } from '@mui/material';
3
+ import { observer } from 'mobx-react';
4
+ const HeaderInfoArea = observer(({ model }) => {
5
+ const { mouseOverRowName, mouseCol } = model;
6
+ return (React.createElement("div", null, mouseOverRowName && mouseCol !== undefined ? (React.createElement(Typography, null,
7
+ mouseOverRowName,
8
+ ":",
9
+ model.relativePxToBp(mouseOverRowName, mouseCol))) : null));
10
+ });
11
+ export default HeaderInfoArea;
12
+ //# sourceMappingURL=HeaderInfoArea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderInfoArea.js","sourceRoot":"","sources":["../../src/components/HeaderInfoArea.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,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,EAA2B,EAAE,EAAE;IACrE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IAC5C,OAAO,CACL,iCACG,gBAAgB,IAAI,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAC5C,oBAAC,UAAU;QACR,gBAAgB;;QAAG,KAAK,CAAC,cAAc,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CACzD,CACd,CAAC,CAAC,CAAC,IAAI,CACJ,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,cAAc,CAAA"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { MsaViewModel } from '../../model';
3
+ declare const ImportFormExamples: ({ model, }: {
4
+ model: MsaViewModel;
5
+ }) => React.JSX.Element;
6
+ export default ImportFormExamples;
@@ -0,0 +1,50 @@
1
+ import React from 'react';
2
+ import { Typography, Link } from '@mui/material';
3
+ import { observer } from 'mobx-react';
4
+ import { smallTree, smallMSA, smallMSAOnly } from './data/seq2';
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))));
13
+ const ImportFormExamples = observer(function ({ model, }) {
14
+ return (React.createElement("ul", null,
15
+ React.createElement(ListItem, { model: model, onClick: () => load(model, undefined, {
16
+ uri: 'https://jbrowse.org/genomes/newick_trees/sarscov2phylo.pub.ft.nh',
17
+ locationType: 'UriLocation',
18
+ }) }, "230k COVID-19 samples (tree only)"),
19
+ React.createElement(ListItem, { model: model, onClick: () => {
20
+ model.setData({ msa: smallMSA, tree: smallTree });
21
+ } }, "Small protein MSA+tree"),
22
+ React.createElement(ListItem, { model: model, onClick: () => {
23
+ model.setData({ msa: smallMSAOnly });
24
+ } }, "Small MSA only"),
25
+ React.createElement(ListItem, { model: model, onClick: () => load(model, {
26
+ uri: 'https://jbrowse.org/genomes/multiple_sequence_alignments/pfam-cov2.stock',
27
+ locationType: 'UriLocation',
28
+ }) }, "PFAM SARS-CoV2 multi-stockholm"),
29
+ React.createElement(ListItem, { model: model, onClick: () => load(model, {
30
+ uri: 'https://jbrowse.org/genomes/multiple_sequence_alignments/Lysine.stock',
31
+ locationType: 'UriLocation',
32
+ }) }, "Lysine stockholm file"),
33
+ React.createElement(ListItem, { model: model, onClick: () => load(model, {
34
+ uri: 'https://jbrowse.org/genomes/multiple_sequence_alignments/PF01601_full.txt',
35
+ locationType: 'UriLocation',
36
+ }) }, "PF01601 stockholm file (SARS-CoV2 spike protein)"),
37
+ React.createElement(ListItem, { model: model, onClick: () => load(model, {
38
+ uri: 'https://jbrowse.org/genomes/multiple_sequence_alignments/europe_covid.fa',
39
+ locationType: 'UriLocation',
40
+ }) }, "Europe COVID full genomes (LR883044.1 and 199 other sequences)"),
41
+ React.createElement(ListItem, { model: model, onClick: () => load(model, {
42
+ uri: '/rhv_test-only.aligned_with_mafft_auto.fa',
43
+ locationType: 'UriLocation',
44
+ }, {
45
+ uri: 'https://jbrowse.org/genomes/multiple_sequence_alignments/rhv_test-only.aligned_with_mafft_auto.nh',
46
+ locationType: 'UriLocation',
47
+ }) }, "MAFFT+VeryFastTree(17.9k samples)")));
48
+ });
49
+ export default ImportFormExamples;
50
+ //# sourceMappingURL=ImportFormExamples.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImportFormExamples.js","sourceRoot":"","sources":["../../../src/components/ImportForm/ImportFormExamples.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAIrC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,MAAM,QAAQ,GAAG,CAAC,EAChB,OAAO,EACP,KAAK,EACL,QAAQ,GAKT,EAAE,EAAE,CAAC,CACJ;IACE,oBAAC,IAAI,IACH,OAAO,EAAE,KAAK,CAAC,EAAE;YACf,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;YACzB,KAAK,CAAC,cAAc,EAAE,CAAA;YACtB,OAAO,EAAE,CAAA;QACX,CAAC,EACD,IAAI,EAAC,GAAG;QAER,oBAAC,UAAU,IAAC,OAAO,EAAC,QAAQ,IAAE,QAAQ,CAAc,CAC/C,CACJ,CACN,CAAA;AAED,MAAM,kBAAkB,GAAG,QAAQ,CAAC,UAAU,EAC5C,KAAK,GAGN;IACC,OAAO,CACL;QACE,oBAAC,QAAQ,IACP,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,GAAG,EAAE,CACZ,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE;gBACrB,GAAG,EAAE,kEAAkE;gBACvE,YAAY,EAAE,aAAa;aAC5B,CAAC,wCAIK;QACX,oBAAC,QAAQ,IACP,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;YACnD,CAAC,6BAGQ;QACX,oBAAC,QAAQ,IACP,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAA;YACtC,CAAC,qBAGQ;QACX,oBAAC,QAAQ,IACP,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,GAAG,EAAE,CACZ,IAAI,CAAC,KAAK,EAAE;gBACV,GAAG,EAAE,0EAA0E;gBAC/E,YAAY,EAAE,aAAa;aAC5B,CAAC,qCAIK;QACX,oBAAC,QAAQ,IACP,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,GAAG,EAAE,CACZ,IAAI,CAAC,KAAK,EAAE;gBACV,GAAG,EAAE,uEAAuE;gBAC5E,YAAY,EAAE,aAAa;aAC5B,CAAC,4BAIK;QACX,oBAAC,QAAQ,IACP,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,GAAG,EAAE,CACZ,IAAI,CAAC,KAAK,EAAE;gBACV,GAAG,EAAE,2EAA2E;gBAChF,YAAY,EAAE,aAAa;aAC5B,CAAC,uDAIK;QACX,oBAAC,QAAQ,IACP,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,GAAG,EAAE,CACZ,IAAI,CAAC,KAAK,EAAE;gBACV,GAAG,EAAE,0EAA0E;gBAC/E,YAAY,EAAE,aAAa;aAC5B,CAAC,qEAIK;QACX,oBAAC,QAAQ,IACP,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,GAAG,EAAE,CACZ,IAAI,CACF,KAAK,EACL;gBACE,GAAG,EAAE,2CAA2C;gBAChD,YAAY,EAAE,aAAa;aAC5B,EACD;gBACE,GAAG,EAAE,mGAAmG;gBACxG,YAAY,EAAE,aAAa;aAC5B,CACF,wCAIM,CACR,CACN,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,kBAAkB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export declare const smallMSA = "CLUSTAL O(1.2.3) multiple sequence alignment\nUniProt/Swiss-Prot|P26898|IL2RA_SHEEP MEPSLLMWRFFVFIVVPGCVTEACHDDPPSLRNA----------MFKVLRYE----VGTM\nUniProt/Swiss-Prot|P01590|IL2RA_MOUSE MEPRLLMLGFLSLTIVPSCRAELCLYDPPEVPNA----------TFKALSYK----NGTI\nUniProt/Swiss-Prot|P41690|IL2RA_FELCA MEPSLLLWGILTFVVVHGHVTELCDENPPDIQHA----------TFKALTYK----TGTM\nUniProt/Swiss-Prot|P01589|IL2RA_HUMAN MDSYLLMWGLLTFIMVPGCQAELCDDDPPEIPHA----------TFKAMAYK----EGTM\nUniProt/Swiss-Prot|Q5MNY4|IL2RA_MACMU MDPYLLMWGLLTFITVPGCQAELCDDDPPKITHA----------TFKAVAYK----EGTM\nUniProt/Swiss-Prot|Q95118|IL2RG_BOVIN -----------------------------------LLMWGLLT-----------------\nUniProt/Swiss-Prot|P40321|IL2RG_CANFA MLKPPLPLRSLLFLQLSLLGVGLNSTVPMPNGNEDIT------PDFFLTATPSETLSVSS\nUniProt/Swiss-Prot|P26896|IL2RB_RAT MATVDLSWRLPLYILLLLLATT--------------------------------WVSAAV\nUniProt/Swiss-Prot|Q8BZM1|GLMN_MOUSE PLPLRSLLFLQLPLLGVGLNP------------------PLPLRSLLFLQLPLLGVGLNP\nUniProt/Swiss-Prot|P36835|IL2_CAPHI -----------LLGVGLNPKFLTP------------------------------------\nUniProt/Swiss-Prot|Q7JFM4|IL2_AOTVO MLKPPLPLRSLLFLQLPLLGVGLNPKFLTPSGNEDIGGKPGTGGDFFLTSTPAGTLDVST\nUniProt/Swiss-Prot|Q29416|IL2_CANFA --------------LFLQLSLLG-------------------------------------\n";
2
+ export declare const smallMSAOnly = "CLUSTAL O(1.2.4) multiple sequence alignment\n\n\nsp|P69905|HBA_HUMAN MVLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG\t60\nsp|P01942|HBA_MOUSE MVLSGEDKSNIKAAWGKIGGHGAEYGAEALERMFASFPTTKTYFPHFDVSHGSAQVKGHG\t60\nsp|P13786|HBAZ_CAPHI MSLTRTERTIILSLWSKISTQADVIGTETLERLFSCYPQAKTYFPHFDLHSGSAQLRAHG\t60\n * *: ::: : : *.*:. :. *:*:***:* .:* :********: ****::.**\n\nsp|P69905|HBA_HUMAN KKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTP\t120\nsp|P01942|HBA_MOUSE KKVADALASAAGHLDDLPGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLASHHPADFTP\t120\nsp|P13786|HBAZ_CAPHI SKVVAAVGDAVKSIDNVTSALSKLSELHAYVLRVDPVNFKFLSHCLLVTLASHFPADFTA\t120\n .**. *: .*. :*:: .*** **:***: *********:**********:* **:**\n\nsp|P69905|HBA_HUMAN AVHASLDKFLASVSTVLTSKYR\t142\nsp|P01942|HBA_MOUSE AVHASLDKFLASVSTVLTSKYR\t142\nsp|P13786|HBAZ_CAPHI DAHAAWDKFLSIVSGVLTEKYR\t142\n .**: ****: ** ***.***";
3
+ export declare const smallTree = "(((UniProt/Swiss-Prot|P26898|IL2RA_SHEEP:0.24036,(UniProt/Swiss-Prot|P41690|IL2RA_FELCA:0.17737,(UniProt/Swiss-Prot|P01589|IL2RA_HUMAN:0.03906,UniProt/Swiss-Prot|Q5MNY4|IL2RA_MACMU:0.03787):0.13033):0.04964):0.02189,UniProt/Swiss-Prot|P01590|IL2RA_MOUSE:0.23072):0.06814,(((UniProt/Swiss-Prot|Q95118|IL2RG_BOVIN:0.09600,UniProt/Swiss-Prot|P40321|IL2RG_CANFA:0.09845):0.25333,UniProt/Swiss-Prot|Q29416|IL2_CANFA:-0.35055):0.10231,(UniProt/Swiss-Prot|P26896|IL2RB_RAT:0.33631,UniProt/Swiss-Prot|Q7JFM4|IL2_AOTVO:-0.33631):0.10166):0.01607,(UniProt/Swiss-Prot|Q8BZM1|GLMN_MOUSE:0.32378,UniProt/Swiss-Prot|P36835|IL2_CAPHI:-0.32378):0.09999)";
@@ -0,0 +1,33 @@
1
+ export const smallMSA = `CLUSTAL O(1.2.3) multiple sequence alignment
2
+ UniProt/Swiss-Prot|P26898|IL2RA_SHEEP MEPSLLMWRFFVFIVVPGCVTEACHDDPPSLRNA----------MFKVLRYE----VGTM
3
+ UniProt/Swiss-Prot|P01590|IL2RA_MOUSE MEPRLLMLGFLSLTIVPSCRAELCLYDPPEVPNA----------TFKALSYK----NGTI
4
+ UniProt/Swiss-Prot|P41690|IL2RA_FELCA MEPSLLLWGILTFVVVHGHVTELCDENPPDIQHA----------TFKALTYK----TGTM
5
+ UniProt/Swiss-Prot|P01589|IL2RA_HUMAN MDSYLLMWGLLTFIMVPGCQAELCDDDPPEIPHA----------TFKAMAYK----EGTM
6
+ UniProt/Swiss-Prot|Q5MNY4|IL2RA_MACMU MDPYLLMWGLLTFITVPGCQAELCDDDPPKITHA----------TFKAVAYK----EGTM
7
+ UniProt/Swiss-Prot|Q95118|IL2RG_BOVIN -----------------------------------LLMWGLLT-----------------
8
+ UniProt/Swiss-Prot|P40321|IL2RG_CANFA MLKPPLPLRSLLFLQLSLLGVGLNSTVPMPNGNEDIT------PDFFLTATPSETLSVSS
9
+ UniProt/Swiss-Prot|P26896|IL2RB_RAT MATVDLSWRLPLYILLLLLATT--------------------------------WVSAAV
10
+ UniProt/Swiss-Prot|Q8BZM1|GLMN_MOUSE PLPLRSLLFLQLPLLGVGLNP------------------PLPLRSLLFLQLPLLGVGLNP
11
+ UniProt/Swiss-Prot|P36835|IL2_CAPHI -----------LLGVGLNPKFLTP------------------------------------
12
+ UniProt/Swiss-Prot|Q7JFM4|IL2_AOTVO MLKPPLPLRSLLFLQLPLLGVGLNPKFLTPSGNEDIGGKPGTGGDFFLTSTPAGTLDVST
13
+ UniProt/Swiss-Prot|Q29416|IL2_CANFA --------------LFLQLSLLG-------------------------------------
14
+ `;
15
+ export const smallMSAOnly = `CLUSTAL O(1.2.4) multiple sequence alignment
16
+
17
+
18
+ sp|P69905|HBA_HUMAN MVLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG 60
19
+ sp|P01942|HBA_MOUSE MVLSGEDKSNIKAAWGKIGGHGAEYGAEALERMFASFPTTKTYFPHFDVSHGSAQVKGHG 60
20
+ sp|P13786|HBAZ_CAPHI MSLTRTERTIILSLWSKISTQADVIGTETLERLFSCYPQAKTYFPHFDLHSGSAQLRAHG 60
21
+ * *: ::: : : *.*:. :. *:*:***:* .:* :********: ****::.**
22
+
23
+ sp|P69905|HBA_HUMAN KKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTP 120
24
+ sp|P01942|HBA_MOUSE KKVADALASAAGHLDDLPGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLASHHPADFTP 120
25
+ sp|P13786|HBAZ_CAPHI SKVVAAVGDAVKSIDNVTSALSKLSELHAYVLRVDPVNFKFLSHCLLVTLASHFPADFTA 120
26
+ .**. *: .*. :*:: .*** **:***: *********:**********:* **:**
27
+
28
+ sp|P69905|HBA_HUMAN AVHASLDKFLASVSTVLTSKYR 142
29
+ sp|P01942|HBA_MOUSE AVHASLDKFLASVSTVLTSKYR 142
30
+ sp|P13786|HBAZ_CAPHI DAHAAWDKFLSIVSGVLTEKYR 142
31
+ .**: ****: ** ***.***`;
32
+ export const smallTree = '(((UniProt/Swiss-Prot|P26898|IL2RA_SHEEP:0.24036,(UniProt/Swiss-Prot|P41690|IL2RA_FELCA:0.17737,(UniProt/Swiss-Prot|P01589|IL2RA_HUMAN:0.03906,UniProt/Swiss-Prot|Q5MNY4|IL2RA_MACMU:0.03787):0.13033):0.04964):0.02189,UniProt/Swiss-Prot|P01590|IL2RA_MOUSE:0.23072):0.06814,(((UniProt/Swiss-Prot|Q95118|IL2RG_BOVIN:0.09600,UniProt/Swiss-Prot|P40321|IL2RG_CANFA:0.09845):0.25333,UniProt/Swiss-Prot|Q29416|IL2_CANFA:-0.35055):0.10231,(UniProt/Swiss-Prot|P26896|IL2RB_RAT:0.33631,UniProt/Swiss-Prot|Q7JFM4|IL2_AOTVO:-0.33631):0.10166):0.01607,(UniProt/Swiss-Prot|Q8BZM1|GLMN_MOUSE:0.32378,UniProt/Swiss-Prot|P36835|IL2_CAPHI:-0.32378):0.09999)';
33
+ //# sourceMappingURL=seq2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seq2.js","sourceRoot":"","sources":["../../../../src/components/ImportForm/data/seq2.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;CAavB,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;iDAgBqB,CAAA;AAEjD,MAAM,CAAC,MAAM,SAAS,GACpB,+nBAA+nB,CAAA"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { MsaViewModel } from '../../model';
3
+ declare const _default: ({ model }: {
4
+ model: MsaViewModel;
5
+ }) => React.JSX.Element;
6
+ export default _default;
@@ -0,0 +1,31 @@
1
+ import React, { useState } from 'react';
2
+ import { observer } from 'mobx-react';
3
+ import { Button, Container, Grid, Typography } from '@mui/material';
4
+ import { FileSelector } from '@jbrowse/core/ui';
5
+ import { load } from './util';
6
+ import ImportFormExamples from './ImportFormExamples';
7
+ export default observer(({ model }) => {
8
+ const [msaFile, setMsaFile] = useState();
9
+ const [treeFile, setTreeFile] = useState();
10
+ const { error } = model;
11
+ return (React.createElement(Container, null,
12
+ React.createElement("div", { style: { width: '50%' } },
13
+ error ? (React.createElement("div", { style: { padding: 20 } },
14
+ React.createElement(Typography, { color: "error" },
15
+ "Error: ",
16
+ `${error}`))) : null,
17
+ React.createElement(Typography, null, "Open an MSA file (stockholm or clustal format) and/or a tree file (newick format)."),
18
+ React.createElement(Typography, { color: "error" }, "Note: you can open up just an MSA or just a tree, both are not required. Some MSA files e.g. stockholm format have an embedded tree also and this is fine, and opening a separate tree file is not required.")),
19
+ React.createElement(Grid, { container: true, spacing: 10, justifyContent: "center", alignItems: "center" },
20
+ React.createElement(Grid, { item: true },
21
+ React.createElement(Typography, null, "MSA file or URL"),
22
+ React.createElement(FileSelector, { location: msaFile, setLocation: setMsaFile }),
23
+ React.createElement(Typography, null, "Tree file or URL"),
24
+ React.createElement(FileSelector, { location: treeFile, setLocation: setTreeFile })),
25
+ React.createElement(Grid, { item: true },
26
+ React.createElement(Button, { onClick: () => load(model, msaFile, treeFile), variant: "contained", color: "primary", disabled: !msaFile && !treeFile }, "Open")),
27
+ React.createElement(Grid, { item: true },
28
+ React.createElement(Typography, null, "Examples"),
29
+ React.createElement(ImportFormExamples, { model: model })))));
30
+ });
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ImportForm/index.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"}
@@ -0,0 +1,3 @@
1
+ import { FileLocation } from '@jbrowse/core/util';
2
+ import { MsaViewModel } from '../../model';
3
+ export declare function load(model: MsaViewModel, msaFile?: FileLocation, treeFile?: FileLocation): Promise<void>;
@@ -0,0 +1,16 @@
1
+ export async function load(model, msaFile, treeFile) {
2
+ model.setError(undefined);
3
+ try {
4
+ if (msaFile) {
5
+ await model.setMSAFilehandle(msaFile);
6
+ }
7
+ if (treeFile) {
8
+ await model.setTreeFilehandle(treeFile);
9
+ }
10
+ }
11
+ catch (e) {
12
+ console.error(e);
13
+ model.setError(e);
14
+ }
15
+ }
16
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/components/ImportForm/util.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,KAAmB,EACnB,OAAsB,EACtB,QAAuB;IAEvB,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IACzB,IAAI,CAAC;QACH,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;QACvC,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAChB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { MsaViewModel } from '../model';
3
+ declare const MSACanvas: ({ model }: {
4
+ model: MsaViewModel;
5
+ }) => React.JSX.Element;
6
+ export default MSACanvas;
@@ -0,0 +1,141 @@
1
+ import React, { useEffect, useState, useCallback, useRef, useMemo } from 'react';
2
+ import { Typography, CircularProgress, useTheme } from '@material-ui/core';
3
+ import { observer } from 'mobx-react';
4
+ import normalizeWheel from 'normalize-wheel';
5
+ import { colorContrast } from '../util';
6
+ import { getClustalXColor, getPercentIdentityColor } from '../colorSchemes';
7
+ import * as PIXI from 'pixi.js';
8
+ import { Stage, Graphics } from '@inlet/react-pixi';
9
+ function Rectangle(props) {
10
+ const draw = useCallback(g => {
11
+ g.clear();
12
+ g.beginFill(props.color);
13
+ g.drawRect(props.x, props.y, props.width, props.height);
14
+ g.endFill();
15
+ }, [props]);
16
+ return React.createElement(Graphics, { draw: draw });
17
+ }
18
+ const MSABlock = observer(({ model }) => {
19
+ const { msaAreaWidth, height, colWidth, bgColor, columns, rowHeight, hierarchy, colorScheme, colorSchemeName, colStats, scrollX, } = model;
20
+ const theme = useTheme();
21
+ const contrastScheme = useMemo(() => colorContrast(colorScheme, theme), [colorScheme, theme]);
22
+ console.log({ scrollX });
23
+ return (React.createElement(Stage, { width: msaAreaWidth, height: height }, hierarchy.leaves().map(node => {
24
+ const {
25
+ //@ts-ignore
26
+ x: y,
27
+ //@ts-ignore
28
+ data: { name }, } = node;
29
+ return columns[name].split('').map((letter, i) => {
30
+ const color = colorSchemeName === 'clustalx_protein_dynamic'
31
+ ? getClustalXColor(colStats[i], model, name, i)
32
+ : colorSchemeName === 'percent_identity_dynamic'
33
+ ? getPercentIdentityColor(colStats[i], model, name, i)
34
+ : colorScheme[letter.toUpperCase()];
35
+ if (bgColor) {
36
+ const x = i * colWidth;
37
+ const hex = PIXI.utils.string2hex(color || '');
38
+ return (React.createElement(Rectangle, { key: y + '_' + x, color: hex, x: x + scrollX, y: y - rowHeight, width: colWidth, height: rowHeight }));
39
+ }
40
+ });
41
+ })));
42
+ });
43
+ const MSACanvas = observer(({ model }) => {
44
+ const { MSA, msaFilehandle } = model;
45
+ const ref = useRef(null);
46
+ // wheel
47
+ const scheduled = useRef(false);
48
+ const deltaX = useRef(0);
49
+ const deltaY = useRef(0);
50
+ // mouse click-and-drag scrolling
51
+ const prevX = useRef(0);
52
+ const prevY = useRef(0);
53
+ const [mouseDragging, setMouseDragging] = useState(false);
54
+ useEffect(() => {
55
+ const curr = ref.current;
56
+ if (!curr) {
57
+ return;
58
+ }
59
+ function onWheel(origEvent) {
60
+ const event = normalizeWheel(origEvent);
61
+ deltaX.current += event.pixelX;
62
+ deltaY.current += event.pixelY;
63
+ if (!scheduled.current) {
64
+ scheduled.current = true;
65
+ requestAnimationFrame(() => {
66
+ model.doScrollX(-deltaX.current);
67
+ model.doScrollY(-deltaY.current);
68
+ deltaX.current = 0;
69
+ deltaY.current = 0;
70
+ scheduled.current = false;
71
+ });
72
+ }
73
+ origEvent.preventDefault();
74
+ }
75
+ curr.addEventListener('wheel', onWheel);
76
+ return () => {
77
+ curr.removeEventListener('wheel', onWheel);
78
+ };
79
+ }, [model]);
80
+ useEffect(() => {
81
+ let cleanup = () => { };
82
+ function globalMouseMove(event) {
83
+ event.preventDefault();
84
+ const currX = event.clientX;
85
+ const currY = event.clientY;
86
+ const distanceX = currX - prevX.current;
87
+ const distanceY = currY - prevY.current;
88
+ if (distanceX || distanceY) {
89
+ // use rAF to make it so multiple event handlers aren't fired per-frame
90
+ // see https://calendar.perfplanet.com/2013/the-runtime-performance-checklist/
91
+ if (!scheduled.current) {
92
+ scheduled.current = true;
93
+ window.requestAnimationFrame(() => {
94
+ model.doScrollX(distanceX);
95
+ model.doScrollY(distanceY);
96
+ scheduled.current = false;
97
+ prevX.current = event.clientX;
98
+ prevY.current = event.clientY;
99
+ });
100
+ }
101
+ }
102
+ }
103
+ function globalMouseUp() {
104
+ prevX.current = 0;
105
+ if (mouseDragging) {
106
+ setMouseDragging(false);
107
+ }
108
+ }
109
+ if (mouseDragging) {
110
+ window.addEventListener('mousemove', globalMouseMove, true);
111
+ window.addEventListener('mouseup', globalMouseUp, true);
112
+ cleanup = () => {
113
+ window.removeEventListener('mousemove', globalMouseMove, true);
114
+ window.removeEventListener('mouseup', globalMouseUp, true);
115
+ };
116
+ }
117
+ return cleanup;
118
+ }, [model, mouseDragging]);
119
+ return (React.createElement("div", { ref: ref, onMouseDown: event => {
120
+ // check if clicking a draggable element or a resize handle
121
+ const target = event.target;
122
+ if (target.draggable || target.dataset.resizer) {
123
+ return;
124
+ }
125
+ // otherwise do click and drag scroll
126
+ if (event.button === 0) {
127
+ prevX.current = event.clientX;
128
+ prevY.current = event.clientY;
129
+ setMouseDragging(true);
130
+ }
131
+ }, onMouseUp: event => {
132
+ event.preventDefault();
133
+ setMouseDragging(false);
134
+ }, onMouseLeave: event => {
135
+ event.preventDefault();
136
+ } }, !MSA && !msaFilehandle ? null : !MSA ? (React.createElement("div", { style: { position: 'absolute', left: '50%', top: '50%' } },
137
+ React.createElement(CircularProgress, null),
138
+ React.createElement(Typography, null, "Loading..."))) : (React.createElement(MSABlock, { model: model }))));
139
+ });
140
+ export default MSACanvas;
141
+ //# sourceMappingURL=MSACanvas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MSACanvas.js","sourceRoot":"","sources":["../../src/components/MSACanvas.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export default function Loading(): React.JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { CircularProgress, Typography } from '@mui/material';
2
+ import React from 'react';
3
+ export default function Loading() {
4
+ return (React.createElement("div", { style: {
5
+ position: 'absolute',
6
+ left: '50%',
7
+ top: '50%',
8
+ } },
9
+ React.createElement(CircularProgress, null),
10
+ React.createElement(Typography, null, "Loading...")));
11
+ }
12
+ //# sourceMappingURL=Loading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Loading.js","sourceRoot":"","sources":["../../../src/components/MSAPanel/Loading.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,MAAM,CAAC,OAAO,UAAU,OAAO;IAC7B,OAAO,CACL,6BACE,KAAK,EAAE;YACL,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,KAAK;SACX;QAED,oBAAC,gBAAgB,OAAG;QACpB,oBAAC,UAAU,qBAAwB,CAC/B,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { MsaViewModel } from '../../model';
3
+ declare const MSABlock: ({ model, offsetX, offsetY, }: {
4
+ model: MsaViewModel;
5
+ offsetX: number;
6
+ offsetY: number;
7
+ }) => React.JSX.Element;
8
+ export default MSABlock;
@@ -0,0 +1,62 @@
1
+ import React, { useEffect, useRef, useMemo } from 'react';
2
+ import { useTheme } from '@mui/material';
3
+ import { autorun } from 'mobx';
4
+ import { observer } from 'mobx-react';
5
+ // locals
6
+ import { renderMSABlock } from './renderMSABlock';
7
+ import { colorContrast } from '../../util';
8
+ const MSABlock = observer(function ({ model, offsetX, offsetY, }) {
9
+ const { colWidth, rowHeight, scrollY, scrollX, colorScheme, blockSize, mouseClickCol, mouseClickRow, highResScaleFactor, } = model;
10
+ const theme = useTheme();
11
+ const contrastScheme = useMemo(() => colorContrast(colorScheme, theme), [colorScheme, theme]);
12
+ const ref = useRef(null);
13
+ useEffect(() => {
14
+ const ctx = ref.current?.getContext('2d');
15
+ return ctx
16
+ ? autorun(() => {
17
+ renderMSABlock({
18
+ ctx,
19
+ theme,
20
+ offsetX,
21
+ offsetY,
22
+ contrastScheme,
23
+ model,
24
+ });
25
+ })
26
+ : undefined;
27
+ }, [model, offsetX, offsetY, theme, contrastScheme]);
28
+ return (React.createElement("canvas", { ref: ref, onMouseMove: event => {
29
+ if (!ref.current) {
30
+ return;
31
+ }
32
+ const { left, top } = ref.current.getBoundingClientRect();
33
+ const mouseX = event.clientX - left + offsetX;
34
+ const mouseY = event.clientY - top + offsetY;
35
+ const x = Math.floor(mouseX / colWidth) + 1;
36
+ const y = Math.floor(mouseY / rowHeight);
37
+ model.setMousePos(x, y);
38
+ }, onClick: event => {
39
+ if (!ref.current) {
40
+ return;
41
+ }
42
+ const { left, top } = ref.current.getBoundingClientRect();
43
+ const mouseX = event.clientX - left + offsetX;
44
+ const mouseY = event.clientY - top + offsetY;
45
+ const x = Math.floor(mouseX / colWidth) + 1;
46
+ const y = Math.floor(mouseY / rowHeight);
47
+ if (x === mouseClickCol && y === mouseClickRow) {
48
+ model.setMouseClickPos(undefined, undefined);
49
+ }
50
+ else {
51
+ model.setMouseClickPos(x, y);
52
+ }
53
+ }, onMouseLeave: () => model.setMousePos(), width: blockSize * highResScaleFactor, height: blockSize * highResScaleFactor, style: {
54
+ position: 'absolute',
55
+ top: scrollY + offsetY,
56
+ left: scrollX + offsetX,
57
+ width: blockSize,
58
+ height: blockSize,
59
+ } }));
60
+ });
61
+ export default MSABlock;
62
+ //# sourceMappingURL=MSABlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MSABlock.js","sourceRoot":"","sources":["../../../src/components/MSAPanel/MSABlock.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import 'pixi.js/text-bitmap';
2
+ import React from 'react';
3
+ import { MsaViewModel } from '../../model';
4
+ declare const MSACanvas: ({ model, }: {
5
+ model: MsaViewModel;
6
+ }) => React.JSX.Element;
7
+ export default MSACanvas;
@@ -0,0 +1,69 @@
1
+ import 'pixi.js/text-bitmap';
2
+ import React, { useEffect, useMemo, useRef, useState } from 'react';
3
+ import { observer } from 'mobx-react';
4
+ import { ErrorMessage } from '@jbrowse/core/ui';
5
+ import { useTheme } from '@mui/material';
6
+ import { Application } from 'pixi.js';
7
+ import { renderMSABlock } from './renderMSABlock';
8
+ import { colorContrast } from '../../util';
9
+ // Helper Component to ensure assets are loaded for docusaurus live examples
10
+ const MSACanvas = observer(function MSACanvas2({ model, }) {
11
+ const { colorScheme, msaAreaWidth, height } = model;
12
+ const ref = useRef(null);
13
+ const [error, setError] = useState();
14
+ const theme = useTheme();
15
+ const contrastScheme = useMemo(() => colorContrast(colorScheme, theme), [colorScheme, theme]);
16
+ useEffect(() => {
17
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
18
+ ;
19
+ (async () => {
20
+ try {
21
+ if (!ref.current) {
22
+ return;
23
+ }
24
+ const app = new Application();
25
+ await app.init({
26
+ width: msaAreaWidth,
27
+ height,
28
+ canvas: ref.current,
29
+ resizeTo: ref.current,
30
+ });
31
+ const letters = [];
32
+ // for (const letter of 'ABCDEFGHIJKLMNOPQRSTUVWXYZ') {
33
+ // const x = new BitmapText({
34
+ // text: letter,
35
+ // x: msaAreaWidth * Math.random(),
36
+ // y: height * Math.random(),
37
+ // style: {
38
+ // fontFamily: 'Arial',
39
+ // fontSize: 20,
40
+ // },
41
+ // })
42
+ // letters.push(x)
43
+ // app.stage.addChild(x)
44
+ // }
45
+ // Add a ticker callback to move the sprite back and forth
46
+ // app.ticker.add(ticker => {
47
+ // for (const elt of letters) {
48
+ // elt.updateTransform({
49
+ // x: elt.x + (Math.random() - 0.5) * 1,
50
+ // y: elt.y + (Math.random() - 0.5) * 1,
51
+ // })
52
+ // }
53
+ // })
54
+ renderMSABlock({ app, contrastScheme, theme, model });
55
+ }
56
+ catch (e) {
57
+ setError(e);
58
+ console.error(e);
59
+ }
60
+ })();
61
+ }, [height, model, theme, contrastScheme, msaAreaWidth]);
62
+ const e = error;
63
+ return e ? (React.createElement(ErrorMessage, { error: e })) : (React.createElement("canvas", { onWheel: event => {
64
+ model.setScrollX(model.scrollX - event.deltaX);
65
+ model.setScrollY(model.scrollY - event.deltaY);
66
+ }, width: msaAreaWidth, height: height, ref: ref }));
67
+ });
68
+ export default MSACanvas;
69
+ //# sourceMappingURL=MSACanvas.js.map