@jbrowse/core 2.18.0 → 3.0.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 (165) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +1 -2
  2. package/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +6 -11
  3. package/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +1 -2
  4. package/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +16 -17
  5. package/BaseFeatureWidget/BaseFeatureDetail/BaseCard.d.ts +1 -2
  6. package/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +2 -5
  7. package/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +1 -2
  8. package/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +4 -6
  9. package/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -2
  10. package/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +5 -7
  11. package/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.d.ts +1 -2
  12. package/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +19 -46
  13. package/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +1 -2
  14. package/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +11 -27
  15. package/BaseFeatureWidget/BaseFeatureDetail/FieldName.d.ts +1 -2
  16. package/BaseFeatureWidget/BaseFeatureDetail/FieldName.js +2 -6
  17. package/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +1 -2
  18. package/BaseFeatureWidget/BaseFeatureDetail/Position.js +2 -5
  19. package/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +1 -2
  20. package/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +2 -4
  21. package/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +1 -2
  22. package/BaseFeatureWidget/BaseFeatureDetail/UriField.js +2 -4
  23. package/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +3 -4
  24. package/BaseFeatureWidget/BaseFeatureDetail/index.js +5 -7
  25. package/BaseFeatureWidget/BaseFeatureDetail/util.js +4 -8
  26. package/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.d.ts +10 -0
  27. package/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +48 -0
  28. package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.d.ts +1 -2
  29. package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +33 -34
  30. package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +1 -2
  31. package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.js +29 -22
  32. package/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.d.ts +8 -0
  33. package/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.js +28 -0
  34. package/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.d.ts +2 -10
  35. package/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +10 -75
  36. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.d.ts +1 -2
  37. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.js +5 -23
  38. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.d.ts +1 -2
  39. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.js +8 -42
  40. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.d.ts +1 -2
  41. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.js +98 -90
  42. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.d.ts +1 -2
  43. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.js +49 -53
  44. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.d.ts +1 -2
  45. package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.js +18 -53
  46. package/BaseFeatureWidget/SequenceFeatureDetails/model.js +3 -10
  47. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.d.ts +1 -2
  48. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.js +6 -9
  49. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.d.ts +1 -2
  50. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDSSequence.js +2 -2
  51. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.d.ts +1 -2
  52. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/GenomicSequence.js +5 -8
  53. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.d.ts +1 -2
  54. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/ProteinSequence.js +2 -2
  55. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.d.ts +1 -2
  56. package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +3 -8
  57. package/BaseFeatureWidget/SequenceFeatureDetails/types.d.ts +8 -0
  58. package/BaseFeatureWidget/SequenceFeatureDetails/types.js +2 -0
  59. package/CorePlugin.js +17 -7
  60. package/PluginManager.d.ts +2 -1
  61. package/PluginManager.js +4 -2
  62. package/ReExports/list.js +3 -0
  63. package/ReExports/modules.d.ts +4 -2
  64. package/ReExports/modules.js +29 -19
  65. package/TextSearch/BaseResults.d.ts +1 -1
  66. package/assemblyManager/assembly.js +4 -4
  67. package/configuration/configurationSlot.d.ts +1 -1
  68. package/data_adapters/CytobandAdapter/CytobandAdapter.js +1 -4
  69. package/data_adapters/CytobandAdapter/index.js +20 -7
  70. package/data_adapters/dataAdapterCache.d.ts +0 -1
  71. package/data_adapters/dataAdapterCache.js +2 -9
  72. package/data_adapters/util.d.ts +1 -0
  73. package/data_adapters/util.js +10 -0
  74. package/package.json +7 -9
  75. package/pluggableElementTypes/models/BaseTrackModel.js +9 -5
  76. package/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +1 -2
  77. package/pluggableElementTypes/renderers/CircularChordRendererType.js +2 -2
  78. package/pluggableElementTypes/renderers/RendererType.d.ts +2 -2
  79. package/pluggableElementTypes/renderers/RendererType.js +2 -2
  80. package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.d.ts +1 -2
  81. package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.js +9 -65
  82. package/pluggableElementTypes/renderers/ServerSideRenderedContent.d.ts +1 -2
  83. package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +9 -65
  84. package/pluggableElementTypes/renderers/ServerSideRendererType.js +3 -3
  85. package/stories/examples/WithSequencePanel.d.ts +5 -6
  86. package/stories/examples/WithSequencePanel.js +6 -6
  87. package/tsconfig.build.tsbuildinfo +1 -1
  88. package/ui/AppLogo.d.ts +1 -2
  89. package/ui/AppLogo.js +2 -5
  90. package/ui/AssemblySelector.d.ts +3 -3
  91. package/ui/AssemblySelector.js +11 -33
  92. package/ui/BaseTooltip.d.ts +1 -2
  93. package/ui/BaseTooltip.js +9 -12
  94. package/ui/CascadingMenu.d.ts +1 -2
  95. package/ui/CascadingMenu.js +15 -53
  96. package/ui/CascadingMenuButton.d.ts +1 -2
  97. package/ui/CascadingMenuButton.js +17 -41
  98. package/ui/ColorPicker.d.ts +3 -4
  99. package/ui/ColorPicker.js +33 -31
  100. package/ui/Dialog.d.ts +1 -2
  101. package/ui/Dialog.js +13 -21
  102. package/ui/DraggableDialog.d.ts +5 -0
  103. package/ui/DraggableDialog.js +32 -0
  104. package/ui/DropDownMenu.d.ts +1 -2
  105. package/ui/DropDownMenu.js +8 -34
  106. package/ui/EditableTypography.d.ts +1 -2
  107. package/ui/EditableTypography.js +29 -54
  108. package/ui/ErrorBoundary.d.ts +2 -2
  109. package/ui/ErrorBoundary.js +3 -25
  110. package/ui/ErrorMessage.d.ts +1 -2
  111. package/ui/ErrorMessage.js +25 -25
  112. package/ui/ErrorMessageStackTraceDialog.d.ts +1 -2
  113. package/ui/ErrorMessageStackTraceDialog.js +11 -44
  114. package/ui/FactoryResetDialog.d.ts +1 -2
  115. package/ui/FactoryResetDialog.js +7 -12
  116. package/ui/FatalErrorDialog.d.ts +1 -2
  117. package/ui/FatalErrorDialog.js +10 -41
  118. package/ui/FileSelector/FileSelector.d.ts +1 -2
  119. package/ui/FileSelector/FileSelector.js +37 -76
  120. package/ui/FileSelector/LocalFileChooser.d.ts +1 -2
  121. package/ui/FileSelector/LocalFileChooser.js +17 -28
  122. package/ui/FileSelector/UrlChooser.d.ts +1 -2
  123. package/ui/FileSelector/UrlChooser.js +2 -5
  124. package/ui/Icons.d.ts +9 -10
  125. package/ui/Icons.js +10 -19
  126. package/ui/LoadingEllipses.d.ts +1 -2
  127. package/ui/LoadingEllipses.js +2 -5
  128. package/ui/Logo.d.ts +2 -3
  129. package/ui/Logo.js +5 -23
  130. package/ui/Menu.d.ts +2 -3
  131. package/ui/Menu.js +83 -113
  132. package/ui/MenuButton.d.ts +1 -2
  133. package/ui/MenuButton.js +11 -35
  134. package/ui/PrerenderedCanvas.d.ts +1 -2
  135. package/ui/PrerenderedCanvas.js +3 -25
  136. package/ui/RedErrorMessageBox.d.ts +1 -2
  137. package/ui/RedErrorMessageBox.js +2 -5
  138. package/ui/ResizeHandle.d.ts +1 -2
  139. package/ui/ResizeHandle.js +3 -25
  140. package/ui/ReturnToImportFormDialog.d.ts +1 -2
  141. package/ui/ReturnToImportFormDialog.js +7 -12
  142. package/ui/SanitizedHTML.d.ts +2 -3
  143. package/ui/SanitizedHTML.js +3 -3
  144. package/ui/Snackbar.d.ts +1 -2
  145. package/ui/Snackbar.js +41 -20
  146. package/ui/SnackbarContents.d.ts +5 -0
  147. package/ui/SnackbarContents.js +16 -0
  148. package/ui/SnackbarModel.js +20 -9
  149. package/ui/colors.js +1 -1
  150. package/ui/index.d.ts +0 -2
  151. package/ui/index.js +1 -5
  152. package/ui/react-colorful.js +17 -7
  153. package/ui/theme.js +7 -0
  154. package/util/index.d.ts +13 -11
  155. package/util/index.js +31 -11
  156. package/util/io/RemoteFileWithRangeCache.d.ts +3 -5
  157. package/util/io/RemoteFileWithRangeCache.js +8 -6
  158. package/util/io/index.d.ts +1 -1
  159. package/util/io/index.js +3 -3
  160. package/util/nanoid.d.ts +1 -1
  161. package/util/offscreenCanvasUtils.d.ts +2 -3
  162. package/util/offscreenCanvasUtils.js +21 -13
  163. package/util/tracks.d.ts +1 -1
  164. package/util/tracks.js +8 -3
  165. package/util/useMeasure.d.ts +1 -1
@@ -0,0 +1,48 @@
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 jsx_runtime_1 = require("react/jsx-runtime");
7
+ const mobx_react_1 = require("mobx-react");
8
+ const util_1 = require("../../util");
9
+ const util_2 = require("../util");
10
+ const CDNASequence_1 = __importDefault(require("./seqtypes/CDNASequence"));
11
+ const CDSSequence_1 = __importDefault(require("./seqtypes/CDSSequence"));
12
+ const GenomicSequence_1 = __importDefault(require("./seqtypes/GenomicSequence"));
13
+ const ProteinSequence_1 = __importDefault(require("./seqtypes/ProteinSequence"));
14
+ const SequenceContents = (0, mobx_react_1.observer)(function ({ mode, feature, sequence, model, }) {
15
+ var _a;
16
+ let { seq, upstream = '', downstream = '' } = sequence;
17
+ const children = ((_a = feature.subfeatures) === null || _a === void 0 ? void 0 : _a.sort((a, b) => a.start - b.start).map(sub => ({
18
+ ...sub,
19
+ start: sub.start - feature.start,
20
+ end: sub.end - feature.start,
21
+ }))) || [];
22
+ let cds = (0, util_2.dedupe)(children.filter(sub => sub.type === 'CDS'));
23
+ let utr = (0, util_2.dedupe)(children.filter(sub => { var _a; return (_a = sub.type) === null || _a === void 0 ? void 0 : _a.match(/utr/i); }));
24
+ let exons = (0, util_2.dedupe)(children.filter(sub => sub.type === 'exon'));
25
+ if (!utr.length && cds.length && exons.length) {
26
+ utr = (0, util_2.calculateUTRs)(cds, exons);
27
+ }
28
+ if (!utr.length && cds.length && !exons.length) {
29
+ utr = (0, util_2.calculateUTRs2)(cds, {
30
+ start: 0,
31
+ end: feature.end - feature.start,
32
+ type: 'gene',
33
+ });
34
+ }
35
+ if (feature.strand === -1) {
36
+ ;
37
+ [seq, upstream, downstream] = [
38
+ (0, util_1.revcom)(seq),
39
+ (0, util_1.revcom)(downstream),
40
+ (0, util_1.revcom)(upstream),
41
+ ];
42
+ cds = (0, util_2.revlist)(cds, seq.length);
43
+ exons = (0, util_2.revlist)(exons, seq.length);
44
+ utr = (0, util_2.revlist)(utr, seq.length);
45
+ }
46
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: mode === 'genomic' ? ((0, jsx_runtime_1.jsx)(GenomicSequence_1.default, { feature: feature, model: model, sequence: seq })) : mode === 'genomic_sequence_updownstream' ? ((0, jsx_runtime_1.jsx)(GenomicSequence_1.default, { model: model, feature: feature, sequence: seq, upstream: upstream, downstream: downstream })) : mode === 'cds' ? ((0, jsx_runtime_1.jsx)(CDSSequence_1.default, { model: model, cds: cds, sequence: seq })) : mode === 'cdna' ? ((0, jsx_runtime_1.jsx)(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, utr: utr, sequence: seq })) : mode === 'protein' ? ((0, jsx_runtime_1.jsx)(ProteinSequence_1.default, { model: model, cds: cds, codonTable: (0, util_1.generateCodonTable)(util_1.defaultCodonTable), sequence: seq })) : mode === 'gene' ? ((0, jsx_runtime_1.jsx)(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, utr: utr, sequence: seq, includeIntrons: true })) : mode === 'gene_collapsed_intron' ? ((0, jsx_runtime_1.jsx)(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, sequence: seq, utr: utr, includeIntrons: true, collapseIntron: true })) : mode === 'gene_updownstream' ? ((0, jsx_runtime_1.jsx)(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, sequence: seq, utr: utr, upstream: upstream, downstream: downstream, includeIntrons: true })) : mode === 'gene_updownstream_collapsed_intron' ? ((0, jsx_runtime_1.jsx)(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, sequence: seq, utr: utr, upstream: upstream, downstream: downstream, includeIntrons: true, collapseIntron: true })) : ((0, jsx_runtime_1.jsx)("div", { children: "Unknown type" })) }));
47
+ });
48
+ exports.default = SequenceContents;
@@ -1,8 +1,7 @@
1
- import React from 'react';
2
1
  import type { SimpleFeatureSerialized } from '../../util';
3
2
  import type { BaseFeatureWidgetModel } from '../stateModelFactory';
4
3
  declare const SequenceFeatureDetails: ({ model, feature, }: {
5
4
  model: BaseFeatureWidgetModel;
6
5
  feature: SimpleFeatureSerialized;
7
- }) => React.JSX.Element;
6
+ }) => import("react/jsx-runtime").JSX.Element;
8
7
  export default SequenceFeatureDetails;
@@ -15,18 +15,29 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
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
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
37
  };
28
38
  Object.defineProperty(exports, "__esModule", { value: true });
29
- const react_1 = __importStar(require("react"));
39
+ const jsx_runtime_1 = require("react/jsx-runtime");
40
+ const react_1 = require("react");
30
41
  const material_1 = require("@mui/material");
31
42
  const mobx_react_1 = require("mobx-react");
32
43
  const hooks_1 = require("./hooks");
@@ -45,31 +56,19 @@ const SequenceFeatureDetails = (0, mobx_react_1.observer)(function ({ model, fea
45
56
  (0, react_1.useEffect)(() => {
46
57
  sequenceFeatureDetails.setFeature(feature);
47
58
  }, [sequenceFeatureDetails, feature]);
48
- return (react_1.default.createElement(react_1.default.Fragment, null,
49
- react_1.default.createElement("div", null,
50
- react_1.default.createElement(SequenceTypeSelector_1.default, { model: sequenceFeatureDetails }),
51
- react_1.default.createElement(SequenceFeatureMenu_1.default, { ref: seqPanelRef, model: sequenceFeatureDetails, extraItems: [
52
- {
53
- label: 'Open in dialog',
54
- onClick: () => {
55
- setTimeout(() => {
56
- setOpenInDialog(true);
57
- }, 1);
58
- },
59
- },
60
- ] })),
61
- openInDialog ? (react_1.default.createElement("div", null,
62
- "Open in dialog...",
63
- react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement(ui_1.LoadingEllipses, null) },
64
- react_1.default.createElement(SequenceDialog, { model: model, feature: feature, handleClose: () => {
65
- setOpenInDialog(false);
66
- } })))) : (react_1.default.createElement("div", null,
67
- feature.type === 'gene' ? (react_1.default.createElement(material_1.Typography, null, "Note: inspect subfeature sequences for protein/CDS computations")) : null,
68
- error ? (react_1.default.createElement(ui_1.ErrorMessage, { error: error })) : !sequence ? (react_1.default.createElement(ui_1.LoadingEllipses, null)) : 'error' in sequence ? (react_1.default.createElement(react_1.default.Fragment, null,
69
- react_1.default.createElement(material_1.Typography, { color: "error" }, sequence.error),
70
- react_1.default.createElement(material_1.Button, { variant: "contained", color: "inherit", onClick: () => {
71
- setForce(true);
72
- } }, "Force load"))) : (react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement(ui_1.LoadingEllipses, null) },
73
- react_1.default.createElement(SequencePanel, { ref: seqPanelRef, feature: feature, sequence: sequence, model: sequenceFeatureDetails })))))));
59
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(SequenceTypeSelector_1.default, { model: sequenceFeatureDetails }), (0, jsx_runtime_1.jsx)(SequenceFeatureMenu_1.default, { ref: seqPanelRef, model: sequenceFeatureDetails, extraItems: [
60
+ {
61
+ label: 'Open in dialog',
62
+ onClick: () => {
63
+ setTimeout(() => {
64
+ setOpenInDialog(true);
65
+ }, 1);
66
+ },
67
+ },
68
+ ] })] }), openInDialog ? ((0, jsx_runtime_1.jsxs)("div", { children: ["Open in dialog...", (0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: (0, jsx_runtime_1.jsx)(ui_1.LoadingEllipses, {}), children: (0, jsx_runtime_1.jsx)(SequenceDialog, { model: model, feature: feature, handleClose: () => {
69
+ setOpenInDialog(false);
70
+ } }) })] })) : ((0, jsx_runtime_1.jsxs)("div", { children: [feature.type === 'gene' ? ((0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Note: inspect subfeature sequences for protein/CDS computations" })) : null, error ? ((0, jsx_runtime_1.jsx)(ui_1.ErrorMessage, { error: error })) : !sequence ? ((0, jsx_runtime_1.jsx)(ui_1.LoadingEllipses, {})) : 'error' in sequence ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { color: "error", children: sequence.error }), (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", color: "inherit", onClick: () => {
71
+ setForce(true);
72
+ }, children: "Force load" })] })) : ((0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: (0, jsx_runtime_1.jsx)(ui_1.LoadingEllipses, {}), children: (0, jsx_runtime_1.jsx)(SequencePanel, { ref: seqPanelRef, feature: feature, sequence: sequence, model: sequenceFeatureDetails }) }))] }))] }));
74
73
  });
75
74
  exports.default = SequenceFeatureDetails;
@@ -1,8 +1,7 @@
1
- import React from 'react';
2
1
  import type { SimpleFeatureSerialized } from '../../util';
3
2
  import type { BaseFeatureWidgetModel } from '../stateModelFactory';
4
3
  declare const SequenceFeaturePanel: ({ model, feature, }: {
5
4
  model: BaseFeatureWidgetModel;
6
5
  feature: SimpleFeatureSerialized;
7
- }) => React.JSX.Element;
6
+ }) => import("react/jsx-runtime").JSX.Element;
8
7
  export default SequenceFeaturePanel;
@@ -15,18 +15,29 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
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
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
37
  };
28
38
  Object.defineProperty(exports, "__esModule", { value: true });
29
- const react_1 = __importStar(require("react"));
39
+ const jsx_runtime_1 = require("react/jsx-runtime");
40
+ const react_1 = require("react");
30
41
  const Help_1 = __importDefault(require("@mui/icons-material/Help"));
31
42
  const material_1 = require("@mui/material");
32
43
  const mobx_react_1 = require("mobx-react");
@@ -47,19 +58,15 @@ const useStyles = (0, mui_1.makeStyles)()(theme => ({
47
58
  const SequenceFeaturePanel = (0, mobx_react_1.observer)(function ({ model, feature, }) {
48
59
  const { classes } = useStyles();
49
60
  const [shown, setShown] = (0, react_1.useState)(false);
50
- return (react_1.default.createElement("div", { className: classes.container },
51
- react_1.default.createElement(material_1.FormControl, { className: classes.formControl },
52
- react_1.default.createElement(material_1.Button, { variant: "contained", onClick: () => {
53
- setShown(!shown);
54
- } }, shown ? 'Hide feature sequence' : 'Show feature sequence')),
55
- react_1.default.createElement(material_1.IconButton, { onClick: () => {
56
- (0, util_1.getSession)(model).queueDialog(handleClose => [
57
- HelpDialog,
58
- { handleClose },
59
- ]);
60
- } },
61
- react_1.default.createElement(Help_1.default, null)),
62
- shown ? (react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement(ui_1.LoadingEllipses, null) },
63
- react_1.default.createElement(SequenceFeatureDetails, { key: feature.uniqueId, model: model, feature: feature }))) : null));
61
+ return ((0, jsx_runtime_1.jsxs)("div", { className: classes.container, children: [(0, jsx_runtime_1.jsx)(material_1.FormControl, { className: classes.formControl, children: (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", onClick: () => {
62
+ setShown(!shown);
63
+ }, children: shown ? 'Hide feature sequence' : 'Show feature sequence' }) }), (0, jsx_runtime_1.jsx)(material_1.IconButton, { onClick: () => {
64
+ (0, util_1.getSession)(model).queueDialog(handleClose => [
65
+ HelpDialog,
66
+ {
67
+ handleClose,
68
+ },
69
+ ]);
70
+ }, children: (0, jsx_runtime_1.jsx)(Help_1.default, {}) }), shown ? ((0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: (0, jsx_runtime_1.jsx)(ui_1.LoadingEllipses, {}), children: (0, jsx_runtime_1.jsx)(SequenceFeatureDetails, { model: model, feature: feature }, feature.uniqueId) })) : null] }));
64
71
  });
65
72
  exports.default = SequenceFeaturePanel;
@@ -0,0 +1,8 @@
1
+ import type { SequenceFeatureDetailsModel } from './model';
2
+ import type { SimpleFeatureSerialized } from '../../util';
3
+ declare const SequenceName: ({ mode, model, feature, }: {
4
+ model: SequenceFeatureDetailsModel;
5
+ mode: string;
6
+ feature: SimpleFeatureSerialized;
7
+ }) => import("react/jsx-runtime").JSX.Element;
8
+ export default SequenceName;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const mobx_react_1 = require("mobx-react");
5
+ const util_1 = require("../../util");
6
+ function getStrand(strand) {
7
+ if (strand === -1) {
8
+ return '(-)';
9
+ }
10
+ else if (strand === 1) {
11
+ return '(+)';
12
+ }
13
+ else {
14
+ return '';
15
+ }
16
+ }
17
+ const SequenceName = (0, mobx_react_1.observer)(function ({ mode, model, feature, }) {
18
+ return ((0, jsx_runtime_1.jsx)("div", { style: { background: 'white' }, children: `>${[
19
+ [feature.name || feature.id, mode].filter(f => !!f).join('-'),
20
+ `${feature.refName}:${(0, util_1.toLocale)(feature.start + 1)}-${(0, util_1.toLocale)(feature.end)}${getStrand(feature.strand)}`,
21
+ mode.endsWith('updownstream')
22
+ ? `+/- ${(0, util_1.toLocale)(model.upDownBp)} up/downstream bp`
23
+ : '',
24
+ ]
25
+ .filter(f => !!f)
26
+ .join(' ')}\n` }));
27
+ });
28
+ exports.default = SequenceName;
@@ -1,11 +1,3 @@
1
- import React from 'react';
2
- import type { SequenceFeatureDetailsModel } from './model';
3
- import type { SimpleFeatureSerialized } from '../../util';
4
- import type { SeqState } from '../util';
5
- interface SequencePanelProps {
6
- sequence: SeqState;
7
- feature: SimpleFeatureSerialized;
8
- model: SequenceFeatureDetailsModel;
9
- }
10
- declare const SequencePanel: React.ForwardRefExoticComponent<SequencePanelProps & React.RefAttributes<HTMLDivElement>>;
1
+ import type { SequencePanelProps } from './types';
2
+ declare const SequencePanel: import("react").ForwardRefExoticComponent<SequencePanelProps & import("react").RefAttributes<HTMLDivElement>>;
11
3
  export default SequencePanel;
@@ -3,97 +3,32 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const react_1 = __importDefault(require("react"));
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ const react_1 = require("react");
7
8
  const mobx_react_1 = require("mobx-react");
8
- const util_1 = require("../../util");
9
- const util_2 = require("../util");
10
- const CDNASequence_1 = __importDefault(require("./seqtypes/CDNASequence"));
11
- const CDSSequence_1 = __importDefault(require("./seqtypes/CDSSequence"));
12
- const GenomicSequence_1 = __importDefault(require("./seqtypes/GenomicSequence"));
13
- const ProteinSequence_1 = __importDefault(require("./seqtypes/ProteinSequence"));
14
- function getStrand(strand) {
15
- if (strand === -1) {
16
- return '(-)';
17
- }
18
- else if (strand === 1) {
19
- return '(+)';
20
- }
21
- else {
22
- return '';
23
- }
24
- }
9
+ const SequenceContents_1 = __importDefault(require("./SequenceContents"));
10
+ const SequenceName_1 = __importDefault(require("./SequenceName"));
25
11
  function WordWrap({ children }) {
26
- return (react_1.default.createElement("pre", { style: {
12
+ return ((0, jsx_runtime_1.jsx)("pre", { style: {
27
13
  fontFamily: 'monospace',
28
14
  color: 'black',
29
15
  fontSize: 11,
30
- } }, children));
16
+ }, children: children }));
31
17
  }
32
18
  function NoWordWrap({ children }) {
33
- return (react_1.default.createElement("div", { style: {
19
+ return ((0, jsx_runtime_1.jsx)("div", { style: {
34
20
  fontFamily: 'monospace',
35
21
  color: 'black',
36
22
  fontSize: 11,
37
23
  maxWidth: 600,
38
24
  whiteSpace: 'wrap',
39
25
  wordBreak: 'break-all',
40
- } }, children));
26
+ }, children: children }));
41
27
  }
42
- const SequencePanel = (0, mobx_react_1.observer)(react_1.default.forwardRef(function S(props, ref) {
28
+ const SequencePanel = (0, mobx_react_1.observer)((0, react_1.forwardRef)(function S(props, ref) {
43
29
  const { sequence, model, feature } = props;
44
30
  const { showCoordinates, mode } = model;
45
31
  const Container = showCoordinates ? WordWrap : NoWordWrap;
46
- return (react_1.default.createElement("div", { "data-testid": "sequence_panel", ref: ref, style: { maxHeight: 300, overflow: 'auto' } },
47
- react_1.default.createElement(Container, null,
48
- react_1.default.createElement(SequenceName, { model: model, mode: mode, feature: feature }),
49
- react_1.default.createElement(SequenceContents, { model: model, mode: mode, feature: feature, sequence: sequence }))));
32
+ return ((0, jsx_runtime_1.jsx)("div", { "data-testid": "sequence_panel", ref: ref, style: { maxHeight: 300, overflow: 'auto' }, children: (0, jsx_runtime_1.jsxs)(Container, { children: [(0, jsx_runtime_1.jsx)(SequenceName_1.default, { model: model, mode: mode, feature: feature }), (0, jsx_runtime_1.jsx)(SequenceContents_1.default, { model: model, mode: mode, feature: feature, sequence: sequence })] }) }));
50
33
  }));
51
- function SequenceName({ mode, model, feature, }) {
52
- return (react_1.default.createElement("div", { style: { background: 'white' } }, `>${[
53
- [feature.name || feature.id, mode].filter(f => !!f).join('-'),
54
- `${feature.refName}:${(0, util_1.toLocale)(feature.start + 1)}-${(0, util_1.toLocale)(feature.end)}${getStrand(feature.strand)}`,
55
- mode.endsWith('updownstream')
56
- ? `+/- ${(0, util_1.toLocale)(model.upDownBp)} up/downstream bp`
57
- : '',
58
- ]
59
- .filter(f => !!f)
60
- .join(' ')}\n`));
61
- }
62
- function SequenceContents({ mode, feature, sequence, model, }) {
63
- let { seq, upstream = '', downstream = '' } = sequence;
64
- const { subfeatures = [] } = feature;
65
- const children = subfeatures
66
- .sort((a, b) => a.start - b.start)
67
- .map(sub => ({
68
- ...sub,
69
- start: sub.start - feature.start,
70
- end: sub.end - feature.start,
71
- }));
72
- let cds = (0, util_2.dedupe)(children.filter(sub => sub.type === 'CDS'));
73
- let utr = (0, util_2.dedupe)(children.filter(sub => { var _a; return (_a = sub.type) === null || _a === void 0 ? void 0 : _a.match(/utr/i); }));
74
- let exons = (0, util_2.dedupe)(children.filter(sub => sub.type === 'exon'));
75
- if (!utr.length && cds.length && exons.length) {
76
- utr = (0, util_2.calculateUTRs)(cds, exons);
77
- }
78
- if (!utr.length && cds.length && !exons.length) {
79
- utr = (0, util_2.calculateUTRs2)(cds, {
80
- start: 0,
81
- end: feature.end - feature.start,
82
- type: 'gene',
83
- });
84
- }
85
- if (feature.strand === -1) {
86
- ;
87
- [seq, upstream, downstream] = [
88
- (0, util_1.revcom)(seq),
89
- (0, util_1.revcom)(downstream),
90
- (0, util_1.revcom)(upstream),
91
- ];
92
- cds = (0, util_2.revlist)(cds, seq.length);
93
- exons = (0, util_2.revlist)(exons, seq.length);
94
- utr = (0, util_2.revlist)(utr, seq.length);
95
- }
96
- const codonTable = (0, util_1.generateCodonTable)(util_1.defaultCodonTable);
97
- return (react_1.default.createElement(react_1.default.Fragment, null, mode === 'genomic' ? (react_1.default.createElement(GenomicSequence_1.default, { feature: feature, model: model, sequence: seq })) : mode === 'genomic_sequence_updownstream' ? (react_1.default.createElement(GenomicSequence_1.default, { model: model, feature: feature, sequence: seq, upstream: upstream, downstream: downstream })) : mode === 'cds' ? (react_1.default.createElement(CDSSequence_1.default, { model: model, cds: cds, sequence: seq })) : mode === 'cdna' ? (react_1.default.createElement(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, utr: utr, sequence: seq })) : mode === 'protein' ? (react_1.default.createElement(ProteinSequence_1.default, { model: model, cds: cds, codonTable: codonTable, sequence: seq })) : mode === 'gene' ? (react_1.default.createElement(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, utr: utr, sequence: seq, includeIntrons: true })) : mode === 'gene_collapsed_intron' ? (react_1.default.createElement(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, sequence: seq, utr: utr, includeIntrons: true, collapseIntron: true })) : mode === 'gene_updownstream' ? (react_1.default.createElement(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, sequence: seq, utr: utr, upstream: upstream, downstream: downstream, includeIntrons: true })) : mode === 'gene_updownstream_collapsed_intron' ? (react_1.default.createElement(CDNASequence_1.default, { model: model, exons: exons, feature: feature, cds: cds, sequence: seq, utr: utr, upstream: upstream, downstream: downstream, includeIntrons: true, collapseIntron: true })) : (react_1.default.createElement("div", null, "Unknown type"))));
98
- }
99
34
  exports.default = SequencePanel;
@@ -1,4 +1,3 @@
1
- import React from 'react';
2
1
  export default function HelpDialog({ handleClose, }: {
3
2
  handleClose: () => void;
4
- }): React.JSX.Element;
3
+ }): import("react/jsx-runtime").JSX.Element;
@@ -4,32 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.default = HelpDialog;
7
- const react_1 = __importDefault(require("react"));
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
8
  const ui_1 = require("@jbrowse/core/ui");
9
9
  const Settings_1 = __importDefault(require("@mui/icons-material/Settings"));
10
10
  const material_1 = require("@mui/material");
11
11
  function HelpDialog({ handleClose, }) {
12
- return (react_1.default.createElement(ui_1.Dialog, { maxWidth: "xl", open: true, onClose: () => {
12
+ return ((0, jsx_runtime_1.jsxs)(ui_1.Dialog, { maxWidth: "xl", open: true, onClose: () => {
13
13
  handleClose();
14
- }, title: "Feature sequence panel help" },
15
- react_1.default.createElement(material_1.DialogContent, null,
16
- react_1.default.createElement(material_1.Typography, { paragraph: true }, "The \"Feature sequence\" panel shows the underlying genomic sequence for a given feature, fetched from the reference genome."),
17
- react_1.default.createElement(material_1.Typography, null, "For gene features, this panel does special calculations to e.g. stitch together the coding sequence, the options are:"),
18
- react_1.default.createElement("ul", null,
19
- react_1.default.createElement("li", null, "CDS - shows the stitched together CDS sequences"),
20
- react_1.default.createElement("li", null, "Protein - the translated coding sequence, with the \"standard\" genetic code"),
21
- react_1.default.createElement("li", null, "cDNA - shows the 'copy DNA' of transcript, formed from exon sequences"),
22
- react_1.default.createElement("li", null, "Genomic w/ introns +/- Nbp up+down stream - the sequence underlying the entire gene including including introns, with UTR and CDS highlighted")),
23
- react_1.default.createElement(material_1.Typography, { paragraph: true }, "For other feature types, the options are:"),
24
- react_1.default.createElement("ul", null,
25
- react_1.default.createElement("li", null, "Genomic +/- Nbp up+down stream - the reference genome sequence underlying the feature, with the up and downstream sequence")),
26
- react_1.default.createElement(material_1.Typography, null,
27
- "Note 1: you can use the \"gear icon\" ",
28
- react_1.default.createElement(Settings_1.default, null),
29
- " to edit the number of bp displayed up/downstream and in the intron region"),
30
- react_1.default.createElement(material_1.Typography, null, "Note 2: The 'Copy HTML' function retains the colors from the sequence panel but cannot be pasted into some programs like notepad that only expect plain text.")),
31
- react_1.default.createElement(material_1.DialogActions, null,
32
- react_1.default.createElement(material_1.Button, { onClick: () => {
33
- handleClose();
34
- }, autoFocus: true, variant: "contained" }, "Close"))));
14
+ }, title: "Feature sequence panel help", children: [(0, jsx_runtime_1.jsxs)(material_1.DialogContent, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { paragraph: true, children: "The \"Feature sequence\" panel shows the underlying genomic sequence for a given feature, fetched from the reference genome." }), (0, jsx_runtime_1.jsx)(material_1.Typography, { children: "For gene features, this panel does special calculations to e.g. stitch together the coding sequence, the options are:" }), (0, jsx_runtime_1.jsxs)("ul", { children: [(0, jsx_runtime_1.jsx)("li", { children: "CDS - shows the stitched together CDS sequences" }), (0, jsx_runtime_1.jsx)("li", { children: "Protein - the translated coding sequence, with the \"standard\" genetic code" }), (0, jsx_runtime_1.jsx)("li", { children: "cDNA - shows the 'copy DNA' of transcript, formed from exon sequences" }), (0, jsx_runtime_1.jsx)("li", { children: "Genomic w/ introns +/- Nbp up+down stream - the sequence underlying the entire gene including including introns, with UTR and CDS highlighted" })] }), (0, jsx_runtime_1.jsx)(material_1.Typography, { paragraph: true, children: "For other feature types, the options are:" }), (0, jsx_runtime_1.jsx)("ul", { children: (0, jsx_runtime_1.jsx)("li", { children: "Genomic +/- Nbp up+down stream - the reference genome sequence underlying the feature, with the up and downstream sequence" }) }), (0, jsx_runtime_1.jsxs)(material_1.Typography, { children: ["Note 1: you can use the \"gear icon\" ", (0, jsx_runtime_1.jsx)(Settings_1.default, {}), " to edit the number of bp displayed up/downstream and in the intron region"] }), (0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Note 2: The 'Copy HTML' function retains the colors from the sequence panel but cannot be pasted into some programs like notepad that only expect plain text." })] }), (0, jsx_runtime_1.jsx)(material_1.DialogActions, { children: (0, jsx_runtime_1.jsx)(material_1.Button, { onClick: () => {
15
+ handleClose();
16
+ }, autoFocus: true, variant: "contained", children: "Close" }) })] }));
35
17
  }
@@ -1,9 +1,8 @@
1
- import React from 'react';
2
1
  import type { SimpleFeatureSerialized } from '../../../util';
3
2
  import type { BaseFeatureWidgetModel } from '../../stateModelFactory';
4
3
  declare const SequenceDialog: ({ handleClose, model, feature, }: {
5
4
  handleClose: () => void;
6
5
  feature: SimpleFeatureSerialized;
7
6
  model: BaseFeatureWidgetModel;
8
- }) => React.JSX.Element;
7
+ }) => import("react/jsx-runtime").JSX.Element;
9
8
  export default SequenceDialog;
@@ -1,32 +1,10 @@
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
- };
25
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
4
  };
28
5
  Object.defineProperty(exports, "__esModule", { value: true });
29
- const react_1 = __importStar(require("react"));
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ const react_1 = require("react");
30
8
  const ui_1 = require("@jbrowse/core/ui");
31
9
  const material_1 = require("@mui/material");
32
10
  const mobx_react_1 = require("mobx-react");
@@ -51,24 +29,12 @@ const SequenceDialog = (0, mobx_react_1.observer)(function ({ handleClose, model
51
29
  const seqPanelRef = (0, react_1.useRef)(null);
52
30
  const [force, setForce] = (0, react_1.useState)(false);
53
31
  const { sequence, error } = (0, hooks_1.useFeatureSequence)(model, feature, upDownBp, force);
54
- return (react_1.default.createElement(ui_1.Dialog, { maxWidth: "xl", open: true, onClose: () => {
32
+ return ((0, jsx_runtime_1.jsxs)(ui_1.Dialog, { maxWidth: "xl", open: true, onClose: () => {
55
33
  handleClose();
56
- }, title: "Sequence view" },
57
- react_1.default.createElement(material_1.DialogContent, { className: classes.dialogContent },
58
- react_1.default.createElement("div", null,
59
- react_1.default.createElement(SequenceTypeSelector_1.default, { model: sequenceFeatureDetails }),
60
- react_1.default.createElement(SequenceFeatureMenu_1.default, { ref: seqPanelRef, model: sequenceFeatureDetails })),
61
- react_1.default.createElement("div", null,
62
- feature.type === 'gene' ? (react_1.default.createElement(material_1.Typography, null, "Note: inspect subfeature sequences for protein/CDS computations")) : null,
63
- error ? (react_1.default.createElement(ui_1.ErrorMessage, { error: error })) : !sequence ? (react_1.default.createElement(ui_1.LoadingEllipses, null)) : 'error' in sequence ? (react_1.default.createElement(react_1.default.Fragment, null,
64
- react_1.default.createElement(material_1.Typography, { color: "error" }, sequence.error),
65
- react_1.default.createElement(material_1.Button, { variant: "contained", color: "inherit", onClick: () => {
66
- setForce(true);
67
- } }, "Force load"))) : (react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement(ui_1.LoadingEllipses, null) },
68
- react_1.default.createElement(SequencePanel_1.default, { ref: seqPanelRef, feature: feature, sequence: sequence, model: sequenceFeatureDetails }))))),
69
- react_1.default.createElement(material_1.DialogActions, null,
70
- react_1.default.createElement(material_1.Button, { onClick: () => {
71
- handleClose();
72
- }, variant: "contained" }, "Close"))));
34
+ }, title: "Sequence view", children: [(0, jsx_runtime_1.jsxs)(material_1.DialogContent, { className: classes.dialogContent, children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(SequenceTypeSelector_1.default, { model: sequenceFeatureDetails }), (0, jsx_runtime_1.jsx)(SequenceFeatureMenu_1.default, { ref: seqPanelRef, model: sequenceFeatureDetails })] }), (0, jsx_runtime_1.jsxs)("div", { children: [feature.type === 'gene' ? ((0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Note: inspect subfeature sequences for protein/CDS computations" })) : null, error ? ((0, jsx_runtime_1.jsx)(ui_1.ErrorMessage, { error: error })) : !sequence ? ((0, jsx_runtime_1.jsx)(ui_1.LoadingEllipses, {})) : 'error' in sequence ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { color: "error", children: sequence.error }), (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", color: "inherit", onClick: () => {
35
+ setForce(true);
36
+ }, children: "Force load" })] })) : ((0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: (0, jsx_runtime_1.jsx)(ui_1.LoadingEllipses, {}), children: (0, jsx_runtime_1.jsx)(SequencePanel_1.default, { ref: seqPanelRef, feature: feature, sequence: sequence, model: sequenceFeatureDetails }) }))] })] }), (0, jsx_runtime_1.jsx)(material_1.DialogActions, { children: (0, jsx_runtime_1.jsx)(material_1.Button, { onClick: () => {
37
+ handleClose();
38
+ }, variant: "contained", children: "Close" }) })] }));
73
39
  });
74
40
  exports.default = SequenceDialog;
@@ -1,9 +1,8 @@
1
- import React from 'react';
2
1
  import type { MenuItem } from '../../../ui';
3
2
  import type { SequenceFeatureDetailsModel } from '../model';
4
3
  interface Props {
5
4
  model: SequenceFeatureDetailsModel;
6
5
  extraItems?: MenuItem[];
7
6
  }
8
- declare const SequenceFeatureMenu: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
7
+ declare const SequenceFeatureMenu: import("react").ForwardRefExoticComponent<Props & import("react").RefAttributes<HTMLDivElement>>;
9
8
  export default SequenceFeatureMenu;