@jbrowse/plugin-breakpoint-split-view 2.13.0 → 2.14.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.
- package/dist/BreakpointAlignmentsFeatureDetail/BreakpointAlignmentsFeatureDetail.d.ts +4 -2
- package/dist/BreakpointAlignmentsFeatureDetail/BreakpointAlignmentsFeatureDetail.js +4 -6
- package/dist/BreakpointSplitView/BreakpointSplitView.js +4 -1
- package/dist/BreakpointSplitView/components/AlignmentConnections.js +5 -1
- package/dist/BreakpointSplitView/components/Breakends.js +5 -1
- package/dist/BreakpointSplitView/components/ExportSvgDialog.js +16 -6
- package/dist/BreakpointSplitView/components/Translocations.js +6 -2
- package/dist/BreakpointSplitView/components/util.js +4 -1
- package/dist/BreakpointSplitView/model.d.ts +12 -14
- package/dist/BreakpointSplitView/model.js +10 -13
- package/dist/BreakpointSplitView/svgcomponents/SVGBreakpointSplitView.js +0 -1
- package/esm/BreakpointAlignmentsFeatureDetail/BreakpointAlignmentsFeatureDetail.d.ts +4 -2
- package/esm/BreakpointAlignmentsFeatureDetail/BreakpointAlignmentsFeatureDetail.js +3 -5
- package/esm/BreakpointSplitView/BreakpointSplitView.js +4 -1
- package/esm/BreakpointSplitView/components/AlignmentConnections.js +5 -1
- package/esm/BreakpointSplitView/components/Breakends.js +5 -1
- package/esm/BreakpointSplitView/components/ExportSvgDialog.js +16 -6
- package/esm/BreakpointSplitView/components/Translocations.js +6 -2
- package/esm/BreakpointSplitView/components/util.js +4 -1
- package/esm/BreakpointSplitView/model.d.ts +12 -14
- package/esm/BreakpointSplitView/model.js +11 -14
- package/esm/BreakpointSplitView/svgcomponents/SVGBreakpointSplitView.js +0 -1
- package/package.json +3 -3
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
declare const BreakpointAlignmentsFeatureDetail: ({ model }: {
|
|
3
|
-
model:
|
|
2
|
+
declare const BreakpointAlignmentsFeatureDetail: ({ model, }: {
|
|
3
|
+
model: {
|
|
4
|
+
featureData: Record<string, unknown>;
|
|
5
|
+
};
|
|
4
6
|
}) => React.JSX.Element;
|
|
5
7
|
export default BreakpointAlignmentsFeatureDetail;
|
|
@@ -3,15 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const Paper_1 = __importDefault(require("@mui/material/Paper"));
|
|
7
|
-
const mobx_react_1 = require("mobx-react");
|
|
8
6
|
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const material_1 = require("@mui/material");
|
|
8
|
+
const mobx_react_1 = require("mobx-react");
|
|
9
9
|
const BaseFeatureDetail_1 = require("@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail");
|
|
10
|
-
const BreakpointAlignmentsFeatureDetail = (0, mobx_react_1.observer)(
|
|
11
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
|
-
({ model }) => {
|
|
10
|
+
const BreakpointAlignmentsFeatureDetail = (0, mobx_react_1.observer)(function ({ model, }) {
|
|
13
11
|
const { feature1, feature2 } = JSON.parse(JSON.stringify(model.featureData));
|
|
14
|
-
return (react_1.default.createElement(
|
|
12
|
+
return (react_1.default.createElement(material_1.Paper, { "data-testid": "alignment-side-drawer" },
|
|
15
13
|
react_1.default.createElement(BaseFeatureDetail_1.BaseCoreDetails, { title: "Feature 1", feature: feature1 }),
|
|
16
14
|
react_1.default.createElement(BaseFeatureDetail_1.BaseCoreDetails, { title: "Feature 2", feature: feature2 }),
|
|
17
15
|
react_1.default.createElement(BaseFeatureDetail_1.BaseAttributes, { title: "Feature 1 attributes", feature: feature1 }),
|
|
@@ -52,12 +52,15 @@ class BreakpointSplitViewType extends ViewType_1.default {
|
|
|
52
52
|
mateRefName = assembly.getCanonicalRefName(mate.refName);
|
|
53
53
|
endPos = mate.start;
|
|
54
54
|
}
|
|
55
|
+
else {
|
|
56
|
+
endPos = startPos + 1;
|
|
57
|
+
}
|
|
55
58
|
if (!mateRefName) {
|
|
56
59
|
throw new Error(`unable to resolve mate refName ${mateRefName} in reference genome`);
|
|
57
60
|
}
|
|
58
61
|
const bottomRegion = assembly.regions.find(f => f.refName === mateRefName);
|
|
59
62
|
if (!topRegion || !bottomRegion) {
|
|
60
|
-
throw new Error(
|
|
63
|
+
throw new Error('unable to find the refName for the top or bottom of the breakpoint view');
|
|
61
64
|
}
|
|
62
65
|
const topMarkedRegion = [{ ...topRegion }, { ...topRegion }];
|
|
63
66
|
const bottomMarkedRegion = [{ ...bottomRegion }, { ...bottomRegion }];
|
|
@@ -121,7 +121,11 @@ const AlignmentConnections = (0, mobx_react_1.observer)(function ({ model, track
|
|
|
121
121
|
},
|
|
122
122
|
});
|
|
123
123
|
(_b = session.showWidget) === null || _b === void 0 ? void 0 : _b.call(session, featureWidget);
|
|
124
|
-
}, onMouseOver: () =>
|
|
124
|
+
}, onMouseOver: () => {
|
|
125
|
+
setMouseoverElt(id);
|
|
126
|
+
}, onMouseOut: () => {
|
|
127
|
+
setMouseoverElt(undefined);
|
|
128
|
+
} }));
|
|
125
129
|
}
|
|
126
130
|
return ret;
|
|
127
131
|
}))) : null;
|
|
@@ -107,7 +107,11 @@ const Breakends = (0, mobx_react_1.observer)(function ({ model, trackId, parentR
|
|
|
107
107
|
featureData: (_b = totalFeatures.get(id)) === null || _b === void 0 ? void 0 : _b.toJSON(),
|
|
108
108
|
});
|
|
109
109
|
(_c = session.showWidget) === null || _c === void 0 ? void 0 : _c.call(session, featureWidget);
|
|
110
|
-
}, onMouseOver: () =>
|
|
110
|
+
}, onMouseOver: () => {
|
|
111
|
+
setMouseoverElt(id);
|
|
112
|
+
}, onMouseOut: () => {
|
|
113
|
+
setMouseoverElt(undefined);
|
|
114
|
+
} }));
|
|
111
115
|
}
|
|
112
116
|
}
|
|
113
117
|
return ret;
|
|
@@ -38,7 +38,7 @@ function TextField2({ children, ...rest }) {
|
|
|
38
38
|
react_1.default.createElement(material_1.TextField, { ...rest }, children)));
|
|
39
39
|
}
|
|
40
40
|
function useSvgLocal(key, val) {
|
|
41
|
-
return (0, util_1.useLocalStorage)(
|
|
41
|
+
return (0, util_1.useLocalStorage)(`svg-${key}`, val);
|
|
42
42
|
}
|
|
43
43
|
function ExportSvgDialog({ model, handleClose, }) {
|
|
44
44
|
const session = (0, util_1.getSession)(model);
|
|
@@ -52,19 +52,29 @@ function ExportSvgDialog({ model, handleClose, }) {
|
|
|
52
52
|
return (react_1.default.createElement(ui_1.Dialog, { open: true, onClose: handleClose, title: "Export SVG" },
|
|
53
53
|
react_1.default.createElement(material_1.DialogContent, null,
|
|
54
54
|
error ? (react_1.default.createElement(ui_1.ErrorMessage, { error: error })) : loading ? (react_1.default.createElement(LoadingMessage, null)) : null,
|
|
55
|
-
react_1.default.createElement(TextField2, { helperText: "filename", value: filename, onChange: event =>
|
|
56
|
-
|
|
55
|
+
react_1.default.createElement(TextField2, { helperText: "filename", value: filename, onChange: event => {
|
|
56
|
+
setFilename(event.target.value);
|
|
57
|
+
} }),
|
|
58
|
+
react_1.default.createElement(TextField2, { select: true, label: "Track label positioning", variant: "outlined", style: { width: 150 }, value: trackLabels, onChange: event => {
|
|
59
|
+
setTrackLabels(event.target.value);
|
|
60
|
+
} },
|
|
57
61
|
react_1.default.createElement(material_1.MenuItem, { value: "offset" }, "Offset"),
|
|
58
62
|
react_1.default.createElement(material_1.MenuItem, { value: "overlay" }, "Overlay"),
|
|
59
63
|
react_1.default.createElement(material_1.MenuItem, { value: "left" }, "Left"),
|
|
60
64
|
react_1.default.createElement(material_1.MenuItem, { value: "none" }, "None")),
|
|
61
65
|
react_1.default.createElement("br", null),
|
|
62
|
-
session.allThemes ? (react_1.default.createElement(TextField2, { select: true, label: "Theme", variant: "outlined", value: themeName, onChange: event =>
|
|
66
|
+
session.allThemes ? (react_1.default.createElement(TextField2, { select: true, label: "Theme", variant: "outlined", value: themeName, onChange: event => {
|
|
67
|
+
setThemeName(event.target.value);
|
|
68
|
+
} }, Object.entries(session.allThemes()).map(([key, val]) => (react_1.default.createElement(material_1.MenuItem, { key: key, value: key },
|
|
63
69
|
// @ts-expect-error
|
|
64
70
|
val.name || '(Unknown name)'))))) : null,
|
|
65
|
-
offscreenCanvas ? (react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Checkbox, { checked: rasterizeLayers, onChange: () =>
|
|
71
|
+
offscreenCanvas ? (react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Checkbox, { checked: rasterizeLayers, onChange: () => {
|
|
72
|
+
setRasterizeLayers(val => !val);
|
|
73
|
+
} }), label: "Rasterize canvas based tracks? File may be much larger if this is turned off" })) : (react_1.default.createElement(material_1.Typography, null, "Note: rasterizing layers not yet supported in this browser, so SVG size may be large"))),
|
|
66
74
|
react_1.default.createElement(material_1.DialogActions, null,
|
|
67
|
-
react_1.default.createElement(material_1.Button, { variant: "contained", color: "secondary", onClick: () =>
|
|
75
|
+
react_1.default.createElement(material_1.Button, { variant: "contained", color: "secondary", onClick: () => {
|
|
76
|
+
handleClose();
|
|
77
|
+
} }, "Cancel"),
|
|
68
78
|
react_1.default.createElement(material_1.Button, { variant: "contained", color: "primary", type: "submit", onClick: async () => {
|
|
69
79
|
setLoading(true);
|
|
70
80
|
setError(undefined);
|
|
@@ -102,7 +102,7 @@ const Translocations = (0, mobx_react_1.observer)(function ({ model, trackId, pa
|
|
|
102
102
|
'L', // line to
|
|
103
103
|
x1,
|
|
104
104
|
y1,
|
|
105
|
-
'L', // line to
|
|
105
|
+
'L', // line to as const
|
|
106
106
|
x2,
|
|
107
107
|
y2,
|
|
108
108
|
'L', // line to
|
|
@@ -115,7 +115,11 @@ const Translocations = (0, mobx_react_1.observer)(function ({ model, trackId, pa
|
|
|
115
115
|
featureData: (totalFeatures.get(id) || { toJSON: () => { } }).toJSON(),
|
|
116
116
|
});
|
|
117
117
|
(_b = session.showWidget) === null || _b === void 0 ? void 0 : _b.call(session, featureWidget);
|
|
118
|
-
}, onMouseOver: () =>
|
|
118
|
+
}, onMouseOver: () => {
|
|
119
|
+
setMouseoverElt(id);
|
|
120
|
+
}, onMouseOut: () => {
|
|
121
|
+
setMouseoverElt(undefined);
|
|
122
|
+
} }));
|
|
119
123
|
}
|
|
120
124
|
}
|
|
121
125
|
return ret;
|
|
@@ -70,7 +70,10 @@ function hasPairedReads(features) {
|
|
|
70
70
|
function findMatchingAlt(feat1, feat2) {
|
|
71
71
|
const alts = feat1.get('ALT');
|
|
72
72
|
if (alts) {
|
|
73
|
-
return new Map(alts
|
|
73
|
+
return new Map(alts
|
|
74
|
+
.map(alt => (0, vcf_1.parseBreakend)(alt))
|
|
75
|
+
.filter(util_1.notEmpty)
|
|
76
|
+
.map(bnd => [bnd.MatePosition, bnd])).get(`${feat2.get('refName')}:${feat2.get('start') + 1}`);
|
|
74
77
|
}
|
|
75
78
|
return undefined;
|
|
76
79
|
}
|
|
@@ -61,8 +61,9 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
61
61
|
showCytobandsSetting: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
62
62
|
trackLabels: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
63
63
|
showGridlines: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
64
|
-
highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<
|
|
64
|
+
highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType>>, [undefined]>;
|
|
65
65
|
colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
66
|
+
showTrackOutlines: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
66
67
|
}, {
|
|
67
68
|
width: number;
|
|
68
69
|
} & {
|
|
@@ -76,7 +77,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
76
77
|
minimumBlockWidth: number;
|
|
77
78
|
draggingTrackId: undefined | string;
|
|
78
79
|
volatileError: unknown;
|
|
79
|
-
afterDisplayedRegionsSetCallbacks:
|
|
80
|
+
afterDisplayedRegionsSetCallbacks: (() => void)[];
|
|
80
81
|
scaleFactor: number;
|
|
81
82
|
trackRefs: Record<string, HTMLDivElement>;
|
|
82
83
|
coarseDynamicBlocks: import("@jbrowse/core/util/blockTypes").BaseBlock[];
|
|
@@ -84,12 +85,12 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
84
85
|
leftOffset: undefined | import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset;
|
|
85
86
|
rightOffset: undefined | import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset;
|
|
86
87
|
} & {
|
|
87
|
-
scaleBarDisplayPrefix(): "";
|
|
88
88
|
readonly trackLabelsSetting: any;
|
|
89
89
|
readonly width: number;
|
|
90
90
|
readonly interRegionPaddingWidth: number;
|
|
91
91
|
readonly assemblyNames: string[];
|
|
92
92
|
} & {
|
|
93
|
+
scaleBarDisplayPrefix(): string | undefined;
|
|
93
94
|
MiniControlsComponent(): React.FC<any>;
|
|
94
95
|
HeaderComponent(): React.FC<any>;
|
|
95
96
|
readonly assemblyErrors: string;
|
|
@@ -104,7 +105,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
104
105
|
readonly totalBp: number;
|
|
105
106
|
readonly maxBpPerPx: number;
|
|
106
107
|
readonly minBpPerPx: number;
|
|
107
|
-
readonly error:
|
|
108
|
+
readonly error: unknown;
|
|
108
109
|
readonly maxOffset: number;
|
|
109
110
|
readonly minOffset: number;
|
|
110
111
|
readonly displayedRegionsTotalPx: number;
|
|
@@ -119,6 +120,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
119
120
|
rewriteOnClicks(trackType: string, viewMenuActions: import("@jbrowse/core/ui").MenuItem[]): void;
|
|
120
121
|
readonly trackTypeActions: Map<string, import("@jbrowse/core/ui").MenuItem[]>;
|
|
121
122
|
} & {
|
|
123
|
+
setShowTrackOutlines(arg: boolean): void;
|
|
122
124
|
setColorByCDS(flag: boolean): void;
|
|
123
125
|
setShowCytobands(flag: boolean): void;
|
|
124
126
|
setWidth(newWidth: number): void;
|
|
@@ -127,9 +129,9 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
127
129
|
setHideHeaderOverview(b: boolean): void;
|
|
128
130
|
setHideNoTracksActive(b: boolean): void;
|
|
129
131
|
setShowGridlines(b: boolean): void;
|
|
130
|
-
addToHighlights(highlight:
|
|
131
|
-
setHighlight(highlight
|
|
132
|
-
removeHighlight(highlight:
|
|
132
|
+
addToHighlights(highlight: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType): void;
|
|
133
|
+
setHighlight(highlight?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType[]): void;
|
|
134
|
+
removeHighlight(highlight: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType): void;
|
|
133
135
|
scrollTo(offsetPx: number): number;
|
|
134
136
|
zoomTo(bpPerPx: number, offset?: number, centerAtOffset?: boolean): number;
|
|
135
137
|
setOffsets(left?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset, right?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset): void;
|
|
@@ -144,7 +146,6 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
144
146
|
moveTrackToTop(id: string): void;
|
|
145
147
|
moveTrackToBottom(id: string): void;
|
|
146
148
|
moveTrack(movingId: string, targetId: string): void;
|
|
147
|
-
closeView(): void;
|
|
148
149
|
toggleTrack(trackId: string): boolean;
|
|
149
150
|
setTrackLabels(setting: "overlapping" | "offset" | "hidden"): void;
|
|
150
151
|
setShowCenterLine(b: boolean): void;
|
|
@@ -164,7 +165,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
164
165
|
variant?: string;
|
|
165
166
|
isLeftEndOfDisplayedRegion?: boolean;
|
|
166
167
|
}[];
|
|
167
|
-
afterDisplayedRegionsSet(cb:
|
|
168
|
+
afterDisplayedRegionsSet(cb: () => void): void;
|
|
168
169
|
horizontalScroll(distance: number): number;
|
|
169
170
|
center(): void;
|
|
170
171
|
showAllRegions(): void;
|
|
@@ -257,8 +258,9 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
257
258
|
showCytobandsSetting: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
258
259
|
trackLabels: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
259
260
|
showGridlines: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
260
|
-
highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<
|
|
261
|
+
highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType>>, [undefined]>;
|
|
261
262
|
colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
263
|
+
showTrackOutlines: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
262
264
|
}>>, import("mobx-state-tree")._NotCustomized>>;
|
|
263
265
|
}, {
|
|
264
266
|
width: number;
|
|
@@ -320,10 +322,6 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
320
322
|
* #action
|
|
321
323
|
*/
|
|
322
324
|
removeView(view: LGV): void;
|
|
323
|
-
/**
|
|
324
|
-
* #action
|
|
325
|
-
*/
|
|
326
|
-
closeView(): void;
|
|
327
325
|
/**
|
|
328
326
|
* #action
|
|
329
327
|
*/
|
|
@@ -205,7 +205,9 @@ function stateModelFactory(pluginManager) {
|
|
|
205
205
|
*/
|
|
206
206
|
setWidth(newWidth) {
|
|
207
207
|
self.width = newWidth;
|
|
208
|
-
self.views.forEach(v =>
|
|
208
|
+
self.views.forEach(v => {
|
|
209
|
+
v.setWidth(newWidth);
|
|
210
|
+
});
|
|
209
211
|
},
|
|
210
212
|
/**
|
|
211
213
|
* #action
|
|
@@ -213,13 +215,6 @@ function stateModelFactory(pluginManager) {
|
|
|
213
215
|
removeView(view) {
|
|
214
216
|
self.views.remove(view);
|
|
215
217
|
},
|
|
216
|
-
/**
|
|
217
|
-
* #action
|
|
218
|
-
*/
|
|
219
|
-
closeView() {
|
|
220
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
221
|
-
(0, mobx_state_tree_1.getParent)(self, 2).removeView(self);
|
|
222
|
-
},
|
|
223
218
|
/**
|
|
224
219
|
* #action
|
|
225
220
|
*/
|
|
@@ -254,7 +249,6 @@ function stateModelFactory(pluginManager) {
|
|
|
254
249
|
}
|
|
255
250
|
self.setMatchedTrackFeatures(Object.fromEntries(await Promise.all(self.matchedTracks.map(async (track) => [
|
|
256
251
|
track.configuration.trackId,
|
|
257
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
258
252
|
await getBlockFeatures(self, track),
|
|
259
253
|
]))));
|
|
260
254
|
}
|
|
@@ -270,20 +264,23 @@ function stateModelFactory(pluginManager) {
|
|
|
270
264
|
menuItems() {
|
|
271
265
|
return [
|
|
272
266
|
...self.views
|
|
273
|
-
.map((view, idx) =>
|
|
274
|
-
.filter(f => !!f[1])
|
|
267
|
+
.map((view, idx) => [idx, view.menuItems()])
|
|
275
268
|
.map(f => ({ label: `View ${f[0] + 1} Menu`, subMenu: f[1] })),
|
|
276
269
|
{
|
|
277
270
|
label: 'Show intra-view links',
|
|
278
271
|
type: 'checkbox',
|
|
279
272
|
checked: self.showIntraviewLinks,
|
|
280
|
-
onClick: () =>
|
|
273
|
+
onClick: () => {
|
|
274
|
+
self.toggleIntraviewLinks();
|
|
275
|
+
},
|
|
281
276
|
},
|
|
282
277
|
{
|
|
283
278
|
label: 'Allow clicking alignment squiggles?',
|
|
284
279
|
type: 'checkbox',
|
|
285
280
|
checked: self.interactToggled,
|
|
286
|
-
onClick: () =>
|
|
281
|
+
onClick: () => {
|
|
282
|
+
self.toggleInteract();
|
|
283
|
+
},
|
|
287
284
|
},
|
|
288
285
|
{
|
|
289
286
|
label: 'Link views',
|
|
@@ -19,7 +19,6 @@ const util_2 = require("./util");
|
|
|
19
19
|
async function renderToSvg(model, opts) {
|
|
20
20
|
var _a;
|
|
21
21
|
const { textHeight = 18, headerHeight = 30, rulerHeight = 30, fontSize = 13, trackLabels = 'offset', Wrapper = ({ children }) => children, themeName = 'default', } = opts;
|
|
22
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
23
22
|
const { createRootFn } = (0, mobx_state_tree_1.getRoot)(model);
|
|
24
23
|
const session = (0, util_1.getSession)(model);
|
|
25
24
|
const theme = (_a = session.allThemes) === null || _a === void 0 ? void 0 : _a.call(session)[themeName];
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
declare const BreakpointAlignmentsFeatureDetail: ({ model }: {
|
|
3
|
-
model:
|
|
2
|
+
declare const BreakpointAlignmentsFeatureDetail: ({ model, }: {
|
|
3
|
+
model: {
|
|
4
|
+
featureData: Record<string, unknown>;
|
|
5
|
+
};
|
|
4
6
|
}) => React.JSX.Element;
|
|
5
7
|
export default BreakpointAlignmentsFeatureDetail;
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import Paper from '@mui/material/Paper';
|
|
2
|
-
import { observer } from 'mobx-react';
|
|
3
1
|
import React from 'react';
|
|
2
|
+
import { Paper } from '@mui/material';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
4
4
|
import { BaseCoreDetails, BaseAttributes, } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail';
|
|
5
|
-
const BreakpointAlignmentsFeatureDetail = observer(
|
|
6
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7
|
-
({ model }) => {
|
|
5
|
+
const BreakpointAlignmentsFeatureDetail = observer(function ({ model, }) {
|
|
8
6
|
const { feature1, feature2 } = JSON.parse(JSON.stringify(model.featureData));
|
|
9
7
|
return (React.createElement(Paper, { "data-testid": "alignment-side-drawer" },
|
|
10
8
|
React.createElement(BaseCoreDetails, { title: "Feature 1", feature: feature1 }),
|
|
@@ -47,12 +47,15 @@ export default class BreakpointSplitViewType extends ViewType {
|
|
|
47
47
|
mateRefName = assembly.getCanonicalRefName(mate.refName);
|
|
48
48
|
endPos = mate.start;
|
|
49
49
|
}
|
|
50
|
+
else {
|
|
51
|
+
endPos = startPos + 1;
|
|
52
|
+
}
|
|
50
53
|
if (!mateRefName) {
|
|
51
54
|
throw new Error(`unable to resolve mate refName ${mateRefName} in reference genome`);
|
|
52
55
|
}
|
|
53
56
|
const bottomRegion = assembly.regions.find(f => f.refName === mateRefName);
|
|
54
57
|
if (!topRegion || !bottomRegion) {
|
|
55
|
-
throw new Error(
|
|
58
|
+
throw new Error('unable to find the refName for the top or bottom of the breakpoint view');
|
|
56
59
|
}
|
|
57
60
|
const topMarkedRegion = [{ ...topRegion }, { ...topRegion }];
|
|
58
61
|
const bottomMarkedRegion = [{ ...bottomRegion }, { ...bottomRegion }];
|
|
@@ -96,7 +96,11 @@ const AlignmentConnections = observer(function ({ model, trackId, parentRef, get
|
|
|
96
96
|
},
|
|
97
97
|
});
|
|
98
98
|
(_b = session.showWidget) === null || _b === void 0 ? void 0 : _b.call(session, featureWidget);
|
|
99
|
-
}, onMouseOver: () =>
|
|
99
|
+
}, onMouseOver: () => {
|
|
100
|
+
setMouseoverElt(id);
|
|
101
|
+
}, onMouseOut: () => {
|
|
102
|
+
setMouseoverElt(undefined);
|
|
103
|
+
} }));
|
|
100
104
|
}
|
|
101
105
|
return ret;
|
|
102
106
|
}))) : null;
|
|
@@ -82,7 +82,11 @@ const Breakends = observer(function ({ model, trackId, parentRef: ref, getTrackY
|
|
|
82
82
|
featureData: (_b = totalFeatures.get(id)) === null || _b === void 0 ? void 0 : _b.toJSON(),
|
|
83
83
|
});
|
|
84
84
|
(_c = session.showWidget) === null || _c === void 0 ? void 0 : _c.call(session, featureWidget);
|
|
85
|
-
}, onMouseOver: () =>
|
|
85
|
+
}, onMouseOver: () => {
|
|
86
|
+
setMouseoverElt(id);
|
|
87
|
+
}, onMouseOut: () => {
|
|
88
|
+
setMouseoverElt(undefined);
|
|
89
|
+
} }));
|
|
86
90
|
}
|
|
87
91
|
}
|
|
88
92
|
return ret;
|
|
@@ -12,7 +12,7 @@ function TextField2({ children, ...rest }) {
|
|
|
12
12
|
React.createElement(TextField, { ...rest }, children)));
|
|
13
13
|
}
|
|
14
14
|
function useSvgLocal(key, val) {
|
|
15
|
-
return useLocalStorage(
|
|
15
|
+
return useLocalStorage(`svg-${key}`, val);
|
|
16
16
|
}
|
|
17
17
|
export default function ExportSvgDialog({ model, handleClose, }) {
|
|
18
18
|
const session = getSession(model);
|
|
@@ -26,19 +26,29 @@ export default function ExportSvgDialog({ model, handleClose, }) {
|
|
|
26
26
|
return (React.createElement(Dialog, { open: true, onClose: handleClose, title: "Export SVG" },
|
|
27
27
|
React.createElement(DialogContent, null,
|
|
28
28
|
error ? (React.createElement(ErrorMessage, { error: error })) : loading ? (React.createElement(LoadingMessage, null)) : null,
|
|
29
|
-
React.createElement(TextField2, { helperText: "filename", value: filename, onChange: event =>
|
|
30
|
-
|
|
29
|
+
React.createElement(TextField2, { helperText: "filename", value: filename, onChange: event => {
|
|
30
|
+
setFilename(event.target.value);
|
|
31
|
+
} }),
|
|
32
|
+
React.createElement(TextField2, { select: true, label: "Track label positioning", variant: "outlined", style: { width: 150 }, value: trackLabels, onChange: event => {
|
|
33
|
+
setTrackLabels(event.target.value);
|
|
34
|
+
} },
|
|
31
35
|
React.createElement(MenuItem, { value: "offset" }, "Offset"),
|
|
32
36
|
React.createElement(MenuItem, { value: "overlay" }, "Overlay"),
|
|
33
37
|
React.createElement(MenuItem, { value: "left" }, "Left"),
|
|
34
38
|
React.createElement(MenuItem, { value: "none" }, "None")),
|
|
35
39
|
React.createElement("br", null),
|
|
36
|
-
session.allThemes ? (React.createElement(TextField2, { select: true, label: "Theme", variant: "outlined", value: themeName, onChange: event =>
|
|
40
|
+
session.allThemes ? (React.createElement(TextField2, { select: true, label: "Theme", variant: "outlined", value: themeName, onChange: event => {
|
|
41
|
+
setThemeName(event.target.value);
|
|
42
|
+
} }, Object.entries(session.allThemes()).map(([key, val]) => (React.createElement(MenuItem, { key: key, value: key },
|
|
37
43
|
// @ts-expect-error
|
|
38
44
|
val.name || '(Unknown name)'))))) : null,
|
|
39
|
-
offscreenCanvas ? (React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: rasterizeLayers, onChange: () =>
|
|
45
|
+
offscreenCanvas ? (React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: rasterizeLayers, onChange: () => {
|
|
46
|
+
setRasterizeLayers(val => !val);
|
|
47
|
+
} }), label: "Rasterize canvas based tracks? File may be much larger if this is turned off" })) : (React.createElement(Typography, null, "Note: rasterizing layers not yet supported in this browser, so SVG size may be large"))),
|
|
40
48
|
React.createElement(DialogActions, null,
|
|
41
|
-
React.createElement(Button, { variant: "contained", color: "secondary", onClick: () =>
|
|
49
|
+
React.createElement(Button, { variant: "contained", color: "secondary", onClick: () => {
|
|
50
|
+
handleClose();
|
|
51
|
+
} }, "Cancel"),
|
|
42
52
|
React.createElement(Button, { variant: "contained", color: "primary", type: "submit", onClick: async () => {
|
|
43
53
|
setLoading(true);
|
|
44
54
|
setError(undefined);
|
|
@@ -77,7 +77,7 @@ const Translocations = observer(function ({ model, trackId, parentRef: ref, getT
|
|
|
77
77
|
'L', // line to
|
|
78
78
|
x1,
|
|
79
79
|
y1,
|
|
80
|
-
'L', // line to
|
|
80
|
+
'L', // line to as const
|
|
81
81
|
x2,
|
|
82
82
|
y2,
|
|
83
83
|
'L', // line to
|
|
@@ -90,7 +90,11 @@ const Translocations = observer(function ({ model, trackId, parentRef: ref, getT
|
|
|
90
90
|
featureData: (totalFeatures.get(id) || { toJSON: () => { } }).toJSON(),
|
|
91
91
|
});
|
|
92
92
|
(_b = session.showWidget) === null || _b === void 0 ? void 0 : _b.call(session, featureWidget);
|
|
93
|
-
}, onMouseOver: () =>
|
|
93
|
+
}, onMouseOver: () => {
|
|
94
|
+
setMouseoverElt(id);
|
|
95
|
+
}, onMouseOut: () => {
|
|
96
|
+
setMouseoverElt(undefined);
|
|
97
|
+
} }));
|
|
94
98
|
}
|
|
95
99
|
}
|
|
96
100
|
return ret;
|
|
@@ -62,7 +62,10 @@ export function hasPairedReads(features) {
|
|
|
62
62
|
export function findMatchingAlt(feat1, feat2) {
|
|
63
63
|
const alts = feat1.get('ALT');
|
|
64
64
|
if (alts) {
|
|
65
|
-
return new Map(alts
|
|
65
|
+
return new Map(alts
|
|
66
|
+
.map(alt => parseBreakend(alt))
|
|
67
|
+
.filter(notEmpty)
|
|
68
|
+
.map(bnd => [bnd.MatePosition, bnd])).get(`${feat2.get('refName')}:${feat2.get('start') + 1}`);
|
|
66
69
|
}
|
|
67
70
|
return undefined;
|
|
68
71
|
}
|
|
@@ -61,8 +61,9 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
61
61
|
showCytobandsSetting: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
62
62
|
trackLabels: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
63
63
|
showGridlines: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
64
|
-
highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<
|
|
64
|
+
highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType>>, [undefined]>;
|
|
65
65
|
colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
66
|
+
showTrackOutlines: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
66
67
|
}, {
|
|
67
68
|
width: number;
|
|
68
69
|
} & {
|
|
@@ -76,7 +77,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
76
77
|
minimumBlockWidth: number;
|
|
77
78
|
draggingTrackId: undefined | string;
|
|
78
79
|
volatileError: unknown;
|
|
79
|
-
afterDisplayedRegionsSetCallbacks:
|
|
80
|
+
afterDisplayedRegionsSetCallbacks: (() => void)[];
|
|
80
81
|
scaleFactor: number;
|
|
81
82
|
trackRefs: Record<string, HTMLDivElement>;
|
|
82
83
|
coarseDynamicBlocks: import("@jbrowse/core/util/blockTypes").BaseBlock[];
|
|
@@ -84,12 +85,12 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
84
85
|
leftOffset: undefined | import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset;
|
|
85
86
|
rightOffset: undefined | import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset;
|
|
86
87
|
} & {
|
|
87
|
-
scaleBarDisplayPrefix(): "";
|
|
88
88
|
readonly trackLabelsSetting: any;
|
|
89
89
|
readonly width: number;
|
|
90
90
|
readonly interRegionPaddingWidth: number;
|
|
91
91
|
readonly assemblyNames: string[];
|
|
92
92
|
} & {
|
|
93
|
+
scaleBarDisplayPrefix(): string | undefined;
|
|
93
94
|
MiniControlsComponent(): React.FC<any>;
|
|
94
95
|
HeaderComponent(): React.FC<any>;
|
|
95
96
|
readonly assemblyErrors: string;
|
|
@@ -104,7 +105,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
104
105
|
readonly totalBp: number;
|
|
105
106
|
readonly maxBpPerPx: number;
|
|
106
107
|
readonly minBpPerPx: number;
|
|
107
|
-
readonly error:
|
|
108
|
+
readonly error: unknown;
|
|
108
109
|
readonly maxOffset: number;
|
|
109
110
|
readonly minOffset: number;
|
|
110
111
|
readonly displayedRegionsTotalPx: number;
|
|
@@ -119,6 +120,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
119
120
|
rewriteOnClicks(trackType: string, viewMenuActions: import("@jbrowse/core/ui").MenuItem[]): void;
|
|
120
121
|
readonly trackTypeActions: Map<string, import("@jbrowse/core/ui").MenuItem[]>;
|
|
121
122
|
} & {
|
|
123
|
+
setShowTrackOutlines(arg: boolean): void;
|
|
122
124
|
setColorByCDS(flag: boolean): void;
|
|
123
125
|
setShowCytobands(flag: boolean): void;
|
|
124
126
|
setWidth(newWidth: number): void;
|
|
@@ -127,9 +129,9 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
127
129
|
setHideHeaderOverview(b: boolean): void;
|
|
128
130
|
setHideNoTracksActive(b: boolean): void;
|
|
129
131
|
setShowGridlines(b: boolean): void;
|
|
130
|
-
addToHighlights(highlight:
|
|
131
|
-
setHighlight(highlight
|
|
132
|
-
removeHighlight(highlight:
|
|
132
|
+
addToHighlights(highlight: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType): void;
|
|
133
|
+
setHighlight(highlight?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType[]): void;
|
|
134
|
+
removeHighlight(highlight: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType): void;
|
|
133
135
|
scrollTo(offsetPx: number): number;
|
|
134
136
|
zoomTo(bpPerPx: number, offset?: number, centerAtOffset?: boolean): number;
|
|
135
137
|
setOffsets(left?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset, right?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset): void;
|
|
@@ -144,7 +146,6 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
144
146
|
moveTrackToTop(id: string): void;
|
|
145
147
|
moveTrackToBottom(id: string): void;
|
|
146
148
|
moveTrack(movingId: string, targetId: string): void;
|
|
147
|
-
closeView(): void;
|
|
148
149
|
toggleTrack(trackId: string): boolean;
|
|
149
150
|
setTrackLabels(setting: "overlapping" | "offset" | "hidden"): void;
|
|
150
151
|
setShowCenterLine(b: boolean): void;
|
|
@@ -164,7 +165,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
164
165
|
variant?: string;
|
|
165
166
|
isLeftEndOfDisplayedRegion?: boolean;
|
|
166
167
|
}[];
|
|
167
|
-
afterDisplayedRegionsSet(cb:
|
|
168
|
+
afterDisplayedRegionsSet(cb: () => void): void;
|
|
168
169
|
horizontalScroll(distance: number): number;
|
|
169
170
|
center(): void;
|
|
170
171
|
showAllRegions(): void;
|
|
@@ -257,8 +258,9 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
257
258
|
showCytobandsSetting: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
258
259
|
trackLabels: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
259
260
|
showGridlines: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
260
|
-
highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<
|
|
261
|
+
highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType>>, [undefined]>;
|
|
261
262
|
colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
263
|
+
showTrackOutlines: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
262
264
|
}>>, import("mobx-state-tree")._NotCustomized>>;
|
|
263
265
|
}, {
|
|
264
266
|
width: number;
|
|
@@ -320,10 +322,6 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
320
322
|
* #action
|
|
321
323
|
*/
|
|
322
324
|
removeView(view: LGV): void;
|
|
323
|
-
/**
|
|
324
|
-
* #action
|
|
325
|
-
*/
|
|
326
|
-
closeView(): void;
|
|
327
325
|
/**
|
|
328
326
|
* #action
|
|
329
327
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { lazy } from 'react';
|
|
2
|
-
import { types,
|
|
2
|
+
import { types, onAction, addDisposer, getPath, } from 'mobx-state-tree';
|
|
3
3
|
import { autorun } from 'mobx';
|
|
4
4
|
import { saveAs } from 'file-saver';
|
|
5
5
|
import { BaseViewModel } from '@jbrowse/core/pluggableElementTypes/models';
|
|
@@ -176,7 +176,9 @@ export default function stateModelFactory(pluginManager) {
|
|
|
176
176
|
*/
|
|
177
177
|
setWidth(newWidth) {
|
|
178
178
|
self.width = newWidth;
|
|
179
|
-
self.views.forEach(v =>
|
|
179
|
+
self.views.forEach(v => {
|
|
180
|
+
v.setWidth(newWidth);
|
|
181
|
+
});
|
|
180
182
|
},
|
|
181
183
|
/**
|
|
182
184
|
* #action
|
|
@@ -184,13 +186,6 @@ export default function stateModelFactory(pluginManager) {
|
|
|
184
186
|
removeView(view) {
|
|
185
187
|
self.views.remove(view);
|
|
186
188
|
},
|
|
187
|
-
/**
|
|
188
|
-
* #action
|
|
189
|
-
*/
|
|
190
|
-
closeView() {
|
|
191
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
192
|
-
getParent(self, 2).removeView(self);
|
|
193
|
-
},
|
|
194
189
|
/**
|
|
195
190
|
* #action
|
|
196
191
|
*/
|
|
@@ -225,7 +220,6 @@ export default function stateModelFactory(pluginManager) {
|
|
|
225
220
|
}
|
|
226
221
|
self.setMatchedTrackFeatures(Object.fromEntries(await Promise.all(self.matchedTracks.map(async (track) => [
|
|
227
222
|
track.configuration.trackId,
|
|
228
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
229
223
|
await getBlockFeatures(self, track),
|
|
230
224
|
]))));
|
|
231
225
|
}
|
|
@@ -241,20 +235,23 @@ export default function stateModelFactory(pluginManager) {
|
|
|
241
235
|
menuItems() {
|
|
242
236
|
return [
|
|
243
237
|
...self.views
|
|
244
|
-
.map((view, idx) =>
|
|
245
|
-
.filter(f => !!f[1])
|
|
238
|
+
.map((view, idx) => [idx, view.menuItems()])
|
|
246
239
|
.map(f => ({ label: `View ${f[0] + 1} Menu`, subMenu: f[1] })),
|
|
247
240
|
{
|
|
248
241
|
label: 'Show intra-view links',
|
|
249
242
|
type: 'checkbox',
|
|
250
243
|
checked: self.showIntraviewLinks,
|
|
251
|
-
onClick: () =>
|
|
244
|
+
onClick: () => {
|
|
245
|
+
self.toggleIntraviewLinks();
|
|
246
|
+
},
|
|
252
247
|
},
|
|
253
248
|
{
|
|
254
249
|
label: 'Allow clicking alignment squiggles?',
|
|
255
250
|
type: 'checkbox',
|
|
256
251
|
checked: self.interactToggled,
|
|
257
|
-
onClick: () =>
|
|
252
|
+
onClick: () => {
|
|
253
|
+
self.toggleInteract();
|
|
254
|
+
},
|
|
258
255
|
},
|
|
259
256
|
{
|
|
260
257
|
label: 'Link views',
|
|
@@ -13,7 +13,6 @@ import { getTrackNameMaxLen, getTrackOffsets } from './util';
|
|
|
13
13
|
export async function renderToSvg(model, opts) {
|
|
14
14
|
var _a;
|
|
15
15
|
const { textHeight = 18, headerHeight = 30, rulerHeight = 30, fontSize = 13, trackLabels = 'offset', Wrapper = ({ children }) => children, themeName = 'default', } = opts;
|
|
16
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
17
16
|
const { createRootFn } = getRoot(model);
|
|
18
17
|
const session = getSession(model);
|
|
19
18
|
const theme = (_a = session.allThemes) === null || _a === void 0 ? void 0 : _a.call(session)[themeName];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-breakpoint-split-view",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.14.0",
|
|
4
4
|
"description": "JBrowse 2 breakpoint detail split view",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
],
|
|
25
25
|
"scripts": {
|
|
26
26
|
"build": "npm-run-all build:*",
|
|
27
|
-
"test": "cd ../..; jest plugins/breakpoint-split-view",
|
|
27
|
+
"test": "cd ../..; jest --passWithNoTests plugins/breakpoint-split-view",
|
|
28
28
|
"prepublishOnly": "yarn test",
|
|
29
29
|
"prepack": "yarn build && yarn useDist",
|
|
30
30
|
"postpack": "yarn useSrc",
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"publishConfig": {
|
|
59
59
|
"access": "public"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "9fb8231d932db40adf0a283081765431756c66ff"
|
|
62
62
|
}
|