@jbrowse/plugin-linear-comparative-view 2.17.0 → 2.18.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/LGVSyntenyDisplay/components/LaunchSyntenyViewDialog.d.ts +1 -1
- package/dist/LGVSyntenyDisplay/components/LaunchSyntenyViewDialog.js +0 -2
- package/dist/LGVSyntenyDisplay/components/util.d.ts +3 -3
- package/dist/LGVSyntenyDisplay/components/util.js +0 -1
- package/dist/LGVSyntenyDisplay/configSchemaF.d.ts +19 -10
- package/dist/LGVSyntenyDisplay/configSchemaF.js +12 -9
- package/dist/LGVSyntenyDisplay/index.d.ts +1 -1
- package/dist/LGVSyntenyDisplay/index.js +1 -1
- package/dist/LGVSyntenyDisplay/model.d.ts +102 -63
- package/dist/LGVSyntenyDisplay/model.js +1 -29
- package/dist/LaunchLinearSyntenyView.d.ts +1 -1
- package/dist/LaunchLinearSyntenyView.js +1 -3
- package/dist/LinearComparativeDisplay/configSchemaF.d.ts +0 -3
- package/dist/LinearComparativeDisplay/configSchemaF.js +0 -6
- package/dist/LinearComparativeDisplay/index.d.ts +1 -1
- package/dist/LinearComparativeDisplay/stateModelFactory.d.ts +12 -69
- package/dist/LinearComparativeDisplay/stateModelFactory.js +13 -57
- package/dist/LinearComparativeView/components/Header.d.ts +1 -1
- package/dist/LinearComparativeView/components/Header.js +4 -5
- package/dist/LinearComparativeView/components/HeaderSearchBoxes.d.ts +1 -1
- package/dist/LinearComparativeView/components/HeaderSearchBoxes.js +3 -4
- package/dist/LinearComparativeView/components/LinearComparativeRenderArea.d.ts +1 -1
- package/dist/LinearComparativeView/components/LinearComparativeRenderArea.js +8 -15
- package/dist/LinearComparativeView/components/LinearComparativeView.d.ts +1 -1
- package/dist/LinearComparativeView/components/LinearComparativeView.js +2 -4
- package/dist/LinearComparativeView/components/Rubberband.d.ts +1 -1
- package/dist/LinearComparativeView/components/Rubberband.js +17 -19
- package/dist/LinearComparativeView/components/VerticalGuide.d.ts +1 -1
- package/dist/LinearComparativeView/components/VerticalGuide.js +1 -1
- package/dist/LinearComparativeView/index.d.ts +1 -1
- package/dist/LinearComparativeView/model.d.ts +6 -62
- package/dist/LinearComparativeView/model.js +3 -99
- package/dist/LinearReadVsRef/LinearReadVsRef.d.ts +1 -1
- package/dist/LinearReadVsRef/LinearReadVsRef.js +5 -19
- package/dist/LinearReadVsRef/index.d.ts +1 -1
- package/dist/LinearReadVsRef/index.js +0 -2
- package/dist/LinearSyntenyDisplay/afterAttach.d.ts +1 -1
- package/dist/LinearSyntenyDisplay/afterAttach.js +2 -9
- package/dist/LinearSyntenyDisplay/components/Component.d.ts +1 -1
- package/dist/LinearSyntenyDisplay/components/Component.js +2 -4
- package/dist/LinearSyntenyDisplay/components/LinearSyntenyRendering.d.ts +1 -1
- package/dist/LinearSyntenyDisplay/components/LinearSyntenyRendering.js +6 -22
- package/dist/LinearSyntenyDisplay/components/SyntenyContextMenu.d.ts +2 -2
- package/dist/LinearSyntenyDisplay/components/SyntenyContextMenu.js +1 -1
- package/dist/LinearSyntenyDisplay/components/SyntenyTooltip.js +1 -1
- package/dist/LinearSyntenyDisplay/components/util.d.ts +3 -3
- package/dist/LinearSyntenyDisplay/components/util.js +0 -9
- package/dist/LinearSyntenyDisplay/configSchemaF.d.ts +1 -12
- package/dist/LinearSyntenyDisplay/configSchemaF.js +0 -15
- package/dist/LinearSyntenyDisplay/drawSynteny.d.ts +1 -1
- package/dist/LinearSyntenyDisplay/drawSynteny.js +1 -23
- package/dist/LinearSyntenyDisplay/index.d.ts +1 -1
- package/dist/LinearSyntenyDisplay/index.js +1 -2
- package/dist/LinearSyntenyDisplay/model.d.ts +8 -102
- package/dist/LinearSyntenyDisplay/model.js +1 -92
- package/dist/LinearSyntenyView/components/ExportSvgDialog.d.ts +1 -1
- package/dist/LinearSyntenyView/components/ExportSvgDialog.js +2 -4
- package/dist/LinearSyntenyView/components/Icons.d.ts +1 -1
- package/dist/LinearSyntenyView/components/ImportForm/AddCustomTrack.d.ts +2 -2
- package/dist/LinearSyntenyView/components/ImportForm/AddCustomTrack.js +1 -1
- package/dist/LinearSyntenyView/components/ImportForm/LinearSyntenyImportForm.d.ts +1 -1
- package/dist/LinearSyntenyView/components/ImportForm/LinearSyntenyImportForm.js +6 -8
- package/dist/LinearSyntenyView/components/ImportForm/TrackSelector.d.ts +1 -1
- package/dist/LinearSyntenyView/components/ImportForm/TrackSelector.js +3 -5
- package/dist/LinearSyntenyView/components/ImportForm/TrackSelectorUtil.d.ts +3 -3
- package/dist/LinearSyntenyView/components/ImportForm/util.js +1 -3
- package/dist/LinearSyntenyView/components/LinearSyntenyView.d.ts +1 -1
- package/dist/LinearSyntenyView/components/LinearSyntenyView.js +0 -1
- package/dist/LinearSyntenyView/index.d.ts +1 -1
- package/dist/LinearSyntenyView/model.d.ts +5 -28
- package/dist/LinearSyntenyView/model.js +4 -41
- package/dist/LinearSyntenyView/svgcomponents/SVGBackground.js +1 -1
- package/dist/LinearSyntenyView/svgcomponents/SVGLinearGenomeView.d.ts +1 -1
- package/dist/LinearSyntenyView/svgcomponents/SVGLinearGenomeView.js +1 -1
- package/dist/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.d.ts +1 -1
- package/dist/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.js +5 -10
- package/dist/LinearSyntenyViewHelper/index.d.ts +1 -1
- package/dist/LinearSyntenyViewHelper/stateModelFactory.d.ts +2 -14
- package/dist/LinearSyntenyViewHelper/stateModelFactory.js +2 -29
- package/dist/SyntenyFeatureDetail/SyntenyFeatureDetail.d.ts +1 -1
- package/dist/SyntenyFeatureDetail/SyntenyFeatureDetail.js +4 -13
- package/dist/SyntenyFeatureDetail/index.d.ts +1 -1
- package/dist/SyntenyFeatureDetail/index.js +1 -7
- package/dist/SyntenyTrack/configSchema.d.ts +1 -1
- package/dist/SyntenyTrack/configSchema.js +1 -9
- package/dist/SyntenyTrack/index.d.ts +1 -1
- package/dist/SyntenyTrack/index.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -4
- package/dist/util.d.ts +2 -2
- package/dist/util.js +1 -11
- package/esm/LGVSyntenyDisplay/components/LaunchSyntenyViewDialog.d.ts +1 -1
- package/esm/LGVSyntenyDisplay/components/LaunchSyntenyViewDialog.js +0 -2
- package/esm/LGVSyntenyDisplay/components/util.d.ts +3 -3
- package/esm/LGVSyntenyDisplay/components/util.js +0 -1
- package/esm/LGVSyntenyDisplay/configSchemaF.d.ts +19 -10
- package/esm/LGVSyntenyDisplay/configSchemaF.js +12 -9
- package/esm/LGVSyntenyDisplay/index.d.ts +1 -1
- package/esm/LGVSyntenyDisplay/index.js +1 -1
- package/esm/LGVSyntenyDisplay/model.d.ts +102 -63
- package/esm/LGVSyntenyDisplay/model.js +2 -30
- package/esm/LaunchLinearSyntenyView.d.ts +1 -1
- package/esm/LaunchLinearSyntenyView.js +1 -3
- package/esm/LinearComparativeDisplay/configSchemaF.d.ts +0 -3
- package/esm/LinearComparativeDisplay/configSchemaF.js +0 -6
- package/esm/LinearComparativeDisplay/index.d.ts +1 -1
- package/esm/LinearComparativeDisplay/stateModelFactory.d.ts +12 -69
- package/esm/LinearComparativeDisplay/stateModelFactory.js +14 -58
- package/esm/LinearComparativeView/components/Header.d.ts +1 -1
- package/esm/LinearComparativeView/components/Header.js +4 -5
- package/esm/LinearComparativeView/components/HeaderSearchBoxes.d.ts +1 -1
- package/esm/LinearComparativeView/components/HeaderSearchBoxes.js +3 -4
- package/esm/LinearComparativeView/components/LinearComparativeRenderArea.d.ts +1 -1
- package/esm/LinearComparativeView/components/LinearComparativeRenderArea.js +8 -15
- package/esm/LinearComparativeView/components/LinearComparativeView.d.ts +1 -1
- package/esm/LinearComparativeView/components/LinearComparativeView.js +2 -4
- package/esm/LinearComparativeView/components/Rubberband.d.ts +1 -1
- package/esm/LinearComparativeView/components/Rubberband.js +18 -20
- package/esm/LinearComparativeView/components/VerticalGuide.d.ts +1 -1
- package/esm/LinearComparativeView/components/VerticalGuide.js +1 -1
- package/esm/LinearComparativeView/index.d.ts +1 -1
- package/esm/LinearComparativeView/model.d.ts +6 -62
- package/esm/LinearComparativeView/model.js +4 -100
- package/esm/LinearReadVsRef/LinearReadVsRef.d.ts +1 -1
- package/esm/LinearReadVsRef/LinearReadVsRef.js +5 -19
- package/esm/LinearReadVsRef/index.d.ts +1 -1
- package/esm/LinearReadVsRef/index.js +1 -3
- package/esm/LinearSyntenyDisplay/afterAttach.d.ts +1 -1
- package/esm/LinearSyntenyDisplay/afterAttach.js +2 -9
- package/esm/LinearSyntenyDisplay/components/Component.d.ts +1 -1
- package/esm/LinearSyntenyDisplay/components/Component.js +2 -4
- package/esm/LinearSyntenyDisplay/components/LinearSyntenyRendering.d.ts +1 -1
- package/esm/LinearSyntenyDisplay/components/LinearSyntenyRendering.js +8 -24
- package/esm/LinearSyntenyDisplay/components/SyntenyContextMenu.d.ts +2 -2
- package/esm/LinearSyntenyDisplay/components/SyntenyContextMenu.js +1 -1
- package/esm/LinearSyntenyDisplay/components/SyntenyTooltip.js +1 -1
- package/esm/LinearSyntenyDisplay/components/util.d.ts +3 -3
- package/esm/LinearSyntenyDisplay/components/util.js +2 -11
- package/esm/LinearSyntenyDisplay/configSchemaF.d.ts +1 -12
- package/esm/LinearSyntenyDisplay/configSchemaF.js +0 -15
- package/esm/LinearSyntenyDisplay/drawSynteny.d.ts +1 -1
- package/esm/LinearSyntenyDisplay/drawSynteny.js +1 -23
- package/esm/LinearSyntenyDisplay/index.d.ts +1 -1
- package/esm/LinearSyntenyDisplay/index.js +1 -2
- package/esm/LinearSyntenyDisplay/model.d.ts +8 -102
- package/esm/LinearSyntenyDisplay/model.js +1 -92
- package/esm/LinearSyntenyView/components/ExportSvgDialog.d.ts +1 -1
- package/esm/LinearSyntenyView/components/ExportSvgDialog.js +2 -4
- package/esm/LinearSyntenyView/components/Icons.d.ts +1 -1
- package/esm/LinearSyntenyView/components/ImportForm/AddCustomTrack.d.ts +2 -2
- package/esm/LinearSyntenyView/components/ImportForm/AddCustomTrack.js +2 -2
- package/esm/LinearSyntenyView/components/ImportForm/LinearSyntenyImportForm.d.ts +1 -1
- package/esm/LinearSyntenyView/components/ImportForm/LinearSyntenyImportForm.js +6 -8
- package/esm/LinearSyntenyView/components/ImportForm/TrackSelector.d.ts +1 -1
- package/esm/LinearSyntenyView/components/ImportForm/TrackSelector.js +4 -6
- package/esm/LinearSyntenyView/components/ImportForm/TrackSelectorUtil.d.ts +3 -3
- package/esm/LinearSyntenyView/components/ImportForm/TrackSelectorUtil.js +1 -1
- package/esm/LinearSyntenyView/components/ImportForm/util.js +1 -3
- package/esm/LinearSyntenyView/components/LinearSyntenyView.d.ts +1 -1
- package/esm/LinearSyntenyView/components/LinearSyntenyView.js +0 -1
- package/esm/LinearSyntenyView/index.d.ts +1 -1
- package/esm/LinearSyntenyView/model.d.ts +5 -28
- package/esm/LinearSyntenyView/model.js +4 -41
- package/esm/LinearSyntenyView/svgcomponents/SVGBackground.js +1 -1
- package/esm/LinearSyntenyView/svgcomponents/SVGLinearGenomeView.d.ts +1 -1
- package/esm/LinearSyntenyView/svgcomponents/SVGLinearGenomeView.js +2 -2
- package/esm/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.d.ts +1 -1
- package/esm/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.js +6 -11
- package/esm/LinearSyntenyViewHelper/index.d.ts +1 -1
- package/esm/LinearSyntenyViewHelper/stateModelFactory.d.ts +2 -14
- package/esm/LinearSyntenyViewHelper/stateModelFactory.js +2 -29
- package/esm/SyntenyFeatureDetail/SyntenyFeatureDetail.d.ts +1 -1
- package/esm/SyntenyFeatureDetail/SyntenyFeatureDetail.js +4 -13
- package/esm/SyntenyFeatureDetail/index.d.ts +1 -1
- package/esm/SyntenyFeatureDetail/index.js +1 -7
- package/esm/SyntenyTrack/configSchema.d.ts +1 -1
- package/esm/SyntenyTrack/configSchema.js +1 -9
- package/esm/SyntenyTrack/index.d.ts +1 -1
- package/esm/SyntenyTrack/index.js +1 -1
- package/esm/index.d.ts +1 -1
- package/esm/index.js +4 -4
- package/esm/util.d.ts +2 -2
- package/esm/util.js +1 -11
- package/package.json +2 -4
|
@@ -27,99 +27,47 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
const react_1 = require("react");
|
|
30
|
-
const mobx_state_tree_1 = require("mobx-state-tree");
|
|
31
|
-
const mobx_1 = require("mobx");
|
|
32
|
-
// jbrowse
|
|
33
30
|
const BaseViewModel_1 = __importDefault(require("@jbrowse/core/pluggableElementTypes/models/BaseViewModel"));
|
|
34
31
|
const util_1 = require("@jbrowse/core/util");
|
|
35
32
|
const mst_1 = require("@jbrowse/core/util/types/mst");
|
|
36
|
-
// icons
|
|
37
33
|
const FolderOpen_1 = __importDefault(require("@mui/icons-material/FolderOpen"));
|
|
38
|
-
|
|
34
|
+
const mobx_1 = require("mobx");
|
|
35
|
+
const mobx_state_tree_1 = require("mobx-state-tree");
|
|
39
36
|
const ReturnToImportFormDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@jbrowse/core/ui/ReturnToImportFormDialog'))));
|
|
40
|
-
/**
|
|
41
|
-
* #stateModel LinearComparativeView
|
|
42
|
-
* extends
|
|
43
|
-
* - [BaseViewModel](../baseviewmodel)
|
|
44
|
-
*/
|
|
45
37
|
function stateModelFactory(pluginManager) {
|
|
46
38
|
var _a;
|
|
47
39
|
const LinearSyntenyViewHelper = (_a = pluginManager.getViewType('LinearSyntenyViewHelper')) === null || _a === void 0 ? void 0 : _a.stateModel;
|
|
48
40
|
return mobx_state_tree_1.types
|
|
49
41
|
.compose('LinearComparativeView', BaseViewModel_1.default, mobx_state_tree_1.types.model({
|
|
50
|
-
/**
|
|
51
|
-
* #property
|
|
52
|
-
*/
|
|
53
42
|
id: mst_1.ElementId,
|
|
54
|
-
/**
|
|
55
|
-
* #property
|
|
56
|
-
*/
|
|
57
43
|
type: mobx_state_tree_1.types.literal('LinearComparativeView'),
|
|
58
|
-
/**
|
|
59
|
-
* #property
|
|
60
|
-
*/
|
|
61
44
|
trackSelectorType: 'hierarchical',
|
|
62
|
-
/**
|
|
63
|
-
* #property
|
|
64
|
-
*/
|
|
65
45
|
showIntraviewLinks: true,
|
|
66
|
-
/**
|
|
67
|
-
* #property
|
|
68
|
-
*/
|
|
69
46
|
interactToggled: false,
|
|
70
|
-
/**
|
|
71
|
-
* #property
|
|
72
|
-
*/
|
|
73
47
|
levels: mobx_state_tree_1.types.array(LinearSyntenyViewHelper),
|
|
74
|
-
/**
|
|
75
|
-
* #property
|
|
76
|
-
* currently this is limited to an array of two
|
|
77
|
-
*/
|
|
78
48
|
views: mobx_state_tree_1.types.array(pluginManager.getViewType('LinearGenomeView')
|
|
79
49
|
.stateModel),
|
|
80
|
-
/**
|
|
81
|
-
* #property
|
|
82
|
-
* this represents tracks specific to this view specifically used for
|
|
83
|
-
* read vs ref dotplots where this track would not really apply
|
|
84
|
-
* elsewhere
|
|
85
|
-
*/
|
|
86
50
|
viewTrackConfigs: mobx_state_tree_1.types.array(pluginManager.pluggableConfigSchemaType('track')),
|
|
87
51
|
}))
|
|
88
52
|
.volatile(() => ({
|
|
89
|
-
/**
|
|
90
|
-
* #volatile
|
|
91
|
-
*/
|
|
92
53
|
width: undefined,
|
|
93
54
|
}))
|
|
94
55
|
.views(self => ({
|
|
95
|
-
/**
|
|
96
|
-
* #getter
|
|
97
|
-
*/
|
|
98
56
|
get initialized() {
|
|
99
|
-
return (
|
|
100
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
101
|
-
self.width !== undefined &&
|
|
57
|
+
return (self.width !== undefined &&
|
|
102
58
|
self.views.length > 0 &&
|
|
103
59
|
self.views.every(view => view.initialized));
|
|
104
60
|
},
|
|
105
|
-
/**
|
|
106
|
-
* #getter
|
|
107
|
-
*/
|
|
108
61
|
get refNames() {
|
|
109
62
|
return self.views.map(v => [
|
|
110
63
|
...new Set(v.staticBlocks.map(m => m.refName)),
|
|
111
64
|
]);
|
|
112
65
|
},
|
|
113
|
-
/**
|
|
114
|
-
* #getter
|
|
115
|
-
*/
|
|
116
66
|
get assemblyNames() {
|
|
117
67
|
return [...new Set(self.views.flatMap(v => v.assemblyNames))];
|
|
118
68
|
},
|
|
119
69
|
}))
|
|
120
70
|
.actions(self => ({
|
|
121
|
-
// automatically removes session assemblies associated with this view
|
|
122
|
-
// e.g. read vs ref
|
|
123
71
|
beforeDestroy() {
|
|
124
72
|
var _a;
|
|
125
73
|
const session = (0, util_1.getSession)(self);
|
|
@@ -131,40 +79,24 @@ function stateModelFactory(pluginManager) {
|
|
|
131
79
|
self.views.forEach(view => {
|
|
132
80
|
const ret = (0, mobx_state_tree_1.getPath)(view);
|
|
133
81
|
if (!ret.endsWith(path)) {
|
|
134
|
-
// @ts-expect-error
|
|
135
82
|
view[actionName](args === null || args === void 0 ? void 0 : args[0]);
|
|
136
83
|
}
|
|
137
84
|
});
|
|
138
85
|
},
|
|
139
|
-
/**
|
|
140
|
-
* #action
|
|
141
|
-
*/
|
|
142
86
|
setWidth(newWidth) {
|
|
143
87
|
self.width = newWidth;
|
|
144
88
|
},
|
|
145
|
-
/**
|
|
146
|
-
* #action
|
|
147
|
-
*/
|
|
148
89
|
setViews(views) {
|
|
149
90
|
self.views = (0, mobx_state_tree_1.cast)(views);
|
|
150
91
|
},
|
|
151
|
-
/**
|
|
152
|
-
* #action
|
|
153
|
-
*/
|
|
154
92
|
removeView(view) {
|
|
155
93
|
self.views.remove(view);
|
|
156
94
|
},
|
|
157
|
-
/**
|
|
158
|
-
* #action
|
|
159
|
-
*/
|
|
160
95
|
setLevelHeight(newHeight, level = 0) {
|
|
161
96
|
const l = self.levels[level];
|
|
162
97
|
l.setHeight(newHeight);
|
|
163
98
|
return l.height;
|
|
164
99
|
},
|
|
165
|
-
/**
|
|
166
|
-
* #action
|
|
167
|
-
*/
|
|
168
100
|
activateTrackSelector(level) {
|
|
169
101
|
if (self.trackSelectorType === 'hierarchical') {
|
|
170
102
|
const session = (0, util_1.getSession)(self);
|
|
@@ -178,32 +110,20 @@ function stateModelFactory(pluginManager) {
|
|
|
178
110
|
}
|
|
179
111
|
throw new Error(`invalid track selector type ${self.trackSelectorType}`);
|
|
180
112
|
},
|
|
181
|
-
/**
|
|
182
|
-
* #action
|
|
183
|
-
*/
|
|
184
113
|
toggleTrack(trackId, level = 0) {
|
|
185
114
|
var _a;
|
|
186
115
|
(_a = self.levels[level]) === null || _a === void 0 ? void 0 : _a.toggleTrack(trackId);
|
|
187
116
|
},
|
|
188
|
-
/**
|
|
189
|
-
* #action
|
|
190
|
-
*/
|
|
191
117
|
showTrack(trackId, level = 0, initialSnapshot = {}) {
|
|
192
118
|
if (!self.levels[level]) {
|
|
193
119
|
self.levels[level] = (0, mobx_state_tree_1.cast)({ level });
|
|
194
120
|
}
|
|
195
121
|
self.levels[level].showTrack(trackId, initialSnapshot);
|
|
196
122
|
},
|
|
197
|
-
/**
|
|
198
|
-
* #action
|
|
199
|
-
*/
|
|
200
123
|
hideTrack(trackId, level = 0) {
|
|
201
124
|
var _a;
|
|
202
125
|
(_a = self.levels[level]) === null || _a === void 0 ? void 0 : _a.hideTrack(trackId);
|
|
203
126
|
},
|
|
204
|
-
/**
|
|
205
|
-
* #action
|
|
206
|
-
*/
|
|
207
127
|
squareView() {
|
|
208
128
|
const average = (0, util_1.avg)(self.views.map(v => v.bpPerPx));
|
|
209
129
|
for (const view of self.views) {
|
|
@@ -214,28 +134,17 @@ function stateModelFactory(pluginManager) {
|
|
|
214
134
|
}
|
|
215
135
|
}
|
|
216
136
|
},
|
|
217
|
-
/**
|
|
218
|
-
* #action
|
|
219
|
-
*/
|
|
220
137
|
clearView() {
|
|
221
138
|
self.views = (0, mobx_state_tree_1.cast)([]);
|
|
222
139
|
self.levels = (0, mobx_state_tree_1.cast)([]);
|
|
223
140
|
},
|
|
224
141
|
}))
|
|
225
142
|
.views(() => ({
|
|
226
|
-
/**
|
|
227
|
-
* #method
|
|
228
|
-
* includes a subset of view menu options because the full list is a
|
|
229
|
-
* little overwhelming. overridden by subclasses
|
|
230
|
-
*/
|
|
231
143
|
headerMenuItems() {
|
|
232
144
|
return [];
|
|
233
145
|
},
|
|
234
146
|
}))
|
|
235
147
|
.views(self => ({
|
|
236
|
-
/**
|
|
237
|
-
* #method
|
|
238
|
-
*/
|
|
239
148
|
menuItems() {
|
|
240
149
|
return [
|
|
241
150
|
{
|
|
@@ -253,9 +162,6 @@ function stateModelFactory(pluginManager) {
|
|
|
253
162
|
},
|
|
254
163
|
];
|
|
255
164
|
},
|
|
256
|
-
/**
|
|
257
|
-
* #method
|
|
258
|
-
*/
|
|
259
165
|
rubberBandMenuItems() {
|
|
260
166
|
return [
|
|
261
167
|
{
|
|
@@ -284,8 +190,6 @@ function stateModelFactory(pluginManager) {
|
|
|
284
190
|
},
|
|
285
191
|
}))
|
|
286
192
|
.preProcessSnapshot(snap => {
|
|
287
|
-
// @ts-expect-error
|
|
288
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
289
193
|
const { tracks, levels = [{ tracks, level: 0 }], ...rest } = snap || {};
|
|
290
194
|
return {
|
|
291
195
|
...rest,
|
|
@@ -25,14 +25,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.default = ReadVsRefDialog;
|
|
27
27
|
const react_1 = __importStar(require("react"));
|
|
28
|
-
const material_1 = require("@mui/material");
|
|
29
|
-
const ui_1 = require("@jbrowse/core/ui");
|
|
30
|
-
const mui_1 = require("tss-react/mui");
|
|
31
28
|
const configuration_1 = require("@jbrowse/core/configuration");
|
|
32
|
-
const
|
|
29
|
+
const ui_1 = require("@jbrowse/core/ui");
|
|
33
30
|
const util_1 = require("@jbrowse/core/util");
|
|
34
|
-
|
|
31
|
+
const tracks_1 = require("@jbrowse/core/util/tracks");
|
|
35
32
|
const plugin_alignments_1 = require("@jbrowse/plugin-alignments");
|
|
33
|
+
const material_1 = require("@mui/material");
|
|
34
|
+
const mui_1 = require("tss-react/mui");
|
|
36
35
|
const { featurizeSA, getClip, getLength, getLengthSansClipping, getTag } = plugin_alignments_1.MismatchParser;
|
|
37
36
|
const useStyles = (0, mui_1.makeStyles)()({
|
|
38
37
|
root: {
|
|
@@ -41,16 +40,11 @@ const useStyles = (0, mui_1.makeStyles)()({
|
|
|
41
40
|
});
|
|
42
41
|
function ReadVsRefDialog({ track, feature: preFeature, handleClose, }) {
|
|
43
42
|
const { classes } = useStyles();
|
|
44
|
-
// window size stored as string, because it corresponds to a textfield which
|
|
45
|
-
// is parsed as number on submit
|
|
46
43
|
const [windowSizeText, setWindowSize] = (0, react_1.useState)('0');
|
|
47
44
|
const [error, setError] = (0, react_1.useState)();
|
|
48
45
|
const [primaryFeature, setPrimaryFeature] = (0, react_1.useState)();
|
|
49
46
|
const windowSize = +windowSizeText;
|
|
50
|
-
// we need to fetch the primary alignment if the selected feature is 2048.
|
|
51
|
-
// this should be the first in the list of the SA tag
|
|
52
47
|
(0, react_1.useEffect)(() => {
|
|
53
|
-
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
54
48
|
;
|
|
55
49
|
(async () => {
|
|
56
50
|
setError(undefined);
|
|
@@ -113,9 +107,6 @@ function ReadVsRefDialog({ track, feature: preFeature, handleClose, }) {
|
|
|
113
107
|
const assemblyNames = [trackAssembly, readAssembly];
|
|
114
108
|
const trackId = `track-${Date.now()}`;
|
|
115
109
|
const trackName = `${readName}_vs_${trackAssembly}`;
|
|
116
|
-
// get the canonical refname for the read because if the
|
|
117
|
-
// read.get('refName') is chr1 and the actual fasta refName is 1 then no
|
|
118
|
-
// tracks can be opened on the top panel of the linear read vs ref
|
|
119
110
|
const { assemblyManager } = session;
|
|
120
111
|
const assembly = assemblyManager.get(trackAssembly);
|
|
121
112
|
if (!assembly) {
|
|
@@ -130,9 +121,6 @@ function ReadVsRefDialog({ track, feature: preFeature, handleClose, }) {
|
|
|
130
121
|
start: clipPos,
|
|
131
122
|
end: clipPos + getLengthSansClipping(cigar),
|
|
132
123
|
};
|
|
133
|
-
// if secondary alignment or supplementary, calculate length from SA[0]'s
|
|
134
|
-
// CIGAR which is the primary alignments. otherwise it is the primary
|
|
135
|
-
// alignment just use seq.length if primary alignment
|
|
136
124
|
const totalLength = flags & 2048 ? getLength(suppAlns[0].CIGAR) : getLength(cigar);
|
|
137
125
|
const features = [feat, ...suppAlns];
|
|
138
126
|
features.forEach((f, idx) => {
|
|
@@ -143,8 +131,6 @@ function ReadVsRefDialog({ track, feature: preFeature, handleClose, }) {
|
|
|
143
131
|
});
|
|
144
132
|
features.sort((a, b) => a.clipPos - b.clipPos);
|
|
145
133
|
const featSeq = feature.get('seq');
|
|
146
|
-
// the config feature store includes synthetic mate features
|
|
147
|
-
// mapped to the read assembly
|
|
148
134
|
const configFeatureStore = [...features, ...features.map(f => f.mate)];
|
|
149
135
|
const expand = 2 * windowSize;
|
|
150
136
|
const refLen = features.reduce((a, f) => a + f.end - f.start + expand, 0);
|
|
@@ -170,7 +156,7 @@ function ReadVsRefDialog({ track, feature: preFeature, handleClose, }) {
|
|
|
170
156
|
{
|
|
171
157
|
start: 0,
|
|
172
158
|
end: totalLength,
|
|
173
|
-
seq: featSeq || '',
|
|
159
|
+
seq: featSeq || '',
|
|
174
160
|
refName: readName,
|
|
175
161
|
uniqueId: `${Math.random()}`,
|
|
176
162
|
},
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import PluginManager from '@jbrowse/core/PluginManager';
|
|
1
|
+
import type PluginManager from '@jbrowse/core/PluginManager';
|
|
2
2
|
export default function LinearReadVsRefMenuItemF(pm: PluginManager): void;
|
|
@@ -29,9 +29,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
29
|
exports.default = LinearReadVsRefMenuItemF;
|
|
30
30
|
const react_1 = require("react");
|
|
31
31
|
const util_1 = require("@jbrowse/core/util");
|
|
32
|
-
// icons
|
|
33
32
|
const Add_1 = __importDefault(require("@mui/icons-material/Add"));
|
|
34
|
-
// locals
|
|
35
33
|
const ReadVsRefDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./LinearReadVsRef'))));
|
|
36
34
|
function isDisplay(elt) {
|
|
37
35
|
return elt.name === 'LinearPileupDisplay';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { LinearSyntenyDisplayModel } from './model';
|
|
1
|
+
import type { LinearSyntenyDisplayModel } from './model';
|
|
2
2
|
export declare function doAfterAttach(self: LinearSyntenyDisplayModel): void;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.doAfterAttach = doAfterAttach;
|
|
4
|
-
const mobx_1 = require("mobx");
|
|
5
|
-
const mobx_state_tree_1 = require("mobx-state-tree");
|
|
6
4
|
const util_1 = require("@jbrowse/core/util");
|
|
7
5
|
const Base1DUtils_1 = require("@jbrowse/core/util/Base1DUtils");
|
|
8
6
|
const plugin_alignments_1 = require("@jbrowse/plugin-alignments");
|
|
7
|
+
const mobx_1 = require("mobx");
|
|
8
|
+
const mobx_state_tree_1 = require("mobx-state-tree");
|
|
9
9
|
const drawSynteny_1 = require("./drawSynteny");
|
|
10
10
|
function doAfterAttach(self) {
|
|
11
11
|
(0, mobx_state_tree_1.addDisposer)(self, (0, mobx_1.autorun)(() => {
|
|
@@ -32,17 +32,10 @@ function doAfterAttach(self) {
|
|
|
32
32
|
}
|
|
33
33
|
(0, drawSynteny_1.drawMouseoverSynteny)(self);
|
|
34
34
|
}));
|
|
35
|
-
// this attempts to reduce recalculation of feature positions drawn by
|
|
36
|
-
// the synteny view
|
|
37
|
-
//
|
|
38
|
-
// uses a reaction to say "we know the positions don't change in any
|
|
39
|
-
// relevant way unless bpPerPx changes or displayedRegions changes"
|
|
40
35
|
(0, mobx_state_tree_1.addDisposer)(self, (0, mobx_1.reaction)(() => {
|
|
41
36
|
const view = (0, util_1.getContainingView)(self);
|
|
42
37
|
return {
|
|
43
38
|
bpPerPx: view.views.map(v => v.bpPerPx),
|
|
44
|
-
// stringifying 'deeply' accesses the displayed regions, see
|
|
45
|
-
// issue #3456
|
|
46
39
|
displayedRegions: JSON.stringify(view.views.map(v => v.displayedRegions)),
|
|
47
40
|
features: self.features,
|
|
48
41
|
initialized: view.initialized,
|
|
@@ -27,10 +27,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
const react_1 = __importStar(require("react"));
|
|
30
|
-
const mui_1 = require("tss-react/mui");
|
|
31
|
-
const mobx_react_1 = require("mobx-react");
|
|
32
30
|
const ui_1 = require("@jbrowse/core/ui");
|
|
33
|
-
|
|
31
|
+
const mobx_react_1 = require("mobx-react");
|
|
32
|
+
const mui_1 = require("tss-react/mui");
|
|
34
33
|
const LinearSyntenyRendering_1 = __importDefault(require("./LinearSyntenyRendering"));
|
|
35
34
|
const useStyles = (0, mui_1.makeStyles)()(theme => {
|
|
36
35
|
const bg = theme.palette.action.disabledBackground;
|
|
@@ -53,7 +52,6 @@ const useStyles = (0, mui_1.makeStyles)()(theme => {
|
|
|
53
52
|
};
|
|
54
53
|
});
|
|
55
54
|
function LoadingMessage() {
|
|
56
|
-
// only show the loading message after 300ms to prevent excessive flickering
|
|
57
55
|
const [shown, setShown] = (0, react_1.useState)(false);
|
|
58
56
|
const { classes } = useStyles();
|
|
59
57
|
(0, react_1.useEffect)(() => {
|
|
@@ -27,9 +27,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
const react_1 = __importStar(require("react"));
|
|
30
|
-
const mobx_react_1 = require("mobx-react");
|
|
31
30
|
const util_1 = require("@jbrowse/core/util");
|
|
32
31
|
const mobx_1 = require("mobx");
|
|
32
|
+
const mobx_react_1 = require("mobx-react");
|
|
33
33
|
const mui_1 = require("tss-react/mui");
|
|
34
34
|
const drawSynteny_1 = require("../drawSynteny");
|
|
35
35
|
const SyntenyContextMenu_1 = __importDefault(require("./SyntenyContextMenu"));
|
|
@@ -69,22 +69,13 @@ const LinearSyntenyRendering = (0, mobx_react_1.observer)(function ({ model, })
|
|
|
69
69
|
const [mouseInitialDownX, setMouseInitialDownX] = (0, react_1.useState)();
|
|
70
70
|
const [currY, setCurrY] = (0, react_1.useState)();
|
|
71
71
|
const mainSyntenyCanvasRefp = (0, react_1.useRef)();
|
|
72
|
-
// these useCallbacks avoid new refs from being created on any mouseover,
|
|
73
|
-
// etc.
|
|
74
|
-
// biome-ignore lint/correctness/useExhaustiveDependencies:
|
|
75
72
|
const mouseoverDetectionCanvasRef = (0, react_1.useCallback)((ref) => {
|
|
76
73
|
model.setMouseoverCanvasRef(ref);
|
|
77
|
-
},
|
|
78
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
79
|
-
[model, height, width]);
|
|
80
|
-
// biome-ignore lint/correctness/useExhaustiveDependencies:
|
|
74
|
+
}, [model, height, width]);
|
|
81
75
|
const mainSyntenyCanvasRef = (0, react_1.useCallback)((ref) => {
|
|
82
76
|
model.setMainCanvasRef(ref);
|
|
83
|
-
mainSyntenyCanvasRefp.current = ref;
|
|
84
|
-
},
|
|
85
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
86
|
-
[model, height, width]);
|
|
87
|
-
// biome-ignore lint/correctness/useExhaustiveDependencies:
|
|
77
|
+
mainSyntenyCanvasRefp.current = ref;
|
|
78
|
+
}, [model, height, width]);
|
|
88
79
|
(0, react_1.useEffect)(() => {
|
|
89
80
|
var _a;
|
|
90
81
|
function onWheel(event) {
|
|
@@ -133,20 +124,13 @@ const LinearSyntenyRendering = (0, mobx_react_1.observer)(function ({ model, })
|
|
|
133
124
|
var _a;
|
|
134
125
|
(_a = mainSyntenyCanvasRefp.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('wheel', onWheel);
|
|
135
126
|
};
|
|
136
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
137
127
|
}, [model, height, width]);
|
|
138
|
-
// biome-ignore lint/correctness/useExhaustiveDependencies:
|
|
139
128
|
const clickMapCanvasRef = (0, react_1.useCallback)((ref) => {
|
|
140
129
|
model.setClickMapCanvasRef(ref);
|
|
141
|
-
},
|
|
142
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
143
|
-
[model, height, width]);
|
|
144
|
-
// biome-ignore lint/correctness/useExhaustiveDependencies:
|
|
130
|
+
}, [model, height, width]);
|
|
145
131
|
const cigarClickMapCanvasRef = (0, react_1.useCallback)((ref) => {
|
|
146
132
|
model.setCigarClickMapCanvasRef(ref);
|
|
147
|
-
},
|
|
148
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
149
|
-
[model, height, width]);
|
|
133
|
+
}, [model, height, width]);
|
|
150
134
|
return (react_1.default.createElement("div", { className: classes.rel },
|
|
151
135
|
react_1.default.createElement("canvas", { ref: mouseoverDetectionCanvasRef, width: width, height: height, className: classes.mouseoverCanvas }),
|
|
152
136
|
react_1.default.createElement("canvas", { ref: mainSyntenyCanvasRef, onMouseMove: event => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import type { LinearSyntenyDisplayModel } from '../model';
|
|
3
|
+
import type { Feature } from '@jbrowse/core/util';
|
|
4
4
|
interface ClickCoord {
|
|
5
5
|
clientX: number;
|
|
6
6
|
clientY: number;
|
|
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.default = SyntenyContextMenu;
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
|
-
const util_1 = require("@jbrowse/core/util");
|
|
9
8
|
const ui_1 = require("@jbrowse/core/ui");
|
|
9
|
+
const util_1 = require("@jbrowse/core/util");
|
|
10
10
|
function SyntenyContextMenu({ model, onClose, anchorEl, }) {
|
|
11
11
|
const view = (0, util_1.getContainingView)(model);
|
|
12
12
|
const { clientX, clientY, feature } = anchorEl;
|
|
@@ -4,9 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const react_1 = __importDefault(require("react"));
|
|
7
|
-
const mobx_react_1 = require("mobx-react");
|
|
8
7
|
const ui_1 = require("@jbrowse/core/ui");
|
|
9
8
|
const BaseTooltip_1 = __importDefault(require("@jbrowse/core/ui/BaseTooltip"));
|
|
9
|
+
const mobx_react_1 = require("mobx-react");
|
|
10
10
|
const SyntenyTooltip = (0, mobx_react_1.observer)(function ({ title }) {
|
|
11
11
|
return title ? (react_1.default.createElement(BaseTooltip_1.default, null,
|
|
12
12
|
react_1.default.createElement(ui_1.SanitizedHTML, { html: title }))) : null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import type { LinearSyntenyDisplayModel } from '../model';
|
|
3
|
+
import type { Feature } from '@jbrowse/core/util';
|
|
4
4
|
interface Pos {
|
|
5
5
|
offsetPx: number;
|
|
6
6
|
}
|
|
@@ -8,7 +8,6 @@ exports.onSynClick = onSynClick;
|
|
|
8
8
|
exports.onSynContextClick = onSynContextClick;
|
|
9
9
|
exports.getTooltip = getTooltip;
|
|
10
10
|
const util_1 = require("@jbrowse/core/util");
|
|
11
|
-
// locals
|
|
12
11
|
const drawSynteny_1 = require("../drawSynteny");
|
|
13
12
|
function drawMatchSimple({ feature, ctx, offsets, level, cb, height, drawCurves, oobLimit, viewWidth, hideTiny, }) {
|
|
14
13
|
const { p11, p12, p21, p22 } = feature;
|
|
@@ -26,11 +25,7 @@ function drawMatchSimple({ feature, ctx, offsets, level, cb, height, drawCurves,
|
|
|
26
25
|
if (!(0, util_1.doesIntersect2)(minX, maxX, -oobLimit, viewWidth + oobLimit)) {
|
|
27
26
|
return;
|
|
28
27
|
}
|
|
29
|
-
// drawing a line if the results are thin: drawing a line results in much
|
|
30
|
-
// less pixellation than filling in a thin polygon
|
|
31
28
|
if (l1 <= 1 && l2 <= 1) {
|
|
32
|
-
// hideTiny can be used to avoid drawing mouseover for thin lines in this
|
|
33
|
-
// case
|
|
34
29
|
if (!hideTiny) {
|
|
35
30
|
ctx.beginPath();
|
|
36
31
|
ctx.moveTo(x11, y1);
|
|
@@ -67,9 +62,6 @@ function drawBox(ctx, x1, x2, y1, x3, x4, y2) {
|
|
|
67
62
|
function drawBezierBox(ctx, x1, x2, y1, x3, x4, y2, mid) {
|
|
68
63
|
const len1 = Math.abs(x1 - x2);
|
|
69
64
|
const len2 = Math.abs(x1 - x2);
|
|
70
|
-
// heuristic to not draw hourglass inversions with bezier curves when they
|
|
71
|
-
// are thin and far apart because it results in areas that are not drawn well
|
|
72
|
-
// demo https://codesandbox.io/s/fast-glitter-q3b1or?file=/src/index.js
|
|
73
65
|
if (len1 < 5 && len2 < 5 && x2 < x1 && Math.abs(x1 - x3) > 100) {
|
|
74
66
|
const tmp = x1;
|
|
75
67
|
x1 = x2;
|
|
@@ -143,7 +135,6 @@ function onSynContextClick(event, model, setAnchorEl) {
|
|
|
143
135
|
}
|
|
144
136
|
}
|
|
145
137
|
function getTooltip({ feature, cigarOp, cigarOpLen, }) {
|
|
146
|
-
// @ts-expect-error
|
|
147
138
|
const f1 = feature.toJSON();
|
|
148
139
|
const f2 = f1.mate;
|
|
149
140
|
const l1 = f1.end - f1.start;
|
|
@@ -1,20 +1,9 @@
|
|
|
1
|
-
import PluginManager from '@jbrowse/core/PluginManager';
|
|
2
|
-
/**
|
|
3
|
-
* #config LinearSyntenyDisplay
|
|
4
|
-
*/
|
|
1
|
+
import type PluginManager from '@jbrowse/core/PluginManager';
|
|
5
2
|
declare function configSchemaFactory(pluginManager: PluginManager): import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
|
|
6
|
-
/**
|
|
7
|
-
* #slot
|
|
8
|
-
* currently unused
|
|
9
|
-
*/
|
|
10
3
|
trackIds: {
|
|
11
4
|
type: string;
|
|
12
5
|
defaultValue: never[];
|
|
13
6
|
};
|
|
14
|
-
/**
|
|
15
|
-
* #slot
|
|
16
|
-
* currently unused
|
|
17
|
-
*/
|
|
18
7
|
middle: {
|
|
19
8
|
type: string;
|
|
20
9
|
defaultValue: boolean;
|
|
@@ -5,29 +5,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const configuration_1 = require("@jbrowse/core/configuration");
|
|
7
7
|
const configSchemaF_1 = __importDefault(require("../LinearComparativeDisplay/configSchemaF"));
|
|
8
|
-
/**
|
|
9
|
-
* #config LinearSyntenyDisplay
|
|
10
|
-
*/
|
|
11
8
|
function configSchemaFactory(pluginManager) {
|
|
12
9
|
return (0, configuration_1.ConfigurationSchema)('LinearSyntenyDisplay', {
|
|
13
|
-
/**
|
|
14
|
-
* #slot
|
|
15
|
-
* currently unused
|
|
16
|
-
*/
|
|
17
10
|
trackIds: {
|
|
18
11
|
type: 'stringArray',
|
|
19
12
|
defaultValue: [],
|
|
20
13
|
},
|
|
21
|
-
/**
|
|
22
|
-
* #slot
|
|
23
|
-
* currently unused
|
|
24
|
-
*/
|
|
25
14
|
middle: { type: 'boolean', defaultValue: true },
|
|
26
15
|
}, {
|
|
27
|
-
/**
|
|
28
|
-
* #baseConfiguration
|
|
29
|
-
* this refers to the LinearComparativeDisplay
|
|
30
|
-
*/
|
|
31
16
|
baseConfiguration: (0, configSchemaF_1.default)(pluginManager),
|
|
32
17
|
explicitlyTyped: true,
|
|
33
18
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LinearSyntenyDisplayModel } from './model';
|
|
1
|
+
import type { LinearSyntenyDisplayModel } from './model';
|
|
2
2
|
export declare const MAX_COLOR_RANGE: number;
|
|
3
3
|
export declare function getId(r: number, g: number, b: number, unitMultiplier: number): number;
|
|
4
4
|
export declare function drawRef(model: LinearSyntenyDisplayModel, ctx1: CanvasRenderingContext2D, ctx3?: CanvasRenderingContext2D): void;
|