@jbrowse/plugin-breakpoint-split-view 2.10.3 → 2.11.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.
- package/dist/BreakpointAlignmentsFeatureDetail/index.d.ts +1 -2
- package/dist/BreakpointAlignmentsFeatureDetail/index.js +3 -2
- package/dist/BreakpointSplitView/components/AlignmentConnections.d.ts +1 -1
- package/dist/BreakpointSplitView/components/AlignmentConnections.js +2 -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/index.d.ts +1 -2
- package/dist/BreakpointSplitView/index.js +3 -2
- 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/BreakpointAlignmentsFeatureDetail/index.d.ts +1 -2
- package/esm/BreakpointAlignmentsFeatureDetail/index.js +2 -2
- package/esm/BreakpointSplitView/components/AlignmentConnections.d.ts +1 -1
- package/esm/BreakpointSplitView/components/AlignmentConnections.js +3 -6
- 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/index.d.ts +1 -2
- package/esm/BreakpointSplitView/index.js +2 -2
- 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
|
@@ -43,7 +43,7 @@ const stateModel = mobx_state_tree_1.types
|
|
|
43
43
|
self.featureData = undefined;
|
|
44
44
|
},
|
|
45
45
|
}));
|
|
46
|
-
|
|
46
|
+
function BreakpointAlignmentsFeatureDetailF(pluginManager) {
|
|
47
47
|
pluginManager.addWidgetType(() => {
|
|
48
48
|
return new pluggableElementTypes_1.WidgetType({
|
|
49
49
|
name: 'BreakpointAlignmentsWidget',
|
|
@@ -53,4 +53,5 @@ exports.default = (pluginManager) => {
|
|
|
53
53
|
ReactComponent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./BreakpointAlignmentsFeatureDetail')))),
|
|
54
54
|
});
|
|
55
55
|
});
|
|
56
|
-
}
|
|
56
|
+
}
|
|
57
|
+
exports.default = BreakpointAlignmentsFeatureDetailF;
|
|
@@ -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;
|
|
@@ -59,10 +59,7 @@ const AlignmentConnections = (0, mobx_react_1.observer)(function ({ model, track
|
|
|
59
59
|
const rect = parentRef.current.getBoundingClientRect();
|
|
60
60
|
yOffset = rect.top;
|
|
61
61
|
}
|
|
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 => {
|
|
62
|
+
return assembly ? (react_1.default.createElement("g", { fill: "none", ...(0, util_1.getStrokeProps)(theme.palette.text.disabled), "data-testid": layoutMatches.length ? `${trackId}-loaded` : trackId }, layoutMatches.map(chunk => {
|
|
66
63
|
const ret = [];
|
|
67
64
|
// we follow a path in the list of chunks, not from top to bottom, just in series
|
|
68
65
|
// following x1,y1 -> x2,y2
|
|
@@ -127,6 +124,6 @@ const AlignmentConnections = (0, mobx_react_1.observer)(function ({ model, track
|
|
|
127
124
|
}, onMouseOver: () => setMouseoverElt(id), onMouseOut: () => setMouseoverElt(undefined) }));
|
|
128
125
|
}
|
|
129
126
|
return ret;
|
|
130
|
-
})));
|
|
127
|
+
}))) : null;
|
|
131
128
|
});
|
|
132
129
|
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;
|
|
@@ -30,7 +30,7 @@ const react_1 = require("react");
|
|
|
30
30
|
// locals
|
|
31
31
|
const BreakpointSplitView_1 = __importDefault(require("./BreakpointSplitView"));
|
|
32
32
|
const model_1 = __importDefault(require("./model"));
|
|
33
|
-
|
|
33
|
+
function BreakpointSplitViewF(pluginManager) {
|
|
34
34
|
pluginManager.addViewType(() => {
|
|
35
35
|
return new BreakpointSplitView_1.default({
|
|
36
36
|
name: 'BreakpointSplitView',
|
|
@@ -39,4 +39,5 @@ exports.default = (pluginManager) => {
|
|
|
39
39
|
ReactComponent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./components/BreakpointSplitView')))),
|
|
40
40
|
});
|
|
41
41
|
});
|
|
42
|
-
}
|
|
42
|
+
}
|
|
43
|
+
exports.default = BreakpointSplitViewF;
|
|
@@ -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);
|
|
@@ -18,7 +18,7 @@ const stateModel = types
|
|
|
18
18
|
self.featureData = undefined;
|
|
19
19
|
},
|
|
20
20
|
}));
|
|
21
|
-
export default (pluginManager)
|
|
21
|
+
export default function BreakpointAlignmentsFeatureDetailF(pluginManager) {
|
|
22
22
|
pluginManager.addWidgetType(() => {
|
|
23
23
|
return new WidgetType({
|
|
24
24
|
name: 'BreakpointAlignmentsWidget',
|
|
@@ -28,4 +28,4 @@ export default (pluginManager) => {
|
|
|
28
28
|
ReactComponent: lazy(() => import('./BreakpointAlignmentsFeatureDetail')),
|
|
29
29
|
});
|
|
30
30
|
});
|
|
31
|
-
}
|
|
31
|
+
}
|
|
@@ -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;
|
|
@@ -2,7 +2,7 @@ import React, { useMemo, useState } from 'react';
|
|
|
2
2
|
import { observer } from 'mobx-react';
|
|
3
3
|
import { getSnapshot } from 'mobx-state-tree';
|
|
4
4
|
import { useTheme } from '@mui/material';
|
|
5
|
-
import { getSession } from '@jbrowse/core/util';
|
|
5
|
+
import { getSession, getStrokeProps } from '@jbrowse/core/util';
|
|
6
6
|
// locals
|
|
7
7
|
import { getBadlyPairedAlignments, getMatchedAlignmentFeatures, hasPairedReads, } from './util';
|
|
8
8
|
import { yPos, useNextFrame, getPxFromCoordinate } from '../util';
|
|
@@ -34,10 +34,7 @@ const AlignmentConnections = observer(function ({ model, trackId, parentRef, get
|
|
|
34
34
|
const rect = parentRef.current.getBoundingClientRect();
|
|
35
35
|
yOffset = rect.top;
|
|
36
36
|
}
|
|
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 => {
|
|
37
|
+
return assembly ? (React.createElement("g", { fill: "none", ...getStrokeProps(theme.palette.text.disabled), "data-testid": layoutMatches.length ? `${trackId}-loaded` : trackId }, layoutMatches.map(chunk => {
|
|
41
38
|
const ret = [];
|
|
42
39
|
// we follow a path in the list of chunks, not from top to bottom, just in series
|
|
43
40
|
// following x1,y1 -> x2,y2
|
|
@@ -102,6 +99,6 @@ const AlignmentConnections = observer(function ({ model, trackId, parentRef, get
|
|
|
102
99
|
}, onMouseOver: () => setMouseoverElt(id), onMouseOut: () => setMouseoverElt(undefined) }));
|
|
103
100
|
}
|
|
104
101
|
return ret;
|
|
105
|
-
})));
|
|
102
|
+
}))) : null;
|
|
106
103
|
});
|
|
107
104
|
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;
|
|
@@ -2,7 +2,7 @@ import { lazy } from 'react';
|
|
|
2
2
|
// locals
|
|
3
3
|
import BreakpointSplitView from './BreakpointSplitView';
|
|
4
4
|
import stateModelFactory from './model';
|
|
5
|
-
export default (pluginManager)
|
|
5
|
+
export default function BreakpointSplitViewF(pluginManager) {
|
|
6
6
|
pluginManager.addViewType(() => {
|
|
7
7
|
return new BreakpointSplitView({
|
|
8
8
|
name: 'BreakpointSplitView',
|
|
@@ -11,4 +11,4 @@ export default (pluginManager) => {
|
|
|
11
11
|
ReactComponent: lazy(() => import('./components/BreakpointSplitView')),
|
|
12
12
|
});
|
|
13
13
|
});
|
|
14
|
-
}
|
|
14
|
+
}
|
|
@@ -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.1",
|
|
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": "11b28d66d782eb06f92ccb993108bb6c3c82819e"
|
|
62
62
|
}
|