@jbrowse/plugin-grid-bookmark 1.7.10 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/GridBookmarkWidget/components/AssemblySelector.js +40 -74
- package/dist/GridBookmarkWidget/components/AssemblySelector.js.map +1 -0
- package/dist/GridBookmarkWidget/components/ClearBookmarks.js +79 -80
- package/dist/GridBookmarkWidget/components/ClearBookmarks.js.map +1 -0
- package/dist/GridBookmarkWidget/components/DeleteBookmark.js +47 -61
- package/dist/GridBookmarkWidget/components/DeleteBookmark.js.map +1 -0
- package/dist/GridBookmarkWidget/components/DownloadBookmarks.js +85 -104
- package/dist/GridBookmarkWidget/components/DownloadBookmarks.js.map +1 -0
- package/dist/GridBookmarkWidget/components/GridBookmarkWidget.js +159 -185
- package/dist/GridBookmarkWidget/components/GridBookmarkWidget.js.map +1 -0
- package/dist/GridBookmarkWidget/components/ImportBookmarks.js +164 -181
- package/dist/GridBookmarkWidget/components/ImportBookmarks.js.map +1 -0
- package/dist/GridBookmarkWidget/index.d.ts +0 -1
- package/dist/GridBookmarkWidget/index.js +10 -28
- package/dist/GridBookmarkWidget/index.js.map +1 -0
- package/dist/GridBookmarkWidget/model.js +77 -67
- package/dist/GridBookmarkWidget/model.js.map +1 -0
- package/dist/GridBookmarkWidget/types.js +2 -4
- package/dist/GridBookmarkWidget/types.js.map +1 -0
- package/dist/GridBookmarkWidget/utils.js +129 -129
- package/dist/GridBookmarkWidget/utils.js.map +1 -0
- package/dist/index.js +181 -187
- package/dist/index.js.map +1 -0
- package/esm/GridBookmarkWidget/components/AssemblySelector.d.ts +7 -0
- package/esm/GridBookmarkWidget/components/AssemblySelector.js +41 -0
- package/esm/GridBookmarkWidget/components/AssemblySelector.js.map +1 -0
- package/esm/GridBookmarkWidget/components/ClearBookmarks.d.ts +7 -0
- package/esm/GridBookmarkWidget/components/ClearBookmarks.js +40 -0
- package/esm/GridBookmarkWidget/components/ClearBookmarks.js.map +1 -0
- package/esm/GridBookmarkWidget/components/DeleteBookmark.d.ts +9 -0
- package/esm/GridBookmarkWidget/components/DeleteBookmark.js +46 -0
- package/esm/GridBookmarkWidget/components/DeleteBookmark.js.map +1 -0
- package/esm/GridBookmarkWidget/components/DownloadBookmarks.d.ts +7 -0
- package/esm/GridBookmarkWidget/components/DownloadBookmarks.js +50 -0
- package/esm/GridBookmarkWidget/components/DownloadBookmarks.js.map +1 -0
- package/esm/GridBookmarkWidget/components/GridBookmarkWidget.d.ts +7 -0
- package/esm/GridBookmarkWidget/components/GridBookmarkWidget.js +95 -0
- package/esm/GridBookmarkWidget/components/GridBookmarkWidget.js.map +1 -0
- package/esm/GridBookmarkWidget/components/ImportBookmarks.d.ts +8 -0
- package/esm/GridBookmarkWidget/components/ImportBookmarks.js +79 -0
- package/esm/GridBookmarkWidget/components/ImportBookmarks.js.map +1 -0
- package/esm/GridBookmarkWidget/index.d.ts +2 -0
- package/esm/GridBookmarkWidget/index.js +4 -0
- package/esm/GridBookmarkWidget/index.js.map +1 -0
- package/esm/GridBookmarkWidget/model.d.ts +35 -0
- package/esm/GridBookmarkWidget/model.js +54 -0
- package/esm/GridBookmarkWidget/model.js.map +1 -0
- package/esm/GridBookmarkWidget/types.d.ts +7 -0
- package/esm/GridBookmarkWidget/types.js +2 -0
- package/esm/GridBookmarkWidget/types.js.map +1 -0
- package/esm/GridBookmarkWidget/utils.d.ts +5 -0
- package/esm/GridBookmarkWidget/utils.js +77 -0
- package/esm/GridBookmarkWidget/utils.js.map +1 -0
- package/esm/index.d.ts +7 -0
- package/esm/index.js +116 -0
- package/esm/index.js.map +1 -0
- package/package.json +23 -15
- package/src/GridBookmarkWidget/components/AssemblySelector.tsx +9 -20
- package/src/GridBookmarkWidget/components/ClearBookmarks.tsx +6 -6
- package/src/GridBookmarkWidget/components/DeleteBookmark.tsx +5 -5
- package/src/GridBookmarkWidget/components/DownloadBookmarks.tsx +6 -6
- package/src/GridBookmarkWidget/components/GridBookmarkWidget.tsx +94 -111
- package/src/GridBookmarkWidget/components/ImportBookmarks.tsx +6 -6
- package/src/GridBookmarkWidget/index.js +0 -2
- package/src/index.ts +2 -2
- package/dist/GridBookmarkWidget/components/GridBookmarkWidget.test.js +0 -302
- 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
|
-
|
|
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 '@
|
|
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
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
.
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
-
|
|
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
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
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
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
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
|
-
|
|
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}
|
|
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
|
|
18
|
-
import
|
|
19
|
-
import
|
|
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 '@
|
|
4
|
-
import BookmarksIcon from '@
|
|
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
|
-
});
|
package/dist/index.test.js
DELETED
|
@@ -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
|
-
});
|