@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
@@ -1,17 +1,12 @@
1
1
  import React, { useState } from 'react'
2
2
  import { observer } from 'mobx-react'
3
- import {
4
- Link,
5
- IconButton,
6
- Typography,
7
- Button,
8
- makeStyles,
9
- } from '@material-ui/core'
3
+ import { Link, IconButton, Typography } from '@mui/material'
4
+ import { makeStyles } from 'tss-react/mui'
10
5
  import { DataGrid, GridCellParams } from '@mui/x-data-grid'
11
6
  import { getSession, assembleLocString, measureText } from '@jbrowse/core/util'
12
- import DeleteIcon from '@material-ui/icons/Delete'
13
- import ViewCompactIcon from '@material-ui/icons/ViewCompact'
7
+ import DeleteIcon from '@mui/icons-material/Delete'
14
8
 
9
+ // locals
15
10
  import AssemblySelector from './AssemblySelector'
16
11
  import DeleteBookmarkDialog from './DeleteBookmark'
17
12
  import DownloadBookmarks from './DownloadBookmarks'
@@ -20,7 +15,7 @@ import ClearBookmarks from './ClearBookmarks'
20
15
  import { GridBookmarkModel } from '../model'
21
16
  import { navToBookmark } from '../utils'
22
17
 
23
- const useStyles = makeStyles(() => ({
18
+ const useStyles = makeStyles()(() => ({
24
19
  link: {
25
20
  cursor: 'pointer',
26
21
  },
@@ -32,109 +27,102 @@ const useStyles = makeStyles(() => ({
32
27
  const measure = (row: any, col: string) =>
33
28
  Math.min(Math.max(measureText(String(row[col]), 14) + 20, 80), 1000)
34
29
 
35
- const BookmarkGrid = observer(
36
- ({ compact, model }: { model: GridBookmarkModel; compact: boolean }) => {
37
- const classes = useStyles()
38
- const [dialogRowNumber, setDialogRowNumber] = useState<number>()
39
- const { bookmarkedRegions, selectedAssembly } = model
40
- const { views } = getSession(model)
30
+ const BookmarkGrid = observer(({ model }: { model: GridBookmarkModel }) => {
31
+ const { classes } = useStyles()
32
+ const [dialogRowNumber, setDialogRowNumber] = useState<number>()
33
+ const { bookmarkedRegions, selectedAssembly } = model
34
+ const { views } = getSession(model)
41
35
 
42
- const bookmarkRows = bookmarkedRegions
43
- .toJS()
44
- .filter(
45
- region =>
46
- selectedAssembly === 'all' ||
47
- region.assemblyName === selectedAssembly,
48
- )
49
- .map((region, index) => {
50
- const { assemblyName, ...rest } = region
51
- return {
52
- ...region,
53
- id: index,
54
- delete: index,
55
- locString: assembleLocString(
56
- selectedAssembly === 'all' ? region : rest,
57
- ),
58
- }
59
- })
60
-
61
- const columns = [
62
- {
63
- field: 'locString',
64
- headerName: 'bookmark link',
65
- width: Math.max(...bookmarkRows.map(row => measure(row, 'locString'))),
66
- renderCell: (params: GridCellParams) => {
67
- const { value } = params
68
- return (
69
- <Link
70
- className={classes.link}
71
- onClick={(event: React.MouseEvent) => {
72
- navToBookmark(value as string, views, model)
73
- event.preventDefault()
74
- }}
75
- >
76
- {value}
77
- </Link>
78
- )
79
- },
80
- },
81
- {
82
- field: 'label',
83
- width: Math.max(
84
- 100,
85
- Math.max(...bookmarkRows.map(row => measure(row, 'label'))),
36
+ const bookmarkRows = bookmarkedRegions
37
+ .filter(
38
+ r => selectedAssembly === 'all' || r.assemblyName === selectedAssembly,
39
+ )
40
+ .map((region, index) => {
41
+ const { assemblyName, ...rest } = region
42
+ return {
43
+ ...region,
44
+ id: index,
45
+ delete: index,
46
+ locString: assembleLocString(
47
+ selectedAssembly === 'all' ? region : rest,
86
48
  ),
87
- editable: true,
49
+ }
50
+ })
51
+
52
+ const columns = [
53
+ {
54
+ field: 'locString',
55
+ headerName: 'bookmark link',
56
+ width: Math.max(...bookmarkRows.map(row => measure(row, 'locString'))),
57
+ renderCell: (params: GridCellParams) => {
58
+ const { value } = params
59
+ return (
60
+ <Link
61
+ className={classes.link}
62
+ onClick={(event: React.MouseEvent) => {
63
+ navToBookmark(value as string, views, model)
64
+ event.preventDefault()
65
+ }}
66
+ >
67
+ {value}
68
+ </Link>
69
+ )
88
70
  },
89
- {
90
- field: 'delete',
91
- width: 30,
92
- renderCell: (params: GridCellParams) => {
93
- const { value } = params
94
- return (
95
- <IconButton
96
- data-testid="deleteBookmark"
97
- aria-label="delete"
98
- onClick={() => {
99
- if (value !== null && value !== undefined) {
100
- setDialogRowNumber(+value)
101
- }
102
- }}
103
- >
104
- <DeleteIcon />
105
- </IconButton>
106
- )
107
- },
71
+ },
72
+ {
73
+ field: 'label',
74
+ width: Math.max(
75
+ 100,
76
+ Math.max(...bookmarkRows.map(row => measure(row, 'label'))),
77
+ ),
78
+ editable: true,
79
+ },
80
+ {
81
+ field: 'delete',
82
+ width: 30,
83
+ renderCell: (params: GridCellParams) => {
84
+ const { value } = params
85
+ return (
86
+ <IconButton
87
+ data-testid="deleteBookmark"
88
+ aria-label="delete"
89
+ onClick={() => {
90
+ if (value !== null && value !== undefined) {
91
+ setDialogRowNumber(+value)
92
+ }
93
+ }}
94
+ >
95
+ <DeleteIcon />
96
+ </IconButton>
97
+ )
108
98
  },
109
- ]
99
+ },
100
+ ]
110
101
 
111
- return (
112
- <>
113
- <DataGrid
114
- rows={bookmarkRows}
115
- rowHeight={compact ? 25 : undefined}
116
- headerHeight={compact ? 25 : undefined}
117
- columns={columns}
118
- onCellEditCommit={args => {
119
- const { value, id } = args
120
- model.updateBookmarkLabel(id as number, value as string)
121
- }}
122
- disableSelectionOnClick
123
- />
102
+ return (
103
+ <>
104
+ <DataGrid
105
+ density="compact"
106
+ rows={bookmarkRows}
107
+ columns={columns}
108
+ onCellEditCommit={args => {
109
+ const { value, id } = args
110
+ model.updateBookmarkLabel(id as number, value as string)
111
+ }}
112
+ disableSelectionOnClick
113
+ />
124
114
 
125
- <DeleteBookmarkDialog
126
- rowNumber={dialogRowNumber}
127
- model={model}
128
- onClose={() => setDialogRowNumber(undefined)}
129
- />
130
- </>
131
- )
132
- },
133
- )
115
+ <DeleteBookmarkDialog
116
+ rowNumber={dialogRowNumber}
117
+ model={model}
118
+ onClose={() => setDialogRowNumber(undefined)}
119
+ />
120
+ </>
121
+ )
122
+ })
134
123
 
135
124
  function GridBookmarkWidget({ model }: { model: GridBookmarkModel }) {
136
125
  const { selectedAssembly } = model
137
- const [compact, setCompact] = useState(false)
138
126
 
139
127
  return (
140
128
  <>
@@ -142,12 +130,7 @@ function GridBookmarkWidget({ model }: { model: GridBookmarkModel }) {
142
130
  <DownloadBookmarks model={model} />
143
131
  <ImportBookmarks model={model} assemblyName={selectedAssembly} />
144
132
  <ClearBookmarks model={model} />
145
- <Button
146
- startIcon={<ViewCompactIcon />}
147
- onClick={() => setCompact(!compact)}
148
- >
149
- Compact
150
- </Button>
133
+
151
134
  <div style={{ margin: 12 }}>
152
135
  <Typography>
153
136
  Note: you can double click the <code>label</code> field to add your
@@ -155,7 +138,7 @@ function GridBookmarkWidget({ model }: { model: GridBookmarkModel }) {
155
138
  </Typography>
156
139
  </div>
157
140
  <div style={{ height: 750, width: '100%' }}>
158
- <BookmarkGrid model={model} compact={compact} />
141
+ <BookmarkGrid model={model} />
159
142
  </div>
160
143
  </>
161
144
  )
@@ -12,14 +12,14 @@ import {
12
12
  DialogTitle,
13
13
  DialogContent,
14
14
  DialogActions,
15
- makeStyles,
16
15
  Typography,
17
- } from '@material-ui/core'
18
- import CloseIcon from '@material-ui/icons/Close'
19
- import ImportIcon from '@material-ui/icons/Publish'
16
+ } from '@mui/material'
17
+ import { makeStyles } from 'tss-react/mui'
18
+ import CloseIcon from '@mui/icons-material/Close'
19
+ import ImportIcon from '@mui/icons-material/Publish'
20
20
  import { GridBookmarkModel } from '../model'
21
21
 
22
- const useStyles = makeStyles(() => ({
22
+ const useStyles = makeStyles()(() => ({
23
23
  closeDialog: {
24
24
  position: 'absolute',
25
25
  right: 0,
@@ -40,7 +40,7 @@ function ImportBookmarks({
40
40
  model: GridBookmarkModel
41
41
  assemblyName: string
42
42
  }) {
43
- const classes = useStyles()
43
+ const { classes } = useStyles()
44
44
  const session = getSession(model)
45
45
  const { assemblyNames } = session
46
46
  const [dialogOpen, setDialogOpen] = useState(false)
@@ -1,5 +1,3 @@
1
1
  import { ConfigurationSchema } from '@jbrowse/core/configuration'
2
-
3
- export { default as ReactComponent } from './components/GridBookmarkWidget'
4
2
  export { default as stateModelFactory } from './model'
5
3
  export const configSchema = ConfigurationSchema('GridBookmarkWidget', {})
package/src/index.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { lazy } from 'react'
2
2
 
3
- import BookmarkIcon from '@material-ui/icons/Bookmark'
4
- import BookmarksIcon from '@material-ui/icons/Bookmarks'
3
+ import BookmarkIcon from '@mui/icons-material/Bookmark'
4
+ import BookmarksIcon from '@mui/icons-material/Bookmarks'
5
5
 
6
6
  import WidgetType from '@jbrowse/core/pluggableElementTypes/WidgetType'
7
7
  import Plugin from '@jbrowse/core/Plugin'
@@ -1,302 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
-
7
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
-
9
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
-
11
- var _react = _interopRequireDefault(require("react"));
12
-
13
- var _fileSaver = require("file-saver");
14
-
15
- var _react2 = require("@testing-library/react");
16
-
17
- var _rootModel = require("@jbrowse/web/src/rootModel");
18
-
19
- var _GridBookmarkWidget = _interopRequireDefault(require("./GridBookmarkWidget"));
20
-
21
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
22
-
23
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
24
-
25
- jest.mock('@jbrowse/web/src/makeWorkerInstance', function () {
26
- return function () {};
27
- });
28
- jest.mock('file-saver', function () {
29
- return _objectSpread(_objectSpread({}, jest.requireActual('file-saver')), {}, {
30
- saveAs: jest.fn()
31
- });
32
- });
33
- describe('<GridBookmarkWidget />', function () {
34
- var session;
35
- var model;
36
- beforeEach(function () {
37
- session = (0, _rootModel.createTestSession)();
38
- model = session.addWidget('GridBookmarkWidget', 'gridBookmarkWidget');
39
-
40
- _fileSaver.saveAs.mockReset();
41
- });
42
- afterEach(_react2.cleanup);
43
- it('renders empty with no bookmarks', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
44
- var _render, findByText;
45
-
46
- return _regenerator.default.wrap(function _callee$(_context) {
47
- while (1) {
48
- switch (_context.prev = _context.next) {
49
- case 0:
50
- _render = (0, _react2.render)( /*#__PURE__*/_react.default.createElement(_GridBookmarkWidget.default, {
51
- model: model
52
- })), findByText = _render.findByText;
53
- _context.t0 = expect;
54
- _context.next = 4;
55
- return findByText('No rows');
56
-
57
- case 4:
58
- _context.t1 = _context.sent;
59
- (0, _context.t0)(_context.t1).toBeTruthy();
60
-
61
- case 6:
62
- case "end":
63
- return _context.stop();
64
- }
65
- }
66
- }, _callee);
67
- })));
68
- it('renders bookmarks correctly', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
69
- var _render2, findByText;
70
-
71
- return _regenerator.default.wrap(function _callee2$(_context2) {
72
- while (1) {
73
- switch (_context2.prev = _context2.next) {
74
- case 0:
75
- model.addBookmark({
76
- refName: 'chr1',
77
- start: 1,
78
- end: 12,
79
- assemblyName: 'hg19'
80
- });
81
- _render2 = (0, _react2.render)( /*#__PURE__*/_react.default.createElement(_GridBookmarkWidget.default, {
82
- model: model
83
- })), findByText = _render2.findByText;
84
- _context2.t0 = expect;
85
- _context2.next = 5;
86
- return findByText('chr1:2..12');
87
-
88
- case 5:
89
- _context2.t1 = _context2.sent;
90
- (0, _context2.t0)(_context2.t1).toBeTruthy();
91
-
92
- case 7:
93
- case "end":
94
- return _context2.stop();
95
- }
96
- }
97
- }, _callee2);
98
- })));
99
- it('deletes individual bookmarks correctly', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
100
- var _render3, findByText, findByTestId;
101
-
102
- return _regenerator.default.wrap(function _callee3$(_context3) {
103
- while (1) {
104
- switch (_context3.prev = _context3.next) {
105
- case 0:
106
- model.addBookmark({
107
- refName: 'chr1',
108
- start: 1,
109
- end: 12,
110
- assemblyName: 'hg19'
111
- });
112
- _render3 = (0, _react2.render)( /*#__PURE__*/_react.default.createElement(_GridBookmarkWidget.default, {
113
- model: model
114
- })), findByText = _render3.findByText, findByTestId = _render3.findByTestId;
115
- _context3.t0 = _react2.fireEvent;
116
- _context3.next = 5;
117
- return findByTestId('deleteBookmark');
118
-
119
- case 5:
120
- _context3.t1 = _context3.sent;
121
-
122
- _context3.t0.click.call(_context3.t0, _context3.t1);
123
-
124
- _context3.t2 = _react2.fireEvent;
125
- _context3.next = 10;
126
- return findByText('Confirm');
127
-
128
- case 10:
129
- _context3.t3 = _context3.sent;
130
-
131
- _context3.t2.click.call(_context3.t2, _context3.t3);
132
-
133
- _context3.t4 = expect;
134
- _context3.next = 15;
135
- return findByText('No rows');
136
-
137
- case 15:
138
- _context3.t5 = _context3.sent;
139
- (0, _context3.t4)(_context3.t5).toBeTruthy();
140
-
141
- case 17:
142
- case "end":
143
- return _context3.stop();
144
- }
145
- }
146
- }, _callee3);
147
- })));
148
- it('clears all bookmarks correctly', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
149
- var _render4, findByText;
150
-
151
- return _regenerator.default.wrap(function _callee4$(_context4) {
152
- while (1) {
153
- switch (_context4.prev = _context4.next) {
154
- case 0:
155
- model.addBookmark({
156
- refName: 'chr1',
157
- start: 1,
158
- end: 12,
159
- assemblyName: 'hg19'
160
- });
161
- _render4 = (0, _react2.render)( /*#__PURE__*/_react.default.createElement(_GridBookmarkWidget.default, {
162
- model: model
163
- })), findByText = _render4.findByText;
164
- _context4.t0 = _react2.fireEvent;
165
- _context4.next = 5;
166
- return findByText('Clear');
167
-
168
- case 5:
169
- _context4.t1 = _context4.sent;
170
-
171
- _context4.t0.click.call(_context4.t0, _context4.t1);
172
-
173
- _context4.t2 = _react2.fireEvent;
174
- _context4.next = 10;
175
- return findByText('Confirm');
176
-
177
- case 10:
178
- _context4.t3 = _context4.sent;
179
-
180
- _context4.t2.click.call(_context4.t2, _context4.t3);
181
-
182
- _context4.t4 = expect;
183
- _context4.next = 15;
184
- return findByText('No rows');
185
-
186
- case 15:
187
- _context4.t5 = _context4.sent;
188
- (0, _context4.t4)(_context4.t5).toBeTruthy();
189
-
190
- case 17:
191
- case "end":
192
- return _context4.stop();
193
- }
194
- }
195
- }, _callee4);
196
- })));
197
- it('downloads a BED file correctly', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
198
- var _render5, findByText, findByTestId, blob;
199
-
200
- return _regenerator.default.wrap(function _callee5$(_context5) {
201
- while (1) {
202
- switch (_context5.prev = _context5.next) {
203
- case 0:
204
- model.addBookmark({
205
- refName: 'chr1',
206
- start: 1,
207
- end: 12,
208
- assemblyName: 'hg19'
209
- });
210
- _render5 = (0, _react2.render)( /*#__PURE__*/_react.default.createElement(_GridBookmarkWidget.default, {
211
- model: model
212
- })), findByText = _render5.findByText, findByTestId = _render5.findByTestId;
213
- _context5.t0 = _react2.fireEvent;
214
- _context5.next = 5;
215
- return findByText('Download');
216
-
217
- case 5:
218
- _context5.t1 = _context5.sent;
219
-
220
- _context5.t0.click.call(_context5.t0, _context5.t1);
221
-
222
- _context5.t2 = _react2.fireEvent;
223
- _context5.next = 10;
224
- return findByTestId('dialogDownload');
225
-
226
- case 10:
227
- _context5.t3 = _context5.sent;
228
-
229
- _context5.t2.click.call(_context5.t2, _context5.t3);
230
-
231
- blob = new Blob([''], {
232
- type: 'text/x-bed;charset=utf-8'
233
- });
234
- expect(_fileSaver.saveAs).toHaveBeenCalledWith(blob, 'jbrowse_bookmarks_hg19.bed');
235
-
236
- case 14:
237
- case "end":
238
- return _context5.stop();
239
- }
240
- }
241
- }, _callee5);
242
- })));
243
- it('downloads a TSV file correctly', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
244
- var _render6, findByText, findByTestId, getByRole, listbox, blob;
245
-
246
- return _regenerator.default.wrap(function _callee6$(_context6) {
247
- while (1) {
248
- switch (_context6.prev = _context6.next) {
249
- case 0:
250
- model.addBookmark({
251
- refName: 'chr1',
252
- start: 1,
253
- end: 12,
254
- assemblyName: 'hg19'
255
- });
256
- _render6 = (0, _react2.render)( /*#__PURE__*/_react.default.createElement(_GridBookmarkWidget.default, {
257
- model: model
258
- })), findByText = _render6.findByText, findByTestId = _render6.findByTestId, getByRole = _render6.getByRole;
259
- _context6.t0 = _react2.fireEvent;
260
- _context6.next = 5;
261
- return findByText('Download');
262
-
263
- case 5:
264
- _context6.t1 = _context6.sent;
265
-
266
- _context6.t0.click.call(_context6.t0, _context6.t1);
267
-
268
- _context6.t2 = _react2.fireEvent;
269
- _context6.next = 10;
270
- return findByText('BED');
271
-
272
- case 10:
273
- _context6.t3 = _context6.sent;
274
-
275
- _context6.t2.mouseDown.call(_context6.t2, _context6.t3);
276
-
277
- listbox = (0, _react2.within)(getByRole('listbox'));
278
-
279
- _react2.fireEvent.click(listbox.getByText('TSV'));
280
-
281
- _context6.t4 = _react2.fireEvent;
282
- _context6.next = 17;
283
- return findByTestId('dialogDownload');
284
-
285
- case 17:
286
- _context6.t5 = _context6.sent;
287
-
288
- _context6.t4.click.call(_context6.t4, _context6.t5);
289
-
290
- blob = new Blob([''], {
291
- type: 'text/tab-separated-values;charset=utf-8'
292
- });
293
- expect(_fileSaver.saveAs).toHaveBeenCalledWith(blob, 'jbrowse_bookmarks.tsv');
294
-
295
- case 21:
296
- case "end":
297
- return _context6.stop();
298
- }
299
- }
300
- }, _callee6);
301
- })));
302
- });
@@ -1,35 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _PluginManager = _interopRequireDefault(require("@jbrowse/core/PluginManager"));
6
-
7
- var _pluginConfig = _interopRequireDefault(require("@jbrowse/plugin-config"));
8
-
9
- var _mobxStateTree = require("mobx-state-tree");
10
-
11
- var _ = _interopRequireDefault(require("."));
12
-
13
- describe('Grid bookmark', function () {
14
- var pluginManager;
15
- beforeAll(function () {
16
- var originalConsoleWarn = console.warn;
17
- console.warn = jest.fn();
18
- pluginManager = new _PluginManager.default([new _.default(), new _pluginConfig.default()]);
19
- pluginManager.createPluggableElements();
20
- pluginManager.configure();
21
- console.warn = originalConsoleWarn;
22
- });
23
- it("won't add if already added", function () {
24
- expect(function () {
25
- return pluginManager.addPlugin(new _.default());
26
- }).toThrow(/JBrowse already configured, cannot add plugins/);
27
- });
28
- it('adds grid bookmark widget', function () {
29
- var GridBookmarkWidget = pluginManager.getWidgetType('GridBookmarkWidget');
30
- var config = GridBookmarkWidget.configSchema.create({
31
- type: 'GridBookmarkWidget'
32
- });
33
- expect((0, _mobxStateTree.getSnapshot)(config)).toMatchSnapshot();
34
- });
35
- });