jbrowse-plugin-msaview 1.0.17 → 2.0.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 (147) hide show
  1. package/CHANGELOG.md +10 -4
  2. package/README.md +6 -4
  3. package/dist/AddHighlightModel/GenomeMouseoverHighlight.d.ts +6 -0
  4. package/dist/AddHighlightModel/GenomeMouseoverHighlight.js +30 -0
  5. package/dist/AddHighlightModel/GenomeMouseoverHighlight.js.map +1 -0
  6. package/dist/AddHighlightModel/HighlightComponents.d.ts +7 -0
  7. package/dist/AddHighlightModel/HighlightComponents.js +12 -0
  8. package/dist/AddHighlightModel/HighlightComponents.js.map +1 -0
  9. package/dist/AddHighlightModel/MsaToGenomeHighlight.d.ts +7 -0
  10. package/dist/AddHighlightModel/MsaToGenomeHighlight.js +26 -0
  11. package/dist/AddHighlightModel/MsaToGenomeHighlight.js.map +1 -0
  12. package/dist/AddHighlightModel/index.d.ts +2 -0
  13. package/dist/AddHighlightModel/index.js +14 -0
  14. package/dist/AddHighlightModel/index.js.map +1 -0
  15. package/dist/AddHighlightModel/util.d.ts +9 -0
  16. package/dist/AddHighlightModel/util.js +14 -0
  17. package/dist/AddHighlightModel/util.js.map +1 -0
  18. package/dist/LaunchMsaView/components/LaunchMsaViewDialog.d.ts +7 -0
  19. package/dist/LaunchMsaView/components/LaunchMsaViewDialog.js +20 -0
  20. package/dist/LaunchMsaView/components/LaunchMsaViewDialog.js.map +1 -0
  21. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/NcbiBlastPanel.d.ts +8 -0
  22. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/NcbiBlastPanel.js +76 -0
  23. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/NcbiBlastPanel.js.map +1 -0
  24. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/calculateProteinSequence.d.ts +26 -0
  25. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/calculateProteinSequence.js +48 -0
  26. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/calculateProteinSequence.js.map +1 -0
  27. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/index.d.ts +2 -0
  28. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/index.js +3 -0
  29. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/index.js.map +1 -0
  30. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/ncbiBlastLaunchView.d.ts +8 -0
  31. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/ncbiBlastLaunchView.js +17 -0
  32. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/ncbiBlastLaunchView.js.map +1 -0
  33. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/useFeatureSequence.d.ts +20 -0
  34. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/useFeatureSequence.js +64 -0
  35. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/useFeatureSequence.js.map +1 -0
  36. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/util.d.ts +5 -0
  37. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/util.js +7 -0
  38. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/util.js.map +1 -0
  39. package/dist/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.d.ts +8 -0
  40. package/dist/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.js +90 -0
  41. package/dist/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.js.map +1 -0
  42. package/dist/LaunchMsaView/components/PreLoadedMSA/fetchGeneList.d.ts +1 -0
  43. package/dist/LaunchMsaView/components/PreLoadedMSA/fetchGeneList.js +12 -0
  44. package/dist/LaunchMsaView/components/PreLoadedMSA/fetchGeneList.js.map +1 -0
  45. package/dist/LaunchMsaView/components/PreLoadedMSA/preCalculatedLaunchView.d.ts +9 -0
  46. package/dist/LaunchMsaView/components/PreLoadedMSA/preCalculatedLaunchView.js +36 -0
  47. package/dist/LaunchMsaView/components/PreLoadedMSA/preCalculatedLaunchView.js.map +1 -0
  48. package/dist/LaunchMsaView/components/TabUtils.d.ts +12 -0
  49. package/dist/LaunchMsaView/components/TabUtils.js +13 -0
  50. package/dist/LaunchMsaView/components/TabUtils.js.map +1 -0
  51. package/dist/LaunchMsaView/index.d.ts +2 -0
  52. package/dist/LaunchMsaView/index.js +50 -0
  53. package/dist/LaunchMsaView/index.js.map +1 -0
  54. package/dist/LaunchMsaView/util.d.ts +5 -0
  55. package/dist/LaunchMsaView/util.js +25 -0
  56. package/dist/LaunchMsaView/util.js.map +1 -0
  57. package/dist/MsaViewPanel/components/LoadingBLAST.d.ts +6 -0
  58. package/dist/MsaViewPanel/components/LoadingBLAST.js +36 -0
  59. package/dist/MsaViewPanel/components/LoadingBLAST.js.map +1 -0
  60. package/dist/MsaViewPanel/components/MsaViewPanel.d.ts +6 -0
  61. package/dist/MsaViewPanel/components/MsaViewPanel.js +10 -0
  62. package/dist/MsaViewPanel/components/MsaViewPanel.js.map +1 -0
  63. package/dist/MsaViewPanel/components/RIDLink.d.ts +5 -0
  64. package/dist/MsaViewPanel/components/RIDLink.js +17 -0
  65. package/dist/MsaViewPanel/components/RIDLink.js.map +1 -0
  66. package/dist/MsaViewPanel/doLaunchBlast.d.ts +7 -0
  67. package/dist/MsaViewPanel/doLaunchBlast.js +27 -0
  68. package/dist/MsaViewPanel/doLaunchBlast.js.map +1 -0
  69. package/dist/MsaViewPanel/genomeToMSA.d.ts +4 -0
  70. package/dist/MsaViewPanel/genomeToMSA.js +18 -0
  71. package/dist/MsaViewPanel/genomeToMSA.js.map +1 -0
  72. package/dist/MsaViewPanel/index.d.ts +2 -0
  73. package/dist/MsaViewPanel/index.js +16 -0
  74. package/dist/MsaViewPanel/index.js.map +1 -0
  75. package/dist/MsaViewPanel/model.d.ts +596 -0
  76. package/dist/MsaViewPanel/model.js +235 -0
  77. package/dist/MsaViewPanel/model.js.map +1 -0
  78. package/dist/MsaViewPanel/msaCoordToGenomeCoord.d.ts +9 -0
  79. package/dist/MsaViewPanel/msaCoordToGenomeCoord.js +20 -0
  80. package/dist/MsaViewPanel/msaCoordToGenomeCoord.js.map +1 -0
  81. package/dist/MsaViewPanel/util.d.ts +8 -0
  82. package/dist/MsaViewPanel/util.js +7 -0
  83. package/dist/MsaViewPanel/util.js.map +1 -0
  84. package/dist/OpenInNewIcon.d.ts +3 -0
  85. package/dist/OpenInNewIcon.js +8 -0
  86. package/dist/OpenInNewIcon.js.map +1 -0
  87. package/dist/TextField2.d.ts +4 -0
  88. package/dist/TextField2.js +8 -0
  89. package/dist/TextField2.js.map +1 -0
  90. package/dist/index.d.ts +8 -8
  91. package/dist/index.js +32 -7
  92. package/dist/index.js.map +1 -0
  93. package/dist/jbrowse-plugin-msaview.umd.production.min.js +109 -1
  94. package/dist/jbrowse-plugin-msaview.umd.production.min.js.map +7 -1
  95. package/dist/utils/fetch.d.ts +4 -0
  96. package/dist/utils/fetch.js +19 -0
  97. package/dist/utils/fetch.js.map +1 -0
  98. package/dist/utils/msa.d.ts +8 -0
  99. package/dist/utils/msa.js +75 -0
  100. package/dist/utils/msa.js.map +1 -0
  101. package/dist/utils/ncbiBlast.d.ts +20 -0
  102. package/dist/utils/ncbiBlast.js +66 -0
  103. package/dist/utils/ncbiBlast.js.map +1 -0
  104. package/package.json +51 -40
  105. package/src/AddHighlightModel/GenomeMouseoverHighlight.tsx +44 -0
  106. package/src/AddHighlightModel/HighlightComponents.tsx +24 -0
  107. package/src/AddHighlightModel/MsaToGenomeHighlight.tsx +50 -0
  108. package/src/AddHighlightModel/index.tsx +27 -0
  109. package/src/AddHighlightModel/util.ts +14 -0
  110. package/src/LaunchMsaView/components/LaunchMsaViewDialog.tsx +52 -0
  111. package/src/LaunchMsaView/components/NewNCBIBlastQuery/NcbiBlastPanel.tsx +160 -0
  112. package/src/LaunchMsaView/components/NewNCBIBlastQuery/calculateProteinSequence.ts +92 -0
  113. package/src/LaunchMsaView/components/NewNCBIBlastQuery/index.tsx +2 -0
  114. package/src/LaunchMsaView/components/NewNCBIBlastQuery/ncbiBlastLaunchView.ts +28 -0
  115. package/src/LaunchMsaView/components/NewNCBIBlastQuery/useFeatureSequence.ts +85 -0
  116. package/src/LaunchMsaView/components/NewNCBIBlastQuery/util.ts +7 -0
  117. package/src/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.tsx +149 -0
  118. package/src/LaunchMsaView/components/PreLoadedMSA/fetchGeneList.ts +13 -0
  119. package/src/LaunchMsaView/components/PreLoadedMSA/preCalculatedLaunchView.ts +54 -0
  120. package/src/LaunchMsaView/components/TabUtils.tsx +30 -0
  121. package/src/LaunchMsaView/index.ts +61 -0
  122. package/src/LaunchMsaView/util.ts +30 -0
  123. package/src/MsaViewPanel/components/LoadingBLAST.tsx +59 -0
  124. package/src/MsaViewPanel/components/MsaViewPanel.tsx +22 -0
  125. package/src/MsaViewPanel/components/RIDLink.tsx +18 -0
  126. package/src/MsaViewPanel/doLaunchBlast.ts +38 -0
  127. package/src/MsaViewPanel/genomeToMSA.ts +21 -0
  128. package/src/MsaViewPanel/index.ts +19 -0
  129. package/src/MsaViewPanel/model.ts +290 -0
  130. package/src/MsaViewPanel/msaCoordToGenomeCoord.ts +29 -0
  131. package/src/MsaViewPanel/util.ts +13 -0
  132. package/src/OpenInNewIcon.tsx +11 -0
  133. package/src/TextField2.tsx +12 -0
  134. package/src/index.ts +12 -14
  135. package/src/utils/fetch.ts +25 -0
  136. package/src/utils/msa.ts +111 -0
  137. package/src/utils/ncbiBlast.ts +105 -0
  138. package/dist/config.json +0 -8
  139. package/dist/jbrowse-plugin-msaview.cjs.development.js +0 -168
  140. package/dist/jbrowse-plugin-msaview.cjs.development.js.map +0 -1
  141. package/dist/jbrowse-plugin-msaview.cjs.production.min.js +0 -2
  142. package/dist/jbrowse-plugin-msaview.cjs.production.min.js.map +0 -1
  143. package/dist/jbrowse-plugin-msaview.esm.js +0 -163
  144. package/dist/jbrowse-plugin-msaview.esm.js.map +0 -1
  145. package/dist/jbrowse-plugin-msaview.umd.development.js +0 -8641
  146. package/dist/jbrowse-plugin-msaview.umd.development.js.map +0 -1
  147. package/src/index.test.ts +0 -3
@@ -0,0 +1,235 @@
1
+ import { addDisposer, cast, types } from 'mobx-state-tree';
2
+ import { autorun } from 'mobx';
3
+ import { MSAModelF } from 'react-msaview';
4
+ import { getSession, notEmpty } from '@jbrowse/core/util';
5
+ import { BaseViewModel } from '@jbrowse/core/pluggableElementTypes';
6
+ // locals
7
+ import { doLaunchBlast } from './doLaunchBlast';
8
+ import { genomeToMSA } from './genomeToMSA';
9
+ import { msaCoordToGenomeCoord } from './msaCoordToGenomeCoord';
10
+ import { genomeToTranscriptSeqMapping } from 'g2p_mapper';
11
+ /**
12
+ * #stateModel MsaViewPlugin
13
+ * extends
14
+ * - MSAModel from https://github.com/GMOD/react-msaview
15
+ */
16
+ export default function stateModelFactory() {
17
+ return types
18
+ .compose(BaseViewModel, MSAModelF(), types.model('MsaView', {
19
+ /**
20
+ * #property
21
+ */
22
+ connectedViewId: types.maybe(types.string),
23
+ /**
24
+ * #property
25
+ */
26
+ connectedFeature: types.frozen(),
27
+ /**
28
+ * #property
29
+ */
30
+ connectedHighlights: types.array(types.model({
31
+ refName: types.string,
32
+ start: types.number,
33
+ end: types.number,
34
+ })),
35
+ /**
36
+ * #property
37
+ */
38
+ blastParams: types.frozen(),
39
+ /**
40
+ * #property
41
+ */
42
+ zoomToBaseLevel: false,
43
+ }))
44
+ .volatile(() => ({
45
+ rid: undefined,
46
+ progress: '',
47
+ error: undefined,
48
+ }))
49
+ .views(self => ({
50
+ /**
51
+ * #method
52
+ */
53
+ ungappedCoordMap(rowName, position) {
54
+ const row = self.rows.find(f => f[0] === rowName);
55
+ const seq = row?.[1];
56
+ if (seq && position < seq.length) {
57
+ let i = 0;
58
+ let j = 0;
59
+ for (; j < position; j++, i++) {
60
+ while (seq[i] === '-') {
61
+ i++;
62
+ }
63
+ }
64
+ return i;
65
+ }
66
+ return undefined;
67
+ },
68
+ }))
69
+ .views(self => ({
70
+ /**
71
+ * #getter
72
+ */
73
+ get transcriptToMsaMap() {
74
+ console.log(self.connectedFeature);
75
+ return self.connectedFeature
76
+ ? genomeToTranscriptSeqMapping(self.connectedFeature)
77
+ : undefined;
78
+ },
79
+ }))
80
+ .views(self => ({
81
+ /**
82
+ * #getter
83
+ */
84
+ get mouseCol2() {
85
+ return genomeToMSA({ model: self });
86
+ },
87
+ /**
88
+ * #getter
89
+ */
90
+ get clickCol2() {
91
+ return undefined;
92
+ },
93
+ }))
94
+ .views(self => ({
95
+ /**
96
+ * #getter
97
+ */
98
+ get processing() {
99
+ return !!self.progress;
100
+ },
101
+ /**
102
+ * #getter
103
+ */
104
+ get connectedView() {
105
+ const { views } = getSession(self);
106
+ return views.find(f => f.id === self.connectedViewId);
107
+ },
108
+ }))
109
+ .actions(self => ({
110
+ /**
111
+ * #action
112
+ */
113
+ setZoomToBaseLevel(arg) {
114
+ self.zoomToBaseLevel = arg;
115
+ },
116
+ /**
117
+ * #action
118
+ */
119
+ setError(e) {
120
+ self.error = e;
121
+ },
122
+ /**
123
+ * #action
124
+ */
125
+ setProgress(arg) {
126
+ self.progress = arg;
127
+ },
128
+ /**
129
+ * #action
130
+ */
131
+ setRid(arg) {
132
+ self.rid = arg;
133
+ },
134
+ /**
135
+ * #action
136
+ */
137
+ setConnectedHighlights(r) {
138
+ self.connectedHighlights = cast(r);
139
+ },
140
+ /**
141
+ * #action
142
+ */
143
+ addToConnectedHighlights(r) {
144
+ self.connectedHighlights.push(r);
145
+ },
146
+ /**
147
+ * #action
148
+ */
149
+ clearConnectedHighlights() {
150
+ self.connectedHighlights = cast([]);
151
+ },
152
+ /**
153
+ * #action
154
+ */
155
+ setBlastParams(args) {
156
+ self.blastParams = args;
157
+ },
158
+ }))
159
+ .views(self => ({
160
+ /**
161
+ * #method
162
+ * overrides base
163
+ */
164
+ extraViewMenuItems() {
165
+ return [
166
+ {
167
+ label: 'Zoom to base level on click?',
168
+ checked: self.zoomToBaseLevel,
169
+ type: 'checkbox',
170
+ onClick: () => self.setZoomToBaseLevel(!self.zoomToBaseLevel),
171
+ },
172
+ ];
173
+ },
174
+ /**
175
+ * #getter
176
+ */
177
+ get processing() {
178
+ return !!self.progress;
179
+ },
180
+ /**
181
+ * #getter
182
+ */
183
+ get connectedView() {
184
+ const { views } = getSession(self);
185
+ return views.find(f => f.id === self.connectedViewId);
186
+ },
187
+ }))
188
+ .actions(self => ({
189
+ afterCreate() {
190
+ addDisposer(self, autorun(async () => {
191
+ if (self.blastParams) {
192
+ self.setProgress('Submitting query');
193
+ const data = await doLaunchBlast({
194
+ self: self,
195
+ });
196
+ self.setData(data);
197
+ self.setBlastParams(undefined);
198
+ self.setProgress('');
199
+ }
200
+ }));
201
+ // this adds highlights to the genome view when mouse-ing over the MSA
202
+ addDisposer(self, autorun(() => {
203
+ const { mouseCol, mouseClickCol } = self;
204
+ const r1 = mouseCol !== undefined
205
+ ? msaCoordToGenomeCoord({ model: self, coord: mouseCol })
206
+ : undefined;
207
+ const r2 = mouseClickCol !== undefined
208
+ ? msaCoordToGenomeCoord({ model: self, coord: mouseClickCol })
209
+ : undefined;
210
+ self.setConnectedHighlights([r1, r2].filter(notEmpty));
211
+ }));
212
+ // nav to genome position after click
213
+ addDisposer(self, autorun(() => {
214
+ const { connectedView, zoomToBaseLevel, mouseClickCol } = self;
215
+ const { assemblyManager } = getSession(self);
216
+ const r2 = mouseClickCol !== undefined
217
+ ? msaCoordToGenomeCoord({ model: self, coord: mouseClickCol })
218
+ : undefined;
219
+ if (!r2 || !connectedView) {
220
+ return;
221
+ }
222
+ if (zoomToBaseLevel) {
223
+ connectedView.navTo(r2);
224
+ }
225
+ else {
226
+ const r = assemblyManager
227
+ .get(connectedView.assemblyNames[0])
228
+ ?.getCanonicalRefName(r2.refName) ?? r2.refName;
229
+ connectedView.centerAt(r2.start, r);
230
+ }
231
+ }));
232
+ },
233
+ }));
234
+ }
235
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/MsaViewPanel/model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { JBrowsePluginMsaViewModel } from './model';
2
+ export declare function msaCoordToGenomeCoord({ model, coord: mouseCol, }: {
3
+ model: JBrowsePluginMsaViewModel;
4
+ coord: number;
5
+ }): {
6
+ refName: string;
7
+ start: number;
8
+ end: number;
9
+ } | undefined;
@@ -0,0 +1,20 @@
1
+ export function msaCoordToGenomeCoord({ model, coord: mouseCol, }) {
2
+ const { transcriptToMsaMap } = model;
3
+ if (mouseCol === undefined || transcriptToMsaMap === undefined) {
4
+ return;
5
+ }
6
+ const c = mouseCol - 1;
7
+ const k1 = model.globalCoordToRowSpecificSeqCoord('QUERY', c) || 0;
8
+ const k2 = model.globalCoordToRowSpecificSeqCoord('QUERY', c + 1) || 0;
9
+ const { refName, p2g } = transcriptToMsaMap;
10
+ const s = p2g[k1];
11
+ const e = p2g[k2];
12
+ return s !== undefined && e !== undefined
13
+ ? {
14
+ refName,
15
+ start: Math.min(s, e),
16
+ end: Math.max(s, e),
17
+ }
18
+ : undefined;
19
+ }
20
+ //# sourceMappingURL=msaCoordToGenomeCoord.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"msaCoordToGenomeCoord.js","sourceRoot":"","sources":["../../src/MsaViewPanel/msaCoordToGenomeCoord.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,qBAAqB,CAAC,EACpC,KAAK,EACL,KAAK,EAAE,QAAQ,GAIhB;IACC,MAAM,EAAE,kBAAkB,EAAE,GAAG,KAAK,CAAA;IACpC,IAAI,QAAQ,KAAK,SAAS,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;QAC/D,OAAM;IACR,CAAC;IAED,MAAM,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAA;IACtB,MAAM,EAAE,GAAG,KAAK,CAAC,gCAAgC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;IAClE,MAAM,EAAE,GAAG,KAAK,CAAC,gCAAgC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;IACtE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,kBAAkB,CAAA;IAC3C,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAA;IACjB,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAA;IACjB,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;QACvC,CAAC,CAAC;YACE,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACrB,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SACpB;QACH,CAAC,CAAC,SAAS,CAAA;AACf,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { Feature } from '@jbrowse/core/util';
2
+ export declare function checkHovered(hovered: unknown): hovered is {
3
+ hoverFeature: Feature;
4
+ hoverPosition: {
5
+ coord: number;
6
+ refName: string;
7
+ };
8
+ };
@@ -0,0 +1,7 @@
1
+ export function checkHovered(hovered) {
2
+ return (!!hovered &&
3
+ typeof hovered == 'object' &&
4
+ 'hoverFeature' in hovered &&
5
+ 'hoverPosition' in hovered);
6
+ }
7
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/MsaViewPanel/util.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,YAAY,CAAC,OAAgB;IAI3C,OAAO,CACL,CAAC,CAAC,OAAO;QACT,OAAO,OAAO,IAAI,QAAQ;QAC1B,cAAc,IAAI,OAAO;QACzB,eAAe,IAAI,OAAO,CAC3B,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { SvgIconProps } from '@mui/material';
3
+ export default function OpenInNewIcon(props: SvgIconProps): React.JSX.Element;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { SvgIcon } from '@mui/material';
3
+ export default function OpenInNewIcon(props) {
4
+ return (React.createElement(SvgIcon, { ...props },
5
+ React.createElement("path", { d: "M0 0h24v24H0z", fill: "none" }),
6
+ React.createElement("path", { d: "M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z" })));
7
+ }
8
+ //# sourceMappingURL=OpenInNewIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenInNewIcon.js","sourceRoot":"","sources":["../src/OpenInNewIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,OAAO,EAAgB,MAAM,eAAe,CAAA;AAErD,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,KAAmB;IACvD,OAAO,CACL,oBAAC,OAAO,OAAK,KAAK;QAChB,8BAAM,CAAC,EAAC,eAAe,EAAC,IAAI,EAAC,MAAM,GAAG;QACtC,8BAAM,CAAC,EAAC,oIAAoI,GAAG,CACvI,CACX,CAAA;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { TextFieldProps } from '@mui/material';
3
+ declare function TextField2({ children, ...rest }: TextFieldProps): React.JSX.Element;
4
+ export default TextField2;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { TextField } from '@mui/material';
3
+ function TextField2({ children, ...rest }) {
4
+ return (React.createElement("div", null,
5
+ React.createElement(TextField, { ...rest }, children)));
6
+ }
7
+ export default TextField2;
8
+ //# sourceMappingURL=TextField2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextField2.js","sourceRoot":"","sources":["../src/TextField2.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,SAAS,EAAkB,MAAM,eAAe,CAAA;AAEzD,SAAS,UAAU,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAkB;IACvD,OAAO,CACL;QACE,oBAAC,SAAS,OAAK,IAAI,IAAG,QAAQ,CAAa,CACvC,CACP,CAAA;AACH,CAAC;AAED,eAAe,UAAU,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import Plugin from '@jbrowse/core/Plugin';
2
- import PluginManager from '@jbrowse/core/PluginManager';
3
- export default class MsaViewPlugin extends Plugin {
4
- name: string;
5
- version: any;
6
- install(pluginManager: PluginManager): void;
7
- configure(pluginManager: PluginManager): void;
8
- }
1
+ import Plugin from '@jbrowse/core/Plugin';
2
+ import PluginManager from '@jbrowse/core/PluginManager';
3
+ export default class MsaViewPlugin extends Plugin {
4
+ name: string;
5
+ version: any;
6
+ install(pluginManager: PluginManager): void;
7
+ configure(pluginManager: PluginManager): void;
8
+ }
package/dist/index.js CHANGED
@@ -1,8 +1,33 @@
1
-
2
- 'use strict'
3
-
4
- if (process.env.NODE_ENV === 'production') {
5
- module.exports = require('./jbrowse-plugin-msaview.cjs.production.min.js')
6
- } else {
7
- module.exports = require('./jbrowse-plugin-msaview.cjs.development.js')
1
+ import Plugin from '@jbrowse/core/Plugin';
2
+ import { isAbstractMenuManager } from '@jbrowse/core/util';
3
+ // icons
4
+ import GridOn from '@mui/icons-material/GridOn';
5
+ // locals
6
+ import { version } from '../package.json';
7
+ import MsaViewF from './MsaViewPanel';
8
+ import LaunchMsaViewF from './LaunchMsaView';
9
+ import AddHighlightModelF from './AddHighlightModel';
10
+ export default class MsaViewPlugin extends Plugin {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.name = 'MsaViewPlugin';
14
+ this.version = version;
15
+ }
16
+ install(pluginManager) {
17
+ MsaViewF(pluginManager);
18
+ LaunchMsaViewF(pluginManager);
19
+ AddHighlightModelF(pluginManager);
20
+ }
21
+ configure(pluginManager) {
22
+ if (isAbstractMenuManager(pluginManager.rootModel)) {
23
+ pluginManager.rootModel.appendToSubMenu(['Add'], {
24
+ label: 'Multiple sequence alignment view',
25
+ icon: GridOn,
26
+ onClick: (session) => {
27
+ session.addView('MsaView', {});
28
+ },
29
+ });
30
+ }
31
+ }
8
32
  }
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,sBAAsB,CAAA;AAEzC,OAAO,EAAwB,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAEhF,QAAQ;AACR,OAAO,MAAM,MAAM,4BAA4B,CAAA;AAE/C,SAAS;AACT,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AACrC,OAAO,cAAc,MAAM,iBAAiB,CAAA;AAC5C,OAAO,kBAAkB,MAAM,qBAAqB,CAAA;AAEpD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,MAAM;IAAjD;;QACE,SAAI,GAAG,eAAe,CAAA;QACtB,YAAO,GAAG,OAAO,CAAA;IAmBnB,CAAC;IAjBC,OAAO,CAAC,aAA4B;QAClC,QAAQ,CAAC,aAAa,CAAC,CAAA;QACvB,cAAc,CAAC,aAAa,CAAC,CAAA;QAC7B,kBAAkB,CAAC,aAAa,CAAC,CAAA;IACnC,CAAC;IAED,SAAS,CAAC,aAA4B;QACpC,IAAI,qBAAqB,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;YACnD,aAAa,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE;gBAC/C,KAAK,EAAE,kCAAkC;gBACzC,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,CAAC,OAA6B,EAAE,EAAE;oBACzC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;gBAChC,CAAC;aACF,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF"}