@jbrowse/plugin-grid-bookmark 3.7.0 → 4.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.
Files changed (67) hide show
  1. package/esm/GridBookmarkWidget/components/AssemblySelector.d.ts +1 -1
  2. package/esm/GridBookmarkWidget/components/AssemblySelector.js +1 -1
  3. package/esm/GridBookmarkWidget/components/BookmarkGrid.d.ts +1 -1
  4. package/esm/GridBookmarkWidget/components/BookmarkGrid.js +3 -3
  5. package/esm/GridBookmarkWidget/components/GridBookmarkWidget.d.ts +1 -1
  6. package/esm/GridBookmarkWidget/components/GridBookmarkWidget.js +9 -9
  7. package/esm/GridBookmarkWidget/components/Highlight/Highlight.d.ts +1 -1
  8. package/esm/GridBookmarkWidget/components/Highlight/Highlight.js +3 -4
  9. package/esm/GridBookmarkWidget/components/Highlight/OverviewHighlight.d.ts +1 -1
  10. package/esm/GridBookmarkWidget/components/Highlight/OverviewHighlight.js +5 -5
  11. package/esm/GridBookmarkWidget/components/Highlight/index.js +2 -2
  12. package/esm/GridBookmarkWidget/components/dialogs/DeleteBookmarksDialog.d.ts +1 -1
  13. package/esm/GridBookmarkWidget/components/dialogs/DeleteBookmarksDialog.js +1 -1
  14. package/esm/GridBookmarkWidget/components/dialogs/EditHighlightColorDialog.d.ts +1 -1
  15. package/esm/GridBookmarkWidget/components/dialogs/EditHighlightColorDialog.js +2 -3
  16. package/esm/GridBookmarkWidget/components/dialogs/ExportBookmarksDialog.d.ts +1 -1
  17. package/esm/GridBookmarkWidget/components/dialogs/ExportBookmarksDialog.js +5 -5
  18. package/esm/GridBookmarkWidget/components/dialogs/HighlightSettingsDialog.d.ts +1 -1
  19. package/esm/GridBookmarkWidget/components/dialogs/HighlightSettingsDialog.js +1 -1
  20. package/esm/GridBookmarkWidget/components/dialogs/ImportBookmarksDialog.d.ts +1 -1
  21. package/esm/GridBookmarkWidget/components/dialogs/ImportBookmarksDialog.js +5 -5
  22. package/esm/GridBookmarkWidget/components/dialogs/ShareBookmarksDialog.d.ts +1 -1
  23. package/esm/GridBookmarkWidget/components/dialogs/ShareBookmarksDialog.js +5 -5
  24. package/esm/GridBookmarkWidget/index.js +3 -3
  25. package/esm/GridBookmarkWidget/model.d.ts +94 -94
  26. package/esm/GridBookmarkWidget/model.js +10 -15
  27. package/esm/GridBookmarkWidget/sessionSharing.js +1 -1
  28. package/esm/GridBookmarkWidget/utils.d.ts +2 -2
  29. package/esm/GridBookmarkWidget/utils.js +11 -15
  30. package/esm/index.js +17 -6
  31. package/package.json +32 -36
  32. package/dist/GridBookmarkWidget/components/AssemblySelector.d.ts +0 -5
  33. package/dist/GridBookmarkWidget/components/AssemblySelector.js +0 -22
  34. package/dist/GridBookmarkWidget/components/BookmarkGrid.d.ts +0 -5
  35. package/dist/GridBookmarkWidget/components/BookmarkGrid.js +0 -97
  36. package/dist/GridBookmarkWidget/components/GridBookmarkWidget.d.ts +0 -5
  37. package/dist/GridBookmarkWidget/components/GridBookmarkWidget.js +0 -131
  38. package/dist/GridBookmarkWidget/components/Highlight/Highlight.d.ts +0 -6
  39. package/dist/GridBookmarkWidget/components/Highlight/Highlight.js +0 -89
  40. package/dist/GridBookmarkWidget/components/Highlight/OverviewHighlight.d.ts +0 -8
  41. package/dist/GridBookmarkWidget/components/Highlight/OverviewHighlight.js +0 -60
  42. package/dist/GridBookmarkWidget/components/Highlight/index.d.ts +0 -2
  43. package/dist/GridBookmarkWidget/components/Highlight/index.js +0 -23
  44. package/dist/GridBookmarkWidget/components/dialogs/DeleteBookmarksDialog.d.ts +0 -6
  45. package/dist/GridBookmarkWidget/components/dialogs/DeleteBookmarksDialog.js +0 -20
  46. package/dist/GridBookmarkWidget/components/dialogs/EditHighlightColorDialog.d.ts +0 -6
  47. package/dist/GridBookmarkWidget/components/dialogs/EditHighlightColorDialog.js +0 -23
  48. package/dist/GridBookmarkWidget/components/dialogs/ExportBookmarksDialog.d.ts +0 -6
  49. package/dist/GridBookmarkWidget/components/dialogs/ExportBookmarksDialog.js +0 -40
  50. package/dist/GridBookmarkWidget/components/dialogs/HighlightSettingsDialog.d.ts +0 -6
  51. package/dist/GridBookmarkWidget/components/dialogs/HighlightSettingsDialog.js +0 -16
  52. package/dist/GridBookmarkWidget/components/dialogs/ImportBookmarksDialog.d.ts +0 -6
  53. package/dist/GridBookmarkWidget/components/dialogs/ImportBookmarksDialog.js +0 -115
  54. package/dist/GridBookmarkWidget/components/dialogs/ShareBookmarksDialog.d.ts +0 -6
  55. package/dist/GridBookmarkWidget/components/dialogs/ShareBookmarksDialog.js +0 -77
  56. package/dist/GridBookmarkWidget/index.d.ts +0 -2
  57. package/dist/GridBookmarkWidget/index.js +0 -57
  58. package/dist/GridBookmarkWidget/model.d.ts +0 -228
  59. package/dist/GridBookmarkWidget/model.js +0 -169
  60. package/dist/GridBookmarkWidget/sessionSharing.d.ts +0 -6
  61. package/dist/GridBookmarkWidget/sessionSharing.js +0 -99
  62. package/dist/GridBookmarkWidget/types.d.ts +0 -4
  63. package/dist/GridBookmarkWidget/types.js +0 -2
  64. package/dist/GridBookmarkWidget/utils.d.ts +0 -7
  65. package/dist/GridBookmarkWidget/utils.js +0 -144
  66. package/dist/index.d.ts +0 -7
  67. 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,5 +0,0 @@
1
- import type { GridBookmarkModel } from '../model';
2
- declare const GridBookmarkWidget: ({ model, }: {
3
- model: GridBookmarkModel;
4
- }) => import("react/jsx-runtime").JSX.Element;
5
- export default GridBookmarkWidget;
@@ -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,6 +0,0 @@
1
- import type { IExtendedLGV } from '../../model';
2
- type LGV = IExtendedLGV;
3
- declare const Highlight: ({ model }: {
4
- model: LGV;
5
- }) => import("react/jsx-runtime").JSX.Element[] | null;
6
- export default Highlight;
@@ -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,2 +0,0 @@
1
- import type PluginManager from '@jbrowse/core/PluginManager';
2
- export default function AddHighlightModelF(pluginManager: PluginManager): void;
@@ -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,6 +0,0 @@
1
- import type { GridBookmarkModel } from '../../model';
2
- declare const DeleteBookmarksDialog: ({ onClose, model, }: {
3
- onClose: () => void;
4
- model: GridBookmarkModel;
5
- }) => import("react/jsx-runtime").JSX.Element;
6
- export default DeleteBookmarksDialog;
@@ -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,6 +0,0 @@
1
- import type { GridBookmarkModel } from '../../model';
2
- declare const EditHighlightColorDialog: ({ onClose, model, }: {
3
- onClose: () => void;
4
- model: GridBookmarkModel;
5
- }) => import("react/jsx-runtime").JSX.Element;
6
- export default EditHighlightColorDialog;
@@ -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,6 +0,0 @@
1
- import type { GridBookmarkModel } from '../../model';
2
- declare const ExportBookmarksDialog: ({ model, onClose, }: {
3
- model: GridBookmarkModel;
4
- onClose: () => void;
5
- }) => import("react/jsx-runtime").JSX.Element;
6
- export default ExportBookmarksDialog;
@@ -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,6 +0,0 @@
1
- import type { GridBookmarkModel } from '../../model';
2
- declare const HighlightSettingsDialog: ({ onClose, model, }: {
3
- onClose: () => void;
4
- model: GridBookmarkModel;
5
- }) => import("react/jsx-runtime").JSX.Element;
6
- export default HighlightSettingsDialog;
@@ -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;
@@ -1,6 +0,0 @@
1
- import type { GridBookmarkModel } from '../../model';
2
- declare const ImportBookmarksDialog: ({ onClose, model, }: {
3
- onClose: () => void;
4
- model: GridBookmarkModel;
5
- }) => import("react/jsx-runtime").JSX.Element;
6
- export default ImportBookmarksDialog;