@jbrowse/core 2.5.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +1 -1
  2. package/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +0 -1
  3. package/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +1 -1
  4. package/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +8 -25
  5. package/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +2 -1
  6. package/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +2 -1
  7. package/BaseFeatureWidget/BaseFeatureDetail/{DataGrid.d.ts → DataGridDetails.d.ts} +2 -1
  8. package/BaseFeatureWidget/BaseFeatureDetail/FieldName.d.ts +1 -1
  9. package/BaseFeatureWidget/BaseFeatureDetail/{BasicField.d.ts → SimpleField.d.ts} +2 -2
  10. package/BaseFeatureWidget/BaseFeatureDetail/{BasicField.js → SimpleField.js} +3 -3
  11. package/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +2 -1
  12. package/BaseFeatureWidget/BaseFeatureDetail/UriLink.d.ts +2 -1
  13. package/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +9 -38
  14. package/BaseFeatureWidget/BaseFeatureDetail/index.js +14 -225
  15. package/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +1 -0
  16. package/BaseFeatureWidget/BaseFeatureDetail/util.js +24 -1
  17. package/BaseFeatureWidget/SequenceFeatureDetails/CDNASequence.d.ts +2 -1
  18. package/BaseFeatureWidget/SequenceFeatureDetails/CDSSequence.d.ts +2 -1
  19. package/BaseFeatureWidget/SequenceFeatureDetails/GenomicSequence.d.ts +2 -1
  20. package/BaseFeatureWidget/SequenceFeatureDetails/ProteinSequence.d.ts +2 -1
  21. package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.d.ts +2 -1
  22. package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +10 -13
  23. package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureSettingsDialog.d.ts +2 -1
  24. package/BaseFeatureWidget/SequenceFeatureDetails/SequenceHelpDialog.d.ts +2 -1
  25. package/BaseFeatureWidget/SequenceFeatureDetails/SequenceHelpDialog.js +1 -1
  26. package/BaseFeatureWidget/SequenceFeatureDetails/hooks.d.ts +2 -2
  27. package/BaseFeatureWidget/SequenceFeatureDetails/index.d.ts +2 -1
  28. package/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +17 -17
  29. package/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +16 -16
  30. package/BaseFeatureWidget/util.js +15 -5
  31. package/PluginManager.d.ts +3 -3
  32. package/README.md +0 -2
  33. package/ReExports/modules.d.ts +3 -3
  34. package/ReExports/modules.js +0 -3
  35. package/assemblyManager/assemblyConfigSchema.d.ts +2 -0
  36. package/assemblyManager/assemblyConfigSchema.js +1 -0
  37. package/assemblyManager/assemblyManager.d.ts +112 -0
  38. package/assemblyManager/assemblyManager.js +12 -1
  39. package/assemblyManager/index.d.ts +1 -0
  40. package/configuration/index.d.ts +1 -1
  41. package/configuration/types.d.ts +3 -1
  42. package/data_adapters/BaseAdapter/BaseAdapter.js +1 -1
  43. package/data_adapters/BaseAdapter/index.d.ts +1 -1
  44. package/package.json +2 -2
  45. package/pluggableElementTypes/RpcMethodType.d.ts +9 -7
  46. package/pluggableElementTypes/RpcMethodType.js +9 -7
  47. package/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +18 -0
  48. package/pluggableElementTypes/models/BaseConnectionModelFactory.js +9 -0
  49. package/pluggableElementTypes/models/BaseDisplayModel.d.ts +10 -1
  50. package/pluggableElementTypes/models/BaseDisplayModel.js +9 -1
  51. package/pluggableElementTypes/models/BaseTrackModel.d.ts +1 -0
  52. package/pluggableElementTypes/models/BaseTrackModel.js +1 -0
  53. package/pluggableElementTypes/models/BaseViewModel.d.ts +46 -2
  54. package/pluggableElementTypes/models/BaseViewModel.js +6 -0
  55. package/pluggableElementTypes/models/InternetAccountModel.d.ts +6 -2
  56. package/pluggableElementTypes/models/InternetAccountModel.js +27 -20
  57. package/pluggableElementTypes/models/baseConnectionConfig.d.ts +5 -2
  58. package/pluggableElementTypes/models/baseConnectionConfig.js +2 -1
  59. package/pluggableElementTypes/models/baseInternetAccountConfig.js +1 -1
  60. package/pluggableElementTypes/models/baseTrackConfig.d.ts +2 -2
  61. package/pluggableElementTypes/models/baseTrackConfig.js +7 -5
  62. package/pluggableElementTypes/models/index.d.ts +1 -1
  63. package/pluggableElementTypes/renderers/BoxRendererType.js +1 -2
  64. package/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +2 -1
  65. package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +3 -1
  66. package/pluggableElementTypes/renderers/FeatureRendererType.js +4 -6
  67. package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.d.ts +2 -1
  68. package/pluggableElementTypes/renderers/ServerSideRenderedContent.d.ts +1 -1
  69. package/rpc/BaseRpcDriver.js +1 -7
  70. package/tsconfig.build.tsbuildinfo +1 -1
  71. package/ui/AppLogo.d.ts +2 -1
  72. package/ui/AssemblySelector.d.ts +2 -1
  73. package/ui/AssemblySelector.js +1 -1
  74. package/ui/CascadingMenu.d.ts +2 -1
  75. package/ui/CascadingMenuButton.d.ts +8 -0
  76. package/ui/CascadingMenuButton.js +20 -0
  77. package/ui/ColorPicker.d.ts +4 -3
  78. package/ui/Dialog.d.ts +5 -4
  79. package/ui/Dialog.js +5 -6
  80. package/ui/DropDownMenu.d.ts +2 -1
  81. package/ui/EditableTypography.js +1 -1
  82. package/ui/ErrorMessage.d.ts +2 -1
  83. package/ui/ErrorMessage.js +6 -2
  84. package/ui/FactoryResetDialog.d.ts +2 -1
  85. package/ui/FatalErrorDialog.d.ts +6 -6
  86. package/ui/FatalErrorDialog.js +7 -7
  87. package/ui/FileSelector/FileSelector.d.ts +2 -1
  88. package/ui/FileSelector/FileSelector.js +3 -2
  89. package/ui/FileSelector/LocalFileChooser.d.ts +2 -1
  90. package/ui/FileSelector/UrlChooser.d.ts +3 -3
  91. package/ui/FileSelector/UrlChooser.js +8 -10
  92. package/ui/Icons.d.ts +10 -9
  93. package/ui/LoadingEllipses.d.ts +2 -1
  94. package/ui/Logo.d.ts +3 -2
  95. package/ui/Menu.d.ts +2 -2
  96. package/ui/PrerenderedCanvas.d.ts +2 -1
  97. package/ui/ResizeBar.d.ts +1 -1
  98. package/ui/ResizeHandle.d.ts +2 -1
  99. package/ui/ReturnToImportFormDialog.d.ts +2 -1
  100. package/ui/SanitizedHTML.d.ts +2 -1
  101. package/ui/Snackbar.d.ts +7 -8
  102. package/ui/Snackbar.js +12 -17
  103. package/ui/SnackbarModel.d.ts +9 -3
  104. package/ui/SnackbarModel.js +3 -3
  105. package/ui/Tooltip.d.ts +2 -1
  106. package/ui/index.d.ts +0 -1
  107. package/ui/index.js +1 -3
  108. package/util/Base1DUtils.js +2 -1
  109. package/util/QuickLRU.d.ts +1 -1
  110. package/util/blockTypes.js +1 -1
  111. package/util/formatFastaStrings.js +1 -1
  112. package/util/index.d.ts +14 -0
  113. package/util/index.js +65 -8
  114. package/util/io/index.js +1 -1
  115. package/util/mst-reflection.js +1 -2
  116. package/util/offscreenCanvasUtils.d.ts +2 -2
  117. package/util/types/index.d.ts +6 -2
  118. package/util/types/index.js +6 -2
  119. package/util/types/util.d.ts +0 -3
  120. package/ui/AboutDialog.d.ts +0 -11
  121. package/ui/AboutDialog.js +0 -125
  122. package/ui/App.d.ts +0 -18
  123. package/ui/App.js +0 -114
  124. package/ui/AppToolbar.d.ts +0 -19
  125. package/ui/AppToolbar.js +0 -56
  126. package/ui/Drawer.d.ts +0 -8
  127. package/ui/Drawer.js +0 -34
  128. package/ui/DrawerWidget.d.ts +0 -5
  129. package/ui/DrawerWidget.js +0 -132
  130. package/ui/ViewContainer.d.ts +0 -9
  131. package/ui/ViewContainer.js +0 -76
  132. package/ui/ViewContainerTitle.d.ts +0 -5
  133. package/ui/ViewContainerTitle.js +0 -42
  134. package/ui/ViewLauncher.d.ts +0 -17
  135. package/ui/ViewLauncher.js +0 -50
  136. package/ui/ViewMenu.d.ts +0 -8
  137. package/ui/ViewMenu.js +0 -69
  138. package/ui/ViewPanel.d.ts +0 -18
  139. package/ui/ViewPanel.js +0 -49
  140. /package/BaseFeatureWidget/BaseFeatureDetail/{DataGrid.js → DataGridDetails.js} +0 -0
package/ui/AppLogo.d.ts CHANGED
@@ -1,7 +1,8 @@
1
+ import React from 'react';
1
2
  import { AnyConfigurationModel } from '../configuration';
2
3
  declare const Logo: ({ session, }: {
3
4
  session: {
4
5
  configuration: AnyConfigurationModel;
5
6
  };
6
- }) => JSX.Element;
7
+ }) => React.JSX.Element;
7
8
  export default Logo;
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  import { InputProps as IIP, TextFieldProps as TFP } from '@mui/material';
2
3
  import { AbstractSessionModel } from '../util';
3
4
  declare const AssemblySelector: ({ session, onChange, selected, InputProps, TextFieldProps, localStorageKey, helperText, }: {
@@ -8,5 +9,5 @@ declare const AssemblySelector: ({ session, onChange, selected, InputProps, Text
8
9
  localStorageKey?: string | undefined;
9
10
  InputProps?: IIP | undefined;
10
11
  TextFieldProps?: TFP | undefined;
11
- }) => JSX.Element;
12
+ }) => React.JSX.Element;
12
13
  export default AssemblySelector;
@@ -35,7 +35,7 @@ const useStyles = (0, mui_1.makeStyles)()({
35
35
  minWidth: 180,
36
36
  },
37
37
  });
38
- const AssemblySelector = (0, mobx_react_1.observer)(({ session, onChange, selected, InputProps, TextFieldProps, localStorageKey, helperText = 'Select assembly to view', }) => {
38
+ const AssemblySelector = (0, mobx_react_1.observer)(function ({ session, onChange, selected, InputProps, TextFieldProps, localStorageKey, helperText = 'Select assembly to view', }) {
39
39
  const { classes } = useStyles();
40
40
  const { assemblyNames, assemblyManager } = session;
41
41
  // constructs a localstorage key based on host/path/config to help
@@ -1,8 +1,9 @@
1
+ import React from 'react';
1
2
  import { MenuItem as JBMenuItem } from './Menu';
2
3
  import { PopupState } from 'material-ui-popup-state/hooks';
3
4
  declare function CascadingMenuChildren(props: {
4
5
  onMenuItemClick: Function;
5
6
  menuItems: JBMenuItem[];
6
7
  popupState: PopupState;
7
- }): JSX.Element;
8
+ }): React.JSX.Element;
8
9
  export default CascadingMenuChildren;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { MenuItem } from '@jbrowse/core/ui';
3
+ declare const CascadingMenuButton: ({ children, menuItems, ...rest }: {
4
+ [key: string]: unknown;
5
+ children?: React.ReactElement<any, string | React.JSXElementConstructor<any>> | undefined;
6
+ menuItems: MenuItem[];
7
+ }) => React.JSX.Element;
8
+ export default CascadingMenuButton;
@@ -0,0 +1,20 @@
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 CascadingMenu_1 = __importDefault(require("@jbrowse/core/ui/CascadingMenu"));
8
+ const material_1 = require("@mui/material");
9
+ const mobx_react_1 = require("mobx-react");
10
+ const hooks_1 = require("material-ui-popup-state/hooks");
11
+ const CascadingMenuButton = (0, mobx_react_1.observer)(function CascadingMenuButton({ children, menuItems, ...rest }) {
12
+ const popupState = (0, hooks_1.usePopupState)({
13
+ popupId: 'viewMenu',
14
+ variant: 'popover',
15
+ });
16
+ return (react_1.default.createElement(react_1.default.Fragment, null,
17
+ react_1.default.createElement(material_1.IconButton, { ...(0, hooks_1.bindTrigger)(popupState), ...rest, disabled: menuItems.length === 0 }, children),
18
+ react_1.default.createElement(CascadingMenu_1.default, { ...(0, hooks_1.bindPopover)(popupState), onMenuItemClick: (_, callback) => callback(), menuItems: menuItems, popupState: popupState })));
19
+ });
20
+ exports.default = CascadingMenuButton;
@@ -1,15 +1,16 @@
1
+ import React from 'react';
1
2
  export declare const PopoverPicker: ({ color, onChange, }: {
2
3
  color: string;
3
4
  onChange: (color: string) => void;
4
- }) => JSX.Element;
5
+ }) => React.JSX.Element;
5
6
  export declare function ColorPopover({ anchorEl, onChange, onClose, color, }: {
6
7
  color: string;
7
8
  anchorEl: HTMLElement | null;
8
9
  onChange: (val: string) => void;
9
10
  onClose: () => void;
10
- }): JSX.Element;
11
+ }): React.JSX.Element;
11
12
  export declare function ColorPicker({ onChange, color, }: {
12
13
  color: string;
13
14
  onChange: (val: string) => void;
14
- }): JSX.Element;
15
+ }): React.JSX.Element;
15
16
  export default PopoverPicker;
package/ui/Dialog.d.ts CHANGED
@@ -1,6 +1,7 @@
1
+ import React from 'react';
1
2
  import { DialogProps } from '@mui/material';
2
- declare function JBrowseDialog(props: DialogProps & {
3
- title: string;
4
- }): JSX.Element;
5
- declare const _default: typeof JBrowseDialog;
3
+ interface Props extends DialogProps {
4
+ header?: React.ReactNode;
5
+ }
6
+ declare const _default: (props: Props) => React.JSX.Element;
6
7
  export default _default;
package/ui/Dialog.js CHANGED
@@ -24,19 +24,19 @@ function DialogError({ error }) {
24
24
  return (react_1.default.createElement("div", { style: { width: 800, margin: 40 } },
25
25
  react_1.default.createElement(ErrorMessage_1.default, { error: error })));
26
26
  }
27
- function JBrowseDialog(props) {
27
+ exports.default = (0, mobx_react_1.observer)(function JBrowseDialog(props) {
28
28
  const { classes } = useStyles();
29
- const { title, children, onClose } = props;
29
+ const { title, header, children, onClose } = props;
30
30
  const theme = (0, material_1.useTheme)();
31
31
  return (react_1.default.createElement(material_1.Dialog, { ...props },
32
32
  react_1.default.createElement(material_1.ScopedCssBaseline, null,
33
- react_1.default.createElement(material_1.DialogTitle, null,
33
+ react_1.default.isValidElement(header) ? (react_1.default.createElement(react_1.default.Fragment, null, header)) : (react_1.default.createElement(material_1.DialogTitle, null,
34
34
  title,
35
35
  onClose ? (react_1.default.createElement(material_1.IconButton, { className: classes.closeButton, onClick: () => {
36
36
  // @ts-expect-error
37
37
  onClose();
38
38
  } },
39
- react_1.default.createElement(Close_1.default, null))) : null),
39
+ react_1.default.createElement(Close_1.default, null))) : null)),
40
40
  react_1.default.createElement(material_1.Divider, null),
41
41
  react_1.default.createElement(react_error_boundary_1.ErrorBoundary, { FallbackComponent: DialogError },
42
42
  react_1.default.createElement(material_1.ThemeProvider, { theme: (0, material_1.createTheme)(theme, {
@@ -51,5 +51,4 @@ function JBrowseDialog(props) {
51
51
  },
52
52
  },
53
53
  }) }, children)))));
54
- }
55
- exports.default = (0, mobx_react_1.observer)(JBrowseDialog);
54
+ });
@@ -1,8 +1,9 @@
1
+ import React from 'react';
1
2
  import { MenuItem } from './Menu';
2
3
  declare function DropDownMenu({ menuTitle, session, menuItems, }: {
3
4
  menuTitle: string;
4
5
  session: any;
5
6
  menuItems: MenuItem[];
6
- }): JSX.Element;
7
+ }): React.JSX.Element;
7
8
  declare const _default: typeof DropDownMenu;
8
9
  export default _default;
@@ -45,7 +45,7 @@ const useStyles = (0, mui_1.makeStyles)()(theme => ({
45
45
  },
46
46
  }));
47
47
  // using forwardRef so that MUI Tooltip can wrap this component
48
- const EditableTypography = react_1.default.forwardRef((props, ref) => {
48
+ const EditableTypography = react_1.default.forwardRef(function (props, ref) {
49
49
  const { value, setValue, variant, ...other } = props;
50
50
  const [editedValue, setEditedValue] = (0, react_1.useState)();
51
51
  const [sizerNode, setSizerNode] = (0, react_1.useState)(null);
@@ -1,4 +1,5 @@
1
+ import React from 'react';
1
2
  declare const ErrorMessage: ({ error }: {
2
3
  error: unknown;
3
- }) => JSX.Element;
4
+ }) => React.JSX.Element;
4
5
  export default ErrorMessage;
@@ -4,9 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const react_1 = __importDefault(require("react"));
7
- const ErrorMessage = ({ error }) => {
7
+ function parseError(str) {
8
8
  let snapshotError = '';
9
- let str = `${error}`;
10
9
  const findStr = 'is not assignable';
11
10
  const idx = str.indexOf(findStr);
12
11
  if (idx !== -1) {
@@ -26,6 +25,11 @@ const ErrorMessage = ({ error }) => {
26
25
  snapshotError = match2[1];
27
26
  }
28
27
  }
28
+ return snapshotError;
29
+ }
30
+ const ErrorMessage = ({ error }) => {
31
+ const str = `${error}`;
32
+ const snapshotError = parseError(str);
29
33
  return (react_1.default.createElement("div", { style: {
30
34
  padding: 4,
31
35
  margin: 4,
@@ -1,6 +1,7 @@
1
+ import React from 'react';
1
2
  declare const _default: ({ onClose, open, onFactoryReset, }: {
2
3
  onClose: Function;
3
4
  open: boolean;
4
5
  onFactoryReset: Function;
5
- }) => JSX.Element;
6
+ }) => React.JSX.Element;
6
7
  export default _default;
@@ -1,7 +1,7 @@
1
- declare const FatalErrorDialog: ({ componentStack, error, onFactoryReset, resetButtonText, }: {
2
- componentStack?: string | undefined;
1
+ import React from 'react';
2
+ export default function FatalErrorDialog({ componentStack, error, onFactoryReset, resetButtonText, }: {
3
+ componentStack?: string;
3
4
  error?: unknown;
4
- onFactoryReset: Function;
5
- resetButtonText?: string | undefined;
6
- }) => JSX.Element;
7
- export default FatalErrorDialog;
5
+ onFactoryReset: () => void;
6
+ resetButtonText?: string;
7
+ }): React.JSX.Element;
@@ -29,21 +29,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
29
  const react_1 = __importStar(require("react"));
30
30
  const material_1 = require("@mui/material");
31
31
  const FactoryResetDialog_1 = __importDefault(require("./FactoryResetDialog"));
32
+ const ErrorMessage_1 = __importDefault(require("./ErrorMessage"));
32
33
  const ResetComponent = ({ onFactoryReset, resetButtonText, }) => {
33
34
  const [dialogOpen, setDialogOpen] = (0, react_1.useState)(false);
34
35
  return (react_1.default.createElement(react_1.default.Fragment, null,
35
36
  react_1.default.createElement(material_1.Button, { "data-testid": "fatal-error", color: "primary", variant: "contained", onClick: () => setDialogOpen(true) }, resetButtonText),
36
37
  react_1.default.createElement(FactoryResetDialog_1.default, { onClose: () => setDialogOpen(false), open: dialogOpen, onFactoryReset: onFactoryReset })));
37
38
  };
38
- const FatalErrorDialog = ({ componentStack, error = 'No error message provided', onFactoryReset, resetButtonText = 'Factory Reset', }) => {
39
- return (react_1.default.createElement(material_1.Dialog, { open: true },
40
- react_1.default.createElement(material_1.DialogTitle, { style: { background: '#e88' } }, "Fatal error"),
39
+ function FatalErrorDialog({ componentStack, error = 'No error message provided', onFactoryReset, resetButtonText = 'Factory Reset', }) {
40
+ return (react_1.default.createElement(material_1.Dialog, { maxWidth: "xl", open: true },
41
+ react_1.default.createElement(material_1.DialogTitle, null, "Fatal error"),
41
42
  react_1.default.createElement(material_1.DialogContent, null,
42
- react_1.default.createElement("pre", null,
43
- `${error}`,
44
- componentStack)),
43
+ react_1.default.createElement(ErrorMessage_1.default, { error: error }),
44
+ react_1.default.createElement("pre", null, componentStack)),
45
45
  react_1.default.createElement(material_1.DialogActions, null,
46
46
  react_1.default.createElement(material_1.Button, { color: "secondary", variant: "contained", onClick: () => window.location.reload() }, "Refresh"),
47
47
  react_1.default.createElement(ResetComponent, { onFactoryReset: onFactoryReset, resetButtonText: resetButtonText }))));
48
- };
48
+ }
49
49
  exports.default = FatalErrorDialog;
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  import { FileLocation, AbstractRootModel } from '../../util/types';
2
3
  declare const _default: (props: {
3
4
  location?: FileLocation | undefined;
@@ -6,5 +7,5 @@ declare const _default: (props: {
6
7
  name?: string | undefined;
7
8
  description?: string | undefined;
8
9
  rootModel?: AbstractRootModel | undefined;
9
- }) => JSX.Element;
10
+ }) => React.JSX.Element;
10
11
  export default _default;
@@ -35,6 +35,7 @@ const LocalFileChooser_1 = __importDefault(require("./LocalFileChooser"));
35
35
  const UrlChooser_1 = __importDefault(require("./UrlChooser"));
36
36
  // icons
37
37
  const ArrowDropDown_1 = __importDefault(require("@mui/icons-material/ArrowDropDown"));
38
+ const util_1 = require("../../util");
38
39
  function ToggleButtonWithTooltip(props) {
39
40
  const { title, children, ...other } = props;
40
41
  return (react_1.default.createElement(material_1.Tooltip, { title: title || '' },
@@ -106,13 +107,13 @@ exports.default = (0, mobx_react_1.observer)(function (props) {
106
107
  "More",
107
108
  react_1.default.createElement(ArrowDropDown_1.default, null))) : null),
108
109
  react_1.default.createElement(material_1.Menu, { open: Boolean(anchorEl), anchorEl: anchorEl, onClose: () => setAnchorEl(null), anchorOrigin: { vertical: 'bottom', horizontal: 'center' }, transformOrigin: { vertical: 'top', horizontal: 'center' } }, hiddenAccts === null || hiddenAccts === void 0 ? void 0 : hiddenAccts.map((acct, idx) => (react_1.default.createElement(material_1.MenuItem, { key: acct.internetAccountId, value: acct.internetAccountId, onClick: () => {
109
- const prev = shownAccts[shownAccts.length - 1];
110
+ const prev = shownAccts.at(-1);
110
111
  setShownAccts([...shownAccts.slice(0, -1), acct]);
111
112
  setHiddenAccts([
112
113
  prev,
113
114
  ...hiddenAccts.slice(0, idx),
114
115
  ...hiddenAccts.slice(idx + 1),
115
- ]);
116
+ ].filter(util_1.notEmpty));
116
117
  setToggleButtonValue(acct.internetAccountId);
117
118
  setAnchorEl(null);
118
119
  } }, acct.name)))))),
@@ -1,6 +1,7 @@
1
+ import React from 'react';
1
2
  import { FileLocation } from '../../util/types';
2
3
  declare function LocalFileChooser(props: {
3
4
  location?: FileLocation;
4
5
  setLocation: Function;
5
- }): JSX.Element;
6
+ }): React.JSX.Element;
6
7
  export default LocalFileChooser;
@@ -1,8 +1,8 @@
1
+ import React from 'react';
1
2
  import { FileLocation } from '../../util/types';
2
- declare function UrlChooser(props: {
3
+ declare const _default: (props: {
3
4
  location?: FileLocation;
4
5
  setLocation: Function;
5
6
  label?: string;
6
- }): JSX.Element;
7
- declare const _default: typeof UrlChooser;
7
+ }) => React.JSX.Element;
8
8
  export default _default;
@@ -7,14 +7,12 @@ const react_1 = __importDefault(require("react"));
7
7
  const material_1 = require("@mui/material");
8
8
  const mobx_react_1 = require("mobx-react");
9
9
  const types_1 = require("../../util/types");
10
- function UrlChooser(props) {
10
+ exports.default = (0, mobx_react_1.observer)(function UrlChooser(props) {
11
11
  const { location, setLocation, label } = props;
12
- return (react_1.default.createElement(react_1.default.Fragment, null,
13
- react_1.default.createElement(material_1.TextField, { fullWidth: true, variant: "outlined", inputProps: { 'data-testid': 'urlInput' }, defaultValue: location && (0, types_1.isUriLocation)(location) ? location.uri : '', label: label || 'Enter URL', onChange: event => {
14
- setLocation({
15
- uri: event.target.value.trim(),
16
- locationType: 'UriLocation',
17
- });
18
- } })));
19
- }
20
- exports.default = (0, mobx_react_1.observer)(UrlChooser);
12
+ return (react_1.default.createElement(material_1.TextField, { fullWidth: true, variant: "outlined", inputProps: { 'data-testid': 'urlInput' }, defaultValue: location && (0, types_1.isUriLocation)(location) ? location.uri : '', label: label || 'Enter URL', onChange: event => {
13
+ setLocation({
14
+ uri: event.target.value.trim(),
15
+ locationType: 'UriLocation',
16
+ });
17
+ } }));
18
+ });
package/ui/Icons.d.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  import { SvgIconProps } from '@mui/material/SvgIcon';
2
- export declare function ContentCopy(props: SvgIconProps): JSX.Element;
3
- export declare function Indexing(props: SvgIconProps): JSX.Element;
4
- export declare function ContentCut(props: SvgIconProps): JSX.Element;
5
- export declare function ContentPaste(props: SvgIconProps): JSX.Element;
6
- export declare function TrackSelector(props: SvgIconProps): JSX.Element;
7
- export declare function SaveAs(props: SvgIconProps): JSX.Element;
8
- export declare function Save(props: SvgIconProps): JSX.Element;
9
- export declare function DNA(props: SvgIconProps): JSX.Element;
10
- export declare function Cable(props: SvgIconProps): JSX.Element;
2
+ import React from 'react';
3
+ export declare function ContentCopy(props: SvgIconProps): React.JSX.Element;
4
+ export declare function Indexing(props: SvgIconProps): React.JSX.Element;
5
+ export declare function ContentCut(props: SvgIconProps): React.JSX.Element;
6
+ export declare function ContentPaste(props: SvgIconProps): React.JSX.Element;
7
+ export declare function TrackSelector(props: SvgIconProps): React.JSX.Element;
8
+ export declare function SaveAs(props: SvgIconProps): React.JSX.Element;
9
+ export declare function Save(props: SvgIconProps): React.JSX.Element;
10
+ export declare function DNA(props: SvgIconProps): React.JSX.Element;
11
+ export declare function Cable(props: SvgIconProps): React.JSX.Element;
@@ -1,6 +1,7 @@
1
+ import React from 'react';
1
2
  import { TypographyProps } from '@mui/material';
2
3
  interface Props extends TypographyProps {
3
4
  message?: string;
4
5
  }
5
- export default function LoadingEllipses({ message, variant, ...rest }: Props): JSX.Element;
6
+ export default function LoadingEllipses({ message, variant, ...rest }: Props): React.JSX.Element;
6
7
  export {};
package/ui/Logo.d.ts CHANGED
@@ -1,7 +1,8 @@
1
+ import React from 'react';
1
2
  type LogoVariant = 'color' | 'black' | 'white';
2
3
  interface LogoProps {
3
4
  variant?: LogoVariant;
4
5
  }
5
- export declare function Logomark({ variant }: LogoProps): JSX.Element;
6
- export declare function LogoFull({ variant }: LogoProps): JSX.Element;
6
+ export declare function Logomark({ variant }: LogoProps): React.JSX.Element;
7
+ export declare function LogoFull({ variant }: LogoProps): React.JSX.Element;
7
8
  export {};
package/ui/Menu.d.ts CHANGED
@@ -9,7 +9,7 @@ interface MenuItemEndDecorationSelectorProps {
9
9
  disabled?: boolean;
10
10
  }
11
11
  type MenuItemEndDecorationProps = MenuItemEndDecorationSubMenuProps | MenuItemEndDecorationSelectorProps;
12
- export declare function MenuItemEndDecoration(props: MenuItemEndDecorationProps): JSX.Element;
12
+ export declare function MenuItemEndDecoration(props: MenuItemEndDecorationProps): React.JSX.Element;
13
13
  export interface MenuDivider {
14
14
  priority?: number;
15
15
  type: 'divider';
@@ -49,5 +49,5 @@ interface MenuProps extends PopoverProps {
49
49
  menuItems: MenuItem[];
50
50
  onMenuItemClick: (event: React.MouseEvent<HTMLLIElement, MouseEvent>, callback: Function) => void;
51
51
  }
52
- declare function Menu(props: MenuProps): JSX.Element;
52
+ declare function Menu(props: MenuProps): React.JSX.Element;
53
53
  export default Menu;
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  declare function PrerenderedCanvas(props: {
2
3
  width: number;
3
4
  height: number;
@@ -6,5 +7,5 @@ declare function PrerenderedCanvas(props: {
6
7
  imageData?: any;
7
8
  showSoftClip?: boolean;
8
9
  blockKey?: string;
9
- }): JSX.Element;
10
+ }): React.JSX.Element;
10
11
  export default PrerenderedCanvas;
package/ui/ResizeBar.d.ts CHANGED
@@ -8,4 +8,4 @@ export default function ResizeBar({ widths, setWidths, checkbox, scrollLeft, }:
8
8
  setWidths: (arg: number[]) => void;
9
9
  checkbox?: boolean;
10
10
  scrollLeft?: number;
11
- }): JSX.Element;
11
+ }): React.JSX.Element;
@@ -1,8 +1,9 @@
1
+ import React from 'react';
1
2
  declare function ResizeHandle({ onDrag, vertical, flexbox, className: originalClassName, ...props }: {
2
3
  onDrag: (arg: number) => number | void;
3
4
  vertical?: boolean;
4
5
  flexbox?: boolean;
5
6
  className?: string;
6
7
  [props: string]: unknown;
7
- }): JSX.Element;
8
+ }): React.JSX.Element;
8
9
  export default ResizeHandle;
@@ -1,8 +1,9 @@
1
+ import React from 'react';
1
2
  declare function ReturnToImportFormDialog({ model, handleClose, }: {
2
3
  model: {
3
4
  clearView: Function;
4
5
  };
5
6
  handleClose: () => void;
6
- }): JSX.Element;
7
+ }): React.JSX.Element;
7
8
  declare const _default: typeof ReturnToImportFormDialog;
8
9
  export default _default;
@@ -1,4 +1,5 @@
1
+ import React from 'react';
1
2
  export declare function isHTML(str: string): boolean;
2
3
  export default function SanitizedHTML({ html }: {
3
4
  html: string;
4
- }): JSX.Element;
5
+ }): React.JSX.Element;
package/ui/Snackbar.d.ts CHANGED
@@ -1,12 +1,11 @@
1
- import { IAnyStateTreeNode } from 'mobx-state-tree';
2
- import { AbstractSessionModel, NotificationLevel, SnackAction } from '../util';
3
- type SnackbarMessage = [string, NotificationLevel, SnackAction];
1
+ import React from 'react';
2
+ import { AbstractSessionModel } from '../util';
3
+ import { SnackbarMessage } from './SnackbarModel';
4
4
  interface SnackbarSession extends AbstractSessionModel {
5
5
  snackbarMessages: SnackbarMessage[];
6
- popSnackbarMessage: () => unknown;
6
+ popSnackbarMessage: () => void;
7
7
  }
8
- declare function MessageSnackbar({ session, }: {
9
- session: SnackbarSession & IAnyStateTreeNode;
10
- }): JSX.Element;
11
- declare const _default: typeof MessageSnackbar;
8
+ declare const _default: ({ session, }: {
9
+ session: SnackbarSession;
10
+ }) => React.JSX.Element | null;
12
11
  export default _default;
package/ui/Snackbar.js CHANGED
@@ -8,26 +8,21 @@ const material_1 = require("@mui/material");
8
8
  const mobx_react_1 = require("mobx-react");
9
9
  // icons
10
10
  const Close_1 = __importDefault(require("@mui/icons-material/Close"));
11
- function MessageSnackbar({ session, }) {
12
- const { popSnackbarMessage, snackbarMessages } = session;
13
- const latestMessage = snackbarMessages.length
14
- ? snackbarMessages[snackbarMessages.length - 1]
15
- : null;
11
+ exports.default = (0, mobx_react_1.observer)(function MessageSnackbar({ session, }) {
12
+ const { snackbarMessages } = session;
13
+ const latestMessage = snackbarMessages.at(-1);
16
14
  const handleClose = (_event, reason) => {
17
- if (reason === 'clickaway') {
18
- return;
15
+ if (reason !== 'clickaway') {
16
+ session.popSnackbarMessage();
19
17
  }
20
- popSnackbarMessage();
21
18
  };
22
- const open = !!latestMessage;
23
- const [message, level, action] = latestMessage || [];
24
- return (react_1.default.createElement(material_1.Snackbar, { open: open, onClose: handleClose, anchorOrigin: { vertical: 'bottom', horizontal: 'center' } },
25
- react_1.default.createElement(material_1.Alert, { onClose: handleClose, action: action ? (react_1.default.createElement(react_1.default.Fragment, null,
19
+ return !!latestMessage ? (react_1.default.createElement(material_1.Snackbar, { open: true, onClose: handleClose, anchorOrigin: { vertical: 'bottom', horizontal: 'center' } },
20
+ react_1.default.createElement(material_1.Alert, { onClose: handleClose, action: latestMessage.action ? (react_1.default.createElement(react_1.default.Fragment, null,
26
21
  react_1.default.createElement(material_1.Button, { color: "inherit", onClick: e => {
27
- action.onClick();
22
+ var _a;
23
+ (_a = latestMessage.action) === null || _a === void 0 ? void 0 : _a.onClick();
28
24
  handleClose(e);
29
- } }, action.name),
25
+ } }, latestMessage.action.name),
30
26
  react_1.default.createElement(material_1.IconButton, { color: "inherit", onClick: handleClose },
31
- react_1.default.createElement(Close_1.default, null)))) : null, severity: level || 'warning' }, message)));
32
- }
33
- exports.default = (0, mobx_react_1.observer)(MessageSnackbar);
27
+ react_1.default.createElement(Close_1.default, null)))) : null, severity: latestMessage.level || 'warning' }, latestMessage.message))) : null;
28
+ });
@@ -1,15 +1,21 @@
1
1
  import { IModelType, ModelProperties } from 'mobx-state-tree';
2
2
  import { IObservableArray } from 'mobx';
3
3
  import { NotificationLevel, SnackAction } from '../util/types';
4
+ export interface SnackbarMessage {
5
+ message: string;
6
+ level?: NotificationLevel;
7
+ action?: SnackAction;
8
+ }
4
9
  /**
5
10
  * #stateModel SnackbarModel
11
+ * #category session
6
12
  */
7
- declare function makeExtension(snackbarMessages: IObservableArray<any>): {
13
+ declare function makeExtension(snackbarMessages: IObservableArray<SnackbarMessage>): {
8
14
  views: {
9
15
  /**
10
16
  * #getter
11
17
  */
12
- readonly snackbarMessages: IObservableArray<any>;
18
+ readonly snackbarMessages: IObservableArray<SnackbarMessage>;
13
19
  };
14
20
  actions: {
15
21
  /**
@@ -23,7 +29,7 @@ declare function makeExtension(snackbarMessages: IObservableArray<any>): {
23
29
  /**
24
30
  * #action
25
31
  */
26
- popSnackbarMessage(): any;
32
+ popSnackbarMessage(): SnackbarMessage | undefined;
27
33
  /**
28
34
  * #action
29
35
  */
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const mobx_1 = require("mobx");
4
4
  /**
5
5
  * #stateModel SnackbarModel
6
+ * #category session
6
7
  */
7
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
8
  function makeExtension(snackbarMessages) {
9
9
  return {
10
10
  views: {
@@ -31,7 +31,7 @@ function makeExtension(snackbarMessages) {
31
31
  * #action
32
32
  */
33
33
  pushSnackbarMessage(message, level, action) {
34
- return snackbarMessages.push([message, level, action]);
34
+ return snackbarMessages.push({ message, level, action });
35
35
  },
36
36
  /**
37
37
  * #action
@@ -43,7 +43,7 @@ function makeExtension(snackbarMessages) {
43
43
  * #action
44
44
  */
45
45
  removeSnackbarMessage(message) {
46
- const element = snackbarMessages.find(f => f[0] === message);
46
+ const element = snackbarMessages.find(f => f.message === message);
47
47
  if (element) {
48
48
  snackbarMessages.remove(element);
49
49
  }
package/ui/Tooltip.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  import { Feature } from '../util';
2
3
  declare const _default: ({ offsetX, offsetY, configuration, feature, timeout, }: {
3
4
  offsetX: number;
@@ -9,5 +10,5 @@ declare const _default: ({ offsetX, offsetY, configuration, feature, timeout, }:
9
10
  } & import("mobx-state-tree").IStateTreeNode<import("../configuration").AnyConfigurationSchemaType>;
10
11
  feature?: Feature | undefined;
11
12
  timeout?: number | undefined;
12
- }) => JSX.Element | null;
13
+ }) => React.JSX.Element | null;
13
14
  export default _default;
package/ui/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  export * from './theme';
2
2
  export { LogoFull, Logomark } from './Logo';
3
- export { default as App } from './App';
4
3
  export { default as AssemblySelector } from './AssemblySelector';
5
4
  export { default as CascadingMenu } from './CascadingMenu';
6
5
  export { default as Dialog } from './Dialog';
package/ui/index.js CHANGED
@@ -17,13 +17,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.SanitizedHTML = exports.ResizeHandle = exports.ReturnToImportFormDialog = exports.Tooltip = exports.PrerenderedCanvas = exports.Menu = exports.LoadingEllipses = exports.FileSelector = exports.FatalErrorDialog = exports.FactoryResetDialog = exports.ErrorMessage = exports.EditableTypography = exports.Dialog = exports.CascadingMenu = exports.AssemblySelector = exports.App = exports.Logomark = exports.LogoFull = void 0;
20
+ exports.SanitizedHTML = exports.ResizeHandle = exports.ReturnToImportFormDialog = exports.Tooltip = exports.PrerenderedCanvas = exports.Menu = exports.LoadingEllipses = exports.FileSelector = exports.FatalErrorDialog = exports.FactoryResetDialog = exports.ErrorMessage = exports.EditableTypography = exports.Dialog = exports.CascadingMenu = exports.AssemblySelector = exports.Logomark = exports.LogoFull = void 0;
21
21
  __exportStar(require("./theme"), exports);
22
22
  var Logo_1 = require("./Logo");
23
23
  Object.defineProperty(exports, "LogoFull", { enumerable: true, get: function () { return Logo_1.LogoFull; } });
24
24
  Object.defineProperty(exports, "Logomark", { enumerable: true, get: function () { return Logo_1.Logomark; } });
25
- var App_1 = require("./App");
26
- Object.defineProperty(exports, "App", { enumerable: true, get: function () { return __importDefault(App_1).default; } });
27
25
  var AssemblySelector_1 = require("./AssemblySelector");
28
26
  Object.defineProperty(exports, "AssemblySelector", { enumerable: true, get: function () { return __importDefault(AssemblySelector_1).default; } });
29
27
  var CascadingMenu_1 = require("./CascadingMenu");
@@ -109,7 +109,8 @@ function pxToBp(self, px) {
109
109
  }
110
110
  }
111
111
  if (bp >= bpSoFar && displayedRegions.length > 0) {
112
- const r = displayedRegions[displayedRegions.length - 1];
112
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
113
+ const r = displayedRegions.at(-1);
113
114
  const len = r.end - r.start;
114
115
  const offset = bp - bpSoFar + len;
115
116
  const snap = (0, mobx_state_tree_1.getSnapshot)(r);