@jbrowse/core 2.13.0 → 2.14.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 +28 -25
- 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/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 +3 -3
- 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 +8 -9
- package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +11 -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 -9
- 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 +5 -5
- package/util/Base1DViewModel.js +3 -1
- package/util/QuickLRU.js +8 -8
- package/util/TimeTraveller.js +12 -4
- 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 +91 -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 +4 -2
- 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
|
@@ -111,7 +111,7 @@ function findNextValidIdx(menuItems, currentIdx) {
|
|
|
111
111
|
function findPreviousValidIdx(menuItems, currentIdx) {
|
|
112
112
|
return (0, util_1.findLastIndex)(menuItems.slice(0, currentIdx), checkIfValid);
|
|
113
113
|
}
|
|
114
|
-
|
|
114
|
+
function MenuPage(props) {
|
|
115
115
|
const [subMenuAnchorEl, setSubMenuAnchorEl] = (0, react_1.useState)();
|
|
116
116
|
const [openSubMenuIdx, setOpenSubMenuIdx] = (0, react_1.useState)();
|
|
117
117
|
const [isSubMenuOpen, setIsSubMenuOpen] = (0, react_1.useState)(false);
|
|
@@ -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));
|
|
@@ -191,9 +191,7 @@ const MenuPage = react_1.default.forwardRef(function MenuPage2(props, ref) {
|
|
|
191
191
|
menuItem.type === 'radio') {
|
|
192
192
|
endDecoration = (react_1.default.createElement(MenuItemEndDecoration, { type: menuItem.type, checked: menuItem.checked, disabled: menuItem.disabled }));
|
|
193
193
|
}
|
|
194
|
-
const onClick = 'onClick' in menuItem
|
|
195
|
-
? handleClick(menuItem.onClick)
|
|
196
|
-
: undefined;
|
|
194
|
+
const onClick = 'onClick' in menuItem ? handleClick(menuItem.onClick) : undefined;
|
|
197
195
|
return (react_1.default.createElement(material_1.MenuItem, { key: menuItem.id || String(menuItem.label), style: menuItemStyle, selected: idx === selectedMenuItemIdx, onClick: onClick, onMouseMove: e => {
|
|
198
196
|
if (e.currentTarget !== document.activeElement) {
|
|
199
197
|
e.currentTarget.focus();
|
|
@@ -213,7 +211,7 @@ const MenuPage = react_1.default.forwardRef(function MenuPage2(props, ref) {
|
|
|
213
211
|
switch (e.key) {
|
|
214
212
|
case 'ArrowLeft':
|
|
215
213
|
case 'Escape': {
|
|
216
|
-
onClose
|
|
214
|
+
onClose === null || onClose === void 0 ? void 0 : onClose(e, 'escapeKeyDown');
|
|
217
215
|
break;
|
|
218
216
|
}
|
|
219
217
|
case 'ArrowUp': {
|
|
@@ -249,9 +247,8 @@ const MenuPage = react_1.default.forwardRef(function MenuPage2(props, ref) {
|
|
|
249
247
|
}
|
|
250
248
|
return subMenu;
|
|
251
249
|
})));
|
|
252
|
-
return top ? (ListContents) : (react_1.default.createElement(material_1.
|
|
253
|
-
|
|
254
|
-
});
|
|
250
|
+
return top ? (ListContents) : (react_1.default.createElement(material_1.Paper, { elevation: 8, ref: paperRef, className: classes.paper, style: { ...position } }, ListContents));
|
|
251
|
+
}
|
|
255
252
|
function Menu(props) {
|
|
256
253
|
const { open, onClose, menuItems, onMenuItemClick, ...other } = props;
|
|
257
254
|
return (react_1.default.createElement(material_1.Popover, { open: open, onClose: onClose, BackdropProps: { invisible: true }, 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
|
*/
|