@jbrowse/plugin-spreadsheet-view 2.18.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/SpreadsheetView/ImportWizard.js +17 -7
- package/dist/SpreadsheetView/SpreadsheetModel.d.ts +4 -5
- package/dist/SpreadsheetView/SpreadsheetModel.js +15 -29
- package/dist/SpreadsheetView/SpreadsheetViewModel.d.ts +8 -8
- package/dist/SpreadsheetView/SpreadsheetViewModel.js +9 -2
- package/dist/SpreadsheetView/components/FeatureMenu.d.ts +1 -2
- package/dist/SpreadsheetView/components/FeatureMenu.js +21 -11
- package/dist/SpreadsheetView/components/ImportWizard.d.ts +1 -2
- package/dist/SpreadsheetView/components/ImportWizard.js +16 -56
- package/dist/SpreadsheetView/components/LocationCell.d.ts +1 -2
- package/dist/SpreadsheetView/components/LocationCell.js +16 -18
- package/dist/SpreadsheetView/components/NumberEditor.d.ts +1 -2
- package/dist/SpreadsheetView/components/NumberEditor.js +3 -25
- package/dist/SpreadsheetView/components/SpreadsheetDataGrid.d.ts +1 -2
- package/dist/SpreadsheetView/components/SpreadsheetDataGrid.js +3 -7
- package/dist/SpreadsheetView/components/SpreadsheetView.d.ts +1 -2
- package/dist/SpreadsheetView/components/SpreadsheetView.js +21 -38
- package/dist/SpreadsheetView/components/SpreadsheetViewActual.d.ts +5 -0
- package/dist/SpreadsheetView/components/SpreadsheetViewActual.js +34 -0
- package/dist/SpreadsheetView/components/TrackSelector.d.ts +1 -2
- package/dist/SpreadsheetView/components/TrackSelector.js +5 -27
- package/dist/SpreadsheetView/index.js +17 -7
- package/esm/SpreadsheetView/SpreadsheetModel.d.ts +4 -5
- package/esm/SpreadsheetView/SpreadsheetModel.js +16 -30
- package/esm/SpreadsheetView/SpreadsheetViewModel.d.ts +8 -8
- package/esm/SpreadsheetView/SpreadsheetViewModel.js +9 -2
- package/esm/SpreadsheetView/components/FeatureMenu.d.ts +1 -2
- package/esm/SpreadsheetView/components/FeatureMenu.js +4 -4
- package/esm/SpreadsheetView/components/ImportWizard.d.ts +1 -2
- package/esm/SpreadsheetView/components/ImportWizard.js +16 -33
- package/esm/SpreadsheetView/components/LocationCell.d.ts +1 -2
- package/esm/SpreadsheetView/components/LocationCell.js +16 -18
- package/esm/SpreadsheetView/components/NumberEditor.d.ts +1 -2
- package/esm/SpreadsheetView/components/NumberEditor.js +3 -2
- package/esm/SpreadsheetView/components/SpreadsheetDataGrid.d.ts +1 -2
- package/esm/SpreadsheetView/components/SpreadsheetDataGrid.js +3 -4
- package/esm/SpreadsheetView/components/SpreadsheetView.d.ts +1 -2
- package/esm/SpreadsheetView/components/SpreadsheetView.js +4 -31
- package/esm/SpreadsheetView/components/SpreadsheetViewActual.d.ts +5 -0
- package/esm/SpreadsheetView/components/SpreadsheetViewActual.js +29 -0
- package/esm/SpreadsheetView/components/TrackSelector.d.ts +1 -2
- package/esm/SpreadsheetView/components/TrackSelector.js +5 -4
- package/package.json +4 -4
|
@@ -15,51 +15,34 @@ 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
|
};
|
|
28
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
const
|
|
30
|
-
const
|
|
39
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
40
|
+
const react_1 = require("react");
|
|
31
41
|
const mobx_react_1 = require("mobx-react");
|
|
32
|
-
const
|
|
33
|
-
const SpreadsheetDataGrid_1 = __importDefault(require("./SpreadsheetDataGrid"));
|
|
42
|
+
const SpreadsheetViewActual_1 = __importDefault(require("./SpreadsheetViewActual"));
|
|
34
43
|
const ImportWizard = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./ImportWizard'))));
|
|
35
|
-
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
36
|
-
contentArea: {
|
|
37
|
-
overflow: 'auto',
|
|
38
|
-
position: 'relative',
|
|
39
|
-
marginBottom: theme.spacing(1),
|
|
40
|
-
background: theme.palette.background.paper,
|
|
41
|
-
},
|
|
42
|
-
resizeHandle: {
|
|
43
|
-
height: 5,
|
|
44
|
-
boxSizing: 'border-box',
|
|
45
|
-
background: theme.palette.action.disabled,
|
|
46
|
-
borderTop: '1px solid #fafafa',
|
|
47
|
-
},
|
|
48
|
-
}));
|
|
49
|
-
const SpreadsheetView = (0, mobx_react_1.observer)(function ({ model, }) {
|
|
50
|
-
const [initialHeight, setInitialHeight] = (0, react_1.useState)(0);
|
|
51
|
-
const { classes } = useStyles();
|
|
52
|
-
const { spreadsheet, hideVerticalResizeHandle, height } = model;
|
|
53
|
-
return spreadsheet ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
54
|
-
react_1.default.createElement("div", { style: { height }, className: classes.contentArea },
|
|
55
|
-
react_1.default.createElement(SpreadsheetDataGrid_1.default, { model: spreadsheet })),
|
|
56
|
-
hideVerticalResizeHandle ? null : (react_1.default.createElement(ui_1.ResizeHandle, { onMouseDown: () => {
|
|
57
|
-
setInitialHeight(height);
|
|
58
|
-
}, onDrag: (_, dist) => model.setHeight(initialHeight - dist), className: classes.resizeHandle })))) : (react_1.default.createElement("div", null, "Unknown"));
|
|
59
|
-
});
|
|
60
44
|
const SpreadsheetContainer = (0, mobx_react_1.observer)(function ({ model, }) {
|
|
61
45
|
var _a;
|
|
62
|
-
return !((_a = model.spreadsheet) === null || _a === void 0 ? void 0 : _a.initialized) ? (
|
|
63
|
-
react_1.default.createElement(ImportWizard, { model: model.importWizard }))) : (react_1.default.createElement(SpreadsheetView, { model: model }));
|
|
46
|
+
return !((_a = model.spreadsheet) === null || _a === void 0 ? void 0 : _a.initialized) ? ((0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: null, children: (0, jsx_runtime_1.jsx)(ImportWizard, { model: model.importWizard }) })) : ((0, jsx_runtime_1.jsx)(SpreadsheetViewActual_1.default, { model: model }));
|
|
64
47
|
});
|
|
65
48
|
exports.default = SpreadsheetContainer;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
const react_1 = require("react");
|
|
8
|
+
const ui_1 = require("@jbrowse/core/ui");
|
|
9
|
+
const mobx_react_1 = require("mobx-react");
|
|
10
|
+
const mui_1 = require("tss-react/mui");
|
|
11
|
+
const SpreadsheetDataGrid_1 = __importDefault(require("./SpreadsheetDataGrid"));
|
|
12
|
+
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
13
|
+
contentArea: {
|
|
14
|
+
overflow: 'auto',
|
|
15
|
+
position: 'relative',
|
|
16
|
+
marginBottom: theme.spacing(1),
|
|
17
|
+
background: theme.palette.background.paper,
|
|
18
|
+
},
|
|
19
|
+
resizeHandle: {
|
|
20
|
+
height: 5,
|
|
21
|
+
boxSizing: 'border-box',
|
|
22
|
+
background: theme.palette.action.disabled,
|
|
23
|
+
borderTop: '1px solid #fafafa',
|
|
24
|
+
},
|
|
25
|
+
}));
|
|
26
|
+
const SpreadsheetViewActual = (0, mobx_react_1.observer)(function ({ model, }) {
|
|
27
|
+
const [initialHeight, setInitialHeight] = (0, react_1.useState)(0);
|
|
28
|
+
const { classes } = useStyles();
|
|
29
|
+
const { spreadsheet, hideVerticalResizeHandle, height } = model;
|
|
30
|
+
return spreadsheet ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { style: { height }, className: classes.contentArea, children: (0, jsx_runtime_1.jsx)(SpreadsheetDataGrid_1.default, { model: spreadsheet }) }), hideVerticalResizeHandle ? null : ((0, jsx_runtime_1.jsx)(ui_1.ResizeHandle, { onMouseDown: () => {
|
|
31
|
+
setInitialHeight(height);
|
|
32
|
+
}, onDrag: (_, dist) => model.setHeight(initialHeight - dist), className: classes.resizeHandle }))] })) : ((0, jsx_runtime_1.jsx)("div", { children: "Unknown" }));
|
|
33
|
+
});
|
|
34
|
+
exports.default = SpreadsheetViewActual;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import type { ImportWizardModel } from '../ImportWizard';
|
|
3
2
|
declare const TrackSelector: ({ model, selectedAssembly, }: {
|
|
4
3
|
model: ImportWizardModel;
|
|
5
4
|
selectedAssembly: string;
|
|
6
|
-
}) =>
|
|
5
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
7
6
|
export default TrackSelector;
|
|
@@ -1,29 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
const
|
|
3
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
const react_1 = require("react");
|
|
27
5
|
const ui_1 = require("@jbrowse/core/ui");
|
|
28
6
|
const util_1 = require("@jbrowse/core/util");
|
|
29
7
|
const material_1 = require("@mui/material");
|
|
@@ -42,8 +20,8 @@ const TrackSelector = (0, mobx_react_1.observer)(function ({ model, selectedAsse
|
|
|
42
20
|
model.setFileType(entry.type);
|
|
43
21
|
}
|
|
44
22
|
}, [model, selectedTrack, filteredTracks]);
|
|
45
|
-
return (
|
|
46
|
-
|
|
47
|
-
|
|
23
|
+
return ((0, jsx_runtime_1.jsx)("div", { children: (filteredTracks === null || filteredTracks === void 0 ? void 0 : filteredTracks.length) ? ((0, jsx_runtime_1.jsx)(material_1.TextField, { select: true, label: "Tracks", variant: "outlined", value: selectedTrack, onChange: event => {
|
|
24
|
+
setSelectedTrack(event.target.value);
|
|
25
|
+
}, children: filteredTracks.map(({ track, label }) => ((0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: track.trackId, children: (0, util_1.coarseStripHTML)(label) }, track.trackId))) })) : ((0, jsx_runtime_1.jsx)(ui_1.ErrorMessage, { error: `No tracks found for ${selectedAssembly}` })) }));
|
|
48
26
|
});
|
|
49
27
|
exports.default = TrackSelector;
|
|
@@ -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
|
};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import type { SimpleFeatureSerialized } from '@jbrowse/core/util';
|
|
3
2
|
import type { Instance } from 'mobx-state-tree';
|
|
4
3
|
export interface Row {
|
|
@@ -23,7 +22,6 @@ export default function stateModelFactory(): import("mobx-state-tree").IModelTyp
|
|
|
23
22
|
assemblyName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
24
23
|
visibleColumns: import("mobx-state-tree").IType<Record<string, boolean>, Record<string, boolean>, Record<string, boolean>>;
|
|
25
24
|
}, {
|
|
26
|
-
isLoaded: boolean;
|
|
27
25
|
visibleRowFlags: Record<number, boolean> | undefined;
|
|
28
26
|
} & {
|
|
29
27
|
readonly rows: {
|
|
@@ -35,17 +33,20 @@ export default function stateModelFactory(): import("mobx-state-tree").IModelTyp
|
|
|
35
33
|
readonly dataGridColumns: ({
|
|
36
34
|
field: string;
|
|
37
35
|
width: number;
|
|
36
|
+
type: "number" | undefined;
|
|
38
37
|
} | {
|
|
39
38
|
field: string;
|
|
40
39
|
width: number;
|
|
41
40
|
renderCell: ({ row }: import("@mui/x-data-grid").GridRenderCellParams<{
|
|
42
41
|
id: number;
|
|
43
42
|
feature: SimpleFeatureSerialized | undefined;
|
|
44
|
-
}, any, any, import("@mui/x-data-grid").GridTreeNodeWithRender>) =>
|
|
43
|
+
}, any, any, import("@mui/x-data-grid").GridTreeNodeWithRender>) => import("react/jsx-runtime").JSX.Element | "N/A";
|
|
44
|
+
type?: undefined;
|
|
45
45
|
valueGetter?: undefined;
|
|
46
46
|
valueFormatter?: undefined;
|
|
47
47
|
} | {
|
|
48
48
|
field: string;
|
|
49
|
+
type: "number";
|
|
49
50
|
width: number;
|
|
50
51
|
valueGetter: (_val: unknown, row: {
|
|
51
52
|
feature?: SimpleFeatureSerialized;
|
|
@@ -61,8 +62,6 @@ export default function stateModelFactory(): import("mobx-state-tree").IModelTyp
|
|
|
61
62
|
} & {
|
|
62
63
|
setVisibleRows(arg?: Record<number, boolean>): void;
|
|
63
64
|
setVisibleColumns(arg: Record<string, boolean>): void;
|
|
64
|
-
setLoaded(flag: boolean): void;
|
|
65
|
-
afterAttach(): void;
|
|
66
65
|
}, import("mobx-state-tree").ModelCreationType<import("mobx-state-tree/dist/internal").ExtractCFromProps<{
|
|
67
66
|
rowSet: import("mobx-state-tree").IType<RowSet | undefined, RowSet | undefined, RowSet | undefined>;
|
|
68
67
|
columns: import("mobx-state-tree").IType<{
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { assembleLocStringFast, getSession, measureGridWidth, toLocale, } from '@jbrowse/core/util';
|
|
3
|
-
import {
|
|
4
|
-
import { addDisposer, types } from 'mobx-state-tree';
|
|
3
|
+
import { types } from 'mobx-state-tree';
|
|
5
4
|
import LocationCell from './components/LocationCell';
|
|
6
5
|
export default function stateModelFactory() {
|
|
7
6
|
return types
|
|
@@ -12,7 +11,6 @@ export default function stateModelFactory() {
|
|
|
12
11
|
visibleColumns: types.frozen(),
|
|
13
12
|
})
|
|
14
13
|
.volatile(() => ({
|
|
15
|
-
isLoaded: false,
|
|
16
14
|
visibleRowFlags: undefined,
|
|
17
15
|
}))
|
|
18
16
|
.views(self => ({
|
|
@@ -34,7 +32,8 @@ export default function stateModelFactory() {
|
|
|
34
32
|
var _a;
|
|
35
33
|
const session = getSession(self);
|
|
36
34
|
const name = self.assemblyName;
|
|
37
|
-
return
|
|
35
|
+
return (self.rowSet &&
|
|
36
|
+
(name ? (_a = session.assemblyManager.get(name)) === null || _a === void 0 ? void 0 : _a.initialized : false));
|
|
38
37
|
},
|
|
39
38
|
}))
|
|
40
39
|
.views(self => ({
|
|
@@ -47,22 +46,28 @@ export default function stateModelFactory() {
|
|
|
47
46
|
width: measureGridWidth(rows.map(row => row.feature ? assembleLocStringFast(row.feature) : 0)) + 40,
|
|
48
47
|
renderCell: ({ row }) => {
|
|
49
48
|
const { feature } = row;
|
|
50
|
-
return feature ? (
|
|
49
|
+
return feature ? (_jsx(LocationCell, { model: self, feature: feature })) : ('N/A');
|
|
51
50
|
},
|
|
52
51
|
},
|
|
53
52
|
{
|
|
54
53
|
field: 'Length',
|
|
55
|
-
|
|
54
|
+
type: 'number',
|
|
55
|
+
width: measureGridWidth(rows.map(row => {
|
|
56
|
+
const { feature } = row;
|
|
57
|
+
return feature ? feature.end - feature.start : 0;
|
|
58
|
+
})),
|
|
56
59
|
valueGetter: (_val, row) => {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
: undefined;
|
|
60
|
+
const { feature } = row;
|
|
61
|
+
return feature ? feature.end - feature.start : undefined;
|
|
60
62
|
},
|
|
61
63
|
valueFormatter: arg => toLocale(arg),
|
|
62
64
|
},
|
|
63
65
|
...self.columns.map(f => ({
|
|
64
66
|
field: f.name,
|
|
65
67
|
width: measureGridWidth([...rows.map(r => r[f.name]), f.name], { minWidth: 20 }),
|
|
68
|
+
type: typeof rows[0][f.name] === 'number'
|
|
69
|
+
? 'number'
|
|
70
|
+
: undefined,
|
|
66
71
|
})),
|
|
67
72
|
]
|
|
68
73
|
: undefined;
|
|
@@ -73,7 +78,7 @@ export default function stateModelFactory() {
|
|
|
73
78
|
var _a;
|
|
74
79
|
const { visibleRowFlags } = self;
|
|
75
80
|
return visibleRowFlags
|
|
76
|
-
? (_a = self.rows) === null || _a === void 0 ? void 0 : _a.filter((
|
|
81
|
+
? (_a = self.rows) === null || _a === void 0 ? void 0 : _a.filter((_f, idx) => !!visibleRowFlags[idx])
|
|
77
82
|
: self.rows;
|
|
78
83
|
},
|
|
79
84
|
}))
|
|
@@ -84,25 +89,6 @@ export default function stateModelFactory() {
|
|
|
84
89
|
setVisibleColumns(arg) {
|
|
85
90
|
self.visibleColumns = arg;
|
|
86
91
|
},
|
|
87
|
-
setLoaded(flag) {
|
|
88
|
-
self.isLoaded = flag;
|
|
89
|
-
},
|
|
90
|
-
afterAttach() {
|
|
91
|
-
addDisposer(self, autorun(async () => {
|
|
92
|
-
const session = getSession(self);
|
|
93
|
-
const { assemblyManager } = session;
|
|
94
|
-
try {
|
|
95
|
-
if (self.assemblyName) {
|
|
96
|
-
await assemblyManager.waitForAssembly(self.assemblyName);
|
|
97
|
-
this.setLoaded(true);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
catch (e) {
|
|
101
|
-
console.error(e);
|
|
102
|
-
session.notifyError(`Failed to load assembly ${self.assemblyName} ${e}`, e);
|
|
103
|
-
}
|
|
104
|
-
}));
|
|
105
|
-
},
|
|
106
92
|
}))
|
|
107
93
|
.preProcessSnapshot(snap => {
|
|
108
94
|
return snap
|
|
@@ -70,7 +70,6 @@ export default function stateModelFactory(): import("mobx-state-tree").IModelTyp
|
|
|
70
70
|
assemblyName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
71
71
|
visibleColumns: import("mobx-state-tree").IType<Record<string, boolean>, Record<string, boolean>, Record<string, boolean>>;
|
|
72
72
|
}, {
|
|
73
|
-
isLoaded: boolean;
|
|
74
73
|
visibleRowFlags: Record<number, boolean> | undefined;
|
|
75
74
|
} & {
|
|
76
75
|
readonly rows: {
|
|
@@ -82,17 +81,20 @@ export default function stateModelFactory(): import("mobx-state-tree").IModelTyp
|
|
|
82
81
|
readonly dataGridColumns: ({
|
|
83
82
|
field: string;
|
|
84
83
|
width: number;
|
|
84
|
+
type: "number" | undefined;
|
|
85
85
|
} | {
|
|
86
86
|
field: string;
|
|
87
87
|
width: number;
|
|
88
88
|
renderCell: ({ row }: import("@mui/x-data-grid").GridRenderCellParams<{
|
|
89
89
|
id: number;
|
|
90
90
|
feature: import("@jbrowse/core/util").SimpleFeatureSerialized | undefined;
|
|
91
|
-
}, any, any, import("@mui/x-data-grid").GridTreeNodeWithRender>) => import("react").JSX.Element | "N/A";
|
|
91
|
+
}, any, any, import("@mui/x-data-grid").GridTreeNodeWithRender>) => import("react/jsx-runtime").JSX.Element | "N/A";
|
|
92
|
+
type?: undefined;
|
|
92
93
|
valueGetter?: undefined;
|
|
93
94
|
valueFormatter?: undefined;
|
|
94
95
|
} | {
|
|
95
96
|
field: string;
|
|
97
|
+
type: "number";
|
|
96
98
|
width: number;
|
|
97
99
|
valueGetter: (_val: unknown, row: {
|
|
98
100
|
feature?: import("@jbrowse/core/util").SimpleFeatureSerialized;
|
|
@@ -108,8 +110,6 @@ export default function stateModelFactory(): import("mobx-state-tree").IModelTyp
|
|
|
108
110
|
} & {
|
|
109
111
|
setVisibleRows(arg?: Record<number, boolean>): void;
|
|
110
112
|
setVisibleColumns(arg: Record<string, boolean>): void;
|
|
111
|
-
setLoaded(flag: boolean): void;
|
|
112
|
-
afterAttach(): void;
|
|
113
113
|
}, import("mobx-state-tree").ModelCreationType<import("mobx-state-tree/dist/internal").ExtractCFromProps<{
|
|
114
114
|
rowSet: import("mobx-state-tree").IType<import("./SpreadsheetModel").RowSet | undefined, import("./SpreadsheetModel").RowSet | undefined, import("./SpreadsheetModel").RowSet | undefined>;
|
|
115
115
|
columns: import("mobx-state-tree").IType<{
|
|
@@ -219,7 +219,6 @@ export default function stateModelFactory(): import("mobx-state-tree").IModelTyp
|
|
|
219
219
|
assemblyName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
220
220
|
visibleColumns: import("mobx-state-tree").IType<Record<string, boolean>, Record<string, boolean>, Record<string, boolean>>;
|
|
221
221
|
}, {
|
|
222
|
-
isLoaded: boolean;
|
|
223
222
|
visibleRowFlags: Record<number, boolean> | undefined;
|
|
224
223
|
} & {
|
|
225
224
|
readonly rows: {
|
|
@@ -231,17 +230,20 @@ export default function stateModelFactory(): import("mobx-state-tree").IModelTyp
|
|
|
231
230
|
readonly dataGridColumns: ({
|
|
232
231
|
field: string;
|
|
233
232
|
width: number;
|
|
233
|
+
type: "number" | undefined;
|
|
234
234
|
} | {
|
|
235
235
|
field: string;
|
|
236
236
|
width: number;
|
|
237
237
|
renderCell: ({ row }: import("@mui/x-data-grid").GridRenderCellParams<{
|
|
238
238
|
id: number;
|
|
239
239
|
feature: import("@jbrowse/core/util").SimpleFeatureSerialized | undefined;
|
|
240
|
-
}, any, any, import("@mui/x-data-grid").GridTreeNodeWithRender>) => import("react").JSX.Element | "N/A";
|
|
240
|
+
}, any, any, import("@mui/x-data-grid").GridTreeNodeWithRender>) => import("react/jsx-runtime").JSX.Element | "N/A";
|
|
241
|
+
type?: undefined;
|
|
241
242
|
valueGetter?: undefined;
|
|
242
243
|
valueFormatter?: undefined;
|
|
243
244
|
} | {
|
|
244
245
|
field: string;
|
|
246
|
+
type: "number";
|
|
245
247
|
width: number;
|
|
246
248
|
valueGetter: (_val: unknown, row: {
|
|
247
249
|
feature?: import("@jbrowse/core/util").SimpleFeatureSerialized;
|
|
@@ -257,8 +259,6 @@ export default function stateModelFactory(): import("mobx-state-tree").IModelTyp
|
|
|
257
259
|
} & {
|
|
258
260
|
setVisibleRows(arg?: Record<number, boolean>): void;
|
|
259
261
|
setVisibleColumns(arg: Record<string, boolean>): void;
|
|
260
|
-
setLoaded(flag: boolean): void;
|
|
261
|
-
afterAttach(): void;
|
|
262
262
|
}, import("mobx-state-tree").ModelCreationType<import("mobx-state-tree/dist/internal").ExtractCFromProps<{
|
|
263
263
|
rowSet: import("mobx-state-tree").IType<import("./SpreadsheetModel").RowSet | undefined, import("./SpreadsheetModel").RowSet | undefined, import("./SpreadsheetModel").RowSet | undefined>;
|
|
264
264
|
columns: import("mobx-state-tree").IType<{
|
|
@@ -81,8 +81,15 @@ export default function stateModelFactory() {
|
|
|
81
81
|
spreadsheet: rest,
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
|
-
else {
|
|
85
|
-
|
|
84
|
+
else if (spreadsheet) {
|
|
85
|
+
const { rowSet, ...rest } = spreadsheet;
|
|
86
|
+
return rowSet && JSON.stringify(rowSet).length > 1000000
|
|
87
|
+
? {
|
|
88
|
+
...snap,
|
|
89
|
+
spreadsheet: rest,
|
|
90
|
+
}
|
|
91
|
+
: snap;
|
|
86
92
|
}
|
|
93
|
+
return snap;
|
|
87
94
|
});
|
|
88
95
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import type { AbstractSessionModel, SimpleFeatureSerialized } from '@jbrowse/core/util';
|
|
3
2
|
export default function FeatureMenu({ assemblyName, session, spreadsheetViewId, feature, }: {
|
|
4
3
|
spreadsheetViewId: string;
|
|
5
4
|
assemblyName: string;
|
|
6
5
|
session: AbstractSessionModel;
|
|
7
6
|
feature: SimpleFeatureSerialized;
|
|
8
|
-
}):
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { lazy } from 'react';
|
|
2
3
|
import CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton';
|
|
3
4
|
import { SimpleFeature, assembleLocStringFast } from '@jbrowse/core/util';
|
|
4
5
|
import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';
|
|
@@ -7,7 +8,7 @@ import { locationLinkClick } from '../util';
|
|
|
7
8
|
const BreakendMultiLevelOptionDialog = lazy(() => import('./BreakendMultiLevelOptionDialog'));
|
|
8
9
|
const BreakendSingleLevelOptionDialog = lazy(() => import('./BreakendSingleLevelOptionDialog'));
|
|
9
10
|
export default function FeatureMenu({ assemblyName, session, spreadsheetViewId, feature, }) {
|
|
10
|
-
return (
|
|
11
|
+
return (_jsx(CascadingMenuButton, { menuItems: [
|
|
11
12
|
{
|
|
12
13
|
label: 'Open in linear genome view',
|
|
13
14
|
onClick: async () => {
|
|
@@ -61,6 +62,5 @@ export default function FeatureMenu({ assemblyName, session, spreadsheetViewId,
|
|
|
61
62
|
]);
|
|
62
63
|
},
|
|
63
64
|
},
|
|
64
|
-
] }
|
|
65
|
-
React.createElement(ArrowDropDownIcon, null)));
|
|
65
|
+
], children: _jsx(ArrowDropDownIcon, {}) }));
|
|
66
66
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
2
3
|
import { AssemblySelector, ErrorMessage, FileSelector, LoadingEllipses, } from '@jbrowse/core/ui';
|
|
3
4
|
import { getSession } from '@jbrowse/core/util';
|
|
4
5
|
import { Button, FormControl, FormControlLabel, FormGroup, FormLabel, Paper, Radio, RadioGroup, } from '@mui/material';
|
|
@@ -23,37 +24,19 @@ const ImportWizard = observer(function ({ model, }) {
|
|
|
23
24
|
const [selectorType, setSelectorType] = useState('custom');
|
|
24
25
|
const err = ((_a = assemblyManager.get(selectedAssembly)) === null || _a === void 0 ? void 0 : _a.error) || error;
|
|
25
26
|
const rootModel = getRoot(model);
|
|
26
|
-
return (
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
React.createElement(FormGroup, null,
|
|
41
|
-
React.createElement(FileSelector, { inline: true, location: fileSource, rootModel: rootModel, setLocation: arg => {
|
|
42
|
-
model.setFileSource(arg);
|
|
43
|
-
} }))))) : selectedAssembly ? (React.createElement(TrackSelector, { model: model, selectedAssembly: selectedAssembly })) : (React.createElement("div", null, "Select assembly")),
|
|
44
|
-
React.createElement("div", null,
|
|
45
|
-
React.createElement(FormControl, { component: "fieldset" },
|
|
46
|
-
React.createElement(FormLabel, { component: "legend" }, "File Type"),
|
|
47
|
-
React.createElement(RadioGroup, { row: true, "aria-label": "file type", name: "type", value: fileType, onChange: event => {
|
|
48
|
-
model.setFileType(event.target.value);
|
|
49
|
-
} }, fileTypes.map(fileTypeName => (React.createElement(FormControlLabel, { key: fileTypeName, checked: fileType === fileTypeName, value: fileTypeName, control: React.createElement(Radio, null), label: fileTypeName })))))),
|
|
50
|
-
React.createElement("div", null,
|
|
51
|
-
React.createElement(AssemblySelector, { session: session, selected: selectedAssembly, onChange: val => {
|
|
52
|
-
setSelectedAssembly(val);
|
|
53
|
-
} })),
|
|
54
|
-
React.createElement("div", null,
|
|
55
|
-
React.createElement(Button, { disabled: !isReadyToOpen || !!err, variant: "contained", "data-testid": "open_spreadsheet", color: "primary", onClick: () => {
|
|
56
|
-
model.import(selectedAssembly);
|
|
57
|
-
} }, "Open")))));
|
|
27
|
+
return (_jsxs("div", { children: [err ? _jsx(ErrorMessage, { error: err }) : null, _jsxs(Paper, { className: classes.container, children: [loading ? _jsx(LoadingEllipses, { variant: "h6" }) : null, _jsx("div", { children: _jsx(FormControl, { component: "fieldset", children: _jsx(RadioGroup, { row: true, "aria-label": "file type", name: "type", value: fileType, onChange: event => {
|
|
28
|
+
setSelectorType(event.target.value);
|
|
29
|
+
}, children: Object.entries({
|
|
30
|
+
custom: 'Open file from URL or local computer',
|
|
31
|
+
existing: 'Open from track',
|
|
32
|
+
}).map(([key, val]) => (_jsx(FormControlLabel, { checked: selectorType === key, value: key, control: _jsx(Radio, {}), label: val }, key))) }) }) }), selectorType === 'custom' ? (_jsx("div", { children: _jsx(FormControl, { component: "fieldset", children: _jsx(FormGroup, { children: _jsx(FileSelector, { inline: true, location: fileSource, rootModel: rootModel, setLocation: arg => {
|
|
33
|
+
model.setFileSource(arg);
|
|
34
|
+
} }) }) }) })) : selectedAssembly ? (_jsx(TrackSelector, { model: model, selectedAssembly: selectedAssembly })) : (_jsx("div", { children: "Select assembly" })), _jsx("div", { children: _jsxs(FormControl, { component: "fieldset", children: [_jsx(FormLabel, { component: "legend", children: "File Type" }), _jsx(RadioGroup, { row: true, "aria-label": "file type", name: "type", value: fileType, onChange: event => {
|
|
35
|
+
model.setFileType(event.target.value);
|
|
36
|
+
}, children: fileTypes.map(fileTypeName => (_jsx(FormControlLabel, { checked: fileType === fileTypeName, value: fileTypeName, control: _jsx(Radio, {}), label: fileTypeName }, fileTypeName))) })] }) }), _jsx("div", { children: _jsx(AssemblySelector, { session: session, selected: selectedAssembly, onChange: val => {
|
|
37
|
+
setSelectedAssembly(val);
|
|
38
|
+
} }) }), _jsx("div", { children: _jsx(Button, { disabled: !isReadyToOpen || !!err, variant: "contained", "data-testid": "open_spreadsheet", color: "primary", onClick: () => {
|
|
39
|
+
model.import(selectedAssembly);
|
|
40
|
+
}, children: "Open" }) })] })] }));
|
|
58
41
|
});
|
|
59
42
|
export default ImportWizard;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import type { SimpleFeatureSerialized } from '@jbrowse/core/util';
|
|
3
2
|
export default function LocationCell({ model, feature, }: {
|
|
4
3
|
model: {
|
|
5
4
|
assemblyName?: string;
|
|
6
5
|
};
|
|
7
6
|
feature: SimpleFeatureSerialized;
|
|
8
|
-
}):
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,25 +1,23 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { assembleLocString, getSession } from '@jbrowse/core/util';
|
|
3
3
|
import { Link } from '@mui/material';
|
|
4
4
|
import { getParent } from 'mobx-state-tree';
|
|
5
5
|
import { locationLinkClick } from '../util';
|
|
6
6
|
import FeatureMenu from './FeatureMenu';
|
|
7
7
|
export default function LocationCell({ model, feature, }) {
|
|
8
|
-
return (
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
} }, assembleLocString(feature))));
|
|
8
|
+
return (_jsxs(_Fragment, { children: [_jsx(FeatureMenu, { session: getSession(model), spreadsheetViewId: getParent(model).id, assemblyName: model.assemblyName, feature: feature }), _jsx(Link, { href: "#", onClick: async (event) => {
|
|
9
|
+
try {
|
|
10
|
+
event.preventDefault();
|
|
11
|
+
await locationLinkClick({
|
|
12
|
+
spreadsheetViewId: getParent(model).id,
|
|
13
|
+
session: getSession(model),
|
|
14
|
+
locString: assembleLocString(feature),
|
|
15
|
+
assemblyName: model.assemblyName,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
catch (e) {
|
|
19
|
+
console.error(e);
|
|
20
|
+
getSession(model).notifyError(`${e}`, e);
|
|
21
|
+
}
|
|
22
|
+
}, children: assembleLocString(feature) })] }));
|
|
25
23
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import type { ImportWizardModel } from '../ImportWizard';
|
|
3
2
|
declare const NumberEditor: ({ model, disabled, modelPropName, modelSetterName, }: {
|
|
4
3
|
model: ImportWizardModel;
|
|
5
4
|
disabled: boolean;
|
|
6
5
|
modelPropName: string;
|
|
7
6
|
modelSetterName: string;
|
|
8
|
-
}) =>
|
|
7
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
9
8
|
export default NumberEditor;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
2
3
|
import { TextField } from '@mui/material';
|
|
3
4
|
import { observer } from 'mobx-react';
|
|
4
5
|
import { makeStyles } from 'tss-react/mui';
|
|
@@ -22,7 +23,7 @@ const NumberEditor = observer(function ({ model, disabled, modelPropName, modelS
|
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
25
|
}, [model, modelSetterName, val]);
|
|
25
|
-
return (
|
|
26
|
+
return (_jsx(TextField, { value: val, disabled: disabled, type: "number", onChange: evt => {
|
|
26
27
|
setVal(evt.target.value);
|
|
27
28
|
}, className: classes.textField }));
|
|
28
29
|
});
|