@jbrowse/product-core 5.0.0-beta.13 → 5.0.0-beta.14

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 (47) hide show
  1. package/esm/RootModel/BaseRootModel.d.ts +88 -47
  2. package/esm/RootModel/BaseRootModel.js +45 -2
  3. package/esm/RootModel/HierarchicalConfig.d.ts +3 -1
  4. package/esm/RootModel/HierarchicalConfig.js +3 -1
  5. package/esm/RootModel/InternetAccounts.d.ts +2 -0
  6. package/esm/RootModel/InternetAccounts.js +2 -0
  7. package/esm/RootModel/PreferencesConfig.d.ts +4 -4
  8. package/esm/RootModel/PreferencesConfig.js +4 -4
  9. package/esm/RootModel/menuItems.d.ts +1 -2
  10. package/esm/RootModel/menuItems.js +3 -4
  11. package/esm/Session/BaseSession.d.ts +7 -5
  12. package/esm/Session/BaseSession.js +15 -5
  13. package/esm/Session/Connections.d.ts +3 -0
  14. package/esm/Session/Connections.js +3 -0
  15. package/esm/Session/DrawerWidgets.d.ts +2 -0
  16. package/esm/Session/DrawerWidgets.js +2 -0
  17. package/esm/Session/MultipleViews.d.ts +122 -96
  18. package/esm/Session/MultipleViews.js +5 -3
  19. package/esm/Session/Preferences.d.ts +122 -97
  20. package/esm/Session/Preferences.js +5 -4
  21. package/esm/Session/ReferenceManagement.d.ts +2 -0
  22. package/esm/Session/ReferenceManagement.js +2 -0
  23. package/esm/Session/SessionTracks.d.ts +119 -93
  24. package/esm/Session/SessionTracks.js +2 -0
  25. package/esm/Session/Themes.d.ts +7 -5
  26. package/esm/Session/Themes.js +15 -10
  27. package/esm/Session/TrackMenu.d.ts +4 -8
  28. package/esm/Session/TrackMenu.js +13 -7
  29. package/esm/Session/TrackMenuSessionMixin.js +7 -3
  30. package/esm/Session/Tracks.d.ts +120 -93
  31. package/esm/Session/Tracks.js +3 -0
  32. package/esm/Session/pluginExtraTrackItems.d.ts +2 -3
  33. package/esm/Session/pluginExtraTrackItems.js +1 -1
  34. package/esm/sessionMigrations/index.js +2 -2
  35. package/esm/siblingCast.d.ts +6 -0
  36. package/esm/siblingCast.js +7 -0
  37. package/esm/ui/AboutDialog.d.ts +3 -2
  38. package/esm/ui/AboutDialog.js +4 -2
  39. package/esm/ui/DescriptionPanel.js +4 -4
  40. package/esm/ui/Drawer.js +11 -15
  41. package/esm/ui/HeaderButtons.d.ts +1 -1
  42. package/esm/ui/HeaderButtons.js +3 -2
  43. package/esm/ui/PreferenceCheckbox.d.ts +3 -2
  44. package/esm/ui/PreferenceCheckbox.js +4 -2
  45. package/esm/ui/WidgetHeading.d.ts +2 -2
  46. package/esm/ui/WidgetHeading.js +3 -2
  47. package/package.json +6 -6
@@ -6,12 +6,12 @@ import type { AnyConfigurationSchemaType } from '@jbrowse/core/configuration';
6
6
  import type { AnimationMode, DialogComponentType, TrackConfigChange } from '@jbrowse/core/util';
7
7
  import type { HighlightType } from '@jbrowse/core/util/highlights';
8
8
  import type { IAnyStateTreeNode, Instance } from '@jbrowse/mobx-state-tree';
9
- type DoneCallback = (doneCallback: () => void) => [DialogComponentType, Record<string, unknown>];
9
+ import type React from 'react';
10
10
  /**
11
11
  * #stateModel BaseSessionModel
12
12
  *
13
- * base session shared by all JBrowse products. Be careful what you include
14
- * here, everything will use it.
13
+ * Holds a session's name, focused view, highlights and notifications. Every
14
+ * product's session composes this model, so add to it with care.
15
15
  */
16
16
  export declare function BaseSessionModel<ROOT_MODEL_TYPE extends BaseRootModelType, JB_CONFIG_SCHEMA extends AnyConfigurationSchemaType>(_pluginManager: PluginManager): import("@jbrowse/mobx-state-tree").IModelType<Omit<{
17
17
  /**
@@ -270,12 +270,15 @@ export declare function BaseSessionModel<ROOT_MODEL_TYPE extends BaseRootModelTy
270
270
  setFocusedViewId(viewId: string | undefined): void;
271
271
  /**
272
272
  * #action
273
+ * Dismiss the dialog on screen as its own close button would, so a
274
+ * dialog that settles a promise on close (an internet account's token
275
+ * prompt) settles it, and drop it from the queue if it did not.
273
276
  */
274
277
  removeActiveDialog(): void;
275
278
  /**
276
279
  * #action
277
280
  */
278
- queueDialog(doneCallback: DoneCallback): void;
281
+ queueDialog<T extends DialogComponentType>(callback: (doneCallback: () => void) => [T, React.ComponentProps<T>]): void;
279
282
  /**
280
283
  * #action
281
284
  */
@@ -303,4 +306,3 @@ export type BaseSession = Instance<BaseSessionType>;
303
306
  export declare function isBaseSession(thing: IAnyStateTreeNode): thing is BaseSession;
304
307
  /** Type guard for whether a thing is JBrowse session */
305
308
  export declare function isSession(thing: unknown): thing is BaseSession;
306
- export {};
@@ -14,8 +14,8 @@ function isAnimationMode(val) {
14
14
  /**
15
15
  * #stateModel BaseSessionModel
16
16
  *
17
- * base session shared by all JBrowse products. Be careful what you include
18
- * here, everything will use it.
17
+ * Holds a session's name, focused view, highlights and notifications. Every
18
+ * product's session composes this model, so add to it with care.
19
19
  */
20
20
  export function BaseSessionModel(_pluginManager) {
21
21
  const baseModel = types
@@ -390,17 +390,27 @@ export function BaseSessionModel(_pluginManager) {
390
390
  },
391
391
  /**
392
392
  * #action
393
+ * Dismiss the dialog on screen as its own close button would, so a
394
+ * dialog that settles a promise on close (an internet account's token
395
+ * prompt) settles it, and drop it from the queue if it did not.
393
396
  */
394
397
  removeActiveDialog() {
395
- self.queueOfDialogs = self.queueOfDialogs.slice(1);
398
+ const active = self.queueOfDialogs[0];
399
+ const close = active?.[1].handleClose;
400
+ if (typeof close === 'function') {
401
+ close();
402
+ }
403
+ if (self.queueOfDialogs[0] === active) {
404
+ self.queueOfDialogs = self.queueOfDialogs.slice(1);
405
+ }
396
406
  },
397
407
  /**
398
408
  * #action
399
409
  */
400
- queueDialog(doneCallback) {
410
+ queueDialog(callback) {
401
411
  // its own entry, not the head: a late second call must not close the
402
412
  // dialog queued behind it
403
- const entry = doneCallback(() => {
413
+ const entry = callback(() => {
404
414
  this.removeDialog(entry);
405
415
  });
406
416
  self.queueOfDialogs = [...self.queueOfDialogs, entry];
@@ -13,6 +13,9 @@ export interface ConnectionTrackConfigEntry {
13
13
  }
14
14
  /**
15
15
  * #stateModel ConnectionManagementSessionMixin
16
+ * Adds connections to a session: the connection instances it has made, and
17
+ * the configs of the connection tracks the user opened, so those tracks load
18
+ * on session restore without reconnecting.
16
19
  */
17
20
  export declare function ConnectionManagementSessionMixin(pluginManager: PluginManager): import("@jbrowse/mobx-state-tree").IModelType<{
18
21
  /**
@@ -3,6 +3,9 @@ import { asSession } from '../siblingCast.js';
3
3
  import { isBaseSession } from './BaseSession.js';
4
4
  /**
5
5
  * #stateModel ConnectionManagementSessionMixin
6
+ * Adds connections to a session: the connection instances it has made, and
7
+ * the configs of the connection tracks the user opened, so those tracks load
8
+ * on session restore without reconnecting.
6
9
  */
7
10
  export function ConnectionManagementSessionMixin(pluginManager) {
8
11
  return types
@@ -4,6 +4,8 @@ import type { DrawerPosition, Widget } from '@jbrowse/core/util/types';
4
4
  import type { IAnyStateTreeNode, Instance } from '@jbrowse/mobx-state-tree';
5
5
  /**
6
6
  * #stateModel DrawerWidgetSessionMixin
7
+ * Adds the widget drawer to a session: the open widgets, which one is
8
+ * showing, and the drawer's side, width and minimized state.
7
9
  */
8
10
  export declare function DrawerWidgetSessionMixin(pluginManager: PluginManager): import("@jbrowse/mobx-state-tree").IModelType<{
9
11
  /**
@@ -36,6 +36,8 @@ function clampDrawerWidth(width, availableWidth) {
36
36
  }
37
37
  /**
38
38
  * #stateModel DrawerWidgetSessionMixin
39
+ * Adds the widget drawer to a session: the open widgets, which one is
40
+ * showing, and the drawer's side, width and minimized state.
39
41
  */
40
42
  export function DrawerWidgetSessionMixin(pluginManager) {
41
43
  const widgetStateModelType = pluginManager.pluggableMstType('widget', 'stateModel');