@jbrowse/product-core 3.7.0 → 4.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.
Files changed (97) hide show
  1. package/esm/RootModel/BaseRootModel.d.ts +52 -37
  2. package/esm/RootModel/BaseRootModel.js +1 -1
  3. package/esm/RootModel/FormatAbout.d.ts +2 -2
  4. package/esm/RootModel/FormatDetails.d.ts +2 -2
  5. package/esm/RootModel/HierarchicalConfig.d.ts +6 -6
  6. package/esm/RootModel/InternetAccounts.d.ts +4 -4
  7. package/esm/RootModel/InternetAccounts.js +3 -3
  8. package/esm/RootModel/index.d.ts +5 -5
  9. package/esm/RootModel/index.js +5 -5
  10. package/esm/Session/BaseSession.d.ts +12 -8
  11. package/esm/Session/BaseSession.js +12 -2
  12. package/esm/Session/Connections.d.ts +7 -144
  13. package/esm/Session/Connections.js +13 -3
  14. package/esm/Session/DialogQueue.d.ts +3 -3
  15. package/esm/Session/DialogQueue.js +4 -6
  16. package/esm/Session/DrawerWidgets.d.ts +17 -9
  17. package/esm/Session/DrawerWidgets.js +32 -8
  18. package/esm/Session/MultipleViews.d.ts +189 -127
  19. package/esm/Session/MultipleViews.js +27 -10
  20. package/esm/Session/ReferenceManagement.d.ts +3 -3
  21. package/esm/Session/ReferenceManagement.js +10 -4
  22. package/esm/Session/SessionTracks.d.ts +178 -122
  23. package/esm/Session/SessionTracks.js +13 -3
  24. package/esm/Session/Themes.d.ts +3 -3
  25. package/esm/Session/Themes.js +3 -3
  26. package/esm/Session/Tracks.d.ts +175 -121
  27. package/esm/Session/Tracks.js +16 -3
  28. package/esm/Session/index.d.ts +10 -10
  29. package/esm/Session/index.js +10 -10
  30. package/esm/index.d.ts +4 -4
  31. package/esm/index.js +4 -4
  32. package/esm/rpcWorker.d.ts +6 -0
  33. package/esm/rpcWorker.js +12 -6
  34. package/esm/ui/AboutDialog.d.ts +4 -2
  35. package/esm/ui/AboutDialog.js +4 -5
  36. package/esm/ui/AboutDialogContents.d.ts +4 -2
  37. package/esm/ui/AboutDialogContents.js +13 -12
  38. package/esm/ui/FileInfoPanel.d.ts +4 -2
  39. package/esm/ui/FileInfoPanel.js +6 -7
  40. package/esm/ui/HeaderButtons.js +4 -4
  41. package/esm/ui/RefNameInfoDialog.d.ts +4 -2
  42. package/esm/ui/RefNameInfoDialog.js +13 -13
  43. package/esm/ui/index.d.ts +1 -1
  44. package/esm/ui/index.js +1 -1
  45. package/esm/ui/util.d.ts +5 -2
  46. package/esm/ui/util.js +23 -5
  47. package/package.json +24 -34
  48. package/dist/RootModel/BaseRootModel.d.ts +0 -534
  49. package/dist/RootModel/BaseRootModel.js +0 -57
  50. package/dist/RootModel/FormatAbout.d.ts +0 -12
  51. package/dist/RootModel/FormatAbout.js +0 -18
  52. package/dist/RootModel/FormatDetails.d.ts +0 -24
  53. package/dist/RootModel/FormatDetails.js +0 -30
  54. package/dist/RootModel/HierarchicalConfig.d.ts +0 -26
  55. package/dist/RootModel/HierarchicalConfig.js +0 -32
  56. package/dist/RootModel/InternetAccounts.d.ts +0 -15
  57. package/dist/RootModel/InternetAccounts.js +0 -79
  58. package/dist/RootModel/index.d.ts +0 -5
  59. package/dist/RootModel/index.js +0 -21
  60. package/dist/Session/BaseSession.d.ts +0 -31
  61. package/dist/Session/BaseSession.js +0 -63
  62. package/dist/Session/Connections.d.ts +0 -158
  63. package/dist/Session/Connections.js +0 -84
  64. package/dist/Session/DialogQueue.d.ts +0 -15
  65. package/dist/Session/DialogQueue.js +0 -37
  66. package/dist/Session/DrawerWidgets.d.ts +0 -28
  67. package/dist/Session/DrawerWidgets.js +0 -107
  68. package/dist/Session/MultipleViews.d.ts +0 -1681
  69. package/dist/Session/MultipleViews.js +0 -75
  70. package/dist/Session/ReferenceManagement.d.ts +0 -15
  71. package/dist/Session/ReferenceManagement.js +0 -71
  72. package/dist/Session/SessionTracks.d.ts +0 -1664
  73. package/dist/Session/SessionTracks.js +0 -54
  74. package/dist/Session/Themes.d.ts +0 -18
  75. package/dist/Session/Themes.js +0 -47
  76. package/dist/Session/Tracks.d.ts +0 -1657
  77. package/dist/Session/Tracks.js +0 -36
  78. package/dist/Session/index.d.ts +0 -10
  79. package/dist/Session/index.js +0 -26
  80. package/dist/index.d.ts +0 -4
  81. package/dist/index.js +0 -20
  82. package/dist/rpcWorker.d.ts +0 -6
  83. package/dist/rpcWorker.js +0 -57
  84. package/dist/ui/AboutDialog.d.ts +0 -5
  85. package/dist/ui/AboutDialog.js +0 -18
  86. package/dist/ui/AboutDialogContents.d.ts +0 -5
  87. package/dist/ui/AboutDialogContents.js +0 -41
  88. package/dist/ui/FileInfoPanel.d.ts +0 -4
  89. package/dist/ui/FileInfoPanel.js +0 -43
  90. package/dist/ui/HeaderButtons.d.ts +0 -6
  91. package/dist/ui/HeaderButtons.js +0 -31
  92. package/dist/ui/RefNameInfoDialog.d.ts +0 -6
  93. package/dist/ui/RefNameInfoDialog.js +0 -87
  94. package/dist/ui/index.d.ts +0 -1
  95. package/dist/ui/index.js +0 -17
  96. package/dist/ui/util.d.ts +0 -12
  97. package/dist/ui/util.js +0 -28
@@ -1,15 +1,15 @@
1
1
  import { localStorageGetBoolean, localStorageSetBoolean, } from '@jbrowse/core/util';
2
+ import { addDisposer, cast, types } from '@jbrowse/mobx-state-tree';
2
3
  import { autorun } from 'mobx';
3
- import { addDisposer, cast, types } from 'mobx-state-tree';
4
- import { BaseSessionModel, isBaseSession } from './BaseSession';
5
- import { DrawerWidgetSessionMixin } from './DrawerWidgets';
4
+ import { BaseSessionModel, isBaseSession } from "./BaseSession.js";
5
+ import { DrawerWidgetSessionMixin } from "./DrawerWidgets.js";
6
6
  export function MultipleViewsSessionMixin(pluginManager) {
7
7
  return types
8
- .compose(BaseSessionModel(pluginManager), DrawerWidgetSessionMixin(pluginManager))
9
- .props({
8
+ .compose(BaseSessionModel(pluginManager), DrawerWidgetSessionMixin(pluginManager), types.model({
10
9
  views: types.array(pluginManager.pluggableMstType('view', 'stateModel')),
11
10
  stickyViewHeaders: types.optional(types.boolean, () => localStorageGetBoolean('stickyViewHeaders', true)),
12
- })
11
+ useWorkspaces: types.optional(types.boolean, () => localStorageGetBoolean('useWorkspaces', false)),
12
+ }))
13
13
  .actions(self => ({
14
14
  moveViewDown(id) {
15
15
  const idx = self.views.findIndex(v => v.id === id);
@@ -50,7 +50,7 @@ export function MultipleViewsSessionMixin(pluginManager) {
50
50
  },
51
51
  removeView(view) {
52
52
  for (const [, widget] of self.activeWidgets) {
53
- if (widget.view && widget.view.id === view.id) {
53
+ if (widget.view?.id === view.id) {
54
54
  self.hideWidget(widget);
55
55
  }
56
56
  }
@@ -59,12 +59,29 @@ export function MultipleViewsSessionMixin(pluginManager) {
59
59
  setStickyViewHeaders(sticky) {
60
60
  self.stickyViewHeaders = sticky;
61
61
  },
62
+ setUseWorkspaces(useWorkspaces) {
63
+ self.useWorkspaces = useWorkspaces;
64
+ },
62
65
  afterAttach() {
63
- addDisposer(self, autorun(() => {
66
+ addDisposer(self, autorun(function stickyViewHeadersAutorun() {
64
67
  localStorageSetBoolean('stickyViewHeaders', self.stickyViewHeaders);
65
- }));
68
+ }, { name: 'StickyViewHeaders' }));
69
+ addDisposer(self, autorun(function useWorkspacesAutorun() {
70
+ localStorageSetBoolean('useWorkspaces', self.useWorkspaces);
71
+ }, { name: 'UseWorkspaces' }));
66
72
  },
67
- }));
73
+ }))
74
+ .postProcessSnapshot(snap => {
75
+ if (!snap) {
76
+ return snap;
77
+ }
78
+ const { stickyViewHeaders, useWorkspaces, ...rest } = snap;
79
+ return {
80
+ ...rest,
81
+ ...(!stickyViewHeaders ? { stickyViewHeaders } : {}),
82
+ ...(useWorkspaces ? { useWorkspaces } : {}),
83
+ };
84
+ });
68
85
  }
69
86
  export function isSessionWithMultipleViews(session) {
70
87
  return isBaseSession(session) && 'views' in session;
@@ -1,15 +1,15 @@
1
1
  import type PluginManager from '@jbrowse/core/PluginManager';
2
2
  import type { BaseTrackConfig } from '@jbrowse/core/pluggableElementTypes';
3
- import type { IAnyStateTreeNode, Instance } from 'mobx-state-tree';
3
+ import type { IAnyStateTreeNode, Instance } from '@jbrowse/mobx-state-tree';
4
4
  export interface ReferringNode {
5
5
  node: IAnyStateTreeNode;
6
6
  key: string;
7
7
  }
8
- export declare function ReferenceManagementSessionMixin(_pluginManager: PluginManager): import("mobx-state-tree").IModelType<{}, {
8
+ export declare function ReferenceManagementSessionMixin(_pluginManager: PluginManager): import("@jbrowse/mobx-state-tree").IModelType<{}, {
9
9
  getReferring(object: IAnyStateTreeNode): ReferringNode[];
10
10
  } & {
11
11
  removeReferring(referring: ReferringNode[], track: BaseTrackConfig, callbacks: ((arg: string) => void)[], dereferenceTypeCount: Record<string, number>): void;
12
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
12
+ }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>;
13
13
  export type SessionWithReferenceManagementType = ReturnType<typeof ReferenceManagementSessionMixin>;
14
14
  export type SessionWithReferenceManagement = Instance<SessionWithReferenceManagementType>;
15
15
  export declare function isSessionWithReferenceManagement(thing: IAnyStateTreeNode): thing is SessionWithReferenceManagement;
@@ -1,18 +1,24 @@
1
1
  import { getContainingView, isSessionModelWithWidgets, } from '@jbrowse/core/util';
2
- import { getMembers, getParent, getSnapshot, getType, isModelType, isReferenceType, types, walk, } from 'mobx-state-tree';
3
- import { isBaseSession } from './BaseSession';
2
+ import { getMembers, getParent, getSnapshot, getType, isModelType, isReferenceType, types, walk, } from '@jbrowse/mobx-state-tree';
3
+ import { isBaseSession } from "./BaseSession.js";
4
4
  export function ReferenceManagementSessionMixin(_pluginManager) {
5
5
  return types
6
6
  .model('ReferenceManagementSessionMixin', {})
7
7
  .views(self => ({
8
8
  getReferring(object) {
9
9
  const refs = [];
10
+ const targetTrackId = object.trackId;
10
11
  walk(getParent(self), node => {
11
12
  if (isModelType(getType(node))) {
12
13
  const members = getMembers(node);
13
14
  for (const [key, value] of Object.entries(members.properties)) {
14
- if (isReferenceType(value) && node[key] === object) {
15
- refs.push({ node, key });
15
+ if (isReferenceType(value)) {
16
+ const ref = node[key];
17
+ const refTrackId = ref?.trackId;
18
+ if (ref === object ||
19
+ (targetTrackId && refTrackId && refTrackId === targetTrackId)) {
20
+ refs.push({ node, key });
21
+ }
16
22
  }
17
23
  }
18
24
  }