@jbrowse/plugin-linear-comparative-view 3.0.5 → 3.2.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 (27) hide show
  1. package/dist/LinearComparativeView/components/Rubberband.js +5 -5
  2. package/dist/LinearComparativeView/components/VerticalGuide.js +3 -6
  3. package/dist/LinearComparativeView/model.d.ts +60 -4
  4. package/dist/LinearComparativeView/model.js +7 -2
  5. package/dist/LinearReadVsRef/LinearReadVsRef.js +2 -2
  6. package/dist/LinearSyntenyView/components/ImportForm/LeftPanel.d.ts +11 -0
  7. package/dist/LinearSyntenyView/components/ImportForm/LeftPanel.js +58 -0
  8. package/dist/LinearSyntenyView/components/ImportForm/LinearSyntenyImportForm.js +18 -52
  9. package/dist/LinearSyntenyView/components/LinearSyntenyView.d.ts +2 -3
  10. package/dist/LinearSyntenyView/components/LinearSyntenyView.js +1 -1
  11. package/dist/LinearSyntenyView/model.d.ts +61 -5
  12. package/dist/LinearSyntenyView/model.js +3 -3
  13. package/dist/LinearSyntenyViewHelper/stateModelFactory.js +2 -2
  14. package/esm/LinearComparativeView/components/Rubberband.js +5 -5
  15. package/esm/LinearComparativeView/components/VerticalGuide.js +4 -7
  16. package/esm/LinearComparativeView/model.d.ts +60 -4
  17. package/esm/LinearComparativeView/model.js +7 -2
  18. package/esm/LinearReadVsRef/LinearReadVsRef.js +2 -2
  19. package/esm/LinearSyntenyView/components/ImportForm/LeftPanel.d.ts +11 -0
  20. package/esm/LinearSyntenyView/components/ImportForm/LeftPanel.js +53 -0
  21. package/esm/LinearSyntenyView/components/ImportForm/LinearSyntenyImportForm.js +21 -55
  22. package/esm/LinearSyntenyView/components/LinearSyntenyView.d.ts +2 -3
  23. package/esm/LinearSyntenyView/components/LinearSyntenyView.js +1 -1
  24. package/esm/LinearSyntenyView/model.d.ts +61 -5
  25. package/esm/LinearSyntenyView/model.js +3 -3
  26. package/esm/LinearSyntenyViewHelper/stateModelFactory.js +2 -2
  27. package/package.json +5 -5
@@ -18,7 +18,7 @@ const useStyles = (0, mui_1.makeStyles)()(theme => {
18
18
  height: '100%',
19
19
  background: (0, material_1.alpha)(theme.palette.tertiary.main, 0.7),
20
20
  position: 'absolute',
21
- zIndex: 10,
21
+ zIndex: 900,
22
22
  textAlign: 'center',
23
23
  overflow: 'hidden',
24
24
  },
@@ -81,13 +81,13 @@ const LinearComparativeRubberband = (0, mobx_react_1.observer)(function Rubberba
81
81
  clientY,
82
82
  });
83
83
  (0, mobx_1.transaction)(() => {
84
- model.views.forEach(view => {
84
+ for (const view of model.views) {
85
85
  const args = computeOffsets(offsetX, view);
86
86
  if (args) {
87
87
  const { leftOffset, rightOffset } = args;
88
88
  view.setOffsets(leftOffset, rightOffset);
89
89
  }
90
- });
90
+ }
91
91
  });
92
92
  setGuideX(undefined);
93
93
  }
@@ -125,9 +125,9 @@ const LinearComparativeRubberband = (0, mobx_react_1.observer)(function Rubberba
125
125
  function mouseOut() {
126
126
  setGuideX(undefined);
127
127
  (0, mobx_1.transaction)(() => {
128
- model.views.forEach(view => {
128
+ for (const view of model.views) {
129
129
  view.setOffsets(undefined, undefined);
130
- });
130
+ }
131
131
  });
132
132
  }
133
133
  function handleClose() {
@@ -11,19 +11,16 @@ const useStyles = (0, mui_1.makeStyles)()({
11
11
  height: '100%',
12
12
  width: 1,
13
13
  position: 'absolute',
14
- zIndex: 10,
15
- },
16
- sm: {
17
- fontSize: 10,
14
+ background: 'red',
15
+ zIndex: 1001,
18
16
  },
19
17
  });
20
18
  const VerticalGuide = (0, mobx_react_1.observer)(function ({ model, coordX, }) {
21
19
  const { classes } = useStyles();
22
20
  return ((0, jsx_runtime_1.jsx)(material_1.Tooltip, { open: true, placement: "top", title: model.views
23
21
  .map(view => view.pxToBp(coordX))
24
- .map((elt, idx) => ((0, jsx_runtime_1.jsx)(material_1.Typography, { className: classes.sm, children: (0, util_1.stringify)(elt, true) }, [JSON.stringify(elt), idx].join('-')))), arrow: true, children: (0, jsx_runtime_1.jsx)("div", { className: classes.guide, style: {
22
+ .map((elt, idx) => ((0, jsx_runtime_1.jsx)("div", { children: (0, util_1.stringify)(elt, true) }, [JSON.stringify(elt), idx].join('-')))), arrow: true, children: (0, jsx_runtime_1.jsx)("div", { className: classes.guide, style: {
25
23
  left: coordX,
26
- background: 'red',
27
24
  } }) }));
28
25
  });
29
26
  exports.default = VerticalGuide;
@@ -49,6 +49,7 @@ declare function stateModelFactory(pluginManager: PluginManager): import("mobx-s
49
49
  highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType>>, [undefined]>;
50
50
  colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
51
51
  showTrackOutlines: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
52
+ init: import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined>;
52
53
  }, {
53
54
  width: number;
54
55
  } & {
@@ -70,10 +71,15 @@ declare function stateModelFactory(pluginManager: PluginManager): import("mobx-s
70
71
  leftOffset: undefined | import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").BpOffset;
71
72
  rightOffset: undefined | import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").BpOffset;
72
73
  } & {
74
+ readonly pinnedTracks: any[];
75
+ readonly unpinnedTracks: any[];
73
76
  readonly trackLabelsSetting: any;
74
77
  readonly width: number;
75
78
  readonly interRegionPaddingWidth: number;
76
79
  readonly assemblyNames: string[];
80
+ readonly stickyViewHeaders: boolean;
81
+ readonly rubberbandTop: number;
82
+ readonly pinnedTracksTop: number;
77
83
  } & {
78
84
  scaleBarDisplayPrefix(): string | undefined;
79
85
  MiniControlsComponent(): React.FC<any>;
@@ -159,6 +165,7 @@ declare function stateModelFactory(pluginManager: PluginManager): import("mobx-s
159
165
  setDraggingTrackId(idx?: string): void;
160
166
  setScaleFactor(factor: number): void;
161
167
  clearView(): void;
168
+ setInit(arg?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState): void;
162
169
  exportSvg(opts?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").ExportSvgOptions): Promise<void>;
163
170
  } & {
164
171
  slide: (viewWidths: number) => void;
@@ -179,7 +186,6 @@ declare function stateModelFactory(pluginManager: PluginManager): import("mobx-s
179
186
  readonly coarseVisibleLocStrings: string;
180
187
  } & {
181
188
  setCoarseDynamicBlocks(blocks: import("@jbrowse/core/util/blockTypes").BlockSet): void;
182
- afterAttach(): void;
183
189
  } & {
184
190
  moveTo(start?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").BpOffset, end?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").BpOffset): void;
185
191
  navToLocString(input: string, optAssemblyName?: string): Promise<void>;
@@ -225,6 +231,7 @@ declare function stateModelFactory(pluginManager: PluginManager): import("mobx-s
225
231
  } | undefined;
226
232
  } & {
227
233
  afterCreate(): void;
234
+ afterAttach(): void;
228
235
  }, import("mobx-state-tree").ModelCreationType<import("mobx-state-tree/dist/internal").ExtractCFromProps<{
229
236
  id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
230
237
  displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
@@ -247,7 +254,28 @@ declare function stateModelFactory(pluginManager: PluginManager): import("mobx-s
247
254
  highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType>>, [undefined]>;
248
255
  colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
249
256
  showTrackOutlines: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
250
- }>>, import("mobx-state-tree")._NotCustomized>>;
257
+ init: import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined>;
258
+ }>>, {
259
+ id: string;
260
+ type: string;
261
+ displayName: string | undefined;
262
+ tracks: any[];
263
+ minimized: boolean;
264
+ displayedRegions: import("@jbrowse/core/util").Region[];
265
+ offsetPx: number;
266
+ bpPerPx: number;
267
+ hideHeader: boolean;
268
+ hideHeaderOverview: boolean;
269
+ hideNoTracksActive: boolean;
270
+ trackSelectorType: string;
271
+ showCenterLine: boolean;
272
+ showCytobandsSetting: boolean;
273
+ trackLabels: string;
274
+ showGridlines: boolean;
275
+ highlight: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType[];
276
+ colorByCDS: boolean;
277
+ showTrackOutlines: boolean;
278
+ }>>;
251
279
  viewTrackConfigs: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyModelType>;
252
280
  }, {
253
281
  width: number;
@@ -335,6 +363,7 @@ declare function stateModelFactory(pluginManager: PluginManager): import("mobx-s
335
363
  highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType>>, [undefined]>;
336
364
  colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
337
365
  showTrackOutlines: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
366
+ init: import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined>;
338
367
  }, {
339
368
  width: number;
340
369
  } & {
@@ -356,10 +385,15 @@ declare function stateModelFactory(pluginManager: PluginManager): import("mobx-s
356
385
  leftOffset: undefined | import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").BpOffset;
357
386
  rightOffset: undefined | import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").BpOffset;
358
387
  } & {
388
+ readonly pinnedTracks: any[];
389
+ readonly unpinnedTracks: any[];
359
390
  readonly trackLabelsSetting: any;
360
391
  readonly width: number;
361
392
  readonly interRegionPaddingWidth: number;
362
393
  readonly assemblyNames: string[];
394
+ readonly stickyViewHeaders: boolean;
395
+ readonly rubberbandTop: number;
396
+ readonly pinnedTracksTop: number;
363
397
  } & {
364
398
  scaleBarDisplayPrefix(): string | undefined;
365
399
  MiniControlsComponent(): React.FC<any>;
@@ -445,6 +479,7 @@ declare function stateModelFactory(pluginManager: PluginManager): import("mobx-s
445
479
  setDraggingTrackId(idx?: string): void;
446
480
  setScaleFactor(factor: number): void;
447
481
  clearView(): void;
482
+ setInit(arg?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState): void;
448
483
  exportSvg(opts?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").ExportSvgOptions): Promise<void>;
449
484
  } & {
450
485
  slide: (viewWidths: number) => void;
@@ -465,7 +500,6 @@ declare function stateModelFactory(pluginManager: PluginManager): import("mobx-s
465
500
  readonly coarseVisibleLocStrings: string;
466
501
  } & {
467
502
  setCoarseDynamicBlocks(blocks: import("@jbrowse/core/util/blockTypes").BlockSet): void;
468
- afterAttach(): void;
469
503
  } & {
470
504
  moveTo(start?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").BpOffset, end?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").BpOffset): void;
471
505
  navToLocString(input: string, optAssemblyName?: string): Promise<void>;
@@ -511,6 +545,7 @@ declare function stateModelFactory(pluginManager: PluginManager): import("mobx-s
511
545
  } | undefined;
512
546
  } & {
513
547
  afterCreate(): void;
548
+ afterAttach(): void;
514
549
  }, import("mobx-state-tree").ModelCreationType<import("mobx-state-tree/dist/internal").ExtractCFromProps<{
515
550
  id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
516
551
  displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
@@ -533,7 +568,28 @@ declare function stateModelFactory(pluginManager: PluginManager): import("mobx-s
533
568
  highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType>>, [undefined]>;
534
569
  colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
535
570
  showTrackOutlines: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
536
- }>>, import("mobx-state-tree")._NotCustomized>>;
571
+ init: import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined>;
572
+ }>>, {
573
+ id: string;
574
+ type: string;
575
+ displayName: string | undefined;
576
+ tracks: any[];
577
+ minimized: boolean;
578
+ displayedRegions: import("@jbrowse/core/util").Region[];
579
+ offsetPx: number;
580
+ bpPerPx: number;
581
+ hideHeader: boolean;
582
+ hideHeaderOverview: boolean;
583
+ hideNoTracksActive: boolean;
584
+ trackSelectorType: string;
585
+ showCenterLine: boolean;
586
+ showCytobandsSetting: boolean;
587
+ trackLabels: string;
588
+ showGridlines: boolean;
589
+ highlight: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType[];
590
+ colorByCDS: boolean;
591
+ showTrackOutlines: boolean;
592
+ }>>;
537
593
  viewTrackConfigs: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyModelType>;
538
594
  }>>, import("mobx-state-tree")._NotCustomized>;
539
595
  export type LinearComparativeViewStateModel = ReturnType<typeof stateModelFactory>;
@@ -102,18 +102,23 @@ function stateModelFactory(pluginManager) {
102
102
  }
103
103
  },
104
104
  onSubviewAction(actionName, path, args) {
105
- self.views.forEach(view => {
105
+ for (const view of self.views) {
106
106
  const ret = (0, mobx_state_tree_1.getPath)(view);
107
107
  if (!ret.endsWith(path)) {
108
108
  view[actionName](args === null || args === void 0 ? void 0 : args[0]);
109
109
  }
110
- });
110
+ }
111
111
  },
112
112
  setWidth(newWidth) {
113
113
  self.width = newWidth;
114
114
  },
115
115
  setViews(views) {
116
116
  self.views = (0, mobx_state_tree_1.cast)(views);
117
+ const levels = [];
118
+ for (let i = 0; i < views.length - 1; i++) {
119
+ levels.push({ level: i });
120
+ }
121
+ self.levels = (0, mobx_state_tree_1.cast)(levels);
117
122
  },
118
123
  removeView(view) {
119
124
  self.views.remove(view);
@@ -101,12 +101,12 @@ function ReadVsRefDialog({ track, feature: preFeature, handleClose, }) {
101
101
  };
102
102
  const totalLength = flags & 2048 ? getLength(suppAlns[0].CIGAR) : getLength(cigar);
103
103
  const features = [feat, ...suppAlns];
104
- features.forEach((f, idx) => {
104
+ for (const [idx, f] of features.entries()) {
105
105
  f.refName = assembly.getCanonicalRefName(f.refName) || f.refName;
106
106
  f.syntenyId = idx;
107
107
  f.mate.syntenyId = idx;
108
108
  f.mate.uniqueId = `${f.uniqueId}_mate`;
109
- });
109
+ }
110
110
  features.sort((a, b) => a.clipPos - b.clipPos);
111
111
  const featSeq = feature.get('seq');
112
112
  const configFeatureStore = [...features, ...features.map(f => f.mate)];
@@ -0,0 +1,11 @@
1
+ import type { LinearSyntenyViewModel } from '../../model';
2
+ declare const LeftPanel: ({ model, selectedAssemblyNames, setSelectedAssemblyNames, selectedRow, setSelectedRow, defaultAssemblyName, onLaunch, }: {
3
+ model: LinearSyntenyViewModel;
4
+ selectedAssemblyNames: string[];
5
+ setSelectedAssemblyNames: (names: string[]) => void;
6
+ selectedRow: number;
7
+ setSelectedRow: (row: number) => void;
8
+ defaultAssemblyName: string;
9
+ onLaunch: () => void;
10
+ }) => import("react/jsx-runtime").JSX.Element;
11
+ export default LeftPanel;
@@ -0,0 +1,58 @@
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 ui_1 = require("@jbrowse/core/ui");
8
+ const util_1 = require("@jbrowse/core/util");
9
+ const ArrowForwardIos_1 = __importDefault(require("@mui/icons-material/ArrowForwardIos"));
10
+ const Close_1 = __importDefault(require("@mui/icons-material/Close"));
11
+ const material_1 = require("@mui/material");
12
+ const mobx_react_1 = require("mobx-react");
13
+ const mui_1 = require("tss-react/mui");
14
+ const useStyles = (0, mui_1.makeStyles)()(theme => ({
15
+ mb: {
16
+ marginBottom: 10,
17
+ },
18
+ button: {
19
+ margin: theme.spacing(2),
20
+ },
21
+ rel: {
22
+ position: 'relative',
23
+ },
24
+ synbutton: {
25
+ position: 'absolute',
26
+ top: 30,
27
+ },
28
+ bg: {
29
+ background: theme.palette.divider,
30
+ },
31
+ }));
32
+ const AssemblyRows = (0, mobx_react_1.observer)(function ({ selectedRow, selectedAssemblyNames, setSelectedRow, setSelectedAssemblyNames, model, }) {
33
+ const { classes, cx } = useStyles();
34
+ const session = (0, util_1.getSession)(model);
35
+ return selectedAssemblyNames.map((assemblyName, idx) => ((0, jsx_runtime_1.jsxs)("div", { className: classes.rel, children: [(0, jsx_runtime_1.jsxs)("span", { children: ["Row ", idx + 1, ": "] }), (0, jsx_runtime_1.jsx)(material_1.IconButton, { disabled: selectedAssemblyNames.length <= 2, onClick: () => {
36
+ model.importFormRemoveRow(idx);
37
+ setSelectedAssemblyNames(selectedAssemblyNames
38
+ .map((asm, idx2) => (idx2 === idx ? undefined : asm))
39
+ .filter(util_1.notEmpty));
40
+ if (selectedRow >= selectedAssemblyNames.length - 2) {
41
+ setSelectedRow(0);
42
+ }
43
+ }, children: (0, jsx_runtime_1.jsx)(Close_1.default, {}) }), (0, jsx_runtime_1.jsx)(ui_1.AssemblySelector, { helperText: "", selected: assemblyName, onChange: newAssembly => {
44
+ setSelectedAssemblyNames(selectedAssemblyNames.map((asm, idx2) => idx2 === idx ? newAssembly : asm));
45
+ }, session: session }), idx !== selectedAssemblyNames.length - 1 ? ((0, jsx_runtime_1.jsx)(material_1.IconButton, { "data-testid": "synbutton", className: cx(classes.synbutton, idx === selectedRow ? classes.bg : undefined), onClick: () => {
46
+ setSelectedRow(idx);
47
+ }, children: (0, jsx_runtime_1.jsx)(ArrowForwardIos_1.default, {}) })) : null] }, `${assemblyName}-${idx}`)));
48
+ });
49
+ const LeftPanel = (0, mobx_react_1.observer)(function ({ model, selectedAssemblyNames, setSelectedAssemblyNames, selectedRow, setSelectedRow, defaultAssemblyName, onLaunch, }) {
50
+ const { classes } = useStyles();
51
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: classes.mb, children: "Select assemblies for linear synteny view" }), (0, jsx_runtime_1.jsx)(AssemblyRows, { model: model, selectedAssemblyNames: selectedAssemblyNames, setSelectedAssemblyNames: setSelectedAssemblyNames, selectedRow: selectedRow, setSelectedRow: setSelectedRow }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(material_1.Button, { className: classes.button, variant: "contained", color: "secondary", onClick: () => {
52
+ setSelectedAssemblyNames([
53
+ ...selectedAssemblyNames,
54
+ defaultAssemblyName,
55
+ ]);
56
+ }, children: "Add row" }), (0, jsx_runtime_1.jsx)(material_1.Button, { className: classes.button, onClick: onLaunch, variant: "contained", color: "primary", children: "Launch" })] })] }));
57
+ });
58
+ exports.default = LeftPanel;
@@ -7,37 +7,20 @@ const jsx_runtime_1 = require("react/jsx-runtime");
7
7
  const react_1 = require("react");
8
8
  const ui_1 = require("@jbrowse/core/ui");
9
9
  const util_1 = require("@jbrowse/core/util");
10
- const ArrowForwardIos_1 = __importDefault(require("@mui/icons-material/ArrowForwardIos"));
11
- const Close_1 = __importDefault(require("@mui/icons-material/Close"));
12
10
  const material_1 = require("@mui/material");
13
11
  const mobx_react_1 = require("mobx-react");
14
12
  const mui_1 = require("tss-react/mui");
15
13
  const ImportSyntenyTrackSelectorArea_1 = __importDefault(require("./ImportSyntenyTrackSelectorArea"));
14
+ const LeftPanel_1 = __importDefault(require("./LeftPanel"));
16
15
  const doSubmit_1 = require("./doSubmit");
17
16
  const useStyles = (0, mui_1.makeStyles)()(theme => ({
18
17
  importFormContainer: {
19
18
  padding: theme.spacing(4),
20
19
  },
21
- button: {
22
- margin: theme.spacing(2),
23
- },
24
- rel: {
25
- position: 'relative',
26
- },
27
- synbutton: {
28
- position: 'absolute',
29
- top: 30,
30
- },
31
20
  flex: {
32
21
  display: 'flex',
33
22
  gap: 90,
34
23
  },
35
- mb: {
36
- marginBottom: 10,
37
- },
38
- bg: {
39
- background: theme.palette.divider,
40
- },
41
24
  rightPanel: {
42
25
  flexGrow: 11,
43
26
  },
@@ -47,7 +30,7 @@ const useStyles = (0, mui_1.makeStyles)()(theme => ({
47
30
  },
48
31
  }));
49
32
  const LinearSyntenyViewImportForm = (0, mobx_react_1.observer)(function ({ model, }) {
50
- const { classes, cx } = useStyles();
33
+ const { classes } = useStyles();
51
34
  const session = (0, util_1.getSession)(model);
52
35
  const { assemblyNames } = session;
53
36
  const defaultAssemblyName = assemblyNames[0] || '';
@@ -57,38 +40,21 @@ const LinearSyntenyViewImportForm = (0, mobx_react_1.observer)(function ({ model
57
40
  defaultAssemblyName,
58
41
  ]);
59
42
  const [error, setError] = (0, react_1.useState)();
60
- return ((0, jsx_runtime_1.jsxs)(material_1.Container, { className: classes.importFormContainer, children: [error ? (0, jsx_runtime_1.jsx)(ui_1.ErrorMessage, { error: error }) : null, (0, jsx_runtime_1.jsxs)("div", { className: classes.flex, children: [(0, jsx_runtime_1.jsxs)("div", { className: classes.leftPanel, children: [(0, jsx_runtime_1.jsx)("div", { className: classes.mb, children: "Select assemblies for linear synteny view" }), selectedAssemblyNames.map((assemblyName, idx) => ((0, jsx_runtime_1.jsxs)("div", { className: classes.rel, children: [(0, jsx_runtime_1.jsxs)("span", { children: ["Row ", idx + 1, ": "] }), (0, jsx_runtime_1.jsx)(material_1.IconButton, { disabled: selectedAssemblyNames.length <= 2, onClick: () => {
61
- model.importFormRemoveRow(idx);
62
- setSelectedAssemblyNames(selectedAssemblyNames
63
- .map((asm, idx2) => (idx2 === idx ? undefined : asm))
64
- .filter(util_1.notEmpty));
65
- if (selectedRow >= selectedAssemblyNames.length - 2) {
66
- setSelectedRow(0);
67
- }
68
- }, children: (0, jsx_runtime_1.jsx)(Close_1.default, {}) }), (0, jsx_runtime_1.jsx)(ui_1.AssemblySelector, { helperText: "", selected: assemblyName, onChange: newAssembly => {
69
- setSelectedAssemblyNames(selectedAssemblyNames.map((asm, idx2) => idx2 === idx ? newAssembly : asm));
70
- }, session: session }), idx !== selectedAssemblyNames.length - 1 ? ((0, jsx_runtime_1.jsx)(material_1.IconButton, { "data-testid": "synbutton", className: cx(classes.synbutton, idx === selectedRow ? classes.bg : undefined), onClick: () => {
71
- setSelectedRow(idx);
72
- }, children: (0, jsx_runtime_1.jsx)(ArrowForwardIos_1.default, {}) })) : null] }, `${assemblyName}-${idx}`))), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(material_1.Button, { className: classes.button, variant: "contained", color: "secondary", onClick: () => {
73
- setSelectedAssemblyNames([
74
- ...selectedAssemblyNames,
75
- defaultAssemblyName,
76
- ]);
77
- }, children: "Add row" }), (0, jsx_runtime_1.jsx)(material_1.Button, { className: classes.button, onClick: () => {
78
- ;
79
- (async () => {
80
- try {
81
- setError(undefined);
82
- await (0, doSubmit_1.doSubmit)({
83
- selectedAssemblyNames,
84
- model,
85
- });
86
- }
87
- catch (e) {
88
- console.error(e);
89
- setError(e);
90
- }
91
- })();
92
- }, variant: "contained", color: "primary", children: "Launch" })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: classes.rightPanel, children: [(0, jsx_runtime_1.jsxs)("div", { children: ["Synteny dataset to display between row ", selectedRow + 1, " and", ' ', selectedRow + 2] }), (0, jsx_runtime_1.jsx)(ImportSyntenyTrackSelectorArea_1.default, { model: model, selectedRow: selectedRow, assembly1: selectedAssemblyNames[selectedRow], assembly2: selectedAssemblyNames[selectedRow + 1] })] })] })] }));
43
+ const handleLaunch = async () => {
44
+ try {
45
+ setError(undefined);
46
+ await (0, doSubmit_1.doSubmit)({
47
+ selectedAssemblyNames,
48
+ model,
49
+ });
50
+ }
51
+ catch (e) {
52
+ console.error(e);
53
+ setError(e);
54
+ }
55
+ };
56
+ return ((0, jsx_runtime_1.jsxs)(material_1.Container, { className: classes.importFormContainer, children: [error ? (0, jsx_runtime_1.jsx)(ui_1.ErrorMessage, { error: error }) : null, (0, jsx_runtime_1.jsxs)("div", { className: classes.flex, children: [(0, jsx_runtime_1.jsx)("div", { className: classes.leftPanel, children: (0, jsx_runtime_1.jsx)(LeftPanel_1.default, { model: model, selectedAssemblyNames: selectedAssemblyNames, setSelectedAssemblyNames: setSelectedAssemblyNames, selectedRow: selectedRow, setSelectedRow: setSelectedRow, defaultAssemblyName: defaultAssemblyName, onLaunch: () => {
57
+ handleLaunch();
58
+ } }) }), (0, jsx_runtime_1.jsxs)("div", { className: classes.rightPanel, children: [(0, jsx_runtime_1.jsxs)("div", { children: ["Synteny dataset to display between row ", selectedRow + 1, " and", ' ', selectedRow + 2] }), (0, jsx_runtime_1.jsx)(ImportSyntenyTrackSelectorArea_1.default, { model: model, selectedRow: selectedRow, assembly1: selectedAssemblyNames[selectedRow], assembly2: selectedAssemblyNames[selectedRow + 1] })] })] })] }));
93
59
  });
94
60
  exports.default = LinearSyntenyViewImportForm;
@@ -1,6 +1,5 @@
1
1
  import type { LinearSyntenyViewModel } from '../model';
2
- type LSV = LinearSyntenyViewModel;
3
- declare const LinearSyntenyView: ({ model }: {
4
- model: LSV;
2
+ declare const LinearSyntenyView: ({ model, }: {
3
+ model: LinearSyntenyViewModel;
5
4
  }) => import("react/jsx-runtime").JSX.Element;
6
5
  export default LinearSyntenyView;
@@ -41,7 +41,7 @@ const react_1 = require("react");
41
41
  const mobx_react_1 = require("mobx-react");
42
42
  const LinearComparativeView_1 = __importDefault(require("../../LinearComparativeView/components/LinearComparativeView"));
43
43
  const LinearSyntenyImportForm = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./ImportForm/LinearSyntenyImportForm'))));
44
- const LinearSyntenyView = (0, mobx_react_1.observer)(function ({ model }) {
44
+ const LinearSyntenyView = (0, mobx_react_1.observer)(function ({ model, }) {
45
45
  return !model.initialized ? ((0, jsx_runtime_1.jsx)(LinearSyntenyImportForm, { model: model })) : ((0, jsx_runtime_1.jsx)(LinearComparativeView_1.default, { model: model }));
46
46
  });
47
47
  exports.default = LinearSyntenyView;
@@ -66,6 +66,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
66
66
  highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType>>, [undefined]>;
67
67
  colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
68
68
  showTrackOutlines: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
69
+ init: import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined>;
69
70
  }, {
70
71
  width: number;
71
72
  } & {
@@ -87,10 +88,15 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
87
88
  leftOffset: undefined | import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").BpOffset;
88
89
  rightOffset: undefined | import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").BpOffset;
89
90
  } & {
91
+ readonly pinnedTracks: any[];
92
+ readonly unpinnedTracks: any[];
90
93
  readonly trackLabelsSetting: any;
91
94
  readonly width: number;
92
95
  readonly interRegionPaddingWidth: number;
93
96
  readonly assemblyNames: string[];
97
+ readonly stickyViewHeaders: boolean;
98
+ readonly rubberbandTop: number;
99
+ readonly pinnedTracksTop: number;
94
100
  } & {
95
101
  scaleBarDisplayPrefix(): string | undefined;
96
102
  MiniControlsComponent(): React.FC<any>;
@@ -176,6 +182,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
176
182
  setDraggingTrackId(idx?: string): void;
177
183
  setScaleFactor(factor: number): void;
178
184
  clearView(): void;
185
+ setInit(arg?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState): void;
179
186
  exportSvg(opts?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").ExportSvgOptions): Promise<void>;
180
187
  } & {
181
188
  slide: (viewWidths: number) => void;
@@ -196,7 +203,6 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
196
203
  readonly coarseVisibleLocStrings: string;
197
204
  } & {
198
205
  setCoarseDynamicBlocks(blocks: import("@jbrowse/core/util/blockTypes").BlockSet): void;
199
- afterAttach(): void;
200
206
  } & {
201
207
  moveTo(start?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").BpOffset, end?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").BpOffset): void;
202
208
  navToLocString(input: string, optAssemblyName?: string): Promise<void>;
@@ -242,6 +248,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
242
248
  } | undefined;
243
249
  } & {
244
250
  afterCreate(): void;
251
+ afterAttach(): void;
245
252
  }, import("mobx-state-tree").ModelCreationType<import("mobx-state-tree/dist/internal").ExtractCFromProps<{
246
253
  id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
247
254
  displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
@@ -264,7 +271,28 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
264
271
  highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType>>, [undefined]>;
265
272
  colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
266
273
  showTrackOutlines: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
267
- }>>, import("mobx-state-tree")._NotCustomized>>;
274
+ init: import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined>;
275
+ }>>, {
276
+ id: string;
277
+ type: string;
278
+ displayName: string | undefined;
279
+ tracks: any[];
280
+ minimized: boolean;
281
+ displayedRegions: import("@jbrowse/core/util").Region[];
282
+ offsetPx: number;
283
+ bpPerPx: number;
284
+ hideHeader: boolean;
285
+ hideHeaderOverview: boolean;
286
+ hideNoTracksActive: boolean;
287
+ trackSelectorType: string;
288
+ showCenterLine: boolean;
289
+ showCytobandsSetting: boolean;
290
+ trackLabels: string;
291
+ showGridlines: boolean;
292
+ highlight: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType[];
293
+ colorByCDS: boolean;
294
+ showTrackOutlines: boolean;
295
+ }>>;
268
296
  viewTrackConfigs: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyModelType>;
269
297
  } & {
270
298
  type: import("mobx-state-tree").ISimpleType<"LinearSyntenyView">;
@@ -332,10 +360,10 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
332
360
  type?: undefined;
333
361
  } | {
334
362
  label: string;
335
- onClick: () => void;
336
363
  checked: boolean;
337
364
  type: string;
338
365
  description: string;
366
+ onClick: () => void;
339
367
  icon?: undefined;
340
368
  } | {
341
369
  label: string;
@@ -419,6 +447,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
419
447
  highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType>>, [undefined]>;
420
448
  colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
421
449
  showTrackOutlines: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
450
+ init: import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined>;
422
451
  }, {
423
452
  width: number;
424
453
  } & {
@@ -440,10 +469,15 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
440
469
  leftOffset: undefined | import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").BpOffset;
441
470
  rightOffset: undefined | import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").BpOffset;
442
471
  } & {
472
+ readonly pinnedTracks: any[];
473
+ readonly unpinnedTracks: any[];
443
474
  readonly trackLabelsSetting: any;
444
475
  readonly width: number;
445
476
  readonly interRegionPaddingWidth: number;
446
477
  readonly assemblyNames: string[];
478
+ readonly stickyViewHeaders: boolean;
479
+ readonly rubberbandTop: number;
480
+ readonly pinnedTracksTop: number;
447
481
  } & {
448
482
  scaleBarDisplayPrefix(): string | undefined;
449
483
  MiniControlsComponent(): React.FC<any>;
@@ -529,6 +563,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
529
563
  setDraggingTrackId(idx?: string): void;
530
564
  setScaleFactor(factor: number): void;
531
565
  clearView(): void;
566
+ setInit(arg?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState): void;
532
567
  exportSvg(opts?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").ExportSvgOptions): Promise<void>;
533
568
  } & {
534
569
  slide: (viewWidths: number) => void;
@@ -549,7 +584,6 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
549
584
  readonly coarseVisibleLocStrings: string;
550
585
  } & {
551
586
  setCoarseDynamicBlocks(blocks: import("@jbrowse/core/util/blockTypes").BlockSet): void;
552
- afterAttach(): void;
553
587
  } & {
554
588
  moveTo(start?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").BpOffset, end?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").BpOffset): void;
555
589
  navToLocString(input: string, optAssemblyName?: string): Promise<void>;
@@ -595,6 +629,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
595
629
  } | undefined;
596
630
  } & {
597
631
  afterCreate(): void;
632
+ afterAttach(): void;
598
633
  }, import("mobx-state-tree").ModelCreationType<import("mobx-state-tree/dist/internal").ExtractCFromProps<{
599
634
  id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
600
635
  displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
@@ -617,7 +652,28 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
617
652
  highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType>>, [undefined]>;
618
653
  colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
619
654
  showTrackOutlines: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
620
- }>>, import("mobx-state-tree")._NotCustomized>>;
655
+ init: import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").InitState | undefined>;
656
+ }>>, {
657
+ id: string;
658
+ type: string;
659
+ displayName: string | undefined;
660
+ tracks: any[];
661
+ minimized: boolean;
662
+ displayedRegions: import("@jbrowse/core/util").Region[];
663
+ offsetPx: number;
664
+ bpPerPx: number;
665
+ hideHeader: boolean;
666
+ hideHeaderOverview: boolean;
667
+ hideNoTracksActive: boolean;
668
+ trackSelectorType: string;
669
+ showCenterLine: boolean;
670
+ showCytobandsSetting: boolean;
671
+ trackLabels: string;
672
+ showGridlines: boolean;
673
+ highlight: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView/types").HighlightType[];
674
+ colorByCDS: boolean;
675
+ showTrackOutlines: boolean;
676
+ }>>;
621
677
  viewTrackConfigs: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyModelType>;
622
678
  }>> & import("mobx-state-tree/dist/internal").NonEmptyObject & import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
623
679
  export type LinearSyntenyViewStateModel = ReturnType<typeof stateModelFactory>;