@jbrowse/plugin-linear-comparative-view 2.15.0 → 2.15.2
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/model.d.ts +9 -10
- package/dist/LinearComparativeDisplay/stateModelFactory.d.ts +9 -9
- package/dist/LinearComparativeView/model.d.ts +2 -2
- package/dist/LinearSyntenyDisplay/components/LinearSyntenyRendering.js +2 -3
- package/dist/LinearSyntenyDisplay/components/SyntenyTooltip.js +3 -40
- package/dist/LinearSyntenyDisplay/model.d.ts +9 -9
- package/dist/LinearSyntenyView/components/ImportForm/ImportCustomTrack.d.ts +2 -2
- package/dist/LinearSyntenyView/components/ImportForm/ImportCustomTrack.js +27 -6
- package/esm/LGVSyntenyDisplay/model.d.ts +9 -10
- package/esm/LinearComparativeDisplay/stateModelFactory.d.ts +9 -9
- package/esm/LinearComparativeView/model.d.ts +2 -2
- package/esm/LinearSyntenyDisplay/components/LinearSyntenyRendering.js +2 -3
- package/esm/LinearSyntenyDisplay/components/SyntenyTooltip.js +3 -40
- package/esm/LinearSyntenyDisplay/model.d.ts +9 -9
- package/esm/LinearSyntenyView/components/ImportForm/ImportCustomTrack.d.ts +2 -2
- package/esm/LinearSyntenyView/components/ImportForm/ImportCustomTrack.js +28 -7
- package/package.json +2 -2
|
@@ -37,7 +37,7 @@ declare function stateModelFactory(schema: AnyConfigurationSchemaType): import("
|
|
|
37
37
|
}, {
|
|
38
38
|
renderInProgress: AbortController | undefined;
|
|
39
39
|
filled: boolean;
|
|
40
|
-
reactElement:
|
|
40
|
+
reactElement: React.ReactElement | undefined;
|
|
41
41
|
features: Map<string, import("@jbrowse/core/util").Feature> | undefined;
|
|
42
42
|
layout: any;
|
|
43
43
|
status: string;
|
|
@@ -48,10 +48,10 @@ declare function stateModelFactory(schema: AnyConfigurationSchemaType): import("
|
|
|
48
48
|
model: {
|
|
49
49
|
error?: unknown;
|
|
50
50
|
reload: () => void;
|
|
51
|
-
message:
|
|
51
|
+
message: React.ReactNode;
|
|
52
52
|
filled?: boolean;
|
|
53
53
|
status?: string;
|
|
54
|
-
reactElement?:
|
|
54
|
+
reactElement?: React.ReactElement;
|
|
55
55
|
};
|
|
56
56
|
}) => import("react").JSX.Element | undefined;
|
|
57
57
|
renderProps: any;
|
|
@@ -62,7 +62,7 @@ declare function stateModelFactory(schema: AnyConfigurationSchemaType): import("
|
|
|
62
62
|
setLoading(abortController: AbortController): void;
|
|
63
63
|
setMessage(messageText: string): void;
|
|
64
64
|
setRendered(props: {
|
|
65
|
-
reactElement:
|
|
65
|
+
reactElement: React.ReactElement;
|
|
66
66
|
features: Map<string, import("@jbrowse/core/util").Feature>;
|
|
67
67
|
layout: any;
|
|
68
68
|
maxHeightReached: boolean;
|
|
@@ -135,7 +135,7 @@ declare function stateModelFactory(schema: AnyConfigurationSchemaType): import("
|
|
|
135
135
|
error: unknown;
|
|
136
136
|
message: string | undefined;
|
|
137
137
|
} & {
|
|
138
|
-
readonly RenderingComponent:
|
|
138
|
+
readonly RenderingComponent: React.FC<{
|
|
139
139
|
model: {
|
|
140
140
|
id: string;
|
|
141
141
|
type: string;
|
|
@@ -156,7 +156,7 @@ declare function stateModelFactory(schema: AnyConfigurationSchemaType): import("
|
|
|
156
156
|
onHorizontalScroll?: () => void;
|
|
157
157
|
blockState?: Record<string, any>;
|
|
158
158
|
}>;
|
|
159
|
-
readonly DisplayBlurb:
|
|
159
|
+
readonly DisplayBlurb: React.FC<{
|
|
160
160
|
model: {
|
|
161
161
|
id: string;
|
|
162
162
|
type: string;
|
|
@@ -179,7 +179,7 @@ declare function stateModelFactory(schema: AnyConfigurationSchemaType): import("
|
|
|
179
179
|
readonly parentTrack: any;
|
|
180
180
|
renderProps(): any;
|
|
181
181
|
readonly rendererType: import("@jbrowse/core/pluggableElementTypes").RendererType;
|
|
182
|
-
readonly DisplayMessageComponent: undefined |
|
|
182
|
+
readonly DisplayMessageComponent: undefined | React.FC<any>;
|
|
183
183
|
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
184
184
|
readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
|
|
185
185
|
regionCannotBeRendered(): null;
|
|
@@ -225,13 +225,13 @@ declare function stateModelFactory(schema: AnyConfigurationSchemaType): import("
|
|
|
225
225
|
featureIdUnderMouse: undefined | string;
|
|
226
226
|
contextMenuFeature: undefined | import("@jbrowse/core/util").Feature;
|
|
227
227
|
} & {
|
|
228
|
+
readonly DisplayMessageComponent: import("react").FC<any> | undefined;
|
|
228
229
|
readonly blockType: "dynamicBlocks" | "staticBlocks";
|
|
229
230
|
readonly blockDefinitions: import("@jbrowse/core/util/blockTypes").BlockSet;
|
|
230
231
|
} & {
|
|
231
232
|
readonly renderDelay: number;
|
|
232
|
-
readonly TooltipComponent: import("
|
|
233
|
+
readonly TooltipComponent: import("@jbrowse/core/util").AnyReactComponentType;
|
|
233
234
|
readonly selectedFeatureId: string | undefined;
|
|
234
|
-
readonly DisplayMessageComponent: undefined | import("react").FC<any>;
|
|
235
235
|
} & {
|
|
236
236
|
readonly features: import("@jbrowse/core/util/compositeMap").default<string, import("@jbrowse/core/util").Feature>;
|
|
237
237
|
readonly featureUnderMouse: import("@jbrowse/core/util").Feature | undefined;
|
|
@@ -329,7 +329,6 @@ declare function stateModelFactory(schema: AnyConfigurationSchemaType): import("
|
|
|
329
329
|
icon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
|
|
330
330
|
muiName: string;
|
|
331
331
|
};
|
|
332
|
-
priority: number;
|
|
333
332
|
onClick: () => void;
|
|
334
333
|
})[];
|
|
335
334
|
} & {
|
|
@@ -19,7 +19,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
19
19
|
error: unknown;
|
|
20
20
|
message: string | undefined;
|
|
21
21
|
} & {
|
|
22
|
-
readonly RenderingComponent:
|
|
22
|
+
readonly RenderingComponent: React.FC<{
|
|
23
23
|
model: {
|
|
24
24
|
id: string;
|
|
25
25
|
type: string;
|
|
@@ -42,7 +42,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
42
42
|
onHorizontalScroll?: () => void;
|
|
43
43
|
blockState?: Record<string, any>;
|
|
44
44
|
}>;
|
|
45
|
-
readonly DisplayBlurb:
|
|
45
|
+
readonly DisplayBlurb: React.FC<{
|
|
46
46
|
model: {
|
|
47
47
|
id: string;
|
|
48
48
|
type: string;
|
|
@@ -65,7 +65,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
65
65
|
readonly parentTrack: any;
|
|
66
66
|
renderProps(): any;
|
|
67
67
|
readonly rendererType: import("@jbrowse/core/pluggableElementTypes").RendererType;
|
|
68
|
-
readonly DisplayMessageComponent: undefined |
|
|
68
|
+
readonly DisplayMessageComponent: undefined | React.FC<any>;
|
|
69
69
|
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
70
70
|
readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
|
|
71
71
|
regionCannotBeRendered(): null;
|
|
@@ -105,7 +105,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
105
105
|
error: unknown;
|
|
106
106
|
message: string | undefined;
|
|
107
107
|
} & {
|
|
108
|
-
readonly RenderingComponent:
|
|
108
|
+
readonly RenderingComponent: React.FC<{
|
|
109
109
|
model: {
|
|
110
110
|
id: string;
|
|
111
111
|
type: string;
|
|
@@ -128,7 +128,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
128
128
|
onHorizontalScroll?: () => void;
|
|
129
129
|
blockState?: Record<string, any>;
|
|
130
130
|
}>;
|
|
131
|
-
readonly DisplayBlurb:
|
|
131
|
+
readonly DisplayBlurb: React.FC<{
|
|
132
132
|
model: {
|
|
133
133
|
id: string;
|
|
134
134
|
type: string;
|
|
@@ -151,7 +151,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
151
151
|
readonly parentTrack: any;
|
|
152
152
|
renderProps(): any;
|
|
153
153
|
readonly rendererType: import("@jbrowse/core/pluggableElementTypes").RendererType;
|
|
154
|
-
readonly DisplayMessageComponent: undefined |
|
|
154
|
+
readonly DisplayMessageComponent: undefined | React.FC<any>;
|
|
155
155
|
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
156
156
|
readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
|
|
157
157
|
regionCannotBeRendered(): null;
|
|
@@ -177,7 +177,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
177
177
|
error: unknown;
|
|
178
178
|
message: string | undefined;
|
|
179
179
|
} & {
|
|
180
|
-
readonly RenderingComponent:
|
|
180
|
+
readonly RenderingComponent: React.FC<{
|
|
181
181
|
model: {
|
|
182
182
|
id: string;
|
|
183
183
|
type: string;
|
|
@@ -198,7 +198,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
198
198
|
onHorizontalScroll?: () => void;
|
|
199
199
|
blockState?: Record<string, any>;
|
|
200
200
|
}>;
|
|
201
|
-
readonly DisplayBlurb:
|
|
201
|
+
readonly DisplayBlurb: React.FC<{
|
|
202
202
|
model: {
|
|
203
203
|
id: string;
|
|
204
204
|
type: string;
|
|
@@ -221,7 +221,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
221
221
|
readonly parentTrack: any;
|
|
222
222
|
renderProps(): any;
|
|
223
223
|
readonly rendererType: import("@jbrowse/core/pluggableElementTypes").RendererType;
|
|
224
|
-
readonly DisplayMessageComponent: undefined |
|
|
224
|
+
readonly DisplayMessageComponent: undefined | React.FC<any>;
|
|
225
225
|
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
226
226
|
readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
|
|
227
227
|
regionCannotBeRendered(): null;
|
|
@@ -68,8 +68,8 @@ declare function stateModelFactory(pluginManager: PluginManager): import("mobx-s
|
|
|
68
68
|
readonly assemblyNames: string[];
|
|
69
69
|
} & {
|
|
70
70
|
scaleBarDisplayPrefix(): string | undefined;
|
|
71
|
-
MiniControlsComponent():
|
|
72
|
-
HeaderComponent():
|
|
71
|
+
MiniControlsComponent(): React.FC<any>;
|
|
72
|
+
HeaderComponent(): React.FC<any>;
|
|
73
73
|
readonly assemblyErrors: string;
|
|
74
74
|
readonly assembliesInitialized: boolean;
|
|
75
75
|
readonly initialized: boolean;
|
|
@@ -31,11 +31,10 @@ const mobx_react_1 = require("mobx-react");
|
|
|
31
31
|
const util_1 = require("@jbrowse/core/util");
|
|
32
32
|
const mobx_1 = require("mobx");
|
|
33
33
|
const mui_1 = require("tss-react/mui");
|
|
34
|
-
// locals
|
|
35
|
-
const SyntenyTooltip_1 = __importDefault(require("./SyntenyTooltip"));
|
|
36
34
|
const drawSynteny_1 = require("../drawSynteny");
|
|
37
35
|
const SyntenyContextMenu_1 = __importDefault(require("./SyntenyContextMenu"));
|
|
38
36
|
const util_2 = require("./util");
|
|
37
|
+
const SyntenyTooltip = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./SyntenyTooltip'))));
|
|
39
38
|
const useStyles = (0, mui_1.makeStyles)()({
|
|
40
39
|
pix: {
|
|
41
40
|
imageRendering: 'pixelated',
|
|
@@ -208,7 +207,7 @@ const LinearSyntenyRendering = (0, mobx_react_1.observer)(function ({ model, })
|
|
|
208
207
|
}, "data-testid": "synteny_canvas", className: classes.abs, width: width, height: height }),
|
|
209
208
|
react_1.default.createElement("canvas", { ref: k3, className: classes.pix, width: width, height: height }),
|
|
210
209
|
react_1.default.createElement("canvas", { ref: k4, className: classes.pix, width: width, height: height }),
|
|
211
|
-
mouseoverId && tooltip && currX && currY ? (react_1.default.createElement(
|
|
210
|
+
mouseoverId && tooltip && currX && currY ? (react_1.default.createElement(SyntenyTooltip, { title: tooltip })) : null,
|
|
212
211
|
anchorEl ? (react_1.default.createElement(SyntenyContextMenu_1.default, { model: model, anchorEl: anchorEl, onClose: () => {
|
|
213
212
|
setAnchorEl(undefined);
|
|
214
213
|
} })) : null));
|
|
@@ -5,47 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const react_1 = __importDefault(require("react"));
|
|
7
7
|
const mobx_react_1 = require("mobx-react");
|
|
8
|
-
const material_1 = require("@mui/material");
|
|
9
|
-
const mui_1 = require("tss-react/mui");
|
|
10
|
-
const react_2 = require("@floating-ui/react");
|
|
11
8
|
const ui_1 = require("@jbrowse/core/ui");
|
|
12
|
-
|
|
13
|
-
return Math.round(value * 1e5) / 1e5;
|
|
14
|
-
}
|
|
15
|
-
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
16
|
-
// these styles come from
|
|
17
|
-
// https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/Tooltip/Tooltip.js
|
|
18
|
-
tooltip: {
|
|
19
|
-
position: 'absolute',
|
|
20
|
-
pointerEvents: 'none',
|
|
21
|
-
backgroundColor: (0, material_1.alpha)(theme.palette.grey[700], 0.9),
|
|
22
|
-
borderRadius: theme.shape.borderRadius,
|
|
23
|
-
color: theme.palette.common.white,
|
|
24
|
-
fontFamily: theme.typography.fontFamily,
|
|
25
|
-
padding: '4px 8px',
|
|
26
|
-
fontSize: theme.typography.pxToRem(12),
|
|
27
|
-
lineHeight: `${round(14 / 10)}em`,
|
|
28
|
-
maxWidth: 300,
|
|
29
|
-
wordWrap: 'break-word',
|
|
30
|
-
},
|
|
31
|
-
}));
|
|
9
|
+
const BaseTooltip_1 = __importDefault(require("@jbrowse/core/ui/BaseTooltip"));
|
|
32
10
|
const SyntenyTooltip = (0, mobx_react_1.observer)(function ({ title }) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const { classes } = useStyles();
|
|
36
|
-
const { refs, floatingStyles, context } = (0, react_2.useFloating)({
|
|
37
|
-
placement: 'right',
|
|
38
|
-
strategy: 'fixed',
|
|
39
|
-
});
|
|
40
|
-
const clientPoint = (0, react_2.useClientPoint)(context);
|
|
41
|
-
const { getFloatingProps } = (0, react_2.useInteractions)([clientPoint]);
|
|
42
|
-
const popperTheme = (_a = theme.components) === null || _a === void 0 ? void 0 : _a.MuiPopper;
|
|
43
|
-
return title ? (react_1.default.createElement(material_1.Portal, { container: (_b = popperTheme === null || popperTheme === void 0 ? void 0 : popperTheme.defaultProps) === null || _b === void 0 ? void 0 : _b.container },
|
|
44
|
-
react_1.default.createElement("div", { className: classes.tooltip, ref: refs.setFloating, style: {
|
|
45
|
-
...floatingStyles,
|
|
46
|
-
zIndex: 100000,
|
|
47
|
-
pointerEvents: 'none',
|
|
48
|
-
}, ...getFloatingProps() },
|
|
49
|
-
react_1.default.createElement(ui_1.SanitizedHTML, { html: title })))) : null;
|
|
11
|
+
return title ? (react_1.default.createElement(BaseTooltip_1.default, null,
|
|
12
|
+
react_1.default.createElement(ui_1.SanitizedHTML, { html: title }))) : null;
|
|
50
13
|
});
|
|
51
14
|
exports.default = SyntenyTooltip;
|
|
@@ -39,7 +39,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
39
39
|
error: unknown;
|
|
40
40
|
message: string | undefined;
|
|
41
41
|
} & {
|
|
42
|
-
readonly RenderingComponent:
|
|
42
|
+
readonly RenderingComponent: React.FC<{
|
|
43
43
|
model: {
|
|
44
44
|
id: string;
|
|
45
45
|
type: string;
|
|
@@ -60,7 +60,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
60
60
|
onHorizontalScroll?: () => void;
|
|
61
61
|
blockState?: Record<string, any>;
|
|
62
62
|
}>;
|
|
63
|
-
readonly DisplayBlurb:
|
|
63
|
+
readonly DisplayBlurb: React.FC<{
|
|
64
64
|
model: {
|
|
65
65
|
id: string;
|
|
66
66
|
type: string;
|
|
@@ -85,7 +85,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
85
85
|
readonly parentTrack: any;
|
|
86
86
|
renderProps(): any;
|
|
87
87
|
readonly rendererType: import("@jbrowse/core/pluggableElementTypes").RendererType;
|
|
88
|
-
readonly DisplayMessageComponent: undefined |
|
|
88
|
+
readonly DisplayMessageComponent: undefined | React.FC<any>;
|
|
89
89
|
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
90
90
|
readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
|
|
91
91
|
regionCannotBeRendered(): null;
|
|
@@ -122,7 +122,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
122
122
|
error: unknown;
|
|
123
123
|
message: string | undefined;
|
|
124
124
|
} & {
|
|
125
|
-
readonly RenderingComponent:
|
|
125
|
+
readonly RenderingComponent: React.FC<{
|
|
126
126
|
model: {
|
|
127
127
|
id: string;
|
|
128
128
|
type: string;
|
|
@@ -143,7 +143,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
143
143
|
onHorizontalScroll?: () => void;
|
|
144
144
|
blockState?: Record<string, any>;
|
|
145
145
|
}>;
|
|
146
|
-
readonly DisplayBlurb:
|
|
146
|
+
readonly DisplayBlurb: React.FC<{
|
|
147
147
|
model: {
|
|
148
148
|
id: string;
|
|
149
149
|
type: string;
|
|
@@ -168,7 +168,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
168
168
|
readonly parentTrack: any;
|
|
169
169
|
renderProps(): any;
|
|
170
170
|
readonly rendererType: import("@jbrowse/core/pluggableElementTypes").RendererType;
|
|
171
|
-
readonly DisplayMessageComponent: undefined |
|
|
171
|
+
readonly DisplayMessageComponent: undefined | React.FC<any>;
|
|
172
172
|
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
173
173
|
readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
|
|
174
174
|
regionCannotBeRendered(): null;
|
|
@@ -194,7 +194,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
194
194
|
error: unknown;
|
|
195
195
|
message: string | undefined;
|
|
196
196
|
} & {
|
|
197
|
-
readonly RenderingComponent:
|
|
197
|
+
readonly RenderingComponent: React.FC<{
|
|
198
198
|
model: {
|
|
199
199
|
id: string;
|
|
200
200
|
type: string;
|
|
@@ -215,7 +215,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
215
215
|
onHorizontalScroll?: () => void;
|
|
216
216
|
blockState?: Record<string, any>;
|
|
217
217
|
}>;
|
|
218
|
-
readonly DisplayBlurb:
|
|
218
|
+
readonly DisplayBlurb: React.FC<{
|
|
219
219
|
model: {
|
|
220
220
|
id: string;
|
|
221
221
|
type: string;
|
|
@@ -238,7 +238,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
238
238
|
readonly parentTrack: any;
|
|
239
239
|
renderProps(): any;
|
|
240
240
|
readonly rendererType: import("@jbrowse/core/pluggableElementTypes").RendererType;
|
|
241
|
-
readonly DisplayMessageComponent: undefined |
|
|
241
|
+
readonly DisplayMessageComponent: undefined | React.FC<any>;
|
|
242
242
|
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
243
243
|
readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
|
|
244
244
|
regionCannotBeRendered(): null;
|
|
@@ -2,10 +2,10 @@ import React from 'react';
|
|
|
2
2
|
import { SnapshotIn } from 'mobx-state-tree';
|
|
3
3
|
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
4
4
|
type Conf = SnapshotIn<AnyConfigurationModel>;
|
|
5
|
-
declare const
|
|
5
|
+
declare const ImportCustomTrack: ({ assembly1, assembly2, setSessionTrackData, }: {
|
|
6
6
|
sessionTrackData: Conf;
|
|
7
7
|
assembly1: string;
|
|
8
8
|
assembly2: string;
|
|
9
9
|
setSessionTrackData: (arg: Conf) => void;
|
|
10
10
|
}) => React.JSX.Element;
|
|
11
|
-
export default
|
|
11
|
+
export default ImportCustomTrack;
|
|
@@ -28,7 +28,7 @@ const material_1 = require("@mui/material");
|
|
|
28
28
|
const ui_1 = require("@jbrowse/core/ui");
|
|
29
29
|
const mobx_react_1 = require("mobx-react");
|
|
30
30
|
const util_1 = require("./util");
|
|
31
|
-
function getAdapter({ radioOption, assembly1, assembly2, fileLocation, bed1Location, bed2Location, }) {
|
|
31
|
+
function getAdapter({ radioOption, assembly1, assembly2, fileLocation, indexFileLocation, bed1Location, bed2Location, }) {
|
|
32
32
|
if (radioOption === '.paf') {
|
|
33
33
|
return {
|
|
34
34
|
type: 'PAFAdapter',
|
|
@@ -79,14 +79,23 @@ function getAdapter({ radioOption, assembly1, assembly2, fileLocation, bed1Locat
|
|
|
79
79
|
assemblyNames: [assembly1, assembly2],
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
|
+
else if (radioOption === '.pif.gz') {
|
|
83
|
+
return {
|
|
84
|
+
type: 'PairwiseIndexedPAFAdapter',
|
|
85
|
+
pifGzLocation: fileLocation,
|
|
86
|
+
index: { location: indexFileLocation },
|
|
87
|
+
assemblyNames: [assembly1, assembly2],
|
|
88
|
+
};
|
|
89
|
+
}
|
|
82
90
|
else {
|
|
83
91
|
throw new Error(`Unknown to detect type ${radioOption} from filename (select radio button to clarify)`);
|
|
84
92
|
}
|
|
85
93
|
}
|
|
86
|
-
const
|
|
94
|
+
const ImportCustomTrack = (0, mobx_react_1.observer)(function ({ assembly1, assembly2, setSessionTrackData, }) {
|
|
87
95
|
const [bed2Location, setBed2Location] = (0, react_1.useState)();
|
|
88
96
|
const [bed1Location, setBed1Location] = (0, react_1.useState)();
|
|
89
97
|
const [fileLocation, setFileLocation] = (0, react_1.useState)();
|
|
98
|
+
const [indexFileLocation, setIndexFileLocation] = (0, react_1.useState)();
|
|
90
99
|
const [value, setValue] = (0, react_1.useState)('');
|
|
91
100
|
const [error, setError] = (0, react_1.useState)();
|
|
92
101
|
const fileName = (0, util_1.getName)(fileLocation);
|
|
@@ -107,6 +116,7 @@ const OpenTrack = (0, mobx_react_1.observer)(({ assembly1, assembly2, setSession
|
|
|
107
116
|
assembly1,
|
|
108
117
|
assembly2,
|
|
109
118
|
fileLocation,
|
|
119
|
+
indexFileLocation,
|
|
110
120
|
bed1Location,
|
|
111
121
|
bed2Location,
|
|
112
122
|
}),
|
|
@@ -124,12 +134,13 @@ const OpenTrack = (0, mobx_react_1.observer)(({ assembly1, assembly2, setSession
|
|
|
124
134
|
bed1Location,
|
|
125
135
|
bed2Location,
|
|
126
136
|
fileLocation,
|
|
137
|
+
indexFileLocation,
|
|
127
138
|
radioOption,
|
|
128
139
|
setSessionTrackData,
|
|
129
140
|
]);
|
|
130
141
|
return (react_1.default.createElement(material_1.Paper, { style: { padding: 12 } },
|
|
131
142
|
error ? react_1.default.createElement(ui_1.ErrorMessage, { error: error }) : null,
|
|
132
|
-
react_1.default.createElement(material_1.Typography, { style: { textAlign: 'center' } }, "Add a .paf, .out (MashMap), .delta (Mummer), .chain, .anchors or .anchors.simple (MCScan) file to view
|
|
143
|
+
react_1.default.createElement(material_1.Typography, { style: { textAlign: 'center' } }, "Add a .paf, .out (MashMap), .delta (Mummer), .chain, .anchors or .anchors.simple (MCScan) file to view. These file types can also be gzipped. The first assembly should be the query sequence (e.g. left column of the PAF) and the second assembly should be the target sequence (e.g. right column of the PAF)"),
|
|
133
144
|
react_1.default.createElement(material_1.RadioGroup, { value: radioOption, onChange: event => {
|
|
134
145
|
setValue(event.target.value);
|
|
135
146
|
} },
|
|
@@ -145,7 +156,9 @@ const OpenTrack = (0, mobx_react_1.observer)(({ assembly1, assembly2, setSession
|
|
|
145
156
|
react_1.default.createElement(material_1.Grid, { item: true },
|
|
146
157
|
react_1.default.createElement(material_1.FormControlLabel, { value: ".anchors", control: react_1.default.createElement(material_1.Radio, null), label: ".anchors" })),
|
|
147
158
|
react_1.default.createElement(material_1.Grid, { item: true },
|
|
148
|
-
react_1.default.createElement(material_1.FormControlLabel, { value: ".anchors.simple", control: react_1.default.createElement(material_1.Radio, null), label: ".anchors.simple" }))
|
|
159
|
+
react_1.default.createElement(material_1.FormControlLabel, { value: ".anchors.simple", control: react_1.default.createElement(material_1.Radio, null), label: ".anchors.simple" })),
|
|
160
|
+
react_1.default.createElement(material_1.Grid, { item: true },
|
|
161
|
+
react_1.default.createElement(material_1.FormControlLabel, { value: ".pif.gz", control: react_1.default.createElement(material_1.Radio, null), label: ".pif.gz" })))),
|
|
149
162
|
react_1.default.createElement(material_1.Grid, { container: true, justifyContent: "center" },
|
|
150
163
|
react_1.default.createElement(material_1.Grid, { item: true }, value === '.anchors' || value === '.anchors.simple' ? (react_1.default.createElement("div", null,
|
|
151
164
|
react_1.default.createElement("div", { style: { margin: 20 } },
|
|
@@ -166,8 +179,16 @@ const OpenTrack = (0, mobx_react_1.observer)(({ assembly1, assembly2, setSession
|
|
|
166
179
|
react_1.default.createElement("div", null,
|
|
167
180
|
react_1.default.createElement(ui_1.FileSelector, { name: "genome 2 .bed (right column of anchors file)", description: "", location: bed2Location, setLocation: loc => {
|
|
168
181
|
setBed2Location(loc);
|
|
169
|
-
} }))))) : (react_1.default.createElement(
|
|
182
|
+
} }))))) : value === '.pif.gz' ? (react_1.default.createElement("div", { style: { display: 'flex' } },
|
|
183
|
+
react_1.default.createElement("div", null,
|
|
184
|
+
react_1.default.createElement(ui_1.FileSelector, { name: `${value} location`, description: "", location: fileLocation, setLocation: loc => {
|
|
185
|
+
setFileLocation(loc);
|
|
186
|
+
} })),
|
|
187
|
+
react_1.default.createElement("div", null,
|
|
188
|
+
react_1.default.createElement(ui_1.FileSelector, { name: `${value} index location`, description: "", location: indexFileLocation, setLocation: loc => {
|
|
189
|
+
setIndexFileLocation(loc);
|
|
190
|
+
} })))) : (react_1.default.createElement(ui_1.FileSelector, { name: value ? `${value} location` : '', description: "", location: fileLocation, setLocation: loc => {
|
|
170
191
|
setFileLocation(loc);
|
|
171
192
|
} }))))));
|
|
172
193
|
});
|
|
173
|
-
exports.default =
|
|
194
|
+
exports.default = ImportCustomTrack;
|
|
@@ -37,7 +37,7 @@ declare function stateModelFactory(schema: AnyConfigurationSchemaType): import("
|
|
|
37
37
|
}, {
|
|
38
38
|
renderInProgress: AbortController | undefined;
|
|
39
39
|
filled: boolean;
|
|
40
|
-
reactElement:
|
|
40
|
+
reactElement: React.ReactElement | undefined;
|
|
41
41
|
features: Map<string, import("@jbrowse/core/util").Feature> | undefined;
|
|
42
42
|
layout: any;
|
|
43
43
|
status: string;
|
|
@@ -48,10 +48,10 @@ declare function stateModelFactory(schema: AnyConfigurationSchemaType): import("
|
|
|
48
48
|
model: {
|
|
49
49
|
error?: unknown;
|
|
50
50
|
reload: () => void;
|
|
51
|
-
message:
|
|
51
|
+
message: React.ReactNode;
|
|
52
52
|
filled?: boolean;
|
|
53
53
|
status?: string;
|
|
54
|
-
reactElement?:
|
|
54
|
+
reactElement?: React.ReactElement;
|
|
55
55
|
};
|
|
56
56
|
}) => import("react").JSX.Element | undefined;
|
|
57
57
|
renderProps: any;
|
|
@@ -62,7 +62,7 @@ declare function stateModelFactory(schema: AnyConfigurationSchemaType): import("
|
|
|
62
62
|
setLoading(abortController: AbortController): void;
|
|
63
63
|
setMessage(messageText: string): void;
|
|
64
64
|
setRendered(props: {
|
|
65
|
-
reactElement:
|
|
65
|
+
reactElement: React.ReactElement;
|
|
66
66
|
features: Map<string, import("@jbrowse/core/util").Feature>;
|
|
67
67
|
layout: any;
|
|
68
68
|
maxHeightReached: boolean;
|
|
@@ -135,7 +135,7 @@ declare function stateModelFactory(schema: AnyConfigurationSchemaType): import("
|
|
|
135
135
|
error: unknown;
|
|
136
136
|
message: string | undefined;
|
|
137
137
|
} & {
|
|
138
|
-
readonly RenderingComponent:
|
|
138
|
+
readonly RenderingComponent: React.FC<{
|
|
139
139
|
model: {
|
|
140
140
|
id: string;
|
|
141
141
|
type: string;
|
|
@@ -156,7 +156,7 @@ declare function stateModelFactory(schema: AnyConfigurationSchemaType): import("
|
|
|
156
156
|
onHorizontalScroll?: () => void;
|
|
157
157
|
blockState?: Record<string, any>;
|
|
158
158
|
}>;
|
|
159
|
-
readonly DisplayBlurb:
|
|
159
|
+
readonly DisplayBlurb: React.FC<{
|
|
160
160
|
model: {
|
|
161
161
|
id: string;
|
|
162
162
|
type: string;
|
|
@@ -179,7 +179,7 @@ declare function stateModelFactory(schema: AnyConfigurationSchemaType): import("
|
|
|
179
179
|
readonly parentTrack: any;
|
|
180
180
|
renderProps(): any;
|
|
181
181
|
readonly rendererType: import("@jbrowse/core/pluggableElementTypes").RendererType;
|
|
182
|
-
readonly DisplayMessageComponent: undefined |
|
|
182
|
+
readonly DisplayMessageComponent: undefined | React.FC<any>;
|
|
183
183
|
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
184
184
|
readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
|
|
185
185
|
regionCannotBeRendered(): null;
|
|
@@ -225,13 +225,13 @@ declare function stateModelFactory(schema: AnyConfigurationSchemaType): import("
|
|
|
225
225
|
featureIdUnderMouse: undefined | string;
|
|
226
226
|
contextMenuFeature: undefined | import("@jbrowse/core/util").Feature;
|
|
227
227
|
} & {
|
|
228
|
+
readonly DisplayMessageComponent: import("react").FC<any> | undefined;
|
|
228
229
|
readonly blockType: "dynamicBlocks" | "staticBlocks";
|
|
229
230
|
readonly blockDefinitions: import("@jbrowse/core/util/blockTypes").BlockSet;
|
|
230
231
|
} & {
|
|
231
232
|
readonly renderDelay: number;
|
|
232
|
-
readonly TooltipComponent: import("
|
|
233
|
+
readonly TooltipComponent: import("@jbrowse/core/util").AnyReactComponentType;
|
|
233
234
|
readonly selectedFeatureId: string | undefined;
|
|
234
|
-
readonly DisplayMessageComponent: undefined | import("react").FC<any>;
|
|
235
235
|
} & {
|
|
236
236
|
readonly features: import("@jbrowse/core/util/compositeMap").default<string, import("@jbrowse/core/util").Feature>;
|
|
237
237
|
readonly featureUnderMouse: import("@jbrowse/core/util").Feature | undefined;
|
|
@@ -329,7 +329,6 @@ declare function stateModelFactory(schema: AnyConfigurationSchemaType): import("
|
|
|
329
329
|
icon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
|
|
330
330
|
muiName: string;
|
|
331
331
|
};
|
|
332
|
-
priority: number;
|
|
333
332
|
onClick: () => void;
|
|
334
333
|
})[];
|
|
335
334
|
} & {
|
|
@@ -19,7 +19,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
19
19
|
error: unknown;
|
|
20
20
|
message: string | undefined;
|
|
21
21
|
} & {
|
|
22
|
-
readonly RenderingComponent:
|
|
22
|
+
readonly RenderingComponent: React.FC<{
|
|
23
23
|
model: {
|
|
24
24
|
id: string;
|
|
25
25
|
type: string;
|
|
@@ -42,7 +42,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
42
42
|
onHorizontalScroll?: () => void;
|
|
43
43
|
blockState?: Record<string, any>;
|
|
44
44
|
}>;
|
|
45
|
-
readonly DisplayBlurb:
|
|
45
|
+
readonly DisplayBlurb: React.FC<{
|
|
46
46
|
model: {
|
|
47
47
|
id: string;
|
|
48
48
|
type: string;
|
|
@@ -65,7 +65,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
65
65
|
readonly parentTrack: any;
|
|
66
66
|
renderProps(): any;
|
|
67
67
|
readonly rendererType: import("@jbrowse/core/pluggableElementTypes").RendererType;
|
|
68
|
-
readonly DisplayMessageComponent: undefined |
|
|
68
|
+
readonly DisplayMessageComponent: undefined | React.FC<any>;
|
|
69
69
|
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
70
70
|
readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
|
|
71
71
|
regionCannotBeRendered(): null;
|
|
@@ -105,7 +105,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
105
105
|
error: unknown;
|
|
106
106
|
message: string | undefined;
|
|
107
107
|
} & {
|
|
108
|
-
readonly RenderingComponent:
|
|
108
|
+
readonly RenderingComponent: React.FC<{
|
|
109
109
|
model: {
|
|
110
110
|
id: string;
|
|
111
111
|
type: string;
|
|
@@ -128,7 +128,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
128
128
|
onHorizontalScroll?: () => void;
|
|
129
129
|
blockState?: Record<string, any>;
|
|
130
130
|
}>;
|
|
131
|
-
readonly DisplayBlurb:
|
|
131
|
+
readonly DisplayBlurb: React.FC<{
|
|
132
132
|
model: {
|
|
133
133
|
id: string;
|
|
134
134
|
type: string;
|
|
@@ -151,7 +151,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
151
151
|
readonly parentTrack: any;
|
|
152
152
|
renderProps(): any;
|
|
153
153
|
readonly rendererType: import("@jbrowse/core/pluggableElementTypes").RendererType;
|
|
154
|
-
readonly DisplayMessageComponent: undefined |
|
|
154
|
+
readonly DisplayMessageComponent: undefined | React.FC<any>;
|
|
155
155
|
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
156
156
|
readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
|
|
157
157
|
regionCannotBeRendered(): null;
|
|
@@ -177,7 +177,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
177
177
|
error: unknown;
|
|
178
178
|
message: string | undefined;
|
|
179
179
|
} & {
|
|
180
|
-
readonly RenderingComponent:
|
|
180
|
+
readonly RenderingComponent: React.FC<{
|
|
181
181
|
model: {
|
|
182
182
|
id: string;
|
|
183
183
|
type: string;
|
|
@@ -198,7 +198,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
198
198
|
onHorizontalScroll?: () => void;
|
|
199
199
|
blockState?: Record<string, any>;
|
|
200
200
|
}>;
|
|
201
|
-
readonly DisplayBlurb:
|
|
201
|
+
readonly DisplayBlurb: React.FC<{
|
|
202
202
|
model: {
|
|
203
203
|
id: string;
|
|
204
204
|
type: string;
|
|
@@ -221,7 +221,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
221
221
|
readonly parentTrack: any;
|
|
222
222
|
renderProps(): any;
|
|
223
223
|
readonly rendererType: import("@jbrowse/core/pluggableElementTypes").RendererType;
|
|
224
|
-
readonly DisplayMessageComponent: undefined |
|
|
224
|
+
readonly DisplayMessageComponent: undefined | React.FC<any>;
|
|
225
225
|
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
226
226
|
readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
|
|
227
227
|
regionCannotBeRendered(): null;
|
|
@@ -68,8 +68,8 @@ declare function stateModelFactory(pluginManager: PluginManager): import("mobx-s
|
|
|
68
68
|
readonly assemblyNames: string[];
|
|
69
69
|
} & {
|
|
70
70
|
scaleBarDisplayPrefix(): string | undefined;
|
|
71
|
-
MiniControlsComponent():
|
|
72
|
-
HeaderComponent():
|
|
71
|
+
MiniControlsComponent(): React.FC<any>;
|
|
72
|
+
HeaderComponent(): React.FC<any>;
|
|
73
73
|
readonly assemblyErrors: string;
|
|
74
74
|
readonly assembliesInitialized: boolean;
|
|
75
75
|
readonly initialized: boolean;
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import React, { useState, useCallback, useRef } from 'react';
|
|
1
|
+
import React, { useState, useCallback, useRef, lazy } from 'react';
|
|
2
2
|
import { observer } from 'mobx-react';
|
|
3
3
|
import { getContainingView } from '@jbrowse/core/util';
|
|
4
4
|
import { transaction } from 'mobx';
|
|
5
5
|
import { makeStyles } from 'tss-react/mui';
|
|
6
|
-
// locals
|
|
7
|
-
import SyntenyTooltip from './SyntenyTooltip';
|
|
8
6
|
import { getId, MAX_COLOR_RANGE } from '../drawSynteny';
|
|
9
7
|
import SyntenyContextMenu from './SyntenyContextMenu';
|
|
10
8
|
import { getTooltip, onSynClick, onSynContextClick } from './util';
|
|
9
|
+
const SyntenyTooltip = lazy(() => import('./SyntenyTooltip'));
|
|
11
10
|
const useStyles = makeStyles()({
|
|
12
11
|
pix: {
|
|
13
12
|
imageRendering: 'pixelated',
|
|
@@ -1,46 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { observer } from 'mobx-react';
|
|
3
|
-
import { Portal, useTheme, alpha } from '@mui/material';
|
|
4
|
-
import { makeStyles } from 'tss-react/mui';
|
|
5
|
-
import { useClientPoint, useFloating, useInteractions, } from '@floating-ui/react';
|
|
6
3
|
import { SanitizedHTML } from '@jbrowse/core/ui';
|
|
7
|
-
|
|
8
|
-
return Math.round(value * 1e5) / 1e5;
|
|
9
|
-
}
|
|
10
|
-
const useStyles = makeStyles()(theme => ({
|
|
11
|
-
// these styles come from
|
|
12
|
-
// https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/Tooltip/Tooltip.js
|
|
13
|
-
tooltip: {
|
|
14
|
-
position: 'absolute',
|
|
15
|
-
pointerEvents: 'none',
|
|
16
|
-
backgroundColor: alpha(theme.palette.grey[700], 0.9),
|
|
17
|
-
borderRadius: theme.shape.borderRadius,
|
|
18
|
-
color: theme.palette.common.white,
|
|
19
|
-
fontFamily: theme.typography.fontFamily,
|
|
20
|
-
padding: '4px 8px',
|
|
21
|
-
fontSize: theme.typography.pxToRem(12),
|
|
22
|
-
lineHeight: `${round(14 / 10)}em`,
|
|
23
|
-
maxWidth: 300,
|
|
24
|
-
wordWrap: 'break-word',
|
|
25
|
-
},
|
|
26
|
-
}));
|
|
4
|
+
import BaseTooltip from '@jbrowse/core/ui/BaseTooltip';
|
|
27
5
|
const SyntenyTooltip = observer(function ({ title }) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const { classes } = useStyles();
|
|
31
|
-
const { refs, floatingStyles, context } = useFloating({
|
|
32
|
-
placement: 'right',
|
|
33
|
-
strategy: 'fixed',
|
|
34
|
-
});
|
|
35
|
-
const clientPoint = useClientPoint(context);
|
|
36
|
-
const { getFloatingProps } = useInteractions([clientPoint]);
|
|
37
|
-
const popperTheme = (_a = theme.components) === null || _a === void 0 ? void 0 : _a.MuiPopper;
|
|
38
|
-
return title ? (React.createElement(Portal, { container: (_b = popperTheme === null || popperTheme === void 0 ? void 0 : popperTheme.defaultProps) === null || _b === void 0 ? void 0 : _b.container },
|
|
39
|
-
React.createElement("div", { className: classes.tooltip, ref: refs.setFloating, style: {
|
|
40
|
-
...floatingStyles,
|
|
41
|
-
zIndex: 100000,
|
|
42
|
-
pointerEvents: 'none',
|
|
43
|
-
}, ...getFloatingProps() },
|
|
44
|
-
React.createElement(SanitizedHTML, { html: title })))) : null;
|
|
6
|
+
return title ? (React.createElement(BaseTooltip, null,
|
|
7
|
+
React.createElement(SanitizedHTML, { html: title }))) : null;
|
|
45
8
|
});
|
|
46
9
|
export default SyntenyTooltip;
|
|
@@ -39,7 +39,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
39
39
|
error: unknown;
|
|
40
40
|
message: string | undefined;
|
|
41
41
|
} & {
|
|
42
|
-
readonly RenderingComponent:
|
|
42
|
+
readonly RenderingComponent: React.FC<{
|
|
43
43
|
model: {
|
|
44
44
|
id: string;
|
|
45
45
|
type: string;
|
|
@@ -60,7 +60,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
60
60
|
onHorizontalScroll?: () => void;
|
|
61
61
|
blockState?: Record<string, any>;
|
|
62
62
|
}>;
|
|
63
|
-
readonly DisplayBlurb:
|
|
63
|
+
readonly DisplayBlurb: React.FC<{
|
|
64
64
|
model: {
|
|
65
65
|
id: string;
|
|
66
66
|
type: string;
|
|
@@ -85,7 +85,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
85
85
|
readonly parentTrack: any;
|
|
86
86
|
renderProps(): any;
|
|
87
87
|
readonly rendererType: import("@jbrowse/core/pluggableElementTypes").RendererType;
|
|
88
|
-
readonly DisplayMessageComponent: undefined |
|
|
88
|
+
readonly DisplayMessageComponent: undefined | React.FC<any>;
|
|
89
89
|
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
90
90
|
readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
|
|
91
91
|
regionCannotBeRendered(): null;
|
|
@@ -122,7 +122,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
122
122
|
error: unknown;
|
|
123
123
|
message: string | undefined;
|
|
124
124
|
} & {
|
|
125
|
-
readonly RenderingComponent:
|
|
125
|
+
readonly RenderingComponent: React.FC<{
|
|
126
126
|
model: {
|
|
127
127
|
id: string;
|
|
128
128
|
type: string;
|
|
@@ -143,7 +143,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
143
143
|
onHorizontalScroll?: () => void;
|
|
144
144
|
blockState?: Record<string, any>;
|
|
145
145
|
}>;
|
|
146
|
-
readonly DisplayBlurb:
|
|
146
|
+
readonly DisplayBlurb: React.FC<{
|
|
147
147
|
model: {
|
|
148
148
|
id: string;
|
|
149
149
|
type: string;
|
|
@@ -168,7 +168,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
168
168
|
readonly parentTrack: any;
|
|
169
169
|
renderProps(): any;
|
|
170
170
|
readonly rendererType: import("@jbrowse/core/pluggableElementTypes").RendererType;
|
|
171
|
-
readonly DisplayMessageComponent: undefined |
|
|
171
|
+
readonly DisplayMessageComponent: undefined | React.FC<any>;
|
|
172
172
|
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
173
173
|
readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
|
|
174
174
|
regionCannotBeRendered(): null;
|
|
@@ -194,7 +194,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
194
194
|
error: unknown;
|
|
195
195
|
message: string | undefined;
|
|
196
196
|
} & {
|
|
197
|
-
readonly RenderingComponent:
|
|
197
|
+
readonly RenderingComponent: React.FC<{
|
|
198
198
|
model: {
|
|
199
199
|
id: string;
|
|
200
200
|
type: string;
|
|
@@ -215,7 +215,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
215
215
|
onHorizontalScroll?: () => void;
|
|
216
216
|
blockState?: Record<string, any>;
|
|
217
217
|
}>;
|
|
218
|
-
readonly DisplayBlurb:
|
|
218
|
+
readonly DisplayBlurb: React.FC<{
|
|
219
219
|
model: {
|
|
220
220
|
id: string;
|
|
221
221
|
type: string;
|
|
@@ -238,7 +238,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
|
|
|
238
238
|
readonly parentTrack: any;
|
|
239
239
|
renderProps(): any;
|
|
240
240
|
readonly rendererType: import("@jbrowse/core/pluggableElementTypes").RendererType;
|
|
241
|
-
readonly DisplayMessageComponent: undefined |
|
|
241
|
+
readonly DisplayMessageComponent: undefined | React.FC<any>;
|
|
242
242
|
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
243
243
|
readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
|
|
244
244
|
regionCannotBeRendered(): null;
|
|
@@ -2,10 +2,10 @@ import React from 'react';
|
|
|
2
2
|
import { SnapshotIn } from 'mobx-state-tree';
|
|
3
3
|
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
4
4
|
type Conf = SnapshotIn<AnyConfigurationModel>;
|
|
5
|
-
declare const
|
|
5
|
+
declare const ImportCustomTrack: ({ assembly1, assembly2, setSessionTrackData, }: {
|
|
6
6
|
sessionTrackData: Conf;
|
|
7
7
|
assembly1: string;
|
|
8
8
|
assembly2: string;
|
|
9
9
|
setSessionTrackData: (arg: Conf) => void;
|
|
10
10
|
}) => React.JSX.Element;
|
|
11
|
-
export default
|
|
11
|
+
export default ImportCustomTrack;
|
|
@@ -2,8 +2,8 @@ import React, { useState, useEffect } from 'react';
|
|
|
2
2
|
import { FormControlLabel, Grid, Paper, Radio, RadioGroup, Typography, } from '@mui/material';
|
|
3
3
|
import { ErrorMessage, FileSelector } from '@jbrowse/core/ui';
|
|
4
4
|
import { observer } from 'mobx-react';
|
|
5
|
-
import { extName, getName, stripGz
|
|
6
|
-
function getAdapter({ radioOption, assembly1, assembly2, fileLocation, bed1Location, bed2Location, }) {
|
|
5
|
+
import { basename, extName, getName, stripGz } from './util';
|
|
6
|
+
function getAdapter({ radioOption, assembly1, assembly2, fileLocation, indexFileLocation, bed1Location, bed2Location, }) {
|
|
7
7
|
if (radioOption === '.paf') {
|
|
8
8
|
return {
|
|
9
9
|
type: 'PAFAdapter',
|
|
@@ -54,14 +54,23 @@ function getAdapter({ radioOption, assembly1, assembly2, fileLocation, bed1Locat
|
|
|
54
54
|
assemblyNames: [assembly1, assembly2],
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
|
+
else if (radioOption === '.pif.gz') {
|
|
58
|
+
return {
|
|
59
|
+
type: 'PairwiseIndexedPAFAdapter',
|
|
60
|
+
pifGzLocation: fileLocation,
|
|
61
|
+
index: { location: indexFileLocation },
|
|
62
|
+
assemblyNames: [assembly1, assembly2],
|
|
63
|
+
};
|
|
64
|
+
}
|
|
57
65
|
else {
|
|
58
66
|
throw new Error(`Unknown to detect type ${radioOption} from filename (select radio button to clarify)`);
|
|
59
67
|
}
|
|
60
68
|
}
|
|
61
|
-
const
|
|
69
|
+
const ImportCustomTrack = observer(function ({ assembly1, assembly2, setSessionTrackData, }) {
|
|
62
70
|
const [bed2Location, setBed2Location] = useState();
|
|
63
71
|
const [bed1Location, setBed1Location] = useState();
|
|
64
72
|
const [fileLocation, setFileLocation] = useState();
|
|
73
|
+
const [indexFileLocation, setIndexFileLocation] = useState();
|
|
65
74
|
const [value, setValue] = useState('');
|
|
66
75
|
const [error, setError] = useState();
|
|
67
76
|
const fileName = getName(fileLocation);
|
|
@@ -82,6 +91,7 @@ const OpenTrack = observer(({ assembly1, assembly2, setSessionTrackData, }) => {
|
|
|
82
91
|
assembly1,
|
|
83
92
|
assembly2,
|
|
84
93
|
fileLocation,
|
|
94
|
+
indexFileLocation,
|
|
85
95
|
bed1Location,
|
|
86
96
|
bed2Location,
|
|
87
97
|
}),
|
|
@@ -99,12 +109,13 @@ const OpenTrack = observer(({ assembly1, assembly2, setSessionTrackData, }) => {
|
|
|
99
109
|
bed1Location,
|
|
100
110
|
bed2Location,
|
|
101
111
|
fileLocation,
|
|
112
|
+
indexFileLocation,
|
|
102
113
|
radioOption,
|
|
103
114
|
setSessionTrackData,
|
|
104
115
|
]);
|
|
105
116
|
return (React.createElement(Paper, { style: { padding: 12 } },
|
|
106
117
|
error ? React.createElement(ErrorMessage, { error: error }) : null,
|
|
107
|
-
React.createElement(Typography, { style: { textAlign: 'center' } }, "Add a .paf, .out (MashMap), .delta (Mummer), .chain, .anchors or .anchors.simple (MCScan) file to view
|
|
118
|
+
React.createElement(Typography, { style: { textAlign: 'center' } }, "Add a .paf, .out (MashMap), .delta (Mummer), .chain, .anchors or .anchors.simple (MCScan) file to view. These file types can also be gzipped. The first assembly should be the query sequence (e.g. left column of the PAF) and the second assembly should be the target sequence (e.g. right column of the PAF)"),
|
|
108
119
|
React.createElement(RadioGroup, { value: radioOption, onChange: event => {
|
|
109
120
|
setValue(event.target.value);
|
|
110
121
|
} },
|
|
@@ -120,7 +131,9 @@ const OpenTrack = observer(({ assembly1, assembly2, setSessionTrackData, }) => {
|
|
|
120
131
|
React.createElement(Grid, { item: true },
|
|
121
132
|
React.createElement(FormControlLabel, { value: ".anchors", control: React.createElement(Radio, null), label: ".anchors" })),
|
|
122
133
|
React.createElement(Grid, { item: true },
|
|
123
|
-
React.createElement(FormControlLabel, { value: ".anchors.simple", control: React.createElement(Radio, null), label: ".anchors.simple" }))
|
|
134
|
+
React.createElement(FormControlLabel, { value: ".anchors.simple", control: React.createElement(Radio, null), label: ".anchors.simple" })),
|
|
135
|
+
React.createElement(Grid, { item: true },
|
|
136
|
+
React.createElement(FormControlLabel, { value: ".pif.gz", control: React.createElement(Radio, null), label: ".pif.gz" })))),
|
|
124
137
|
React.createElement(Grid, { container: true, justifyContent: "center" },
|
|
125
138
|
React.createElement(Grid, { item: true }, value === '.anchors' || value === '.anchors.simple' ? (React.createElement("div", null,
|
|
126
139
|
React.createElement("div", { style: { margin: 20 } },
|
|
@@ -141,8 +154,16 @@ const OpenTrack = observer(({ assembly1, assembly2, setSessionTrackData, }) => {
|
|
|
141
154
|
React.createElement("div", null,
|
|
142
155
|
React.createElement(FileSelector, { name: "genome 2 .bed (right column of anchors file)", description: "", location: bed2Location, setLocation: loc => {
|
|
143
156
|
setBed2Location(loc);
|
|
144
|
-
} }))))) : (React.createElement(
|
|
157
|
+
} }))))) : value === '.pif.gz' ? (React.createElement("div", { style: { display: 'flex' } },
|
|
158
|
+
React.createElement("div", null,
|
|
159
|
+
React.createElement(FileSelector, { name: `${value} location`, description: "", location: fileLocation, setLocation: loc => {
|
|
160
|
+
setFileLocation(loc);
|
|
161
|
+
} })),
|
|
162
|
+
React.createElement("div", null,
|
|
163
|
+
React.createElement(FileSelector, { name: `${value} index location`, description: "", location: indexFileLocation, setLocation: loc => {
|
|
164
|
+
setIndexFileLocation(loc);
|
|
165
|
+
} })))) : (React.createElement(FileSelector, { name: value ? `${value} location` : '', description: "", location: fileLocation, setLocation: loc => {
|
|
145
166
|
setFileLocation(loc);
|
|
146
167
|
} }))))));
|
|
147
168
|
});
|
|
148
|
-
export default
|
|
169
|
+
export default ImportCustomTrack;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-linear-comparative-view",
|
|
3
|
-
"version": "2.15.
|
|
3
|
+
"version": "2.15.2",
|
|
4
4
|
"description": "JBrowse 2 linear comparative view",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
"publishConfig": {
|
|
62
62
|
"access": "public"
|
|
63
63
|
},
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "8a58cefbfe39af4c97bcb6ead354d72c9fef9224"
|
|
65
65
|
}
|