@jbrowse/plugin-grid-bookmark 3.7.0 → 4.0.1
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/esm/GridBookmarkWidget/components/AssemblySelector.d.ts +1 -1
- package/esm/GridBookmarkWidget/components/AssemblySelector.js +1 -1
- package/esm/GridBookmarkWidget/components/BookmarkGrid.d.ts +1 -1
- package/esm/GridBookmarkWidget/components/BookmarkGrid.js +3 -3
- package/esm/GridBookmarkWidget/components/GridBookmarkWidget.d.ts +1 -1
- package/esm/GridBookmarkWidget/components/GridBookmarkWidget.js +9 -9
- package/esm/GridBookmarkWidget/components/Highlight/Highlight.d.ts +1 -1
- package/esm/GridBookmarkWidget/components/Highlight/Highlight.js +3 -4
- package/esm/GridBookmarkWidget/components/Highlight/OverviewHighlight.d.ts +1 -1
- package/esm/GridBookmarkWidget/components/Highlight/OverviewHighlight.js +5 -5
- package/esm/GridBookmarkWidget/components/Highlight/index.js +2 -2
- package/esm/GridBookmarkWidget/components/dialogs/DeleteBookmarksDialog.d.ts +1 -1
- package/esm/GridBookmarkWidget/components/dialogs/DeleteBookmarksDialog.js +1 -1
- package/esm/GridBookmarkWidget/components/dialogs/EditHighlightColorDialog.d.ts +1 -1
- package/esm/GridBookmarkWidget/components/dialogs/EditHighlightColorDialog.js +2 -3
- package/esm/GridBookmarkWidget/components/dialogs/ExportBookmarksDialog.d.ts +1 -1
- package/esm/GridBookmarkWidget/components/dialogs/ExportBookmarksDialog.js +5 -5
- package/esm/GridBookmarkWidget/components/dialogs/HighlightSettingsDialog.d.ts +1 -1
- package/esm/GridBookmarkWidget/components/dialogs/HighlightSettingsDialog.js +1 -1
- package/esm/GridBookmarkWidget/components/dialogs/ImportBookmarksDialog.d.ts +1 -1
- package/esm/GridBookmarkWidget/components/dialogs/ImportBookmarksDialog.js +5 -5
- package/esm/GridBookmarkWidget/components/dialogs/ShareBookmarksDialog.d.ts +1 -1
- package/esm/GridBookmarkWidget/components/dialogs/ShareBookmarksDialog.js +5 -5
- package/esm/GridBookmarkWidget/index.js +3 -3
- package/esm/GridBookmarkWidget/model.d.ts +94 -94
- package/esm/GridBookmarkWidget/model.js +10 -15
- package/esm/GridBookmarkWidget/sessionSharing.js +1 -1
- package/esm/GridBookmarkWidget/utils.d.ts +2 -2
- package/esm/GridBookmarkWidget/utils.js +11 -15
- package/esm/index.js +17 -6
- package/package.json +32 -36
- package/dist/GridBookmarkWidget/components/AssemblySelector.d.ts +0 -5
- package/dist/GridBookmarkWidget/components/AssemblySelector.js +0 -22
- package/dist/GridBookmarkWidget/components/BookmarkGrid.d.ts +0 -5
- package/dist/GridBookmarkWidget/components/BookmarkGrid.js +0 -97
- package/dist/GridBookmarkWidget/components/GridBookmarkWidget.d.ts +0 -5
- package/dist/GridBookmarkWidget/components/GridBookmarkWidget.js +0 -131
- package/dist/GridBookmarkWidget/components/Highlight/Highlight.d.ts +0 -6
- package/dist/GridBookmarkWidget/components/Highlight/Highlight.js +0 -89
- package/dist/GridBookmarkWidget/components/Highlight/OverviewHighlight.d.ts +0 -8
- package/dist/GridBookmarkWidget/components/Highlight/OverviewHighlight.js +0 -60
- package/dist/GridBookmarkWidget/components/Highlight/index.d.ts +0 -2
- package/dist/GridBookmarkWidget/components/Highlight/index.js +0 -23
- package/dist/GridBookmarkWidget/components/dialogs/DeleteBookmarksDialog.d.ts +0 -6
- package/dist/GridBookmarkWidget/components/dialogs/DeleteBookmarksDialog.js +0 -20
- package/dist/GridBookmarkWidget/components/dialogs/EditHighlightColorDialog.d.ts +0 -6
- package/dist/GridBookmarkWidget/components/dialogs/EditHighlightColorDialog.js +0 -23
- package/dist/GridBookmarkWidget/components/dialogs/ExportBookmarksDialog.d.ts +0 -6
- package/dist/GridBookmarkWidget/components/dialogs/ExportBookmarksDialog.js +0 -40
- package/dist/GridBookmarkWidget/components/dialogs/HighlightSettingsDialog.d.ts +0 -6
- package/dist/GridBookmarkWidget/components/dialogs/HighlightSettingsDialog.js +0 -16
- package/dist/GridBookmarkWidget/components/dialogs/ImportBookmarksDialog.d.ts +0 -6
- package/dist/GridBookmarkWidget/components/dialogs/ImportBookmarksDialog.js +0 -115
- package/dist/GridBookmarkWidget/components/dialogs/ShareBookmarksDialog.d.ts +0 -6
- package/dist/GridBookmarkWidget/components/dialogs/ShareBookmarksDialog.js +0 -77
- package/dist/GridBookmarkWidget/index.d.ts +0 -2
- package/dist/GridBookmarkWidget/index.js +0 -57
- package/dist/GridBookmarkWidget/model.d.ts +0 -228
- package/dist/GridBookmarkWidget/model.js +0 -169
- package/dist/GridBookmarkWidget/sessionSharing.d.ts +0 -6
- package/dist/GridBookmarkWidget/sessionSharing.js +0 -99
- package/dist/GridBookmarkWidget/types.d.ts +0 -4
- package/dist/GridBookmarkWidget/types.js +0 -2
- package/dist/GridBookmarkWidget/utils.d.ts +0 -7
- package/dist/GridBookmarkWidget/utils.js +0 -144
- package/dist/index.d.ts +0 -7
- package/dist/index.js +0 -185
|
@@ -1,97 +0,0 @@
|
|
|
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 ColorPicker_1 = __importDefault(require("@jbrowse/core/ui/ColorPicker"));
|
|
8
|
-
const DataGridFlexContainer_1 = __importDefault(require("@jbrowse/core/ui/DataGridFlexContainer"));
|
|
9
|
-
const util_1 = require("@jbrowse/core/util");
|
|
10
|
-
const material_1 = require("@mui/material");
|
|
11
|
-
const x_data_grid_1 = require("@mui/x-data-grid");
|
|
12
|
-
const mobx_react_1 = require("mobx-react");
|
|
13
|
-
const mui_1 = require("tss-react/mui");
|
|
14
|
-
const utils_1 = require("../utils");
|
|
15
|
-
const useStyles = (0, mui_1.makeStyles)()(() => ({
|
|
16
|
-
cell: {
|
|
17
|
-
whiteSpace: 'nowrap',
|
|
18
|
-
overflow: 'hidden',
|
|
19
|
-
textOverflow: 'ellipsis',
|
|
20
|
-
},
|
|
21
|
-
}));
|
|
22
|
-
const BookmarkGrid = (0, mobx_react_1.observer)(function ({ model, }) {
|
|
23
|
-
const { classes } = useStyles();
|
|
24
|
-
const { bookmarks, bookmarksWithValidAssemblies, selectedAssemblies, selectedBookmarks, } = model;
|
|
25
|
-
const session = (0, util_1.getSession)(model);
|
|
26
|
-
const selectedSet = new Set(selectedAssemblies);
|
|
27
|
-
const rows = bookmarks
|
|
28
|
-
.filter(r => selectedSet.has(r.assemblyName))
|
|
29
|
-
.map((region, index) => {
|
|
30
|
-
const { assemblyName, ...rest } = region;
|
|
31
|
-
return {
|
|
32
|
-
...region,
|
|
33
|
-
id: index,
|
|
34
|
-
assemblyName,
|
|
35
|
-
locString: (0, util_1.assembleLocString)(rest),
|
|
36
|
-
correspondingObj: region,
|
|
37
|
-
};
|
|
38
|
-
});
|
|
39
|
-
const widths = [
|
|
40
|
-
50,
|
|
41
|
-
Math.max((0, util_1.measureText)('Bookmark link', 12) + 30, (0, util_1.measureGridWidth)(rows.map(row => row.locString))),
|
|
42
|
-
Math.max((0, util_1.measureText)('Label', 12) + 30, (0, util_1.measureGridWidth)(rows.map(row => row.label))),
|
|
43
|
-
Math.max((0, util_1.measureText)('Assembly', 12) + 30, (0, util_1.measureGridWidth)(rows.map(row => row.assemblyName))),
|
|
44
|
-
100,
|
|
45
|
-
];
|
|
46
|
-
return ((0, jsx_runtime_1.jsx)(DataGridFlexContainer_1.default, { children: (0, jsx_runtime_1.jsx)(x_data_grid_1.DataGrid, { density: "compact", disableRowSelectionOnClick: true, rows: rows, columns: [
|
|
47
|
-
{
|
|
48
|
-
...x_data_grid_1.GRID_CHECKBOX_SELECTION_COL_DEF,
|
|
49
|
-
width: widths[0],
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
field: 'locString',
|
|
53
|
-
headerName: 'Bookmark link',
|
|
54
|
-
width: widths[1],
|
|
55
|
-
renderCell: ({ value, row }) => ((0, jsx_runtime_1.jsx)(material_1.Link, { className: classes.cell, href: "#", onClick: async (event) => {
|
|
56
|
-
event.preventDefault();
|
|
57
|
-
const { views } = session;
|
|
58
|
-
await (0, utils_1.navToBookmark)(value, row.assemblyName, views, model);
|
|
59
|
-
}, children: value })),
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
field: 'label',
|
|
63
|
-
headerName: 'Label',
|
|
64
|
-
width: widths[2],
|
|
65
|
-
editable: true,
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
field: 'assemblyName',
|
|
69
|
-
headerName: 'Assembly',
|
|
70
|
-
width: widths[3],
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
field: 'highlight',
|
|
74
|
-
headerName: 'Highlight',
|
|
75
|
-
width: widths[4],
|
|
76
|
-
renderCell: ({ value, row }) => ((0, jsx_runtime_1.jsx)(ColorPicker_1.default, { color: value || 'black', onChange: event => {
|
|
77
|
-
model.updateBookmarkHighlight(row, event);
|
|
78
|
-
} })),
|
|
79
|
-
},
|
|
80
|
-
], processRowUpdate: row => {
|
|
81
|
-
const target = rows[row.id];
|
|
82
|
-
model.updateBookmarkLabel(target, row.label);
|
|
83
|
-
return row;
|
|
84
|
-
}, onProcessRowUpdateError: e => {
|
|
85
|
-
session.notifyError(`${e}`, e);
|
|
86
|
-
}, checkboxSelection: true, onRowSelectionModelChange: newRowSelectionModel => {
|
|
87
|
-
if (bookmarksWithValidAssemblies.length > 0) {
|
|
88
|
-
model.setSelectedBookmarks([...newRowSelectionModel.ids].map(value => ({
|
|
89
|
-
...rows[value],
|
|
90
|
-
})));
|
|
91
|
-
}
|
|
92
|
-
}, rowSelectionModel: {
|
|
93
|
-
type: 'include',
|
|
94
|
-
ids: new Set(selectedBookmarks.map(r => r.id)),
|
|
95
|
-
} }) }));
|
|
96
|
-
});
|
|
97
|
-
exports.default = BookmarkGrid;
|
|
@@ -1,131 +0,0 @@
|
|
|
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 () {
|
|
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
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
40
|
-
const react_1 = require("react");
|
|
41
|
-
const CascadingMenuButton_1 = __importDefault(require("@jbrowse/core/ui/CascadingMenuButton"));
|
|
42
|
-
const util_1 = require("@jbrowse/core/util");
|
|
43
|
-
const Delete_1 = __importDefault(require("@mui/icons-material/Delete"));
|
|
44
|
-
const GetApp_1 = __importDefault(require("@mui/icons-material/GetApp"));
|
|
45
|
-
const Menu_1 = __importDefault(require("@mui/icons-material/Menu"));
|
|
46
|
-
const Palette_1 = __importDefault(require("@mui/icons-material/Palette"));
|
|
47
|
-
const Publish_1 = __importDefault(require("@mui/icons-material/Publish"));
|
|
48
|
-
const Settings_1 = __importDefault(require("@mui/icons-material/Settings"));
|
|
49
|
-
const Share_1 = __importDefault(require("@mui/icons-material/Share"));
|
|
50
|
-
const material_1 = require("@mui/material");
|
|
51
|
-
const mobx_react_1 = require("mobx-react");
|
|
52
|
-
const mui_1 = require("tss-react/mui");
|
|
53
|
-
const AssemblySelector_1 = __importDefault(require("./AssemblySelector"));
|
|
54
|
-
const BookmarkGrid_1 = __importDefault(require("./BookmarkGrid"));
|
|
55
|
-
const ExportBookmarksDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./dialogs/ExportBookmarksDialog'))));
|
|
56
|
-
const ImportBookmarksDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./dialogs/ImportBookmarksDialog'))));
|
|
57
|
-
const ShareBookmarksDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./dialogs/ShareBookmarksDialog'))));
|
|
58
|
-
const HighlightSettingsDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./dialogs/HighlightSettingsDialog'))));
|
|
59
|
-
const EditHighlightColorDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./dialogs/EditHighlightColorDialog'))));
|
|
60
|
-
const DeleteBookmarksDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./dialogs/DeleteBookmarksDialog'))));
|
|
61
|
-
const useStyles = (0, mui_1.makeStyles)()({
|
|
62
|
-
flex: {
|
|
63
|
-
display: 'flex',
|
|
64
|
-
},
|
|
65
|
-
});
|
|
66
|
-
const GridBookmarkWidget = (0, mobx_react_1.observer)(function GridBookmarkWidget({ model, }) {
|
|
67
|
-
const { classes } = useStyles();
|
|
68
|
-
return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)(material_1.Alert, { severity: "info", children: ["Click and type within the ", (0, jsx_runtime_1.jsx)("strong", { children: "label" }), " field to annotate your bookmark"] }), (0, jsx_runtime_1.jsxs)("div", { className: classes.flex, children: [(0, jsx_runtime_1.jsx)(CascadingMenuButton_1.default, { "data-testid": "grid_bookmark_menu", menuItems: [
|
|
69
|
-
{
|
|
70
|
-
label: 'Export',
|
|
71
|
-
icon: GetApp_1.default,
|
|
72
|
-
onClick: () => {
|
|
73
|
-
(0, util_1.getSession)(model).queueDialog(onClose => [
|
|
74
|
-
ExportBookmarksDialog,
|
|
75
|
-
{ onClose, model },
|
|
76
|
-
]);
|
|
77
|
-
},
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
label: 'Import',
|
|
81
|
-
icon: Publish_1.default,
|
|
82
|
-
onClick: () => {
|
|
83
|
-
(0, util_1.getSession)(model).queueDialog(onClose => [
|
|
84
|
-
ImportBookmarksDialog,
|
|
85
|
-
{ model, onClose },
|
|
86
|
-
]);
|
|
87
|
-
},
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
label: 'Delete',
|
|
91
|
-
icon: Delete_1.default,
|
|
92
|
-
onClick: () => {
|
|
93
|
-
(0, util_1.getSession)(model).queueDialog(onClose => [
|
|
94
|
-
DeleteBookmarksDialog,
|
|
95
|
-
{ model, onClose },
|
|
96
|
-
]);
|
|
97
|
-
},
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
label: 'Share',
|
|
101
|
-
icon: Share_1.default,
|
|
102
|
-
onClick: () => {
|
|
103
|
-
(0, util_1.getSession)(model).queueDialog(onClose => [
|
|
104
|
-
ShareBookmarksDialog,
|
|
105
|
-
{ model, onClose },
|
|
106
|
-
]);
|
|
107
|
-
},
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
label: 'Edit colors',
|
|
111
|
-
icon: Palette_1.default,
|
|
112
|
-
onClick: () => {
|
|
113
|
-
(0, util_1.getSession)(model).queueDialog(onClose => [
|
|
114
|
-
EditHighlightColorDialog,
|
|
115
|
-
{ model, onClose },
|
|
116
|
-
]);
|
|
117
|
-
},
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
label: 'Settings',
|
|
121
|
-
icon: Settings_1.default,
|
|
122
|
-
onClick: () => {
|
|
123
|
-
(0, util_1.getSession)(model).queueDialog(onClose => [
|
|
124
|
-
HighlightSettingsDialog,
|
|
125
|
-
{ model, onClose },
|
|
126
|
-
]);
|
|
127
|
-
},
|
|
128
|
-
},
|
|
129
|
-
], children: (0, jsx_runtime_1.jsx)(Menu_1.default, {}) }), (0, jsx_runtime_1.jsx)(AssemblySelector_1.default, { model: model })] }), (0, jsx_runtime_1.jsx)(BookmarkGrid_1.default, { model: model })] }));
|
|
130
|
-
});
|
|
131
|
-
exports.default = GridBookmarkWidget;
|
|
@@ -1,89 +0,0 @@
|
|
|
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 CascadingMenuButton_1 = __importDefault(require("@jbrowse/core/ui/CascadingMenuButton"));
|
|
9
|
-
const util_1 = require("@jbrowse/core/util");
|
|
10
|
-
const colord_1 = require("@jbrowse/core/util/colord");
|
|
11
|
-
const Bookmark_1 = __importDefault(require("@mui/icons-material/Bookmark"));
|
|
12
|
-
const material_1 = require("@mui/material");
|
|
13
|
-
const mobx_react_1 = require("mobx-react");
|
|
14
|
-
const mui_1 = require("tss-react/mui");
|
|
15
|
-
const useStyles = (0, mui_1.makeStyles)()({
|
|
16
|
-
bookmarkButton: {
|
|
17
|
-
overflow: 'hidden',
|
|
18
|
-
position: 'absolute',
|
|
19
|
-
zIndex: 800,
|
|
20
|
-
},
|
|
21
|
-
highlight: {
|
|
22
|
-
overflow: 'hidden',
|
|
23
|
-
height: '100%',
|
|
24
|
-
position: 'absolute',
|
|
25
|
-
},
|
|
26
|
-
});
|
|
27
|
-
const Highlight = (0, mobx_react_1.observer)(function Highlight({ model }) {
|
|
28
|
-
const { classes } = useStyles();
|
|
29
|
-
const session = (0, util_1.getSession)(model);
|
|
30
|
-
const { assemblyManager } = session;
|
|
31
|
-
const { bookmarkHighlightsVisible, bookmarkLabelsVisible } = model;
|
|
32
|
-
const bookmarkWidget = session.widgets.get('GridBookmark');
|
|
33
|
-
(0, react_1.useEffect)(() => {
|
|
34
|
-
if (!bookmarkWidget) {
|
|
35
|
-
session.addWidget('GridBookmarkWidget', 'GridBookmark');
|
|
36
|
-
}
|
|
37
|
-
}, [session, bookmarkWidget]);
|
|
38
|
-
const set = new Set(model.assemblyNames);
|
|
39
|
-
return bookmarkHighlightsVisible && (bookmarkWidget === null || bookmarkWidget === void 0 ? void 0 : bookmarkWidget.bookmarks)
|
|
40
|
-
? bookmarkWidget.bookmarks
|
|
41
|
-
.filter(value => set.has(value.assemblyName))
|
|
42
|
-
.map(r => {
|
|
43
|
-
var _a;
|
|
44
|
-
const asm = assemblyManager.get(r.assemblyName);
|
|
45
|
-
const refName = (_a = asm === null || asm === void 0 ? void 0 : asm.getCanonicalRefName(r.refName)) !== null && _a !== void 0 ? _a : r.refName;
|
|
46
|
-
const s = model.bpToPx({ refName, coord: r.start });
|
|
47
|
-
const e = model.bpToPx({ refName, coord: r.end });
|
|
48
|
-
return s && e
|
|
49
|
-
? {
|
|
50
|
-
width: Math.max(Math.abs(e.offsetPx - s.offsetPx), 3),
|
|
51
|
-
left: Math.min(s.offsetPx, e.offsetPx) - model.offsetPx,
|
|
52
|
-
highlight: r.highlight,
|
|
53
|
-
label: r.label,
|
|
54
|
-
bookmark: r,
|
|
55
|
-
}
|
|
56
|
-
: undefined;
|
|
57
|
-
})
|
|
58
|
-
.filter(util_1.notEmpty)
|
|
59
|
-
.map(({ left, width, highlight, label, bookmark }, idx) => ((0, jsx_runtime_1.jsxs)(react_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: classes.highlight, id: "highlight", style: {
|
|
60
|
-
left,
|
|
61
|
-
width,
|
|
62
|
-
background: highlight,
|
|
63
|
-
} }), bookmarkLabelsVisible && width > 20 ? ((0, jsx_runtime_1.jsx)("div", { className: classes.bookmarkButton, style: { left }, children: (0, jsx_runtime_1.jsx)(CascadingMenuButton_1.default, { menuItems: [
|
|
64
|
-
{
|
|
65
|
-
label: 'Open bookmark widget',
|
|
66
|
-
onClick: () => {
|
|
67
|
-
session.showWidget(bookmarkWidget);
|
|
68
|
-
},
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
label: 'Turn off highlights',
|
|
72
|
-
onClick: () => {
|
|
73
|
-
bookmarkWidget.setBookmarkHighlightsVisible(false);
|
|
74
|
-
},
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
label: 'Remove bookmark',
|
|
78
|
-
onClick: () => {
|
|
79
|
-
bookmarkWidget.removeBookmarkObject(bookmark);
|
|
80
|
-
},
|
|
81
|
-
},
|
|
82
|
-
], children: (0, jsx_runtime_1.jsx)(material_1.Tooltip, { title: label, arrow: true, children: (0, jsx_runtime_1.jsx)(Bookmark_1.default, { fontSize: "small", sx: {
|
|
83
|
-
color: (0, colord_1.colord)(highlight).alpha() !== 0
|
|
84
|
-
? (0, colord_1.colord)(highlight).alpha(0.8).toRgbString()
|
|
85
|
-
: (0, colord_1.colord)(highlight).alpha(0).toRgbString(),
|
|
86
|
-
} }) }) }) })) : null] }, `${left}_${width}_${idx}`)))
|
|
87
|
-
: null;
|
|
88
|
-
});
|
|
89
|
-
exports.default = Highlight;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { IExtendedLGV } from '../../model';
|
|
2
|
-
import type { Base1DViewModel } from '@jbrowse/core/util/Base1DViewModel';
|
|
3
|
-
type LGV = IExtendedLGV;
|
|
4
|
-
declare const OverviewHighlight: ({ model, overview, }: {
|
|
5
|
-
model: LGV;
|
|
6
|
-
overview: Base1DViewModel;
|
|
7
|
-
}) => import("react/jsx-runtime").JSX.Element[] | null;
|
|
8
|
-
export default OverviewHighlight;
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
-
const react_1 = require("react");
|
|
5
|
-
const util_1 = require("@jbrowse/core/util");
|
|
6
|
-
const material_1 = require("@mui/material");
|
|
7
|
-
const mobx_react_1 = require("mobx-react");
|
|
8
|
-
const mui_1 = require("tss-react/mui");
|
|
9
|
-
const useStyles = (0, mui_1.makeStyles)()({
|
|
10
|
-
highlight: {
|
|
11
|
-
height: '100%',
|
|
12
|
-
position: 'absolute',
|
|
13
|
-
},
|
|
14
|
-
});
|
|
15
|
-
const OverviewHighlight = (0, mobx_react_1.observer)(function OverviewHighlight({ model, overview, }) {
|
|
16
|
-
const { cytobandOffset } = model;
|
|
17
|
-
const session = (0, util_1.getSession)(model);
|
|
18
|
-
const { classes } = useStyles();
|
|
19
|
-
const { assemblyManager } = session;
|
|
20
|
-
const { bookmarkHighlightsVisible, bookmarkLabelsVisible } = model;
|
|
21
|
-
const bookmarkWidget = session.widgets.get('GridBookmark');
|
|
22
|
-
(0, react_1.useEffect)(() => {
|
|
23
|
-
if (!bookmarkWidget) {
|
|
24
|
-
session.addWidget('GridBookmarkWidget', 'GridBookmark');
|
|
25
|
-
}
|
|
26
|
-
}, [session, bookmarkWidget]);
|
|
27
|
-
const assemblyNames = new Set(model.assemblyNames);
|
|
28
|
-
return bookmarkHighlightsVisible && (bookmarkWidget === null || bookmarkWidget === void 0 ? void 0 : bookmarkWidget.bookmarks)
|
|
29
|
-
? bookmarkWidget.bookmarks
|
|
30
|
-
.filter(r => assemblyNames.has(r.assemblyName))
|
|
31
|
-
.map(r => {
|
|
32
|
-
var _a;
|
|
33
|
-
const asm = assemblyManager.get(r.assemblyName);
|
|
34
|
-
const refName = (_a = asm === null || asm === void 0 ? void 0 : asm.getCanonicalRefName(r.refName)) !== null && _a !== void 0 ? _a : r.refName;
|
|
35
|
-
const rev = r.reversed;
|
|
36
|
-
const s = overview.bpToPx({ refName, coord: rev ? r.end : r.start });
|
|
37
|
-
const e = overview.bpToPx({ refName, coord: rev ? r.start : r.end });
|
|
38
|
-
return s !== undefined && e !== undefined
|
|
39
|
-
? {
|
|
40
|
-
width: Math.abs(e - s),
|
|
41
|
-
left: s + cytobandOffset,
|
|
42
|
-
highlight: r.highlight,
|
|
43
|
-
label: r.label,
|
|
44
|
-
}
|
|
45
|
-
: undefined;
|
|
46
|
-
})
|
|
47
|
-
.filter(util_1.notEmpty)
|
|
48
|
-
.map((obj, idx) => {
|
|
49
|
-
const { left, width, highlight, label } = obj;
|
|
50
|
-
return ((0, jsx_runtime_1.jsx)(material_1.Tooltip, { title: bookmarkLabelsVisible ? label : '', arrow: true, children: (0, jsx_runtime_1.jsx)("div", { className: classes.highlight, style: {
|
|
51
|
-
left,
|
|
52
|
-
width,
|
|
53
|
-
background: highlight,
|
|
54
|
-
borderLeft: `1px solid ${highlight}`,
|
|
55
|
-
borderRight: `1px solid ${highlight}`,
|
|
56
|
-
} }) }, `${JSON.stringify(obj)}-${idx}`));
|
|
57
|
-
})
|
|
58
|
-
: null;
|
|
59
|
-
});
|
|
60
|
-
exports.default = OverviewHighlight;
|
|
@@ -1,23 +0,0 @@
|
|
|
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
|
-
exports.default = AddHighlightModelF;
|
|
7
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
-
const Highlight_1 = __importDefault(require("./Highlight"));
|
|
9
|
-
const OverviewHighlight_1 = __importDefault(require("./OverviewHighlight"));
|
|
10
|
-
function AddHighlightModelF(pluginManager) {
|
|
11
|
-
pluginManager.addToExtensionPoint('LinearGenomeView-TracksContainerComponent', (rest, { model }) => {
|
|
12
|
-
return [
|
|
13
|
-
...(rest || []),
|
|
14
|
-
(0, jsx_runtime_1.jsx)(Highlight_1.default, { model: model }, "highlight_grid_bookmark"),
|
|
15
|
-
];
|
|
16
|
-
});
|
|
17
|
-
pluginManager.addToExtensionPoint('LinearGenomeView-OverviewScalebarComponent', (rest, { model, overview }) => {
|
|
18
|
-
return [
|
|
19
|
-
...(rest || []),
|
|
20
|
-
(0, jsx_runtime_1.jsx)(OverviewHighlight_1.default, { model: model, overview: overview }, "overview_highlight_grid_bookmark"),
|
|
21
|
-
];
|
|
22
|
-
});
|
|
23
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
-
const ui_1 = require("@jbrowse/core/ui");
|
|
5
|
-
const material_1 = require("@mui/material");
|
|
6
|
-
const mobx_react_1 = require("mobx-react");
|
|
7
|
-
const DeleteBookmarksDialog = (0, mobx_react_1.observer)(function ({ onClose, model, }) {
|
|
8
|
-
const { selectedBookmarks } = model;
|
|
9
|
-
const deleteAll = selectedBookmarks.length === 0;
|
|
10
|
-
return ((0, jsx_runtime_1.jsxs)(ui_1.Dialog, { open: true, onClose: onClose, title: "Delete bookmarks", children: [(0, jsx_runtime_1.jsx)(material_1.DialogContent, { children: (0, jsx_runtime_1.jsx)(material_1.Alert, { severity: "warning", children: deleteAll ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("span", { children: "All bookmarks will be deleted." }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("span", { children: "Use the checkboxes to select individual bookmarks to delete." })] })) : ('Only selected bookmarks will be deleted.') }) }), (0, jsx_runtime_1.jsxs)(material_1.DialogActions, { children: [(0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", color: "secondary", onClick: () => {
|
|
11
|
-
onClose();
|
|
12
|
-
}, children: "Cancel" }), (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", color: "primary", onClick: () => {
|
|
13
|
-
if (deleteAll) {
|
|
14
|
-
model.clearAllBookmarks();
|
|
15
|
-
}
|
|
16
|
-
model.clearSelectedBookmarks();
|
|
17
|
-
onClose();
|
|
18
|
-
}, children: "Confirm" })] })] }));
|
|
19
|
-
});
|
|
20
|
-
exports.default = DeleteBookmarksDialog;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
-
const react_1 = require("react");
|
|
5
|
-
const ui_1 = require("@jbrowse/core/ui");
|
|
6
|
-
const ColorPicker_1 = require("@jbrowse/core/ui/ColorPicker");
|
|
7
|
-
const material_1 = require("@mui/material");
|
|
8
|
-
const mobx_react_1 = require("mobx-react");
|
|
9
|
-
const EditHighlightColorDialog = (0, mobx_react_1.observer)(function ({ onClose, model, }) {
|
|
10
|
-
var _a, _b;
|
|
11
|
-
const { selectedBookmarks } = model;
|
|
12
|
-
const editNone = selectedBookmarks.length === 0;
|
|
13
|
-
const [color, setColor] = (0, react_1.useState)((_b = (_a = selectedBookmarks[0]) === null || _a === void 0 ? void 0 : _a.highlight) !== null && _b !== void 0 ? _b : 'rgba(247, 129, 192, 0.35)');
|
|
14
|
-
return ((0, jsx_runtime_1.jsxs)(ui_1.Dialog, { open: true, onClose: onClose, title: "Highlight bookmarks", children: [(0, jsx_runtime_1.jsxs)(material_1.DialogContent, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h6", children: "Bulk highlight selector" }), (0, jsx_runtime_1.jsx)(material_1.Alert, { severity: "info", children: editNone ? ((0, jsx_runtime_1.jsx)("span", { children: "Use the checkboxes to select individual bookmarks to edit." })) : ('Only selected bookmarks will be edited.') }), !editNone ? ((0, jsx_runtime_1.jsx)(ColorPicker_1.ColorPicker, { color: color, onChange: event => {
|
|
15
|
-
setColor(event);
|
|
16
|
-
} })) : null] }), (0, jsx_runtime_1.jsxs)(material_1.DialogActions, { children: [(0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", color: "secondary", onClick: () => {
|
|
17
|
-
onClose();
|
|
18
|
-
}, children: "Cancel" }), (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", color: "primary", onClick: () => {
|
|
19
|
-
model.updateBulkBookmarkHighlights(color);
|
|
20
|
-
onClose();
|
|
21
|
-
}, children: "Confirm" })] })] }));
|
|
22
|
-
});
|
|
23
|
-
exports.default = EditHighlightColorDialog;
|
|
@@ -1,40 +0,0 @@
|
|
|
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 GetApp_1 = __importDefault(require("@mui/icons-material/GetApp"));
|
|
10
|
-
const material_1 = require("@mui/material");
|
|
11
|
-
const mobx_react_1 = require("mobx-react");
|
|
12
|
-
const mui_1 = require("tss-react/mui");
|
|
13
|
-
const utils_1 = require("../../utils");
|
|
14
|
-
const useStyles = (0, mui_1.makeStyles)()({
|
|
15
|
-
flexItem: {
|
|
16
|
-
display: 'flex',
|
|
17
|
-
alignItems: 'center',
|
|
18
|
-
gap: '5px',
|
|
19
|
-
},
|
|
20
|
-
container: {
|
|
21
|
-
display: 'flex',
|
|
22
|
-
flexFlow: 'column',
|
|
23
|
-
gap: '5px',
|
|
24
|
-
},
|
|
25
|
-
});
|
|
26
|
-
const ExportBookmarksDialog = (0, mobx_react_1.observer)(function ({ model, onClose, }) {
|
|
27
|
-
const { classes } = useStyles();
|
|
28
|
-
const [fileType, setFileType] = (0, react_1.useState)('BED');
|
|
29
|
-
const { selectedBookmarks } = model;
|
|
30
|
-
const exportAll = selectedBookmarks.length === 0;
|
|
31
|
-
return ((0, jsx_runtime_1.jsxs)(ui_1.Dialog, { open: true, onClose: () => {
|
|
32
|
-
onClose();
|
|
33
|
-
}, title: "Export bookmarks", children: [(0, jsx_runtime_1.jsxs)(material_1.DialogContent, { className: classes.container, children: [(0, jsx_runtime_1.jsx)(material_1.Alert, { severity: "info", children: exportAll ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("span", { children: "All bookmarks will be exported." }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("span", { children: "Use the checkboxes to select individual bookmarks to export." })] })) : ('Only selected bookmarks will be exported.') }), (0, jsx_runtime_1.jsxs)("div", { className: classes.flexItem, children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Format to download:" }), (0, jsx_runtime_1.jsxs)(material_1.Select, { size: "small", value: fileType, onChange: event => {
|
|
34
|
-
setFileType(event.target.value);
|
|
35
|
-
}, children: [(0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: "BED", children: "BED" }), (0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: "TSV", children: "TSV" })] })] })] }), (0, jsx_runtime_1.jsx)(material_1.DialogActions, { children: (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", color: "primary", startIcon: (0, jsx_runtime_1.jsx)(GetApp_1.default, {}), onClick: () => {
|
|
36
|
-
(0, utils_1.downloadBookmarkFile)(fileType, model);
|
|
37
|
-
onClose();
|
|
38
|
-
}, children: "Download" }) })] }));
|
|
39
|
-
});
|
|
40
|
-
exports.default = ExportBookmarksDialog;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
-
const ui_1 = require("@jbrowse/core/ui");
|
|
5
|
-
const material_1 = require("@mui/material");
|
|
6
|
-
const mobx_react_1 = require("mobx-react");
|
|
7
|
-
const HighlightSettingsDialog = (0, mobx_react_1.observer)(function ({ onClose, model, }) {
|
|
8
|
-
return ((0, jsx_runtime_1.jsxs)(ui_1.Dialog, { open: true, onClose: onClose, title: "Highlight bookmarks", children: [(0, jsx_runtime_1.jsxs)(material_1.DialogContent, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h6", children: "Highlight toggles" }), (0, jsx_runtime_1.jsxs)(material_1.Stack, { direction: "row", alignItems: "center", children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { "data-testid": "toggle_highlight_all_switch", checked: model.areBookmarksHighlightedOnAllOpenViews, onChange: () => {
|
|
9
|
-
model.setBookmarkHighlightsVisible(!model.areBookmarksHighlightedOnAllOpenViews);
|
|
10
|
-
} }), (0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Toggle bookmark highlights on all open views" })] }), (0, jsx_runtime_1.jsxs)(material_1.Stack, { direction: "row", alignItems: "center", children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { "data-testid": "toggle_highlight_label_all_switch", checked: model.areBookmarksHighlightLabelsOnAllOpenViews, onChange: () => {
|
|
11
|
-
model.setBookmarkLabelsVisible(!model.areBookmarksHighlightLabelsOnAllOpenViews);
|
|
12
|
-
} }), (0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Toggle 'bookmark' icon on LGV tracks" })] })] }), (0, jsx_runtime_1.jsx)(material_1.DialogActions, { children: (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", color: "primary", onClick: () => {
|
|
13
|
-
onClose();
|
|
14
|
-
}, children: "Close" }) })] }));
|
|
15
|
-
});
|
|
16
|
-
exports.default = HighlightSettingsDialog;
|