@jbrowse/plugin-grid-bookmark 2.2.0 → 2.2.2
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/GridBookmarkWidget.js +3 -2
- package/dist/GridBookmarkWidget/components/GridBookmarkWidget.js.map +1 -1
- package/dist/GridBookmarkWidget/model.d.ts +2 -2
- package/dist/GridBookmarkWidget/types.d.ts +1 -4
- package/dist/GridBookmarkWidget/utils.js +20 -36
- package/dist/GridBookmarkWidget/utils.js.map +1 -1
- package/esm/GridBookmarkWidget/components/GridBookmarkWidget.js +3 -2
- package/esm/GridBookmarkWidget/components/GridBookmarkWidget.js.map +1 -1
- package/esm/GridBookmarkWidget/model.d.ts +2 -2
- package/esm/GridBookmarkWidget/types.d.ts +1 -4
- package/esm/GridBookmarkWidget/utils.js +21 -37
- package/esm/GridBookmarkWidget/utils.js.map +1 -1
- package/package.json +3 -3
- package/src/GridBookmarkWidget/components/GridBookmarkWidget.tsx +3 -2
- package/src/GridBookmarkWidget/types.ts +1 -5
- package/src/GridBookmarkWidget/utils.ts +31 -55
- package/src/__snapshots__/index.test.js.snap +1 -1
|
@@ -72,9 +72,10 @@ const BookmarkGrid = (0, mobx_react_1.observer)(({ model }) => {
|
|
|
72
72
|
width: Math.max(...bookmarkRows.map(row => measure(row, 'locString'))),
|
|
73
73
|
renderCell: (params) => {
|
|
74
74
|
const { value } = params;
|
|
75
|
-
return (react_1.default.createElement(material_1.Link, { className: classes.link, onClick: (event) => {
|
|
76
|
-
(0, utils_1.navToBookmark)(value, views, model);
|
|
75
|
+
return (react_1.default.createElement(material_1.Link, { className: classes.link, onClick: async (event) => {
|
|
77
76
|
event.preventDefault();
|
|
77
|
+
// has own error handling
|
|
78
|
+
await (0, utils_1.navToBookmark)(value, views, model);
|
|
78
79
|
} }, value));
|
|
79
80
|
},
|
|
80
81
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridBookmarkWidget.js","sourceRoot":"","sources":["../../../src/GridBookmarkWidget/components/GridBookmarkWidget.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAuC;AACvC,2CAAqC;AACrC,4CAA4D;AAC5D,uCAA0C;AAC1C,kDAA2D;AAC3D,6CAA+E;AAC/E,wEAAmD;AAEnD,SAAS;AACT,0EAAiD;AACjD,sEAAmD;AACnD,4EAAmD;AACnD,wEAA+C;AAC/C,sEAA6C;AAE7C,oCAAwC;AAExC,MAAM,SAAS,GAAG,IAAA,gBAAU,GAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACpC,IAAI,EAAE;QACJ,MAAM,EAAE,SAAS;KAClB;CACF,CAAC,CAAC,CAAA;AAEH,mEAAmE;AACnE,qBAAqB;AACrB,8DAA8D;AAC9D,MAAM,OAAO,GAAG,CAAC,GAAQ,EAAE,GAAW,EAAE,EAAE,CACxC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAA,kBAAW,EAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;AAEtE,MAAM,YAAY,GAAG,IAAA,qBAAQ,EAAC,CAAC,EAAE,KAAK,EAAgC,EAAE,EAAE;IACxE,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,GAAU,CAAA;IAChE,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAA;IACrD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,iBAAU,EAAC,KAAK,CAAC,CAAA;IAEnC,MAAM,YAAY,GAAG,iBAAiB;SACnC,MAAM,CACL,CAAC,CAAC,EAAE,CAAC,gBAAgB,KAAK,KAAK,IAAI,CAAC,CAAC,YAAY,KAAK,gBAAgB,CACvE;SACA,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAA;QACxC,OAAO;YACL,GAAG,MAAM;YACT,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,IAAA,wBAAiB,EAC1B,gBAAgB,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC3C;SACF,CAAA;IACH,CAAC,CAAC,CAAA;IAEJ,MAAM,OAAO,GAAG;QACd;YACE,KAAK,EAAE,WAAW;YAClB,UAAU,EAAE,eAAe;YAC3B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;YACtE,UAAU,EAAE,CAAC,MAAsB,EAAE,EAAE;gBACrC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;gBACxB,OAAO,CACL,8BAAC,eAAI,IACH,SAAS,EAAE,OAAO,CAAC,IAAI,EACvB,OAAO,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"GridBookmarkWidget.js","sourceRoot":"","sources":["../../../src/GridBookmarkWidget/components/GridBookmarkWidget.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAuC;AACvC,2CAAqC;AACrC,4CAA4D;AAC5D,uCAA0C;AAC1C,kDAA2D;AAC3D,6CAA+E;AAC/E,wEAAmD;AAEnD,SAAS;AACT,0EAAiD;AACjD,sEAAmD;AACnD,4EAAmD;AACnD,wEAA+C;AAC/C,sEAA6C;AAE7C,oCAAwC;AAExC,MAAM,SAAS,GAAG,IAAA,gBAAU,GAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACpC,IAAI,EAAE;QACJ,MAAM,EAAE,SAAS;KAClB;CACF,CAAC,CAAC,CAAA;AAEH,mEAAmE;AACnE,qBAAqB;AACrB,8DAA8D;AAC9D,MAAM,OAAO,GAAG,CAAC,GAAQ,EAAE,GAAW,EAAE,EAAE,CACxC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAA,kBAAW,EAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;AAEtE,MAAM,YAAY,GAAG,IAAA,qBAAQ,EAAC,CAAC,EAAE,KAAK,EAAgC,EAAE,EAAE;IACxE,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,GAAU,CAAA;IAChE,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAA;IACrD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,iBAAU,EAAC,KAAK,CAAC,CAAA;IAEnC,MAAM,YAAY,GAAG,iBAAiB;SACnC,MAAM,CACL,CAAC,CAAC,EAAE,CAAC,gBAAgB,KAAK,KAAK,IAAI,CAAC,CAAC,YAAY,KAAK,gBAAgB,CACvE;SACA,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAA;QACxC,OAAO;YACL,GAAG,MAAM;YACT,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,IAAA,wBAAiB,EAC1B,gBAAgB,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC3C;SACF,CAAA;IACH,CAAC,CAAC,CAAA;IAEJ,MAAM,OAAO,GAAG;QACd;YACE,KAAK,EAAE,WAAW;YAClB,UAAU,EAAE,eAAe;YAC3B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;YACtE,UAAU,EAAE,CAAC,MAAsB,EAAE,EAAE;gBACrC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;gBACxB,OAAO,CACL,8BAAC,eAAI,IACH,SAAS,EAAE,OAAO,CAAC,IAAI,EACvB,OAAO,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;wBACrB,KAAK,CAAC,cAAc,EAAE,CAAA;wBACtB,yBAAyB;wBACzB,MAAM,IAAA,qBAAa,EAAC,KAAe,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;oBACpD,CAAC,IAEA,KAAK,CACD,CACR,CAAA;YACH,CAAC;SACF;QACD;YACE,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,IAAI,CAAC,GAAG,CACb,GAAG,EACH,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAC5D;YACD,QAAQ,EAAE,IAAI;SACf;QACD;YACE,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,CAAC,MAAsB,EAAE,EAAE;gBACrC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;gBACxB,OAAO,CACL,8BAAC,qBAAU,mBACG,gBAAgB,gBACjB,QAAQ,EACnB,OAAO,EAAE,GAAG,EAAE;wBACZ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;4BACzC,kBAAkB,CAAC,CAAC,KAAK,CAAC,CAAA;yBAC3B;oBACH,CAAC;oBAED,8BAAC,gBAAU,OAAG,CACH,CACd,CAAA;YACH,CAAC;SACF;KACF,CAAA;IAED,OAAO,CACL;QACE,8BAAC,sBAAQ,IACP,OAAO,EAAC,SAAS,EACjB,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,IAAI,CAAC,EAAE;gBACvB,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAAA;gBAC1B,KAAK,CAAC,mBAAmB,CAAC,EAAY,EAAE,KAAe,CAAC,CAAA;YAC1D,CAAC,EACD,uBAAuB,SACvB;QAEF,8BAAC,wBAAoB,IACnB,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAC5C,CACD,CACJ,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,SAAS,kBAAkB,CAAC,EAAE,KAAK,EAAgC;IACjE,MAAM,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAA;IAElC,OAAO,CACL;QACE,8BAAC,0BAAgB,IAAC,KAAK,EAAE,KAAK,GAAI;QAClC,8BAAC,2BAAiB,IAAC,KAAK,EAAE,KAAK,GAAI;QACnC,8BAAC,yBAAe,IAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,gBAAgB,GAAI;QACjE,8BAAC,wBAAc,IAAC,KAAK,EAAE,KAAK,GAAI;QAEhC,uCAAK,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACxB,8BAAC,qBAAU;;gBACsB,oDAAkB;sDAEtC,CACT;QACN,uCAAK,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;YACxC,8BAAC,YAAY,IAAC,KAAK,EAAE,KAAK,GAAI,CAC1B,CACL,CACJ,CAAA;AACH,CAAC;AAED,kBAAe,IAAA,qBAAQ,EAAC,kBAAkB,CAAC,CAAA"}
|
|
@@ -31,5 +31,5 @@ export default function f(pluginManager: PluginManager): import("mobx-state-tree
|
|
|
31
31
|
readonly selectedAssembly: string;
|
|
32
32
|
readonly assemblies: string[];
|
|
33
33
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
34
|
-
export
|
|
35
|
-
export
|
|
34
|
+
export type GridBookmarkStateModel = ReturnType<typeof f>;
|
|
35
|
+
export type GridBookmarkModel = Instance<GridBookmarkStateModel>;
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export interface NavigableViewModel extends AbstractViewModel {
|
|
3
|
-
navToLocString: Function;
|
|
4
|
-
}
|
|
1
|
+
import { Region } from '@jbrowse/core/util/types';
|
|
5
2
|
export interface LabeledRegion extends Region {
|
|
6
3
|
label: string;
|
|
7
4
|
}
|
|
@@ -4,40 +4,26 @@ exports.downloadBookmarkFile = exports.navToBookmark = void 0;
|
|
|
4
4
|
const file_saver_1 = require("file-saver");
|
|
5
5
|
const util_1 = require("@jbrowse/core/util");
|
|
6
6
|
async function navToBookmark(locString, views, model) {
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
//
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const { refName } = loc;
|
|
22
|
-
const { regions } = assembly;
|
|
23
|
-
const canonicalRefName = assembly.getCanonicalRefName(refName);
|
|
24
|
-
let newDisplayedRegion;
|
|
25
|
-
if (regions) {
|
|
26
|
-
newDisplayedRegion = regions.find(region => region.refName === canonicalRefName);
|
|
27
|
-
}
|
|
28
|
-
const view = session.addView('LinearGenomeView', {
|
|
29
|
-
displayName: selectedAssembly,
|
|
30
|
-
});
|
|
31
|
-
await (0, util_1.when)(() => view.initialized);
|
|
32
|
-
view.setDisplayedRegions([
|
|
33
|
-
JSON.parse(JSON.stringify(newDisplayedRegion)),
|
|
34
|
-
]);
|
|
35
|
-
view.navToLocString(locString);
|
|
36
|
-
}
|
|
37
|
-
catch (e) {
|
|
38
|
-
session.notify(`${e}`, 'error');
|
|
39
|
-
}
|
|
7
|
+
const session = (0, util_1.getSession)(model);
|
|
8
|
+
try {
|
|
9
|
+
// search for exact match to an lgv that this bookmark widget launched, or
|
|
10
|
+
// any lgv that looks like it is relevant to what we are browsing
|
|
11
|
+
const { selectedAssembly } = model;
|
|
12
|
+
const newViewId = `${model.id}_${selectedAssembly}`;
|
|
13
|
+
let view = (views.find(v => v.type === 'LinearGenomeView' && v.id === newViewId) ||
|
|
14
|
+
views.find(v => v.type === 'LinearGenomeView' &&
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
v.assemblyNames[0] === selectedAssembly));
|
|
17
|
+
if (!view) {
|
|
18
|
+
view = session.addView('LinearGenomeView', {
|
|
19
|
+
id: newViewId,
|
|
20
|
+
});
|
|
40
21
|
}
|
|
22
|
+
await view.navToLocString(locString, selectedAssembly);
|
|
23
|
+
}
|
|
24
|
+
catch (e) {
|
|
25
|
+
console.error(e);
|
|
26
|
+
session.notify(`${e}`, 'error');
|
|
41
27
|
}
|
|
42
28
|
}
|
|
43
29
|
exports.navToBookmark = navToBookmark;
|
|
@@ -53,9 +39,7 @@ function downloadBookmarkFile(bookmarkedRegions, fileFormat, model) {
|
|
|
53
39
|
const locString = (0, util_1.assembleLocString)(b);
|
|
54
40
|
if (fileFormat === 'BED') {
|
|
55
41
|
if (b.assemblyName === selectedAssembly || selectedAssembly === 'all') {
|
|
56
|
-
|
|
57
|
-
// according to the new spec: https://github.com/samtools/hts-specs/pull/570
|
|
58
|
-
return `${b.refName}\t${b.start}\t${b.end}\t${labelVal.slice(0, 255)}\n`;
|
|
42
|
+
return `${b.refName}\t${b.start}\t${b.end}\t${labelVal}\n`;
|
|
59
43
|
}
|
|
60
44
|
return '';
|
|
61
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/GridBookmarkWidget/utils.ts"],"names":[],"mappings":";;;AAAA,2CAAmC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/GridBookmarkWidget/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,9 +44,10 @@ const BookmarkGrid = observer(({ model }) => {
|
|
|
44
44
|
width: Math.max(...bookmarkRows.map(row => measure(row, 'locString'))),
|
|
45
45
|
renderCell: (params) => {
|
|
46
46
|
const { value } = params;
|
|
47
|
-
return (React.createElement(Link, { className: classes.link, onClick: (event) => {
|
|
48
|
-
navToBookmark(value, views, model);
|
|
47
|
+
return (React.createElement(Link, { className: classes.link, onClick: async (event) => {
|
|
49
48
|
event.preventDefault();
|
|
49
|
+
// has own error handling
|
|
50
|
+
await navToBookmark(value, views, model);
|
|
50
51
|
} }, value));
|
|
51
52
|
},
|
|
52
53
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridBookmarkWidget.js","sourceRoot":"","sources":["../../../src/GridBookmarkWidget/components/GridBookmarkWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAC/E,OAAO,UAAU,MAAM,4BAA4B,CAAA;AAEnD,SAAS;AACT,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AACjD,OAAO,oBAAoB,MAAM,kBAAkB,CAAA;AACnD,OAAO,iBAAiB,MAAM,qBAAqB,CAAA;AACnD,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAC/C,OAAO,cAAc,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACpC,IAAI,EAAE;QACJ,MAAM,EAAE,SAAS;KAClB;CACF,CAAC,CAAC,CAAA;AAEH,mEAAmE;AACnE,qBAAqB;AACrB,8DAA8D;AAC9D,MAAM,OAAO,GAAG,CAAC,GAAQ,EAAE,GAAW,EAAE,EAAE,CACxC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;AAEtE,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAgC,EAAE,EAAE;IACxE,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,EAAU,CAAA;IAChE,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAA;IACrD,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IAEnC,MAAM,YAAY,GAAG,iBAAiB;SACnC,MAAM,CACL,CAAC,CAAC,EAAE,CAAC,gBAAgB,KAAK,KAAK,IAAI,CAAC,CAAC,YAAY,KAAK,gBAAgB,CACvE;SACA,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAA;QACxC,OAAO;YACL,GAAG,MAAM;YACT,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,iBAAiB,CAC1B,gBAAgB,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC3C;SACF,CAAA;IACH,CAAC,CAAC,CAAA;IAEJ,MAAM,OAAO,GAAG;QACd;YACE,KAAK,EAAE,WAAW;YAClB,UAAU,EAAE,eAAe;YAC3B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;YACtE,UAAU,EAAE,CAAC,MAAsB,EAAE,EAAE;gBACrC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;gBACxB,OAAO,CACL,oBAAC,IAAI,IACH,SAAS,EAAE,OAAO,CAAC,IAAI,EACvB,OAAO,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"GridBookmarkWidget.js","sourceRoot":"","sources":["../../../src/GridBookmarkWidget/components/GridBookmarkWidget.tsx"],"names":[],"mappings":"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"}
|
|
@@ -31,5 +31,5 @@ export default function f(pluginManager: PluginManager): import("mobx-state-tree
|
|
|
31
31
|
readonly selectedAssembly: string;
|
|
32
32
|
readonly assemblies: string[];
|
|
33
33
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
34
|
-
export
|
|
35
|
-
export
|
|
34
|
+
export type GridBookmarkStateModel = ReturnType<typeof f>;
|
|
35
|
+
export type GridBookmarkModel = Instance<GridBookmarkStateModel>;
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export interface NavigableViewModel extends AbstractViewModel {
|
|
3
|
-
navToLocString: Function;
|
|
4
|
-
}
|
|
1
|
+
import { Region } from '@jbrowse/core/util/types';
|
|
5
2
|
export interface LabeledRegion extends Region {
|
|
6
3
|
label: string;
|
|
7
4
|
}
|
|
@@ -1,40 +1,26 @@
|
|
|
1
1
|
import { saveAs } from 'file-saver';
|
|
2
|
-
import { getSession,
|
|
2
|
+
import { getSession, assembleLocString } from '@jbrowse/core/util';
|
|
3
3
|
export async function navToBookmark(locString, views, model) {
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const { refName } = loc;
|
|
19
|
-
const { regions } = assembly;
|
|
20
|
-
const canonicalRefName = assembly.getCanonicalRefName(refName);
|
|
21
|
-
let newDisplayedRegion;
|
|
22
|
-
if (regions) {
|
|
23
|
-
newDisplayedRegion = regions.find(region => region.refName === canonicalRefName);
|
|
24
|
-
}
|
|
25
|
-
const view = session.addView('LinearGenomeView', {
|
|
26
|
-
displayName: selectedAssembly,
|
|
27
|
-
});
|
|
28
|
-
await when(() => view.initialized);
|
|
29
|
-
view.setDisplayedRegions([
|
|
30
|
-
JSON.parse(JSON.stringify(newDisplayedRegion)),
|
|
31
|
-
]);
|
|
32
|
-
view.navToLocString(locString);
|
|
33
|
-
}
|
|
34
|
-
catch (e) {
|
|
35
|
-
session.notify(`${e}`, 'error');
|
|
36
|
-
}
|
|
4
|
+
const session = getSession(model);
|
|
5
|
+
try {
|
|
6
|
+
// search for exact match to an lgv that this bookmark widget launched, or
|
|
7
|
+
// any lgv that looks like it is relevant to what we are browsing
|
|
8
|
+
const { selectedAssembly } = model;
|
|
9
|
+
const newViewId = `${model.id}_${selectedAssembly}`;
|
|
10
|
+
let view = (views.find(v => v.type === 'LinearGenomeView' && v.id === newViewId) ||
|
|
11
|
+
views.find(v => v.type === 'LinearGenomeView' &&
|
|
12
|
+
// @ts-ignore
|
|
13
|
+
v.assemblyNames[0] === selectedAssembly));
|
|
14
|
+
if (!view) {
|
|
15
|
+
view = session.addView('LinearGenomeView', {
|
|
16
|
+
id: newViewId,
|
|
17
|
+
});
|
|
37
18
|
}
|
|
19
|
+
await view.navToLocString(locString, selectedAssembly);
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
console.error(e);
|
|
23
|
+
session.notify(`${e}`, 'error');
|
|
38
24
|
}
|
|
39
25
|
}
|
|
40
26
|
export function downloadBookmarkFile(bookmarkedRegions, fileFormat, model) {
|
|
@@ -49,9 +35,7 @@ export function downloadBookmarkFile(bookmarkedRegions, fileFormat, model) {
|
|
|
49
35
|
const locString = assembleLocString(b);
|
|
50
36
|
if (fileFormat === 'BED') {
|
|
51
37
|
if (b.assemblyName === selectedAssembly || selectedAssembly === 'all') {
|
|
52
|
-
|
|
53
|
-
// according to the new spec: https://github.com/samtools/hts-specs/pull/570
|
|
54
|
-
return `${b.refName}\t${b.start}\t${b.end}\t${labelVal.slice(0, 255)}\n`;
|
|
38
|
+
return `${b.refName}\t${b.start}\t${b.end}\t${labelVal}\n`;
|
|
55
39
|
}
|
|
56
40
|
return '';
|
|
57
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/GridBookmarkWidget/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/GridBookmarkWidget/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-grid-bookmark",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.2",
|
|
4
4
|
"description": "JBrowse 2 grid bookmark widget",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"build": "npm-run-all build:*",
|
|
28
28
|
"test": "cd ../..; jest plugins/grid-bookmark",
|
|
29
29
|
"prepublishOnly": "yarn test",
|
|
30
|
-
"prepack": "yarn build
|
|
30
|
+
"prepack": "yarn build && yarn useDist",
|
|
31
31
|
"postpack": "yarn useSrc",
|
|
32
32
|
"useDist": "node ../../scripts/useDist.js",
|
|
33
33
|
"useSrc": "node ../../scripts/useSrc.js",
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"distModule": "esm/index.js",
|
|
60
60
|
"srcModule": "src/index.ts",
|
|
61
61
|
"module": "esm/index.js",
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "abbc00e8feedbc58de84a7a3e735ec0224909b29"
|
|
63
63
|
}
|
|
@@ -59,9 +59,10 @@ const BookmarkGrid = observer(({ model }: { model: GridBookmarkModel }) => {
|
|
|
59
59
|
return (
|
|
60
60
|
<Link
|
|
61
61
|
className={classes.link}
|
|
62
|
-
onClick={
|
|
63
|
-
navToBookmark(value as string, views, model)
|
|
62
|
+
onClick={async event => {
|
|
64
63
|
event.preventDefault()
|
|
64
|
+
// has own error handling
|
|
65
|
+
await navToBookmark(value as string, views, model)
|
|
65
66
|
}}
|
|
66
67
|
>
|
|
67
68
|
{value}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export interface NavigableViewModel extends AbstractViewModel {
|
|
4
|
-
navToLocString: Function
|
|
5
|
-
}
|
|
1
|
+
import { Region } from '@jbrowse/core/util/types'
|
|
6
2
|
|
|
7
3
|
export interface LabeledRegion extends Region {
|
|
8
4
|
label: string
|
|
@@ -1,65 +1,46 @@
|
|
|
1
1
|
import { saveAs } from 'file-saver'
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
getSession,
|
|
5
|
-
parseLocString,
|
|
6
|
-
when,
|
|
7
|
-
assembleLocString,
|
|
8
|
-
} from '@jbrowse/core/util'
|
|
2
|
+
import { getSession, assembleLocString } from '@jbrowse/core/util'
|
|
9
3
|
import { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'
|
|
10
4
|
import { AbstractViewModel } from '@jbrowse/core/util/types'
|
|
11
5
|
|
|
6
|
+
// locals
|
|
12
7
|
import { GridBookmarkModel } from './model'
|
|
13
|
-
import {
|
|
8
|
+
import { LabeledRegion } from './types'
|
|
9
|
+
|
|
10
|
+
type LGV = LinearGenomeViewModel
|
|
11
|
+
|
|
12
|
+
type MaybeLGV = LGV | undefined
|
|
14
13
|
|
|
15
14
|
export async function navToBookmark(
|
|
16
15
|
locString: string,
|
|
17
16
|
views: AbstractViewModel[],
|
|
18
17
|
model: GridBookmarkModel,
|
|
19
18
|
) {
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
try {
|
|
36
|
-
const loc = parseLocString(locString, refName =>
|
|
37
|
-
session.assemblyManager.isValidRefName(refName, selectedAssembly),
|
|
38
|
-
)
|
|
39
|
-
const { refName } = loc
|
|
40
|
-
const { regions } = assembly
|
|
41
|
-
const canonicalRefName = assembly.getCanonicalRefName(refName)
|
|
42
|
-
|
|
43
|
-
let newDisplayedRegion
|
|
44
|
-
if (regions) {
|
|
45
|
-
newDisplayedRegion = regions.find(
|
|
46
|
-
region => region.refName === canonicalRefName,
|
|
47
|
-
)
|
|
48
|
-
}
|
|
19
|
+
const session = getSession(model)
|
|
20
|
+
try {
|
|
21
|
+
// search for exact match to an lgv that this bookmark widget launched, or
|
|
22
|
+
// any lgv that looks like it is relevant to what we are browsing
|
|
23
|
+
const { selectedAssembly } = model
|
|
24
|
+
const newViewId = `${model.id}_${selectedAssembly}`
|
|
25
|
+
let view = (views.find(
|
|
26
|
+
v => v.type === 'LinearGenomeView' && v.id === newViewId,
|
|
27
|
+
) ||
|
|
28
|
+
views.find(
|
|
29
|
+
v =>
|
|
30
|
+
v.type === 'LinearGenomeView' &&
|
|
31
|
+
// @ts-ignore
|
|
32
|
+
v.assemblyNames[0] === selectedAssembly,
|
|
33
|
+
)) as MaybeLGV
|
|
49
34
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
view.setDisplayedRegions([
|
|
56
|
-
JSON.parse(JSON.stringify(newDisplayedRegion)),
|
|
57
|
-
])
|
|
58
|
-
view.navToLocString(locString)
|
|
59
|
-
} catch (e) {
|
|
60
|
-
session.notify(`${e}`, 'error')
|
|
61
|
-
}
|
|
35
|
+
if (!view) {
|
|
36
|
+
view = session.addView('LinearGenomeView', {
|
|
37
|
+
id: newViewId,
|
|
38
|
+
}) as LGV
|
|
62
39
|
}
|
|
40
|
+
await view.navToLocString(locString, selectedAssembly)
|
|
41
|
+
} catch (e) {
|
|
42
|
+
console.error(e)
|
|
43
|
+
session.notify(`${e}`, 'error')
|
|
63
44
|
}
|
|
64
45
|
}
|
|
65
46
|
|
|
@@ -82,12 +63,7 @@ export function downloadBookmarkFile(
|
|
|
82
63
|
|
|
83
64
|
if (fileFormat === 'BED') {
|
|
84
65
|
if (b.assemblyName === selectedAssembly || selectedAssembly === 'all') {
|
|
85
|
-
|
|
86
|
-
// according to the new spec: https://github.com/samtools/hts-specs/pull/570
|
|
87
|
-
return `${b.refName}\t${b.start}\t${b.end}\t${labelVal.slice(
|
|
88
|
-
0,
|
|
89
|
-
255,
|
|
90
|
-
)}\n`
|
|
66
|
+
return `${b.refName}\t${b.start}\t${b.end}\t${labelVal}\n`
|
|
91
67
|
}
|
|
92
68
|
return ''
|
|
93
69
|
} else {
|