@jbrowse/plugin-dotplot-view 2.17.0 → 3.0.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/ComparativeRenderer/index.d.ts +3 -8
- package/dist/ComparativeRenderer/index.js +3 -8
- package/dist/DotplotDisplay/components/DotplotDisplay.d.ts +2 -3
- package/dist/DotplotDisplay/components/DotplotDisplay.js +7 -12
- package/dist/DotplotDisplay/index.d.ts +1 -7
- package/dist/DotplotDisplay/index.js +2 -12
- package/dist/DotplotDisplay/renderDotplotBlock.d.ts +1 -1
- package/dist/DotplotDisplay/renderDotplotBlock.js +3 -9
- package/dist/DotplotDisplay/stateModelFactory.d.ts +8 -45
- package/dist/DotplotDisplay/stateModelFactory.js +57 -100
- package/dist/DotplotReadVsRef/DotplotReadVsRef.d.ts +2 -2
- package/dist/DotplotReadVsRef/DotplotReadVsRef.js +13 -14
- package/dist/DotplotReadVsRef/index.d.ts +1 -1
- package/dist/DotplotReadVsRef/index.js +0 -2
- package/dist/DotplotRenderer/ComparativeRenderRpc.d.ts +3 -8
- package/dist/DotplotRenderer/ComparativeRenderRpc.js +3 -8
- package/dist/DotplotRenderer/DotplotRenderer.d.ts +8 -7
- package/dist/DotplotRenderer/DotplotRenderer.js +18 -9
- package/dist/DotplotRenderer/components/DotplotRendering.d.ts +2 -3
- package/dist/DotplotRenderer/components/DotplotRendering.js +2 -5
- package/dist/DotplotRenderer/configSchema.d.ts +0 -21
- package/dist/DotplotRenderer/configSchema.js +2 -27
- package/dist/DotplotRenderer/drawDotplot.d.ts +3 -3
- package/dist/DotplotRenderer/drawDotplot.js +3 -6
- package/dist/DotplotRenderer/index.d.ts +1 -1
- package/dist/DotplotRenderer/index.js +1 -1
- package/dist/DotplotView/1dview.d.ts +2 -77
- package/dist/DotplotView/1dview.js +4 -33
- package/dist/DotplotView/components/Axes.d.ts +5 -6
- package/dist/DotplotView/components/Axes.js +26 -40
- package/dist/DotplotView/components/CursorIcon.d.ts +3 -4
- package/dist/DotplotView/components/CursorIcon.js +3 -5
- package/dist/DotplotView/components/DotplotControls.d.ts +2 -3
- package/dist/DotplotView/components/DotplotControls.js +94 -97
- package/dist/DotplotView/components/DotplotTooltipClick.d.ts +2 -3
- package/dist/DotplotView/components/DotplotTooltipClick.js +3 -7
- package/dist/DotplotView/components/DotplotTooltipMouseover.d.ts +2 -3
- package/dist/DotplotView/components/DotplotTooltipMouseover.js +4 -8
- package/dist/DotplotView/components/DotplotView.d.ts +2 -3
- package/dist/DotplotView/components/DotplotView.js +80 -92
- package/dist/DotplotView/components/DotplotWarnings.d.ts +2 -3
- package/dist/DotplotView/components/DotplotWarnings.js +26 -21
- package/dist/DotplotView/components/ExportSvgDialog.d.ts +2 -3
- package/dist/DotplotView/components/ExportSvgDialog.js +32 -67
- package/dist/DotplotView/components/Grid.d.ts +3 -4
- package/dist/DotplotView/components/Grid.js +19 -32
- package/dist/DotplotView/components/Header.d.ts +2 -3
- package/dist/DotplotView/components/Header.js +4 -23
- package/dist/DotplotView/components/ImportForm/ImportSyntenyOpenCustomTrack.d.ts +7 -0
- package/dist/DotplotView/components/ImportForm/ImportSyntenyOpenCustomTrack.js +129 -0
- package/dist/DotplotView/components/ImportForm/ImportSyntenyTrackSelector.d.ts +4 -6
- package/dist/DotplotView/components/ImportForm/ImportSyntenyTrackSelector.js +17 -48
- package/dist/DotplotView/components/ImportForm/TrackSelector.d.ts +7 -0
- package/dist/DotplotView/components/ImportForm/TrackSelector.js +23 -0
- package/dist/DotplotView/components/ImportForm/getAdapter.d.ts +117 -0
- package/dist/DotplotView/components/ImportForm/getAdapter.js +68 -0
- package/dist/DotplotView/components/ImportForm/index.d.ts +3 -4
- package/dist/DotplotView/components/ImportForm/index.js +47 -97
- package/dist/DotplotView/components/ImportForm/util.js +1 -3
- package/dist/DotplotView/components/PanButtons.d.ts +2 -3
- package/dist/DotplotView/components/PanButtons.js +17 -36
- package/dist/DotplotView/components/WarningDialog.d.ts +7 -7
- package/dist/DotplotView/components/WarningDialog.js +12 -15
- package/dist/DotplotView/components/util.d.ts +2 -7
- package/dist/DotplotView/components/util.js +0 -5
- package/dist/DotplotView/index.d.ts +1 -1
- package/dist/DotplotView/index.js +17 -8
- package/dist/DotplotView/model.d.ts +11 -133
- package/dist/DotplotView/model.js +46 -222
- package/dist/DotplotView/svgcomponents/SVGBackground.d.ts +1 -2
- package/dist/DotplotView/svgcomponents/SVGBackground.js +3 -6
- package/dist/DotplotView/svgcomponents/SVGDotplotView.d.ts +1 -1
- package/dist/DotplotView/svgcomponents/SVGDotplotView.js +6 -24
- package/dist/DotplotView/types.d.ts +12 -0
- package/dist/DotplotView/types.js +2 -0
- package/dist/LaunchDotplotView.d.ts +1 -1
- package/dist/LaunchDotplotView.js +1 -4
- package/dist/ServerSideRenderedBlockContent.d.ts +2 -2
- package/dist/ServerSideRenderedBlockContent.js +11 -37
- package/dist/ServerSideSyntenyRendering.d.ts +1 -6
- package/dist/ServerSideSyntenyRendering.js +4 -26
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -6
- package/dist/util.d.ts +1 -1
- package/esm/ComparativeRenderer/index.d.ts +3 -8
- package/esm/ComparativeRenderer/index.js +3 -8
- package/esm/DotplotDisplay/components/DotplotDisplay.d.ts +2 -3
- package/esm/DotplotDisplay/components/DotplotDisplay.js +7 -9
- package/esm/DotplotDisplay/index.d.ts +1 -7
- package/esm/DotplotDisplay/index.js +2 -12
- package/esm/DotplotDisplay/renderDotplotBlock.d.ts +1 -1
- package/esm/DotplotDisplay/renderDotplotBlock.js +3 -6
- package/esm/DotplotDisplay/stateModelFactory.d.ts +8 -45
- package/esm/DotplotDisplay/stateModelFactory.js +58 -101
- package/esm/DotplotReadVsRef/DotplotReadVsRef.d.ts +2 -2
- package/esm/DotplotReadVsRef/DotplotReadVsRef.js +15 -16
- package/esm/DotplotReadVsRef/index.d.ts +1 -1
- package/esm/DotplotReadVsRef/index.js +0 -2
- package/esm/DotplotRenderer/ComparativeRenderRpc.d.ts +3 -8
- package/esm/DotplotRenderer/ComparativeRenderRpc.js +3 -8
- package/esm/DotplotRenderer/DotplotRenderer.d.ts +8 -7
- package/esm/DotplotRenderer/DotplotRenderer.js +1 -2
- package/esm/DotplotRenderer/components/DotplotRendering.d.ts +2 -3
- package/esm/DotplotRenderer/components/DotplotRendering.js +2 -2
- package/esm/DotplotRenderer/configSchema.d.ts +0 -21
- package/esm/DotplotRenderer/configSchema.js +2 -27
- package/esm/DotplotRenderer/drawDotplot.d.ts +3 -3
- package/esm/DotplotRenderer/drawDotplot.js +4 -7
- package/esm/DotplotRenderer/index.d.ts +1 -1
- package/esm/DotplotRenderer/index.js +1 -1
- package/esm/DotplotView/1dview.d.ts +2 -77
- package/esm/DotplotView/1dview.js +4 -33
- package/esm/DotplotView/components/Axes.d.ts +5 -6
- package/esm/DotplotView/components/Axes.js +26 -37
- package/esm/DotplotView/components/CursorIcon.d.ts +3 -4
- package/esm/DotplotView/components/CursorIcon.js +3 -5
- package/esm/DotplotView/components/DotplotControls.d.ts +2 -3
- package/esm/DotplotView/components/DotplotControls.js +94 -97
- package/esm/DotplotView/components/DotplotTooltipClick.d.ts +2 -3
- package/esm/DotplotView/components/DotplotTooltipClick.js +3 -7
- package/esm/DotplotView/components/DotplotTooltipMouseover.d.ts +2 -3
- package/esm/DotplotView/components/DotplotTooltipMouseover.js +4 -8
- package/esm/DotplotView/components/DotplotView.d.ts +2 -3
- package/esm/DotplotView/components/DotplotView.js +63 -85
- package/esm/DotplotView/components/DotplotWarnings.d.ts +2 -3
- package/esm/DotplotView/components/DotplotWarnings.js +9 -14
- package/esm/DotplotView/components/ExportSvgDialog.d.ts +2 -3
- package/esm/DotplotView/components/ExportSvgDialog.js +32 -44
- package/esm/DotplotView/components/Grid.d.ts +3 -4
- package/esm/DotplotView/components/Grid.js +19 -29
- package/esm/DotplotView/components/Header.d.ts +2 -3
- package/esm/DotplotView/components/Header.js +4 -23
- package/esm/DotplotView/components/ImportForm/ImportSyntenyOpenCustomTrack.d.ts +7 -0
- package/esm/DotplotView/components/ImportForm/ImportSyntenyOpenCustomTrack.js +124 -0
- package/esm/DotplotView/components/ImportForm/ImportSyntenyTrackSelector.d.ts +4 -6
- package/esm/DotplotView/components/ImportForm/ImportSyntenyTrackSelector.js +17 -25
- package/esm/DotplotView/components/ImportForm/TrackSelector.d.ts +7 -0
- package/esm/DotplotView/components/ImportForm/TrackSelector.js +18 -0
- package/esm/DotplotView/components/ImportForm/getAdapter.d.ts +117 -0
- package/esm/DotplotView/components/ImportForm/getAdapter.js +65 -0
- package/esm/DotplotView/components/ImportForm/index.d.ts +3 -4
- package/esm/DotplotView/components/ImportForm/index.js +48 -75
- package/esm/DotplotView/components/ImportForm/util.js +1 -3
- package/esm/DotplotView/components/PanButtons.d.ts +2 -3
- package/esm/DotplotView/components/PanButtons.js +17 -36
- package/esm/DotplotView/components/WarningDialog.d.ts +7 -7
- package/esm/DotplotView/components/WarningDialog.js +12 -12
- package/esm/DotplotView/components/util.d.ts +2 -7
- package/esm/DotplotView/components/util.js +0 -5
- package/esm/DotplotView/index.d.ts +1 -1
- package/esm/DotplotView/index.js +0 -1
- package/esm/DotplotView/model.d.ts +11 -133
- package/esm/DotplotView/model.js +30 -216
- package/esm/DotplotView/svgcomponents/SVGBackground.d.ts +1 -2
- package/esm/DotplotView/svgcomponents/SVGBackground.js +3 -3
- package/esm/DotplotView/svgcomponents/SVGDotplotView.d.ts +1 -1
- package/esm/DotplotView/svgcomponents/SVGDotplotView.js +6 -24
- package/esm/DotplotView/types.d.ts +12 -0
- package/esm/DotplotView/types.js +1 -0
- package/esm/LaunchDotplotView.d.ts +1 -1
- package/esm/LaunchDotplotView.js +1 -4
- package/esm/ServerSideRenderedBlockContent.d.ts +2 -2
- package/esm/ServerSideRenderedBlockContent.js +11 -14
- package/esm/ServerSideSyntenyRendering.d.ts +1 -6
- package/esm/ServerSideSyntenyRendering.js +4 -3
- package/esm/index.d.ts +1 -1
- package/esm/index.js +3 -6
- package/esm/util.d.ts +1 -1
- package/package.json +2 -4
- package/dist/DotplotView/components/ImportForm/ImportCustomTrack.d.ts +0 -11
- package/dist/DotplotView/components/ImportForm/ImportCustomTrack.js +0 -194
- package/esm/DotplotView/components/ImportForm/ImportCustomTrack.d.ts +0 -11
- package/esm/DotplotView/components/ImportForm/ImportCustomTrack.js +0 -169
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
37
|
};
|
|
@@ -29,22 +39,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
39
|
exports.Dotplot1DView = void 0;
|
|
30
40
|
exports.default = stateModelFactory;
|
|
31
41
|
const react_1 = require("react");
|
|
32
|
-
const
|
|
33
|
-
const file_saver_1 = require("file-saver");
|
|
34
|
-
const mobx_1 = require("mobx");
|
|
35
|
-
const tracks_1 = require("@jbrowse/core/util/tracks");
|
|
42
|
+
const configuration_1 = require("@jbrowse/core/configuration");
|
|
36
43
|
const BaseViewModel_1 = __importDefault(require("@jbrowse/core/pluggableElementTypes/models/BaseViewModel"));
|
|
44
|
+
const Icons_1 = require("@jbrowse/core/ui/Icons");
|
|
37
45
|
const util_1 = require("@jbrowse/core/util");
|
|
38
|
-
const
|
|
46
|
+
const tracks_1 = require("@jbrowse/core/util/tracks");
|
|
39
47
|
const mst_1 = require("@jbrowse/core/util/types/mst");
|
|
40
|
-
// icons
|
|
41
|
-
const Icons_1 = require("@jbrowse/core/ui/Icons");
|
|
42
48
|
const FolderOpen_1 = __importDefault(require("@mui/icons-material/FolderOpen"));
|
|
43
49
|
const PhotoCamera_1 = __importDefault(require("@mui/icons-material/PhotoCamera"));
|
|
44
|
-
|
|
50
|
+
const file_saver_1 = require("file-saver");
|
|
51
|
+
const mobx_1 = require("mobx");
|
|
52
|
+
const mobx_state_tree_1 = require("mobx-state-tree");
|
|
45
53
|
const _1dview_1 = require("./1dview");
|
|
46
54
|
const util_2 = require("./components/util");
|
|
47
|
-
// lazies
|
|
48
55
|
const ExportSvgDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./components/ExportSvgDialog'))));
|
|
49
56
|
const ReturnToImportFormDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@jbrowse/core/ui/ReturnToImportFormDialog'))));
|
|
50
57
|
function stringLenPx(a) {
|
|
@@ -58,94 +65,47 @@ function pxWidthForBlocks(blocks, bpPerPx, hide) {
|
|
|
58
65
|
.map(b => stringLenPx((0, util_1.getTickDisplayStr)(b.end, bpPerPx))),
|
|
59
66
|
]);
|
|
60
67
|
}
|
|
61
|
-
/**
|
|
62
|
-
* #stateModel DotplotView
|
|
63
|
-
* #category view
|
|
64
|
-
* extends
|
|
65
|
-
* - [BaseViewModel](../baseviewmodel)
|
|
66
|
-
*/
|
|
67
68
|
function stateModelFactory(pm) {
|
|
68
69
|
return mobx_state_tree_1.types
|
|
69
70
|
.compose('DotplotView', BaseViewModel_1.default, mobx_state_tree_1.types.model({
|
|
70
|
-
/**
|
|
71
|
-
* #property
|
|
72
|
-
*/
|
|
73
71
|
id: mst_1.ElementId,
|
|
74
|
-
/**
|
|
75
|
-
* #property
|
|
76
|
-
*/
|
|
77
72
|
type: mobx_state_tree_1.types.literal('DotplotView'),
|
|
78
|
-
/**
|
|
79
|
-
* #property
|
|
80
|
-
*/
|
|
81
73
|
height: 600,
|
|
82
|
-
/**
|
|
83
|
-
* #property
|
|
84
|
-
*/
|
|
85
74
|
borderSize: 20,
|
|
86
|
-
/**
|
|
87
|
-
* #property
|
|
88
|
-
*/
|
|
89
75
|
tickSize: 5,
|
|
90
|
-
/**
|
|
91
|
-
* #property
|
|
92
|
-
*/
|
|
93
76
|
vtextRotation: 0,
|
|
94
|
-
/**
|
|
95
|
-
* #property
|
|
96
|
-
*/
|
|
97
77
|
htextRotation: -90,
|
|
98
|
-
/**
|
|
99
|
-
* #property
|
|
100
|
-
*/
|
|
101
78
|
fontSize: 15,
|
|
102
|
-
/**
|
|
103
|
-
* #property
|
|
104
|
-
*/
|
|
105
79
|
trackSelectorType: 'hierarchical',
|
|
106
|
-
/**
|
|
107
|
-
* #property
|
|
108
|
-
*/
|
|
109
80
|
assemblyNames: mobx_state_tree_1.types.array(mobx_state_tree_1.types.string),
|
|
110
|
-
/**
|
|
111
|
-
* #property
|
|
112
|
-
*/
|
|
113
81
|
drawCigar: true,
|
|
114
|
-
/**
|
|
115
|
-
* #property
|
|
116
|
-
*/
|
|
117
82
|
hview: mobx_state_tree_1.types.optional(_1dview_1.DotplotHView, {}),
|
|
118
|
-
/**
|
|
119
|
-
* #property
|
|
120
|
-
*/
|
|
121
83
|
vview: mobx_state_tree_1.types.optional(_1dview_1.DotplotVView, {}),
|
|
122
|
-
/**
|
|
123
|
-
* #property
|
|
124
|
-
*/
|
|
125
84
|
tracks: mobx_state_tree_1.types.array(pm.pluggableMstType('track', 'stateModel')),
|
|
126
|
-
/**
|
|
127
|
-
* #property
|
|
128
|
-
* this represents tracks specific to this view specifically used
|
|
129
|
-
* for read vs ref dotplots where this track would not really apply
|
|
130
|
-
* elsewhere
|
|
131
|
-
*/
|
|
132
85
|
viewTrackConfigs: mobx_state_tree_1.types.array(pm.pluggableConfigSchemaType('track')),
|
|
133
86
|
}))
|
|
134
87
|
.volatile(() => ({
|
|
135
88
|
volatileWidth: undefined,
|
|
136
89
|
volatileError: undefined,
|
|
137
|
-
// these are 'personal preferences', stored in volatile and
|
|
138
|
-
// loaded/written to localStorage
|
|
139
90
|
cursorMode: (0, util_1.localStorageGetItem)('dotplot-cursorMode') || 'crosshair',
|
|
140
|
-
showPanButtons:
|
|
91
|
+
showPanButtons: (0, util_1.localStorageGetBoolean)('dotplot-showPanbuttons', true),
|
|
141
92
|
wheelMode: (0, util_1.localStorageGetItem)('dotplot-wheelMode') || 'zoom',
|
|
142
93
|
borderX: 100,
|
|
143
94
|
borderY: 100,
|
|
95
|
+
importFormSyntenyTrackSelections: mobx_1.observable.array(),
|
|
96
|
+
}))
|
|
97
|
+
.actions(self => ({
|
|
98
|
+
importFormRemoveRow(idx) {
|
|
99
|
+
self.importFormSyntenyTrackSelections.splice(idx, 1);
|
|
100
|
+
},
|
|
101
|
+
clearImportFormSyntenyTracks() {
|
|
102
|
+
self.importFormSyntenyTrackSelections.clear();
|
|
103
|
+
},
|
|
104
|
+
setImportFormSyntenyTrack(arg, val) {
|
|
105
|
+
self.importFormSyntenyTrackSelections[arg] = val;
|
|
106
|
+
},
|
|
144
107
|
}))
|
|
145
108
|
.views(self => ({
|
|
146
|
-
/**
|
|
147
|
-
* #getter
|
|
148
|
-
*/
|
|
149
109
|
get width() {
|
|
150
110
|
if (!self.volatileWidth) {
|
|
151
111
|
throw new Error('width not initialized');
|
|
@@ -154,9 +114,6 @@ function stateModelFactory(pm) {
|
|
|
154
114
|
},
|
|
155
115
|
}))
|
|
156
116
|
.views(self => ({
|
|
157
|
-
/**
|
|
158
|
-
* #getter
|
|
159
|
-
*/
|
|
160
117
|
get assemblyErrors() {
|
|
161
118
|
const { assemblyManager } = (0, util_1.getSession)(self);
|
|
162
119
|
return self.assemblyNames
|
|
@@ -164,27 +121,18 @@ function stateModelFactory(pm) {
|
|
|
164
121
|
.filter(f => !!f)
|
|
165
122
|
.join(', ');
|
|
166
123
|
},
|
|
167
|
-
/**
|
|
168
|
-
* #getter
|
|
169
|
-
*/
|
|
170
124
|
get assembliesInitialized() {
|
|
171
125
|
const { assemblyManager } = (0, util_1.getSession)(self);
|
|
172
126
|
return self.assemblyNames.every(n => { var _a, _b; return (_b = (_a = assemblyManager.get(n)) === null || _a === void 0 ? void 0 : _a.initialized) !== null && _b !== void 0 ? _b : true; });
|
|
173
127
|
},
|
|
174
128
|
}))
|
|
175
129
|
.views(self => ({
|
|
176
|
-
/**
|
|
177
|
-
* #getter
|
|
178
|
-
*/
|
|
179
130
|
get initialized() {
|
|
180
131
|
return (self.volatileWidth !== undefined &&
|
|
181
132
|
self.hview.displayedRegions.length > 0 &&
|
|
182
133
|
self.vview.displayedRegions.length > 0 &&
|
|
183
134
|
self.assembliesInitialized);
|
|
184
135
|
},
|
|
185
|
-
/**
|
|
186
|
-
* #getter
|
|
187
|
-
*/
|
|
188
136
|
get hticks() {
|
|
189
137
|
const { hview } = self;
|
|
190
138
|
const { dynamicBlocks, staticBlocks, bpPerPx } = hview;
|
|
@@ -192,9 +140,6 @@ function stateModelFactory(pm) {
|
|
|
192
140
|
? []
|
|
193
141
|
: (0, util_2.makeTicks)(staticBlocks.contentBlocks, bpPerPx);
|
|
194
142
|
},
|
|
195
|
-
/**
|
|
196
|
-
* #getter
|
|
197
|
-
*/
|
|
198
143
|
get vticks() {
|
|
199
144
|
const { vview } = self;
|
|
200
145
|
const { dynamicBlocks, staticBlocks, bpPerPx } = vview;
|
|
@@ -202,33 +147,18 @@ function stateModelFactory(pm) {
|
|
|
202
147
|
? []
|
|
203
148
|
: (0, util_2.makeTicks)(staticBlocks.contentBlocks, bpPerPx);
|
|
204
149
|
},
|
|
205
|
-
/**
|
|
206
|
-
* #getter
|
|
207
|
-
*/
|
|
208
150
|
get loading() {
|
|
209
151
|
return self.assemblyNames.length > 0 && !this.initialized;
|
|
210
152
|
},
|
|
211
|
-
/**
|
|
212
|
-
* #getter
|
|
213
|
-
*/
|
|
214
153
|
get viewWidth() {
|
|
215
154
|
return self.width - self.borderX;
|
|
216
155
|
},
|
|
217
|
-
/**
|
|
218
|
-
* #getter
|
|
219
|
-
*/
|
|
220
156
|
get viewHeight() {
|
|
221
157
|
return self.height - self.borderY;
|
|
222
158
|
},
|
|
223
|
-
/**
|
|
224
|
-
* #getter
|
|
225
|
-
*/
|
|
226
159
|
get views() {
|
|
227
160
|
return [self.hview, self.vview];
|
|
228
161
|
},
|
|
229
|
-
/**
|
|
230
|
-
* #method
|
|
231
|
-
*/
|
|
232
162
|
renderProps() {
|
|
233
163
|
const session = (0, util_1.getSession)(self);
|
|
234
164
|
return {
|
|
@@ -239,89 +169,49 @@ function stateModelFactory(pm) {
|
|
|
239
169
|
},
|
|
240
170
|
}))
|
|
241
171
|
.actions(self => ({
|
|
242
|
-
/**
|
|
243
|
-
* #action
|
|
244
|
-
*/
|
|
245
172
|
setShowPanButtons(flag) {
|
|
246
173
|
self.showPanButtons = flag;
|
|
247
174
|
},
|
|
248
|
-
/**
|
|
249
|
-
* #action
|
|
250
|
-
*/
|
|
251
175
|
setWheelMode(str) {
|
|
252
176
|
self.wheelMode = str;
|
|
253
177
|
},
|
|
254
|
-
/**
|
|
255
|
-
* #action
|
|
256
|
-
*/
|
|
257
178
|
setCursorMode(str) {
|
|
258
179
|
self.cursorMode = str;
|
|
259
180
|
},
|
|
260
|
-
/**
|
|
261
|
-
* #action
|
|
262
|
-
*/
|
|
263
181
|
setDrawCigar(flag) {
|
|
264
182
|
self.drawCigar = flag;
|
|
265
183
|
},
|
|
266
|
-
/**
|
|
267
|
-
* #action
|
|
268
|
-
* returns to the import form
|
|
269
|
-
*/
|
|
270
184
|
clearView() {
|
|
271
185
|
self.hview.setDisplayedRegions([]);
|
|
272
186
|
self.vview.setDisplayedRegions([]);
|
|
273
187
|
self.assemblyNames = (0, mobx_state_tree_1.cast)([]);
|
|
274
188
|
self.tracks.clear();
|
|
275
189
|
},
|
|
276
|
-
/**
|
|
277
|
-
* #action
|
|
278
|
-
*/
|
|
279
190
|
setBorderX(n) {
|
|
280
191
|
self.borderX = n;
|
|
281
192
|
},
|
|
282
|
-
/**
|
|
283
|
-
* #action
|
|
284
|
-
*/
|
|
285
193
|
setBorderY(n) {
|
|
286
194
|
self.borderY = n;
|
|
287
195
|
},
|
|
288
|
-
/**
|
|
289
|
-
* #action
|
|
290
|
-
*/
|
|
291
196
|
setWidth(newWidth) {
|
|
292
197
|
self.volatileWidth = newWidth;
|
|
293
198
|
return self.volatileWidth;
|
|
294
199
|
},
|
|
295
|
-
/**
|
|
296
|
-
* #action
|
|
297
|
-
*/
|
|
298
200
|
setHeight(newHeight) {
|
|
299
201
|
self.height = newHeight;
|
|
300
202
|
return self.height;
|
|
301
203
|
},
|
|
302
|
-
/**
|
|
303
|
-
* #action
|
|
304
|
-
*/
|
|
305
204
|
setError(e) {
|
|
306
205
|
self.volatileError = e;
|
|
307
206
|
},
|
|
308
|
-
/**
|
|
309
|
-
* #action
|
|
310
|
-
*/
|
|
311
207
|
zoomOut() {
|
|
312
208
|
self.hview.zoomOut();
|
|
313
209
|
self.vview.zoomOut();
|
|
314
210
|
},
|
|
315
|
-
/**
|
|
316
|
-
* #action
|
|
317
|
-
*/
|
|
318
211
|
zoomIn() {
|
|
319
212
|
self.hview.zoomIn();
|
|
320
213
|
self.vview.zoomIn();
|
|
321
214
|
},
|
|
322
|
-
/**
|
|
323
|
-
* #action
|
|
324
|
-
*/
|
|
325
215
|
activateTrackSelector() {
|
|
326
216
|
if (self.trackSelectorType === 'hierarchical') {
|
|
327
217
|
const session = (0, util_1.getSession)(self);
|
|
@@ -333,9 +223,6 @@ function stateModelFactory(pm) {
|
|
|
333
223
|
}
|
|
334
224
|
throw new Error(`invalid track selector type ${self.trackSelectorType}`);
|
|
335
225
|
},
|
|
336
|
-
/**
|
|
337
|
-
* #action
|
|
338
|
-
*/
|
|
339
226
|
showTrack(trackId, initialSnapshot = {}) {
|
|
340
227
|
const schema = pm.pluggableConfigSchemaType('track');
|
|
341
228
|
const conf = (0, mobx_state_tree_1.resolveIdentifier)(schema, (0, mobx_state_tree_1.getRoot)(self), trackId);
|
|
@@ -356,9 +243,6 @@ function stateModelFactory(pm) {
|
|
|
356
243
|
});
|
|
357
244
|
self.tracks.push(track);
|
|
358
245
|
},
|
|
359
|
-
/**
|
|
360
|
-
* #action
|
|
361
|
-
*/
|
|
362
246
|
hideTrack(trackId) {
|
|
363
247
|
const schema = pm.pluggableConfigSchemaType('track');
|
|
364
248
|
const conf = (0, mobx_state_tree_1.resolveIdentifier)(schema, (0, mobx_state_tree_1.getRoot)(self), trackId);
|
|
@@ -368,9 +252,6 @@ function stateModelFactory(pm) {
|
|
|
368
252
|
});
|
|
369
253
|
return t.length;
|
|
370
254
|
},
|
|
371
|
-
/**
|
|
372
|
-
* #action
|
|
373
|
-
*/
|
|
374
255
|
toggleTrack(trackId) {
|
|
375
256
|
const hiddenCount = this.hideTrack(trackId);
|
|
376
257
|
if (!hiddenCount) {
|
|
@@ -379,22 +260,13 @@ function stateModelFactory(pm) {
|
|
|
379
260
|
}
|
|
380
261
|
return false;
|
|
381
262
|
},
|
|
382
|
-
/**
|
|
383
|
-
* #action
|
|
384
|
-
*/
|
|
385
263
|
setAssemblyNames(target, query) {
|
|
386
264
|
self.assemblyNames = (0, mobx_state_tree_1.cast)([target, query]);
|
|
387
265
|
},
|
|
388
|
-
/**
|
|
389
|
-
* #action
|
|
390
|
-
*/
|
|
391
266
|
setViews(arr) {
|
|
392
267
|
self.hview = (0, mobx_state_tree_1.cast)(arr[0]);
|
|
393
268
|
self.vview = (0, mobx_state_tree_1.cast)(arr[1]);
|
|
394
269
|
},
|
|
395
|
-
/**
|
|
396
|
-
* #action
|
|
397
|
-
*/
|
|
398
270
|
getCoords(mousedown, mouseup) {
|
|
399
271
|
const [xmin, xmax] = (0, util_1.minmax)(mouseup[0], mousedown[0]);
|
|
400
272
|
const [ymin, ymax] = (0, util_1.minmax)(mouseup[1], mousedown[1]);
|
|
@@ -407,10 +279,6 @@ function stateModelFactory(pm) {
|
|
|
407
279
|
]
|
|
408
280
|
: undefined;
|
|
409
281
|
},
|
|
410
|
-
/**
|
|
411
|
-
* #action
|
|
412
|
-
* zooms into clicked and dragged region
|
|
413
|
-
*/
|
|
414
282
|
zoomInToMouseCoords(mousedown, mouseup) {
|
|
415
283
|
const result = this.getCoords(mousedown, mouseup);
|
|
416
284
|
if (result) {
|
|
@@ -419,19 +287,12 @@ function stateModelFactory(pm) {
|
|
|
419
287
|
self.vview.moveTo(y2, y1);
|
|
420
288
|
}
|
|
421
289
|
},
|
|
422
|
-
/**
|
|
423
|
-
* #action
|
|
424
|
-
*/
|
|
425
290
|
showAllRegions() {
|
|
426
291
|
self.hview.zoomTo(self.hview.maxBpPerPx);
|
|
427
292
|
self.vview.zoomTo(self.vview.maxBpPerPx);
|
|
428
293
|
self.vview.center();
|
|
429
294
|
self.hview.center();
|
|
430
295
|
},
|
|
431
|
-
/**
|
|
432
|
-
* #action
|
|
433
|
-
* creates a linear synteny view from the clicked and dragged region
|
|
434
|
-
*/
|
|
435
296
|
onDotplotView(mousedown, mouseup) {
|
|
436
297
|
const result = this.getCoords(mousedown, mouseup);
|
|
437
298
|
if (result) {
|
|
@@ -453,9 +314,6 @@ function stateModelFactory(pm) {
|
|
|
453
314
|
d2.moveTo(y2, y1);
|
|
454
315
|
d1.zoomTo(d1.bpPerPx / (self.width / self.hview.width), 0);
|
|
455
316
|
d2.zoomTo(d2.bpPerPx / (self.width / self.vview.width), 0);
|
|
456
|
-
// add the specific evidence tracks to the LGVs in the split view
|
|
457
|
-
// note: scales the bpPerPx by scaling proportional of the dotplot
|
|
458
|
-
// width to the eventual lgv width
|
|
459
317
|
const tracks = self.tracks
|
|
460
318
|
.map(track => track.configuration.displays.find((display) => display.type === 'LinearSyntenyDisplay'))
|
|
461
319
|
.filter(f => !!f)
|
|
@@ -494,21 +352,16 @@ function stateModelFactory(pm) {
|
|
|
494
352
|
},
|
|
495
353
|
}))
|
|
496
354
|
.actions(self => ({
|
|
497
|
-
/**
|
|
498
|
-
* #action
|
|
499
|
-
* creates an svg export and save using FileSaver
|
|
500
|
-
*/
|
|
501
355
|
async exportSvg(opts = {}) {
|
|
502
356
|
const { renderToSvg } = await Promise.resolve().then(() => __importStar(require('./svgcomponents/SVGDotplotView')));
|
|
503
357
|
const html = await renderToSvg(self, opts);
|
|
504
358
|
const blob = new Blob([html], { type: 'image/svg+xml' });
|
|
505
359
|
(0, file_saver_1.saveAs)(blob, opts.filename || 'image.svg');
|
|
506
360
|
},
|
|
507
|
-
// if any of our assemblies are temporary assemblies
|
|
508
361
|
beforeDestroy() {
|
|
509
362
|
var _a;
|
|
510
363
|
const session = (0, util_1.getSession)(self);
|
|
511
|
-
for (const name
|
|
364
|
+
for (const name of self.assemblyNames) {
|
|
512
365
|
(_a = session.removeTemporaryAssembly) === null || _a === void 0 ? void 0 : _a.call(session, name);
|
|
513
366
|
}
|
|
514
367
|
},
|
|
@@ -524,13 +377,10 @@ function stateModelFactory(pm) {
|
|
|
524
377
|
}));
|
|
525
378
|
(0, mobx_state_tree_1.addDisposer)(self, (0, mobx_1.autorun)(() => {
|
|
526
379
|
const session = (0, util_1.getSession)(self);
|
|
527
|
-
// don't operate if width not set yet
|
|
528
380
|
if (self.volatileWidth === undefined ||
|
|
529
381
|
!self.assembliesInitialized) {
|
|
530
382
|
return;
|
|
531
383
|
}
|
|
532
|
-
// also don't operate if displayedRegions already set, this is a
|
|
533
|
-
// helper autorun to load regions from assembly
|
|
534
384
|
if (self.hview.displayedRegions.length > 0 &&
|
|
535
385
|
self.vview.displayedRegions.length > 0) {
|
|
536
386
|
return;
|
|
@@ -546,7 +396,6 @@ function stateModelFactory(pm) {
|
|
|
546
396
|
});
|
|
547
397
|
}, { delay: 1000 }));
|
|
548
398
|
(0, mobx_state_tree_1.addDisposer)(self, (0, mobx_1.autorun)(function borderSetter() {
|
|
549
|
-
// make sure we have a width on the view before trying to load
|
|
550
399
|
if (self.volatileWidth === undefined) {
|
|
551
400
|
return;
|
|
552
401
|
}
|
|
@@ -560,14 +409,10 @@ function stateModelFactory(pm) {
|
|
|
560
409
|
const hhide = (0, util_2.getBlockLabelKeysToHide)(hblocks, viewWidth, hoffset);
|
|
561
410
|
const by = pxWidthForBlocks(hblocks, vview.bpPerPx, hhide);
|
|
562
411
|
const bx = pxWidthForBlocks(vblocks, hview.bpPerPx, vhide);
|
|
563
|
-
// these are set via autorun to avoid dependency cycle
|
|
564
412
|
self.setBorderY(Math.max(by + padding, 50));
|
|
565
413
|
self.setBorderX(Math.max(bx + padding, 50));
|
|
566
414
|
}));
|
|
567
415
|
},
|
|
568
|
-
/**
|
|
569
|
-
* #action
|
|
570
|
-
*/
|
|
571
416
|
squareView() {
|
|
572
417
|
const { hview, vview } = self;
|
|
573
418
|
const avg = (hview.bpPerPx + vview.bpPerPx) / 2;
|
|
@@ -578,9 +423,6 @@ function stateModelFactory(pm) {
|
|
|
578
423
|
vview.setBpPerPx(avg);
|
|
579
424
|
vview.centerAt(vpx.coord, vpx.refName, vpx.index);
|
|
580
425
|
},
|
|
581
|
-
/**
|
|
582
|
-
* #action
|
|
583
|
-
*/
|
|
584
426
|
squareViewProportional() {
|
|
585
427
|
const { hview, vview } = self;
|
|
586
428
|
const ratio = hview.width / vview.width;
|
|
@@ -594,39 +436,21 @@ function stateModelFactory(pm) {
|
|
|
594
436
|
},
|
|
595
437
|
}))
|
|
596
438
|
.views(self => ({
|
|
597
|
-
/**
|
|
598
|
-
* #method
|
|
599
|
-
*/
|
|
600
439
|
menuItems() {
|
|
601
440
|
const session = (0, util_1.getSession)(self);
|
|
602
441
|
return [
|
|
603
442
|
{
|
|
604
443
|
label: 'Return to import form',
|
|
444
|
+
icon: FolderOpen_1.default,
|
|
605
445
|
onClick: () => {
|
|
606
446
|
(0, util_1.getSession)(self).queueDialog(handleClose => [
|
|
607
447
|
ReturnToImportFormDialog,
|
|
608
|
-
{
|
|
448
|
+
{
|
|
449
|
+
model: self,
|
|
450
|
+
handleClose,
|
|
451
|
+
},
|
|
609
452
|
]);
|
|
610
453
|
},
|
|
611
|
-
icon: FolderOpen_1.default,
|
|
612
|
-
},
|
|
613
|
-
{
|
|
614
|
-
label: 'Square view - same bp per pixel',
|
|
615
|
-
onClick: () => {
|
|
616
|
-
self.squareView();
|
|
617
|
-
},
|
|
618
|
-
},
|
|
619
|
-
{
|
|
620
|
-
label: 'Rectangular view - same total bp',
|
|
621
|
-
onClick: () => {
|
|
622
|
-
self.squareView();
|
|
623
|
-
},
|
|
624
|
-
},
|
|
625
|
-
{
|
|
626
|
-
label: 'Show all regions',
|
|
627
|
-
onClick: () => {
|
|
628
|
-
self.showAllRegions();
|
|
629
|
-
},
|
|
630
454
|
},
|
|
631
455
|
{
|
|
632
456
|
label: 'Export SVG',
|
|
@@ -634,7 +458,10 @@ function stateModelFactory(pm) {
|
|
|
634
458
|
onClick: () => {
|
|
635
459
|
(0, util_1.getSession)(self).queueDialog(handleClose => [
|
|
636
460
|
ExportSvgDialog,
|
|
637
|
-
{
|
|
461
|
+
{
|
|
462
|
+
model: self,
|
|
463
|
+
handleClose,
|
|
464
|
+
},
|
|
638
465
|
]);
|
|
639
466
|
},
|
|
640
467
|
},
|
|
@@ -649,9 +476,6 @@ function stateModelFactory(pm) {
|
|
|
649
476
|
: []),
|
|
650
477
|
];
|
|
651
478
|
},
|
|
652
|
-
/**
|
|
653
|
-
* #getter
|
|
654
|
-
*/
|
|
655
479
|
get error() {
|
|
656
480
|
return self.volatileError || self.assemblyErrors;
|
|
657
481
|
},
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.default = SVGBackground;
|
|
7
|
-
const
|
|
8
|
-
const material_1 = require("@mui/material");
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
9
5
|
const util_1 = require("@jbrowse/core/util");
|
|
6
|
+
const material_1 = require("@mui/material");
|
|
10
7
|
function SVGBackground({ width, height, }) {
|
|
11
8
|
const theme = (0, material_1.useTheme)();
|
|
12
|
-
return (
|
|
9
|
+
return ((0, jsx_runtime_1.jsx)("rect", { x: 0, y: 0, width: width, height: height, fill: (0, util_1.stripAlpha)(theme.palette.background.default) }));
|
|
13
10
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { DotplotViewModel, ExportSvgOptions } from '../model';
|
|
1
|
+
import type { DotplotViewModel, ExportSvgOptions } from '../model';
|
|
2
2
|
export declare function renderToSvg(model: DotplotViewModel, opts: ExportSvgOptions): Promise<string>;
|
|
@@ -4,21 +4,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.renderToSvg = renderToSvg;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const ui_1 = require("@jbrowse/core/ui");
|
|
9
9
|
const util_1 = require("@jbrowse/core/util");
|
|
10
10
|
const material_1 = require("@mui/material");
|
|
11
|
-
const
|
|
12
|
-
const mobx_state_tree_1 = require("mobx-state-tree");
|
|
13
|
-
const Grid_1 = require("../components/Grid");
|
|
14
|
-
const Axes_1 = require("../components/Axes");
|
|
11
|
+
const mobx_1 = require("mobx");
|
|
15
12
|
const SVGBackground_1 = __importDefault(require("./SVGBackground"));
|
|
16
|
-
|
|
13
|
+
const Axes_1 = require("../components/Axes");
|
|
14
|
+
const Grid_1 = require("../components/Grid");
|
|
17
15
|
async function renderToSvg(model, opts) {
|
|
18
16
|
var _a;
|
|
19
17
|
await (0, mobx_1.when)(() => model.initialized);
|
|
20
18
|
const { themeName = 'default', Wrapper = ({ children }) => children } = opts;
|
|
21
|
-
const { createRootFn } = (0, mobx_state_tree_1.getRoot)(model);
|
|
22
19
|
const session = (0, util_1.getSession)(model);
|
|
23
20
|
const theme = (_a = session.allThemes) === null || _a === void 0 ? void 0 : _a.call(session)[themeName];
|
|
24
21
|
const { width, borderX, viewWidth, viewHeight, tracks, height } = model;
|
|
@@ -29,20 +26,5 @@ async function renderToSvg(model, opts) {
|
|
|
29
26
|
return { track, result: await display.renderSvg({ ...opts, theme }) };
|
|
30
27
|
}));
|
|
31
28
|
const w = width + shift * 2;
|
|
32
|
-
|
|
33
|
-
return (0, util_1.renderToStaticMarkup)(react_1.default.createElement(material_1.ThemeProvider, { theme: (0, ui_1.createJBrowseTheme)(theme) },
|
|
34
|
-
react_1.default.createElement(Wrapper, null,
|
|
35
|
-
react_1.default.createElement("svg", { width: width, height: height, xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", viewBox: [0, 0, w, height].toString() },
|
|
36
|
-
react_1.default.createElement(SVGBackground_1.default, { width: w, height: height }),
|
|
37
|
-
react_1.default.createElement(Axes_1.VerticalAxisRaw, { model: model }),
|
|
38
|
-
react_1.default.createElement("g", { transform: `translate(${borderX} 0)` },
|
|
39
|
-
react_1.default.createElement(Grid_1.GridRaw, { model: model }),
|
|
40
|
-
react_1.default.createElement("defs", null,
|
|
41
|
-
react_1.default.createElement("clipPath", { id: "clip-ruler" },
|
|
42
|
-
react_1.default.createElement("rect", { x: 0, y: 0, width: viewWidth, height: viewHeight }))),
|
|
43
|
-
react_1.default.createElement("g", { clipPath: "url(#clip-ruler)" }, displayResults.map(({ result }, i) => (
|
|
44
|
-
/* biome-ignore lint/suspicious/noArrayIndexKey: */
|
|
45
|
-
react_1.default.createElement("g", { key: i }, result))))),
|
|
46
|
-
react_1.default.createElement("g", { transform: `translate(${borderX} ${viewHeight})` },
|
|
47
|
-
react_1.default.createElement(Axes_1.HorizontalAxisRaw, { model: model }))))), createRootFn);
|
|
29
|
+
return (0, util_1.renderToStaticMarkup)((0, jsx_runtime_1.jsx)(material_1.ThemeProvider, { theme: (0, ui_1.createJBrowseTheme)(theme), children: (0, jsx_runtime_1.jsx)(Wrapper, { children: (0, jsx_runtime_1.jsxs)("svg", { width: width, height: height, xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", viewBox: [0, 0, w, height].toString(), children: [(0, jsx_runtime_1.jsx)(SVGBackground_1.default, { width: w, height: height }), (0, jsx_runtime_1.jsx)(Axes_1.VerticalAxisRaw, { model: model }), (0, jsx_runtime_1.jsxs)("g", { transform: `translate(${borderX} 0)`, children: [(0, jsx_runtime_1.jsx)(Grid_1.GridRaw, { model: model }), (0, jsx_runtime_1.jsx)("defs", { children: (0, jsx_runtime_1.jsx)("clipPath", { id: "clip-ruler", children: (0, jsx_runtime_1.jsx)("rect", { x: 0, y: 0, width: viewWidth, height: viewHeight }) }) }), (0, jsx_runtime_1.jsx)("g", { clipPath: "url(#clip-ruler)", children: displayResults.map(({ result }, i) => ((0, jsx_runtime_1.jsx)("g", { children: result }, i))) })] }), (0, jsx_runtime_1.jsx)("g", { transform: `translate(${borderX} ${viewHeight})`, children: (0, jsx_runtime_1.jsx)(Axes_1.HorizontalAxisRaw, { model: model }) })] }) }) }));
|
|
48
30
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
2
|
+
import type { SnapshotIn } from 'mobx-state-tree';
|
|
3
|
+
export type Conf = SnapshotIn<AnyConfigurationModel>;
|
|
4
|
+
export type ImportFormSyntenyTrack = {
|
|
5
|
+
type: 'preConfigured';
|
|
6
|
+
value: string;
|
|
7
|
+
} | {
|
|
8
|
+
type: 'userOpened';
|
|
9
|
+
value: Conf;
|
|
10
|
+
} | {
|
|
11
|
+
type: 'none';
|
|
12
|
+
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import PluginManager from '@jbrowse/core/PluginManager';
|
|
1
|
+
import type PluginManager from '@jbrowse/core/PluginManager';
|
|
2
2
|
export default function LaunchDotplotView(pluginManager: PluginManager): void;
|