@jbrowse/product-core 2.17.0 → 3.0.0

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 (77) hide show
  1. package/dist/RootModel/BaseRootModel.d.ts +6 -43
  2. package/dist/RootModel/BaseRootModel.js +5 -41
  3. package/dist/RootModel/FormatAbout.d.ts +0 -10
  4. package/dist/RootModel/FormatAbout.js +0 -10
  5. package/dist/RootModel/FormatDetails.d.ts +0 -17
  6. package/dist/RootModel/FormatDetails.js +0 -17
  7. package/dist/RootModel/HierarchicalConfig.d.ts +0 -19
  8. package/dist/RootModel/HierarchicalConfig.js +0 -19
  9. package/dist/RootModel/InternetAccounts.d.ts +4 -20
  10. package/dist/RootModel/InternetAccounts.js +0 -20
  11. package/dist/Session/BaseSession.d.ts +5 -96
  12. package/dist/Session/BaseSession.js +1 -63
  13. package/dist/Session/Connections.d.ts +5 -56
  14. package/dist/Session/Connections.js +0 -30
  15. package/dist/Session/DialogQueue.d.ts +3 -22
  16. package/dist/Session/DialogQueue.js +0 -17
  17. package/dist/Session/DrawerWidgets.d.ts +3 -63
  18. package/dist/Session/DrawerWidgets.js +2 -61
  19. package/dist/Session/MultipleViews.d.ts +8 -1760
  20. package/dist/Session/MultipleViews.js +2 -40
  21. package/dist/Session/ReferenceManagement.d.ts +2 -21
  22. package/dist/Session/ReferenceManagement.js +0 -23
  23. package/dist/Session/SessionTracks.d.ts +7 -1748
  24. package/dist/Session/SessionTracks.js +1 -21
  25. package/dist/Session/Themes.d.ts +3 -21
  26. package/dist/Session/Themes.js +1 -17
  27. package/dist/Session/Tracks.d.ts +6 -1737
  28. package/dist/Session/Tracks.js +0 -16
  29. package/dist/rpcWorker.d.ts +2 -2
  30. package/dist/rpcWorker.js +3 -17
  31. package/dist/ui/AboutDialog.d.ts +2 -3
  32. package/dist/ui/AboutDialog.js +2 -3
  33. package/dist/ui/AboutDialogContents.d.ts +2 -3
  34. package/dist/ui/AboutDialogContents.js +20 -53
  35. package/dist/ui/FileInfoPanel.d.ts +2 -3
  36. package/dist/ui/FileInfoPanel.js +5 -28
  37. package/dist/ui/RefNameInfoDialog.d.ts +2 -3
  38. package/dist/ui/RefNameInfoDialog.js +17 -44
  39. package/esm/RootModel/BaseRootModel.d.ts +6 -43
  40. package/esm/RootModel/BaseRootModel.js +6 -42
  41. package/esm/RootModel/FormatAbout.d.ts +0 -10
  42. package/esm/RootModel/FormatAbout.js +0 -10
  43. package/esm/RootModel/FormatDetails.d.ts +0 -17
  44. package/esm/RootModel/FormatDetails.js +0 -17
  45. package/esm/RootModel/HierarchicalConfig.d.ts +0 -19
  46. package/esm/RootModel/HierarchicalConfig.js +0 -19
  47. package/esm/RootModel/InternetAccounts.d.ts +4 -20
  48. package/esm/RootModel/InternetAccounts.js +0 -20
  49. package/esm/Session/BaseSession.d.ts +5 -96
  50. package/esm/Session/BaseSession.js +1 -63
  51. package/esm/Session/Connections.d.ts +5 -56
  52. package/esm/Session/Connections.js +1 -31
  53. package/esm/Session/DialogQueue.d.ts +3 -22
  54. package/esm/Session/DialogQueue.js +0 -17
  55. package/esm/Session/DrawerWidgets.d.ts +3 -63
  56. package/esm/Session/DrawerWidgets.js +2 -61
  57. package/esm/Session/MultipleViews.d.ts +8 -1760
  58. package/esm/Session/MultipleViews.js +2 -40
  59. package/esm/Session/ReferenceManagement.d.ts +2 -21
  60. package/esm/Session/ReferenceManagement.js +0 -23
  61. package/esm/Session/SessionTracks.d.ts +7 -1748
  62. package/esm/Session/SessionTracks.js +1 -21
  63. package/esm/Session/Themes.d.ts +3 -21
  64. package/esm/Session/Themes.js +1 -17
  65. package/esm/Session/Tracks.d.ts +6 -1737
  66. package/esm/Session/Tracks.js +0 -16
  67. package/esm/rpcWorker.d.ts +2 -2
  68. package/esm/rpcWorker.js +3 -17
  69. package/esm/ui/AboutDialog.d.ts +2 -3
  70. package/esm/ui/AboutDialog.js +3 -4
  71. package/esm/ui/AboutDialogContents.d.ts +2 -3
  72. package/esm/ui/AboutDialogContents.js +20 -30
  73. package/esm/ui/FileInfoPanel.d.ts +2 -3
  74. package/esm/ui/FileInfoPanel.js +5 -5
  75. package/esm/ui/RefNameInfoDialog.d.ts +2 -3
  76. package/esm/ui/RefNameInfoDialog.js +18 -22
  77. package/package.json +3 -3
@@ -1,33 +1,18 @@
1
1
  import { types } from 'mobx-state-tree';
2
2
  import { BaseSessionModel, isBaseSession } from './BaseSession';
3
3
  import { ReferenceManagementSessionMixin } from './ReferenceManagement';
4
- /**
5
- * #stateModel TracksManagerSessionMixin
6
- * composed of
7
- * - BaseSessionModel
8
- * - ReferenceManagementSessionMixin
9
- */
10
4
  export function TracksManagerSessionMixin(pluginManager) {
11
5
  return types
12
6
  .compose('TracksManagerSessionMixin', BaseSessionModel(pluginManager), ReferenceManagementSessionMixin(pluginManager))
13
7
  .views(self => ({
14
- /**
15
- * #getter
16
- */
17
8
  get tracks() {
18
9
  return self.jbrowse.tracks;
19
10
  },
20
11
  }))
21
12
  .actions(self => ({
22
- /**
23
- * #action
24
- */
25
13
  addTrackConf(trackConf) {
26
14
  return self.jbrowse.addTrackConf(trackConf);
27
15
  },
28
- /**
29
- * #action
30
- */
31
16
  deleteTrackConf(trackConf) {
32
17
  const callbacksToDereferenceTrack = [];
33
18
  const dereferenceTypeCount = {};
@@ -42,7 +27,6 @@ export function TracksManagerSessionMixin(pluginManager) {
42
27
  },
43
28
  }));
44
29
  }
45
- /** Type guard for SessionWithTracks */
46
30
  export function isSessionWithTracks(thing) {
47
31
  return isBaseSession(thing) && 'tracks' in thing;
48
32
  }
@@ -1,5 +1,5 @@
1
- import { LoadedPlugin } from '@jbrowse/core/PluginLoader';
2
- import { PluginConstructor } from '@jbrowse/core/Plugin';
1
+ import type { PluginConstructor } from '@jbrowse/core/Plugin';
2
+ import type { LoadedPlugin } from '@jbrowse/core/PluginLoader';
3
3
  export declare function initializeWorker(corePlugins: PluginConstructor[], opts: {
4
4
  fetchESM?: (url: string) => Promise<LoadedPlugin>;
5
5
  fetchCJS?: (url: string) => Promise<LoadedPlugin>;
package/esm/rpcWorker.js CHANGED
@@ -1,10 +1,7 @@
1
- import RpcServer from 'librpc-web-mod';
2
- import PluginManager from '@jbrowse/core/PluginManager';
3
- import { remoteAbortRpcHandler } from '@jbrowse/core/rpc/remoteAbortSignals';
4
1
  import PluginLoader from '@jbrowse/core/PluginLoader';
2
+ import PluginManager from '@jbrowse/core/PluginManager';
3
+ import RpcServer from 'librpc-web-mod';
5
4
  import { serializeError } from 'serialize-error';
6
- // waits for a message from the main thread containing our configuration, which
7
- // must be sent on boot
8
5
  function receiveConfiguration() {
9
6
  const configurationP = new Promise(resolve => {
10
7
  function listener(e) {
@@ -19,7 +16,6 @@ function receiveConfiguration() {
19
16
  return configurationP;
20
17
  }
21
18
  async function getPluginManager(corePlugins, opts) {
22
- // Load runtime plugins
23
19
  const config = await receiveConfiguration();
24
20
  const pluginLoader = new PluginLoader(config.plugins, opts).installGlobalReExports(self);
25
21
  return new PluginManager([
@@ -35,7 +31,6 @@ function wrapForRpc(func) {
35
31
  return func({
36
32
  ...args,
37
33
  statusCallback: (message) => {
38
- // @ts-expect-error
39
34
  self.rpcServer.emit(channel, message);
40
35
  },
41
36
  }, rpcDriverClassName);
@@ -47,19 +42,10 @@ export async function initializeWorker(corePlugins, opts) {
47
42
  const rpcConfig = Object.fromEntries(pluginManager
48
43
  .getRpcElements()
49
44
  .map(e => [e.name, wrapForRpc(e.execute.bind(e))]));
50
- // @ts-expect-error
51
- self.rpcServer = new RpcServer.Server({
52
- ...rpcConfig,
53
- ...remoteAbortRpcHandler(),
54
- ping: async () => {
55
- // the ping method is required by the worker driver for checking the
56
- // health of the worker
57
- },
58
- });
45
+ self.rpcServer = new RpcServer.Server(rpcConfig);
59
46
  postMessage({ message: 'ready' });
60
47
  }
61
48
  catch (e) {
62
49
  postMessage({ message: 'error', error: serializeError(e) });
63
50
  }
64
- /* do nothing */
65
51
  }
@@ -1,6 +1,5 @@
1
- import React from 'react';
2
- import { AnyConfigurationModel } from '@jbrowse/core/configuration';
1
+ import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
3
2
  export declare function AboutDialog({ config, handleClose, }: {
4
3
  config: AnyConfigurationModel;
5
4
  handleClose: () => void;
6
- }): React.JSX.Element;
5
+ }): import("react/jsx-runtime").JSX.Element;
@@ -1,6 +1,6 @@
1
- import React from 'react';
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import Dialog from '@jbrowse/core/ui/Dialog';
3
- import { getSession, getEnv } from '@jbrowse/core/util';
3
+ import { getEnv, getSession } from '@jbrowse/core/util';
4
4
  import { getTrackName } from '@jbrowse/core/util/tracks';
5
5
  import AboutContents from './AboutDialogContents';
6
6
  export function AboutDialog({ config, handleClose, }) {
@@ -8,6 +8,5 @@ export function AboutDialog({ config, handleClose, }) {
8
8
  const trackName = getTrackName(config, session);
9
9
  const { pluginManager } = getEnv(session);
10
10
  const AboutComponent = pluginManager.evaluateExtensionPoint('Core-replaceAbout', AboutContents, { session, config });
11
- return (React.createElement(Dialog, { open: true, onClose: handleClose, title: trackName, maxWidth: "xl" },
12
- React.createElement(AboutComponent, { config: config })));
11
+ return (_jsx(Dialog, { open: true, onClose: handleClose, title: trackName, maxWidth: "xl", children: _jsx(AboutComponent, { config: config }) }));
13
12
  }
@@ -1,6 +1,5 @@
1
- import React from 'react';
2
- import { AnyConfigurationModel } from '@jbrowse/core/configuration';
1
+ import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
3
2
  declare const AboutDialogContents: ({ config, }: {
4
3
  config: AnyConfigurationModel;
5
- }) => React.JSX.Element;
4
+ }) => import("react/jsx-runtime").JSX.Element;
6
5
  export default AboutDialogContents;
@@ -1,14 +1,13 @@
1
- import React, { useState } from 'react';
2
- import { observer } from 'mobx-react';
3
- import clone from 'clone';
4
- import copy from 'copy-to-clipboard';
5
- import { Button } from '@mui/material';
6
- import { makeStyles } from 'tss-react/mui';
7
- import { getConf, readConfObject, } from '@jbrowse/core/configuration';
8
- import { getSession, getEnv } from '@jbrowse/core/util';
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
9
3
  import Attributes from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/Attributes';
10
4
  import BaseCard from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/BaseCard';
11
- // locals
5
+ import { getConf, readConfObject } from '@jbrowse/core/configuration';
6
+ import { getEnv, getSession } from '@jbrowse/core/util';
7
+ import { Button } from '@mui/material';
8
+ import copy from 'copy-to-clipboard';
9
+ import { observer } from 'mobx-react';
10
+ import { makeStyles } from 'tss-react/mui';
12
11
  import FileInfoPanel from './FileInfoPanel';
13
12
  import RefNameInfoDialog from './RefNameInfoDialog';
14
13
  const useStyles = makeStyles()({
@@ -47,26 +46,17 @@ const AboutDialogContents = observer(function ({ config, }) {
47
46
  },
48
47
  }, { session, config });
49
48
  const ExtraPanel = pluginManager.evaluateExtensionPoint('Core-extraAboutPanel', null, { session, config });
50
- return (React.createElement("div", { className: classes.content },
51
- React.createElement(BaseCard, { title: "Configuration" },
52
- !hideUris ? (React.createElement("span", { className: classes.button },
53
- React.createElement(Button, { variant: "contained", color: "secondary", onClick: () => {
54
- setShowRefNames(true);
55
- } }, "Show ref names"),
56
- React.createElement(Button, { variant: "contained", onClick: () => {
57
- const snap = removeAttr(clone(conf), 'baseUri');
58
- copy(JSON.stringify(snap, null, 2));
59
- setCopied(true);
60
- setTimeout(() => {
61
- setCopied(false);
62
- }, 1000);
63
- } }, copied ? 'Copied to clipboard!' : 'Copy config'))) : null,
64
- React.createElement(Attributes, { attributes: confPostExt, omit: ['displays', 'baseUri', 'refNames', 'formatAbout'], hideUris: hideUris })),
65
- ExtraPanel ? (React.createElement(BaseCard, { title: ExtraPanel.name },
66
- React.createElement(ExtraPanel.Component, { config: config }))) : null,
67
- React.createElement(FileInfoPanel, { config: config }),
68
- showRefNames ? (React.createElement(RefNameInfoDialog, { config: config, onClose: () => {
69
- setShowRefNames(false);
70
- } })) : null));
49
+ return (_jsxs("div", { className: classes.content, children: [_jsxs(BaseCard, { title: "Configuration", children: [!hideUris ? (_jsxs("span", { className: classes.button, children: [_jsx(Button, { variant: "contained", color: "secondary", onClick: () => {
50
+ setShowRefNames(true);
51
+ }, children: "Show ref names" }), _jsx(Button, { variant: "contained", onClick: () => {
52
+ const snap = removeAttr(structuredClone(conf), 'baseUri');
53
+ copy(JSON.stringify(snap, null, 2));
54
+ setCopied(true);
55
+ setTimeout(() => {
56
+ setCopied(false);
57
+ }, 1000);
58
+ }, children: copied ? 'Copied to clipboard!' : 'Copy config' })] })) : null, _jsx(Attributes, { attributes: confPostExt.config, omit: ['displays', 'baseUri', 'refNames', 'formatAbout', 'metadata'], hideUris: hideUris })] }), confPostExt.config.metadata ? (_jsx(BaseCard, { title: "Metadata", children: _jsx(Attributes, { attributes: confPostExt.config.metadata, omit: ['displays', 'baseUri', 'refNames', 'formatAbout'], hideUris: hideUris }) })) : null, ExtraPanel ? (_jsx(BaseCard, { title: ExtraPanel.name, children: _jsx(ExtraPanel.Component, { config: config }) })) : null, _jsx(FileInfoPanel, { config: config }), showRefNames ? (_jsx(RefNameInfoDialog, { config: config, onClose: () => {
59
+ setShowRefNames(false);
60
+ } })) : null] }));
71
61
  });
72
62
  export default AboutDialogContents;
@@ -1,5 +1,4 @@
1
- import React from 'react';
2
- import { AnyConfigurationModel } from '@jbrowse/core/configuration';
1
+ import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
3
2
  export default function FileInfoPanel({ config, }: {
4
3
  config: AnyConfigurationModel;
5
- }): React.JSX.Element;
4
+ }): import("react/jsx-runtime").JSX.Element;
@@ -1,16 +1,16 @@
1
- import React, { useState, useEffect } from 'react';
2
- import { readConfObject, } from '@jbrowse/core/configuration';
3
- import { getSession } from '@jbrowse/core/util';
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useState } from 'react';
4
3
  import Attributes from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/Attributes';
5
4
  import BaseCard from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/BaseCard';
5
+ import { readConfObject } from '@jbrowse/core/configuration';
6
6
  import { ErrorMessage, LoadingEllipses } from '@jbrowse/core/ui';
7
+ import { getSession } from '@jbrowse/core/util';
7
8
  export default function FileInfoPanel({ config, }) {
8
9
  const [error, setError] = useState();
9
10
  const [info, setInfo] = useState();
10
11
  const session = getSession(config);
11
12
  const { rpcManager } = session;
12
13
  useEffect(() => {
13
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
14
14
  ;
15
15
  (async () => {
16
16
  try {
@@ -33,5 +33,5 @@ export default function FileInfoPanel({ config, }) {
33
33
  .replaceAll('>', '&gt;')}</pre>`,
34
34
  }
35
35
  : info || {};
36
- return (React.createElement(BaseCard, { title: "File info" }, error ? (React.createElement(ErrorMessage, { error: error })) : info === undefined ? (React.createElement(LoadingEllipses, { message: "Loading file data" })) : (React.createElement(Attributes, { attributes: details }))));
36
+ return (_jsx(BaseCard, { title: "File info", children: error ? (_jsx(ErrorMessage, { error: error })) : info === undefined ? (_jsx(LoadingEllipses, { message: "Loading file data" })) : (_jsx(Attributes, { attributes: details })) }));
37
37
  }
@@ -1,7 +1,6 @@
1
- import React from 'react';
2
- import { AnyConfigurationModel } from '@jbrowse/core/configuration';
1
+ import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
3
2
  declare const RefNameInfoDialog: ({ config, onClose, }: {
4
3
  config: AnyConfigurationModel;
5
4
  onClose: () => void;
6
- }) => React.JSX.Element;
5
+ }) => import("react/jsx-runtime").JSX.Element;
7
6
  export default RefNameInfoDialog;
@@ -1,12 +1,13 @@
1
- import React, { useState, useEffect } from 'react';
2
- import { Button, DialogContent } from '@mui/material';
3
- import { readConfObject, } from '@jbrowse/core/configuration';
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from 'react';
3
+ import { readConfObject } from '@jbrowse/core/configuration';
4
4
  import { Dialog, ErrorMessage, LoadingEllipses } from '@jbrowse/core/ui';
5
5
  import { getSession } from '@jbrowse/core/util';
6
6
  import { getConfAssemblyNames } from '@jbrowse/core/util/tracks';
7
+ import { Button, DialogContent } from '@mui/material';
8
+ import copy from 'copy-to-clipboard';
7
9
  import { observer } from 'mobx-react';
8
10
  import { makeStyles } from 'tss-react/mui';
9
- import copy from 'copy-to-clipboard';
10
11
  const MAX_REF_NAMES = 10000;
11
12
  const useStyles = makeStyles()(theme => ({
12
13
  container: {
@@ -26,7 +27,6 @@ const RefNameInfoDialog = observer(function ({ config, onClose, }) {
26
27
  const [copied, setCopied] = useState(false);
27
28
  const { rpcManager } = getSession(config);
28
29
  useEffect(() => {
29
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
30
30
  ;
31
31
  (async () => {
32
32
  try {
@@ -36,7 +36,6 @@ const RefNameInfoDialog = observer(function ({ config, onClose, }) {
36
36
  assemblyName,
37
37
  (await rpcManager.call(config.trackId, 'CoreGetRefNames', {
38
38
  adapterConfig,
39
- // hack for synteny adapters
40
39
  regions: [
41
40
  {
42
41
  assemblyName,
@@ -66,21 +65,18 @@ const RefNameInfoDialog = observer(function ({ config, onClose, }) {
66
65
  })
67
66
  .filter(f => !!f)
68
67
  .join('\n');
69
- return (React.createElement(Dialog, { open: true, title: "Reference sequence names used in track", onClose: onClose, maxWidth: "xl" },
70
- React.createElement(DialogContent, { className: classes.container }, error ? (React.createElement(ErrorMessage, { error: error })) : refNames === undefined ? (React.createElement(LoadingEllipses, { message: "Loading refNames" })) : (React.createElement(React.Fragment, null,
71
- React.createElement(Button, { variant: "contained", onClick: () => {
72
- copy(names
73
- .flatMap(([assemblyName, refNames]) => [
74
- `--- ${assemblyName} ---`,
75
- ...refNames,
76
- ])
77
- .filter(f => !!f)
78
- .join('\n'));
79
- setCopied(true);
80
- setTimeout(() => {
81
- setCopied(false);
82
- }, 1000);
83
- } }, copied ? 'Copied to clipboard!' : 'Copy ref names'),
84
- React.createElement("pre", { className: classes.refNames }, result))))));
68
+ return (_jsx(Dialog, { open: true, title: "Reference sequence names used in track", onClose: onClose, maxWidth: "xl", children: _jsx(DialogContent, { className: classes.container, children: error ? (_jsx(ErrorMessage, { error: error })) : refNames === undefined ? (_jsx(LoadingEllipses, { message: "Loading refNames" })) : (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "contained", onClick: () => {
69
+ copy(names
70
+ .flatMap(([assemblyName, refNames]) => [
71
+ `--- ${assemblyName} ---`,
72
+ ...refNames,
73
+ ])
74
+ .filter(f => !!f)
75
+ .join('\n'));
76
+ setCopied(true);
77
+ setTimeout(() => {
78
+ setCopied(false);
79
+ }, 1000);
80
+ }, children: copied ? 'Copied to clipboard!' : 'Copy ref names' }), _jsx("pre", { className: classes.refNames, children: result })] })) }) }));
85
81
  });
86
82
  export default RefNameInfoDialog;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbrowse/product-core",
3
- "version": "2.17.0",
3
+ "version": "3.0.0",
4
4
  "sideEffects": false,
5
5
  "description": "JBrowse 2 code shared between products but not used by plugins",
6
6
  "keywords": [
@@ -43,7 +43,7 @@
43
43
  },
44
44
  "dependencies": {
45
45
  "@babel/runtime": "^7.16.3",
46
- "@jbrowse/core": "^2.17.0",
46
+ "@jbrowse/core": "^3.0.0",
47
47
  "@mui/icons-material": "^6.0.0",
48
48
  "@mui/material": "^6.0.0",
49
49
  "copy-to-clipboard": "^3.3.1",
@@ -62,5 +62,5 @@
62
62
  "publishConfig": {
63
63
  "access": "public"
64
64
  },
65
- "gitHead": "eed30b5e671f8f7823652d7cecc51aa89226de46"
65
+ "gitHead": "2c6897f1fa732b1db5b094d1dca197e333e95319"
66
66
  }