@jbrowse/core 2.13.1 → 2.15.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.js +2 -2
- package/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +1 -1
- package/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +3 -1
- package/BaseFeatureWidget/BaseFeatureDetail/index.js +23 -51
- package/BaseFeatureWidget/BaseFeatureDetail/util.js +1 -1
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +11 -5
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +1 -1
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.js +11 -7
- package/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +1 -1
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.js +6 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.js +11 -5
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.js +15 -5
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.js +4 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.js +15 -5
- package/BaseFeatureWidget/SequenceFeatureDetails/hooks.js +2 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.js +2 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +5 -3
- package/BaseFeatureWidget/stateModelFactory.js +0 -2
- package/PluginLoader.d.ts +1 -2
- package/PluginLoader.js +16 -6
- package/PluginManager.d.ts +13 -13
- package/PluginManager.js +7 -2
- package/ReExports/modules.js +2 -11
- package/assemblyManager/assembly.d.ts +18 -12
- package/assemblyManager/assembly.js +75 -52
- package/assemblyManager/assemblyConfigSchema.d.ts +9 -7
- package/assemblyManager/assemblyConfigSchema.js +15 -16
- package/assemblyManager/assemblyManager.d.ts +109 -81
- package/assemblyManager/assemblyManager.js +3 -6
- package/configuration/configurationSchema.d.ts +1 -1
- package/configuration/configurationSchema.js +1 -2
- package/configuration/configurationSlot.js +7 -8
- package/configuration/util.js +0 -7
- package/data_adapters/BaseAdapter/BaseAdapter.d.ts +2 -1
- package/data_adapters/BaseAdapter/BaseAdapter.js +2 -1
- package/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +6 -6
- package/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +6 -6
- package/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.d.ts +1 -0
- package/data_adapters/CytobandAdapter/CytobandAdapter.d.ts +0 -1
- package/data_adapters/CytobandAdapter/CytobandAdapter.js +4 -8
- package/data_adapters/dataAdapterCache.d.ts +9 -6
- package/data_adapters/dataAdapterCache.js +16 -22
- package/package.json +5 -5
- package/pluggableElementTypes/AddTrackWorkflowType.js +0 -6
- package/pluggableElementTypes/ConnectionType.js +0 -6
- package/pluggableElementTypes/DisplayType.js +0 -20
- package/pluggableElementTypes/InternetAccountType.js +0 -11
- package/pluggableElementTypes/RpcMethodType.d.ts +1 -1
- package/pluggableElementTypes/TextSearchAdapterType.js +0 -3
- package/pluggableElementTypes/TrackType.js +0 -11
- package/pluggableElementTypes/ViewType.js +0 -6
- package/pluggableElementTypes/WidgetType.js +0 -6
- package/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +4 -3
- package/pluggableElementTypes/models/BaseConnectionModelFactory.js +1 -3
- package/pluggableElementTypes/models/BaseDisplayModel.d.ts +4 -5
- package/pluggableElementTypes/models/BaseDisplayModel.js +6 -14
- package/pluggableElementTypes/models/BaseTrackModel.js +8 -5
- package/pluggableElementTypes/models/InternetAccountModel.d.ts +1 -1
- package/pluggableElementTypes/models/InternetAccountModel.js +19 -13
- package/pluggableElementTypes/models/baseTrackConfig.js +2 -5
- package/pluggableElementTypes/renderers/BoxRendererType.d.ts +10 -4
- package/pluggableElementTypes/renderers/BoxRendererType.js +10 -26
- package/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +1 -1
- package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.d.ts +9 -12
- package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +12 -19
- package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +5 -5
- package/pluggableElementTypes/renderers/FeatureRendererType.js +6 -13
- package/pluggableElementTypes/renderers/RendererType.js +0 -10
- package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.d.ts +1 -1
- package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.js +11 -9
- package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +14 -14
- package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +4 -4
- package/pluggableElementTypes/renderers/ServerSideRendererType.js +7 -5
- package/pluggableElementTypes/renderers/util/serializableFilterChain.js +0 -1
- package/rpc/BaseRpcDriver.d.ts +1 -1
- package/rpc/BaseRpcDriver.js +12 -11
- package/rpc/MainThreadRpcDriver.d.ts +2 -2
- package/rpc/MainThreadRpcDriver.js +3 -0
- package/rpc/RpcManager.d.ts +1 -1
- package/rpc/RpcManager.js +11 -8
- package/rpc/configSchema.js +0 -1
- package/rpc/methods/CoreFreeResources.d.ts +2 -2
- package/rpc/methods/CoreGetFeatureDensityStats.d.ts +2 -2
- package/rpc/methods/CoreGetFeatureDetails.d.ts +1 -1
- package/rpc/methods/CoreGetFeatureDetails.js +3 -3
- package/rpc/methods/CoreGetFeatures.d.ts +1 -1
- package/rpc/methods/CoreGetFileInfo.d.ts +1 -1
- package/rpc/methods/CoreGetMetadata.d.ts +1 -1
- package/rpc/methods/CoreGetRefNames.d.ts +1 -1
- package/rpc/methods/util.d.ts +2 -2
- package/rpc/methods/util.js +0 -3
- package/tsconfig.build.tsbuildinfo +1 -1
- package/ui/AssemblySelector.js +3 -1
- package/ui/CascadingMenu.js +2 -1
- package/ui/CascadingMenuButton.js +3 -1
- package/ui/ColorPicker.js +14 -4
- package/ui/DropDownMenu.js +3 -1
- package/ui/EditableTypography.js +6 -2
- package/ui/ErrorMessage.d.ts +2 -2
- package/ui/ErrorMessage.js +37 -20
- package/ui/ErrorMessageStackTraceDialog.js +11 -9
- package/ui/FactoryResetDialog.d.ts +1 -1
- package/ui/FactoryResetDialog.js +9 -3
- package/ui/FatalErrorDialog.js +9 -3
- package/ui/FileSelector/FileSelector.js +8 -4
- package/ui/FileSelector/LocalFileChooser.js +7 -6
- package/ui/LoadingEllipses.js +1 -1
- package/ui/Menu.d.ts +4 -4
- package/ui/Menu.js +6 -4
- package/ui/MenuButton.js +6 -2
- package/ui/PrerenderedCanvas.js +8 -5
- package/ui/RedErrorMessageBox.js +13 -8
- package/ui/ResizeHandle.d.ts +1 -1
- package/ui/ReturnToImportFormDialog.js +3 -1
- package/ui/SanitizedHTML.js +1 -3
- package/ui/SnackbarModel.d.ts +12 -1
- package/ui/SnackbarModel.js +19 -3
- package/ui/theme.js +10 -7
- package/util/Base1DViewModel.js +3 -1
- package/util/QuickLRU.js +8 -8
- package/util/TimeTraveller.js +12 -4
- package/util/aborting.js +1 -1
- package/util/analytics.js +0 -1
- package/util/blockTypes.js +5 -9
- package/util/calculateStaticBlocks.d.ts +1 -1
- package/util/compositeMap.js +2 -2
- package/util/idMaker.js +0 -1
- package/util/index.d.ts +9 -8
- package/util/index.js +92 -51
- package/util/io/RemoteFileWithRangeCache.js +1 -3
- package/util/io/index.js +3 -5
- package/util/jexlStrings.js +5 -8
- package/util/layouts/GranularRectLayout.js +1 -4
- package/util/layouts/SceneGraph.d.ts +1 -1
- package/util/layouts/SceneGraph.js +2 -6
- package/util/map-obj.js +15 -7
- package/util/mst-reflection.js +1 -2
- package/util/nanoid.js +9 -8
- package/util/offscreenCanvasPonyfill.d.ts +1 -1
- package/util/offscreenCanvasPonyfill.js +7 -10
- package/util/offscreenCanvasUtils.d.ts +1 -1
- package/util/offscreenCanvasUtils.js +1 -3
- package/util/rxjs.js +5 -5
- package/util/simpleFeature.d.ts +2 -3
- package/util/simpleFeature.js +9 -12
- package/util/stats.js +3 -1
- package/util/tracks.d.ts +4 -2
- package/util/tracks.js +10 -11
- package/util/types/index.d.ts +5 -5
- package/util/types/index.js +8 -1
- package/util/types/mst.js +1 -0
- package/util/when.js +7 -2
package/ui/AssemblySelector.js
CHANGED
|
@@ -57,7 +57,9 @@ const AssemblySelector = (0, mobx_react_1.observer)(function ({ session, onChang
|
|
|
57
57
|
}
|
|
58
58
|
}, [selection, onChange, selected]);
|
|
59
59
|
const error = assemblyNames.length ? '' : 'No configured assemblies';
|
|
60
|
-
return (react_1.default.createElement(material_1.TextField, { select: true, label: "Assembly", variant: "outlined", helperText: error || helperText, value: selection || '', inputProps: { 'data-testid': 'assembly-selector' }, onChange: event =>
|
|
60
|
+
return (react_1.default.createElement(material_1.TextField, { select: true, label: "Assembly", variant: "outlined", helperText: error || helperText, value: selection || '', inputProps: { 'data-testid': 'assembly-selector' }, onChange: event => {
|
|
61
|
+
setLastSelected(event.target.value);
|
|
62
|
+
}, error: !!error, InputProps: InputProps, disabled: !!error, className: classes.importFormEntry, ...TextFieldProps }, assemblyNames.map(name => {
|
|
61
63
|
const assembly = assemblyManager.get(name);
|
|
62
64
|
const displayName = assembly ? (0, configuration_1.getConf)(assembly, 'displayName') : '';
|
|
63
65
|
return (react_1.default.createElement(material_1.MenuItem, { key: name, value: name }, displayName || name));
|
package/ui/CascadingMenu.js
CHANGED
|
@@ -26,6 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
/* eslint-disable @typescript-eslint/no-unsafe-function-type */
|
|
29
30
|
const react_1 = __importStar(require("react"));
|
|
30
31
|
const material_1 = require("@mui/material");
|
|
31
32
|
const Menu_1 = require("./Menu");
|
|
@@ -99,7 +100,7 @@ function CascadingMenuList({ onMenuItemClick, closeAfterItemClick, menuItems, ..
|
|
|
99
100
|
const hasIcon = menuItems.some(m => 'icon' in m && m.icon);
|
|
100
101
|
return (react_1.default.createElement(react_1.default.Fragment, null, menuItems.map((item, idx) => {
|
|
101
102
|
return 'subMenu' in item ? (react_1.default.createElement(CascadingSubmenu, { key: `subMenu-${item.label}-${idx}`, popupId: `subMenu-${item.label}`, title: item.label, Icon: item.icon, inset: hasIcon && !item.icon, onMenuItemClick: onMenuItemClick, menuItems: item.subMenu },
|
|
102
|
-
react_1.default.createElement(CascadingMenuList, { ...props, closeAfterItemClick: closeAfterItemClick, onMenuItemClick: onMenuItemClick, menuItems: item.subMenu }))) : item.type === 'divider' ? (react_1.default.createElement(material_1.Divider, { key: `divider-${idx}`, component: "li" })) : item.type === 'subHeader' ? (react_1.default.createElement(material_1.ListSubheader, { key: `subHeader-${item.label}-${idx}` }, item.label)) : (react_1.default.createElement(CascadingMenuItem, { key: `${item.label}-${idx}`, closeAfterItemClick: closeAfterItemClick, onClick: 'onClick' in item ? handleClick(item.onClick) : undefined, disabled: Boolean(item.disabled) },
|
|
103
|
+
react_1.default.createElement(CascadingMenuList, { ...props, closeAfterItemClick: closeAfterItemClick, onMenuItemClick: onMenuItemClick, menuItems: item.subMenu }))) : item.type === 'divider' ? (react_1.default.createElement(material_1.Divider, { key: `divider-${JSON.stringify(item)}-${idx}`, component: "li" })) : item.type === 'subHeader' ? (react_1.default.createElement(material_1.ListSubheader, { key: `subHeader-${item.label}-${idx}` }, item.label)) : (react_1.default.createElement(CascadingMenuItem, { key: `${item.label}-${idx}`, closeAfterItemClick: closeAfterItemClick, onClick: 'onClick' in item ? handleClick(item.onClick) : undefined, disabled: Boolean(item.disabled) },
|
|
103
104
|
item.icon ? (react_1.default.createElement(material_1.ListItemIcon, null,
|
|
104
105
|
react_1.default.createElement(item.icon, null))) : null,
|
|
105
106
|
' ',
|
|
@@ -55,6 +55,8 @@ const CascadingMenuButton = (0, mobx_react_1.observer)(function CascadingMenuBut
|
|
|
55
55
|
onTouchStart(event);
|
|
56
56
|
onClickExtra === null || onClickExtra === void 0 ? void 0 : onClickExtra();
|
|
57
57
|
}, ...rest2, ...rest, disabled: menuItems.length === 0 }, children),
|
|
58
|
-
react_1.default.createElement(CascadingMenu_1.default, { ...(0, hooks_1.bindPopover)(popupState), onMenuItemClick: (_, callback) =>
|
|
58
|
+
react_1.default.createElement(CascadingMenu_1.default, { ...(0, hooks_1.bindPopover)(popupState), onMenuItemClick: (_, callback) => {
|
|
59
|
+
callback();
|
|
60
|
+
}, menuItems: menuItems, closeAfterItemClick: closeAfterItemClick, popupState: popupState })));
|
|
59
61
|
});
|
|
60
62
|
exports.default = CascadingMenuButton;
|
package/ui/ColorPicker.js
CHANGED
|
@@ -58,8 +58,12 @@ const PopoverPicker = ({ color, onChange, }) => {
|
|
|
58
58
|
const [anchorEl, setAnchorEl] = (0, react_1.useState)(null);
|
|
59
59
|
const { classes } = useStyles();
|
|
60
60
|
return (react_1.default.createElement("div", { className: classes.picker },
|
|
61
|
-
react_1.default.createElement("div", { className: classes.swatch, style: { backgroundColor: color }, onClick: event =>
|
|
62
|
-
|
|
61
|
+
react_1.default.createElement("div", { className: classes.swatch, style: { backgroundColor: color }, onClick: event => {
|
|
62
|
+
setAnchorEl(event.currentTarget);
|
|
63
|
+
} }),
|
|
64
|
+
react_1.default.createElement(ColorPopover, { anchorEl: anchorEl, onClose: () => {
|
|
65
|
+
setAnchorEl(null);
|
|
66
|
+
}, color: color, onChange: onChange })));
|
|
63
67
|
};
|
|
64
68
|
exports.PopoverPicker = PopoverPicker;
|
|
65
69
|
function ColorPopover({ anchorEl, onChange, onClose, color, }) {
|
|
@@ -89,7 +93,13 @@ function ColorPicker({ onChange, color, }) {
|
|
|
89
93
|
const pal = event.target.value;
|
|
90
94
|
setVal(pal);
|
|
91
95
|
} }, palettes.map(p => (react_1.default.createElement(material_1.MenuItem, { value: p, key: p }, p)))),
|
|
92
|
-
react_1.default.createElement("div", { className: classes.swatches }, presetColors.map((presetColor, idx) => (react_1.default.createElement("button", {
|
|
93
|
-
|
|
96
|
+
react_1.default.createElement("div", { className: classes.swatches }, presetColors.map((presetColor, idx) => (react_1.default.createElement("button", { type: "button",
|
|
97
|
+
/* biome-ignore lint/suspicious/noArrayIndexKey: */
|
|
98
|
+
key: `${presetColor}-${idx}`, className: classes.swatch, style: { background: presetColor }, onClick: () => {
|
|
99
|
+
handleChange(presetColor);
|
|
100
|
+
} })))),
|
|
101
|
+
react_1.default.createElement(material_1.TextField, { helperText: 'Manually set color (hex, rgb, or css color name)', value: text, onChange: event => {
|
|
102
|
+
handleChange(event.target.value);
|
|
103
|
+
} }))));
|
|
94
104
|
}
|
|
95
105
|
exports.default = exports.PopoverPicker;
|
package/ui/DropDownMenu.js
CHANGED
|
@@ -50,7 +50,9 @@ const DropDownMenu = (0, mobx_react_1.observer)(function ({ menuTitle, session,
|
|
|
50
50
|
setOpen(false);
|
|
51
51
|
}
|
|
52
52
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
53
|
-
react_1.default.createElement(material_1.Button, { ref: anchorEl, onClick: () =>
|
|
53
|
+
react_1.default.createElement(material_1.Button, { ref: anchorEl, onClick: () => {
|
|
54
|
+
setOpen(!open);
|
|
55
|
+
}, color: "inherit", "data-testid": "dropDownMenuButton", classes: { root: classes.buttonRoot } },
|
|
54
56
|
menuTitle,
|
|
55
57
|
react_1.default.createElement(ArrowDropDown_1.default, null)),
|
|
56
58
|
react_1.default.createElement(Menu_1.default, { anchorEl: anchorEl.current, anchorOrigin: { vertical: 'bottom', horizontal: 'left' }, onMenuItemClick: (_event, callback) => {
|
package/ui/EditableTypography.js
CHANGED
|
@@ -70,7 +70,9 @@ const EditableTypography = react_1.default.forwardRef(function EditableTypograph
|
|
|
70
70
|
return (react_1.default.createElement("div", { ...other, ref: ref },
|
|
71
71
|
react_1.default.createElement("div", { style: { position: 'relative' } },
|
|
72
72
|
react_1.default.createElement(material_1.Typography, { ref: ref2, component: "span", variant: variant, className: classes.typography }, val)),
|
|
73
|
-
react_1.default.createElement(material_1.InputBase, { inputRef: node =>
|
|
73
|
+
react_1.default.createElement(material_1.InputBase, { inputRef: node => {
|
|
74
|
+
setInputNode(node);
|
|
75
|
+
}, className: classes.inputBase, inputProps: {
|
|
74
76
|
style: {
|
|
75
77
|
width,
|
|
76
78
|
...(variant && variant !== 'inherit'
|
|
@@ -81,7 +83,9 @@ const EditableTypography = react_1.default.forwardRef(function EditableTypograph
|
|
|
81
83
|
input: classes.input,
|
|
82
84
|
root: classes.inputRoot,
|
|
83
85
|
focused: classes.inputFocused,
|
|
84
|
-
}, value: val, onChange: event =>
|
|
86
|
+
}, value: val, onChange: event => {
|
|
87
|
+
setEditedValue(event.target.value);
|
|
88
|
+
}, onKeyDown: event => {
|
|
85
89
|
if (event.key === 'Enter') {
|
|
86
90
|
inputNode === null || inputNode === void 0 ? void 0 : inputNode.blur();
|
|
87
91
|
}
|
package/ui/ErrorMessage.d.ts
CHANGED
package/ui/ErrorMessage.js
CHANGED
|
@@ -28,6 +28,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
const react_1 = __importStar(require("react"));
|
|
30
30
|
const material_1 = require("@mui/material");
|
|
31
|
+
const mui_1 = require("tss-react/mui");
|
|
31
32
|
// locals
|
|
32
33
|
const RedErrorMessageBox_1 = __importDefault(require("./RedErrorMessageBox"));
|
|
33
34
|
// icons
|
|
@@ -35,6 +36,17 @@ const Refresh_1 = __importDefault(require("@mui/icons-material/Refresh"));
|
|
|
35
36
|
const Report_1 = __importDefault(require("@mui/icons-material/Report"));
|
|
36
37
|
// lazies
|
|
37
38
|
const ErrorMessageStackTraceDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./ErrorMessageStackTraceDialog'))));
|
|
39
|
+
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
40
|
+
bg: {
|
|
41
|
+
background: theme.palette.divider,
|
|
42
|
+
border: '1px solid black',
|
|
43
|
+
margin: 20,
|
|
44
|
+
},
|
|
45
|
+
iconFloat: {
|
|
46
|
+
float: 'right',
|
|
47
|
+
marginLeft: 100,
|
|
48
|
+
},
|
|
49
|
+
}));
|
|
38
50
|
function parseError(str) {
|
|
39
51
|
let snapshotError = '';
|
|
40
52
|
const findStr = 'is not assignable';
|
|
@@ -44,41 +56,46 @@ function parseError(str) {
|
|
|
44
56
|
// best effort to make a better error message than the default
|
|
45
57
|
// mobx-state-tree
|
|
46
58
|
// case 1. element has a path
|
|
47
|
-
const match =
|
|
59
|
+
const match = /.*at path "(.*)" snapshot `(.*)` is not assignable/m.exec(trim);
|
|
48
60
|
if (match) {
|
|
49
61
|
str = `Failed to load element at ${match[1]}...Failed element had snapshot`;
|
|
50
62
|
snapshotError = match[2];
|
|
51
63
|
}
|
|
52
64
|
// case 2. element has no path
|
|
53
|
-
const match2 =
|
|
65
|
+
const match2 = /.*snapshot `(.*)` is not assignable/.exec(trim);
|
|
54
66
|
if (match2) {
|
|
55
|
-
str =
|
|
67
|
+
str = 'Failed to load element...Failed element had snapshot';
|
|
56
68
|
snapshotError = match2[1];
|
|
57
69
|
}
|
|
58
70
|
}
|
|
59
71
|
return snapshotError;
|
|
60
72
|
}
|
|
61
|
-
|
|
73
|
+
function ErrorButtons({ error, onReset, }) {
|
|
74
|
+
const { classes } = useStyles();
|
|
75
|
+
const [showStack, setShowStack] = (0, react_1.useState)(false);
|
|
76
|
+
return (react_1.default.createElement("div", { className: classes.iconFloat },
|
|
77
|
+
typeof error === 'object' && error && 'stack' in error ? (react_1.default.createElement(material_1.Tooltip, { title: "Get stack trace" },
|
|
78
|
+
react_1.default.createElement(material_1.IconButton, { onClick: () => {
|
|
79
|
+
setShowStack(true);
|
|
80
|
+
}, color: "primary" },
|
|
81
|
+
react_1.default.createElement(Report_1.default, null)))) : null,
|
|
82
|
+
onReset ? (react_1.default.createElement(material_1.Tooltip, { title: "Retry" },
|
|
83
|
+
react_1.default.createElement(material_1.IconButton, { onClick: onReset, color: "primary" },
|
|
84
|
+
react_1.default.createElement(Refresh_1.default, null)))) : null,
|
|
85
|
+
showStack ? (react_1.default.createElement(react_1.Suspense, { fallback: null },
|
|
86
|
+
react_1.default.createElement(ErrorMessageStackTraceDialog, { error: error, onClose: () => {
|
|
87
|
+
setShowStack(false);
|
|
88
|
+
} }))) : null));
|
|
89
|
+
}
|
|
90
|
+
function ErrorMessage({ error, onReset, }) {
|
|
91
|
+
const { classes } = useStyles();
|
|
62
92
|
const str = `${error}`;
|
|
63
93
|
const str2 = str.indexOf('expected an instance of');
|
|
64
94
|
const str3 = str2 !== -1 ? str.slice(0, str2) : str;
|
|
65
95
|
const snapshotError = parseError(str);
|
|
66
|
-
const [showStack, setShowStack] = (0, react_1.useState)(false);
|
|
67
96
|
return (react_1.default.createElement(RedErrorMessageBox_1.default, null,
|
|
68
97
|
str3.slice(0, 10000),
|
|
69
|
-
react_1.default.createElement(
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
react_1.default.createElement(Report_1.default, null)))) : null,
|
|
73
|
-
onReset ? (react_1.default.createElement(material_1.Tooltip, { title: "Retry" },
|
|
74
|
-
react_1.default.createElement(material_1.IconButton, { onClick: onReset, color: "primary" },
|
|
75
|
-
react_1.default.createElement(Refresh_1.default, null)))) : null),
|
|
76
|
-
snapshotError ? (react_1.default.createElement("pre", { style: {
|
|
77
|
-
background: 'lightgrey',
|
|
78
|
-
border: '1px solid black',
|
|
79
|
-
margin: 20,
|
|
80
|
-
} }, JSON.stringify(JSON.parse(snapshotError), null, 2))) : null,
|
|
81
|
-
showStack ? (react_1.default.createElement(react_1.Suspense, { fallback: null },
|
|
82
|
-
react_1.default.createElement(ErrorMessageStackTraceDialog, { error: error, onClose: () => setShowStack(false) }))) : null));
|
|
83
|
-
};
|
|
98
|
+
react_1.default.createElement(ErrorButtons, { error: error, onReset: onReset }),
|
|
99
|
+
snapshotError ? (react_1.default.createElement("pre", { className: classes.bg }, JSON.stringify(JSON.parse(snapshotError), null, 2))) : null));
|
|
100
|
+
}
|
|
84
101
|
exports.default = ErrorMessage;
|
|
@@ -58,7 +58,7 @@ async function myfetchtext(uri) {
|
|
|
58
58
|
const sourceMaps = {};
|
|
59
59
|
async function getSourceMapFromUri(uri) {
|
|
60
60
|
var _a;
|
|
61
|
-
if (sourceMaps[uri]
|
|
61
|
+
if (sourceMaps[uri] !== undefined) {
|
|
62
62
|
return sourceMaps[uri];
|
|
63
63
|
}
|
|
64
64
|
const uriQuery = new URL(uri).search;
|
|
@@ -83,12 +83,12 @@ async function mapStackTrace(stack) {
|
|
|
83
83
|
const uri = match[2];
|
|
84
84
|
const consumer = await getSourceMapFromUri(uri);
|
|
85
85
|
const originalPosition = consumer.originalPositionFor({
|
|
86
|
-
line: parseInt(match[3]),
|
|
87
|
-
column: parseInt(match[4]),
|
|
86
|
+
line: Number.parseInt(match[3]),
|
|
87
|
+
column: Number.parseInt(match[4]),
|
|
88
88
|
});
|
|
89
|
-
if (originalPosition.source
|
|
90
|
-
originalPosition.line
|
|
91
|
-
originalPosition.column
|
|
89
|
+
if (!originalPosition.source ||
|
|
90
|
+
!originalPosition.line ||
|
|
91
|
+
!originalPosition.column) {
|
|
92
92
|
mappedStack.push(line);
|
|
93
93
|
continue;
|
|
94
94
|
}
|
|
@@ -120,13 +120,13 @@ const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
|
120
120
|
}));
|
|
121
121
|
function Contents({ text, extra }) {
|
|
122
122
|
const { classes } = useStyles();
|
|
123
|
-
const err = encodeURIComponent([
|
|
123
|
+
const err = encodeURIComponent(`${[
|
|
124
124
|
'I got this error from JBrowse, here is the stack trace:\n',
|
|
125
125
|
'```',
|
|
126
126
|
text,
|
|
127
127
|
'```',
|
|
128
128
|
extra ? `supporting data: ${JSON.stringify(extra, null, 2)}` : '',
|
|
129
|
-
].join('\n')
|
|
129
|
+
].join('\n')}\n`);
|
|
130
130
|
const err2 = [
|
|
131
131
|
text,
|
|
132
132
|
extra ? `supporting data: ${JSON.stringify(extra, null, 2)}` : '',
|
|
@@ -184,7 +184,9 @@ function ErrorMessageStackTraceDialog({ error, onClose, extra, }) {
|
|
|
184
184
|
react_1.default.createElement(material_1.Button, { variant: "contained", color: "secondary", onClick: () => {
|
|
185
185
|
(0, copy_to_clipboard_1.default)(errorBoxText);
|
|
186
186
|
setClicked(true);
|
|
187
|
-
setTimeout(() =>
|
|
187
|
+
setTimeout(() => {
|
|
188
|
+
setClicked(false);
|
|
189
|
+
}, 1000);
|
|
188
190
|
} }, clicked ? 'Copied!' : 'Copy stack trace to clipboard'),
|
|
189
191
|
react_1.default.createElement(material_1.Button, { variant: "contained", color: "primary", onClick: onClose }, "Close"))));
|
|
190
192
|
}
|
package/ui/FactoryResetDialog.js
CHANGED
|
@@ -14,10 +14,16 @@ function FactoryResetDialog({ onClose, open, onFactoryReset, }) {
|
|
|
14
14
|
}
|
|
15
15
|
onClose();
|
|
16
16
|
}
|
|
17
|
-
return (react_1.default.createElement(Dialog_1.default, { title: "Reset", onClose: () =>
|
|
17
|
+
return (react_1.default.createElement(Dialog_1.default, { title: "Reset", onClose: () => {
|
|
18
|
+
handleDialogClose();
|
|
19
|
+
}, open: open },
|
|
18
20
|
react_1.default.createElement(material_1.DialogContent, null,
|
|
19
21
|
react_1.default.createElement(material_1.DialogContentText, null, "Are you sure you want to reset? This will restore the default configuration.")),
|
|
20
22
|
react_1.default.createElement(material_1.DialogActions, null,
|
|
21
|
-
react_1.default.createElement(material_1.Button, { onClick: () =>
|
|
22
|
-
|
|
23
|
+
react_1.default.createElement(material_1.Button, { onClick: () => {
|
|
24
|
+
handleDialogClose();
|
|
25
|
+
}, color: "primary" }, "Cancel"),
|
|
26
|
+
react_1.default.createElement(material_1.Button, { onClick: () => {
|
|
27
|
+
handleDialogClose('reset');
|
|
28
|
+
}, color: "primary", variant: "contained" }, "OK"))));
|
|
23
29
|
}
|
package/ui/FatalErrorDialog.js
CHANGED
|
@@ -34,8 +34,12 @@ const ErrorMessage_1 = __importDefault(require("./ErrorMessage"));
|
|
|
34
34
|
const ResetComponent = ({ onFactoryReset, resetButtonText, }) => {
|
|
35
35
|
const [dialogOpen, setDialogOpen] = (0, react_1.useState)(false);
|
|
36
36
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
37
|
-
react_1.default.createElement(material_1.Button, { "data-testid": "fatal-error", color: "primary", variant: "contained", onClick: () =>
|
|
38
|
-
|
|
37
|
+
react_1.default.createElement(material_1.Button, { "data-testid": "fatal-error", color: "primary", variant: "contained", onClick: () => {
|
|
38
|
+
setDialogOpen(true);
|
|
39
|
+
} }, resetButtonText),
|
|
40
|
+
react_1.default.createElement(FactoryResetDialog_1.default, { onClose: () => {
|
|
41
|
+
setDialogOpen(false);
|
|
42
|
+
}, open: dialogOpen, onFactoryReset: onFactoryReset })));
|
|
39
43
|
};
|
|
40
44
|
function FatalErrorDialog({ componentStack, error = 'No error message provided', onFactoryReset, resetButtonText = 'Factory Reset', }) {
|
|
41
45
|
return (react_1.default.createElement(material_1.Dialog, { maxWidth: "xl", open: true },
|
|
@@ -44,6 +48,8 @@ function FatalErrorDialog({ componentStack, error = 'No error message provided',
|
|
|
44
48
|
react_1.default.createElement(ErrorMessage_1.default, { error: error }),
|
|
45
49
|
react_1.default.createElement("pre", null, componentStack)),
|
|
46
50
|
react_1.default.createElement(material_1.DialogActions, null,
|
|
47
|
-
react_1.default.createElement(material_1.Button, { color: "secondary", variant: "contained", onClick: () =>
|
|
51
|
+
react_1.default.createElement(material_1.Button, { color: "secondary", variant: "contained", onClick: () => {
|
|
52
|
+
window.location.reload();
|
|
53
|
+
} }, "Refresh"),
|
|
48
54
|
react_1.default.createElement(ResetComponent, { onFactoryReset: onFactoryReset, resetButtonText: resetButtonText }))));
|
|
49
55
|
}
|
|
@@ -68,8 +68,8 @@ const FileSelector = (0, mobx_react_1.observer)(function (props) {
|
|
|
68
68
|
const setLocationWithAccount = (0, react_1.useCallback)((location) => {
|
|
69
69
|
setLocation({
|
|
70
70
|
...location,
|
|
71
|
-
...((0, types_1.isUriLocation)(location)
|
|
72
|
-
? { internetAccountId: selectedAccount
|
|
71
|
+
...(selectedAccount && (0, types_1.isUriLocation)(location)
|
|
72
|
+
? { internetAccountId: selectedAccount.internetAccountId }
|
|
73
73
|
: {}),
|
|
74
74
|
});
|
|
75
75
|
}, [setLocation, selectedAccount]);
|
|
@@ -115,10 +115,14 @@ const FileSelector = (0, mobx_react_1.observer)(function (props) {
|
|
|
115
115
|
}),
|
|
116
116
|
hiddenAccounts.length > 0 ? (
|
|
117
117
|
// @ts-expect-error
|
|
118
|
-
react_1.default.createElement(material_1.ToggleButton, { onClick: event =>
|
|
118
|
+
react_1.default.createElement(material_1.ToggleButton, { onClick: event => {
|
|
119
|
+
setAnchorEl(event.target);
|
|
120
|
+
}, selected: false },
|
|
119
121
|
"More",
|
|
120
122
|
react_1.default.createElement(ArrowDropDown_1.default, null))) : null),
|
|
121
|
-
react_1.default.createElement(material_1.Menu, { open: Boolean(anchorEl), anchorEl: anchorEl, onClose: () =>
|
|
123
|
+
react_1.default.createElement(material_1.Menu, { open: Boolean(anchorEl), anchorEl: anchorEl, onClose: () => {
|
|
124
|
+
setAnchorEl(null);
|
|
125
|
+
}, anchorOrigin: { vertical: 'bottom', horizontal: 'center' }, transformOrigin: { vertical: 'top', horizontal: 'center' } }, hiddenAccounts.map(id => {
|
|
122
126
|
const { internetAccountId, name } = map[id];
|
|
123
127
|
return (react_1.default.createElement(material_1.MenuItem, { key: id, value: internetAccountId, onClick: () => {
|
|
124
128
|
setRecentlyUsedInternetAccounts([
|
|
@@ -8,11 +8,11 @@ const material_1 = require("@mui/material");
|
|
|
8
8
|
const mui_1 = require("tss-react/mui");
|
|
9
9
|
const util_1 = require("../../util");
|
|
10
10
|
const tracks_1 = require("../../util/tracks");
|
|
11
|
-
function isLocalPathLocation(
|
|
12
|
-
return 'localPath' in
|
|
11
|
+
function isLocalPathLocation(loc) {
|
|
12
|
+
return 'localPath' in loc;
|
|
13
13
|
}
|
|
14
|
-
function isBlobLocation(
|
|
15
|
-
return 'blobId' in
|
|
14
|
+
function isBlobLocation(loc) {
|
|
15
|
+
return 'blobId' in loc;
|
|
16
16
|
}
|
|
17
17
|
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
18
18
|
filename: {
|
|
@@ -32,11 +32,12 @@ function LocalFileChooser({ location, setLocation, }) {
|
|
|
32
32
|
"Choose File",
|
|
33
33
|
react_1.default.createElement("input", { type: "file", hidden: true, onChange: ({ target }) => {
|
|
34
34
|
var _a;
|
|
35
|
-
const file = (_a = target
|
|
35
|
+
const file = (_a = target.files) === null || _a === void 0 ? void 0 : _a[0];
|
|
36
36
|
if (file) {
|
|
37
37
|
if (util_1.isElectron) {
|
|
38
|
+
const { webUtils } = window.require('electron');
|
|
38
39
|
setLocation({
|
|
39
|
-
localPath: file
|
|
40
|
+
localPath: webUtils.getPathForFile(file),
|
|
40
41
|
locationType: 'LocalPathLocation',
|
|
41
42
|
});
|
|
42
43
|
}
|
package/ui/LoadingEllipses.js
CHANGED
|
@@ -34,5 +34,5 @@ const useStyles = (0, mui_1.makeStyles)()({
|
|
|
34
34
|
});
|
|
35
35
|
function LoadingEllipses({ message, variant = 'body2', ...rest }) {
|
|
36
36
|
const { classes } = useStyles();
|
|
37
|
-
return (react_1.default.createElement(material_1.Typography, { className: classes.dots, ...rest, variant: variant },
|
|
37
|
+
return (react_1.default.createElement(material_1.Typography, { className: classes.dots, ...rest, variant: variant }, message || 'Loading'));
|
|
38
38
|
}
|
package/ui/Menu.d.ts
CHANGED
|
@@ -29,17 +29,17 @@ export interface BaseMenuItem {
|
|
|
29
29
|
}
|
|
30
30
|
export interface NormalMenuItem extends BaseMenuItem {
|
|
31
31
|
type?: 'normal';
|
|
32
|
-
onClick:
|
|
32
|
+
onClick: (...args: any[]) => void;
|
|
33
33
|
}
|
|
34
34
|
export interface CheckboxMenuItem extends BaseMenuItem {
|
|
35
35
|
type: 'checkbox';
|
|
36
36
|
checked: boolean;
|
|
37
|
-
onClick:
|
|
37
|
+
onClick: (...args: any[]) => void;
|
|
38
38
|
}
|
|
39
39
|
export interface RadioMenuItem extends BaseMenuItem {
|
|
40
40
|
type: 'radio';
|
|
41
41
|
checked: boolean;
|
|
42
|
-
onClick:
|
|
42
|
+
onClick: (...args: any[]) => void;
|
|
43
43
|
}
|
|
44
44
|
export interface SubMenuItem extends BaseMenuItem {
|
|
45
45
|
type?: 'subMenu';
|
|
@@ -48,7 +48,7 @@ export interface SubMenuItem extends BaseMenuItem {
|
|
|
48
48
|
export type MenuItem = MenuDivider | MenuSubHeader | NormalMenuItem | CheckboxMenuItem | RadioMenuItem | SubMenuItem;
|
|
49
49
|
interface MenuProps extends PopoverProps {
|
|
50
50
|
menuItems: MenuItem[];
|
|
51
|
-
onMenuItemClick: (event: React.MouseEvent<HTMLLIElement
|
|
51
|
+
onMenuItemClick: (event: React.MouseEvent<HTMLLIElement>, callback: (...args: any[]) => void) => void;
|
|
52
52
|
}
|
|
53
53
|
declare function Menu(props: MenuProps): React.JSX.Element;
|
|
54
54
|
export default Menu;
|
package/ui/Menu.js
CHANGED
|
@@ -172,7 +172,7 @@ const MenuPage = react_1.default.forwardRef(function MenuPage2(props, ref) {
|
|
|
172
172
|
.sort((a, b) => (b.priority || 0) - (a.priority || 0))
|
|
173
173
|
.map((menuItem, idx) => {
|
|
174
174
|
if (menuItem.type === 'divider') {
|
|
175
|
-
return react_1.default.createElement(material_1.Divider, { key: `divider-${idx}`, component: "li" });
|
|
175
|
+
return (react_1.default.createElement(material_1.Divider, { key: `divider-${JSON.stringify(menuItem)}-${idx}`, component: "li" }));
|
|
176
176
|
}
|
|
177
177
|
if (menuItem.type === 'subHeader') {
|
|
178
178
|
return (react_1.default.createElement(material_1.ListSubheader, { key: `subHeader-${menuItem.label}-${idx}` }, menuItem.label));
|
|
@@ -213,7 +213,7 @@ const MenuPage = react_1.default.forwardRef(function MenuPage2(props, ref) {
|
|
|
213
213
|
switch (e.key) {
|
|
214
214
|
case 'ArrowLeft':
|
|
215
215
|
case 'Escape': {
|
|
216
|
-
onClose
|
|
216
|
+
onClose === null || onClose === void 0 ? void 0 : onClose(e, 'escapeKeyDown');
|
|
217
217
|
break;
|
|
218
218
|
}
|
|
219
219
|
case 'ArrowUp': {
|
|
@@ -249,12 +249,14 @@ const MenuPage = react_1.default.forwardRef(function MenuPage2(props, ref) {
|
|
|
249
249
|
}
|
|
250
250
|
return subMenu;
|
|
251
251
|
})));
|
|
252
|
-
return top ? (ListContents) : (
|
|
252
|
+
return top ? (ListContents) : (
|
|
253
|
+
// Grow is required for cascading sub-menus
|
|
254
|
+
react_1.default.createElement(material_1.Grow, { in: open, style: { transformOrigin: '0 0 0' }, ref: ref },
|
|
253
255
|
react_1.default.createElement(material_1.Paper, { elevation: 8, ref: paperRef, className: classes.paper, style: { ...position } }, ListContents)));
|
|
254
256
|
});
|
|
255
257
|
function Menu(props) {
|
|
256
258
|
const { open, onClose, menuItems, onMenuItemClick, ...other } = props;
|
|
257
|
-
return (react_1.default.createElement(material_1.Popover, { open: open, onClose: onClose,
|
|
259
|
+
return (react_1.default.createElement(material_1.Popover, { open: open, onClose: onClose, anchorOrigin: {
|
|
258
260
|
vertical: 'bottom',
|
|
259
261
|
horizontal: 'right',
|
|
260
262
|
...other.anchorOrigin,
|
package/ui/MenuButton.js
CHANGED
|
@@ -37,8 +37,12 @@ const MenuButton = (0, mobx_react_1.observer)(function MenuButton({ children, me
|
|
|
37
37
|
setOpen === null || setOpen === void 0 ? void 0 : setOpen(isOpen);
|
|
38
38
|
}, [isOpen, setOpen]);
|
|
39
39
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
40
|
-
react_1.default.createElement(material_1.IconButton, { ...rest, onClick: event =>
|
|
41
|
-
|
|
40
|
+
react_1.default.createElement(material_1.IconButton, { ...rest, onClick: event => {
|
|
41
|
+
setAnchorEl(event.currentTarget);
|
|
42
|
+
} }, children),
|
|
43
|
+
react_1.default.createElement(Menu_1.default, { open: !!anchorEl, anchorEl: anchorEl, onClose: () => {
|
|
44
|
+
setAnchorEl(undefined);
|
|
45
|
+
}, onMenuItemClick: (_, callback) => {
|
|
42
46
|
callback();
|
|
43
47
|
if (closeAfterItemClick) {
|
|
44
48
|
setAnchorEl(undefined);
|
package/ui/PrerenderedCanvas.js
CHANGED
|
@@ -23,7 +23,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
27
26
|
const react_1 = __importStar(require("react"));
|
|
28
27
|
const offscreenCanvasPonyfill_1 = require("../util/offscreenCanvasPonyfill");
|
|
29
28
|
function PrerenderedCanvas(props) {
|
|
@@ -45,9 +44,13 @@ function PrerenderedCanvas(props) {
|
|
|
45
44
|
(0, offscreenCanvasPonyfill_1.drawImageOntoCanvasContext)(imageData, context);
|
|
46
45
|
setDone(true);
|
|
47
46
|
}, [imageData]);
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
return (react_1.default.createElement("canvas", { "data-testid": [
|
|
48
|
+
'prerendered_canvas',
|
|
49
|
+
showSoftClip ? 'softclipped' : '',
|
|
50
|
+
blockKey,
|
|
51
|
+
done ? 'done' : '',
|
|
52
|
+
]
|
|
53
|
+
.filter(f => !!f)
|
|
54
|
+
.join('_'), ref: featureCanvas, width: width * highResolutionScaling, height: height * highResolutionScaling, style: { width, height, ...style } }));
|
|
52
55
|
}
|
|
53
56
|
exports.default = PrerenderedCanvas;
|
package/ui/RedErrorMessageBox.js
CHANGED
|
@@ -5,13 +5,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.default = RedErrorMessageBox;
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const mui_1 = require("tss-react/mui");
|
|
9
|
+
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
10
|
+
bg: {
|
|
11
|
+
padding: 4,
|
|
12
|
+
margin: 4,
|
|
13
|
+
overflow: 'auto',
|
|
14
|
+
maxHeight: 200,
|
|
15
|
+
background: theme.palette.mode === 'dark' ? '#833' : '#f88',
|
|
16
|
+
border: `1px solid ${theme.palette.divider}`,
|
|
17
|
+
},
|
|
18
|
+
}));
|
|
8
19
|
function RedErrorMessageBox({ children, }) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
margin: 4,
|
|
12
|
-
overflow: 'auto',
|
|
13
|
-
maxHeight: 200,
|
|
14
|
-
background: '#f88',
|
|
15
|
-
border: '1px solid black',
|
|
16
|
-
} }, children));
|
|
20
|
+
const { classes } = useStyles();
|
|
21
|
+
return react_1.default.createElement("div", { className: classes.bg }, children);
|
|
17
22
|
}
|
package/ui/ResizeHandle.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
declare function ResizeHandle({ onDrag, vertical, flexbox, className: originalClassName, onMouseDown, ...props }: {
|
|
3
|
-
onDrag: (lastFrameDistance: number, totalDistance: number) => number |
|
|
3
|
+
onDrag: (lastFrameDistance: number, totalDistance: number) => number | undefined;
|
|
4
4
|
onMouseDown?: (event: React.MouseEvent) => void;
|
|
5
5
|
vertical?: boolean;
|
|
6
6
|
flexbox?: boolean;
|
|
@@ -16,6 +16,8 @@ const ReturnToImportFormDialog = (0, mobx_react_1.observer)(function ({ model, h
|
|
|
16
16
|
model.clearView();
|
|
17
17
|
handleClose();
|
|
18
18
|
}, variant: "contained", color: "primary", autoFocus: true }, "OK"),
|
|
19
|
-
react_1.default.createElement(material_1.Button, { onClick: () =>
|
|
19
|
+
react_1.default.createElement(material_1.Button, { onClick: () => {
|
|
20
|
+
handleClose();
|
|
21
|
+
}, color: "secondary", variant: "contained" }, "Cancel"))));
|
|
20
22
|
});
|
|
21
23
|
exports.default = ReturnToImportFormDialog;
|
package/ui/SanitizedHTML.js
CHANGED
|
@@ -75,9 +75,7 @@ function SanitizedHTML({ html: pre, className, }) {
|
|
|
75
75
|
}
|
|
76
76
|
});
|
|
77
77
|
}
|
|
78
|
-
return (react_1.default.createElement("span", { className: className,
|
|
79
|
-
// eslint-disable-next-line react/no-danger
|
|
80
|
-
dangerouslySetInnerHTML: {
|
|
78
|
+
return (react_1.default.createElement("span", { className: className, dangerouslySetInnerHTML: {
|
|
81
79
|
__html: dompurify_1.default.sanitize(value),
|
|
82
80
|
} }));
|
|
83
81
|
}
|
package/ui/SnackbarModel.d.ts
CHANGED
|
@@ -9,17 +9,28 @@ export interface SnackbarMessage {
|
|
|
9
9
|
* #category session
|
|
10
10
|
*/
|
|
11
11
|
export default function SnackbarModel(): import("mobx-state-tree").IModelType<{}, {
|
|
12
|
+
/**
|
|
13
|
+
* #volatile
|
|
14
|
+
*/
|
|
12
15
|
snackbarMessages: import("mobx").IObservableArray<SnackbarMessage>;
|
|
16
|
+
} & {
|
|
17
|
+
/**
|
|
18
|
+
* #getter
|
|
19
|
+
*/
|
|
20
|
+
readonly snackbarMessageSet: Map<string, SnackbarMessage>;
|
|
13
21
|
} & {
|
|
14
22
|
/**
|
|
15
23
|
* #action
|
|
16
24
|
*/
|
|
17
25
|
notify(message: string, level?: NotificationLevel, action?: SnackAction): void;
|
|
26
|
+
/**
|
|
27
|
+
* #action
|
|
28
|
+
*/
|
|
18
29
|
notifyError(errorMessage: string, error?: unknown, extra?: unknown): void;
|
|
19
30
|
/**
|
|
20
31
|
* #action
|
|
21
32
|
*/
|
|
22
|
-
pushSnackbarMessage(message: string, level?: NotificationLevel, action?: SnackAction):
|
|
33
|
+
pushSnackbarMessage(message: string, level?: NotificationLevel, action?: SnackAction): void;
|
|
23
34
|
/**
|
|
24
35
|
* #action
|
|
25
36
|
*/
|