@jbrowse/plugin-sv-inspector 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/LICENSE +201 -0
  2. package/dist/LaunchSvInspectorView/index.d.ts +3 -0
  3. package/dist/LaunchSvInspectorView/index.js +27 -0
  4. package/dist/LaunchSvInspectorView/index.js.map +1 -0
  5. package/dist/SvInspectorView/components/CircularViewOptions.d.ts +6 -0
  6. package/dist/SvInspectorView/components/CircularViewOptions.js +22 -0
  7. package/dist/SvInspectorView/components/CircularViewOptions.js.map +1 -0
  8. package/dist/SvInspectorView/components/SvInspectorView.d.ts +6 -0
  9. package/dist/SvInspectorView/components/SvInspectorView.js +51 -0
  10. package/dist/SvInspectorView/components/SvInspectorView.js.map +1 -0
  11. package/dist/SvInspectorView/index.d.ts +3 -0
  12. package/dist/SvInspectorView/index.js +35 -0
  13. package/dist/SvInspectorView/index.js.map +1 -0
  14. package/dist/SvInspectorView/models/SvInspectorView.d.ts +881 -0
  15. package/dist/SvInspectorView/models/SvInspectorView.js +317 -0
  16. package/dist/SvInspectorView/models/SvInspectorView.js.map +1 -0
  17. package/dist/SvInspectorView/models/adhocFeatureUtils.d.ts +44 -0
  18. package/dist/SvInspectorView/models/adhocFeatureUtils.js +97 -0
  19. package/dist/SvInspectorView/models/adhocFeatureUtils.js.map +1 -0
  20. package/dist/SvInspectorView/models/breakpointSplitViewFromTableRow.d.ts +4 -0
  21. package/dist/SvInspectorView/models/breakpointSplitViewFromTableRow.js +49 -0
  22. package/dist/SvInspectorView/models/breakpointSplitViewFromTableRow.js.map +1 -0
  23. package/dist/index.d.ts +7 -0
  24. package/dist/index.js +35 -0
  25. package/dist/index.js.map +1 -0
  26. package/esm/LaunchSvInspectorView/index.d.ts +3 -0
  27. package/esm/LaunchSvInspectorView/index.js +25 -0
  28. package/esm/LaunchSvInspectorView/index.js.map +1 -0
  29. package/esm/SvInspectorView/components/CircularViewOptions.d.ts +6 -0
  30. package/esm/SvInspectorView/components/CircularViewOptions.js +17 -0
  31. package/esm/SvInspectorView/components/CircularViewOptions.js.map +1 -0
  32. package/esm/SvInspectorView/components/SvInspectorView.d.ts +6 -0
  33. package/esm/SvInspectorView/components/SvInspectorView.js +46 -0
  34. package/esm/SvInspectorView/components/SvInspectorView.js.map +1 -0
  35. package/esm/SvInspectorView/index.d.ts +3 -0
  36. package/esm/SvInspectorView/index.js +30 -0
  37. package/esm/SvInspectorView/index.js.map +1 -0
  38. package/esm/SvInspectorView/models/SvInspectorView.d.ts +881 -0
  39. package/esm/SvInspectorView/models/SvInspectorView.js +312 -0
  40. package/esm/SvInspectorView/models/SvInspectorView.js.map +1 -0
  41. package/esm/SvInspectorView/models/adhocFeatureUtils.d.ts +44 -0
  42. package/esm/SvInspectorView/models/adhocFeatureUtils.js +90 -0
  43. package/esm/SvInspectorView/models/adhocFeatureUtils.js.map +1 -0
  44. package/esm/SvInspectorView/models/breakpointSplitViewFromTableRow.d.ts +4 -0
  45. package/esm/SvInspectorView/models/breakpointSplitViewFromTableRow.js +42 -0
  46. package/esm/SvInspectorView/models/breakpointSplitViewFromTableRow.js.map +1 -0
  47. package/esm/index.d.ts +7 -0
  48. package/esm/index.js +29 -0
  49. package/esm/index.js.map +1 -0
  50. package/package.json +62 -0
  51. package/src/LaunchSvInspectorView/index.ts +41 -0
  52. package/src/SvInspectorView/components/CircularViewOptions.tsx +47 -0
  53. package/src/SvInspectorView/components/SvInspectorView.tsx +81 -0
  54. package/src/SvInspectorView/index.ts +41 -0
  55. package/src/SvInspectorView/models/SvInspectorView.ts +406 -0
  56. package/src/SvInspectorView/models/adhocFeatureUtils.js +152 -0
  57. package/src/SvInspectorView/models/breakpointSplitViewFromTableRow.js +84 -0
  58. package/src/index.ts +34 -0
@@ -0,0 +1,312 @@
1
+ import clone from 'clone';
2
+ import { autorun, reaction } from 'mobx';
3
+ import { types, getParent, addDisposer } from 'mobx-state-tree';
4
+ import { getSession } from '@jbrowse/core/util';
5
+ import { readConfObject } from '@jbrowse/core/configuration';
6
+ import { ElementId } from '@jbrowse/core/util/types/mst';
7
+ import { BaseViewModel } from '@jbrowse/core/pluggableElementTypes/models';
8
+ // icons
9
+ import OpenInNewIcon from '@mui/icons-material/OpenInNew';
10
+ import FolderOpenIcon from '@mui/icons-material/FolderOpen';
11
+ // locals
12
+ import { canOpenBreakpointSplitViewFromTableRow, openBreakpointSplitViewFromTableRow, getFeatureForRow, } from './breakpointSplitViewFromTableRow';
13
+ /**
14
+ * #stateModel SvInspectorView
15
+ * #category view
16
+ * combination of a spreadsheetview and a circularview
17
+ */
18
+ function SvInspectorViewF(pluginManager) {
19
+ const SpreadsheetViewType = pluginManager.getViewType('SpreadsheetView');
20
+ const CircularViewType = pluginManager.getViewType('CircularView');
21
+ const SpreadsheetModel = SpreadsheetViewType.stateModel;
22
+ const CircularModel = CircularViewType.stateModel;
23
+ const minHeight = 400;
24
+ const defaultHeight = 550;
25
+ const headerHeight = 52;
26
+ const circularViewOptionsBarHeight = 52;
27
+ return types
28
+ .compose(BaseViewModel, types.model('SvInspectorView', {
29
+ /**
30
+ * #property
31
+ */
32
+ id: ElementId,
33
+ /**
34
+ * #property
35
+ */
36
+ type: types.literal('SvInspectorView'),
37
+ /**
38
+ * #property
39
+ */
40
+ height: types.optional(types.refinement('SvInspectorViewHeight', types.number, n => n >= minHeight), defaultHeight),
41
+ /**
42
+ * #property
43
+ */
44
+ onlyDisplayRelevantRegionsInCircularView: false,
45
+ /**
46
+ * #property
47
+ * switch specifying whether we are showing the import wizard or the
48
+ * spreadsheet in our viewing area
49
+ */
50
+ mode: types.optional(types.enumeration('SvInspectorViewMode', ['import', 'display']), 'import'),
51
+ /**
52
+ * #property
53
+ */
54
+ spreadsheetView: types.optional(SpreadsheetModel, () => SpreadsheetModel.create({
55
+ type: 'SpreadsheetView',
56
+ hideVerticalResizeHandle: true,
57
+ })),
58
+ /**
59
+ * #property
60
+ */
61
+ circularView: types.optional(CircularModel, () => CircularModel.create({
62
+ type: 'CircularView',
63
+ hideVerticalResizeHandle: true,
64
+ hideTrackSelectorButton: true,
65
+ disableImportForm: true,
66
+ })),
67
+ }))
68
+ .volatile(() => ({
69
+ width: 800,
70
+ }))
71
+ .views(self => ({
72
+ /**
73
+ * #getter
74
+ */
75
+ get selectedRows() {
76
+ // @ts-expect-error
77
+ return self.spreadsheetView.rowSet.selectedRows;
78
+ },
79
+ /**
80
+ * #getter
81
+ */
82
+ get assemblyName() {
83
+ const { assembly } = self.spreadsheetView;
84
+ return assembly ? readConfObject(assembly, 'name') : undefined;
85
+ },
86
+ /**
87
+ * #getter
88
+ */
89
+ get showCircularView() {
90
+ return self.spreadsheetView.mode === 'display';
91
+ },
92
+ /**
93
+ * #getter
94
+ */
95
+ get features() {
96
+ const session = getSession(self);
97
+ const { spreadsheetView } = self;
98
+ const { outputRows = [] } = spreadsheetView;
99
+ return outputRows
100
+ .map((r, i) => getFeatureForRow(session, spreadsheetView, r, i))
101
+ .filter(f => !!f);
102
+ },
103
+ /**
104
+ * #getter
105
+ */
106
+ get featuresAdapterConfigSnapshot() {
107
+ return {
108
+ type: 'FromConfigAdapter',
109
+ features: this.features,
110
+ };
111
+ },
112
+ /**
113
+ * #getter
114
+ */
115
+ get featureRefNames() {
116
+ const refs = this.features.map(r => r.refName);
117
+ const CHR2 = this.features.flatMap(r => { var _a; return (_a = r.INFO) === null || _a === void 0 ? void 0 : _a.CHR2; }).filter(f => !!f);
118
+ return [...refs, ...CHR2];
119
+ },
120
+ /**
121
+ * #getter
122
+ */
123
+ get featuresCircularTrackConfiguration() {
124
+ return {
125
+ type: 'VariantTrack',
126
+ trackId: `sv-inspector-variant-track-${self.id}`,
127
+ name: 'features from tabular data',
128
+ adapter: this.featuresAdapterConfigSnapshot,
129
+ assemblyNames: [this.assemblyName],
130
+ displays: [
131
+ {
132
+ type: 'ChordVariantDisplay',
133
+ displayId: `sv-inspector-variant-track-chord-display-${self.id}`,
134
+ onChordClick: `jexl:defaultOnChordClick(feature, track, pluginManager)`,
135
+ renderer: { type: 'StructuralVariantChordRenderer' },
136
+ },
137
+ ],
138
+ };
139
+ },
140
+ }))
141
+ .volatile(() => ({
142
+ SpreadsheetViewReactComponent: SpreadsheetViewType.ReactComponent,
143
+ CircularViewReactComponent: CircularViewType.ReactComponent,
144
+ circularViewOptionsBarHeight,
145
+ }))
146
+ .actions(self => ({
147
+ /**
148
+ * #action
149
+ */
150
+ setWidth(newWidth) {
151
+ self.width = newWidth;
152
+ },
153
+ /**
154
+ * #action
155
+ */
156
+ setHeight(newHeight) {
157
+ self.height = newHeight > minHeight ? newHeight : minHeight;
158
+ return self.height;
159
+ },
160
+ /**
161
+ * #action
162
+ */
163
+ setImportMode() {
164
+ self.spreadsheetView.setImportMode();
165
+ },
166
+ /**
167
+ * #action
168
+ */
169
+ setDisplayMode() {
170
+ self.spreadsheetView.setDisplayMode();
171
+ },
172
+ /**
173
+ * #action
174
+ */
175
+ closeView() {
176
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
177
+ getParent(self, 2).removeView(self);
178
+ },
179
+ /**
180
+ * #action
181
+ */
182
+ setDisplayedRegions(regions) {
183
+ self.circularView.setDisplayedRegions(regions);
184
+ },
185
+ /**
186
+ * #action
187
+ */
188
+ setOnlyDisplayRelevantRegionsInCircularView(val) {
189
+ self.onlyDisplayRelevantRegionsInCircularView = Boolean(val);
190
+ },
191
+ }))
192
+ .views(self => ({
193
+ /**
194
+ * #method
195
+ */
196
+ menuItems() {
197
+ return [
198
+ {
199
+ label: 'Return to import form',
200
+ onClick: () => self.setImportMode(),
201
+ icon: FolderOpenIcon,
202
+ },
203
+ ];
204
+ },
205
+ }))
206
+ .actions(self => ({
207
+ /**
208
+ * #action
209
+ */
210
+ resizeHeight(distance) {
211
+ const oldHeight = self.height;
212
+ const newHeight = self.setHeight(self.height + distance);
213
+ return newHeight - oldHeight;
214
+ },
215
+ afterAttach() {
216
+ // synchronize subview widths
217
+ addDisposer(self, autorun(() => {
218
+ const borderWidth = 1;
219
+ if (self.showCircularView) {
220
+ const spreadsheetWidth = Math.round(self.width * 0.66);
221
+ const circularViewWidth = self.width - spreadsheetWidth;
222
+ self.spreadsheetView.setWidth(spreadsheetWidth - borderWidth);
223
+ self.circularView.setWidth(circularViewWidth);
224
+ }
225
+ else {
226
+ self.spreadsheetView.setWidth(self.width);
227
+ }
228
+ }, { name: 'SvInspectorView width binding' }));
229
+ // synchronize subview heights
230
+ addDisposer(self, autorun(() => {
231
+ self.spreadsheetView.setHeight(self.height - headerHeight);
232
+ self.circularView.setHeight(self.height - headerHeight - circularViewOptionsBarHeight);
233
+ }, { name: 'SvInspectorView height binding' }));
234
+ // bind circularview displayedRegions to spreadsheet assembly, mediated
235
+ // by the onlyRelevantRegions toggle
236
+ addDisposer(self, autorun(async () => {
237
+ const { assemblyName, onlyDisplayRelevantRegionsInCircularView, circularView, featureRefNames, } = self;
238
+ const { tracks } = circularView;
239
+ const { assemblyManager } = getSession(self);
240
+ if (!assemblyName) {
241
+ return;
242
+ }
243
+ const asm = await assemblyManager.waitForAssembly(assemblyName);
244
+ if (!asm) {
245
+ return;
246
+ }
247
+ const { getCanonicalRefName, regions = [] } = asm;
248
+ if (onlyDisplayRelevantRegionsInCircularView) {
249
+ if (tracks.length === 1) {
250
+ try {
251
+ // canonicalize the store's ref names if necessary
252
+ const refSet = new Set(featureRefNames.map(r => getCanonicalRefName(r) || r));
253
+ circularView.setDisplayedRegions(clone(regions.filter(r => refSet.has(r.refName))));
254
+ }
255
+ catch (e) {
256
+ circularView.setError(e);
257
+ }
258
+ }
259
+ }
260
+ else {
261
+ circularView.setDisplayedRegions(regions);
262
+ }
263
+ }, { name: 'SvInspectorView displayed regions bind' }));
264
+ // bind circularview tracks to our track snapshot view
265
+ addDisposer(self, reaction(() => ({
266
+ generatedTrackConf: self === null || self === void 0 ? void 0 : self.featuresCircularTrackConfiguration,
267
+ assemblyName: self === null || self === void 0 ? void 0 : self.assemblyName,
268
+ }), data => {
269
+ if (!data) {
270
+ return;
271
+ }
272
+ const { assemblyName, generatedTrackConf } = data;
273
+ const { circularView } = self;
274
+ // hide any visible tracks
275
+ circularView.tracks.forEach(t => circularView.hideTrack(t.configuration.trackId));
276
+ // put our track in as the only track
277
+ if (assemblyName && generatedTrackConf) {
278
+ // @ts-expect-error
279
+ circularView.addTrackConf(generatedTrackConf, {
280
+ assemblyName,
281
+ });
282
+ }
283
+ }, {
284
+ name: 'SvInspectorView track configuration binding',
285
+ fireImmediately: true,
286
+ }));
287
+ // bind spreadsheetView row menu actions to us
288
+ addDisposer(self, autorun(() => {
289
+ self.spreadsheetView.setRowMenuItems(
290
+ // these are the MenuItem entries for the row menu actions in the
291
+ // spreadsheet view. these are installed into the child
292
+ // SpreadsheetView using an autorun below
293
+ [
294
+ {
295
+ label: 'Open split detail view',
296
+ icon: OpenInNewIcon,
297
+ // @ts-expect-error
298
+ disabled(spreadsheetView, spreadsheet, rowNumber, row) {
299
+ return !canOpenBreakpointSplitViewFromTableRow(self, spreadsheetView, spreadsheet, row, rowNumber);
300
+ },
301
+ // @ts-expect-error
302
+ onClick(spreadsheetView, spreadsheet, rowNumber, row) {
303
+ openBreakpointSplitViewFromTableRow(self, spreadsheetView, spreadsheet, row, rowNumber);
304
+ },
305
+ },
306
+ ]);
307
+ }));
308
+ },
309
+ }));
310
+ }
311
+ export default SvInspectorViewF;
312
+ //# sourceMappingURL=SvInspectorView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvInspectorView.js","sourceRoot":"","sources":["../../../src/SvInspectorView/models/SvInspectorView.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ export function makeAdHocFeature(columns: any, columnsAlreadyUsedInLocations: any, row: any, loc1: any, loc2: any, rowNumber: any): {
2
+ uniqueId: string;
3
+ refName: any;
4
+ start: any;
5
+ end: any;
6
+ mate: {
7
+ refName: any;
8
+ start: any;
9
+ end: any;
10
+ };
11
+ };
12
+ export function makeAdHocSvFeatureFromTwoLocations(columns: any, locationColumnNumbers: any, row: any, rowNumber: any, isValidRefName: any): {
13
+ uniqueId: string;
14
+ refName: any;
15
+ start: any;
16
+ end: any;
17
+ mate: {
18
+ refName: any;
19
+ start: any;
20
+ end: any;
21
+ };
22
+ };
23
+ export function makeAdHocSvFeatureFromTwoRefStartEndSets(columns: any, locRefColumnNumbers: any, locStartColumnNumbers: any, locEndColumnNumbers: any, row: any, rowNumber: any): {
24
+ uniqueId: string;
25
+ refName: any;
26
+ start: any;
27
+ end: any;
28
+ mate: {
29
+ refName: any;
30
+ start: any;
31
+ end: any;
32
+ };
33
+ };
34
+ export function makeAdHocSvFeature(sheet: any, rowNumber: any, row: any, isValidRefName: any): {
35
+ uniqueId: string;
36
+ refName: any;
37
+ start: any;
38
+ end: any;
39
+ mate: {
40
+ refName: any;
41
+ start: any;
42
+ end: any;
43
+ };
44
+ } | undefined;
@@ -0,0 +1,90 @@
1
+ // this file contains the rather verbose functions for
2
+ // creating features from CSV/TSV lines
3
+ import { parseLocString } from '@jbrowse/core/util';
4
+ export function makeAdHocFeature(columns, columnsAlreadyUsedInLocations, row, loc1, loc2, rowNumber) {
5
+ // load all the other data in the row into an `otherData` object
6
+ const otherData = {};
7
+ columns.forEach((column, columnNumber) => {
8
+ if (columnsAlreadyUsedInLocations.includes(columnNumber)) {
9
+ return;
10
+ }
11
+ let { text } = row.cells[columnNumber];
12
+ if (column.dataType.type === 'Number') {
13
+ text = parseFloat(text);
14
+ }
15
+ otherData[column.name] = text;
16
+ });
17
+ // make the final feature data out of otherData + the parsed locations
18
+ return {
19
+ ...otherData,
20
+ uniqueId: `sv-inspector-adhoc-${rowNumber}`,
21
+ refName: loc1.refName,
22
+ start: loc1.start,
23
+ end: loc1.end,
24
+ mate: {
25
+ refName: loc2.refName,
26
+ start: loc2.start,
27
+ end: loc2.end,
28
+ },
29
+ };
30
+ }
31
+ export function makeAdHocSvFeatureFromTwoLocations(columns, locationColumnNumbers, row, rowNumber, isValidRefName) {
32
+ // use the first two locations we found (first according to *displayed* order)
33
+ const loc1 = parseLocString(row.cells[locationColumnNumbers[0]].text, isValidRefName);
34
+ const loc2 = parseLocString(row.cells[locationColumnNumbers[1]].text, isValidRefName);
35
+ const columnsAlreadyUsedInLocations = [
36
+ locationColumnNumbers[0],
37
+ locationColumnNumbers[1],
38
+ ];
39
+ return makeAdHocFeature(columns, columnsAlreadyUsedInLocations, row, loc1, loc2, rowNumber);
40
+ }
41
+ export function makeAdHocSvFeatureFromTwoRefStartEndSets(columns, locRefColumnNumbers, locStartColumnNumbers, locEndColumnNumbers, row, rowNumber) {
42
+ const textOf = colno => row.cells[colno].text;
43
+ const loc1 = {
44
+ refName: textOf(locRefColumnNumbers[0]),
45
+ start: parseInt(textOf(locStartColumnNumbers[0]), 10) - 1,
46
+ end: parseInt(textOf(locEndColumnNumbers[0]), 10),
47
+ };
48
+ const loc2 = {
49
+ refName: textOf(locRefColumnNumbers[1]),
50
+ start: parseInt(textOf(locStartColumnNumbers[1]), 10) - 1,
51
+ end: parseInt(textOf(locEndColumnNumbers[1]), 10),
52
+ };
53
+ const columnsAlreadyUsedInLocations = [
54
+ locRefColumnNumbers[0],
55
+ locStartColumnNumbers[0],
56
+ locEndColumnNumbers[0],
57
+ locRefColumnNumbers[1],
58
+ locStartColumnNumbers[1],
59
+ locEndColumnNumbers[1],
60
+ ];
61
+ return makeAdHocFeature(columns, columnsAlreadyUsedInLocations, row, loc1, loc2, rowNumber);
62
+ }
63
+ // makes a feature data object (passed as `data` to a SimpleFeature constructor)
64
+ // out of table row if the row has 2 location columns. undefined if not
65
+ export function makeAdHocSvFeature(sheet, rowNumber, row, isValidRefName) {
66
+ const { columns, columnDisplayOrder } = sheet;
67
+ const columnTypes = {};
68
+ columnDisplayOrder.forEach(columnNumber => {
69
+ const columnDefinition = columns[columnNumber];
70
+ if (!columnTypes[columnDefinition.dataType.type]) {
71
+ columnTypes[columnDefinition.dataType.type] = [];
72
+ }
73
+ columnTypes[columnDefinition.dataType.type].push(columnNumber);
74
+ });
75
+ const locationColumnNumbers = columnTypes.LocString || [];
76
+ const locStartColumnNumbers = columnTypes.LocStart || [];
77
+ const locEndColumnNumbers = columnTypes.LocEnd || [];
78
+ const locRefColumnNumbers = columnTypes.LocRef || [];
79
+ // if we have 2 or more columns of type location, make a feature from them
80
+ if (locationColumnNumbers.length >= 2) {
81
+ return makeAdHocSvFeatureFromTwoLocations(columns, locationColumnNumbers, row, rowNumber, isValidRefName);
82
+ }
83
+ if (locRefColumnNumbers.length >= 2 &&
84
+ locStartColumnNumbers.length >= 2 &&
85
+ locEndColumnNumbers.length >= 2) {
86
+ return makeAdHocSvFeatureFromTwoRefStartEndSets(columns, locRefColumnNumbers, locStartColumnNumbers, locEndColumnNumbers, row, rowNumber);
87
+ }
88
+ return undefined;
89
+ }
90
+ //# sourceMappingURL=adhocFeatureUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adhocFeatureUtils.js","sourceRoot":"","sources":["../../../src/SvInspectorView/models/adhocFeatureUtils.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export function getFeatureForRow(session: any, spreadsheetView: any, row: any, rowNumber: any): any;
2
+ export function breakpointSplitViewSnapshotFromTableRow(svInspectorView: any, spreadsheetView: any, spreadsheet: any, row: any, rowNumber: any): any;
3
+ export function openBreakpointSplitViewFromTableRow(svInspectorView: any, spreadsheetView: any, spreadsheet: any, row: any, rowNumber: any): void;
4
+ export function canOpenBreakpointSplitViewFromTableRow(svInspectorView: any, spreadsheetView: any, spreadsheet: any, row: any, rowNumber: any): boolean;
@@ -0,0 +1,42 @@
1
+ import { SimpleFeature, getEnv, getSession } from '@jbrowse/core/util';
2
+ import { makeAdHocSvFeature } from './adhocFeatureUtils';
3
+ export function getFeatureForRow(session, spreadsheetView, row, rowNumber) {
4
+ var _a, _b;
5
+ return (((_a = row.extendedData) === null || _a === void 0 ? void 0 : _a.vcfFeature) ||
6
+ ((_b = row.extendedData) === null || _b === void 0 ? void 0 : _b.feature) ||
7
+ makeAdHocSvFeature(spreadsheetView.spreadsheet, rowNumber, row, session.assemblyManager.isValidRefName));
8
+ }
9
+ export function breakpointSplitViewSnapshotFromTableRow(svInspectorView, spreadsheetView, spreadsheet, row, rowNumber) {
10
+ const { pluginManager } = getEnv(svInspectorView);
11
+ const session = getSession(spreadsheetView);
12
+ const featureData = getFeatureForRow(session, spreadsheet, row, rowNumber);
13
+ if (featureData) {
14
+ const feature = new SimpleFeature(featureData);
15
+ session.setSelection(feature);
16
+ return pluginManager
17
+ .getViewType('BreakpointSplitView')
18
+ .snapshotFromBreakendFeature(feature, svInspectorView.circularView);
19
+ }
20
+ return undefined;
21
+ }
22
+ export function openBreakpointSplitViewFromTableRow(svInspectorView, spreadsheetView, spreadsheet, row, rowNumber) {
23
+ const viewSnapshot = breakpointSplitViewSnapshotFromTableRow(svInspectorView, spreadsheetView, spreadsheet, row, rowNumber);
24
+ if (viewSnapshot) {
25
+ // try to center the offsetPx
26
+ const { circularView } = svInspectorView;
27
+ viewSnapshot.views[0].offsetPx -= circularView.width / 2 + 100;
28
+ viewSnapshot.views[1].offsetPx -= circularView.width / 2 + 100;
29
+ const session = getSession(spreadsheetView);
30
+ session.addView('BreakpointSplitView', viewSnapshot);
31
+ }
32
+ }
33
+ export function canOpenBreakpointSplitViewFromTableRow(svInspectorView, spreadsheetView, spreadsheet, row, rowNumber) {
34
+ try {
35
+ return Boolean(breakpointSplitViewSnapshotFromTableRow(svInspectorView, spreadsheetView, spreadsheet, row, rowNumber));
36
+ }
37
+ catch (e) {
38
+ console.error('Unable to open breakpoint split view from table row', e);
39
+ return false;
40
+ }
41
+ }
42
+ //# sourceMappingURL=breakpointSplitViewFromTableRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breakpointSplitViewFromTableRow.js","sourceRoot":"","sources":["../../../src/SvInspectorView/models/breakpointSplitViewFromTableRow.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAExD,MAAM,UAAU,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,SAAS;;IACvE,OAAO,CACL,CAAA,MAAA,GAAG,CAAC,YAAY,0CAAE,UAAU;SAC5B,MAAA,GAAG,CAAC,YAAY,0CAAE,OAAO,CAAA;QACzB,kBAAkB,CAChB,eAAe,CAAC,WAAW,EAC3B,SAAS,EACT,GAAG,EACH,OAAO,CAAC,eAAe,CAAC,cAAc,CACvC,CACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,uCAAuC,CACrD,eAAe,EACf,eAAe,EACf,WAAW,EACX,GAAG,EACH,SAAS;IAET,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,eAAe,CAAC,CAAA;IACjD,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,CAAC,CAAA;IAC3C,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;IAE1E,IAAI,WAAW,EAAE;QACf,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAA;QAC9C,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAC7B,OAAO,aAAa;aACjB,WAAW,CAAC,qBAAqB,CAAC;aAClC,2BAA2B,CAAC,OAAO,EAAE,eAAe,CAAC,YAAY,CAAC,CAAA;KACtE;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,eAAe,EACf,eAAe,EACf,WAAW,EACX,GAAG,EACH,SAAS;IAET,MAAM,YAAY,GAAG,uCAAuC,CAC1D,eAAe,EACf,eAAe,EACf,WAAW,EACX,GAAG,EACH,SAAS,CACV,CAAA;IACD,IAAI,YAAY,EAAE;QAChB,6BAA6B;QAC7B,MAAM,EAAE,YAAY,EAAE,GAAG,eAAe,CAAA;QACxC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,YAAY,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,CAAA;QAC9D,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,YAAY,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,CAAA;QAE9D,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,CAAC,CAAA;QAC3C,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAA;KACrD;AACH,CAAC;AAED,MAAM,UAAU,sCAAsC,CACpD,eAAe,EACf,eAAe,EACf,WAAW,EACX,GAAG,EACH,SAAS;IAET,IAAI;QACF,OAAO,OAAO,CACZ,uCAAuC,CACrC,eAAe,EACf,eAAe,EACf,WAAW,EACX,GAAG,EACH,SAAS,CACV,CACF,CAAA;KACF;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,qDAAqD,EAAE,CAAC,CAAC,CAAA;QACvE,OAAO,KAAK,CAAA;KACb;AACH,CAAC"}
package/esm/index.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager';
2
+ import Plugin from '@jbrowse/core/Plugin';
3
+ export default class SvInspectorViewPlugin extends Plugin {
4
+ name: string;
5
+ install(pluginManager: PluginManager): void;
6
+ configure(pluginManager: PluginManager): void;
7
+ }
package/esm/index.js ADDED
@@ -0,0 +1,29 @@
1
+ import Plugin from '@jbrowse/core/Plugin';
2
+ import { isAbstractMenuManager, } from '@jbrowse/core/util/types';
3
+ // icons
4
+ import TableChartIcon from '@mui/icons-material/TableChart';
5
+ // locals
6
+ import SvInspectorViewF from './SvInspectorView';
7
+ import LaunchSvInspectorViewF from './LaunchSvInspectorView';
8
+ export default class SvInspectorViewPlugin extends Plugin {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.name = 'SvInspectorViewPlugin';
12
+ }
13
+ install(pluginManager) {
14
+ SvInspectorViewF(pluginManager);
15
+ LaunchSvInspectorViewF(pluginManager);
16
+ }
17
+ configure(pluginManager) {
18
+ if (isAbstractMenuManager(pluginManager.rootModel)) {
19
+ pluginManager.rootModel.appendToSubMenu(['Add'], {
20
+ label: 'SV inspector',
21
+ icon: TableChartIcon,
22
+ onClick: (session) => {
23
+ session.addView('SvInspectorView', {});
24
+ },
25
+ });
26
+ }
27
+ }
28
+ }
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,sBAAsB,CAAA;AACzC,OAAO,EAEL,qBAAqB,GACtB,MAAM,0BAA0B,CAAA;AAEjC,QAAQ;AACR,OAAO,cAAc,MAAM,gCAAgC,CAAA;AAE3D,SAAS;AACT,OAAO,gBAAgB,MAAM,mBAAmB,CAAA;AAChD,OAAO,sBAAsB,MAAM,yBAAyB,CAAA;AAE5D,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,MAAM;IAAzD;;QACE,SAAI,GAAG,uBAAuB,CAAA;IAkBhC,CAAC;IAhBC,OAAO,CAAC,aAA4B;QAClC,gBAAgB,CAAC,aAAa,CAAC,CAAA;QAC/B,sBAAsB,CAAC,aAAa,CAAC,CAAA;IACvC,CAAC;IAED,SAAS,CAAC,aAA4B;QACpC,IAAI,qBAAqB,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE;YAClD,aAAa,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE;gBAC/C,KAAK,EAAE,cAAc;gBACrB,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,CAAC,OAA6B,EAAE,EAAE;oBACzC,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAA;gBACxC,CAAC;aACF,CAAC,CAAA;SACH;IACH,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "@jbrowse/plugin-sv-inspector",
3
+ "version": "2.6.1",
4
+ "description": "JBrowse 2 SV inspector view",
5
+ "keywords": [
6
+ "jbrowse",
7
+ "jbrowse2"
8
+ ],
9
+ "license": "Apache-2.0",
10
+ "homepage": "https://jbrowse.org",
11
+ "bugs": "https://github.com/GMOD/jbrowse-components/issues",
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "https://github.com/GMOD/jbrowse-components.git",
15
+ "directory": "plugins/sv-inspector"
16
+ },
17
+ "author": "JBrowse Team",
18
+ "distMain": "dist/index.js",
19
+ "srcMain": "src/index.ts",
20
+ "main": "dist/index.js",
21
+ "files": [
22
+ "dist",
23
+ "src",
24
+ "esm"
25
+ ],
26
+ "scripts": {
27
+ "build": "npm-run-all build:*",
28
+ "test": "cd ../..; jest plugins/sv-inspector",
29
+ "prepublishOnly": "yarn test",
30
+ "prepack": "yarn build && yarn useDist",
31
+ "postpack": "yarn useSrc",
32
+ "useDist": "node ../../scripts/useDist.js",
33
+ "useSrc": "node ../../scripts/useSrc.js",
34
+ "prebuild": "npm run clean",
35
+ "build:esm": "tsc --build tsconfig.build.esm.json",
36
+ "build:es5": "tsc --build tsconfig.build.es5.json",
37
+ "clean": "rimraf dist esm *.tsbuildinfo"
38
+ },
39
+ "dependencies": {
40
+ "@mui/icons-material": "^5.0.1",
41
+ "clone": "^2.1.2"
42
+ },
43
+ "peerDependencies": {
44
+ "@jbrowse/core": "^2.0.0",
45
+ "@jbrowse/plugin-circular-view": "^2.0.0",
46
+ "@jbrowse/plugin-spreadsheet-view": "^2.0.0",
47
+ "@mui/material": "^5.0.0",
48
+ "mobx": "^6.0.0",
49
+ "mobx-react": "^7.0.0",
50
+ "mobx-state-tree": "^5.0.0",
51
+ "react": ">=16.8.0",
52
+ "react-dom": ">=16.8.0",
53
+ "tss-react": "^4.0.0"
54
+ },
55
+ "distModule": "esm/index.js",
56
+ "srcModule": "src/index.ts",
57
+ "module": "esm/index.js",
58
+ "publishConfig": {
59
+ "access": "public"
60
+ },
61
+ "gitHead": "1cbe7ba097fb2d2763c776e5e429e4670cdd583c"
62
+ }