@jbrowse/product-core 2.6.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/LICENSE +201 -0
- package/dist/RootModel/BaseRootModel.d.ts +607 -0
- package/dist/RootModel/BaseRootModel.js +101 -0
- package/dist/RootModel/InternetAccounts.d.ts +31 -0
- package/dist/RootModel/InternetAccounts.js +99 -0
- package/dist/RootModel/index.d.ts +2 -0
- package/dist/RootModel/index.js +18 -0
- package/dist/Session/BaseSession.d.ts +99 -0
- package/dist/Session/BaseSession.js +112 -0
- package/dist/Session/Connections.d.ts +174 -0
- package/dist/Session/Connections.js +113 -0
- package/dist/Session/DialogQueue.d.ts +34 -0
- package/dist/Session/DialogQueue.js +55 -0
- package/dist/Session/DrawerWidgets.d.ts +88 -0
- package/dist/Session/DrawerWidgets.js +167 -0
- package/dist/Session/MultipleViews.d.ts +1798 -0
- package/dist/Session/MultipleViews.js +105 -0
- package/dist/Session/ReferenceManagement.d.ts +34 -0
- package/dist/Session/ReferenceManagement.js +91 -0
- package/dist/Session/SessionTracks.d.ts +1866 -0
- package/dist/Session/SessionTracks.js +75 -0
- package/dist/Session/Themes.d.ts +38 -0
- package/dist/Session/Themes.js +64 -0
- package/dist/Session/Tracks.d.ts +1821 -0
- package/dist/Session/Tracks.js +51 -0
- package/dist/Session/index.d.ts +10 -0
- package/dist/Session/index.js +26 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +19 -0
- package/dist/ui/AboutDialog.d.ts +6 -0
- package/dist/ui/AboutDialog.js +20 -0
- package/dist/ui/AboutDialogContents.d.ts +5 -0
- package/dist/ui/AboutDialogContents.js +70 -0
- package/dist/ui/FileInfoPanel.d.ts +5 -0
- package/dist/ui/FileInfoPanel.js +76 -0
- package/dist/ui/index.d.ts +1 -0
- package/dist/ui/index.js +17 -0
- package/esm/RootModel/BaseRootModel.d.ts +607 -0
- package/esm/RootModel/BaseRootModel.js +93 -0
- package/esm/RootModel/InternetAccounts.d.ts +31 -0
- package/esm/RootModel/InternetAccounts.js +95 -0
- package/esm/RootModel/index.d.ts +2 -0
- package/esm/RootModel/index.js +2 -0
- package/esm/Session/BaseSession.d.ts +99 -0
- package/esm/Session/BaseSession.js +103 -0
- package/esm/Session/Connections.d.ts +174 -0
- package/esm/Session/Connections.js +108 -0
- package/esm/Session/DialogQueue.d.ts +34 -0
- package/esm/Session/DialogQueue.js +50 -0
- package/esm/Session/DrawerWidgets.d.ts +88 -0
- package/esm/Session/DrawerWidgets.js +162 -0
- package/esm/Session/MultipleViews.d.ts +1798 -0
- package/esm/Session/MultipleViews.js +100 -0
- package/esm/Session/ReferenceManagement.d.ts +34 -0
- package/esm/Session/ReferenceManagement.js +86 -0
- package/esm/Session/SessionTracks.d.ts +1866 -0
- package/esm/Session/SessionTracks.js +70 -0
- package/esm/Session/Themes.d.ts +38 -0
- package/esm/Session/Themes.js +59 -0
- package/esm/Session/Tracks.d.ts +1821 -0
- package/esm/Session/Tracks.js +46 -0
- package/esm/Session/index.d.ts +10 -0
- package/esm/Session/index.js +10 -0
- package/esm/index.d.ts +3 -0
- package/esm/index.js +3 -0
- package/esm/ui/AboutDialog.d.ts +6 -0
- package/esm/ui/AboutDialog.js +13 -0
- package/esm/ui/AboutDialogContents.d.ts +5 -0
- package/esm/ui/AboutDialogContents.js +41 -0
- package/esm/ui/FileInfoPanel.d.ts +5 -0
- package/esm/ui/FileInfoPanel.js +47 -0
- package/esm/ui/index.d.ts +1 -0
- package/esm/ui/index.js +1 -0
- package/package.json +66 -0
- package/src/RootModel/BaseRootModel.ts +131 -0
- package/src/RootModel/InternetAccounts.ts +126 -0
- package/src/RootModel/index.ts +2 -0
- package/src/Session/BaseSession.ts +129 -0
- package/src/Session/Connections.ts +145 -0
- package/src/Session/DialogQueue.ts +63 -0
- package/src/Session/DrawerWidgets.ts +222 -0
- package/src/Session/MultipleViews.ts +151 -0
- package/src/Session/ReferenceManagement.ts +134 -0
- package/src/Session/SessionTracks.ts +98 -0
- package/src/Session/Themes.ts +85 -0
- package/src/Session/Tracks.ts +72 -0
- package/src/Session/index.ts +10 -0
- package/src/index.ts +3 -0
- package/src/ui/AboutDialog.tsx +31 -0
- package/src/ui/AboutDialogContents.tsx +88 -0
- package/src/ui/FileInfoPanel.tsx +75 -0
- package/src/ui/index.ts +1 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isSessionWithMultipleViews = exports.MultipleViewsSessionMixin = void 0;
|
|
4
|
+
const mobx_state_tree_1 = require("mobx-state-tree");
|
|
5
|
+
const configuration_1 = require("@jbrowse/core/configuration");
|
|
6
|
+
const DrawerWidgets_1 = require("./DrawerWidgets");
|
|
7
|
+
// locals
|
|
8
|
+
const BaseSession_1 = require("./BaseSession");
|
|
9
|
+
/**
|
|
10
|
+
* #stateModel MultipleViewsSessionMixin
|
|
11
|
+
*/
|
|
12
|
+
function MultipleViewsSessionMixin(pluginManager) {
|
|
13
|
+
return mobx_state_tree_1.types
|
|
14
|
+
.compose((0, BaseSession_1.BaseSessionModel)(pluginManager), (0, DrawerWidgets_1.DrawerWidgetSessionMixin)(pluginManager))
|
|
15
|
+
.props({
|
|
16
|
+
/**
|
|
17
|
+
* #property
|
|
18
|
+
*/
|
|
19
|
+
views: mobx_state_tree_1.types.array(pluginManager.pluggableMstType('view', 'stateModel')),
|
|
20
|
+
})
|
|
21
|
+
.actions(self => ({
|
|
22
|
+
/**
|
|
23
|
+
* #action
|
|
24
|
+
*/
|
|
25
|
+
moveViewUp(id) {
|
|
26
|
+
const idx = self.views.findIndex(v => v.id === id);
|
|
27
|
+
if (idx === -1) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (idx > 0) {
|
|
31
|
+
self.views.splice(idx - 1, 2, self.views[idx], self.views[idx - 1]);
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
/**
|
|
35
|
+
* #action
|
|
36
|
+
*/
|
|
37
|
+
moveViewDown(id) {
|
|
38
|
+
const idx = self.views.findIndex(v => v.id === id);
|
|
39
|
+
if (idx === -1) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (idx < self.views.length - 1) {
|
|
43
|
+
self.views.splice(idx, 2, self.views[idx + 1], self.views[idx]);
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
/**
|
|
47
|
+
* #action
|
|
48
|
+
*/
|
|
49
|
+
addView(typeName, initialState = {}) {
|
|
50
|
+
const typeDefinition = pluginManager.getElementType('view', typeName);
|
|
51
|
+
if (!typeDefinition) {
|
|
52
|
+
throw new Error(`unknown view type ${typeName}`);
|
|
53
|
+
}
|
|
54
|
+
const length = self.views.push({
|
|
55
|
+
...initialState,
|
|
56
|
+
type: typeName,
|
|
57
|
+
});
|
|
58
|
+
return self.views[length - 1];
|
|
59
|
+
},
|
|
60
|
+
/**
|
|
61
|
+
* #action
|
|
62
|
+
*/
|
|
63
|
+
removeView(view) {
|
|
64
|
+
for (const [, widget] of self.activeWidgets) {
|
|
65
|
+
if (widget.view && widget.view.id === view.id) {
|
|
66
|
+
self.hideWidget(widget);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
self.views.remove(view);
|
|
70
|
+
},
|
|
71
|
+
/**
|
|
72
|
+
* #action
|
|
73
|
+
*/
|
|
74
|
+
addLinearGenomeViewOfAssembly(assemblyName, initialState = {}) {
|
|
75
|
+
return this.addViewOfAssembly('LinearGenomeView', assemblyName, initialState);
|
|
76
|
+
},
|
|
77
|
+
/**
|
|
78
|
+
* #action
|
|
79
|
+
*/
|
|
80
|
+
addViewOfAssembly(viewType, assemblyName, initialState = {}) {
|
|
81
|
+
const asm = self.assemblies.find(s => (0, configuration_1.readConfObject)(s, 'name') === assemblyName);
|
|
82
|
+
if (!asm) {
|
|
83
|
+
throw new Error(`Could not add view of assembly "${assemblyName}", assembly name not found`);
|
|
84
|
+
}
|
|
85
|
+
return this.addView(viewType, {
|
|
86
|
+
...initialState,
|
|
87
|
+
displayRegionsFromAssemblyName: (0, configuration_1.readConfObject)(asm, 'name'),
|
|
88
|
+
});
|
|
89
|
+
},
|
|
90
|
+
/**
|
|
91
|
+
* #action
|
|
92
|
+
*/
|
|
93
|
+
addViewFromAnotherView(viewType, otherView, initialState = {}) {
|
|
94
|
+
const state = { ...initialState };
|
|
95
|
+
state.displayedRegions = (0, mobx_state_tree_1.getSnapshot)(otherView.displayedRegions);
|
|
96
|
+
return this.addView(viewType, state);
|
|
97
|
+
},
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
exports.MultipleViewsSessionMixin = MultipleViewsSessionMixin;
|
|
101
|
+
/** Type guard for SessionWithMultipleViews */
|
|
102
|
+
function isSessionWithMultipleViews(session) {
|
|
103
|
+
return (0, BaseSession_1.isBaseSession)(session) && 'views' in session;
|
|
104
|
+
}
|
|
105
|
+
exports.isSessionWithMultipleViews = isSessionWithMultipleViews;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** MST props, views, actions, etc related to managing connections */
|
|
2
|
+
import PluginManager from '@jbrowse/core/PluginManager';
|
|
3
|
+
import { IAnyStateTreeNode, Instance } from 'mobx-state-tree';
|
|
4
|
+
import type { BaseTrackConfig } from '@jbrowse/core/pluggableElementTypes';
|
|
5
|
+
export interface ReferringNode {
|
|
6
|
+
node: IAnyStateTreeNode;
|
|
7
|
+
key: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* #stateModel ReferenceManagementSessionMixin
|
|
11
|
+
*/
|
|
12
|
+
export declare function ReferenceManagementSessionMixin(pluginManager: PluginManager): import("mobx-state-tree").IModelType<{}, {
|
|
13
|
+
/**
|
|
14
|
+
* #method
|
|
15
|
+
* See if any MST nodes currently have a types.reference to this object.
|
|
16
|
+
*
|
|
17
|
+
* @param object - object
|
|
18
|
+
* @returns An array where the first element is the node referring
|
|
19
|
+
* to the object and the second element is they property name the node is
|
|
20
|
+
* using to refer to the object
|
|
21
|
+
*/
|
|
22
|
+
getReferring(object: IAnyStateTreeNode): ReferringNode[];
|
|
23
|
+
} & {
|
|
24
|
+
/**
|
|
25
|
+
* #action
|
|
26
|
+
*/
|
|
27
|
+
removeReferring(referring: ReferringNode[], track: BaseTrackConfig, callbacks: Function[], dereferenceTypeCount: Record<string, number>): void;
|
|
28
|
+
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
29
|
+
/** Session mixin MST type for a session that manages multiple views */
|
|
30
|
+
export type SessionWithReferenceManagementType = ReturnType<typeof ReferenceManagementSessionMixin>;
|
|
31
|
+
/** Instance of a session with MST reference management (`getReferring()`, `removeReferring()`) */
|
|
32
|
+
export type SessionWithReferenceManagement = Instance<SessionWithReferenceManagementType>;
|
|
33
|
+
/** Type guard for SessionWithReferenceManagement */
|
|
34
|
+
export declare function isSessionWithReferenceManagement(thing: IAnyStateTreeNode): thing is SessionWithReferenceManagement;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** MST props, views, actions, etc related to managing connections */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.isSessionWithReferenceManagement = exports.ReferenceManagementSessionMixin = void 0;
|
|
5
|
+
const util_1 = require("@jbrowse/core/util");
|
|
6
|
+
const mobx_state_tree_1 = require("mobx-state-tree");
|
|
7
|
+
// locals
|
|
8
|
+
const BaseSession_1 = require("./BaseSession");
|
|
9
|
+
/**
|
|
10
|
+
* #stateModel ReferenceManagementSessionMixin
|
|
11
|
+
*/
|
|
12
|
+
function ReferenceManagementSessionMixin(pluginManager) {
|
|
13
|
+
return mobx_state_tree_1.types
|
|
14
|
+
.model('ReferenceManagementSessionMixin', {})
|
|
15
|
+
.views(self => ({
|
|
16
|
+
/**
|
|
17
|
+
* #method
|
|
18
|
+
* See if any MST nodes currently have a types.reference to this object.
|
|
19
|
+
*
|
|
20
|
+
* @param object - object
|
|
21
|
+
* @returns An array where the first element is the node referring
|
|
22
|
+
* to the object and the second element is they property name the node is
|
|
23
|
+
* using to refer to the object
|
|
24
|
+
*/
|
|
25
|
+
getReferring(object) {
|
|
26
|
+
const refs = [];
|
|
27
|
+
(0, mobx_state_tree_1.walk)((0, mobx_state_tree_1.getParent)(self), node => {
|
|
28
|
+
if ((0, mobx_state_tree_1.isModelType)((0, mobx_state_tree_1.getType)(node))) {
|
|
29
|
+
const members = (0, mobx_state_tree_1.getMembers)(node);
|
|
30
|
+
Object.entries(members.properties).forEach(([key, value]) => {
|
|
31
|
+
if ((0, mobx_state_tree_1.isReferenceType)(value) && node[key] === object) {
|
|
32
|
+
refs.push({ node, key });
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
return refs;
|
|
38
|
+
},
|
|
39
|
+
}))
|
|
40
|
+
.actions(self => ({
|
|
41
|
+
/**
|
|
42
|
+
* #action
|
|
43
|
+
*/
|
|
44
|
+
removeReferring(referring, track, callbacks, dereferenceTypeCount) {
|
|
45
|
+
referring.forEach(({ node }) => {
|
|
46
|
+
let dereferenced = false;
|
|
47
|
+
try {
|
|
48
|
+
// If a view is referring to the track config, remove the track
|
|
49
|
+
// from the view
|
|
50
|
+
const type = 'open track(s)';
|
|
51
|
+
const view = (0, util_1.getContainingView)(node);
|
|
52
|
+
callbacks.push(() => view.hideTrack(track.trackId));
|
|
53
|
+
dereferenced = true;
|
|
54
|
+
if (!dereferenceTypeCount[type]) {
|
|
55
|
+
dereferenceTypeCount[type] = 0;
|
|
56
|
+
}
|
|
57
|
+
dereferenceTypeCount[type] += 1;
|
|
58
|
+
}
|
|
59
|
+
catch (err1) {
|
|
60
|
+
// ignore
|
|
61
|
+
}
|
|
62
|
+
if ((0, util_1.isSessionModelWithWidgets)(self) && self.widgets.has(node.id)) {
|
|
63
|
+
// If a configuration editor widget has the track config
|
|
64
|
+
// open, close the widget
|
|
65
|
+
const type = 'configuration editor widget(s)';
|
|
66
|
+
if ((0, util_1.isSessionModelWithWidgets)(self)) {
|
|
67
|
+
callbacks.push(() => self.hideWidget(node));
|
|
68
|
+
}
|
|
69
|
+
dereferenced = true;
|
|
70
|
+
if (!dereferenceTypeCount[type]) {
|
|
71
|
+
dereferenceTypeCount[type] = 0;
|
|
72
|
+
}
|
|
73
|
+
dereferenceTypeCount[type] += 1;
|
|
74
|
+
}
|
|
75
|
+
if (!dereferenced) {
|
|
76
|
+
throw new Error(`Error when closing this connection, the following node is still referring to a track configuration: ${JSON.stringify((0, mobx_state_tree_1.getSnapshot)(node))}`);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
},
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
exports.ReferenceManagementSessionMixin = ReferenceManagementSessionMixin;
|
|
83
|
+
/** Type guard for SessionWithReferenceManagement */
|
|
84
|
+
function isSessionWithReferenceManagement(thing) {
|
|
85
|
+
return ((0, BaseSession_1.isBaseSession)(thing) &&
|
|
86
|
+
'getReferring' in thing &&
|
|
87
|
+
typeof thing.getReferring === 'function' &&
|
|
88
|
+
'removeReferring' in thing &&
|
|
89
|
+
typeof thing.removeReferring === 'function');
|
|
90
|
+
}
|
|
91
|
+
exports.isSessionWithReferenceManagement = isSessionWithReferenceManagement;
|