@jbrowse/plugin-linear-genome-view 2.10.2 → 2.11.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 (75) hide show
  1. package/dist/BaseLinearDisplay/components/BlockMsg.d.ts +2 -4
  2. package/dist/BaseLinearDisplay/components/BlockMsg.js +2 -3
  3. package/dist/BaseLinearDisplay/components/LinearBlocks.js +2 -2
  4. package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.d.ts +10 -2
  5. package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +40 -4
  6. package/dist/BaseLinearDisplay/components/TooLargeMessage.js +5 -4
  7. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +18 -4
  8. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.d.ts +9 -2
  9. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js +0 -1
  10. package/dist/LaunchLinearGenomeView/index.js +24 -8
  11. package/dist/LinearBareDisplay/model.d.ts +18 -4
  12. package/dist/LinearBasicDisplay/components/SetMaxHeight.d.ts +1 -1
  13. package/dist/LinearBasicDisplay/model.d.ts +22 -4
  14. package/dist/LinearGenomeView/components/Cytobands.d.ts +1 -125
  15. package/dist/LinearGenomeView/components/ExportSvgDialog.js +9 -5
  16. package/dist/LinearGenomeView/components/Highlight.d.ts +7 -0
  17. package/dist/LinearGenomeView/components/Highlight.js +126 -0
  18. package/dist/LinearGenomeView/components/MiniControls.js +13 -15
  19. package/dist/LinearGenomeView/components/OverviewHighlight.d.ts +9 -0
  20. package/dist/LinearGenomeView/components/OverviewHighlight.js +62 -0
  21. package/dist/LinearGenomeView/components/OverviewRubberband.d.ts +1 -1
  22. package/dist/LinearGenomeView/components/OverviewScalebar.js +6 -1
  23. package/dist/LinearGenomeView/components/OverviewScalebarPolygon.d.ts +1 -1
  24. package/dist/LinearGenomeView/components/RefNameAutocomplete/index.d.ts +9 -9
  25. package/dist/LinearGenomeView/components/RefNameAutocomplete/index.js +28 -35
  26. package/dist/LinearGenomeView/components/Rubberband.d.ts +1 -1
  27. package/dist/LinearGenomeView/components/SearchBox.d.ts +1 -1
  28. package/dist/LinearGenomeView/components/SearchResultsTable.js +1 -1
  29. package/dist/LinearGenomeView/components/TrackContainer.js +10 -23
  30. package/dist/LinearGenomeView/components/TrackLabel.js +33 -6
  31. package/dist/LinearGenomeView/components/TracksContainer.js +2 -0
  32. package/dist/LinearGenomeView/components/ZoomControls.js +4 -4
  33. package/dist/LinearGenomeView/model.d.ts +70 -5
  34. package/dist/LinearGenomeView/model.js +111 -14
  35. package/dist/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +1 -1
  36. package/dist/LinearGenomeView/util.d.ts +1 -1
  37. package/dist/index.d.ts +213 -21
  38. package/esm/BaseLinearDisplay/components/BlockMsg.d.ts +2 -4
  39. package/esm/BaseLinearDisplay/components/BlockMsg.js +3 -4
  40. package/esm/BaseLinearDisplay/components/LinearBlocks.js +2 -2
  41. package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.d.ts +10 -2
  42. package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +17 -4
  43. package/esm/BaseLinearDisplay/components/TooLargeMessage.js +5 -4
  44. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +18 -4
  45. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.d.ts +9 -2
  46. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js +0 -1
  47. package/esm/LaunchLinearGenomeView/index.js +25 -9
  48. package/esm/LinearBareDisplay/model.d.ts +18 -4
  49. package/esm/LinearBasicDisplay/components/SetMaxHeight.d.ts +1 -1
  50. package/esm/LinearBasicDisplay/model.d.ts +22 -4
  51. package/esm/LinearGenomeView/components/Cytobands.d.ts +1 -125
  52. package/esm/LinearGenomeView/components/ExportSvgDialog.js +9 -5
  53. package/esm/LinearGenomeView/components/Highlight.d.ts +7 -0
  54. package/esm/LinearGenomeView/components/Highlight.js +98 -0
  55. package/esm/LinearGenomeView/components/MiniControls.js +14 -16
  56. package/esm/LinearGenomeView/components/OverviewHighlight.d.ts +9 -0
  57. package/esm/LinearGenomeView/components/OverviewHighlight.js +57 -0
  58. package/esm/LinearGenomeView/components/OverviewRubberband.d.ts +1 -1
  59. package/esm/LinearGenomeView/components/OverviewScalebar.js +7 -2
  60. package/esm/LinearGenomeView/components/OverviewScalebarPolygon.d.ts +1 -1
  61. package/esm/LinearGenomeView/components/RefNameAutocomplete/index.d.ts +9 -9
  62. package/esm/LinearGenomeView/components/RefNameAutocomplete/index.js +28 -35
  63. package/esm/LinearGenomeView/components/Rubberband.d.ts +1 -1
  64. package/esm/LinearGenomeView/components/SearchBox.d.ts +1 -1
  65. package/esm/LinearGenomeView/components/SearchResultsTable.js +1 -1
  66. package/esm/LinearGenomeView/components/TrackContainer.js +10 -23
  67. package/esm/LinearGenomeView/components/TrackLabel.js +33 -6
  68. package/esm/LinearGenomeView/components/TracksContainer.js +2 -0
  69. package/esm/LinearGenomeView/components/ZoomControls.js +4 -4
  70. package/esm/LinearGenomeView/model.d.ts +70 -5
  71. package/esm/LinearGenomeView/model.js +112 -15
  72. package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +1 -1
  73. package/esm/LinearGenomeView/util.d.ts +1 -1
  74. package/esm/index.d.ts +213 -21
  75. package/package.json +2 -2
@@ -1,9 +1,7 @@
1
1
  import React from 'react';
2
2
  import { AlertColor } from '@mui/material';
3
- export default function BlockMsg({ message, severity, buttonText, icon, action, }: {
3
+ export default function BlockMsg({ message, severity, action, }: {
4
4
  message: string;
5
5
  severity?: AlertColor;
6
- buttonText?: string;
7
- icon?: React.ReactNode;
8
- action?: () => void;
6
+ action?: React.ReactNode;
9
7
  }): React.JSX.Element;
@@ -12,10 +12,9 @@ const useStyles = (0, mui_1.makeStyles)()({
12
12
  overflow: 'hidden',
13
13
  },
14
14
  });
15
- function BlockMsg({ message, severity, buttonText, icon, action, }) {
15
+ function BlockMsg({ message, severity, action, }) {
16
16
  const { classes } = useStyles();
17
- const button = action ? (react_1.default.createElement(material_1.Button, { "data-testid": "reload_button", onClick: action, startIcon: icon }, buttonText)) : null;
18
- return (react_1.default.createElement(material_1.Alert, { severity: severity, action: button, classes: { message: classes.ellipses } },
17
+ return (react_1.default.createElement(material_1.Alert, { severity: severity, action: action, classes: { message: classes.ellipses } },
19
18
  react_1.default.createElement(material_1.Tooltip, { title: message },
20
19
  react_1.default.createElement("div", null, message))));
21
20
  }
@@ -38,8 +38,8 @@ const RenderedBlocks = (0, mobx_react_1.observer)(function ({ model, }) {
38
38
  if (block instanceof blockTypes_1.ContentBlock) {
39
39
  const state = blockState.get(block.key);
40
40
  return (react_1.default.createElement(Block_1.ContentBlock, { block: block, key: `${model.id}-${block.key}` },
41
- state && state.ReactComponent ? (react_1.default.createElement(state.ReactComponent, { model: state })) : null,
42
- state && state.maxHeightReached ? (react_1.default.createElement("div", { className: classes.heightOverflowed, style: {
41
+ (state === null || state === void 0 ? void 0 : state.ReactComponent) ? (react_1.default.createElement(state.ReactComponent, { model: state })) : null,
42
+ (state === null || state === void 0 ? void 0 : state.maxHeightReached) ? (react_1.default.createElement("div", { className: classes.heightOverflowed, style: {
43
43
  top: state.layout.getTotalHeight() - 16,
44
44
  pointerEvents: 'none',
45
45
  height: 16,
@@ -1,4 +1,12 @@
1
+ import React from 'react';
1
2
  declare const ServerSideRenderedBlockContent: ({ model, }: {
2
- model: any;
3
- }) => any;
3
+ model: {
4
+ error?: unknown;
5
+ reload: () => void;
6
+ message: React.ReactNode;
7
+ filled?: boolean;
8
+ status?: string;
9
+ reactElement?: React.ReactElement;
10
+ };
11
+ }) => React.JSX.Element | undefined;
4
12
  export default ServerSideRenderedBlockContent;
@@ -1,17 +1,44 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
5
28
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const react_1 = __importDefault(require("react"));
29
+ const react_1 = __importStar(require("react"));
30
+ const material_1 = require("@mui/material");
7
31
  const mui_1 = require("tss-react/mui");
8
32
  const mobx_react_1 = require("mobx-react");
9
33
  const mobx_state_tree_1 = require("mobx-state-tree");
10
34
  const ui_1 = require("@jbrowse/core/ui");
35
+ const util_1 = require("@jbrowse/core/util");
11
36
  // icons
12
37
  const Refresh_1 = __importDefault(require("@mui/icons-material/Refresh"));
38
+ const Report_1 = __importDefault(require("@mui/icons-material/Report"));
13
39
  // locals
14
40
  const BlockMsg_1 = __importDefault(require("./BlockMsg"));
41
+ const ErrorMessageStackTraceDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@jbrowse/core/ui/ErrorMessageStackTraceDialog'))));
15
42
  const useStyles = (0, mui_1.makeStyles)()(theme => {
16
43
  const bg = theme.palette.action.disabledBackground;
17
44
  return {
@@ -23,11 +50,9 @@ const useStyles = (0, mui_1.makeStyles)()(theme => {
23
50
  },
24
51
  };
25
52
  });
26
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
53
  const LoadingMessage = (0, mobx_react_1.observer)(({ model }) => {
28
54
  const { classes } = useStyles();
29
55
  const { status: blockStatus } = model;
30
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
56
  const { message: displayStatus } = (0, mobx_state_tree_1.getParent)(model, 2);
32
57
  const status = displayStatus || blockStatus;
33
58
  return (react_1.default.createElement("div", { className: classes.loading },
@@ -35,7 +60,18 @@ const LoadingMessage = (0, mobx_react_1.observer)(({ model }) => {
35
60
  });
36
61
  const ServerSideRenderedBlockContent = (0, mobx_react_1.observer)(function ({ model, }) {
37
62
  if (model.error) {
38
- return (react_1.default.createElement(BlockMsg_1.default, { message: `${model.error}`, severity: "error", buttonText: "reload", icon: react_1.default.createElement(Refresh_1.default, null), action: model.reload }));
63
+ return (react_1.default.createElement(BlockMsg_1.default, { message: `${model.error}`, severity: "error", action: react_1.default.createElement(react_1.default.Fragment, null,
64
+ react_1.default.createElement(material_1.Tooltip, { title: "Reload track" },
65
+ react_1.default.createElement(material_1.IconButton, { "data-testid": "reload_button", onClick: () => model.reload() },
66
+ react_1.default.createElement(Refresh_1.default, null))),
67
+ react_1.default.createElement(material_1.Tooltip, { title: "Show stack trace" },
68
+ react_1.default.createElement(material_1.IconButton, { onClick: () => {
69
+ (0, util_1.getSession)(model).queueDialog(onClose => [
70
+ ErrorMessageStackTraceDialog,
71
+ { onClose, error: model.error },
72
+ ]);
73
+ } },
74
+ react_1.default.createElement(Report_1.default, null)))) }));
39
75
  }
40
76
  else if (model.message) {
41
77
  // the message can be a fully rendered react component, e.g. the region too large message
@@ -6,12 +6,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const react_1 = __importDefault(require("react"));
7
7
  // locals
8
8
  const BlockMsg_1 = __importDefault(require("../components/BlockMsg"));
9
+ const material_1 = require("@mui/material");
9
10
  function TooLargeMessage({ model, }) {
10
11
  const { regionTooLargeReason } = model;
11
- return (react_1.default.createElement(BlockMsg_1.default, { severity: "warning", action: () => {
12
- model.setFeatureDensityStatsLimit(model.featureDensityStats);
13
- model.reload();
14
- }, buttonText: "Force load", message: [
12
+ return (react_1.default.createElement(BlockMsg_1.default, { severity: "warning", action: react_1.default.createElement(material_1.Button, { onClick: () => {
13
+ model.setFeatureDensityStatsLimit(model.featureDensityStats);
14
+ model.reload();
15
+ } }, "Force load"), message: [
15
16
  regionTooLargeReason,
16
17
  'Zoom in to see features or force load (may be slow)',
17
18
  ]
@@ -58,8 +58,15 @@ export declare const BaseLinearDisplay: import("mobx-state-tree").IModelType<{
58
58
  message: string | undefined;
59
59
  maxHeightReached: boolean;
60
60
  ReactComponent: ({ model, }: {
61
- model: any;
62
- }) => any;
61
+ model: {
62
+ error?: unknown;
63
+ reload: () => void;
64
+ message: React.ReactNode;
65
+ filled?: boolean | undefined;
66
+ status?: string | undefined;
67
+ reactElement?: React.ReactElement<any, string | React.JSXElementConstructor<any>> | undefined;
68
+ };
69
+ }) => React.JSX.Element | undefined;
63
70
  renderProps: any;
64
71
  } & {
65
72
  doReload(): void;
@@ -342,8 +349,15 @@ export declare const BaseLinearDisplay: import("mobx-state-tree").IModelType<{
342
349
  message: string | undefined;
343
350
  maxHeightReached: boolean;
344
351
  ReactComponent: ({ model, }: {
345
- model: any;
346
- }) => any;
352
+ model: {
353
+ error?: unknown;
354
+ reload: () => void;
355
+ message: React.ReactNode;
356
+ filled?: boolean | undefined;
357
+ status?: string | undefined;
358
+ reactElement?: React.ReactElement<any, string | React.JSXElementConstructor<any>> | undefined;
359
+ };
360
+ }) => React.JSX.Element | undefined;
347
361
  renderProps: any;
348
362
  } & {
349
363
  doReload(): void;
@@ -28,8 +28,15 @@ declare const blockState: import("mobx-state-tree").IModelType<{
28
28
  message: string | undefined;
29
29
  maxHeightReached: boolean;
30
30
  ReactComponent: ({ model, }: {
31
- model: any;
32
- }) => any;
31
+ model: {
32
+ error?: unknown;
33
+ reload: () => void;
34
+ message: React.ReactNode;
35
+ filled?: boolean | undefined;
36
+ status?: string | undefined;
37
+ reactElement?: React.ReactElement<any, string | React.JSXElementConstructor<any>> | undefined;
38
+ };
39
+ }) => React.JSX.Element | undefined;
33
40
  renderProps: any;
34
41
  } & {
35
42
  doReload(): void;
@@ -102,7 +102,6 @@ const blockState = mobx_state_tree_1.types
102
102
  renderInProgress = undefined;
103
103
  },
104
104
  setError(error) {
105
- console.error(error);
106
105
  if (renderInProgress && !renderInProgress.signal.aborted) {
107
106
  renderInProgress.abort();
108
107
  }
@@ -5,9 +5,10 @@ const searchUtils_1 = require("../searchUtils");
5
5
  exports.default = (pluginManager) => {
6
6
  pluginManager.addToExtensionPoint('LaunchView-LinearGenomeView',
7
7
  // @ts-expect-error
8
- async ({ session, assembly, loc, tracks = [], tracklist, nav, }) => {
8
+ async ({ session, assembly, loc, tracks = [], tracklist, nav, highlight, }) => {
9
9
  try {
10
10
  const { assemblyManager } = session;
11
+ const { isValidRefName } = assemblyManager;
11
12
  const view = session.addView('LinearGenomeView', {});
12
13
  await (0, util_1.when)(() => !!view.volatileWidth);
13
14
  if (!assembly) {
@@ -17,21 +18,36 @@ exports.default = (pluginManager) => {
17
18
  if (!asm) {
18
19
  throw new Error(`Assembly "${assembly}" not found when launching linear genome view`);
19
20
  }
20
- await (0, searchUtils_1.handleSelectedRegion)({ input: loc, model: view, assembly: asm });
21
- const idsNotFound = [];
22
- tracks.forEach(track => tryTrack(view, track, idsNotFound));
23
- if (idsNotFound.length) {
24
- throw new Error(`Could not resolve identifiers: ${idsNotFound.join(',')}`);
25
- }
26
21
  if (tracklist) {
27
22
  view.activateTrackSelector();
28
23
  }
29
24
  if (nav !== undefined) {
30
25
  view.setHideHeader(!nav);
31
26
  }
27
+ if (highlight !== undefined) {
28
+ highlight.forEach(async (h) => {
29
+ if (h) {
30
+ const parsedLocString = (0, util_1.parseLocString)(h, refName => isValidRefName(refName, assembly));
31
+ const location = {
32
+ ...parsedLocString,
33
+ assemblyName: assembly,
34
+ };
35
+ if ((location === null || location === void 0 ? void 0 : location.start) !== undefined &&
36
+ (location === null || location === void 0 ? void 0 : location.end) !== undefined) {
37
+ view.addToHighlights(location);
38
+ }
39
+ }
40
+ });
41
+ }
42
+ await (0, searchUtils_1.handleSelectedRegion)({ input: loc, model: view, assembly: asm });
43
+ const idsNotFound = [];
44
+ tracks.forEach(track => tryTrack(view, track, idsNotFound));
45
+ if (idsNotFound.length) {
46
+ throw new Error(`Could not resolve identifiers: ${idsNotFound.join(',')}`);
47
+ }
32
48
  }
33
49
  catch (e) {
34
- session.notify(`${e}`, 'error');
50
+ session.notifyError(`${e}`, e);
35
51
  throw e;
36
52
  }
37
53
  });
@@ -42,8 +42,15 @@ export declare function stateModelFactory(configSchema: AnyConfigurationSchemaTy
42
42
  message: string | undefined;
43
43
  maxHeightReached: boolean;
44
44
  ReactComponent: ({ model, }: {
45
- model: any;
46
- }) => any;
45
+ model: {
46
+ error?: unknown;
47
+ reload: () => void;
48
+ message: import("react").ReactNode;
49
+ filled?: boolean | undefined;
50
+ status?: string | undefined;
51
+ reactElement?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
52
+ };
53
+ }) => import("react").JSX.Element | undefined;
47
54
  renderProps: any;
48
55
  } & {
49
56
  doReload(): void;
@@ -267,8 +274,15 @@ export declare function stateModelFactory(configSchema: AnyConfigurationSchemaTy
267
274
  message: string | undefined;
268
275
  maxHeightReached: boolean;
269
276
  ReactComponent: ({ model, }: {
270
- model: any;
271
- }) => any;
277
+ model: {
278
+ error?: unknown;
279
+ reload: () => void;
280
+ message: import("react").ReactNode;
281
+ filled?: boolean | undefined;
282
+ status?: string | undefined;
283
+ reactElement?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
284
+ };
285
+ }) => import("react").JSX.Element | undefined;
272
286
  renderProps: any;
273
287
  } & {
274
288
  doReload(): void;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  declare const SetMaxHeightDialog: ({ model, handleClose, }: {
3
3
  model: {
4
- maxHeight?: number | undefined;
4
+ maxHeight?: number;
5
5
  setMaxHeight: (arg?: number) => void;
6
6
  };
7
7
  handleClose: () => void;
@@ -47,8 +47,17 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
47
47
  message: string | undefined;
48
48
  maxHeightReached: boolean;
49
49
  ReactComponent: ({ model, }: {
50
- model: any;
51
- }) => any;
50
+ model: {
51
+ error?: unknown;
52
+ reload: () => void;
53
+ message: import("react").ReactNode;
54
+ filled?: boolean | undefined;
55
+ status?: string | undefined; /**
56
+ * #getter
57
+ */
58
+ reactElement?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
59
+ };
60
+ }) => import("react").JSX.Element | undefined;
52
61
  renderProps: any;
53
62
  } & {
54
63
  doReload(): void;
@@ -343,8 +352,17 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
343
352
  message: string | undefined;
344
353
  maxHeightReached: boolean;
345
354
  ReactComponent: ({ model, }: {
346
- model: any;
347
- }) => any;
355
+ model: {
356
+ error?: unknown;
357
+ reload: () => void;
358
+ message: import("react").ReactNode;
359
+ filled?: boolean | undefined;
360
+ status?: string | undefined; /**
361
+ * #getter
362
+ */
363
+ reactElement?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
364
+ };
365
+ }) => import("react").JSX.Element | undefined;
348
366
  renderProps: any;
349
367
  } & {
350
368
  doReload(): void;
@@ -4,131 +4,7 @@ import { ContentBlock } from '@jbrowse/core/util/blockTypes';
4
4
  import { Assembly } from '@jbrowse/core/assemblyManager/assembly';
5
5
  declare const Cytobands: ({ overview, block, assembly, }: {
6
6
  overview: Base1DViewModel;
7
- assembly?: ({
8
- configuration: any;
9
- } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
10
- error: unknown;
11
- loaded: boolean;
12
- loadingP: Promise<void> | undefined;
13
- volatileRegions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
14
- refNameAliases: {
15
- [x: string]: string | undefined;
16
- } | undefined;
17
- lowerCaseRefNameAliases: {
18
- [x: string]: string | undefined;
19
- } | undefined;
20
- cytobands: import("@jbrowse/core/util").Feature[] | undefined;
21
- } & {
22
- getConf(arg: string): any;
23
- } & {
24
- readonly initialized: boolean;
25
- readonly name: string;
26
- readonly regions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
27
- readonly aliases: string[];
28
- readonly displayName: string | undefined;
29
- hasName(name: string): boolean;
30
- readonly allAliases: string[];
31
- readonly allRefNames: string[] | undefined;
32
- readonly lowerCaseRefNames: string[] | undefined;
33
- readonly allRefNamesWithLowerCase: string[] | undefined;
34
- readonly rpcManager: import("@jbrowse/core/rpc/RpcManager").default;
35
- readonly refNameColors: string[];
36
- } & {
37
- readonly refNames: string[] | undefined;
38
- } & {
39
- getCanonicalRefName(refName: string): string | undefined;
40
- getRefNameColor(refName: string): string | undefined;
41
- isValidRefName(refName: string): boolean;
42
- } & {
43
- setLoaded({ adapterRegionsWithAssembly, refNameAliases, lowerCaseRefNameAliases, cytobands, }: import("@jbrowse/core/assemblyManager/assembly").Loading): void;
44
- setError(e: unknown): void;
45
- setRegions(regions: import("@jbrowse/core/util").Region[]): void;
46
- setRefNameAliases(aliases: {
47
- [x: string]: string | undefined;
48
- }, lcAliases: {
49
- [x: string]: string | undefined;
50
- }): void;
51
- setCytobands(cytobands: import("@jbrowse/core/util").Feature[]): void;
52
- setLoadingP(p?: Promise<void> | undefined): void;
53
- load(): Promise<void>;
54
- loadPre(): Promise<void>;
55
- } & {
56
- getAdapterMapEntry(adapterConf: {
57
- [x: string]: unknown;
58
- }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
59
- getRefNameMapForAdapter(adapterConf: {
60
- [x: string]: unknown;
61
- }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
62
- [x: string]: string | undefined;
63
- }>;
64
- getReverseRefNameMapForAdapter(adapterConf: {
65
- [x: string]: unknown;
66
- }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
67
- [x: string]: string | undefined;
68
- }>;
69
- } & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
70
- configuration: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IReferenceType<import("mobx-state-tree").IAnyType>>;
71
- }, {
72
- error: unknown;
73
- loaded: boolean;
74
- loadingP: Promise<void> | undefined;
75
- volatileRegions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
76
- refNameAliases: {
77
- [x: string]: string | undefined;
78
- } | undefined;
79
- lowerCaseRefNameAliases: {
80
- [x: string]: string | undefined;
81
- } | undefined;
82
- cytobands: import("@jbrowse/core/util").Feature[] | undefined;
83
- } & {
84
- getConf(arg: string): any;
85
- } & {
86
- readonly initialized: boolean;
87
- readonly name: string;
88
- readonly regions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
89
- readonly aliases: string[];
90
- readonly displayName: string | undefined;
91
- hasName(name: string): boolean;
92
- readonly allAliases: string[];
93
- readonly allRefNames: string[] | undefined;
94
- readonly lowerCaseRefNames: string[] | undefined;
95
- readonly allRefNamesWithLowerCase: string[] | undefined;
96
- readonly rpcManager: import("@jbrowse/core/rpc/RpcManager").default;
97
- readonly refNameColors: string[];
98
- } & {
99
- readonly refNames: string[] | undefined;
100
- } & {
101
- getCanonicalRefName(refName: string): string | undefined;
102
- getRefNameColor(refName: string): string | undefined;
103
- isValidRefName(refName: string): boolean;
104
- } & {
105
- setLoaded({ adapterRegionsWithAssembly, refNameAliases, lowerCaseRefNameAliases, cytobands, }: import("@jbrowse/core/assemblyManager/assembly").Loading): void;
106
- setError(e: unknown): void;
107
- setRegions(regions: import("@jbrowse/core/util").Region[]): void;
108
- setRefNameAliases(aliases: {
109
- [x: string]: string | undefined;
110
- }, lcAliases: {
111
- [x: string]: string | undefined;
112
- }): void;
113
- setCytobands(cytobands: import("@jbrowse/core/util").Feature[]): void;
114
- setLoadingP(p?: Promise<void> | undefined): void;
115
- load(): Promise<void>;
116
- loadPre(): Promise<void>;
117
- } & {
118
- getAdapterMapEntry(adapterConf: {
119
- [x: string]: unknown;
120
- }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
121
- getRefNameMapForAdapter(adapterConf: {
122
- [x: string]: unknown;
123
- }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
124
- [x: string]: string | undefined;
125
- }>;
126
- getReverseRefNameMapForAdapter(adapterConf: {
127
- [x: string]: unknown;
128
- }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
129
- [x: string]: string | undefined;
130
- }>;
131
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>) | undefined;
7
+ assembly?: Assembly;
132
8
  block: ContentBlock;
133
9
  }) => React.JSX.Element;
134
10
  export default Cytobands;
@@ -35,6 +35,10 @@ function LoadingMessage() {
35
35
  function useSvgLocal(key, val) {
36
36
  return (0, util_1.useLocalStorage)('svg-' + key, val);
37
37
  }
38
+ function TextField2({ children, ...rest }) {
39
+ return (react_1.default.createElement("div", null,
40
+ react_1.default.createElement(material_1.TextField, { ...rest }, children)));
41
+ }
38
42
  function ExportSvgDialog({ model, handleClose, }) {
39
43
  const session = (0, util_1.getSession)(model);
40
44
  const offscreenCanvas = typeof OffscreenCanvas !== 'undefined';
@@ -47,15 +51,13 @@ function ExportSvgDialog({ model, handleClose, }) {
47
51
  return (react_1.default.createElement(ui_1.Dialog, { open: true, onClose: handleClose, title: "Export SVG" },
48
52
  react_1.default.createElement(material_1.DialogContent, null,
49
53
  error ? (react_1.default.createElement(ui_1.ErrorMessage, { error: error })) : loading ? (react_1.default.createElement(LoadingMessage, null)) : null,
50
- react_1.default.createElement(material_1.TextField, { helperText: "filename", value: filename, onChange: event => setFilename(event.target.value) }),
51
- react_1.default.createElement("br", null),
52
- react_1.default.createElement(material_1.TextField, { select: true, label: "Track label positioning", variant: "outlined", style: { width: 150 }, value: trackLabels, onChange: event => setTrackLabels(event.target.value) },
54
+ react_1.default.createElement(TextField2, { helperText: "filename", value: filename, onChange: event => setFilename(event.target.value) }),
55
+ react_1.default.createElement(TextField2, { select: true, label: "Track label positioning", variant: "outlined", style: { width: 150 }, value: trackLabels, onChange: event => setTrackLabels(event.target.value) },
53
56
  react_1.default.createElement(material_1.MenuItem, { value: "offset" }, "Offset"),
54
57
  react_1.default.createElement(material_1.MenuItem, { value: "overlay" }, "Overlay"),
55
58
  react_1.default.createElement(material_1.MenuItem, { value: "left" }, "Left"),
56
59
  react_1.default.createElement(material_1.MenuItem, { value: "none" }, "None")),
57
- react_1.default.createElement("br", null),
58
- session.allThemes ? (react_1.default.createElement(material_1.TextField, { select: true, label: "Theme", variant: "outlined", value: themeName, onChange: event => setThemeName(event.target.value) }, Object.entries(session.allThemes()).map(([key, val]) => (react_1.default.createElement(material_1.MenuItem, { key: key, value: key },
60
+ session.allThemes ? (react_1.default.createElement(TextField2, { select: true, label: "Theme", variant: "outlined", value: themeName, onChange: event => setThemeName(event.target.value) }, Object.entries(session.allThemes()).map(([key, val]) => (react_1.default.createElement(material_1.MenuItem, { key: key, value: key },
59
61
  // @ts-expect-error
60
62
  val.name || '(Unknown name)'))))) : null,
61
63
  offscreenCanvas ? (react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Checkbox, { checked: rasterizeLayers, onChange: () => setRasterizeLayers(val => !val) }), label: "Rasterize canvas based tracks? File may be much larger if this is turned off" })) : (react_1.default.createElement(material_1.Typography, null, "Note: rasterizing layers not yet supported in this browser, so SVG size may be large"))),
@@ -76,6 +78,8 @@ function ExportSvgDialog({ model, handleClose, }) {
76
78
  catch (e) {
77
79
  console.error(e);
78
80
  setError(e);
81
+ }
82
+ finally {
79
83
  setLoading(false);
80
84
  }
81
85
  } }, "Submit"))));
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { LinearGenomeViewModel } from '../model';
3
+ type LGV = LinearGenomeViewModel;
4
+ declare const HighlightGroup: ({ model, }: {
5
+ model: LGV;
6
+ }) => React.JSX.Element[];
7
+ export default HighlightGroup;