@jbrowse/plugin-linear-comparative-view 2.15.3 → 2.16.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 (101) hide show
  1. package/dist/LaunchLinearSyntenyView.js +41 -11
  2. package/dist/LinearComparativeDisplay/stateModelFactory.d.ts +14 -9
  3. package/dist/LinearComparativeDisplay/stateModelFactory.js +8 -9
  4. package/dist/LinearComparativeView/components/Header.d.ts +2 -3
  5. package/dist/LinearComparativeView/components/Header.js +72 -62
  6. package/dist/LinearComparativeView/components/HeaderSearchBoxes.d.ts +6 -0
  7. package/dist/LinearComparativeView/components/HeaderSearchBoxes.js +34 -0
  8. package/dist/LinearComparativeView/components/LinearComparativeRenderArea.d.ts +6 -0
  9. package/dist/LinearComparativeView/components/LinearComparativeRenderArea.js +61 -0
  10. package/dist/LinearComparativeView/components/LinearComparativeView.d.ts +2 -4
  11. package/dist/LinearComparativeView/components/LinearComparativeView.js +3 -67
  12. package/dist/LinearComparativeView/components/Rubberband.js +1 -1
  13. package/dist/LinearComparativeView/index.js +3 -0
  14. package/dist/LinearComparativeView/model.d.ts +265 -12
  15. package/dist/LinearComparativeView/model.js +45 -75
  16. package/dist/LinearSyntenyDisplay/afterAttach.js +5 -3
  17. package/dist/LinearSyntenyDisplay/components/LinearSyntenyRendering.js +32 -24
  18. package/dist/LinearSyntenyDisplay/components/SyntenyContextMenu.js +12 -6
  19. package/dist/LinearSyntenyDisplay/components/util.d.ts +2 -1
  20. package/dist/LinearSyntenyDisplay/components/util.js +5 -5
  21. package/dist/LinearSyntenyDisplay/drawSynteny.d.ts +1 -1
  22. package/dist/LinearSyntenyDisplay/drawSynteny.js +28 -22
  23. package/dist/LinearSyntenyDisplay/index.js +1 -1
  24. package/dist/LinearSyntenyDisplay/model.d.ts +12 -11
  25. package/dist/LinearSyntenyDisplay/model.js +7 -0
  26. package/dist/LinearSyntenyView/components/ImportForm/{ImportCustomTrack.d.ts → AddCustomTrack.d.ts} +2 -3
  27. package/dist/LinearSyntenyView/components/ImportForm/{ImportCustomTrack.js → AddCustomTrack.js} +3 -3
  28. package/dist/LinearSyntenyView/components/ImportForm/LinearSyntenyImportForm.js +195 -0
  29. package/dist/LinearSyntenyView/components/ImportForm/Spacer.d.ts +2 -0
  30. package/dist/LinearSyntenyView/components/ImportForm/Spacer.js +10 -0
  31. package/dist/LinearSyntenyView/components/ImportForm/TrackSelector.d.ts +10 -0
  32. package/dist/LinearSyntenyView/components/ImportForm/{ImportSyntenyTrackSelector.js → TrackSelector.js} +15 -20
  33. package/dist/LinearSyntenyView/components/ImportForm/TrackSelectorUtil.d.ts +14 -0
  34. package/dist/LinearSyntenyView/components/ImportForm/TrackSelectorUtil.js +52 -0
  35. package/dist/LinearSyntenyView/components/LinearSyntenyView.js +3 -3
  36. package/dist/LinearSyntenyView/index.js +1 -1
  37. package/dist/LinearSyntenyView/model.d.ts +267 -9
  38. package/dist/LinearSyntenyView/model.js +2 -2
  39. package/dist/LinearSyntenyView/svgcomponents/SVGLinearGenomeView.d.ts +12 -0
  40. package/dist/LinearSyntenyView/svgcomponents/SVGLinearGenomeView.js +19 -0
  41. package/dist/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.d.ts +1 -3
  42. package/dist/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.js +36 -27
  43. package/dist/LinearSyntenyViewHelper/index.d.ts +2 -0
  44. package/dist/LinearSyntenyViewHelper/index.js +25 -0
  45. package/dist/LinearSyntenyViewHelper/stateModelFactory.d.ts +30 -0
  46. package/dist/LinearSyntenyViewHelper/stateModelFactory.js +105 -0
  47. package/dist/index.js +2 -0
  48. package/esm/LaunchLinearSyntenyView.js +41 -11
  49. package/esm/LinearComparativeDisplay/stateModelFactory.d.ts +14 -9
  50. package/esm/LinearComparativeDisplay/stateModelFactory.js +9 -10
  51. package/esm/LinearComparativeView/components/Header.d.ts +2 -3
  52. package/esm/LinearComparativeView/components/Header.js +73 -63
  53. package/esm/LinearComparativeView/components/HeaderSearchBoxes.d.ts +6 -0
  54. package/esm/LinearComparativeView/components/HeaderSearchBoxes.js +29 -0
  55. package/esm/LinearComparativeView/components/LinearComparativeRenderArea.d.ts +6 -0
  56. package/esm/LinearComparativeView/components/LinearComparativeRenderArea.js +56 -0
  57. package/esm/LinearComparativeView/components/LinearComparativeView.d.ts +2 -4
  58. package/esm/LinearComparativeView/components/LinearComparativeView.js +3 -67
  59. package/esm/LinearComparativeView/components/Rubberband.js +1 -1
  60. package/esm/LinearComparativeView/index.js +3 -0
  61. package/esm/LinearComparativeView/model.d.ts +265 -12
  62. package/esm/LinearComparativeView/model.js +47 -77
  63. package/esm/LinearSyntenyDisplay/afterAttach.js +6 -4
  64. package/esm/LinearSyntenyDisplay/components/LinearSyntenyRendering.js +33 -25
  65. package/esm/LinearSyntenyDisplay/components/SyntenyContextMenu.js +12 -6
  66. package/esm/LinearSyntenyDisplay/components/util.d.ts +2 -1
  67. package/esm/LinearSyntenyDisplay/components/util.js +5 -5
  68. package/esm/LinearSyntenyDisplay/drawSynteny.d.ts +1 -1
  69. package/esm/LinearSyntenyDisplay/drawSynteny.js +28 -22
  70. package/esm/LinearSyntenyDisplay/index.js +1 -1
  71. package/esm/LinearSyntenyDisplay/model.d.ts +12 -11
  72. package/esm/LinearSyntenyDisplay/model.js +8 -1
  73. package/esm/LinearSyntenyView/components/ImportForm/{ImportCustomTrack.d.ts → AddCustomTrack.d.ts} +2 -3
  74. package/esm/LinearSyntenyView/components/ImportForm/{ImportCustomTrack.js → AddCustomTrack.js} +3 -3
  75. package/esm/LinearSyntenyView/components/ImportForm/LinearSyntenyImportForm.js +167 -0
  76. package/esm/LinearSyntenyView/components/ImportForm/Spacer.d.ts +2 -0
  77. package/esm/LinearSyntenyView/components/ImportForm/Spacer.js +4 -0
  78. package/esm/LinearSyntenyView/components/ImportForm/TrackSelector.d.ts +10 -0
  79. package/esm/LinearSyntenyView/components/ImportForm/{ImportSyntenyTrackSelector.js → TrackSelector.js} +15 -20
  80. package/esm/LinearSyntenyView/components/ImportForm/TrackSelectorUtil.d.ts +14 -0
  81. package/esm/LinearSyntenyView/components/ImportForm/TrackSelectorUtil.js +23 -0
  82. package/esm/LinearSyntenyView/components/LinearSyntenyView.js +3 -3
  83. package/esm/LinearSyntenyView/index.js +1 -1
  84. package/esm/LinearSyntenyView/model.d.ts +267 -9
  85. package/esm/LinearSyntenyView/model.js +2 -2
  86. package/esm/LinearSyntenyView/svgcomponents/SVGLinearGenomeView.d.ts +12 -0
  87. package/esm/LinearSyntenyView/svgcomponents/SVGLinearGenomeView.js +13 -0
  88. package/esm/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.d.ts +1 -3
  89. package/esm/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.js +38 -29
  90. package/esm/LinearSyntenyViewHelper/index.d.ts +2 -0
  91. package/esm/LinearSyntenyViewHelper/index.js +19 -0
  92. package/esm/LinearSyntenyViewHelper/stateModelFactory.d.ts +30 -0
  93. package/esm/LinearSyntenyViewHelper/stateModelFactory.js +102 -0
  94. package/esm/index.js +2 -0
  95. package/package.json +2 -2
  96. package/dist/LinearSyntenyView/components/ImportForm/ImportSyntenyTrackSelector.d.ts +0 -9
  97. package/dist/LinearSyntenyView/components/ImportForm/index.js +0 -138
  98. package/esm/LinearSyntenyView/components/ImportForm/ImportSyntenyTrackSelector.d.ts +0 -9
  99. package/esm/LinearSyntenyView/components/ImportForm/index.js +0 -110
  100. /package/dist/LinearSyntenyView/components/ImportForm/{index.d.ts → LinearSyntenyImportForm.d.ts} +0 -0
  101. /package/esm/LinearSyntenyView/components/ImportForm/{index.d.ts → LinearSyntenyImportForm.d.ts} +0 -0
@@ -0,0 +1,195 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const react_1 = __importStar(require("react"));
30
+ const material_1 = require("@mui/material");
31
+ const mui_1 = require("tss-react/mui");
32
+ const mobx_react_1 = require("mobx-react");
33
+ const util_1 = require("@jbrowse/core/util");
34
+ const ui_1 = require("@jbrowse/core/ui");
35
+ // icons
36
+ const Close_1 = __importDefault(require("@mui/icons-material/Close"));
37
+ const ArrowForwardIos_1 = __importDefault(require("@mui/icons-material/ArrowForwardIos"));
38
+ const TrackSelectorUtil_1 = __importDefault(require("./TrackSelectorUtil"));
39
+ const Spacer_1 = __importDefault(require("./Spacer"));
40
+ const useStyles = (0, mui_1.makeStyles)()(theme => ({
41
+ importFormContainer: {
42
+ padding: theme.spacing(4),
43
+ },
44
+ button: {
45
+ margin: theme.spacing(2),
46
+ },
47
+ rel: {
48
+ position: 'relative',
49
+ },
50
+ synbutton: {
51
+ position: 'absolute',
52
+ top: 30,
53
+ },
54
+ flex: {
55
+ display: 'flex',
56
+ },
57
+ mb: {
58
+ marginBottom: 10,
59
+ },
60
+ bg: {
61
+ background: theme.palette.divider,
62
+ },
63
+ fixedWidth: {
64
+ width: 700,
65
+ },
66
+ }));
67
+ const LinearSyntenyViewImportForm = (0, mobx_react_1.observer)(function ({ model, }) {
68
+ const { classes, cx } = useStyles();
69
+ const session = (0, util_1.getSession)(model);
70
+ const { assemblyNames } = session;
71
+ const defaultAssemblyName = assemblyNames[0] || '';
72
+ const [selectedRow, setSelectedRow] = (0, react_1.useState)(0);
73
+ const [selectedAssemblyNames, setSelectedAssemblyNames] = (0, react_1.useState)([
74
+ defaultAssemblyName,
75
+ defaultAssemblyName,
76
+ ]);
77
+ const [error, setError] = (0, react_1.useState)();
78
+ const [userOpenedSyntenyTracksToShow, setUserOpenedSyntenyTracksToShow] = (0, react_1.useState)([]);
79
+ const [preConfiguredSyntenyTracksToShow, setPreConfiguredSyntenyTracksToShow,] = (0, react_1.useState)([]);
80
+ return (react_1.default.createElement(material_1.Container, { className: classes.importFormContainer },
81
+ error ? react_1.default.createElement(ui_1.ErrorMessage, { error: error }) : null,
82
+ react_1.default.createElement("div", { className: classes.flex },
83
+ react_1.default.createElement(Spacer_1.default, null),
84
+ react_1.default.createElement("div", null,
85
+ react_1.default.createElement("div", { className: classes.mb }, "Select assemblies for linear synteny view"),
86
+ selectedAssemblyNames.map((assemblyName, idx) => (react_1.default.createElement("div", { key: `${assemblyName}-${idx}`, className: classes.rel },
87
+ react_1.default.createElement("span", null,
88
+ "Row ",
89
+ idx + 1,
90
+ ": "),
91
+ react_1.default.createElement(material_1.IconButton, { disabled: selectedAssemblyNames.length <= 2, onClick: () => {
92
+ setSelectedAssemblyNames(selectedAssemblyNames
93
+ .map((asm, idx2) => (idx2 === idx ? undefined : asm))
94
+ .filter(util_1.notEmpty));
95
+ setPreConfiguredSyntenyTracksToShow(preConfiguredSyntenyTracksToShow
96
+ .map((asm, idx2) => (idx2 === idx ? undefined : asm))
97
+ .filter(util_1.notEmpty));
98
+ setUserOpenedSyntenyTracksToShow(userOpenedSyntenyTracksToShow
99
+ .map((asm, idx2) => (idx2 === idx ? undefined : asm))
100
+ .filter(util_1.notEmpty));
101
+ if (selectedRow >= selectedAssemblyNames.length - 2) {
102
+ setSelectedRow(0);
103
+ }
104
+ } },
105
+ react_1.default.createElement(Close_1.default, null)),
106
+ react_1.default.createElement(ui_1.AssemblySelector, { helperText: "", selected: assemblyName, onChange: newAssembly => {
107
+ setSelectedAssemblyNames(selectedAssemblyNames.map((asm, idx2) => idx2 === idx ? newAssembly : asm));
108
+ }, session: session }),
109
+ idx !== selectedAssemblyNames.length - 1 ? (react_1.default.createElement(material_1.IconButton, { className: cx(classes.synbutton, idx === selectedRow ? classes.bg : undefined), onClick: () => {
110
+ setSelectedRow(idx);
111
+ } },
112
+ react_1.default.createElement(ArrowForwardIos_1.default, null))) : null))),
113
+ react_1.default.createElement("div", null,
114
+ react_1.default.createElement(material_1.Button, { className: classes.button, variant: "contained", color: "secondary", onClick: () => {
115
+ setSelectedAssemblyNames([
116
+ ...selectedAssemblyNames,
117
+ defaultAssemblyName,
118
+ ]);
119
+ } }, "Add row"),
120
+ react_1.default.createElement(material_1.Button, { className: classes.button, onClick: () => {
121
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
122
+ ;
123
+ (async () => {
124
+ try {
125
+ setError(undefined);
126
+ await doSubmit({
127
+ userOpenedSyntenyTracksToShow,
128
+ preConfiguredSyntenyTracksToShow,
129
+ selectedAssemblyNames,
130
+ model,
131
+ });
132
+ }
133
+ catch (e) {
134
+ console.error(e);
135
+ setError(e);
136
+ }
137
+ })();
138
+ }, variant: "contained", color: "primary" }, "Launch"))),
139
+ react_1.default.createElement(Spacer_1.default, null),
140
+ react_1.default.createElement("div", { className: classes.fixedWidth },
141
+ react_1.default.createElement("div", null,
142
+ "Synteny dataset to display between row ",
143
+ selectedRow + 1,
144
+ " and",
145
+ ' ',
146
+ selectedRow + 2),
147
+ react_1.default.createElement(TrackSelectorUtil_1.default, { model: model, preConfiguredSyntenyTrack: preConfiguredSyntenyTracksToShow[selectedRow], assembly1: selectedAssemblyNames[selectedRow], assembly2: selectedAssemblyNames[selectedRow + 1], setPreConfiguredSyntenyTrack: arg => {
148
+ const clone = [...preConfiguredSyntenyTracksToShow];
149
+ clone[selectedRow] = arg;
150
+ setPreConfiguredSyntenyTracksToShow(clone);
151
+ }, setUserOpenedSyntenyTrack: arg => {
152
+ const clone = [...userOpenedSyntenyTracksToShow];
153
+ clone[selectedRow] = arg;
154
+ setUserOpenedSyntenyTracksToShow(clone);
155
+ } }))),
156
+ react_1.default.createElement(Spacer_1.default, null)));
157
+ });
158
+ async function doSubmit({ selectedAssemblyNames, model, preConfiguredSyntenyTracksToShow, userOpenedSyntenyTracksToShow, }) {
159
+ const session = (0, util_1.getSession)(model);
160
+ const { assemblyManager } = session;
161
+ model.setViews(await Promise.all(selectedAssemblyNames.map(async (assemblyName) => {
162
+ const asm = await assemblyManager.waitForAssembly(assemblyName);
163
+ if (!asm) {
164
+ throw new Error(`Assembly "${assemblyName}" failed to load`);
165
+ }
166
+ return {
167
+ type: 'LinearGenomeView',
168
+ bpPerPx: 1,
169
+ offsetPx: 0,
170
+ hideHeader: true,
171
+ displayedRegions: asm.regions,
172
+ };
173
+ })));
174
+ for (const view of model.views) {
175
+ view.setWidth(model.width);
176
+ view.showAllRegions();
177
+ }
178
+ if (!(0, util_1.isSessionWithAddTracks)(session)) {
179
+ session.notify("Can't add tracks", 'warning');
180
+ }
181
+ else {
182
+ userOpenedSyntenyTracksToShow.map((f, idx) => {
183
+ if (f) {
184
+ session.addTrackConf(f);
185
+ model.toggleTrack(f.trackId, idx);
186
+ }
187
+ });
188
+ }
189
+ preConfiguredSyntenyTracksToShow.map((f, idx) => {
190
+ if (f) {
191
+ model.showTrack(f, idx);
192
+ }
193
+ });
194
+ }
195
+ exports.default = LinearSyntenyViewImportForm;
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export default function Spacer(): React.JSX.Element;
@@ -0,0 +1,10 @@
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
+ exports.default = Spacer;
7
+ const react_1 = __importDefault(require("react"));
8
+ function Spacer() {
9
+ return react_1.default.createElement("div", { style: { flexGrow: 1 } });
10
+ }
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { LinearSyntenyViewModel } from '../../model';
3
+ declare const ImportSyntenyTrackSelector: ({ model, assembly1, assembly2, preConfiguredSyntenyTrack, setPreConfiguredSyntenyTrack, }: {
4
+ model: LinearSyntenyViewModel;
5
+ assembly1: string;
6
+ assembly2: string;
7
+ preConfiguredSyntenyTrack: string | undefined;
8
+ setPreConfiguredSyntenyTrack: (arg: string) => void;
9
+ }) => React.JSX.Element;
10
+ export default ImportSyntenyTrackSelector;
@@ -30,35 +30,30 @@ const tracks_1 = require("@jbrowse/core/util/tracks");
30
30
  const ui_1 = require("@jbrowse/core/ui");
31
31
  const configuration_1 = require("@jbrowse/core/configuration");
32
32
  const mobx_react_1 = require("mobx-react");
33
- function f(track, assembly1, assembly2) {
34
- const assemblyNames = (0, configuration_1.readConfObject)(track, 'assemblyNames');
35
- return (assemblyNames.includes(assembly1) &&
36
- assemblyNames.includes(assembly2) &&
37
- track.type.includes('Synteny'));
38
- }
39
- const Selector = (0, mobx_react_1.observer)(({ model, assembly1, assembly2, setShowTrackId, }) => {
33
+ const ImportSyntenyTrackSelector = (0, mobx_react_1.observer)(function ({ model, assembly1, assembly2, preConfiguredSyntenyTrack, setPreConfiguredSyntenyTrack, }) {
40
34
  var _a;
41
35
  const session = (0, util_1.getSession)(model);
42
36
  const { tracks = [], sessionTracks = [] } = session;
43
37
  const allTracks = [...tracks, ...sessionTracks];
44
- const filteredTracks = allTracks.filter(t => f(t, assembly2, assembly1));
38
+ const filteredTracks = allTracks.filter(track => {
39
+ const assemblyNames = (0, configuration_1.readConfObject)(track, 'assemblyNames');
40
+ return (assemblyNames.includes(assembly1) &&
41
+ assemblyNames.includes(assembly2) &&
42
+ track.type.includes('Synteny'));
43
+ });
45
44
  const resetTrack = ((_a = filteredTracks[0]) === null || _a === void 0 ? void 0 : _a.trackId) || '';
46
45
  const [value, setValue] = (0, react_1.useState)(resetTrack);
47
46
  (0, react_1.useEffect)(() => {
48
- // if assembly1/assembly2 changes, then we will want to use this effect to
49
- // change the state of the useState because it otherwise gets locked to a
50
- // stale value
51
- setValue(resetTrack);
52
- }, [resetTrack]);
53
- (0, react_1.useEffect)(() => {
54
- // sets track data in a useEffect because the initial load is needed as well
55
- // as onChange's to the select box
56
- setShowTrackId(value);
57
- }, [value, setShowTrackId]);
47
+ // sets track data in a useEffect because the initial load is needed as
48
+ // well as onChange's to the select box
49
+ if (value !== preConfiguredSyntenyTrack) {
50
+ setPreConfiguredSyntenyTrack(value);
51
+ }
52
+ }, [value, preConfiguredSyntenyTrack, setPreConfiguredSyntenyTrack]);
58
53
  return (react_1.default.createElement(material_1.Paper, { style: { padding: 12 } },
59
- react_1.default.createElement(material_1.Typography, { paragraph: true }, "Select a track from the select box below, the track will be shown when you hit \"Launch\"."),
54
+ react_1.default.createElement(material_1.Typography, null, "Select a track from the select box below, the track will be shown when you hit \"Launch\"."),
60
55
  filteredTracks.length ? (react_1.default.createElement(material_1.Select, { value: value, onChange: event => {
61
56
  setValue(event.target.value);
62
57
  } }, filteredTracks.map(track => (react_1.default.createElement(material_1.MenuItem, { key: track.trackId, value: track.trackId }, (0, tracks_1.getTrackName)(track, session)))))) : (react_1.default.createElement(ui_1.ErrorMessage, { error: `No synteny tracks found for ${assembly1},${assembly2}` }))));
63
58
  });
64
- exports.default = Selector;
59
+ exports.default = ImportSyntenyTrackSelector;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { SnapshotIn } from 'mobx-state-tree';
3
+ import { AnyConfigurationModel } from '@jbrowse/core/configuration';
4
+ import { LinearSyntenyViewModel } from '../../model';
5
+ type Conf = SnapshotIn<AnyConfigurationModel>;
6
+ export default function TrackSelector({ model, assembly1, assembly2, preConfiguredSyntenyTrack, setPreConfiguredSyntenyTrack, setUserOpenedSyntenyTrack, }: {
7
+ model: LinearSyntenyViewModel;
8
+ assembly1: string;
9
+ assembly2: string;
10
+ preConfiguredSyntenyTrack: string | undefined;
11
+ setUserOpenedSyntenyTrack: (arg: Conf) => void;
12
+ setPreConfiguredSyntenyTrack: (arg?: string) => void;
13
+ }): React.JSX.Element;
14
+ export {};
@@ -0,0 +1,52 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.default = TrackSelector;
30
+ const react_1 = __importStar(require("react"));
31
+ const material_1 = require("@mui/material");
32
+ const AddCustomTrack_1 = __importDefault(require("./AddCustomTrack"));
33
+ const TrackSelector_1 = __importDefault(require("./TrackSelector"));
34
+ function TrackSelector({ model, assembly1, assembly2, preConfiguredSyntenyTrack, setPreConfiguredSyntenyTrack, setUserOpenedSyntenyTrack, }) {
35
+ const [choice, setChoice] = (0, react_1.useState)('tracklist');
36
+ (0, react_1.useEffect)(() => {
37
+ if (choice === 'none') {
38
+ setPreConfiguredSyntenyTrack(undefined);
39
+ setUserOpenedSyntenyTrack(undefined);
40
+ }
41
+ }, [choice, setPreConfiguredSyntenyTrack, setUserOpenedSyntenyTrack]);
42
+ return (react_1.default.createElement("div", null,
43
+ react_1.default.createElement(material_1.FormControl, null,
44
+ react_1.default.createElement(material_1.RadioGroup, { row: true, value: choice, onChange: event => {
45
+ setChoice(event.target.value);
46
+ }, "aria-labelledby": "group-label" },
47
+ react_1.default.createElement(material_1.FormControlLabel, { value: "none", control: react_1.default.createElement(material_1.Radio, null), label: "None" }),
48
+ react_1.default.createElement(material_1.FormControlLabel, { value: "tracklist", control: react_1.default.createElement(material_1.Radio, null), label: "Existing track" }),
49
+ react_1.default.createElement(material_1.FormControlLabel, { value: "custom", control: react_1.default.createElement(material_1.Radio, null), label: "New track" }))),
50
+ choice === 'custom' ? (react_1.default.createElement(AddCustomTrack_1.default, { setUserOpenedSyntenyTrack: setUserOpenedSyntenyTrack, assembly2: assembly2, assembly1: assembly1 })) : null,
51
+ choice === 'tracklist' ? (react_1.default.createElement(TrackSelector_1.default, { key: `${assembly1}-${assembly2}`, model: model, assembly1: assembly1, assembly2: assembly2, preConfiguredSyntenyTrack: preConfiguredSyntenyTrack, setPreConfiguredSyntenyTrack: setPreConfiguredSyntenyTrack })) : null));
52
+ }
@@ -30,8 +30,8 @@ const react_1 = __importStar(require("react"));
30
30
  const mobx_react_1 = require("mobx-react");
31
31
  // locals
32
32
  const LinearComparativeView_1 = __importDefault(require("../../LinearComparativeView/components/LinearComparativeView"));
33
- const ImportForm = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./ImportForm'))));
34
- const LinearSyntenyView = (0, mobx_react_1.observer)(({ model }) => {
35
- return !model.initialized ? (react_1.default.createElement(ImportForm, { model: model })) : (react_1.default.createElement(LinearComparativeView_1.default, { model: model }));
33
+ const LinearSyntenyImportForm = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./ImportForm/LinearSyntenyImportForm'))));
34
+ const LinearSyntenyView = (0, mobx_react_1.observer)(function ({ model }) {
35
+ return !model.initialized ? (react_1.default.createElement(LinearSyntenyImportForm, { model: model })) : (react_1.default.createElement(LinearComparativeView_1.default, { model: model }));
36
36
  });
37
37
  exports.default = LinearSyntenyView;
@@ -28,8 +28,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.default = LinearSyntenyViewF;
30
30
  const react_1 = require("react");
31
- const model_1 = __importDefault(require("./model"));
32
31
  const ViewType_1 = __importDefault(require("@jbrowse/core/pluggableElementTypes/ViewType"));
32
+ const model_1 = __importDefault(require("./model"));
33
33
  function LinearSyntenyViewF(pluginManager) {
34
34
  pluginManager.addViewType(() => {
35
35
  return new ViewType_1.default({