@jbrowse/core 2.4.2 → 2.5.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/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +16 -0
- package/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +46 -0
- package/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +15 -0
- package/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +69 -0
- package/BaseFeatureWidget/BaseFeatureDetail/BasicField.d.ts +17 -0
- package/BaseFeatureWidget/BaseFeatureDetail/BasicField.js +23 -0
- package/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +12 -0
- package/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +26 -0
- package/BaseFeatureWidget/BaseFeatureDetail/DataGrid.d.ts +14 -0
- package/BaseFeatureWidget/BaseFeatureDetail/DataGrid.js +98 -0
- package/BaseFeatureWidget/BaseFeatureDetail/FieldName.d.ts +16 -0
- package/BaseFeatureWidget/BaseFeatureDetail/FieldName.js +32 -0
- package/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +17 -0
- package/BaseFeatureWidget/BaseFeatureDetail/UriField.js +31 -0
- package/BaseFeatureWidget/BaseFeatureDetail/UriLink.d.ts +6 -0
- package/BaseFeatureWidget/BaseFeatureDetail/UriLink.js +13 -0
- package/BaseFeatureWidget/{BaseFeatureDetail.d.ts → BaseFeatureDetail/index.d.ts} +4 -4
- package/BaseFeatureWidget/{BaseFeatureDetail.js → BaseFeatureDetail/index.js} +12 -9
- package/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +4 -0
- package/BaseFeatureWidget/BaseFeatureDetail/util.js +23 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/CDNASequence.d.ts +12 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/CDNASequence.js +25 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/CDSSequence.d.ts +5 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/CDSSequence.js +12 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/GenomicSequence.d.ts +5 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/GenomicSequence.js +14 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/ProteinSequence.d.ts +8 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/ProteinSequence.js +18 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.d.ts +2 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +146 -0
- package/BaseFeatureWidget/{SequenceFeatureSettingsDialog.d.ts → SequenceFeatureDetails/SequenceFeatureSettingsDialog.d.ts} +0 -1
- package/BaseFeatureWidget/{SequenceFeatureSettingsDialog.js → SequenceFeatureDetails/SequenceFeatureSettingsDialog.js} +1 -1
- package/BaseFeatureWidget/{SequenceHelpDialog.d.ts → SequenceFeatureDetails/SequenceHelpDialog.d.ts} +0 -1
- package/BaseFeatureWidget/{SequenceHelpDialog.js → SequenceFeatureDetails/SequenceHelpDialog.js} +6 -9
- package/BaseFeatureWidget/{SequencePanel.d.ts → SequenceFeatureDetails/SequencePanel.d.ts} +1 -1
- package/BaseFeatureWidget/{SequencePanel.js → SequenceFeatureDetails/SequencePanel.js} +10 -8
- package/BaseFeatureWidget/SequenceFeatureDetails/hooks.d.ts +10 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/hooks.js +73 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/index.d.ts +2 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/index.js +68 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/util.d.ts +6 -0
- package/BaseFeatureWidget/SequenceFeatureDetails/util.js +11 -0
- package/BaseFeatureWidget/index.d.ts +4 -1
- package/BaseFeatureWidget/index.js +29 -17
- package/BaseFeatureWidget/types.d.ts +2 -2
- package/Plugin.d.ts +1 -1
- package/PluginLoader.js +17 -0
- package/PluginManager.d.ts +5 -2
- package/PluginManager.js +3 -0
- package/ReExports/list.js +1 -0
- package/ReExports/modules.d.ts +5 -2
- package/ReExports/modules.js +7 -4
- package/TextSearch/TextSearchManager.d.ts +2 -9
- package/assemblyManager/assembly.d.ts +91 -8
- package/assemblyManager/assembly.js +92 -8
- package/assemblyManager/assemblyConfigSchema.d.ts +50 -1
- package/assemblyManager/assemblyManager.d.ts +115 -58
- package/assemblyManager/assemblyManager.js +60 -12
- package/configuration/configurationSchema.d.ts +14 -16
- package/configuration/configurationSchema.js +4 -2
- package/configuration/index.d.ts +1 -1
- package/configuration/types.d.ts +13 -0
- package/configuration/types.js +2 -0
- package/configuration/util.d.ts +5 -3
- package/configuration/util.js +18 -18
- package/data_adapters/BaseAdapter/BaseAdapter.d.ts +23 -0
- package/data_adapters/BaseAdapter/BaseAdapter.js +37 -0
- package/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +128 -0
- package/data_adapters/{BaseAdapter.js → BaseAdapter/BaseFeatureDataAdapter.js} +58 -88
- package/data_adapters/BaseAdapter/BaseOptions.d.ts +16 -0
- package/data_adapters/BaseAdapter/BaseOptions.js +2 -0
- package/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.d.ts +9 -0
- package/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.js +2 -0
- package/data_adapters/BaseAdapter/BaseSequenceAdapter.d.ts +13 -0
- package/data_adapters/BaseAdapter/BaseSequenceAdapter.js +10 -0
- package/data_adapters/BaseAdapter/BaseTextSearchAdapter.d.ts +6 -0
- package/data_adapters/BaseAdapter/BaseTextSearchAdapter.js +2 -0
- package/data_adapters/BaseAdapter/RegionsAdapter.d.ts +6 -0
- package/data_adapters/BaseAdapter/RegionsAdapter.js +2 -0
- package/data_adapters/BaseAdapter/index.d.ts +15 -0
- package/data_adapters/BaseAdapter/index.js +25 -0
- package/data_adapters/BaseAdapter/types.d.ts +21 -0
- package/data_adapters/BaseAdapter/types.js +2 -0
- package/data_adapters/BaseAdapter/util.d.ts +12 -0
- package/data_adapters/BaseAdapter/util.js +23 -0
- package/data_adapters/CytobandAdapter/configSchema.d.ts +11 -1
- package/package.json +4 -4
- package/pluggableElementTypes/AdapterType.d.ts +1 -1
- package/pluggableElementTypes/ConnectionType.d.ts +1 -1
- package/pluggableElementTypes/DisplayType.d.ts +1 -1
- package/pluggableElementTypes/InternetAccountType.d.ts +1 -1
- package/pluggableElementTypes/TextSearchAdapterType.d.ts +1 -1
- package/pluggableElementTypes/models/BaseTrackModel.d.ts +1 -1
- package/pluggableElementTypes/models/BaseTrackModel.js +3 -2
- package/pluggableElementTypes/models/InternetAccountModel.d.ts +30 -0
- package/pluggableElementTypes/models/InternetAccountModel.js +6 -1
- package/pluggableElementTypes/models/baseConnectionConfig.d.ts +18 -1
- package/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +42 -1
- package/pluggableElementTypes/models/baseTrackConfig.d.ts +118 -1
- package/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +0 -1
- package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +1 -1
- package/pluggableElementTypes/renderers/RendererType.d.ts +1 -1
- package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.d.ts +0 -1
- package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +1 -1
- package/rpc/RpcManager.d.ts +8 -1
- package/rpc/RpcManager.js +1 -1
- package/rpc/baseRpcConfig.d.ts +10 -1
- package/rpc/configSchema.d.ts +14 -1
- package/rpc/coreRpcMethods.d.ts +1 -1
- package/rpc/coreRpcMethods.js +3 -3
- package/rpc/mainThreadRpcConfig.d.ts +7 -1
- package/rpc/methods/{CoreEstimateRegionStats.d.ts → CoreGetFeatureDensityStats.d.ts} +2 -2
- package/rpc/methods/{CoreEstimateRegionStats.js → CoreGetFeatureDensityStats.js} +4 -4
- package/rpc/methods/CoreGetFeatureDetails.js +5 -5
- package/rpc/webWorkerRpcConfig.d.ts +7 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/ui/AboutDialog.d.ts +0 -1
- package/ui/AppLogo.d.ts +0 -1
- package/ui/AssemblySelector.d.ts +0 -1
- package/ui/CascadingMenu.d.ts +0 -1
- package/ui/ColorPicker.d.ts +0 -1
- package/ui/Dialog.d.ts +0 -1
- package/ui/Dialog.js +14 -1
- package/ui/DrawerWidget.d.ts +1 -2
- package/ui/DrawerWidget.js +5 -3
- package/ui/DropDownMenu.d.ts +0 -1
- package/ui/ErrorMessage.d.ts +0 -1
- package/ui/FactoryResetDialog.d.ts +0 -1
- package/ui/FatalErrorDialog.d.ts +0 -1
- package/ui/FileSelector/FileSelector.d.ts +0 -1
- package/ui/FileSelector/LocalFileChooser.d.ts +0 -1
- package/ui/FileSelector/UrlChooser.d.ts +0 -1
- package/ui/Icons.d.ts +0 -1
- package/ui/LoadingEllipses.d.ts +0 -1
- package/ui/Logo.d.ts +0 -1
- package/ui/PrerenderedCanvas.d.ts +0 -1
- package/ui/ResizeBar.js +1 -1
- package/ui/ResizeHandle.d.ts +0 -1
- package/ui/ReturnToImportFormDialog.d.ts +0 -1
- package/ui/SanitizedHTML.d.ts +0 -1
- package/ui/SanitizedHTML.js +6 -0
- package/ui/Snackbar.d.ts +0 -1
- package/ui/Tooltip.d.ts +0 -1
- package/ui/ViewContainerTitle.d.ts +0 -1
- package/ui/ViewLauncher.d.ts +0 -1
- package/ui/ViewMenu.d.ts +1 -2
- package/ui/ViewPanel.d.ts +0 -1
- package/ui/react-colorful.d.ts +1 -1
- package/ui/theme.js +3 -18
- package/util/index.d.ts +4 -2
- package/util/index.js +13 -4
- package/util/layouts/PrecomputedMultiLayout.d.ts +1 -1
- package/util/stats.d.ts +5 -5
- package/util/types/index.d.ts +3 -1
- package/util/types/mst.d.ts +12 -9
- package/BaseFeatureWidget/SequenceBox.d.ts +0 -29
- package/BaseFeatureWidget/SequenceBox.js +0 -63
- package/BaseFeatureWidget/SequenceFeatureDetails.d.ts +0 -3
- package/BaseFeatureWidget/SequenceFeatureDetails.js +0 -230
- package/data_adapters/BaseAdapter.d.ts +0 -138
- /package/BaseFeatureWidget/{test_data → SequenceFeatureDetails/test_data}/DLGAP3.d.ts +0 -0
- /package/BaseFeatureWidget/{test_data → SequenceFeatureDetails/test_data}/DLGAP3.js +0 -0
- /package/BaseFeatureWidget/{test_data → SequenceFeatureDetails/test_data}/NCDN.d.ts +0 -0
- /package/BaseFeatureWidget/{test_data → SequenceFeatureDetails/test_data}/NCDN.js +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare const useStyles: (params: void, styleOverrides?: {
|
|
3
|
+
props: any;
|
|
4
|
+
ownerState?: Record<string, unknown> | undefined;
|
|
5
|
+
} | undefined) => {
|
|
6
|
+
classes: Record<"field" | "fieldSubvalue", string>;
|
|
7
|
+
theme: import("@mui/material").Theme;
|
|
8
|
+
css: import("tss-react").Css;
|
|
9
|
+
cx: import("tss-react").Cx;
|
|
10
|
+
};
|
|
11
|
+
export default function ArrayValue({ name, value, description, prefix, }: {
|
|
12
|
+
description?: React.ReactNode;
|
|
13
|
+
name: string;
|
|
14
|
+
value: unknown[];
|
|
15
|
+
prefix?: string[];
|
|
16
|
+
}): JSX.Element;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.useStyles = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const is_object_1 = __importDefault(require("is-object"));
|
|
9
|
+
const mui_1 = require("tss-react/mui");
|
|
10
|
+
// locals
|
|
11
|
+
const Attributes_1 = __importDefault(require("./Attributes"));
|
|
12
|
+
const FieldName_1 = __importDefault(require("./FieldName"));
|
|
13
|
+
const BasicValue_1 = __importDefault(require("./BasicValue"));
|
|
14
|
+
exports.useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
15
|
+
field: {
|
|
16
|
+
display: 'flex',
|
|
17
|
+
flexWrap: 'wrap',
|
|
18
|
+
},
|
|
19
|
+
fieldSubvalue: {
|
|
20
|
+
wordBreak: 'break-word',
|
|
21
|
+
maxHeight: 300,
|
|
22
|
+
padding: theme.spacing(0.5),
|
|
23
|
+
background: theme.palette.action.hover,
|
|
24
|
+
border: `1px solid ${theme.palette.action.selected}`,
|
|
25
|
+
boxSizing: 'border-box',
|
|
26
|
+
overflow: 'auto',
|
|
27
|
+
},
|
|
28
|
+
}));
|
|
29
|
+
function ArrayValue({ name, value, description, prefix = [], }) {
|
|
30
|
+
const { classes } = (0, exports.useStyles)();
|
|
31
|
+
if (value.length === 1) {
|
|
32
|
+
return (0, is_object_1.default)(value[0]) ? (react_1.default.createElement(Attributes_1.default, { attributes: value[0], prefix: [...prefix, name] })) : (react_1.default.createElement("div", { className: classes.field },
|
|
33
|
+
react_1.default.createElement(FieldName_1.default, { prefix: prefix, description: description, name: name }),
|
|
34
|
+
react_1.default.createElement(BasicValue_1.default, { value: value[0] })));
|
|
35
|
+
}
|
|
36
|
+
else if (value.every(val => (0, is_object_1.default)(val))) {
|
|
37
|
+
return (react_1.default.createElement(react_1.default.Fragment, null, value.map((val, i) => (react_1.default.createElement(Attributes_1.default, { key: JSON.stringify(val) + '-' + i, attributes: val, prefix: [...prefix, name + '-' + i] })))));
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
return (react_1.default.createElement("div", { className: classes.field },
|
|
41
|
+
react_1.default.createElement(FieldName_1.default, { prefix: prefix, description: description, name: name }),
|
|
42
|
+
value.map((val, i) => (react_1.default.createElement("div", { key: JSON.stringify(val) + '-' + i, className: classes.fieldSubvalue },
|
|
43
|
+
react_1.default.createElement(BasicValue_1.default, { value: val }))))));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.default = ArrayValue;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export default function Attributes(props: {
|
|
3
|
+
attributes: {
|
|
4
|
+
[key: string]: unknown;
|
|
5
|
+
__jbrowsefmt?: {
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
omit?: string[];
|
|
10
|
+
omitSingleLevel?: string[];
|
|
11
|
+
formatter?: (val: unknown, key: string) => React.ReactNode;
|
|
12
|
+
descriptions?: Record<string, React.ReactNode>;
|
|
13
|
+
prefix?: string[];
|
|
14
|
+
hideUris?: boolean;
|
|
15
|
+
}): JSX.Element;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const util_1 = require("./util");
|
|
8
|
+
const DataGrid_1 = __importDefault(require("./DataGrid"));
|
|
9
|
+
const ArrayValue_1 = __importDefault(require("./ArrayValue"));
|
|
10
|
+
const is_object_1 = __importDefault(require("is-object"));
|
|
11
|
+
const util_2 = require("../../util");
|
|
12
|
+
const UriField_1 = __importDefault(require("./UriField"));
|
|
13
|
+
const BasicField_1 = __importDefault(require("./BasicField"));
|
|
14
|
+
const MAX_FIELD_NAME_WIDTH = 170;
|
|
15
|
+
// these are always omitted as too detailed
|
|
16
|
+
const globalOmit = [
|
|
17
|
+
'__jbrowsefmt',
|
|
18
|
+
'length',
|
|
19
|
+
'position',
|
|
20
|
+
'subfeatures',
|
|
21
|
+
'uniqueId',
|
|
22
|
+
'exonFrames',
|
|
23
|
+
'parentId',
|
|
24
|
+
'thickStart',
|
|
25
|
+
'thickEnd',
|
|
26
|
+
];
|
|
27
|
+
// pick using a path from an object, similar to _.get from lodash with special
|
|
28
|
+
// logic for Descriptions from e.g. VCF headers
|
|
29
|
+
//
|
|
30
|
+
// @param arr example ['a','b'], obj = {a:{b:'hello}}
|
|
31
|
+
// @returns hello (with special addition to grab description also)
|
|
32
|
+
function accessNested(arr, obj = {}) {
|
|
33
|
+
let obj2 = obj;
|
|
34
|
+
arr.forEach(elt => {
|
|
35
|
+
if (obj2) {
|
|
36
|
+
obj2 = obj[elt];
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
return typeof obj === 'string'
|
|
40
|
+
? obj
|
|
41
|
+
: typeof (obj === null || obj === void 0 ? void 0 : obj.Description) === 'string'
|
|
42
|
+
? obj.Description
|
|
43
|
+
: undefined;
|
|
44
|
+
}
|
|
45
|
+
function Attributes(props) {
|
|
46
|
+
const { attributes, omit = [], omitSingleLevel = [], descriptions, formatter = val => val, hideUris, prefix = [], } = props;
|
|
47
|
+
const omits = new Set([...omit, ...globalOmit, ...omitSingleLevel]);
|
|
48
|
+
const { __jbrowsefmt, ...rest } = attributes;
|
|
49
|
+
const formattedAttributes = { ...rest, ...__jbrowsefmt };
|
|
50
|
+
const maxLabelWidth = (0, util_1.generateMaxWidth)(Object.entries(formattedAttributes).filter(([k, v]) => v !== undefined && !omits.has(k)), prefix);
|
|
51
|
+
return (react_1.default.createElement(react_1.default.Fragment, null, Object.entries(formattedAttributes)
|
|
52
|
+
.filter(([k, v]) => v !== undefined && !omits.has(k))
|
|
53
|
+
.map(([key, value]) => {
|
|
54
|
+
const description = accessNested([...prefix, key], descriptions);
|
|
55
|
+
if (Array.isArray(value)) {
|
|
56
|
+
// check if it looks like an array of objects, which could be used
|
|
57
|
+
// in data grid
|
|
58
|
+
return value.length > 1 && value.every(val => (0, is_object_1.default)(val)) ? (react_1.default.createElement(DataGrid_1.default, { key: key, name: key, prefix: prefix, value: value })) : (react_1.default.createElement(ArrayValue_1.default, { key: key, name: key, value: value, description: description, prefix: prefix }));
|
|
59
|
+
}
|
|
60
|
+
else if ((0, is_object_1.default)(value)) {
|
|
61
|
+
const { omitSingleLevel, ...rest } = props;
|
|
62
|
+
return (0, util_2.isUriLocation)(value) ? (hideUris ? null : (react_1.default.createElement(UriField_1.default, { key: key, name: key, prefix: prefix, value: value }))) : (react_1.default.createElement(Attributes, { ...rest, key: key, attributes: value, descriptions: descriptions, prefix: [...prefix, key] }));
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
return (react_1.default.createElement(BasicField_1.default, { key: key, name: key, value: formatter(value, key), description: description, prefix: prefix, width: Math.min(maxLabelWidth, MAX_FIELD_NAME_WIDTH) }));
|
|
66
|
+
}
|
|
67
|
+
})));
|
|
68
|
+
}
|
|
69
|
+
exports.default = Attributes;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare const useStyles: (params: void, styleOverrides?: {
|
|
3
|
+
props: any;
|
|
4
|
+
ownerState?: Record<string, unknown> | undefined;
|
|
5
|
+
} | undefined) => {
|
|
6
|
+
classes: Record<"field", string>;
|
|
7
|
+
theme: import("@mui/material").Theme;
|
|
8
|
+
css: import("tss-react").Css;
|
|
9
|
+
cx: import("tss-react").Cx;
|
|
10
|
+
};
|
|
11
|
+
export default function BasicField({ name, value, description, prefix, width, }: {
|
|
12
|
+
description?: React.ReactNode;
|
|
13
|
+
name: string;
|
|
14
|
+
value: unknown;
|
|
15
|
+
prefix?: string[];
|
|
16
|
+
width?: number;
|
|
17
|
+
}): JSX.Element | null;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.useStyles = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const mui_1 = require("tss-react/mui");
|
|
9
|
+
const BasicValue_1 = __importDefault(require("./BasicValue"));
|
|
10
|
+
const FieldName_1 = __importDefault(require("./FieldName"));
|
|
11
|
+
exports.useStyles = (0, mui_1.makeStyles)()({
|
|
12
|
+
field: {
|
|
13
|
+
display: 'flex',
|
|
14
|
+
flexWrap: 'wrap',
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
function BasicField({ name, value, description, prefix, width, }) {
|
|
18
|
+
const { classes } = (0, exports.useStyles)();
|
|
19
|
+
return value !== null && value !== undefined ? (react_1.default.createElement("div", { className: classes.field },
|
|
20
|
+
react_1.default.createElement(FieldName_1.default, { prefix: prefix, description: description, name: name, width: width }),
|
|
21
|
+
react_1.default.createElement(BasicValue_1.default, { value: value }))) : null;
|
|
22
|
+
}
|
|
23
|
+
exports.default = BasicField;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const useStyles: (params: void, styleOverrides?: {
|
|
2
|
+
props: any;
|
|
3
|
+
ownerState?: Record<string, unknown> | undefined;
|
|
4
|
+
} | undefined) => {
|
|
5
|
+
classes: Record<"fieldValue", string>;
|
|
6
|
+
theme: import("@mui/material").Theme;
|
|
7
|
+
css: import("tss-react").Css;
|
|
8
|
+
cx: import("tss-react").Cx;
|
|
9
|
+
};
|
|
10
|
+
export default function BasicValue({ value }: {
|
|
11
|
+
value: unknown;
|
|
12
|
+
}): JSX.Element;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.useStyles = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const mui_1 = require("tss-react/mui");
|
|
9
|
+
const ui_1 = require("../../ui");
|
|
10
|
+
const is_object_1 = __importDefault(require("is-object"));
|
|
11
|
+
const material_1 = require("@mui/material");
|
|
12
|
+
exports.useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
13
|
+
fieldValue: {
|
|
14
|
+
wordBreak: 'break-word',
|
|
15
|
+
maxHeight: 300,
|
|
16
|
+
fontSize: 12,
|
|
17
|
+
padding: theme.spacing(0.5),
|
|
18
|
+
overflow: 'auto',
|
|
19
|
+
},
|
|
20
|
+
}));
|
|
21
|
+
function BasicValue({ value }) {
|
|
22
|
+
const { classes } = (0, exports.useStyles)();
|
|
23
|
+
const isLink = `${value}`.match(/^https?:\/\//);
|
|
24
|
+
return (react_1.default.createElement("div", { className: classes.fieldValue }, react_1.default.isValidElement(value) ? (value) : isLink ? (react_1.default.createElement(material_1.Link, { href: `${value}` }, `${value}`)) : (react_1.default.createElement(ui_1.SanitizedHTML, { html: (0, is_object_1.default)(value) ? JSON.stringify(value) : String(value) }))));
|
|
25
|
+
}
|
|
26
|
+
exports.default = BasicValue;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const useStyles: (params: void, styleOverrides?: {
|
|
2
|
+
props: any;
|
|
3
|
+
ownerState?: Record<string, unknown> | undefined;
|
|
4
|
+
} | undefined) => {
|
|
5
|
+
classes: Record<"margin", string>;
|
|
6
|
+
theme: import("@mui/material").Theme;
|
|
7
|
+
css: import("tss-react").Css;
|
|
8
|
+
cx: import("tss-react").Cx;
|
|
9
|
+
};
|
|
10
|
+
export default function DataGridDetails({ value, prefix, name, }: {
|
|
11
|
+
name: string;
|
|
12
|
+
prefix?: string[];
|
|
13
|
+
value: Record<string, unknown>[];
|
|
14
|
+
}): JSX.Element | null;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.useStyles = void 0;
|
|
30
|
+
const react_1 = __importStar(require("react"));
|
|
31
|
+
const mui_1 = require("tss-react/mui");
|
|
32
|
+
const x_data_grid_1 = require("@mui/x-data-grid");
|
|
33
|
+
const material_1 = require("@mui/material");
|
|
34
|
+
// locals
|
|
35
|
+
const util_1 = require("../../util");
|
|
36
|
+
const ResizeBar_1 = __importStar(require("../../ui/ResizeBar"));
|
|
37
|
+
const FieldName_1 = __importDefault(require("./FieldName"));
|
|
38
|
+
const UriLink_1 = __importDefault(require("./UriLink"));
|
|
39
|
+
exports.useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
40
|
+
margin: {
|
|
41
|
+
margin: theme.spacing(1),
|
|
42
|
+
width: '100%',
|
|
43
|
+
},
|
|
44
|
+
}));
|
|
45
|
+
function DataGridDetails({ value, prefix, name, }) {
|
|
46
|
+
const { classes } = (0, exports.useStyles)();
|
|
47
|
+
const { ref, scrollLeft } = (0, ResizeBar_1.useResizeBar)();
|
|
48
|
+
const [checked, setChecked] = (0, react_1.useState)(false);
|
|
49
|
+
const keys = Object.keys(value[0]).sort();
|
|
50
|
+
const unionKeys = new Set(keys);
|
|
51
|
+
// avoids key 'id' from being used in row data
|
|
52
|
+
const rows = Object.entries(value).map(([k, val]) => {
|
|
53
|
+
const { id, ...rest } = val;
|
|
54
|
+
return {
|
|
55
|
+
id: k,
|
|
56
|
+
identifier: id,
|
|
57
|
+
...rest,
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
for (const val of value) {
|
|
61
|
+
for (const k of Object.keys(val)) {
|
|
62
|
+
unionKeys.add(k);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// avoids key 'id' from being used in column names, and tries
|
|
66
|
+
// to make it at the start of the colNames array
|
|
67
|
+
let colNames;
|
|
68
|
+
if (unionKeys.has('id')) {
|
|
69
|
+
unionKeys.delete('id');
|
|
70
|
+
colNames = ['identifier', ...unionKeys];
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
colNames = [...unionKeys];
|
|
74
|
+
}
|
|
75
|
+
const [widths, setWidths] = (0, react_1.useState)(colNames.map(e => (0, util_1.measureGridWidth)(rows.map(r => r[e]))));
|
|
76
|
+
if (unionKeys.size < keys.length + 5) {
|
|
77
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
78
|
+
react_1.default.createElement(FieldName_1.default, { prefix: prefix, name: name }),
|
|
79
|
+
react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Checkbox, { checked: checked, onChange: event => setChecked(event.target.checked) }), label: react_1.default.createElement(material_1.Typography, { variant: "body2" }, "Show options") }),
|
|
80
|
+
react_1.default.createElement("div", { className: classes.margin, ref: ref },
|
|
81
|
+
react_1.default.createElement(ResizeBar_1.default, { widths: widths, setWidths: setWidths, scrollLeft: scrollLeft }),
|
|
82
|
+
react_1.default.createElement(x_data_grid_1.DataGrid, { disableRowSelectionOnClick: true,
|
|
83
|
+
// @ts-expect-error the rows gets confused by the renderCell of the
|
|
84
|
+
// columns below
|
|
85
|
+
rows: rows, rowCount: 25, rowHeight: 25, columnHeaderHeight: 35, hideFooter: rows.length < 25, slots: { toolbar: checked ? x_data_grid_1.GridToolbar : null }, slotProps: {
|
|
86
|
+
toolbar: { printOptions: { disableToolbarButton: true } },
|
|
87
|
+
}, columns: colNames.map((val, index) => ({
|
|
88
|
+
field: val,
|
|
89
|
+
renderCell: params => {
|
|
90
|
+
const value = params.value;
|
|
91
|
+
return (0, util_1.isUriLocation)(value) ? (react_1.default.createElement(UriLink_1.default, { value: value })) : (react_1.default.createElement(react_1.default.Fragment, null, (0, util_1.getStr)(value)));
|
|
92
|
+
},
|
|
93
|
+
width: widths[index],
|
|
94
|
+
})) }))));
|
|
95
|
+
}
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
exports.default = DataGridDetails;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare const useStyles: (params: void, styleOverrides?: {
|
|
3
|
+
props: any;
|
|
4
|
+
ownerState?: Record<string, unknown> | undefined;
|
|
5
|
+
} | undefined) => {
|
|
6
|
+
classes: Record<"fieldDescription" | "fieldName", string>;
|
|
7
|
+
theme: import("@mui/material").Theme;
|
|
8
|
+
css: import("tss-react").Css;
|
|
9
|
+
cx: import("tss-react").Cx;
|
|
10
|
+
};
|
|
11
|
+
export default function FieldName({ description, name, width, prefix, }: {
|
|
12
|
+
description?: React.ReactNode;
|
|
13
|
+
name: string;
|
|
14
|
+
prefix?: string[];
|
|
15
|
+
width?: number;
|
|
16
|
+
}): JSX.Element;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.useStyles = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const material_1 = require("@mui/material");
|
|
9
|
+
const mui_1 = require("tss-react/mui");
|
|
10
|
+
exports.useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
11
|
+
fieldDescription: {
|
|
12
|
+
'&:hover': {
|
|
13
|
+
background: theme.palette.mode === 'dark' ? '#e65100' : 'yellow',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
fieldName: {
|
|
17
|
+
wordBreak: 'break-all',
|
|
18
|
+
minWidth: 90,
|
|
19
|
+
borderBottom: '1px solid #0003',
|
|
20
|
+
fontSize: 12,
|
|
21
|
+
background: theme.palette.action.disabledBackground,
|
|
22
|
+
marginRight: theme.spacing(1),
|
|
23
|
+
padding: theme.spacing(0.5),
|
|
24
|
+
},
|
|
25
|
+
}));
|
|
26
|
+
function FieldName({ description, name, width, prefix = [], }) {
|
|
27
|
+
const { classes, cx } = (0, exports.useStyles)();
|
|
28
|
+
const val = [...prefix, name].join('.');
|
|
29
|
+
return description ? (react_1.default.createElement(material_1.Tooltip, { title: description, placement: "left" },
|
|
30
|
+
react_1.default.createElement("div", { className: cx(classes.fieldDescription, classes.fieldName) }, val))) : (react_1.default.createElement("div", { className: classes.fieldName, style: { width: width } }, val));
|
|
31
|
+
}
|
|
32
|
+
exports.default = FieldName;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const useStyles: (params: void, styleOverrides?: {
|
|
2
|
+
props: any;
|
|
3
|
+
ownerState?: Record<string, unknown> | undefined;
|
|
4
|
+
} | undefined) => {
|
|
5
|
+
classes: Record<"field", string>;
|
|
6
|
+
theme: import("@mui/material").Theme;
|
|
7
|
+
css: import("tss-react").Css;
|
|
8
|
+
cx: import("tss-react").Cx;
|
|
9
|
+
};
|
|
10
|
+
export default function UriField({ value, prefix, name, }: {
|
|
11
|
+
value: {
|
|
12
|
+
uri: string;
|
|
13
|
+
baseUri?: string;
|
|
14
|
+
};
|
|
15
|
+
name: string;
|
|
16
|
+
prefix: string[];
|
|
17
|
+
}): JSX.Element;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.useStyles = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const FieldName_1 = __importDefault(require("./FieldName"));
|
|
9
|
+
const mui_1 = require("tss-react/mui");
|
|
10
|
+
const BasicValue_1 = __importDefault(require("./BasicValue"));
|
|
11
|
+
exports.useStyles = (0, mui_1.makeStyles)()({
|
|
12
|
+
field: {
|
|
13
|
+
display: 'flex',
|
|
14
|
+
flexWrap: 'wrap',
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
function UriField({ value, prefix, name, }) {
|
|
18
|
+
const { classes } = (0, exports.useStyles)();
|
|
19
|
+
const { uri, baseUri = '' } = value;
|
|
20
|
+
let href;
|
|
21
|
+
try {
|
|
22
|
+
href = new URL(uri, baseUri).href;
|
|
23
|
+
}
|
|
24
|
+
catch (e) {
|
|
25
|
+
href = uri;
|
|
26
|
+
}
|
|
27
|
+
return (react_1.default.createElement("div", { className: classes.field },
|
|
28
|
+
react_1.default.createElement(FieldName_1.default, { prefix: prefix, name: name }),
|
|
29
|
+
react_1.default.createElement(BasicValue_1.default, { value: href })));
|
|
30
|
+
}
|
|
31
|
+
exports.default = UriField;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const util_1 = require("../../util");
|
|
8
|
+
const ui_1 = require("../../ui");
|
|
9
|
+
function UriLink({ value, }) {
|
|
10
|
+
const href = (0, util_1.getUriLink)(value);
|
|
11
|
+
return react_1.default.createElement(ui_1.SanitizedHTML, { html: `<a href="${href}">${href}</a>` });
|
|
12
|
+
}
|
|
13
|
+
exports.default = UriLink;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { IAnyStateTreeNode } from 'mobx-state-tree';
|
|
3
|
-
import { BaseCardProps, BaseProps } from '
|
|
4
|
-
import {
|
|
3
|
+
import { BaseCardProps, BaseProps } from '../types';
|
|
4
|
+
import { SimpleFeatureSerialized } from '../../util/simpleFeature';
|
|
5
5
|
export declare const useStyles: (params: void, styleOverrides?: {
|
|
6
6
|
props: any;
|
|
7
7
|
ownerState?: Record<string, unknown> | undefined;
|
|
8
8
|
} | undefined) => {
|
|
9
|
-
classes: Record<"
|
|
9
|
+
classes: Record<"expandIcon" | "expansionPanelDetails" | "field" | "fieldDescription" | "fieldName" | "fieldValue" | "fieldSubvalue", string>;
|
|
10
10
|
theme: import("@mui/material").Theme;
|
|
11
11
|
css: import("tss-react").Css;
|
|
12
12
|
cx: import("tss-react").Cx;
|
|
@@ -53,7 +53,7 @@ export interface BaseInputProps extends BaseCardProps {
|
|
|
53
53
|
}
|
|
54
54
|
export declare function FeatureDetails(props: {
|
|
55
55
|
model: IAnyStateTreeNode;
|
|
56
|
-
feature:
|
|
56
|
+
feature: SimpleFeatureSerialized;
|
|
57
57
|
depth?: number;
|
|
58
58
|
omit?: string[];
|
|
59
59
|
formatter?: (val: unknown, key: string) => React.ReactNode;
|
|
@@ -38,10 +38,10 @@ const is_object_1 = __importDefault(require("is-object"));
|
|
|
38
38
|
// icons
|
|
39
39
|
const ExpandMore_1 = __importDefault(require("@mui/icons-material/ExpandMore"));
|
|
40
40
|
// locals
|
|
41
|
-
const util_1 = require("
|
|
42
|
-
const ui_1 = require("
|
|
43
|
-
const SequenceFeatureDetails_1 = __importDefault(require("
|
|
44
|
-
const util_2 = require("
|
|
41
|
+
const util_1 = require("../../util");
|
|
42
|
+
const ui_1 = require("../../ui");
|
|
43
|
+
const SequenceFeatureDetails_1 = __importDefault(require("../SequenceFeatureDetails"));
|
|
44
|
+
const util_2 = require("../util");
|
|
45
45
|
const MAX_FIELD_NAME_WIDTH = 170;
|
|
46
46
|
// these are always omitted as too detailed
|
|
47
47
|
const globalOmit = [
|
|
@@ -254,7 +254,7 @@ function DataGridDetails({ value, prefix, name, }) {
|
|
|
254
254
|
height,
|
|
255
255
|
width: '100%',
|
|
256
256
|
} },
|
|
257
|
-
react_1.default.createElement(x_data_grid_1.DataGrid, {
|
|
257
|
+
react_1.default.createElement(x_data_grid_1.DataGrid, { disableRowSelectionOnClick: true, rowHeight: rowHeight, rows: rows, hideFooterSelectedRowCount: true, columns: columns, hideFooter: hideFoot }))));
|
|
258
258
|
}
|
|
259
259
|
return null;
|
|
260
260
|
}
|
|
@@ -337,7 +337,7 @@ function generateTitle(name, id, type) {
|
|
|
337
337
|
}
|
|
338
338
|
function FeatureDetails(props) {
|
|
339
339
|
const { omit = [], model, feature, depth = 0 } = props;
|
|
340
|
-
const { mate, name = '', id = '', type = '', subfeatures } = feature;
|
|
340
|
+
const { mate, name = '', id = '', type = '', subfeatures, uniqueId } = feature;
|
|
341
341
|
const pm = (0, util_1.getEnv)(model).pluginManager;
|
|
342
342
|
const session = (0, util_1.getSession)(model);
|
|
343
343
|
const ExtraPanel = pm.evaluateExtensionPoint('Core-extraFeaturePanel', null, {
|
|
@@ -351,7 +351,7 @@ function FeatureDetails(props) {
|
|
|
351
351
|
mate ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
352
352
|
react_1.default.createElement(material_1.Divider, null),
|
|
353
353
|
react_1.default.createElement(material_1.Typography, null, "Mate details"),
|
|
354
|
-
react_1.default.createElement(CoreDetails, { ...props, feature: mate }))) : null,
|
|
354
|
+
react_1.default.createElement(CoreDetails, { ...props, feature: { ...mate, uniqueId: uniqueId + '-mate' } }))) : null,
|
|
355
355
|
react_1.default.createElement(material_1.Divider, null),
|
|
356
356
|
react_1.default.createElement(material_1.Typography, null, "Attributes"),
|
|
357
357
|
react_1.default.createElement(Attributes, { attributes: feature, ...props, omit: omit, omitSingleLevel: coreDetails }),
|
|
@@ -361,11 +361,14 @@ function FeatureDetails(props) {
|
|
|
361
361
|
react_1.default.createElement(material_1.Divider, null),
|
|
362
362
|
react_1.default.createElement(BaseCard, { title: ExtraPanel.name },
|
|
363
363
|
react_1.default.createElement(ExtraPanel.Component, { ...props })))) : null,
|
|
364
|
-
(subfeatures === null || subfeatures === void 0 ? void 0 : subfeatures.length) ? (react_1.default.createElement(BaseCard, { title: "Subfeatures", defaultExpanded: depth < 1 }, subfeatures.map(sub => (react_1.default.createElement(FeatureDetails, { key: JSON.stringify(sub), feature: sub, model: model, depth: depth + 1 }))))) : null));
|
|
364
|
+
(subfeatures === null || subfeatures === void 0 ? void 0 : subfeatures.length) ? (react_1.default.createElement(BaseCard, { title: "Subfeatures", defaultExpanded: depth < 1 }, subfeatures.map((sub, idx) => (react_1.default.createElement(FeatureDetails, { key: JSON.stringify(sub), feature: { ...sub, uniqueId: `${uniqueId}_${idx}` }, model: model, depth: depth + 1 }))))) : null));
|
|
365
365
|
}
|
|
366
366
|
exports.FeatureDetails = FeatureDetails;
|
|
367
367
|
exports.default = (0, mobx_react_1.observer)(function ({ model }) {
|
|
368
|
-
const { featureData } = model;
|
|
368
|
+
const { error, featureData } = model;
|
|
369
|
+
if (error) {
|
|
370
|
+
return react_1.default.createElement(ui_1.ErrorMessage, { error: error });
|
|
371
|
+
}
|
|
369
372
|
if (!featureData) {
|
|
370
373
|
return null;
|
|
371
374
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function isEmpty(obj: Record<string, unknown>): boolean;
|
|
2
|
+
export declare function generateTitle(name: unknown, id: unknown, type: unknown): string;
|
|
3
|
+
export declare function generateMaxWidth(array: unknown[][], prefix: string[]): number;
|
|
4
|
+
export declare function toLocale(n: number): string;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toLocale = exports.generateMaxWidth = exports.generateTitle = exports.isEmpty = void 0;
|
|
4
|
+
const util_1 = require("../../util");
|
|
5
|
+
const util_2 = require("../util");
|
|
6
|
+
function isEmpty(obj) {
|
|
7
|
+
return Object.keys(obj).length === 0;
|
|
8
|
+
}
|
|
9
|
+
exports.isEmpty = isEmpty;
|
|
10
|
+
function generateTitle(name, id, type) {
|
|
11
|
+
return [(0, util_2.ellipses)(`${name}` || `${id}`), `${type}`]
|
|
12
|
+
.filter(f => !!f)
|
|
13
|
+
.join(' - ');
|
|
14
|
+
}
|
|
15
|
+
exports.generateTitle = generateTitle;
|
|
16
|
+
function generateMaxWidth(array, prefix) {
|
|
17
|
+
return (Math.ceil((0, util_1.max)(array.map(key => (0, util_1.measureText)([...prefix, key[0]].join('.'), 12)))) + 10);
|
|
18
|
+
}
|
|
19
|
+
exports.generateMaxWidth = generateMaxWidth;
|
|
20
|
+
function toLocale(n) {
|
|
21
|
+
return n.toLocaleString('en-US');
|
|
22
|
+
}
|
|
23
|
+
exports.toLocale = toLocale;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Feat } from '../util';
|
|
2
|
+
export default function CDNASequence({ utr, cds, exons, sequence, upstream, downstream, includeIntrons, collapseIntron, intronBp, }: {
|
|
3
|
+
utr: Feat[];
|
|
4
|
+
cds: Feat[];
|
|
5
|
+
exons: Feat[];
|
|
6
|
+
sequence: string;
|
|
7
|
+
upstream?: string;
|
|
8
|
+
downstream?: string;
|
|
9
|
+
includeIntrons?: boolean;
|
|
10
|
+
collapseIntron?: boolean;
|
|
11
|
+
intronBp: number;
|
|
12
|
+
}): JSX.Element;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const util_1 = require("./util");
|
|
8
|
+
function CDNASequence({ utr, cds, exons, sequence, upstream, downstream, includeIntrons, collapseIntron, intronBp, }) {
|
|
9
|
+
const chunks = (cds.length ? [...cds, ...utr].sort((a, b) => a.start - b.start) : exons).filter(f => f.start !== f.end);
|
|
10
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
11
|
+
upstream ? (react_1.default.createElement("span", { style: { background: util_1.updownstreamColor } }, upstream)) : null,
|
|
12
|
+
chunks.map((chunk, idx) => {
|
|
13
|
+
var _a;
|
|
14
|
+
const intron = sequence.slice(chunk.end, (_a = chunks[idx + 1]) === null || _a === void 0 ? void 0 : _a.start);
|
|
15
|
+
return (react_1.default.createElement(react_1.default.Fragment, { key: JSON.stringify(chunk) },
|
|
16
|
+
react_1.default.createElement("span", { style: {
|
|
17
|
+
background: chunk.type === 'CDS' ? util_1.cdsColor : util_1.utrColor,
|
|
18
|
+
} }, sequence.slice(chunk.start, chunk.end)),
|
|
19
|
+
includeIntrons && idx < chunks.length - 1 ? (react_1.default.createElement("span", { style: { background: util_1.intronColor } }, collapseIntron && intron.length > intronBp * 2
|
|
20
|
+
? `${intron.slice(0, intronBp)}...${intron.slice(-intronBp)}`
|
|
21
|
+
: intron)) : null));
|
|
22
|
+
}),
|
|
23
|
+
downstream ? (react_1.default.createElement("span", { style: { background: util_1.updownstreamColor } }, downstream)) : null));
|
|
24
|
+
}
|
|
25
|
+
exports.default = CDNASequence;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const util_1 = require("./util");
|
|
8
|
+
const util_2 = require("../util");
|
|
9
|
+
function CDSSequence({ cds, sequence, }) {
|
|
10
|
+
return react_1.default.createElement("span", { style: { background: util_1.cdsColor } }, (0, util_2.stitch)(cds, sequence));
|
|
11
|
+
}
|
|
12
|
+
exports.default = CDSSequence;
|