@jbrowse/plugin-wiggle 4.1.3 → 4.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/esm/BigWigAdapter/BigWigAdapter.d.ts +14 -0
  2. package/esm/BigWigAdapter/BigWigAdapter.js +6 -0
  3. package/esm/BigWigAdapter/configSchema.d.ts +2 -2
  4. package/esm/DensityRenderer/configSchema.d.ts +2 -2
  5. package/esm/LinePlotRenderer/configSchema.d.ts +3 -3
  6. package/esm/LinearWiggleDisplay/configSchema.d.ts +6 -6
  7. package/esm/LinearWiggleDisplay/model.d.ts +24 -8
  8. package/esm/MultiDensityRenderer/configSchema.d.ts +2 -2
  9. package/esm/MultiLineRenderer/configSchema.d.ts +3 -3
  10. package/esm/MultiLinearWiggleDisplay/components/IndividualScaleBars.js +3 -2
  11. package/esm/MultiLinearWiggleDisplay/components/MultiWiggleColorLegend.d.ts +10 -0
  12. package/esm/MultiLinearWiggleDisplay/components/MultiWiggleColorLegend.js +29 -0
  13. package/esm/MultiLinearWiggleDisplay/components/MultiWiggleLegendBar.d.ts +7 -0
  14. package/esm/MultiLinearWiggleDisplay/components/MultiWiggleLegendBar.js +28 -0
  15. package/esm/MultiLinearWiggleDisplay/components/MultiWiggleLegendBarWrapper.d.ts +7 -0
  16. package/esm/MultiLinearWiggleDisplay/components/MultiWiggleLegendBarWrapper.js +18 -0
  17. package/esm/MultiLinearWiggleDisplay/components/RectBg.js +3 -1
  18. package/esm/MultiLinearWiggleDisplay/components/SvgTree.d.ts +5 -0
  19. package/esm/MultiLinearWiggleDisplay/components/SvgTree.js +19 -0
  20. package/esm/MultiLinearWiggleDisplay/components/TreeSidebar.d.ts +5 -0
  21. package/esm/MultiLinearWiggleDisplay/components/TreeSidebar.js +165 -0
  22. package/esm/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialogAuto.js +2 -1
  23. package/esm/MultiLinearWiggleDisplay/components/WiggleClusterDialog/types.d.ts +2 -1
  24. package/esm/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js +5 -2
  25. package/esm/MultiLinearWiggleDisplay/components/constants.d.ts +1 -0
  26. package/esm/MultiLinearWiggleDisplay/components/constants.js +1 -0
  27. package/esm/MultiLinearWiggleDisplay/components/treeTypes.d.ts +39 -0
  28. package/esm/MultiLinearWiggleDisplay/components/treeTypes.js +1 -0
  29. package/esm/MultiLinearWiggleDisplay/configSchema.d.ts +6 -6
  30. package/esm/MultiLinearWiggleDisplay/makeSidebarSvg.d.ts +9 -0
  31. package/esm/MultiLinearWiggleDisplay/makeSidebarSvg.js +13 -0
  32. package/esm/MultiLinearWiggleDisplay/model.d.ts +146 -25
  33. package/esm/MultiLinearWiggleDisplay/model.js +137 -5
  34. package/esm/MultiLinearWiggleDisplay/renderSvg.js +3 -1
  35. package/esm/MultiLinearWiggleDisplay/treeDrawingAutorun.d.ts +17 -0
  36. package/esm/MultiLinearWiggleDisplay/treeDrawingAutorun.js +77 -0
  37. package/esm/MultiQuantitativeTrack/configSchema.d.ts +8 -8
  38. package/esm/MultiRowLineRenderer/configSchema.d.ts +3 -3
  39. package/esm/MultiRowXYPlotRenderer/configSchema.d.ts +3 -3
  40. package/esm/MultiWiggleAdapter/MultiWiggleAdapter.d.ts +3 -0
  41. package/esm/MultiWiggleAdapter/MultiWiggleAdapter.js +5 -1
  42. package/esm/MultiWiggleAdapter/configSchema.d.ts +2 -2
  43. package/esm/MultiXYPlotRenderer/configSchema.d.ts +3 -3
  44. package/esm/QuantitativeTrack/configSchema.d.ts +8 -8
  45. package/esm/WiggleRPC/MultiWiggleClusterScoreMatrix.d.ts +4 -1
  46. package/esm/WiggleRPC/executeClusterScoreMatrix.d.ts +4 -1
  47. package/esm/WiggleRPC/executeClusterScoreMatrix.js +8 -2
  48. package/esm/XYPlotRenderer/configSchema.d.ts +3 -3
  49. package/esm/configSchema.d.ts +2 -2
  50. package/esm/d3-hierarchy2/accessors.d.ts +2 -0
  51. package/esm/d3-hierarchy2/accessors.js +8 -0
  52. package/esm/d3-hierarchy2/array.d.ts +2 -0
  53. package/esm/d3-hierarchy2/array.js +15 -0
  54. package/esm/d3-hierarchy2/cluster.d.ts +8 -0
  55. package/esm/d3-hierarchy2/cluster.js +63 -0
  56. package/esm/d3-hierarchy2/constant.d.ts +2 -0
  57. package/esm/d3-hierarchy2/constant.js +8 -0
  58. package/esm/d3-hierarchy2/hierarchy/ancestors.d.ts +1 -0
  59. package/esm/d3-hierarchy2/hierarchy/ancestors.js +7 -0
  60. package/esm/d3-hierarchy2/hierarchy/count.d.ts +1 -0
  61. package/esm/d3-hierarchy2/hierarchy/count.js +12 -0
  62. package/esm/d3-hierarchy2/hierarchy/descendants.d.ts +1 -0
  63. package/esm/d3-hierarchy2/hierarchy/descendants.js +3 -0
  64. package/esm/d3-hierarchy2/hierarchy/each.d.ts +1 -0
  65. package/esm/d3-hierarchy2/hierarchy/each.js +7 -0
  66. package/esm/d3-hierarchy2/hierarchy/eachAfter.d.ts +1 -0
  67. package/esm/d3-hierarchy2/hierarchy/eachAfter.js +15 -0
  68. package/esm/d3-hierarchy2/hierarchy/eachBefore.d.ts +1 -0
  69. package/esm/d3-hierarchy2/hierarchy/eachBefore.js +12 -0
  70. package/esm/d3-hierarchy2/hierarchy/find.d.ts +1 -0
  71. package/esm/d3-hierarchy2/hierarchy/find.js +8 -0
  72. package/esm/d3-hierarchy2/hierarchy/index.d.ts +3 -0
  73. package/esm/d3-hierarchy2/hierarchy/index.js +78 -0
  74. package/esm/d3-hierarchy2/hierarchy/iterator.d.ts +1 -0
  75. package/esm/d3-hierarchy2/hierarchy/iterator.js +14 -0
  76. package/esm/d3-hierarchy2/hierarchy/leaves.d.ts +1 -0
  77. package/esm/d3-hierarchy2/hierarchy/leaves.js +9 -0
  78. package/esm/d3-hierarchy2/hierarchy/links.d.ts +1 -0
  79. package/esm/d3-hierarchy2/hierarchy/links.js +9 -0
  80. package/esm/d3-hierarchy2/hierarchy/path.d.ts +1 -0
  81. package/esm/d3-hierarchy2/hierarchy/path.js +26 -0
  82. package/esm/d3-hierarchy2/hierarchy/sort.d.ts +1 -0
  83. package/esm/d3-hierarchy2/hierarchy/sort.js +7 -0
  84. package/esm/d3-hierarchy2/hierarchy/sum.d.ts +1 -0
  85. package/esm/d3-hierarchy2/hierarchy/sum.js +8 -0
  86. package/esm/d3-hierarchy2/index.d.ts +15 -0
  87. package/esm/d3-hierarchy2/index.js +15 -0
  88. package/esm/d3-hierarchy2/lcg.d.ts +1 -0
  89. package/esm/d3-hierarchy2/lcg.js +7 -0
  90. package/esm/d3-hierarchy2/pack/enclose.d.ts +10 -0
  91. package/esm/d3-hierarchy2/pack/enclose.js +84 -0
  92. package/esm/d3-hierarchy2/pack/index.d.ts +7 -0
  93. package/esm/d3-hierarchy2/pack/index.js +68 -0
  94. package/esm/d3-hierarchy2/pack/siblings.d.ts +2 -0
  95. package/esm/d3-hierarchy2/pack/siblings.js +94 -0
  96. package/esm/d3-hierarchy2/partition.d.ts +6 -0
  97. package/esm/d3-hierarchy2/partition.js +42 -0
  98. package/esm/d3-hierarchy2/stratify.d.ts +9 -0
  99. package/esm/d3-hierarchy2/stratify.js +115 -0
  100. package/esm/d3-hierarchy2/tree.d.ts +8 -0
  101. package/esm/d3-hierarchy2/tree.js +153 -0
  102. package/esm/d3-hierarchy2/treemap/binary.d.ts +1 -0
  103. package/esm/d3-hierarchy2/treemap/binary.js +36 -0
  104. package/esm/d3-hierarchy2/treemap/dice.d.ts +1 -0
  105. package/esm/d3-hierarchy2/treemap/dice.js +7 -0
  106. package/esm/d3-hierarchy2/treemap/index.d.ts +17 -0
  107. package/esm/d3-hierarchy2/treemap/index.js +72 -0
  108. package/esm/d3-hierarchy2/treemap/resquarify.d.ts +5 -0
  109. package/esm/d3-hierarchy2/treemap/resquarify.js +28 -0
  110. package/esm/d3-hierarchy2/treemap/round.d.ts +1 -0
  111. package/esm/d3-hierarchy2/treemap/round.js +6 -0
  112. package/esm/d3-hierarchy2/treemap/slice.d.ts +1 -0
  113. package/esm/d3-hierarchy2/treemap/slice.js +7 -0
  114. package/esm/d3-hierarchy2/treemap/sliceDice.d.ts +1 -0
  115. package/esm/d3-hierarchy2/treemap/sliceDice.js +5 -0
  116. package/esm/d3-hierarchy2/treemap/squarify.d.ts +11 -0
  117. package/esm/d3-hierarchy2/treemap/squarify.js +46 -0
  118. package/esm/index.d.ts +3 -3
  119. package/esm/shared/SharedWiggleConfigSchema.d.ts +3 -3
  120. package/esm/shared/SharedWiggleMixin.d.ts +28 -10
  121. package/esm/shared/SharedWiggleMixin.js +13 -3
  122. 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;
@@ -59,7 +59,8 @@ const WiggleClusterDialogAuto = observer(function WiggleClusterDialogAuto({ mode
59
59
  ...sourceItem,
60
60
  ...sourcesByName[sourceItem.name],
61
61
  };
62
- }));
62
+ }), false);
63
+ model.setClusterTree(ret.tree);
63
64
  }
64
65
  handleClose();
65
66
  }
@@ -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
- return (_jsxs("div", { children: [_jsx(BaseLinearDisplayComponent, { ...props }), _jsx(YScaleBars, { model: model })] }));
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
+ }
@@ -1,22 +1,22 @@
1
1
  import type PluginManager from '@jbrowse/core/PluginManager';
2
- export default function WiggleConfigFactory(pluginManager: PluginManager): import("node_modules/@jbrowse/core/src/configuration/configurationSchema.ts").ConfigurationSchemaType<{
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("node_modules/@jbrowse/core/src/configuration/configurationSchema.ts").ConfigurationSchemaType<{
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("node_modules/@jbrowse/core/src/configuration/configurationSchema.ts").ConfigurationSchemaOptions<undefined, undefined>>;
14
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
15
15
  height: {
16
16
  type: string;
17
17
  defaultValue: number;
18
18
  };
19
- }, import("node_modules/@jbrowse/core/src/configuration/configurationSchema.ts").ConfigurationSchemaOptions<import("node_modules/@jbrowse/core/src/configuration/configurationSchema.ts").ConfigurationSchemaType<{
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("node_modules/@jbrowse/core/src/configuration/configurationSchema.ts").ConfigurationSchemaOptions<import("node_modules/@jbrowse/core/src/configuration/configurationSchema.ts").ConfigurationSchemaType<{
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("node_modules/@jbrowse/core/src/configuration/configurationSchema.ts").ConfigurationSchemaOptions<undefined, "displayId">>, undefined>>, undefined>>;
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
+ }