@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.
- package/dist/RootModel/BaseRootModel.d.ts +6 -43
- package/dist/RootModel/BaseRootModel.js +5 -41
- package/dist/RootModel/FormatAbout.d.ts +0 -10
- package/dist/RootModel/FormatAbout.js +0 -10
- package/dist/RootModel/FormatDetails.d.ts +0 -17
- package/dist/RootModel/FormatDetails.js +0 -17
- package/dist/RootModel/HierarchicalConfig.d.ts +0 -19
- package/dist/RootModel/HierarchicalConfig.js +0 -19
- package/dist/RootModel/InternetAccounts.d.ts +4 -20
- package/dist/RootModel/InternetAccounts.js +0 -20
- package/dist/Session/BaseSession.d.ts +5 -96
- package/dist/Session/BaseSession.js +1 -63
- package/dist/Session/Connections.d.ts +5 -56
- package/dist/Session/Connections.js +0 -30
- package/dist/Session/DialogQueue.d.ts +3 -22
- package/dist/Session/DialogQueue.js +0 -17
- package/dist/Session/DrawerWidgets.d.ts +3 -63
- package/dist/Session/DrawerWidgets.js +2 -61
- package/dist/Session/MultipleViews.d.ts +8 -1760
- package/dist/Session/MultipleViews.js +2 -40
- package/dist/Session/ReferenceManagement.d.ts +2 -21
- package/dist/Session/ReferenceManagement.js +0 -23
- package/dist/Session/SessionTracks.d.ts +7 -1748
- package/dist/Session/SessionTracks.js +1 -21
- package/dist/Session/Themes.d.ts +3 -21
- package/dist/Session/Themes.js +1 -17
- package/dist/Session/Tracks.d.ts +6 -1737
- package/dist/Session/Tracks.js +0 -16
- package/dist/rpcWorker.d.ts +2 -2
- package/dist/rpcWorker.js +3 -17
- package/dist/ui/AboutDialog.d.ts +2 -3
- package/dist/ui/AboutDialog.js +2 -3
- package/dist/ui/AboutDialogContents.d.ts +2 -3
- package/dist/ui/AboutDialogContents.js +20 -53
- package/dist/ui/FileInfoPanel.d.ts +2 -3
- package/dist/ui/FileInfoPanel.js +5 -28
- package/dist/ui/RefNameInfoDialog.d.ts +2 -3
- package/dist/ui/RefNameInfoDialog.js +17 -44
- package/esm/RootModel/BaseRootModel.d.ts +6 -43
- package/esm/RootModel/BaseRootModel.js +6 -42
- package/esm/RootModel/FormatAbout.d.ts +0 -10
- package/esm/RootModel/FormatAbout.js +0 -10
- package/esm/RootModel/FormatDetails.d.ts +0 -17
- package/esm/RootModel/FormatDetails.js +0 -17
- package/esm/RootModel/HierarchicalConfig.d.ts +0 -19
- package/esm/RootModel/HierarchicalConfig.js +0 -19
- package/esm/RootModel/InternetAccounts.d.ts +4 -20
- package/esm/RootModel/InternetAccounts.js +0 -20
- package/esm/Session/BaseSession.d.ts +5 -96
- package/esm/Session/BaseSession.js +1 -63
- package/esm/Session/Connections.d.ts +5 -56
- package/esm/Session/Connections.js +1 -31
- package/esm/Session/DialogQueue.d.ts +3 -22
- package/esm/Session/DialogQueue.js +0 -17
- package/esm/Session/DrawerWidgets.d.ts +3 -63
- package/esm/Session/DrawerWidgets.js +2 -61
- package/esm/Session/MultipleViews.d.ts +8 -1760
- package/esm/Session/MultipleViews.js +2 -40
- package/esm/Session/ReferenceManagement.d.ts +2 -21
- package/esm/Session/ReferenceManagement.js +0 -23
- package/esm/Session/SessionTracks.d.ts +7 -1748
- package/esm/Session/SessionTracks.js +1 -21
- package/esm/Session/Themes.d.ts +3 -21
- package/esm/Session/Themes.js +1 -17
- package/esm/Session/Tracks.d.ts +6 -1737
- package/esm/Session/Tracks.js +0 -16
- package/esm/rpcWorker.d.ts +2 -2
- package/esm/rpcWorker.js +3 -17
- package/esm/ui/AboutDialog.d.ts +2 -3
- package/esm/ui/AboutDialog.js +3 -4
- package/esm/ui/AboutDialogContents.d.ts +2 -3
- package/esm/ui/AboutDialogContents.js +20 -30
- package/esm/ui/FileInfoPanel.d.ts +2 -3
- package/esm/ui/FileInfoPanel.js +5 -5
- package/esm/ui/RefNameInfoDialog.d.ts +2 -3
- package/esm/ui/RefNameInfoDialog.js +18 -22
- package/package.json +3 -3
package/esm/Session/Tracks.js
CHANGED
|
@@ -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
|
}
|
package/esm/rpcWorker.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
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
|
-
|
|
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
|
}
|
package/esm/ui/AboutDialog.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import
|
|
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
|
-
}):
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element;
|
package/esm/ui/AboutDialog.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import Dialog from '@jbrowse/core/ui/Dialog';
|
|
3
|
-
import {
|
|
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 (
|
|
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
|
|
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
|
-
}) =>
|
|
4
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
6
5
|
export default AboutDialogContents;
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
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
|
-
|
|
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 (
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
|
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
|
-
}):
|
|
4
|
+
}): import("react/jsx-runtime").JSX.Element;
|
package/esm/ui/FileInfoPanel.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
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('>', '>')}</pre>`,
|
|
34
34
|
}
|
|
35
35
|
: info || {};
|
|
36
|
-
return (
|
|
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
|
|
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
|
-
}) =>
|
|
5
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
7
6
|
export default RefNameInfoDialog;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import { readConfObject
|
|
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 (
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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": "
|
|
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": "^
|
|
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": "
|
|
65
|
+
"gitHead": "2c6897f1fa732b1db5b094d1dca197e333e95319"
|
|
66
66
|
}
|