@jbrowse/plugin-wiggle 4.1.3 → 4.1.4
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/esm/BigWigAdapter/BigWigAdapter.d.ts +14 -0
- package/esm/BigWigAdapter/BigWigAdapter.js +6 -0
- package/esm/BigWigAdapter/configSchema.d.ts +2 -2
- package/esm/DensityRenderer/configSchema.d.ts +2 -2
- package/esm/LinePlotRenderer/configSchema.d.ts +3 -3
- package/esm/LinearWiggleDisplay/configSchema.d.ts +6 -6
- package/esm/LinearWiggleDisplay/model.d.ts +24 -8
- package/esm/MultiDensityRenderer/configSchema.d.ts +2 -2
- package/esm/MultiLineRenderer/configSchema.d.ts +3 -3
- package/esm/MultiLinearWiggleDisplay/components/IndividualScaleBars.js +3 -2
- package/esm/MultiLinearWiggleDisplay/components/MultiWiggleColorLegend.d.ts +10 -0
- package/esm/MultiLinearWiggleDisplay/components/MultiWiggleColorLegend.js +29 -0
- package/esm/MultiLinearWiggleDisplay/components/MultiWiggleLegendBar.d.ts +7 -0
- package/esm/MultiLinearWiggleDisplay/components/MultiWiggleLegendBar.js +28 -0
- package/esm/MultiLinearWiggleDisplay/components/MultiWiggleLegendBarWrapper.d.ts +7 -0
- package/esm/MultiLinearWiggleDisplay/components/MultiWiggleLegendBarWrapper.js +18 -0
- package/esm/MultiLinearWiggleDisplay/components/RectBg.js +3 -1
- package/esm/MultiLinearWiggleDisplay/components/SvgTree.d.ts +5 -0
- package/esm/MultiLinearWiggleDisplay/components/SvgTree.js +19 -0
- package/esm/MultiLinearWiggleDisplay/components/TreeSidebar.d.ts +5 -0
- package/esm/MultiLinearWiggleDisplay/components/TreeSidebar.js +165 -0
- package/esm/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialogAuto.js +2 -1
- package/esm/MultiLinearWiggleDisplay/components/WiggleClusterDialog/types.d.ts +2 -1
- package/esm/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js +5 -2
- package/esm/MultiLinearWiggleDisplay/components/constants.d.ts +1 -0
- package/esm/MultiLinearWiggleDisplay/components/constants.js +1 -0
- package/esm/MultiLinearWiggleDisplay/components/treeTypes.d.ts +39 -0
- package/esm/MultiLinearWiggleDisplay/components/treeTypes.js +1 -0
- package/esm/MultiLinearWiggleDisplay/configSchema.d.ts +6 -6
- package/esm/MultiLinearWiggleDisplay/makeSidebarSvg.d.ts +9 -0
- package/esm/MultiLinearWiggleDisplay/makeSidebarSvg.js +13 -0
- package/esm/MultiLinearWiggleDisplay/model.d.ts +146 -25
- package/esm/MultiLinearWiggleDisplay/model.js +137 -5
- package/esm/MultiLinearWiggleDisplay/renderSvg.js +3 -1
- package/esm/MultiLinearWiggleDisplay/treeDrawingAutorun.d.ts +17 -0
- package/esm/MultiLinearWiggleDisplay/treeDrawingAutorun.js +77 -0
- package/esm/MultiQuantitativeTrack/configSchema.d.ts +8 -8
- package/esm/MultiRowLineRenderer/configSchema.d.ts +3 -3
- package/esm/MultiRowXYPlotRenderer/configSchema.d.ts +3 -3
- package/esm/MultiWiggleAdapter/MultiWiggleAdapter.d.ts +3 -0
- package/esm/MultiWiggleAdapter/MultiWiggleAdapter.js +5 -1
- package/esm/MultiWiggleAdapter/configSchema.d.ts +2 -2
- package/esm/MultiXYPlotRenderer/configSchema.d.ts +3 -3
- package/esm/QuantitativeTrack/configSchema.d.ts +8 -8
- package/esm/WiggleRPC/MultiWiggleClusterScoreMatrix.d.ts +4 -1
- package/esm/WiggleRPC/executeClusterScoreMatrix.d.ts +4 -1
- package/esm/WiggleRPC/executeClusterScoreMatrix.js +8 -2
- package/esm/XYPlotRenderer/configSchema.d.ts +3 -3
- package/esm/configSchema.d.ts +2 -2
- package/esm/d3-hierarchy2/accessors.d.ts +2 -0
- package/esm/d3-hierarchy2/accessors.js +8 -0
- package/esm/d3-hierarchy2/array.d.ts +2 -0
- package/esm/d3-hierarchy2/array.js +15 -0
- package/esm/d3-hierarchy2/cluster.d.ts +8 -0
- package/esm/d3-hierarchy2/cluster.js +63 -0
- package/esm/d3-hierarchy2/constant.d.ts +2 -0
- package/esm/d3-hierarchy2/constant.js +8 -0
- package/esm/d3-hierarchy2/hierarchy/ancestors.d.ts +1 -0
- package/esm/d3-hierarchy2/hierarchy/ancestors.js +7 -0
- package/esm/d3-hierarchy2/hierarchy/count.d.ts +1 -0
- package/esm/d3-hierarchy2/hierarchy/count.js +12 -0
- package/esm/d3-hierarchy2/hierarchy/descendants.d.ts +1 -0
- package/esm/d3-hierarchy2/hierarchy/descendants.js +3 -0
- package/esm/d3-hierarchy2/hierarchy/each.d.ts +1 -0
- package/esm/d3-hierarchy2/hierarchy/each.js +7 -0
- package/esm/d3-hierarchy2/hierarchy/eachAfter.d.ts +1 -0
- package/esm/d3-hierarchy2/hierarchy/eachAfter.js +15 -0
- package/esm/d3-hierarchy2/hierarchy/eachBefore.d.ts +1 -0
- package/esm/d3-hierarchy2/hierarchy/eachBefore.js +12 -0
- package/esm/d3-hierarchy2/hierarchy/find.d.ts +1 -0
- package/esm/d3-hierarchy2/hierarchy/find.js +8 -0
- package/esm/d3-hierarchy2/hierarchy/index.d.ts +3 -0
- package/esm/d3-hierarchy2/hierarchy/index.js +78 -0
- package/esm/d3-hierarchy2/hierarchy/iterator.d.ts +1 -0
- package/esm/d3-hierarchy2/hierarchy/iterator.js +14 -0
- package/esm/d3-hierarchy2/hierarchy/leaves.d.ts +1 -0
- package/esm/d3-hierarchy2/hierarchy/leaves.js +9 -0
- package/esm/d3-hierarchy2/hierarchy/links.d.ts +1 -0
- package/esm/d3-hierarchy2/hierarchy/links.js +9 -0
- package/esm/d3-hierarchy2/hierarchy/path.d.ts +1 -0
- package/esm/d3-hierarchy2/hierarchy/path.js +26 -0
- package/esm/d3-hierarchy2/hierarchy/sort.d.ts +1 -0
- package/esm/d3-hierarchy2/hierarchy/sort.js +7 -0
- package/esm/d3-hierarchy2/hierarchy/sum.d.ts +1 -0
- package/esm/d3-hierarchy2/hierarchy/sum.js +8 -0
- package/esm/d3-hierarchy2/index.d.ts +15 -0
- package/esm/d3-hierarchy2/index.js +15 -0
- package/esm/d3-hierarchy2/lcg.d.ts +1 -0
- package/esm/d3-hierarchy2/lcg.js +7 -0
- package/esm/d3-hierarchy2/pack/enclose.d.ts +10 -0
- package/esm/d3-hierarchy2/pack/enclose.js +84 -0
- package/esm/d3-hierarchy2/pack/index.d.ts +7 -0
- package/esm/d3-hierarchy2/pack/index.js +68 -0
- package/esm/d3-hierarchy2/pack/siblings.d.ts +2 -0
- package/esm/d3-hierarchy2/pack/siblings.js +94 -0
- package/esm/d3-hierarchy2/partition.d.ts +6 -0
- package/esm/d3-hierarchy2/partition.js +42 -0
- package/esm/d3-hierarchy2/stratify.d.ts +9 -0
- package/esm/d3-hierarchy2/stratify.js +115 -0
- package/esm/d3-hierarchy2/tree.d.ts +8 -0
- package/esm/d3-hierarchy2/tree.js +153 -0
- package/esm/d3-hierarchy2/treemap/binary.d.ts +1 -0
- package/esm/d3-hierarchy2/treemap/binary.js +36 -0
- package/esm/d3-hierarchy2/treemap/dice.d.ts +1 -0
- package/esm/d3-hierarchy2/treemap/dice.js +7 -0
- package/esm/d3-hierarchy2/treemap/index.d.ts +17 -0
- package/esm/d3-hierarchy2/treemap/index.js +72 -0
- package/esm/d3-hierarchy2/treemap/resquarify.d.ts +5 -0
- package/esm/d3-hierarchy2/treemap/resquarify.js +28 -0
- package/esm/d3-hierarchy2/treemap/round.d.ts +1 -0
- package/esm/d3-hierarchy2/treemap/round.js +6 -0
- package/esm/d3-hierarchy2/treemap/slice.d.ts +1 -0
- package/esm/d3-hierarchy2/treemap/slice.js +7 -0
- package/esm/d3-hierarchy2/treemap/sliceDice.d.ts +1 -0
- package/esm/d3-hierarchy2/treemap/sliceDice.js +5 -0
- package/esm/d3-hierarchy2/treemap/squarify.d.ts +11 -0
- package/esm/d3-hierarchy2/treemap/squarify.js +46 -0
- package/esm/index.d.ts +3 -3
- package/esm/shared/SharedWiggleConfigSchema.d.ts +3 -3
- package/esm/shared/SharedWiggleMixin.d.ts +28 -10
- package/esm/shared/SharedWiggleMixin.js +13 -3
- package/package.json +7 -7
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
3
|
+
import { ResizeHandle } from '@jbrowse/core/ui';
|
|
4
|
+
import { getContainingView } from '@jbrowse/core/util';
|
|
5
|
+
import Flatbush from '@jbrowse/core/util/flatbush';
|
|
6
|
+
import { makeStyles } from '@jbrowse/core/util/tss-react';
|
|
7
|
+
import { Menu, MenuItem, alpha } from '@mui/material';
|
|
8
|
+
import { autorun } from 'mobx';
|
|
9
|
+
import { observer } from 'mobx-react';
|
|
10
|
+
import { SIDEBAR_BACKGROUND_OPACITY } from "./constants.js";
|
|
11
|
+
const useStyles = makeStyles()(theme => ({
|
|
12
|
+
resizeHandle: {
|
|
13
|
+
position: 'absolute',
|
|
14
|
+
top: 0,
|
|
15
|
+
height: '100%',
|
|
16
|
+
width: 4,
|
|
17
|
+
zIndex: 101,
|
|
18
|
+
background: 'transparent',
|
|
19
|
+
'&:hover': {
|
|
20
|
+
background: theme.palette.divider,
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
treeBackground: {
|
|
24
|
+
position: 'absolute',
|
|
25
|
+
top: 0,
|
|
26
|
+
left: 0,
|
|
27
|
+
background: alpha(theme.palette.background.paper, SIDEBAR_BACKGROUND_OPACITY),
|
|
28
|
+
},
|
|
29
|
+
}));
|
|
30
|
+
function getDescendantNames(node) {
|
|
31
|
+
if (!node.children?.length) {
|
|
32
|
+
return [node.data.name];
|
|
33
|
+
}
|
|
34
|
+
return node.children.flatMap(child => getDescendantNames(child));
|
|
35
|
+
}
|
|
36
|
+
const TreeSidebar = observer(function TreeSidebar({ model, }) {
|
|
37
|
+
const { classes } = useStyles();
|
|
38
|
+
const { width: viewWidth } = getContainingView(model);
|
|
39
|
+
const [nodeIndex, setNodeIndex] = useState(null);
|
|
40
|
+
const [nodeData, setNodeData] = useState([]);
|
|
41
|
+
const [menuAnchor, setMenuAnchor] = useState(null);
|
|
42
|
+
const { hierarchy, treeAreaWidth, height, scrollTop, showTree, sources } = model;
|
|
43
|
+
const treeCanvasRef = useCallback((ref) => {
|
|
44
|
+
model.setTreeCanvasRef(ref);
|
|
45
|
+
}, [model, treeAreaWidth, height]);
|
|
46
|
+
const mouseoverCanvasRef = useCallback((ref) => {
|
|
47
|
+
model.setMouseoverCanvasRef(ref);
|
|
48
|
+
}, [model, viewWidth, height]);
|
|
49
|
+
useEffect(() => {
|
|
50
|
+
return autorun(function treeSpatialIndexAutorun() {
|
|
51
|
+
const { treeAreaWidth: _t, hierarchy: h, totalHeight: th } = model;
|
|
52
|
+
th;
|
|
53
|
+
if (!h) {
|
|
54
|
+
setNodeIndex(null);
|
|
55
|
+
setNodeData([]);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const nodes = h.descendants().filter(node => node.children?.length);
|
|
59
|
+
const index = new Flatbush(nodes.length);
|
|
60
|
+
const hitRadius = 8;
|
|
61
|
+
for (const node of nodes) {
|
|
62
|
+
const x = node.y;
|
|
63
|
+
const y = node.x;
|
|
64
|
+
index.add(x - hitRadius, y - hitRadius, x + hitRadius, y + hitRadius);
|
|
65
|
+
}
|
|
66
|
+
index.finish();
|
|
67
|
+
setNodeIndex(index);
|
|
68
|
+
setNodeData(nodes);
|
|
69
|
+
}, { name: 'TreeSpatialIndex' });
|
|
70
|
+
}, [model]);
|
|
71
|
+
const handleMouseMove = useCallback((event) => {
|
|
72
|
+
if (!hierarchy || !nodeIndex) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const rect = event.currentTarget.getBoundingClientRect();
|
|
76
|
+
const x = event.clientX - rect.left;
|
|
77
|
+
const y = event.clientY - rect.top + scrollTop;
|
|
78
|
+
const results = nodeIndex.search(x, y, x, y);
|
|
79
|
+
const node = results.length > 0 ? nodeData[results[0]] : undefined;
|
|
80
|
+
if (node) {
|
|
81
|
+
const descendantNames = getDescendantNames(node);
|
|
82
|
+
model.setHoveredTreeNode({
|
|
83
|
+
node,
|
|
84
|
+
descendantNames,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
model.setHoveredTreeNode(undefined);
|
|
89
|
+
}
|
|
90
|
+
}, [hierarchy, nodeIndex, nodeData, scrollTop, model]);
|
|
91
|
+
const handleMouseLeave = useCallback(() => {
|
|
92
|
+
model.setHoveredTreeNode(undefined);
|
|
93
|
+
}, [model]);
|
|
94
|
+
const handleClick = useCallback((event) => {
|
|
95
|
+
if (!hierarchy || !nodeIndex) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const rect = event.currentTarget.getBoundingClientRect();
|
|
99
|
+
const x = event.clientX - rect.left;
|
|
100
|
+
const y = event.clientY - rect.top + scrollTop;
|
|
101
|
+
const results = nodeIndex.search(x, y, x, y);
|
|
102
|
+
const node = results.length > 0 ? nodeData[results[0]] : undefined;
|
|
103
|
+
if (node) {
|
|
104
|
+
const descendantNames = getDescendantNames(node);
|
|
105
|
+
setMenuAnchor({
|
|
106
|
+
x: event.clientX,
|
|
107
|
+
y: event.clientY,
|
|
108
|
+
names: descendantNames,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}, [hierarchy, nodeIndex, nodeData, scrollTop]);
|
|
112
|
+
const handleCloseMenu = useCallback(() => {
|
|
113
|
+
setMenuAnchor(null);
|
|
114
|
+
}, []);
|
|
115
|
+
if (!hierarchy || !showTree || !sources?.length) {
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
return (_jsxs(_Fragment, { children: [_jsxs("div", { style: {
|
|
119
|
+
position: 'sticky',
|
|
120
|
+
top: 0,
|
|
121
|
+
left: 0,
|
|
122
|
+
height: 0,
|
|
123
|
+
zIndex: 100,
|
|
124
|
+
}, children: [_jsx("div", { className: classes.treeBackground, style: {
|
|
125
|
+
width: treeAreaWidth,
|
|
126
|
+
height,
|
|
127
|
+
} }), _jsx("canvas", { ref: treeCanvasRef, width: treeAreaWidth * 2, height: height * 2, style: {
|
|
128
|
+
width: treeAreaWidth,
|
|
129
|
+
height,
|
|
130
|
+
position: 'absolute',
|
|
131
|
+
top: 0,
|
|
132
|
+
left: 0,
|
|
133
|
+
pointerEvents: 'none',
|
|
134
|
+
} }), _jsx("canvas", { ref: mouseoverCanvasRef, width: viewWidth, height: height, style: {
|
|
135
|
+
width: viewWidth,
|
|
136
|
+
height,
|
|
137
|
+
position: 'absolute',
|
|
138
|
+
top: 0,
|
|
139
|
+
left: 0,
|
|
140
|
+
zIndex: 1,
|
|
141
|
+
pointerEvents: 'none',
|
|
142
|
+
} }), _jsx("div", { onMouseMove: handleMouseMove, onMouseLeave: handleMouseLeave, onClick: handleClick, style: {
|
|
143
|
+
position: 'absolute',
|
|
144
|
+
top: 0,
|
|
145
|
+
left: 0,
|
|
146
|
+
width: treeAreaWidth,
|
|
147
|
+
height,
|
|
148
|
+
zIndex: 2,
|
|
149
|
+
cursor: 'pointer',
|
|
150
|
+
} })] }), _jsx(ResizeHandle, { onDrag: distance => {
|
|
151
|
+
model.setTreeAreaWidth(Math.max(50, treeAreaWidth + distance));
|
|
152
|
+
return undefined;
|
|
153
|
+
}, className: classes.resizeHandle, style: {
|
|
154
|
+
left: treeAreaWidth,
|
|
155
|
+
}, vertical: true }), _jsxs(Menu, { open: !!menuAnchor, onClose: handleCloseMenu, anchorReference: "anchorPosition", anchorPosition: menuAnchor ? { top: menuAnchor.y, left: menuAnchor.x } : undefined, children: [model.subtreeFilter?.length ? (_jsx(MenuItem, { onClick: () => {
|
|
156
|
+
model.setSubtreeFilter(undefined);
|
|
157
|
+
handleCloseMenu();
|
|
158
|
+
}, children: "Clear subtree filter" })) : null, _jsxs(MenuItem, { onClick: () => {
|
|
159
|
+
if (menuAnchor) {
|
|
160
|
+
model.setSubtreeFilter(menuAnchor.names);
|
|
161
|
+
}
|
|
162
|
+
handleCloseMenu();
|
|
163
|
+
}, children: ["Show only subtree (", menuAnchor?.names.length, " samples)"] })] })] }));
|
|
164
|
+
});
|
|
165
|
+
export default TreeSidebar;
|
|
@@ -4,5 +4,6 @@ export interface ReducedModel {
|
|
|
4
4
|
sourcesWithoutLayout?: Source[];
|
|
5
5
|
layout?: Source[];
|
|
6
6
|
adapterConfig: AnyConfigurationModel;
|
|
7
|
-
setLayout: (arg: Source[]) => void;
|
|
7
|
+
setLayout: (arg: Source[], clearTree?: boolean) => void;
|
|
8
|
+
setClusterTree: (tree?: string) => void;
|
|
8
9
|
}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { BaseLinearDisplayComponent } from '@jbrowse/plugin-linear-genome-view';
|
|
3
3
|
import { observer } from 'mobx-react';
|
|
4
|
+
import MultiWiggleLegendBar from "./MultiWiggleLegendBar.js";
|
|
5
|
+
import TreeSidebar from "./TreeSidebar.js";
|
|
4
6
|
import YScaleBars from "./YScaleBars.js";
|
|
5
7
|
const MultiLinearWiggleDisplayComponent = observer(function MultiLinearWiggleDisplayComponent(props) {
|
|
6
8
|
const { model } = props;
|
|
7
|
-
|
|
9
|
+
const { isMultiRow } = model;
|
|
10
|
+
return (_jsxs("div", { children: [isMultiRow ? (_jsxs(_Fragment, { children: [_jsx(TreeSidebar, { model: model }), _jsx(MultiWiggleLegendBar, { model: model })] })) : null, _jsx(BaseLinearDisplayComponent, { ...props }), _jsx(YScaleBars, { model: model })] }));
|
|
8
11
|
});
|
|
9
12
|
export default MultiLinearWiggleDisplayComponent;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const SIDEBAR_BACKGROUND_OPACITY = 0.8;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const SIDEBAR_BACKGROUND_OPACITY = 0.8;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Source } from '../../util.ts';
|
|
2
|
+
import type { HierarchyNode } from 'd3-hierarchy';
|
|
3
|
+
export interface ClusterNodeData {
|
|
4
|
+
name: string;
|
|
5
|
+
height: number;
|
|
6
|
+
children?: ClusterNodeData[];
|
|
7
|
+
}
|
|
8
|
+
export type ClusterHierarchyNode = HierarchyNode<ClusterNodeData>;
|
|
9
|
+
export interface HoveredTreeNode {
|
|
10
|
+
node: ClusterHierarchyNode;
|
|
11
|
+
descendantNames: string[];
|
|
12
|
+
}
|
|
13
|
+
export interface TreeSidebarModel {
|
|
14
|
+
totalHeight: number;
|
|
15
|
+
hierarchy?: ClusterHierarchyNode;
|
|
16
|
+
treeAreaWidth: number;
|
|
17
|
+
height: number;
|
|
18
|
+
scrollTop: number;
|
|
19
|
+
showTree: boolean;
|
|
20
|
+
sources?: Source[];
|
|
21
|
+
subtreeFilter?: string[];
|
|
22
|
+
setTreeCanvasRef: (ref: HTMLCanvasElement | null) => void;
|
|
23
|
+
setMouseoverCanvasRef: (ref: HTMLCanvasElement | null) => void;
|
|
24
|
+
setHoveredTreeNode: (node?: HoveredTreeNode) => void;
|
|
25
|
+
setTreeAreaWidth: (width: number) => void;
|
|
26
|
+
setSubtreeFilter: (names?: string[]) => void;
|
|
27
|
+
}
|
|
28
|
+
export interface LegendBarModel {
|
|
29
|
+
id: string;
|
|
30
|
+
scrollTop: number;
|
|
31
|
+
height: number;
|
|
32
|
+
hierarchy?: ClusterHierarchyNode;
|
|
33
|
+
treeAreaWidth: number;
|
|
34
|
+
totalHeight: number;
|
|
35
|
+
canDisplayLegendLabels: boolean;
|
|
36
|
+
rowHeight: number;
|
|
37
|
+
sources?: Source[];
|
|
38
|
+
showTree: boolean;
|
|
39
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import type PluginManager from '@jbrowse/core/PluginManager';
|
|
2
|
-
export default function WiggleConfigFactory(pluginManager: PluginManager): import("
|
|
2
|
+
export default function WiggleConfigFactory(pluginManager: PluginManager): import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
|
|
3
3
|
defaultRendering: {
|
|
4
4
|
type: string;
|
|
5
5
|
model: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
|
|
6
6
|
defaultValue: string;
|
|
7
7
|
};
|
|
8
|
-
renderers: import("
|
|
8
|
+
renderers: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
|
|
9
9
|
MultiXYPlotRenderer: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
|
|
10
10
|
MultiDensityRenderer: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
|
|
11
11
|
MultiRowXYPlotRenderer: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
|
|
12
12
|
MultiLineRenderer: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
|
|
13
13
|
MultiRowLineRenderer: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
|
|
14
|
-
}, import("
|
|
14
|
+
}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
|
|
15
15
|
height: {
|
|
16
16
|
type: string;
|
|
17
17
|
defaultValue: number;
|
|
18
18
|
};
|
|
19
|
-
}, import("
|
|
19
|
+
}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
|
|
20
20
|
autoscale: {
|
|
21
21
|
type: string;
|
|
22
22
|
defaultValue: string;
|
|
@@ -54,7 +54,7 @@ export default function WiggleConfigFactory(pluginManager: PluginManager): impor
|
|
|
54
54
|
description: string;
|
|
55
55
|
defaultValue: boolean;
|
|
56
56
|
};
|
|
57
|
-
}, import("
|
|
57
|
+
}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
|
|
58
58
|
maxFeatureScreenDensity: {
|
|
59
59
|
type: string;
|
|
60
60
|
description: string;
|
|
@@ -81,4 +81,4 @@ export default function WiggleConfigFactory(pluginManager: PluginManager): impor
|
|
|
81
81
|
description: string;
|
|
82
82
|
defaultValue: never[];
|
|
83
83
|
};
|
|
84
|
-
}, import("
|
|
84
|
+
}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "displayId">>, undefined>>, undefined>>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { LegendBarModel } from './components/treeTypes.ts';
|
|
2
|
+
interface Model extends LegendBarModel {
|
|
3
|
+
hierarchy: any;
|
|
4
|
+
totalHeight: number;
|
|
5
|
+
treeAreaWidth: number;
|
|
6
|
+
isMultiRow: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function makeSidebarSvg(self: Model): Promise<import("react/jsx-runtime").JSX.Element | null>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { getContainingView } from '@jbrowse/core/util';
|
|
3
|
+
import MultiWiggleLegendBar from "./components/MultiWiggleLegendBar.js";
|
|
4
|
+
import RectBg from "./components/RectBg.js";
|
|
5
|
+
import SvgTree from "./components/SvgTree.js";
|
|
6
|
+
export async function makeSidebarSvg(self) {
|
|
7
|
+
const { offsetPx } = getContainingView(self);
|
|
8
|
+
const { hierarchy, showTree, treeAreaWidth, height, isMultiRow } = self;
|
|
9
|
+
if (!isMultiRow) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
return (_jsxs("g", { id: "tree-layer", "data-testid": "tree-layer", transform: `translate(${Math.max(-offsetPx, 0)})`, clipPath: "url(#sidebarClip)", children: [_jsx("clipPath", { id: "sidebarClip", children: _jsx("rect", { x: "0", y: "0", width: "100%", height: height }) }), _jsx("g", { id: "legend-layer", transform: `translate(${showTree && hierarchy ? treeAreaWidth : 0})`, children: _jsx(MultiWiggleLegendBar, { model: self, orientation: "left", exportSVG: true }) }), showTree && hierarchy ? (_jsxs(_Fragment, { children: [_jsx(RectBg, { x: 0, y: 0, width: treeAreaWidth, height: height }), _jsx(SvgTree, { model: self })] })) : null] }));
|
|
13
|
+
}
|