@jbrowse/plugin-grid-bookmark 1.7.11 → 2.1.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/dist/GridBookmarkWidget/components/AssemblySelector.js +40 -74
  2. package/dist/GridBookmarkWidget/components/AssemblySelector.js.map +1 -0
  3. package/dist/GridBookmarkWidget/components/ClearBookmarks.js +79 -80
  4. package/dist/GridBookmarkWidget/components/ClearBookmarks.js.map +1 -0
  5. package/dist/GridBookmarkWidget/components/DeleteBookmark.js +47 -61
  6. package/dist/GridBookmarkWidget/components/DeleteBookmark.js.map +1 -0
  7. package/dist/GridBookmarkWidget/components/DownloadBookmarks.js +85 -104
  8. package/dist/GridBookmarkWidget/components/DownloadBookmarks.js.map +1 -0
  9. package/dist/GridBookmarkWidget/components/GridBookmarkWidget.js +159 -185
  10. package/dist/GridBookmarkWidget/components/GridBookmarkWidget.js.map +1 -0
  11. package/dist/GridBookmarkWidget/components/ImportBookmarks.js +164 -181
  12. package/dist/GridBookmarkWidget/components/ImportBookmarks.js.map +1 -0
  13. package/dist/GridBookmarkWidget/index.d.ts +0 -1
  14. package/dist/GridBookmarkWidget/index.js +10 -28
  15. package/dist/GridBookmarkWidget/index.js.map +1 -0
  16. package/dist/GridBookmarkWidget/model.js +77 -67
  17. package/dist/GridBookmarkWidget/model.js.map +1 -0
  18. package/dist/GridBookmarkWidget/types.js +2 -4
  19. package/dist/GridBookmarkWidget/types.js.map +1 -0
  20. package/dist/GridBookmarkWidget/utils.js +129 -129
  21. package/dist/GridBookmarkWidget/utils.js.map +1 -0
  22. package/dist/index.js +181 -187
  23. package/dist/index.js.map +1 -0
  24. package/esm/GridBookmarkWidget/components/AssemblySelector.d.ts +7 -0
  25. package/esm/GridBookmarkWidget/components/AssemblySelector.js +41 -0
  26. package/esm/GridBookmarkWidget/components/AssemblySelector.js.map +1 -0
  27. package/esm/GridBookmarkWidget/components/ClearBookmarks.d.ts +7 -0
  28. package/esm/GridBookmarkWidget/components/ClearBookmarks.js +40 -0
  29. package/esm/GridBookmarkWidget/components/ClearBookmarks.js.map +1 -0
  30. package/esm/GridBookmarkWidget/components/DeleteBookmark.d.ts +9 -0
  31. package/esm/GridBookmarkWidget/components/DeleteBookmark.js +46 -0
  32. package/esm/GridBookmarkWidget/components/DeleteBookmark.js.map +1 -0
  33. package/esm/GridBookmarkWidget/components/DownloadBookmarks.d.ts +7 -0
  34. package/esm/GridBookmarkWidget/components/DownloadBookmarks.js +50 -0
  35. package/esm/GridBookmarkWidget/components/DownloadBookmarks.js.map +1 -0
  36. package/esm/GridBookmarkWidget/components/GridBookmarkWidget.d.ts +7 -0
  37. package/esm/GridBookmarkWidget/components/GridBookmarkWidget.js +95 -0
  38. package/esm/GridBookmarkWidget/components/GridBookmarkWidget.js.map +1 -0
  39. package/esm/GridBookmarkWidget/components/ImportBookmarks.d.ts +8 -0
  40. package/esm/GridBookmarkWidget/components/ImportBookmarks.js +79 -0
  41. package/esm/GridBookmarkWidget/components/ImportBookmarks.js.map +1 -0
  42. package/esm/GridBookmarkWidget/index.d.ts +2 -0
  43. package/esm/GridBookmarkWidget/index.js +4 -0
  44. package/esm/GridBookmarkWidget/index.js.map +1 -0
  45. package/esm/GridBookmarkWidget/model.d.ts +35 -0
  46. package/esm/GridBookmarkWidget/model.js +54 -0
  47. package/esm/GridBookmarkWidget/model.js.map +1 -0
  48. package/esm/GridBookmarkWidget/types.d.ts +7 -0
  49. package/esm/GridBookmarkWidget/types.js +2 -0
  50. package/esm/GridBookmarkWidget/types.js.map +1 -0
  51. package/esm/GridBookmarkWidget/utils.d.ts +5 -0
  52. package/esm/GridBookmarkWidget/utils.js +77 -0
  53. package/esm/GridBookmarkWidget/utils.js.map +1 -0
  54. package/esm/index.d.ts +7 -0
  55. package/esm/index.js +116 -0
  56. package/esm/index.js.map +1 -0
  57. package/package.json +23 -15
  58. package/src/GridBookmarkWidget/components/AssemblySelector.tsx +9 -20
  59. package/src/GridBookmarkWidget/components/ClearBookmarks.tsx +6 -6
  60. package/src/GridBookmarkWidget/components/DeleteBookmark.tsx +5 -5
  61. package/src/GridBookmarkWidget/components/DownloadBookmarks.tsx +6 -6
  62. package/src/GridBookmarkWidget/components/GridBookmarkWidget.tsx +94 -111
  63. package/src/GridBookmarkWidget/components/ImportBookmarks.tsx +6 -6
  64. package/src/GridBookmarkWidget/index.js +0 -2
  65. package/src/index.ts +2 -2
  66. package/dist/GridBookmarkWidget/components/GridBookmarkWidget.test.js +0 -302
  67. package/dist/index.test.js +0 -35
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { GridBookmarkModel } from '../model';
3
+ declare function AssemblySelector({ model }: {
4
+ model: GridBookmarkModel;
5
+ }): JSX.Element;
6
+ declare const _default: typeof AssemblySelector;
7
+ export default _default;
@@ -0,0 +1,41 @@
1
+ import React from 'react';
2
+ import { observer } from 'mobx-react';
3
+ import { Typography, Select, MenuItem, FormControl } from '@mui/material';
4
+ import { makeStyles } from 'tss-react/mui';
5
+ const useStyles = makeStyles()(() => ({
6
+ container: {
7
+ display: 'flex',
8
+ flexDirection: 'row',
9
+ margin: 5,
10
+ },
11
+ selectText: {
12
+ marginRight: 8,
13
+ marginTop: 10,
14
+ },
15
+ flexItem: {
16
+ marginRight: 8,
17
+ },
18
+ }));
19
+ function AssemblySelector({ model }) {
20
+ const { classes } = useStyles();
21
+ const { assemblies, selectedAssembly, setSelectedAssembly } = model;
22
+ const noAssemblies = assemblies.length === 0 ? true : false;
23
+ const determineCurrentValue = (selectedAssembly) => {
24
+ if (selectedAssembly === 'all') {
25
+ return 'all';
26
+ }
27
+ else if (assemblies.includes(selectedAssembly)) {
28
+ return selectedAssembly;
29
+ }
30
+ return 'none';
31
+ };
32
+ return (React.createElement("div", { className: classes.container },
33
+ React.createElement(Typography, { className: classes.selectText }, "Select assembly:"),
34
+ React.createElement(FormControl, { className: classes.flexItem, disabled: noAssemblies },
35
+ React.createElement(Select, { value: determineCurrentValue(selectedAssembly), onChange: event => setSelectedAssembly(event.target.value) },
36
+ React.createElement(MenuItem, { value: "none" }, "none"),
37
+ React.createElement(MenuItem, { value: "all" }, "all"),
38
+ assemblies.map(assembly => (React.createElement(MenuItem, { value: assembly, key: assembly }, assembly)))))));
39
+ }
40
+ export default observer(AssemblySelector);
41
+ //# sourceMappingURL=AssemblySelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssemblySelector.js","sourceRoot":"","sources":["../../../src/GridBookmarkWidget/components/AssemblySelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAI1C,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACpC,SAAS,EAAE;QACT,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,KAAK;QACpB,MAAM,EAAE,CAAC;KACV;IACD,UAAU,EAAE;QACV,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,EAAE;KACd;IACD,QAAQ,EAAE;QACR,WAAW,EAAE,CAAC;KACf;CACF,CAAC,CAAC,CAAA;AAEH,SAAS,gBAAgB,CAAC,EAAE,KAAK,EAAgC;IAC/D,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,GAAG,KAAK,CAAA;IACnE,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;IAE3D,MAAM,qBAAqB,GAAG,CAAC,gBAAwB,EAAE,EAAE;QACzD,IAAI,gBAAgB,KAAK,KAAK,EAAE;YAC9B,OAAO,KAAK,CAAA;SACb;aAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;YAChD,OAAO,gBAAgB,CAAA;SACxB;QAED,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,OAAO,CACL,6BAAK,SAAS,EAAE,OAAO,CAAC,SAAS;QAC/B,oBAAC,UAAU,IAAC,SAAS,EAAE,OAAO,CAAC,UAAU,uBAA+B;QACxE,oBAAC,WAAW,IAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY;YAC9D,oBAAC,MAAM,IACL,KAAK,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,EAC9C,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;gBAE1D,oBAAC,QAAQ,IAAC,KAAK,EAAC,MAAM,WAAgB;gBACtC,oBAAC,QAAQ,IAAC,KAAK,EAAC,KAAK,UAAe;gBACnC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAC1B,oBAAC,QAAQ,IAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,IACrC,QAAQ,CACA,CACZ,CAAC,CACK,CACG,CACV,CACP,CAAA;AACH,CAAC;AAED,eAAe,QAAQ,CAAC,gBAAgB,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { GridBookmarkModel } from '../model';
3
+ declare function ClearBookmarks({ model }: {
4
+ model: GridBookmarkModel;
5
+ }): JSX.Element;
6
+ declare const _default: typeof ClearBookmarks;
7
+ export default _default;
@@ -0,0 +1,40 @@
1
+ import React, { useState } from 'react';
2
+ import { observer } from 'mobx-react';
3
+ import { Button, IconButton, Dialog, DialogTitle, DialogContent, DialogActions, Typography, } from '@mui/material';
4
+ import { makeStyles } from 'tss-react/mui';
5
+ import ClearAllIcon from '@mui/icons-material/ClearAll';
6
+ import CloseIcon from '@mui/icons-material/Close';
7
+ const useStyles = makeStyles()(() => ({
8
+ closeDialog: {
9
+ position: 'absolute',
10
+ right: 0,
11
+ top: 0,
12
+ },
13
+ dialogContainer: {
14
+ margin: 15,
15
+ },
16
+ }));
17
+ function ClearBookmarks({ model }) {
18
+ const { classes } = useStyles();
19
+ const [dialogOpen, setDialogOpen] = useState(false);
20
+ const { clearAllBookmarks } = model;
21
+ return (React.createElement(React.Fragment, null,
22
+ React.createElement(Button, { startIcon: React.createElement(ClearAllIcon, null), "aria-label": "clear bookmarks", onClick: () => setDialogOpen(true) }, "Clear"),
23
+ React.createElement(Dialog, { open: dialogOpen, onClose: () => setDialogOpen(false) },
24
+ React.createElement(DialogTitle, null,
25
+ "Clear bookmarks",
26
+ React.createElement(IconButton, { className: classes.closeDialog, "aria-label": "close-dialog", onClick: () => setDialogOpen(false) },
27
+ React.createElement(CloseIcon, null))),
28
+ React.createElement(DialogContent, null,
29
+ React.createElement(Typography, null, "Clear all bookmarks? Note this will clear bookmarks for all assemblies")),
30
+ React.createElement(DialogActions, null,
31
+ React.createElement(Button, { variant: "contained", color: "secondary", onClick: () => {
32
+ setDialogOpen(false);
33
+ } }, "Cancel"),
34
+ React.createElement(Button, { variant: "contained", color: "primary", onClick: () => {
35
+ clearAllBookmarks();
36
+ setDialogOpen(false);
37
+ } }, "Confirm")))));
38
+ }
39
+ export default observer(ClearBookmarks);
40
+ //# sourceMappingURL=ClearBookmarks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClearBookmarks.js","sourceRoot":"","sources":["../../../src/GridBookmarkWidget/components/ClearBookmarks.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EACL,MAAM,EACN,UAAU,EACV,MAAM,EACN,WAAW,EACX,aAAa,EACb,aAAa,EACb,UAAU,GACX,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,YAAY,MAAM,8BAA8B,CAAA;AACvD,OAAO,SAAS,MAAM,2BAA2B,CAAA;AAIjD,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACpC,WAAW,EAAE;QACX,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,CAAC;QACR,GAAG,EAAE,CAAC;KACP;IACD,eAAe,EAAE;QACf,MAAM,EAAE,EAAE;KACX;CACF,CAAC,CAAC,CAAA;AAEH,SAAS,cAAc,CAAC,EAAE,KAAK,EAAgC;IAC7D,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEnD,MAAM,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAA;IAEnC,OAAO,CACL;QACE,oBAAC,MAAM,IACL,SAAS,EAAE,oBAAC,YAAY,OAAG,gBAChB,iBAAiB,EAC5B,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,YAG3B;QACT,oBAAC,MAAM,IAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC;YAC3D,oBAAC,WAAW;;gBAEV,oBAAC,UAAU,IACT,SAAS,EAAE,OAAO,CAAC,WAAW,gBACnB,cAAc,EACzB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC;oBAEnC,oBAAC,SAAS,OAAG,CACF,CACD;YACd,oBAAC,aAAa;gBACZ,oBAAC,UAAU,iFAGE,CACC;YAChB,oBAAC,aAAa;gBACZ,oBAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,GAAG,EAAE;wBACZ,aAAa,CAAC,KAAK,CAAC,CAAA;oBACtB,CAAC,aAGM;gBACT,oBAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,SAAS,EACf,OAAO,EAAE,GAAG,EAAE;wBACZ,iBAAiB,EAAE,CAAA;wBACnB,aAAa,CAAC,KAAK,CAAC,CAAA;oBACtB,CAAC,cAGM,CACK,CACT,CACR,CACJ,CAAA;AACH,CAAC;AAED,eAAe,QAAQ,CAAC,cAAc,CAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import { GridBookmarkModel } from '../model';
3
+ declare function DeleteBookmarkDialog({ rowNumber, model, onClose, }: {
4
+ rowNumber: number | undefined;
5
+ model: GridBookmarkModel;
6
+ onClose: () => void;
7
+ }): JSX.Element;
8
+ declare const _default: typeof DeleteBookmarkDialog;
9
+ export default _default;
@@ -0,0 +1,46 @@
1
+ import React from 'react';
2
+ import { observer } from 'mobx-react';
3
+ import { assembleLocString } from '@jbrowse/core/util';
4
+ import { IconButton, Button, Dialog, DialogTitle, DialogContent, DialogActions, Typography, } from '@mui/material';
5
+ import { makeStyles } from 'tss-react/mui';
6
+ import CloseIcon from '@mui/icons-material/Close';
7
+ const useStyles = makeStyles()(() => ({
8
+ closeDialog: {
9
+ position: 'absolute',
10
+ right: 0,
11
+ top: 0,
12
+ },
13
+ dialogContainer: {
14
+ margin: 15,
15
+ },
16
+ }));
17
+ function DeleteBookmarkDialog({ rowNumber, model, onClose, }) {
18
+ const { classes } = useStyles();
19
+ const { removeBookmark } = model;
20
+ return (React.createElement(Dialog, { open: rowNumber !== undefined, onClose: onClose },
21
+ React.createElement(DialogTitle, null,
22
+ "Delete bookmark",
23
+ React.createElement(IconButton, { className: classes.closeDialog, "aria-label": "close-dialog", onClick: onClose },
24
+ React.createElement(CloseIcon, null))),
25
+ React.createElement(DialogContent, null,
26
+ React.createElement(Typography, null,
27
+ "Remove",
28
+ ' ',
29
+ React.createElement("code", null, rowNumber !== undefined
30
+ ? assembleLocString(model.bookmarkedRegions[rowNumber])
31
+ : ''),
32
+ ' ',
33
+ "?")),
34
+ React.createElement(DialogActions, null,
35
+ React.createElement(Button, { variant: "contained", color: "secondary", onClick: () => {
36
+ onClose();
37
+ } }, "Cancel"),
38
+ React.createElement(Button, { variant: "contained", color: "primary", onClick: () => {
39
+ if (rowNumber !== undefined) {
40
+ removeBookmark(rowNumber);
41
+ onClose();
42
+ }
43
+ } }, "Confirm"))));
44
+ }
45
+ export default observer(DeleteBookmarkDialog);
46
+ //# sourceMappingURL=DeleteBookmark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeleteBookmark.js","sourceRoot":"","sources":["../../../src/GridBookmarkWidget/components/DeleteBookmark.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtD,OAAO,EACL,UAAU,EACV,MAAM,EACN,MAAM,EACN,WAAW,EACX,aAAa,EACb,aAAa,EACb,UAAU,GACX,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,SAAS,MAAM,2BAA2B,CAAA;AAIjD,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACpC,WAAW,EAAE;QACX,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,CAAC;QACR,GAAG,EAAE,CAAC;KACP;IACD,eAAe,EAAE;QACf,MAAM,EAAE,EAAE;KACX;CACF,CAAC,CAAC,CAAA;AAEH,SAAS,oBAAoB,CAAC,EAC5B,SAAS,EACT,KAAK,EACL,OAAO,GAKR;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAE/B,MAAM,EAAE,cAAc,EAAE,GAAG,KAAK,CAAA;IAEhC,OAAO,CACL,oBAAC,MAAM,IAAC,IAAI,EAAE,SAAS,KAAK,SAAS,EAAE,OAAO,EAAE,OAAO;QACrD,oBAAC,WAAW;;YAEV,oBAAC,UAAU,IACT,SAAS,EAAE,OAAO,CAAC,WAAW,gBACnB,cAAc,EACzB,OAAO,EAAE,OAAO;gBAEhB,oBAAC,SAAS,OAAG,CACF,CACD;QACd,oBAAC,aAAa;YACZ,oBAAC,UAAU;;gBACF,GAAG;gBACV,kCACG,SAAS,KAAK,SAAS;oBACtB,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;oBACvD,CAAC,CAAC,EAAE,CACD;gBAAC,GAAG;oBAEA,CACC;QAChB,oBAAC,aAAa;YACZ,oBAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,GAAG,EAAE;oBACZ,OAAO,EAAE,CAAA;gBACX,CAAC,aAGM;YAET,oBAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,SAAS,EACf,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,SAAS,KAAK,SAAS,EAAE;wBAC3B,cAAc,CAAC,SAAS,CAAC,CAAA;wBACzB,OAAO,EAAE,CAAA;qBACV;gBACH,CAAC,cAGM,CACK,CACT,CACV,CAAA;AACH,CAAC;AAED,eAAe,QAAQ,CAAC,oBAAoB,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { GridBookmarkModel } from '../model';
3
+ declare function DownloadBookmarks({ model }: {
4
+ model: GridBookmarkModel;
5
+ }): JSX.Element;
6
+ declare const _default: typeof DownloadBookmarks;
7
+ export default _default;
@@ -0,0 +1,50 @@
1
+ import React, { useState } from 'react';
2
+ import { observer } from 'mobx-react';
3
+ import { IconButton, Button, Dialog, DialogTitle, DialogContent, DialogActions, MenuItem, Select, Typography, } from '@mui/material';
4
+ import { makeStyles } from 'tss-react/mui';
5
+ import CloseIcon from '@mui/icons-material/Close';
6
+ import GetAppIcon from '@mui/icons-material/GetApp';
7
+ import { downloadBookmarkFile } from '../utils';
8
+ const useStyles = makeStyles()(() => ({
9
+ closeDialog: {
10
+ position: 'absolute',
11
+ right: 0,
12
+ top: 0,
13
+ },
14
+ dialogContainer: {
15
+ margin: 15,
16
+ },
17
+ flexItem: {
18
+ margin: 5,
19
+ },
20
+ flexContainer: {
21
+ display: 'flex',
22
+ justifyContent: 'space-evenly',
23
+ width: 200,
24
+ },
25
+ }));
26
+ function DownloadBookmarks({ model }) {
27
+ const { classes } = useStyles();
28
+ const [dialogOpen, setDialogOpen] = useState(false);
29
+ const [fileType, setFileType] = useState('BED');
30
+ const { bookmarkedRegions } = model;
31
+ return (React.createElement(React.Fragment, null,
32
+ React.createElement(Button, { startIcon: React.createElement(GetAppIcon, null), onClick: () => setDialogOpen(true) }, "Download"),
33
+ React.createElement(Dialog, { open: dialogOpen, onClose: () => setDialogOpen(false) },
34
+ React.createElement(DialogTitle, null,
35
+ React.createElement(IconButton, { className: classes.closeDialog, "aria-label": "close-dialog", onClick: () => setDialogOpen(false) },
36
+ React.createElement(CloseIcon, null))),
37
+ React.createElement(DialogContent, null,
38
+ React.createElement(Typography, null, "Format to download"),
39
+ React.createElement(Select, { className: classes.flexItem, "data-testid": "selectFileType", value: fileType, onChange: event => setFileType(event.target.value) },
40
+ React.createElement(MenuItem, { value: "BED" }, "BED"),
41
+ React.createElement(MenuItem, { value: "TSV" }, "TSV"))),
42
+ React.createElement(DialogActions, null,
43
+ React.createElement(Button, { variant: "contained", color: "secondary", onClick: () => setDialogOpen(false) }, "Cancel"),
44
+ React.createElement(Button, { className: classes.flexItem, "data-testid": "dialogDownload", variant: "contained", color: "primary", startIcon: React.createElement(GetAppIcon, null), onClick: () => {
45
+ downloadBookmarkFile(bookmarkedRegions, fileType, model);
46
+ setDialogOpen(false);
47
+ } }, "Download")))));
48
+ }
49
+ export default observer(DownloadBookmarks);
50
+ //# sourceMappingURL=DownloadBookmarks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DownloadBookmarks.js","sourceRoot":"","sources":["../../../src/GridBookmarkWidget/components/DownloadBookmarks.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { GridBookmarkModel } from '../model';
3
+ declare function GridBookmarkWidget({ model }: {
4
+ model: GridBookmarkModel;
5
+ }): JSX.Element;
6
+ declare const _default: typeof GridBookmarkWidget;
7
+ export default _default;
@@ -0,0 +1,95 @@
1
+ import React, { useState } from 'react';
2
+ import { observer } from 'mobx-react';
3
+ import { Link, IconButton, Typography } from '@mui/material';
4
+ import { makeStyles } from 'tss-react/mui';
5
+ import { DataGrid } from '@mui/x-data-grid';
6
+ import { getSession, assembleLocString, measureText } from '@jbrowse/core/util';
7
+ import DeleteIcon from '@mui/icons-material/Delete';
8
+ // locals
9
+ import AssemblySelector from './AssemblySelector';
10
+ import DeleteBookmarkDialog from './DeleteBookmark';
11
+ import DownloadBookmarks from './DownloadBookmarks';
12
+ import ImportBookmarks from './ImportBookmarks';
13
+ import ClearBookmarks from './ClearBookmarks';
14
+ import { navToBookmark } from '../utils';
15
+ const useStyles = makeStyles()(() => ({
16
+ link: {
17
+ cursor: 'pointer',
18
+ },
19
+ }));
20
+ // creates a coarse measurement of column width, similar to code in
21
+ // BaseFeatureDetails
22
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
+ const measure = (row, col) => Math.min(Math.max(measureText(String(row[col]), 14) + 20, 80), 1000);
24
+ const BookmarkGrid = observer(({ model }) => {
25
+ const { classes } = useStyles();
26
+ const [dialogRowNumber, setDialogRowNumber] = useState();
27
+ const { bookmarkedRegions, selectedAssembly } = model;
28
+ const { views } = getSession(model);
29
+ const bookmarkRows = bookmarkedRegions
30
+ .filter(r => selectedAssembly === 'all' || r.assemblyName === selectedAssembly)
31
+ .map((region, index) => {
32
+ const { assemblyName, ...rest } = region;
33
+ return {
34
+ ...region,
35
+ id: index,
36
+ delete: index,
37
+ locString: assembleLocString(selectedAssembly === 'all' ? region : rest),
38
+ };
39
+ });
40
+ const columns = [
41
+ {
42
+ field: 'locString',
43
+ headerName: 'bookmark link',
44
+ width: Math.max(...bookmarkRows.map(row => measure(row, 'locString'))),
45
+ renderCell: (params) => {
46
+ const { value } = params;
47
+ return (React.createElement(Link, { className: classes.link, onClick: (event) => {
48
+ navToBookmark(value, views, model);
49
+ event.preventDefault();
50
+ } }, value));
51
+ },
52
+ },
53
+ {
54
+ field: 'label',
55
+ width: Math.max(100, Math.max(...bookmarkRows.map(row => measure(row, 'label')))),
56
+ editable: true,
57
+ },
58
+ {
59
+ field: 'delete',
60
+ width: 30,
61
+ renderCell: (params) => {
62
+ const { value } = params;
63
+ return (React.createElement(IconButton, { "data-testid": "deleteBookmark", "aria-label": "delete", onClick: () => {
64
+ if (value !== null && value !== undefined) {
65
+ setDialogRowNumber(+value);
66
+ }
67
+ } },
68
+ React.createElement(DeleteIcon, null)));
69
+ },
70
+ },
71
+ ];
72
+ return (React.createElement(React.Fragment, null,
73
+ React.createElement(DataGrid, { density: "compact", rows: bookmarkRows, columns: columns, onCellEditCommit: args => {
74
+ const { value, id } = args;
75
+ model.updateBookmarkLabel(id, value);
76
+ }, disableSelectionOnClick: true }),
77
+ React.createElement(DeleteBookmarkDialog, { rowNumber: dialogRowNumber, model: model, onClose: () => setDialogRowNumber(undefined) })));
78
+ });
79
+ function GridBookmarkWidget({ model }) {
80
+ const { selectedAssembly } = model;
81
+ return (React.createElement(React.Fragment, null,
82
+ React.createElement(AssemblySelector, { model: model }),
83
+ React.createElement(DownloadBookmarks, { model: model }),
84
+ React.createElement(ImportBookmarks, { model: model, assemblyName: selectedAssembly }),
85
+ React.createElement(ClearBookmarks, { model: model }),
86
+ React.createElement("div", { style: { margin: 12 } },
87
+ React.createElement(Typography, null,
88
+ "Note: you can double click the ",
89
+ React.createElement("code", null, "label"),
90
+ " field to add your own custom notes")),
91
+ React.createElement("div", { style: { height: 750, width: '100%' } },
92
+ React.createElement(BookmarkGrid, { model: model }))));
93
+ }
94
+ export default observer(GridBookmarkWidget);
95
+ //# sourceMappingURL=GridBookmarkWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridBookmarkWidget.js","sourceRoot":"","sources":["../../../src/GridBookmarkWidget/components/GridBookmarkWidget.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import { GridBookmarkModel } from '../model';
3
+ declare function ImportBookmarks({ model, assemblyName, }: {
4
+ model: GridBookmarkModel;
5
+ assemblyName: string;
6
+ }): JSX.Element;
7
+ declare const _default: typeof ImportBookmarks;
8
+ export default _default;
@@ -0,0 +1,79 @@
1
+ import React, { useState } from 'react';
2
+ import { observer } from 'mobx-react';
3
+ import { getSession } from '@jbrowse/core/util';
4
+ import AssemblySelector from '@jbrowse/core/ui/AssemblySelector';
5
+ import { FileSelector } from '@jbrowse/core/ui';
6
+ import { openLocation } from '@jbrowse/core/util/io';
7
+ import { IconButton, Button, Dialog, DialogTitle, DialogContent, DialogActions, Typography, } from '@mui/material';
8
+ import { makeStyles } from 'tss-react/mui';
9
+ import CloseIcon from '@mui/icons-material/Close';
10
+ import ImportIcon from '@mui/icons-material/Publish';
11
+ const useStyles = makeStyles()(() => ({
12
+ closeDialog: {
13
+ position: 'absolute',
14
+ right: 0,
15
+ top: 0,
16
+ },
17
+ dialogContainer: {
18
+ margin: 15,
19
+ },
20
+ flexItem: {
21
+ margin: 5,
22
+ },
23
+ }));
24
+ function ImportBookmarks({ model, assemblyName, }) {
25
+ const { classes } = useStyles();
26
+ const session = getSession(model);
27
+ const { assemblyNames } = session;
28
+ const [dialogOpen, setDialogOpen] = useState(false);
29
+ const [location, setLocation] = useState();
30
+ const [error, setError] = useState();
31
+ const [selectedAsm, setSelectedAsm] = useState(assemblyName || assemblyNames[0]);
32
+ return (React.createElement(React.Fragment, null,
33
+ React.createElement(Button, { startIcon: React.createElement(ImportIcon, null), onClick: () => setDialogOpen(true) }, "Import"),
34
+ React.createElement(Dialog, { open: dialogOpen, onClose: () => setDialogOpen(false), maxWidth: "xl" },
35
+ React.createElement(DialogTitle, null,
36
+ "Import bookmarks",
37
+ React.createElement(IconButton, { className: classes.closeDialog, "aria-label": "close-dialog", onClick: () => setDialogOpen(false) },
38
+ React.createElement(CloseIcon, null))),
39
+ React.createElement(DialogContent, null,
40
+ React.createElement(Typography, null, "Choose a BED format file to import. The first 4 columns will be used"),
41
+ React.createElement(FileSelector, { location: location, setLocation: setLocation, name: "File" }),
42
+ React.createElement(Typography, null, "Select assembly that your data belongs to"),
43
+ React.createElement(AssemblySelector, { onChange: val => setSelectedAsm(val), session: session, selected: selectedAsm }),
44
+ error ? (React.createElement(Typography, { color: "error", variant: "h6" }, `${error}`)) : null),
45
+ React.createElement(DialogActions, null,
46
+ React.createElement(Button, { variant: "contained", color: "secondary", onClick: () => setDialogOpen(false) }, "Cancel"),
47
+ React.createElement(Button, { className: classes.flexItem, "data-testid": "dialogImport", variant: "contained", color: "primary", disabled: !location, startIcon: React.createElement(ImportIcon, null), onClick: async () => {
48
+ try {
49
+ if (!location) {
50
+ return;
51
+ }
52
+ const data = await openLocation(location).readFile('utf8');
53
+ const regions = data
54
+ .split('\n')
55
+ .filter(f => !!f.trim())
56
+ .filter(f => !f.startsWith('#') &&
57
+ !f.startsWith('track') &&
58
+ !f.startsWith('browser'))
59
+ .map(line => {
60
+ const [refName, start, end, name] = line.split('\t');
61
+ return {
62
+ assemblyName: selectedAsm,
63
+ refName,
64
+ start: +start,
65
+ end: +end,
66
+ label: name === '.' ? undefined : name,
67
+ };
68
+ });
69
+ model.importBookmarks(regions);
70
+ setDialogOpen(false);
71
+ }
72
+ catch (e) {
73
+ console.error(e);
74
+ setError(e);
75
+ }
76
+ } }, "Import")))));
77
+ }
78
+ export default observer(ImportBookmarks);
79
+ //# sourceMappingURL=ImportBookmarks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImportBookmarks.js","sourceRoot":"","sources":["../../../src/GridBookmarkWidget/components/ImportBookmarks.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { default as stateModelFactory } from "./model";
2
+ export const configSchema: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
@@ -0,0 +1,4 @@
1
+ import { ConfigurationSchema } from '@jbrowse/core/configuration';
2
+ export { default as stateModelFactory } from './model';
3
+ export const configSchema = ConfigurationSchema('GridBookmarkWidget', {});
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/GridBookmarkWidget/index.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,SAAS,CAAA;AACtD,MAAM,CAAC,MAAM,YAAY,GAAG,mBAAmB,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAA"}
@@ -0,0 +1,35 @@
1
+ import { Instance } from 'mobx-state-tree';
2
+ import PluginManager from '@jbrowse/core/PluginManager';
3
+ import { Region } from '@jbrowse/core/util/types';
4
+ export default function f(pluginManager: PluginManager): import("mobx-state-tree").IModelType<{
5
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
6
+ type: import("mobx-state-tree").ISimpleType<"GridBookmarkWidget">;
7
+ view: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IReferenceType<import("mobx-state-tree").IAnyType>>;
8
+ bookmarkedRegions: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
9
+ refName: import("mobx-state-tree").ISimpleType<string>;
10
+ start: import("mobx-state-tree").ISimpleType<number>;
11
+ end: import("mobx-state-tree").ISimpleType<number>;
12
+ reversed: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
13
+ } & {
14
+ assemblyName: import("mobx-state-tree").ISimpleType<string>;
15
+ } & {
16
+ label: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
17
+ }, {
18
+ setRefName(newRefName: string): void;
19
+ } & {
20
+ setLabel(label: string): void;
21
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
22
+ modelSelectedAssembly: import("mobx-state-tree").IType<string | undefined, string, string>;
23
+ }, {
24
+ importBookmarks(regions: Region[]): void;
25
+ addBookmark(region: Region): void;
26
+ removeBookmark(index: number): void;
27
+ clearAllBookmarks(): void;
28
+ updateBookmarkLabel(index: number, label: string): void;
29
+ setSelectedAssembly(assembly: string): void;
30
+ } & {
31
+ readonly selectedAssembly: string;
32
+ readonly assemblies: string[];
33
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
34
+ export declare type GridBookmarkStateModel = ReturnType<typeof f>;
35
+ export declare type GridBookmarkModel = Instance<GridBookmarkStateModel>;
@@ -0,0 +1,54 @@
1
+ import { types, cast } from 'mobx-state-tree';
2
+ import { Region as RegionModel, ElementId } from '@jbrowse/core/util/types/mst';
3
+ const LabeledRegionModel = types
4
+ .compose(RegionModel, types.model('Label', { label: types.optional(types.string, '') }))
5
+ .actions(self => ({
6
+ setLabel(label) {
7
+ self.label = label;
8
+ },
9
+ }));
10
+ export default function f(pluginManager) {
11
+ return types
12
+ .model('GridBookmarkModel', {
13
+ id: ElementId,
14
+ type: types.literal('GridBookmarkWidget'),
15
+ view: types.safeReference(pluginManager.pluggableMstType('view', 'stateModel')),
16
+ bookmarkedRegions: types.array(LabeledRegionModel),
17
+ modelSelectedAssembly: '',
18
+ })
19
+ .actions(self => ({
20
+ importBookmarks(regions) {
21
+ self.bookmarkedRegions = cast(self.bookmarkedRegions.concat(regions));
22
+ },
23
+ addBookmark(region) {
24
+ self.bookmarkedRegions.push(region);
25
+ },
26
+ removeBookmark(index) {
27
+ self.bookmarkedRegions.splice(index, 1);
28
+ },
29
+ clearAllBookmarks() {
30
+ self.bookmarkedRegions.clear();
31
+ },
32
+ updateBookmarkLabel(index, label) {
33
+ var _a;
34
+ (_a = self.bookmarkedRegions[index]) === null || _a === void 0 ? void 0 : _a.setLabel(label);
35
+ },
36
+ setSelectedAssembly(assembly) {
37
+ self.modelSelectedAssembly = assembly;
38
+ },
39
+ }))
40
+ .views(self => ({
41
+ get selectedAssembly() {
42
+ return (self.modelSelectedAssembly ||
43
+ (self.bookmarkedRegions.length
44
+ ? self.bookmarkedRegions[0].assemblyName
45
+ : ''));
46
+ },
47
+ get assemblies() {
48
+ return [
49
+ ...new Set(self.bookmarkedRegions.map(region => region.assemblyName)),
50
+ ];
51
+ },
52
+ }));
53
+ }
54
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/GridBookmarkWidget/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAY,MAAM,iBAAiB,CAAA;AAGvD,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAE/E,MAAM,kBAAkB,GAAG,KAAK;KAC7B,OAAO,CACN,WAAW,EACX,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAClE;KACA,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;CACF,CAAC,CAAC,CAAA;AAEL,MAAM,CAAC,OAAO,UAAU,CAAC,CAAC,aAA4B;IACpD,OAAO,KAAK;SACT,KAAK,CAAC,mBAAmB,EAAE;QAC1B,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACzC,IAAI,EAAE,KAAK,CAAC,aAAa,CACvB,aAAa,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,CACrD;QACD,iBAAiB,EAAE,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC;QAClD,qBAAqB,EAAE,EAAE;KAC1B,CAAC;SACD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB,eAAe,CAAC,OAAiB;YAC/B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QACvE,CAAC;QACD,WAAW,CAAC,MAAc;YACxB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACrC,CAAC;QACD,cAAc,CAAC,KAAa;YAC1B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QACzC,CAAC;QACD,iBAAiB;YACf,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAA;QAChC,CAAC;QACD,mBAAmB,CAAC,KAAa,EAAE,KAAa;;YAC9C,MAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,0CAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;QAChD,CAAC;QACD,mBAAmB,CAAC,QAAgB;YAClC,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAA;QACvC,CAAC;KACF,CAAC,CAAC;SACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,gBAAgB;YAClB,OAAO,CACL,IAAI,CAAC,qBAAqB;gBAC1B,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM;oBAC5B,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,YAAY;oBACxC,CAAC,CAAC,EAAE,CAAC,CACR,CAAA;QACH,CAAC;QACD,IAAI,UAAU;YACZ,OAAO;gBACL,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;aACtE,CAAA;QACH,CAAC;KACF,CAAC,CAAC,CAAA;AACP,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { AbstractViewModel, Region } from '@jbrowse/core/util/types';
2
+ export interface NavigableViewModel extends AbstractViewModel {
3
+ navToLocString: Function;
4
+ }
5
+ export interface LabeledRegion extends Region {
6
+ label: string;
7
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/GridBookmarkWidget/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { AbstractViewModel } from '@jbrowse/core/util/types';
2
+ import { GridBookmarkModel } from './model';
3
+ import { LabeledRegion } from './types';
4
+ export declare function navToBookmark(locString: string, views: AbstractViewModel[], model: GridBookmarkModel): Promise<void>;
5
+ export declare function downloadBookmarkFile(bookmarkedRegions: LabeledRegion[], fileFormat: string, model: GridBookmarkModel): void;