@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.
Files changed (92) hide show
  1. package/LICENSE +201 -0
  2. package/dist/RootModel/BaseRootModel.d.ts +607 -0
  3. package/dist/RootModel/BaseRootModel.js +101 -0
  4. package/dist/RootModel/InternetAccounts.d.ts +31 -0
  5. package/dist/RootModel/InternetAccounts.js +99 -0
  6. package/dist/RootModel/index.d.ts +2 -0
  7. package/dist/RootModel/index.js +18 -0
  8. package/dist/Session/BaseSession.d.ts +99 -0
  9. package/dist/Session/BaseSession.js +112 -0
  10. package/dist/Session/Connections.d.ts +174 -0
  11. package/dist/Session/Connections.js +113 -0
  12. package/dist/Session/DialogQueue.d.ts +34 -0
  13. package/dist/Session/DialogQueue.js +55 -0
  14. package/dist/Session/DrawerWidgets.d.ts +88 -0
  15. package/dist/Session/DrawerWidgets.js +167 -0
  16. package/dist/Session/MultipleViews.d.ts +1798 -0
  17. package/dist/Session/MultipleViews.js +105 -0
  18. package/dist/Session/ReferenceManagement.d.ts +34 -0
  19. package/dist/Session/ReferenceManagement.js +91 -0
  20. package/dist/Session/SessionTracks.d.ts +1866 -0
  21. package/dist/Session/SessionTracks.js +75 -0
  22. package/dist/Session/Themes.d.ts +38 -0
  23. package/dist/Session/Themes.js +64 -0
  24. package/dist/Session/Tracks.d.ts +1821 -0
  25. package/dist/Session/Tracks.js +51 -0
  26. package/dist/Session/index.d.ts +10 -0
  27. package/dist/Session/index.js +26 -0
  28. package/dist/index.d.ts +3 -0
  29. package/dist/index.js +19 -0
  30. package/dist/ui/AboutDialog.d.ts +6 -0
  31. package/dist/ui/AboutDialog.js +20 -0
  32. package/dist/ui/AboutDialogContents.d.ts +5 -0
  33. package/dist/ui/AboutDialogContents.js +70 -0
  34. package/dist/ui/FileInfoPanel.d.ts +5 -0
  35. package/dist/ui/FileInfoPanel.js +76 -0
  36. package/dist/ui/index.d.ts +1 -0
  37. package/dist/ui/index.js +17 -0
  38. package/esm/RootModel/BaseRootModel.d.ts +607 -0
  39. package/esm/RootModel/BaseRootModel.js +93 -0
  40. package/esm/RootModel/InternetAccounts.d.ts +31 -0
  41. package/esm/RootModel/InternetAccounts.js +95 -0
  42. package/esm/RootModel/index.d.ts +2 -0
  43. package/esm/RootModel/index.js +2 -0
  44. package/esm/Session/BaseSession.d.ts +99 -0
  45. package/esm/Session/BaseSession.js +103 -0
  46. package/esm/Session/Connections.d.ts +174 -0
  47. package/esm/Session/Connections.js +108 -0
  48. package/esm/Session/DialogQueue.d.ts +34 -0
  49. package/esm/Session/DialogQueue.js +50 -0
  50. package/esm/Session/DrawerWidgets.d.ts +88 -0
  51. package/esm/Session/DrawerWidgets.js +162 -0
  52. package/esm/Session/MultipleViews.d.ts +1798 -0
  53. package/esm/Session/MultipleViews.js +100 -0
  54. package/esm/Session/ReferenceManagement.d.ts +34 -0
  55. package/esm/Session/ReferenceManagement.js +86 -0
  56. package/esm/Session/SessionTracks.d.ts +1866 -0
  57. package/esm/Session/SessionTracks.js +70 -0
  58. package/esm/Session/Themes.d.ts +38 -0
  59. package/esm/Session/Themes.js +59 -0
  60. package/esm/Session/Tracks.d.ts +1821 -0
  61. package/esm/Session/Tracks.js +46 -0
  62. package/esm/Session/index.d.ts +10 -0
  63. package/esm/Session/index.js +10 -0
  64. package/esm/index.d.ts +3 -0
  65. package/esm/index.js +3 -0
  66. package/esm/ui/AboutDialog.d.ts +6 -0
  67. package/esm/ui/AboutDialog.js +13 -0
  68. package/esm/ui/AboutDialogContents.d.ts +5 -0
  69. package/esm/ui/AboutDialogContents.js +41 -0
  70. package/esm/ui/FileInfoPanel.d.ts +5 -0
  71. package/esm/ui/FileInfoPanel.js +47 -0
  72. package/esm/ui/index.d.ts +1 -0
  73. package/esm/ui/index.js +1 -0
  74. package/package.json +66 -0
  75. package/src/RootModel/BaseRootModel.ts +131 -0
  76. package/src/RootModel/InternetAccounts.ts +126 -0
  77. package/src/RootModel/index.ts +2 -0
  78. package/src/Session/BaseSession.ts +129 -0
  79. package/src/Session/Connections.ts +145 -0
  80. package/src/Session/DialogQueue.ts +63 -0
  81. package/src/Session/DrawerWidgets.ts +222 -0
  82. package/src/Session/MultipleViews.ts +151 -0
  83. package/src/Session/ReferenceManagement.ts +134 -0
  84. package/src/Session/SessionTracks.ts +98 -0
  85. package/src/Session/Themes.ts +85 -0
  86. package/src/Session/Tracks.ts +72 -0
  87. package/src/Session/index.ts +10 -0
  88. package/src/index.ts +3 -0
  89. package/src/ui/AboutDialog.tsx +31 -0
  90. package/src/ui/AboutDialogContents.tsx +88 -0
  91. package/src/ui/FileInfoPanel.tsx +75 -0
  92. 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;