@jbrowse/plugin-breakpoint-split-view 2.10.3 → 2.11.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/BreakpointSplitView/components/AlignmentConnections.d.ts +1 -1
- package/dist/BreakpointSplitView/components/AlignmentConnections.js +4 -5
- package/dist/BreakpointSplitView/components/Breakends.d.ts +1 -1
- package/dist/BreakpointSplitView/components/ExportSvgDialog.js +9 -4
- package/dist/BreakpointSplitView/components/Overlay.d.ts +1 -1
- package/dist/BreakpointSplitView/components/Translocations.d.ts +1 -1
- package/dist/BreakpointSplitView/model.d.ts +44 -13
- package/dist/BreakpointSplitView/model.js +1 -1
- package/dist/BreakpointSplitView/svgcomponents/SVGBreakpointSplitView.js +1 -1
- package/esm/BreakpointSplitView/components/AlignmentConnections.d.ts +1 -1
- package/esm/BreakpointSplitView/components/AlignmentConnections.js +4 -5
- package/esm/BreakpointSplitView/components/Breakends.d.ts +1 -1
- package/esm/BreakpointSplitView/components/ExportSvgDialog.js +9 -4
- package/esm/BreakpointSplitView/components/Overlay.d.ts +1 -1
- package/esm/BreakpointSplitView/components/Translocations.d.ts +1 -1
- package/esm/BreakpointSplitView/model.d.ts +44 -13
- package/esm/BreakpointSplitView/model.js +1 -1
- package/esm/BreakpointSplitView/svgcomponents/SVGBreakpointSplitView.js +1 -1
- package/package.json +2 -2
|
@@ -4,6 +4,6 @@ declare const AlignmentConnections: ({ model, trackId, parentRef, getTrackYPosOv
|
|
|
4
4
|
model: BreakpointViewModel;
|
|
5
5
|
trackId: string;
|
|
6
6
|
parentRef: React.RefObject<SVGSVGElement>;
|
|
7
|
-
getTrackYPosOverride?: (
|
|
7
|
+
getTrackYPosOverride?: (trackId: string, level: number) => number;
|
|
8
8
|
}) => React.JSX.Element | null;
|
|
9
9
|
export default AlignmentConnections;
|
|
@@ -28,6 +28,7 @@ const mobx_react_1 = require("mobx-react");
|
|
|
28
28
|
const mobx_state_tree_1 = require("mobx-state-tree");
|
|
29
29
|
const material_1 = require("@mui/material");
|
|
30
30
|
const util_1 = require("@jbrowse/core/util");
|
|
31
|
+
const colord_1 = require("@jbrowse/core/util/colord");
|
|
31
32
|
// locals
|
|
32
33
|
const util_2 = require("./util");
|
|
33
34
|
const util_3 = require("../util");
|
|
@@ -42,6 +43,7 @@ const AlignmentConnections = (0, mobx_react_1.observer)(function ({ model, track
|
|
|
42
43
|
(0, util_3.useNextFrame)(snap);
|
|
43
44
|
const allFeatures = model.getTrackFeatures(trackId);
|
|
44
45
|
const hasPaired = (0, react_1.useMemo)(() => (0, util_2.hasPairedReads)(allFeatures), [allFeatures]);
|
|
46
|
+
const { r, g, b, a } = (0, colord_1.colord)(theme.palette.text.disabled).rgba;
|
|
45
47
|
const layoutMatches = (0, react_1.useMemo)(() => {
|
|
46
48
|
const layoutMatches = model.getMatchedFeaturesInLayout(trackId, hasPaired
|
|
47
49
|
? (0, util_2.getBadlyPairedAlignments)(allFeatures)
|
|
@@ -59,10 +61,7 @@ const AlignmentConnections = (0, mobx_react_1.observer)(function ({ model, track
|
|
|
59
61
|
const rect = parentRef.current.getBoundingClientRect();
|
|
60
62
|
yOffset = rect.top;
|
|
61
63
|
}
|
|
62
|
-
|
|
63
|
-
return null;
|
|
64
|
-
}
|
|
65
|
-
return (react_1.default.createElement("g", { stroke: theme.palette.text.disabled, fill: "none", "data-testid": layoutMatches.length ? `${trackId}-loaded` : trackId }, layoutMatches.map(chunk => {
|
|
64
|
+
return assembly ? (react_1.default.createElement("g", { fill: "none", stroke: `rgb(${r},${g},${b})`, strokeOpacity: a, "data-testid": layoutMatches.length ? `${trackId}-loaded` : trackId }, layoutMatches.map(chunk => {
|
|
66
65
|
const ret = [];
|
|
67
66
|
// we follow a path in the list of chunks, not from top to bottom, just in series
|
|
68
67
|
// following x1,y1 -> x2,y2
|
|
@@ -127,6 +126,6 @@ const AlignmentConnections = (0, mobx_react_1.observer)(function ({ model, track
|
|
|
127
126
|
}, onMouseOver: () => setMouseoverElt(id), onMouseOut: () => setMouseoverElt(undefined) }));
|
|
128
127
|
}
|
|
129
128
|
return ret;
|
|
130
|
-
})));
|
|
129
|
+
}))) : null;
|
|
131
130
|
});
|
|
132
131
|
exports.default = AlignmentConnections;
|
|
@@ -4,6 +4,6 @@ declare const Breakends: ({ model, trackId, parentRef: ref, getTrackYPosOverride
|
|
|
4
4
|
model: BreakpointViewModel;
|
|
5
5
|
trackId: string;
|
|
6
6
|
parentRef: React.RefObject<SVGSVGElement>;
|
|
7
|
-
getTrackYPosOverride?: (
|
|
7
|
+
getTrackYPosOverride?: (trackId: string, level: number) => number;
|
|
8
8
|
}) => React.JSX.Element | null;
|
|
9
9
|
export default Breakends;
|
|
@@ -32,6 +32,10 @@ function LoadingMessage() {
|
|
|
32
32
|
react_1.default.createElement(material_1.CircularProgress, { size: 20, style: { marginRight: 20 } }),
|
|
33
33
|
react_1.default.createElement(material_1.Typography, { display: "inline" }, "Creating SVG")));
|
|
34
34
|
}
|
|
35
|
+
function TextField2({ children, ...rest }) {
|
|
36
|
+
return (react_1.default.createElement("div", null,
|
|
37
|
+
react_1.default.createElement(material_1.TextField, { ...rest }, children)));
|
|
38
|
+
}
|
|
35
39
|
function useSvgLocal(key, val) {
|
|
36
40
|
return (0, util_1.useLocalStorage)('svg-' + key, val);
|
|
37
41
|
}
|
|
@@ -47,15 +51,14 @@ function ExportSvgDialog({ model, handleClose, }) {
|
|
|
47
51
|
return (react_1.default.createElement(ui_1.Dialog, { open: true, onClose: handleClose, title: "Export SVG" },
|
|
48
52
|
react_1.default.createElement(material_1.DialogContent, null,
|
|
49
53
|
error ? (react_1.default.createElement(ui_1.ErrorMessage, { error: error })) : loading ? (react_1.default.createElement(LoadingMessage, null)) : null,
|
|
50
|
-
react_1.default.createElement(
|
|
51
|
-
react_1.default.createElement("
|
|
52
|
-
react_1.default.createElement(material_1.TextField, { select: true, label: "Track label positioning", variant: "outlined", style: { width: 150 }, value: trackLabels, onChange: event => setTrackLabels(event.target.value) },
|
|
54
|
+
react_1.default.createElement(TextField2, { helperText: "filename", value: filename, onChange: event => setFilename(event.target.value) }),
|
|
55
|
+
react_1.default.createElement(TextField2, { select: true, label: "Track label positioning", variant: "outlined", style: { width: 150 }, value: trackLabels, onChange: event => setTrackLabels(event.target.value) },
|
|
53
56
|
react_1.default.createElement(material_1.MenuItem, { value: "offset" }, "Offset"),
|
|
54
57
|
react_1.default.createElement(material_1.MenuItem, { value: "overlay" }, "Overlay"),
|
|
55
58
|
react_1.default.createElement(material_1.MenuItem, { value: "left" }, "Left"),
|
|
56
59
|
react_1.default.createElement(material_1.MenuItem, { value: "none" }, "None")),
|
|
57
60
|
react_1.default.createElement("br", null),
|
|
58
|
-
session.allThemes ? (react_1.default.createElement(
|
|
61
|
+
session.allThemes ? (react_1.default.createElement(TextField2, { select: true, label: "Theme", variant: "outlined", value: themeName, onChange: event => setThemeName(event.target.value) }, Object.entries(session.allThemes()).map(([key, val]) => (react_1.default.createElement(material_1.MenuItem, { key: key, value: key },
|
|
59
62
|
// @ts-expect-error
|
|
60
63
|
val.name || '(Unknown name)'))))) : null,
|
|
61
64
|
offscreenCanvas ? (react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Checkbox, { checked: rasterizeLayers, onChange: () => setRasterizeLayers(val => !val) }), 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"))),
|
|
@@ -76,6 +79,8 @@ function ExportSvgDialog({ model, handleClose, }) {
|
|
|
76
79
|
catch (e) {
|
|
77
80
|
console.error(e);
|
|
78
81
|
setError(e);
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
79
84
|
setLoading(false);
|
|
80
85
|
}
|
|
81
86
|
} }, "Submit"))));
|
|
@@ -4,6 +4,6 @@ declare const Overlay: (props: {
|
|
|
4
4
|
parentRef: React.RefObject<SVGSVGElement>;
|
|
5
5
|
model: BreakpointViewModel;
|
|
6
6
|
trackId: string;
|
|
7
|
-
getTrackYPosOverride?: (
|
|
7
|
+
getTrackYPosOverride?: (trackId: string, level: number) => number;
|
|
8
8
|
}) => React.JSX.Element | null;
|
|
9
9
|
export default Overlay;
|
|
@@ -4,6 +4,6 @@ declare const Translocations: ({ model, trackId, parentRef: ref, getTrackYPosOve
|
|
|
4
4
|
model: BreakpointViewModel;
|
|
5
5
|
trackId: string;
|
|
6
6
|
parentRef: React.RefObject<SVGSVGElement>;
|
|
7
|
-
getTrackYPosOverride?: (
|
|
7
|
+
getTrackYPosOverride?: (trackId: string, level: number) => number;
|
|
8
8
|
}) => React.JSX.Element | null;
|
|
9
9
|
export default Translocations;
|
|
@@ -70,7 +70,8 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
70
70
|
showCytobandsSetting: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
71
71
|
trackLabels: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
72
72
|
showGridlines: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
73
|
-
highlight: import("mobx-state-tree").
|
|
73
|
+
highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<Required<import("@jbrowse/core/util").ParsedLocString>, Required<import("@jbrowse/core/util").ParsedLocString>, Required<import("@jbrowse/core/util").ParsedLocString>>>, [undefined]>;
|
|
74
|
+
colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
74
75
|
}, {
|
|
75
76
|
width: number;
|
|
76
77
|
} & {
|
|
@@ -82,20 +83,13 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
82
83
|
} & {
|
|
83
84
|
volatileWidth: number | undefined;
|
|
84
85
|
minimumBlockWidth: number;
|
|
85
|
-
/**
|
|
86
|
-
* #action
|
|
87
|
-
*/
|
|
88
86
|
draggingTrackId: string | undefined;
|
|
89
87
|
volatileError: unknown;
|
|
90
88
|
afterDisplayedRegionsSetCallbacks: Function[];
|
|
91
|
-
scaleFactor: number;
|
|
92
|
-
* #action
|
|
93
|
-
*/
|
|
89
|
+
scaleFactor: number;
|
|
94
90
|
trackRefs: Record<string, HTMLDivElement>;
|
|
95
91
|
coarseDynamicBlocks: import("@jbrowse/core/util/blockTypes").BaseBlock[];
|
|
96
|
-
coarseTotalBp: number;
|
|
97
|
-
* #action
|
|
98
|
-
*/
|
|
92
|
+
coarseTotalBp: number;
|
|
99
93
|
leftOffset: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset | undefined;
|
|
100
94
|
rightOffset: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset | undefined;
|
|
101
95
|
} & {
|
|
@@ -133,6 +127,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
133
127
|
rewriteOnClicks(trackType: string, viewMenuActions: import("@jbrowse/core/ui").MenuItem[]): void;
|
|
134
128
|
readonly trackTypeActions: Map<string, import("@jbrowse/core/ui").MenuItem[]>;
|
|
135
129
|
} & {
|
|
130
|
+
setColorByCDS(flag: boolean): void;
|
|
136
131
|
setShowCytobands(flag: boolean): void;
|
|
137
132
|
setWidth(newWidth: number): void;
|
|
138
133
|
setError(error: unknown): void;
|
|
@@ -140,7 +135,9 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
140
135
|
setHideHeaderOverview(b: boolean): void;
|
|
141
136
|
setHideNoTracksActive(b: boolean): void;
|
|
142
137
|
setShowGridlines(b: boolean): void;
|
|
143
|
-
|
|
138
|
+
addToHighlights(highlight: Required<import("@jbrowse/core/util").ParsedLocString>): void;
|
|
139
|
+
setHighlight(highlight: Required<import("@jbrowse/core/util").ParsedLocString>[] | undefined): void;
|
|
140
|
+
removeHighlight(highlight: Required<import("@jbrowse/core/util").ParsedLocString>): void;
|
|
144
141
|
scrollTo(offsetPx: number): number;
|
|
145
142
|
zoomTo(bpPerPx: number, offset?: number, centerAtOffset?: boolean): number;
|
|
146
143
|
setOffsets(left?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset | undefined, right?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset | undefined): void;
|
|
@@ -150,6 +147,10 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
150
147
|
showTrack(trackId: string, initialSnapshot?: {}, displayInitialSnapshot?: {}): any;
|
|
151
148
|
hideTrack(trackId: string): number;
|
|
152
149
|
} & {
|
|
150
|
+
moveTrackDown(id: string): void;
|
|
151
|
+
moveTrackUp(id: string): void;
|
|
152
|
+
moveTrackToTop(id: string): void;
|
|
153
|
+
moveTrackToBottom(id: string): void;
|
|
153
154
|
moveTrack(movingId: string, targetId: string): void;
|
|
154
155
|
closeView(): void;
|
|
155
156
|
toggleTrack(trackId: string): boolean;
|
|
@@ -347,7 +348,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
347
348
|
index: number;
|
|
348
349
|
offsetPx: number;
|
|
349
350
|
} | undefined;
|
|
350
|
-
centerAt(coord: number, refName: string, regionNumber
|
|
351
|
+
centerAt(coord: number, refName: string, regionNumber?: number | undefined): void;
|
|
351
352
|
pxToBp(px: number): {
|
|
352
353
|
coord: number;
|
|
353
354
|
index: number;
|
|
@@ -372,7 +373,37 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
372
373
|
} | undefined;
|
|
373
374
|
} & {
|
|
374
375
|
afterCreate(): void;
|
|
375
|
-
}, import("mobx-state-tree").
|
|
376
|
+
}, import("mobx-state-tree").ModelCreationType<import("mobx-state-tree/dist/internal").ExtractCFromProps<{
|
|
377
|
+
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
378
|
+
displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
379
|
+
minimized: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
380
|
+
} & {
|
|
381
|
+
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
382
|
+
type: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
383
|
+
offsetPx: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
384
|
+
bpPerPx: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
385
|
+
displayedRegions: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
|
|
386
|
+
refName: import("mobx-state-tree").ISimpleType<string>;
|
|
387
|
+
start: import("mobx-state-tree").ISimpleType<number>;
|
|
388
|
+
end: import("mobx-state-tree").ISimpleType<number>;
|
|
389
|
+
reversed: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
390
|
+
} & {
|
|
391
|
+
assemblyName: import("mobx-state-tree").ISimpleType<string>;
|
|
392
|
+
}, {
|
|
393
|
+
setRefName(newRefName: string): void;
|
|
394
|
+
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
|
|
395
|
+
tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
|
|
396
|
+
hideHeader: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
397
|
+
hideHeaderOverview: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
398
|
+
hideNoTracksActive: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
399
|
+
trackSelectorType: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
400
|
+
showCenterLine: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
401
|
+
showCytobandsSetting: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
402
|
+
trackLabels: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
403
|
+
showGridlines: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
404
|
+
highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<Required<import("@jbrowse/core/util").ParsedLocString>, Required<import("@jbrowse/core/util").ParsedLocString>, Required<import("@jbrowse/core/util").ParsedLocString>>>, [undefined]>;
|
|
405
|
+
colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
406
|
+
}>>, import("mobx-state-tree")._NotCustomized>>;
|
|
376
407
|
}, {
|
|
377
408
|
width: number;
|
|
378
409
|
} & {
|
|
@@ -18,7 +18,7 @@ const util_2 = require("./util");
|
|
|
18
18
|
// render LGV to SVG
|
|
19
19
|
async function renderToSvg(model, opts) {
|
|
20
20
|
var _a;
|
|
21
|
-
const { textHeight = 18, headerHeight = 30, rulerHeight = 30, fontSize = 13, trackLabels = 'offset', Wrapper = ({ children }) =>
|
|
21
|
+
const { textHeight = 18, headerHeight = 30, rulerHeight = 30, fontSize = 13, trackLabels = 'offset', Wrapper = ({ children }) => children, themeName = 'default', } = opts;
|
|
22
22
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
23
23
|
const { createRootFn } = (0, mobx_state_tree_1.getRoot)(model);
|
|
24
24
|
const session = (0, util_1.getSession)(model);
|
|
@@ -4,6 +4,6 @@ declare const AlignmentConnections: ({ model, trackId, parentRef, getTrackYPosOv
|
|
|
4
4
|
model: BreakpointViewModel;
|
|
5
5
|
trackId: string;
|
|
6
6
|
parentRef: React.RefObject<SVGSVGElement>;
|
|
7
|
-
getTrackYPosOverride?: (
|
|
7
|
+
getTrackYPosOverride?: (trackId: string, level: number) => number;
|
|
8
8
|
}) => React.JSX.Element | null;
|
|
9
9
|
export default AlignmentConnections;
|
|
@@ -3,6 +3,7 @@ import { observer } from 'mobx-react';
|
|
|
3
3
|
import { getSnapshot } from 'mobx-state-tree';
|
|
4
4
|
import { useTheme } from '@mui/material';
|
|
5
5
|
import { getSession } from '@jbrowse/core/util';
|
|
6
|
+
import { colord } from '@jbrowse/core/util/colord';
|
|
6
7
|
// locals
|
|
7
8
|
import { getBadlyPairedAlignments, getMatchedAlignmentFeatures, hasPairedReads, } from './util';
|
|
8
9
|
import { yPos, useNextFrame, getPxFromCoordinate } from '../util';
|
|
@@ -17,6 +18,7 @@ const AlignmentConnections = observer(function ({ model, trackId, parentRef, get
|
|
|
17
18
|
useNextFrame(snap);
|
|
18
19
|
const allFeatures = model.getTrackFeatures(trackId);
|
|
19
20
|
const hasPaired = useMemo(() => hasPairedReads(allFeatures), [allFeatures]);
|
|
21
|
+
const { r, g, b, a } = colord(theme.palette.text.disabled).rgba;
|
|
20
22
|
const layoutMatches = useMemo(() => {
|
|
21
23
|
const layoutMatches = model.getMatchedFeaturesInLayout(trackId, hasPaired
|
|
22
24
|
? getBadlyPairedAlignments(allFeatures)
|
|
@@ -34,10 +36,7 @@ const AlignmentConnections = observer(function ({ model, trackId, parentRef, get
|
|
|
34
36
|
const rect = parentRef.current.getBoundingClientRect();
|
|
35
37
|
yOffset = rect.top;
|
|
36
38
|
}
|
|
37
|
-
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
return (React.createElement("g", { stroke: theme.palette.text.disabled, fill: "none", "data-testid": layoutMatches.length ? `${trackId}-loaded` : trackId }, layoutMatches.map(chunk => {
|
|
39
|
+
return assembly ? (React.createElement("g", { fill: "none", stroke: `rgb(${r},${g},${b})`, strokeOpacity: a, "data-testid": layoutMatches.length ? `${trackId}-loaded` : trackId }, layoutMatches.map(chunk => {
|
|
41
40
|
const ret = [];
|
|
42
41
|
// we follow a path in the list of chunks, not from top to bottom, just in series
|
|
43
42
|
// following x1,y1 -> x2,y2
|
|
@@ -102,6 +101,6 @@ const AlignmentConnections = observer(function ({ model, trackId, parentRef, get
|
|
|
102
101
|
}, onMouseOver: () => setMouseoverElt(id), onMouseOut: () => setMouseoverElt(undefined) }));
|
|
103
102
|
}
|
|
104
103
|
return ret;
|
|
105
|
-
})));
|
|
104
|
+
}))) : null;
|
|
106
105
|
});
|
|
107
106
|
export default AlignmentConnections;
|
|
@@ -4,6 +4,6 @@ declare const Breakends: ({ model, trackId, parentRef: ref, getTrackYPosOverride
|
|
|
4
4
|
model: BreakpointViewModel;
|
|
5
5
|
trackId: string;
|
|
6
6
|
parentRef: React.RefObject<SVGSVGElement>;
|
|
7
|
-
getTrackYPosOverride?: (
|
|
7
|
+
getTrackYPosOverride?: (trackId: string, level: number) => number;
|
|
8
8
|
}) => React.JSX.Element | null;
|
|
9
9
|
export default Breakends;
|
|
@@ -7,6 +7,10 @@ function LoadingMessage() {
|
|
|
7
7
|
React.createElement(CircularProgress, { size: 20, style: { marginRight: 20 } }),
|
|
8
8
|
React.createElement(Typography, { display: "inline" }, "Creating SVG")));
|
|
9
9
|
}
|
|
10
|
+
function TextField2({ children, ...rest }) {
|
|
11
|
+
return (React.createElement("div", null,
|
|
12
|
+
React.createElement(TextField, { ...rest }, children)));
|
|
13
|
+
}
|
|
10
14
|
function useSvgLocal(key, val) {
|
|
11
15
|
return useLocalStorage('svg-' + key, val);
|
|
12
16
|
}
|
|
@@ -22,15 +26,14 @@ export default function ExportSvgDialog({ model, handleClose, }) {
|
|
|
22
26
|
return (React.createElement(Dialog, { open: true, onClose: handleClose, title: "Export SVG" },
|
|
23
27
|
React.createElement(DialogContent, null,
|
|
24
28
|
error ? (React.createElement(ErrorMessage, { error: error })) : loading ? (React.createElement(LoadingMessage, null)) : null,
|
|
25
|
-
React.createElement(
|
|
26
|
-
React.createElement("
|
|
27
|
-
React.createElement(TextField, { select: true, label: "Track label positioning", variant: "outlined", style: { width: 150 }, value: trackLabels, onChange: event => setTrackLabels(event.target.value) },
|
|
29
|
+
React.createElement(TextField2, { helperText: "filename", value: filename, onChange: event => setFilename(event.target.value) }),
|
|
30
|
+
React.createElement(TextField2, { select: true, label: "Track label positioning", variant: "outlined", style: { width: 150 }, value: trackLabels, onChange: event => setTrackLabels(event.target.value) },
|
|
28
31
|
React.createElement(MenuItem, { value: "offset" }, "Offset"),
|
|
29
32
|
React.createElement(MenuItem, { value: "overlay" }, "Overlay"),
|
|
30
33
|
React.createElement(MenuItem, { value: "left" }, "Left"),
|
|
31
34
|
React.createElement(MenuItem, { value: "none" }, "None")),
|
|
32
35
|
React.createElement("br", null),
|
|
33
|
-
session.allThemes ? (React.createElement(
|
|
36
|
+
session.allThemes ? (React.createElement(TextField2, { select: true, label: "Theme", variant: "outlined", value: themeName, onChange: event => setThemeName(event.target.value) }, Object.entries(session.allThemes()).map(([key, val]) => (React.createElement(MenuItem, { key: key, value: key },
|
|
34
37
|
// @ts-expect-error
|
|
35
38
|
val.name || '(Unknown name)'))))) : null,
|
|
36
39
|
offscreenCanvas ? (React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: rasterizeLayers, onChange: () => setRasterizeLayers(val => !val) }), 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"))),
|
|
@@ -51,6 +54,8 @@ export default function ExportSvgDialog({ model, handleClose, }) {
|
|
|
51
54
|
catch (e) {
|
|
52
55
|
console.error(e);
|
|
53
56
|
setError(e);
|
|
57
|
+
}
|
|
58
|
+
finally {
|
|
54
59
|
setLoading(false);
|
|
55
60
|
}
|
|
56
61
|
} }, "Submit"))));
|
|
@@ -4,6 +4,6 @@ declare const Overlay: (props: {
|
|
|
4
4
|
parentRef: React.RefObject<SVGSVGElement>;
|
|
5
5
|
model: BreakpointViewModel;
|
|
6
6
|
trackId: string;
|
|
7
|
-
getTrackYPosOverride?: (
|
|
7
|
+
getTrackYPosOverride?: (trackId: string, level: number) => number;
|
|
8
8
|
}) => React.JSX.Element | null;
|
|
9
9
|
export default Overlay;
|
|
@@ -4,6 +4,6 @@ declare const Translocations: ({ model, trackId, parentRef: ref, getTrackYPosOve
|
|
|
4
4
|
model: BreakpointViewModel;
|
|
5
5
|
trackId: string;
|
|
6
6
|
parentRef: React.RefObject<SVGSVGElement>;
|
|
7
|
-
getTrackYPosOverride?: (
|
|
7
|
+
getTrackYPosOverride?: (trackId: string, level: number) => number;
|
|
8
8
|
}) => React.JSX.Element | null;
|
|
9
9
|
export default Translocations;
|
|
@@ -70,7 +70,8 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
70
70
|
showCytobandsSetting: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
71
71
|
trackLabels: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
72
72
|
showGridlines: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
73
|
-
highlight: import("mobx-state-tree").
|
|
73
|
+
highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<Required<import("@jbrowse/core/util").ParsedLocString>, Required<import("@jbrowse/core/util").ParsedLocString>, Required<import("@jbrowse/core/util").ParsedLocString>>>, [undefined]>;
|
|
74
|
+
colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
74
75
|
}, {
|
|
75
76
|
width: number;
|
|
76
77
|
} & {
|
|
@@ -82,20 +83,13 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
82
83
|
} & {
|
|
83
84
|
volatileWidth: number | undefined;
|
|
84
85
|
minimumBlockWidth: number;
|
|
85
|
-
/**
|
|
86
|
-
* #action
|
|
87
|
-
*/
|
|
88
86
|
draggingTrackId: string | undefined;
|
|
89
87
|
volatileError: unknown;
|
|
90
88
|
afterDisplayedRegionsSetCallbacks: Function[];
|
|
91
|
-
scaleFactor: number;
|
|
92
|
-
* #action
|
|
93
|
-
*/
|
|
89
|
+
scaleFactor: number;
|
|
94
90
|
trackRefs: Record<string, HTMLDivElement>;
|
|
95
91
|
coarseDynamicBlocks: import("@jbrowse/core/util/blockTypes").BaseBlock[];
|
|
96
|
-
coarseTotalBp: number;
|
|
97
|
-
* #action
|
|
98
|
-
*/
|
|
92
|
+
coarseTotalBp: number;
|
|
99
93
|
leftOffset: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset | undefined;
|
|
100
94
|
rightOffset: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset | undefined;
|
|
101
95
|
} & {
|
|
@@ -133,6 +127,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
133
127
|
rewriteOnClicks(trackType: string, viewMenuActions: import("@jbrowse/core/ui").MenuItem[]): void;
|
|
134
128
|
readonly trackTypeActions: Map<string, import("@jbrowse/core/ui").MenuItem[]>;
|
|
135
129
|
} & {
|
|
130
|
+
setColorByCDS(flag: boolean): void;
|
|
136
131
|
setShowCytobands(flag: boolean): void;
|
|
137
132
|
setWidth(newWidth: number): void;
|
|
138
133
|
setError(error: unknown): void;
|
|
@@ -140,7 +135,9 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
140
135
|
setHideHeaderOverview(b: boolean): void;
|
|
141
136
|
setHideNoTracksActive(b: boolean): void;
|
|
142
137
|
setShowGridlines(b: boolean): void;
|
|
143
|
-
|
|
138
|
+
addToHighlights(highlight: Required<import("@jbrowse/core/util").ParsedLocString>): void;
|
|
139
|
+
setHighlight(highlight: Required<import("@jbrowse/core/util").ParsedLocString>[] | undefined): void;
|
|
140
|
+
removeHighlight(highlight: Required<import("@jbrowse/core/util").ParsedLocString>): void;
|
|
144
141
|
scrollTo(offsetPx: number): number;
|
|
145
142
|
zoomTo(bpPerPx: number, offset?: number, centerAtOffset?: boolean): number;
|
|
146
143
|
setOffsets(left?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset | undefined, right?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset | undefined): void;
|
|
@@ -150,6 +147,10 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
150
147
|
showTrack(trackId: string, initialSnapshot?: {}, displayInitialSnapshot?: {}): any;
|
|
151
148
|
hideTrack(trackId: string): number;
|
|
152
149
|
} & {
|
|
150
|
+
moveTrackDown(id: string): void;
|
|
151
|
+
moveTrackUp(id: string): void;
|
|
152
|
+
moveTrackToTop(id: string): void;
|
|
153
|
+
moveTrackToBottom(id: string): void;
|
|
153
154
|
moveTrack(movingId: string, targetId: string): void;
|
|
154
155
|
closeView(): void;
|
|
155
156
|
toggleTrack(trackId: string): boolean;
|
|
@@ -347,7 +348,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
347
348
|
index: number;
|
|
348
349
|
offsetPx: number;
|
|
349
350
|
} | undefined;
|
|
350
|
-
centerAt(coord: number, refName: string, regionNumber
|
|
351
|
+
centerAt(coord: number, refName: string, regionNumber?: number | undefined): void;
|
|
351
352
|
pxToBp(px: number): {
|
|
352
353
|
coord: number;
|
|
353
354
|
index: number;
|
|
@@ -372,7 +373,37 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
372
373
|
} | undefined;
|
|
373
374
|
} & {
|
|
374
375
|
afterCreate(): void;
|
|
375
|
-
}, import("mobx-state-tree").
|
|
376
|
+
}, import("mobx-state-tree").ModelCreationType<import("mobx-state-tree/dist/internal").ExtractCFromProps<{
|
|
377
|
+
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
378
|
+
displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
379
|
+
minimized: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
380
|
+
} & {
|
|
381
|
+
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
382
|
+
type: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
383
|
+
offsetPx: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
384
|
+
bpPerPx: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
385
|
+
displayedRegions: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
|
|
386
|
+
refName: import("mobx-state-tree").ISimpleType<string>;
|
|
387
|
+
start: import("mobx-state-tree").ISimpleType<number>;
|
|
388
|
+
end: import("mobx-state-tree").ISimpleType<number>;
|
|
389
|
+
reversed: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
390
|
+
} & {
|
|
391
|
+
assemblyName: import("mobx-state-tree").ISimpleType<string>;
|
|
392
|
+
}, {
|
|
393
|
+
setRefName(newRefName: string): void;
|
|
394
|
+
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
|
|
395
|
+
tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
|
|
396
|
+
hideHeader: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
397
|
+
hideHeaderOverview: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
398
|
+
hideNoTracksActive: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
399
|
+
trackSelectorType: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
400
|
+
showCenterLine: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
401
|
+
showCytobandsSetting: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
402
|
+
trackLabels: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
403
|
+
showGridlines: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
404
|
+
highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<Required<import("@jbrowse/core/util").ParsedLocString>, Required<import("@jbrowse/core/util").ParsedLocString>, Required<import("@jbrowse/core/util").ParsedLocString>>>, [undefined]>;
|
|
405
|
+
colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
406
|
+
}>>, import("mobx-state-tree")._NotCustomized>>;
|
|
376
407
|
}, {
|
|
377
408
|
width: number;
|
|
378
409
|
} & {
|
|
@@ -12,7 +12,7 @@ import { getTrackNameMaxLen, getTrackOffsets } from './util';
|
|
|
12
12
|
// render LGV to SVG
|
|
13
13
|
export async function renderToSvg(model, opts) {
|
|
14
14
|
var _a;
|
|
15
|
-
const { textHeight = 18, headerHeight = 30, rulerHeight = 30, fontSize = 13, trackLabels = 'offset', Wrapper = ({ children }) =>
|
|
15
|
+
const { textHeight = 18, headerHeight = 30, rulerHeight = 30, fontSize = 13, trackLabels = 'offset', Wrapper = ({ children }) => children, themeName = 'default', } = opts;
|
|
16
16
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
17
17
|
const { createRootFn } = getRoot(model);
|
|
18
18
|
const session = getSession(model);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-breakpoint-split-view",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.11.0",
|
|
4
4
|
"description": "JBrowse 2 breakpoint detail split view",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"publishConfig": {
|
|
59
59
|
"access": "public"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "3d43a820b9274a6160aa4dc15616147f390d9094"
|
|
62
62
|
}
|