@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,6 +0,0 @@
1
- export declare function shareSessionToDynamo(session: unknown, url: string, referer: string): Promise<{
2
- json: any;
3
- encryptedSession: string;
4
- password: string;
5
- }>;
6
- export declare function readSessionFromDynamo(baseUrl: string, sessionQueryParam: string, password: string): Promise<string>;
@@ -1,99 +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
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.shareSessionToDynamo = shareSessionToDynamo;
37
- exports.readSessionFromDynamo = readSessionFromDynamo;
38
- const utils_1 = require("./utils");
39
- function generateUID(length) {
40
- return window
41
- .btoa([...window.crypto.getRandomValues(new Uint8Array(length * 2))]
42
- .map(b => String.fromCharCode(b))
43
- .join(''))
44
- .replaceAll(/[+/]/g, '')
45
- .slice(0, length);
46
- }
47
- const encrypt = async (text, password) => {
48
- const AES = await Promise.resolve().then(() => __importStar(require('crypto-js/aes')));
49
- return AES.encrypt(text, password).toString();
50
- };
51
- const decrypt = async (text, password) => {
52
- const AES = await Promise.resolve().then(() => __importStar(require('crypto-js/aes')));
53
- const Utf8 = await Promise.resolve().then(() => __importStar(require('crypto-js/enc-utf8')));
54
- const bytes = AES.decrypt(text, password);
55
- return bytes.toString(Utf8);
56
- };
57
- function getErrorMsg(err) {
58
- try {
59
- const obj = JSON.parse(err);
60
- return obj.message;
61
- }
62
- catch (e) {
63
- return err;
64
- }
65
- }
66
- async function shareSessionToDynamo(session, url, referer) {
67
- const sess = await (0, utils_1.toUrlSafeB64)(JSON.stringify(session));
68
- const password = generateUID(5);
69
- const encryptedSession = await encrypt(sess, password);
70
- const data = new FormData();
71
- data.append('session', encryptedSession);
72
- data.append('dateShared', `${Date.now()}`);
73
- data.append('referer', referer);
74
- const response = await fetch(`${url}share`, {
75
- method: 'POST',
76
- mode: 'cors',
77
- body: data,
78
- });
79
- if (!response.ok) {
80
- const err = await response.text();
81
- throw new Error(getErrorMsg(err));
82
- }
83
- const json = await response.json();
84
- return {
85
- json,
86
- encryptedSession,
87
- password,
88
- };
89
- }
90
- async function readSessionFromDynamo(baseUrl, sessionQueryParam, password) {
91
- const sessionId = sessionQueryParam.split('share-')[1];
92
- const url = `${baseUrl}?sessionId=${encodeURIComponent(sessionId)}`;
93
- const response = await fetch(url);
94
- if (!response.ok) {
95
- throw new Error(getErrorMsg(await response.text()));
96
- }
97
- const json = await response.json();
98
- return decrypt(json.session, password);
99
- }
@@ -1,4 +0,0 @@
1
- import type { Region } from '@jbrowse/core/util/types';
2
- export interface LabeledRegion extends Region {
3
- label: string;
4
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,7 +0,0 @@
1
- import type { GridBookmarkModel } from './model';
2
- import type { AbstractViewModel } from '@jbrowse/core/util/types';
3
- export declare function navToBookmark(locString: string, assembly: string, views: AbstractViewModel[], model: GridBookmarkModel): Promise<void>;
4
- export declare function downloadBookmarkFile(fileFormat: string, model: GridBookmarkModel): void;
5
- export declare function b64PadSuffix(b64: string): string;
6
- export declare function fromUrlSafeB64(b64: string): Promise<string>;
7
- export declare function toUrlSafeB64(str: string): Promise<string>;
@@ -1,144 +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
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.navToBookmark = navToBookmark;
37
- exports.downloadBookmarkFile = downloadBookmarkFile;
38
- exports.b64PadSuffix = b64PadSuffix;
39
- exports.fromUrlSafeB64 = fromUrlSafeB64;
40
- exports.toUrlSafeB64 = toUrlSafeB64;
41
- const util_1 = require("@jbrowse/core/util");
42
- const file_saver_1 = require("file-saver");
43
- async function navToBookmark(locString, assembly, views, model) {
44
- const session = (0, util_1.getSession)(model);
45
- try {
46
- let view = views.find(view => view.id === session.focusedViewId);
47
- if ((view === null || view === void 0 ? void 0 : view.assemblyNames[0]) !== assembly) {
48
- view = views.find(elt => elt.type === 'LinearGenomeView' && elt.assemblyNames[0] === assembly);
49
- }
50
- if (!view) {
51
- const newViewId = `${model.id}_${assembly}`;
52
- view = session.addView('LinearGenomeView', {
53
- id: newViewId,
54
- });
55
- }
56
- await view.navToLocString(locString, assembly);
57
- }
58
- catch (e) {
59
- console.error(e);
60
- session.notifyError(`${e}`, e);
61
- }
62
- }
63
- function downloadBookmarkFile(fileFormat, model) {
64
- const { selectedBookmarks, bookmarksWithValidAssemblies } = model;
65
- const bookmarksToDownload = selectedBookmarks.length === 0
66
- ? bookmarksWithValidAssemblies
67
- : selectedBookmarks;
68
- if (fileFormat === 'BED') {
69
- const fileHeader = '';
70
- const fileContents = {};
71
- for (const bookmark of bookmarksToDownload) {
72
- const { label } = bookmark;
73
- const labelVal = label === '' ? '.' : label;
74
- const line = `${bookmark.refName}\t${bookmark.start}\t${bookmark.end}\t${labelVal}\n`;
75
- if (fileContents[bookmark.assemblyName]) {
76
- fileContents[bookmark.assemblyName].push(line);
77
- }
78
- else {
79
- fileContents[bookmark.assemblyName] = [line];
80
- }
81
- }
82
- for (const assembly in fileContents) {
83
- const fileContent = fileContents[assembly].reduce((a, b) => a + b, fileHeader);
84
- const blob = new Blob([fileContent || ''], {
85
- type: 'text/x-bed;charset=utf-8',
86
- });
87
- const fileName = `jbrowse_bookmarks_${assembly}.bed`;
88
- (0, file_saver_1.saveAs)(blob, fileName);
89
- }
90
- }
91
- else {
92
- const fileHeader = 'chrom\tstart\tend\tlabel\tassembly_name\tcoord_range\n';
93
- const fileContents = bookmarksToDownload
94
- .map(bookmark => {
95
- const { label } = bookmark;
96
- const labelVal = label === '' ? '.' : label;
97
- const locString = (0, util_1.assembleLocString)(bookmark);
98
- return `${bookmark.refName}\t${bookmark.start + 1}\t${bookmark.end}\t${labelVal}\t${bookmark.assemblyName}\t${locString}\n`;
99
- })
100
- .reduce((a, b) => a + b, fileHeader);
101
- const blob = new Blob([fileContents || ''], {
102
- type: 'text/tab-separated-values;charset=utf-8',
103
- });
104
- const fileName = 'jbrowse_bookmarks.tsv';
105
- (0, file_saver_1.saveAs)(blob, fileName);
106
- }
107
- }
108
- function b64PadSuffix(b64) {
109
- let num = 0;
110
- const mo = b64.length % 4;
111
- switch (mo) {
112
- case 3:
113
- num = 1;
114
- break;
115
- case 2:
116
- num = 2;
117
- break;
118
- case 0:
119
- num = 0;
120
- break;
121
- default:
122
- throw new Error('base64 not a valid length');
123
- }
124
- return b64 + '='.repeat(num);
125
- }
126
- async function fromUrlSafeB64(b64) {
127
- const originalB64 = b64PadSuffix(b64.replaceAll('-', '+').replaceAll('_', '/'));
128
- const { toByteArray } = await Promise.resolve().then(() => __importStar(require('base64-js')));
129
- const { inflate } = await Promise.resolve().then(() => __importStar(require('pako')));
130
- const bytes = toByteArray(originalB64);
131
- const inflated = inflate(bytes);
132
- return new TextDecoder().decode(inflated);
133
- }
134
- async function toUrlSafeB64(str) {
135
- const bytes = new TextEncoder().encode(str);
136
- const { deflate } = await Promise.resolve().then(() => __importStar(require('pako')));
137
- const { fromByteArray } = await Promise.resolve().then(() => __importStar(require('base64-js')));
138
- const deflated = deflate(bytes);
139
- const encoded = fromByteArray(deflated);
140
- const pos = encoded.indexOf('=');
141
- return pos > 0
142
- ? encoded.slice(0, pos).replaceAll('+', '-').replaceAll('/', '_')
143
- : encoded.replaceAll('+', '-').replaceAll('/', '_');
144
- }
package/dist/index.d.ts DELETED
@@ -1,7 +0,0 @@
1
- import Plugin from '@jbrowse/core/Plugin';
2
- import type PluginManager from '@jbrowse/core/PluginManager';
3
- export default class GridBookmarkPlugin extends Plugin {
4
- name: string;
5
- install(pluginManager: PluginManager): void;
6
- configure(pluginManager: PluginManager): void;
7
- }
package/dist/index.js DELETED
@@ -1,185 +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 Plugin_1 = __importDefault(require("@jbrowse/core/Plugin"));
7
- const util_1 = require("@jbrowse/core/util");
8
- const Bookmark_1 = __importDefault(require("@mui/icons-material/Bookmark"));
9
- const Bookmarks_1 = __importDefault(require("@mui/icons-material/Bookmarks"));
10
- const Highlight_1 = __importDefault(require("@mui/icons-material/Highlight"));
11
- const Label_1 = __importDefault(require("@mui/icons-material/Label"));
12
- const GridBookmarkWidget_1 = __importDefault(require("./GridBookmarkWidget"));
13
- class GridBookmarkPlugin extends Plugin_1.default {
14
- constructor() {
15
- super(...arguments);
16
- this.name = 'GridBookmarkPlugin';
17
- }
18
- install(pluginManager) {
19
- (0, GridBookmarkWidget_1.default)(pluginManager);
20
- pluginManager.addToExtensionPoint('Core-extendPluggableElement', (pluggableElement) => {
21
- if (pluggableElement.name === 'LinearGenomeView') {
22
- const { stateModel } = pluggableElement;
23
- const lgv = stateModel;
24
- const newStateModel = lgv
25
- .props({
26
- bookmarkHighlightsVisible: true,
27
- bookmarkLabelsVisible: true,
28
- })
29
- .actions(self => ({
30
- setBookmarkHighlightsVisible(arg) {
31
- self.bookmarkHighlightsVisible = arg;
32
- },
33
- setBookmarkLabelsVisible(arg) {
34
- self.bookmarkLabelsVisible = arg;
35
- },
36
- activateBookmarkWidget() {
37
- const session = (0, util_1.getSession)(self);
38
- if ((0, util_1.isSessionModelWithWidgets)(session)) {
39
- let bookmarkWidget = session.widgets.get('GridBookmark');
40
- if (!bookmarkWidget) {
41
- bookmarkWidget = session.addWidget('GridBookmarkWidget', 'GridBookmark');
42
- }
43
- session.showWidget(bookmarkWidget);
44
- return session.widgets.get('GridBookmark');
45
- }
46
- throw new Error('Could not open bookmark widget');
47
- },
48
- }))
49
- .actions(self => ({
50
- navigateNewestBookmark() {
51
- const session = (0, util_1.getSession)(self);
52
- const bookmarkWidget = self.activateBookmarkWidget();
53
- if (bookmarkWidget.bookmarks.length) {
54
- self.navTo(bookmarkWidget.bookmarks.at(-1));
55
- }
56
- else {
57
- session.notify('There are no recent bookmarks to navigate to.', 'info');
58
- }
59
- },
60
- bookmarkCurrentRegion() {
61
- if (self.id === (0, util_1.getSession)(self).focusedViewId) {
62
- const selectedRegions = self.getSelectedRegions(undefined, undefined);
63
- const bookmarkWidget = self.activateBookmarkWidget();
64
- if (!selectedRegions.length) {
65
- throw new Error('no region selected');
66
- }
67
- else {
68
- bookmarkWidget.addBookmark(selectedRegions[0]);
69
- }
70
- }
71
- },
72
- }))
73
- .views(self => {
74
- const superMenuItems = self.menuItems;
75
- const superRubberBandMenuItems = self.rubberBandMenuItems;
76
- return {
77
- menuItems() {
78
- return [
79
- ...superMenuItems(),
80
- { type: 'divider' },
81
- {
82
- label: 'Bookmarks',
83
- icon: Bookmarks_1.default,
84
- subMenu: [
85
- {
86
- label: 'Open bookmark widget',
87
- icon: Bookmarks_1.default,
88
- onClick: () => self.activateBookmarkWidget(),
89
- },
90
- {
91
- label: 'Bookmark current region',
92
- icon: Bookmark_1.default,
93
- onClick: () => {
94
- self.bookmarkCurrentRegion();
95
- },
96
- },
97
- {
98
- label: 'Toggle bookmark highlights',
99
- icon: Highlight_1.default,
100
- type: 'checkbox',
101
- checked: self.bookmarkHighlightsVisible,
102
- onClick: () => {
103
- self.setBookmarkHighlightsVisible(!self.bookmarkHighlightsVisible);
104
- },
105
- },
106
- {
107
- label: 'Toggle bookmark labels',
108
- icon: Label_1.default,
109
- type: 'checkbox',
110
- checked: self.bookmarkLabelsVisible,
111
- onClick: () => {
112
- self.setBookmarkLabelsVisible(!self.bookmarkLabelsVisible);
113
- },
114
- },
115
- ],
116
- },
117
- ];
118
- },
119
- rubberBandMenuItems() {
120
- return [
121
- ...superRubberBandMenuItems(),
122
- {
123
- label: 'Bookmark region',
124
- icon: Bookmark_1.default,
125
- onClick: () => {
126
- const { leftOffset, rightOffset } = self;
127
- const selectedRegions = self.getSelectedRegions(leftOffset, rightOffset);
128
- const bookmarkWidget = self.activateBookmarkWidget();
129
- if (!selectedRegions.length) {
130
- throw new Error('no regions selected');
131
- }
132
- else {
133
- bookmarkWidget.addBookmark(selectedRegions[0]);
134
- }
135
- },
136
- },
137
- ];
138
- },
139
- };
140
- })
141
- .actions(self => {
142
- const keydownListener = (e) => {
143
- const activationSequence = (e.ctrlKey || e.metaKey) && e.shiftKey;
144
- if (activationSequence && e.code === 'KeyD') {
145
- e.preventDefault();
146
- self.activateBookmarkWidget();
147
- self.bookmarkCurrentRegion();
148
- (0, util_1.getSession)(self).notify('Bookmark created.', 'success');
149
- }
150
- if (activationSequence && e.code === 'KeyM') {
151
- e.preventDefault();
152
- self.navigateNewestBookmark();
153
- }
154
- };
155
- return {
156
- afterCreate() {
157
- document.addEventListener('keydown', keydownListener);
158
- },
159
- beforeDestroy() {
160
- document.removeEventListener('keydown', keydownListener);
161
- },
162
- };
163
- });
164
- pluggableElement.stateModel = newStateModel;
165
- }
166
- return pluggableElement;
167
- });
168
- }
169
- configure(pluginManager) {
170
- if ((0, util_1.isAbstractMenuManager)(pluginManager.rootModel)) {
171
- pluginManager.rootModel.appendToMenu('Tools', {
172
- label: 'Bookmarks',
173
- icon: Bookmarks_1.default,
174
- onClick: (session) => {
175
- let bookmarkWidget = session.widgets.get('GridBookmark');
176
- if (!bookmarkWidget) {
177
- bookmarkWidget = session.addWidget('GridBookmarkWidget', 'GridBookmark');
178
- }
179
- session.showWidget(bookmarkWidget);
180
- },
181
- });
182
- }
183
- }
184
- }
185
- exports.default = GridBookmarkPlugin;