@jbrowse/plugin-linear-comparative-view 2.15.4 → 2.16.1

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 (121) hide show
  1. package/dist/LGVSyntenyDisplay/components/LaunchSyntenyViewDialog.d.ts +2 -1
  2. package/dist/LGVSyntenyDisplay/components/LaunchSyntenyViewDialog.js +4 -2
  3. package/dist/LGVSyntenyDisplay/components/util.d.ts +4 -1
  4. package/dist/LGVSyntenyDisplay/components/util.js +7 -15
  5. package/dist/LGVSyntenyDisplay/model.d.ts +26 -14
  6. package/dist/LGVSyntenyDisplay/model.js +23 -1
  7. package/dist/LaunchLinearSyntenyView.js +41 -11
  8. package/dist/LinearComparativeDisplay/stateModelFactory.d.ts +42 -14
  9. package/dist/LinearComparativeDisplay/stateModelFactory.js +20 -10
  10. package/dist/LinearComparativeView/components/Header.d.ts +2 -3
  11. package/dist/LinearComparativeView/components/Header.js +72 -62
  12. package/dist/LinearComparativeView/components/HeaderSearchBoxes.d.ts +6 -0
  13. package/dist/LinearComparativeView/components/HeaderSearchBoxes.js +34 -0
  14. package/dist/LinearComparativeView/components/LinearComparativeRenderArea.d.ts +6 -0
  15. package/dist/LinearComparativeView/components/LinearComparativeRenderArea.js +61 -0
  16. package/dist/LinearComparativeView/components/LinearComparativeView.d.ts +2 -4
  17. package/dist/LinearComparativeView/components/LinearComparativeView.js +3 -67
  18. package/dist/LinearComparativeView/components/Rubberband.js +1 -1
  19. package/dist/LinearComparativeView/index.js +3 -0
  20. package/dist/LinearComparativeView/model.d.ts +265 -12
  21. package/dist/LinearComparativeView/model.js +45 -75
  22. package/dist/LinearSyntenyDisplay/afterAttach.js +5 -4
  23. package/dist/LinearSyntenyDisplay/components/LinearSyntenyRendering.js +47 -32
  24. package/dist/LinearSyntenyDisplay/components/SyntenyContextMenu.js +10 -6
  25. package/dist/LinearSyntenyDisplay/components/util.d.ts +7 -2
  26. package/dist/LinearSyntenyDisplay/components/util.js +12 -14
  27. package/dist/LinearSyntenyDisplay/drawSynteny.d.ts +1 -1
  28. package/dist/LinearSyntenyDisplay/drawSynteny.js +29 -25
  29. package/dist/LinearSyntenyDisplay/index.js +1 -1
  30. package/dist/LinearSyntenyDisplay/model.d.ts +48 -10
  31. package/dist/LinearSyntenyDisplay/model.js +38 -15
  32. package/dist/LinearSyntenyView/components/ImportForm/{ImportCustomTrack.d.ts → AddCustomTrack.d.ts} +2 -3
  33. package/dist/LinearSyntenyView/components/ImportForm/{ImportCustomTrack.js → AddCustomTrack.js} +3 -3
  34. package/dist/LinearSyntenyView/components/ImportForm/LinearSyntenyImportForm.js +195 -0
  35. package/dist/LinearSyntenyView/components/ImportForm/Spacer.d.ts +2 -0
  36. package/dist/LinearSyntenyView/components/ImportForm/Spacer.js +10 -0
  37. package/dist/LinearSyntenyView/components/ImportForm/TrackSelector.d.ts +10 -0
  38. package/dist/LinearSyntenyView/components/ImportForm/{ImportSyntenyTrackSelector.js → TrackSelector.js} +15 -20
  39. package/dist/LinearSyntenyView/components/ImportForm/TrackSelectorUtil.d.ts +14 -0
  40. package/dist/LinearSyntenyView/components/ImportForm/TrackSelectorUtil.js +52 -0
  41. package/dist/LinearSyntenyView/components/LinearSyntenyView.js +3 -3
  42. package/dist/LinearSyntenyView/index.js +1 -1
  43. package/dist/LinearSyntenyView/model.d.ts +267 -9
  44. package/dist/LinearSyntenyView/model.js +2 -2
  45. package/dist/LinearSyntenyView/svgcomponents/SVGLinearGenomeView.d.ts +12 -0
  46. package/dist/LinearSyntenyView/svgcomponents/SVGLinearGenomeView.js +19 -0
  47. package/dist/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.d.ts +1 -3
  48. package/dist/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.js +36 -27
  49. package/dist/LinearSyntenyViewHelper/index.d.ts +2 -0
  50. package/dist/LinearSyntenyViewHelper/index.js +25 -0
  51. package/dist/LinearSyntenyViewHelper/stateModelFactory.d.ts +30 -0
  52. package/dist/LinearSyntenyViewHelper/stateModelFactory.js +105 -0
  53. package/dist/SyntenyFeatureDetail/SyntenyFeatureDetail.d.ts +14 -0
  54. package/dist/SyntenyFeatureDetail/SyntenyFeatureDetail.js +100 -0
  55. package/dist/SyntenyFeatureDetail/index.d.ts +2 -0
  56. package/dist/SyntenyFeatureDetail/index.js +56 -0
  57. package/dist/index.js +4 -0
  58. package/esm/LGVSyntenyDisplay/components/LaunchSyntenyViewDialog.d.ts +2 -1
  59. package/esm/LGVSyntenyDisplay/components/LaunchSyntenyViewDialog.js +4 -2
  60. package/esm/LGVSyntenyDisplay/components/util.d.ts +4 -1
  61. package/esm/LGVSyntenyDisplay/components/util.js +8 -16
  62. package/esm/LGVSyntenyDisplay/model.d.ts +26 -14
  63. package/esm/LGVSyntenyDisplay/model.js +25 -3
  64. package/esm/LaunchLinearSyntenyView.js +41 -11
  65. package/esm/LinearComparativeDisplay/stateModelFactory.d.ts +42 -14
  66. package/esm/LinearComparativeDisplay/stateModelFactory.js +21 -11
  67. package/esm/LinearComparativeView/components/Header.d.ts +2 -3
  68. package/esm/LinearComparativeView/components/Header.js +73 -63
  69. package/esm/LinearComparativeView/components/HeaderSearchBoxes.d.ts +6 -0
  70. package/esm/LinearComparativeView/components/HeaderSearchBoxes.js +29 -0
  71. package/esm/LinearComparativeView/components/LinearComparativeRenderArea.d.ts +6 -0
  72. package/esm/LinearComparativeView/components/LinearComparativeRenderArea.js +56 -0
  73. package/esm/LinearComparativeView/components/LinearComparativeView.d.ts +2 -4
  74. package/esm/LinearComparativeView/components/LinearComparativeView.js +3 -67
  75. package/esm/LinearComparativeView/components/Rubberband.js +1 -1
  76. package/esm/LinearComparativeView/index.js +3 -0
  77. package/esm/LinearComparativeView/model.d.ts +265 -12
  78. package/esm/LinearComparativeView/model.js +47 -77
  79. package/esm/LinearSyntenyDisplay/afterAttach.js +5 -4
  80. package/esm/LinearSyntenyDisplay/components/LinearSyntenyRendering.js +48 -33
  81. package/esm/LinearSyntenyDisplay/components/SyntenyContextMenu.js +10 -6
  82. package/esm/LinearSyntenyDisplay/components/util.d.ts +7 -2
  83. package/esm/LinearSyntenyDisplay/components/util.js +12 -14
  84. package/esm/LinearSyntenyDisplay/drawSynteny.d.ts +1 -1
  85. package/esm/LinearSyntenyDisplay/drawSynteny.js +29 -25
  86. package/esm/LinearSyntenyDisplay/index.js +1 -1
  87. package/esm/LinearSyntenyDisplay/model.d.ts +48 -10
  88. package/esm/LinearSyntenyDisplay/model.js +38 -15
  89. package/esm/LinearSyntenyView/components/ImportForm/{ImportCustomTrack.d.ts → AddCustomTrack.d.ts} +2 -3
  90. package/esm/LinearSyntenyView/components/ImportForm/{ImportCustomTrack.js → AddCustomTrack.js} +3 -3
  91. package/esm/LinearSyntenyView/components/ImportForm/LinearSyntenyImportForm.js +167 -0
  92. package/esm/LinearSyntenyView/components/ImportForm/Spacer.d.ts +2 -0
  93. package/esm/LinearSyntenyView/components/ImportForm/Spacer.js +4 -0
  94. package/esm/LinearSyntenyView/components/ImportForm/TrackSelector.d.ts +10 -0
  95. package/esm/LinearSyntenyView/components/ImportForm/{ImportSyntenyTrackSelector.js → TrackSelector.js} +15 -20
  96. package/esm/LinearSyntenyView/components/ImportForm/TrackSelectorUtil.d.ts +14 -0
  97. package/esm/LinearSyntenyView/components/ImportForm/TrackSelectorUtil.js +23 -0
  98. package/esm/LinearSyntenyView/components/LinearSyntenyView.js +3 -3
  99. package/esm/LinearSyntenyView/index.js +1 -1
  100. package/esm/LinearSyntenyView/model.d.ts +267 -9
  101. package/esm/LinearSyntenyView/model.js +2 -2
  102. package/esm/LinearSyntenyView/svgcomponents/SVGLinearGenomeView.d.ts +12 -0
  103. package/esm/LinearSyntenyView/svgcomponents/SVGLinearGenomeView.js +13 -0
  104. package/esm/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.d.ts +1 -3
  105. package/esm/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.js +38 -29
  106. package/esm/LinearSyntenyViewHelper/index.d.ts +2 -0
  107. package/esm/LinearSyntenyViewHelper/index.js +19 -0
  108. package/esm/LinearSyntenyViewHelper/stateModelFactory.d.ts +30 -0
  109. package/esm/LinearSyntenyViewHelper/stateModelFactory.js +102 -0
  110. package/esm/SyntenyFeatureDetail/SyntenyFeatureDetail.d.ts +14 -0
  111. package/esm/SyntenyFeatureDetail/SyntenyFeatureDetail.js +72 -0
  112. package/esm/SyntenyFeatureDetail/index.d.ts +2 -0
  113. package/esm/SyntenyFeatureDetail/index.js +27 -0
  114. package/esm/index.js +4 -0
  115. package/package.json +3 -3
  116. package/dist/LinearSyntenyView/components/ImportForm/ImportSyntenyTrackSelector.d.ts +0 -9
  117. package/dist/LinearSyntenyView/components/ImportForm/index.js +0 -138
  118. package/esm/LinearSyntenyView/components/ImportForm/ImportSyntenyTrackSelector.d.ts +0 -9
  119. package/esm/LinearSyntenyView/components/ImportForm/index.js +0 -110
  120. /package/dist/LinearSyntenyView/components/ImportForm/{index.d.ts → LinearSyntenyImportForm.d.ts} +0 -0
  121. /package/esm/LinearSyntenyView/components/ImportForm/{index.d.ts → LinearSyntenyImportForm.d.ts} +0 -0
@@ -27,76 +27,86 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  const react_1 = __importStar(require("react"));
30
+ const mobx_react_1 = require("mobx-react");
30
31
  const material_1 = require("@mui/material");
31
32
  const mui_1 = require("tss-react/mui");
32
- const plugin_linear_genome_view_1 = require("@jbrowse/plugin-linear-genome-view");
33
- const mobx_react_1 = require("mobx-react");
34
- const ui_1 = require("@jbrowse/core/ui");
33
+ const CascadingMenuButton_1 = __importDefault(require("@jbrowse/core/ui/CascadingMenuButton"));
35
34
  // icons
36
35
  const MoreVert_1 = __importDefault(require("@mui/icons-material/MoreVert"));
36
+ const Search_1 = __importDefault(require("@mui/icons-material/Search"));
37
37
  const Icons_1 = require("@jbrowse/core/ui/Icons");
38
- const CascadingMenuButton_1 = __importDefault(require("@jbrowse/core/ui/CascadingMenuButton"));
39
- const useStyles = (0, mui_1.makeStyles)()(() => ({
40
- headerBar: {
41
- gridArea: '1/1/auto/span 2',
42
- display: 'flex',
43
- },
44
- spacer: {
45
- flexGrow: 1,
38
+ const HeaderSearchBoxes_1 = __importDefault(require("./HeaderSearchBoxes"));
39
+ const useStyles = (0, mui_1.makeStyles)()({
40
+ inline: {
41
+ display: 'inline-flex',
46
42
  },
47
- iconButton: {
48
- margin: 5,
49
- },
50
- bp: {
51
- display: 'flex',
52
- alignItems: 'center',
53
- marginLeft: 10,
54
- },
55
- searchContainer: {
56
- marginLeft: 5,
57
- },
58
- searchBox: {
59
- display: 'flex',
60
- },
61
- }));
62
- const TrackSelector = (0, mobx_react_1.observer)(({ model }) => {
63
- return (react_1.default.createElement(CascadingMenuButton_1.default, { menuItems: [
64
- {
65
- label: 'Synteny track selector',
66
- onClick: () => model.activateTrackSelector(),
67
- },
68
- ...model.views.map((view, idx) => ({
69
- label: `View ${idx + 1} track selector`,
70
- onClick: () => view.activateTrackSelector(),
71
- })),
72
- ] },
73
- react_1.default.createElement(Icons_1.TrackSelector, null)));
74
43
  });
75
- const Header = (0, mobx_react_1.observer)(function ({ model }) {
44
+ const Header = (0, mobx_react_1.observer)(function ({ model, }) {
76
45
  const { classes } = useStyles();
77
- const [menuAnchorEl, setMenuAnchorEl] = (0, react_1.useState)();
78
- const anyShowHeaders = model.views.some(view => !view.hideHeader);
79
- return (react_1.default.createElement("div", { className: classes.headerBar },
80
- react_1.default.createElement(TrackSelector, { model: model }),
81
- react_1.default.createElement(material_1.IconButton, { onClick: event => {
82
- setMenuAnchorEl(event.currentTarget);
83
- }, className: classes.iconButton },
46
+ const { views } = model;
47
+ const [showSearchBoxes, setShowSearchBoxes] = (0, react_1.useState)(views.length <= 3);
48
+ const [sideBySide, setSideBySide] = (0, react_1.useState)(views.length <= 3);
49
+ return (react_1.default.createElement(material_1.FormGroup, { row: true },
50
+ react_1.default.createElement(CascadingMenuButton_1.default, { menuItems: [
51
+ {
52
+ label: 'Synteny track selectors',
53
+ type: 'subMenu',
54
+ subMenu: views.slice(0, -1).map((_, idx) => ({
55
+ label: `Row ${idx + 1}->${idx + 2} (${views[idx].assemblyNames.join(',')}->${views[idx + 1].assemblyNames.join(',')})`,
56
+ onClick: () => {
57
+ model.activateTrackSelector(idx);
58
+ },
59
+ })),
60
+ },
61
+ {
62
+ label: 'Row track selectors',
63
+ type: 'subMenu',
64
+ subMenu: views.map((view, idx) => ({
65
+ label: `Row ${idx + 1} track selector (${view.assemblyNames.join(',')})`,
66
+ onClick: () => view.activateTrackSelector(),
67
+ })),
68
+ },
69
+ ] },
70
+ react_1.default.createElement(Icons_1.TrackSelector, null)),
71
+ react_1.default.createElement(CascadingMenuButton_1.default, { menuItems: [
72
+ {
73
+ label: 'Row view menus',
74
+ type: 'subMenu',
75
+ subMenu: views.map((view, idx) => ({
76
+ label: `View ${idx + 1} Menu`,
77
+ subMenu: view.menuItems(),
78
+ })),
79
+ },
80
+ ...model.headerMenuItems(),
81
+ ] },
84
82
  react_1.default.createElement(MoreVert_1.default, null)),
85
- !anyShowHeaders
86
- ? model.views.map(view => (react_1.default.createElement("div", { key: view.id, className: classes.searchBox },
87
- react_1.default.createElement("div", { className: classes.searchContainer },
88
- react_1.default.createElement(plugin_linear_genome_view_1.SearchBox, { model: view, showHelp: false })),
89
- react_1.default.createElement("div", { className: classes.bp },
90
- react_1.default.createElement(material_1.Typography, { variant: "body2", color: "textSecondary", className: classes.bp },
91
- Math.round(view.coarseTotalBp).toLocaleString('en-US'),
92
- " bp")))))
93
- : null,
94
- react_1.default.createElement("div", { className: classes.spacer }),
95
- menuAnchorEl ? (react_1.default.createElement(ui_1.Menu, { anchorEl: menuAnchorEl, open: true, onMenuItemClick: (_event, callback) => {
96
- callback();
97
- setMenuAnchorEl(undefined);
98
- }, menuItems: model.headerMenuItems(), onClose: () => {
99
- setMenuAnchorEl(undefined);
100
- } })) : null));
83
+ react_1.default.createElement(CascadingMenuButton_1.default, { menuItems: [
84
+ {
85
+ label: 'Show search boxes',
86
+ type: 'checkbox',
87
+ checked: showSearchBoxes,
88
+ onClick: () => {
89
+ setShowSearchBoxes(!showSearchBoxes);
90
+ },
91
+ },
92
+ {
93
+ label: 'Orientation - Side-by-side',
94
+ type: 'radio',
95
+ checked: sideBySide,
96
+ onClick: () => {
97
+ setSideBySide(!sideBySide);
98
+ },
99
+ },
100
+ {
101
+ label: 'Orientation - Vertical',
102
+ type: 'radio',
103
+ checked: !sideBySide,
104
+ onClick: () => {
105
+ setSideBySide(!sideBySide);
106
+ },
107
+ },
108
+ ] },
109
+ react_1.default.createElement(Search_1.default, null)),
110
+ showSearchBoxes ? (react_1.default.createElement("span", { className: sideBySide ? classes.inline : undefined }, views.map(view => (react_1.default.createElement(HeaderSearchBoxes_1.default, { key: view.id, view: view }))))) : null));
101
111
  });
102
112
  exports.default = Header;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view';
3
+ declare const HeaderSearchBoxes: ({ view, }: {
4
+ view: LinearGenomeViewModel;
5
+ }) => React.JSX.Element;
6
+ export default HeaderSearchBoxes;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const mobx_react_1 = require("mobx-react");
8
+ const material_1 = require("@mui/material");
9
+ const mui_1 = require("tss-react/mui");
10
+ // jbrowse
11
+ const plugin_linear_genome_view_1 = require("@jbrowse/plugin-linear-genome-view");
12
+ const util_1 = require("@jbrowse/core/util");
13
+ const useStyles = (0, mui_1.makeStyles)()(() => ({
14
+ bp: {
15
+ display: 'flex',
16
+ alignItems: 'center',
17
+ marginLeft: 10,
18
+ },
19
+ searchBox: {
20
+ display: 'flex',
21
+ },
22
+ }));
23
+ const HeaderSearchBoxes = (0, mobx_react_1.observer)(function ({ view, }) {
24
+ const { classes } = useStyles();
25
+ const { assemblyNames, coarseTotalBp } = view;
26
+ return (react_1.default.createElement("span", { className: classes.searchBox },
27
+ react_1.default.createElement(plugin_linear_genome_view_1.SearchBox, { model: view, showHelp: false }),
28
+ react_1.default.createElement(material_1.Typography, { variant: "body2", color: "textSecondary", className: classes.bp },
29
+ assemblyNames.join(','),
30
+ " ",
31
+ (0, util_1.toLocale)(Math.round(coarseTotalBp)),
32
+ " bp")));
33
+ });
34
+ exports.default = HeaderSearchBoxes;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { LinearComparativeViewModel } from '../model';
3
+ declare const LinearComparativeRenderArea: ({ model, }: {
4
+ model: LinearComparativeViewModel;
5
+ }) => React.JSX.Element;
6
+ export default LinearComparativeRenderArea;
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const mui_1 = require("tss-react/mui");
8
+ const mobx_react_1 = require("mobx-react");
9
+ const util_1 = require("@jbrowse/core/util");
10
+ const ui_1 = require("@jbrowse/core/ui");
11
+ const configuration_1 = require("@jbrowse/core/configuration");
12
+ const useStyles = (0, mui_1.makeStyles)()({
13
+ container: {
14
+ display: 'grid',
15
+ },
16
+ overlay: {
17
+ zIndex: 100,
18
+ gridArea: '1/1',
19
+ },
20
+ resizeHandle: {
21
+ height: 4,
22
+ background: '#ccc',
23
+ },
24
+ });
25
+ function View({ view }) {
26
+ const { pluginManager } = (0, util_1.getEnv)(view);
27
+ const { ReactComponent } = pluginManager.getViewType(view.type);
28
+ return react_1.default.createElement(ReactComponent, { model: view });
29
+ }
30
+ const LinearComparativeRenderArea = (0, mobx_react_1.observer)(function ({ model, }) {
31
+ const { classes } = useStyles();
32
+ const { views, levels } = model;
33
+ const RenderList = [
34
+ react_1.default.createElement(View, { key: views[0].id, view: views[0] }),
35
+ ];
36
+ for (let i = 1; i < views.length; i++) {
37
+ const view = views[i];
38
+ const level = levels[i - 1];
39
+ RenderList.push(react_1.default.createElement(react_1.default.Fragment, { key: view.id },
40
+ react_1.default.createElement("div", { className: classes.container },
41
+ react_1.default.createElement(Overlays, { model: model, level: i - 1 })),
42
+ react_1.default.createElement(ui_1.ResizeHandle, { onDrag: n => level === null || level === void 0 ? void 0 : level.setHeight(level.height + n), className: classes.resizeHandle }),
43
+ react_1.default.createElement(View, { view: view })));
44
+ }
45
+ return react_1.default.createElement("div", { className: classes.container }, RenderList);
46
+ });
47
+ const Overlays = (0, mobx_react_1.observer)(function ({ model, level, }) {
48
+ var _a;
49
+ const { classes } = useStyles();
50
+ return (react_1.default.createElement(react_1.default.Fragment, null, (_a = model.levels[level]) === null || _a === void 0 ? void 0 : _a.tracks.map(track => {
51
+ const [display] = track.displays;
52
+ const { RenderingComponent } = display;
53
+ const trackId = (0, configuration_1.getConf)(track, 'trackId');
54
+ return RenderingComponent ? (react_1.default.createElement("div", { className: classes.overlay, key: trackId, style: {
55
+ height: display.height,
56
+ overflow: 'hidden',
57
+ } },
58
+ react_1.default.createElement(RenderingComponent, { model: display }))) : null;
59
+ })));
60
+ });
61
+ exports.default = LinearComparativeRenderArea;
@@ -1,8 +1,6 @@
1
1
  import React from 'react';
2
2
  import { LinearComparativeViewModel } from '../model';
3
- type LCV = LinearComparativeViewModel;
4
- declare const LinearComparativeView: (props: {
5
- ExtraButtons?: React.ReactNode;
6
- model: LCV;
3
+ declare const LinearComparativeView: ({ model, }: {
4
+ model: LinearComparativeViewModel;
7
5
  }) => React.JSX.Element;
8
6
  export default LinearComparativeView;
@@ -6,29 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const react_1 = __importDefault(require("react"));
7
7
  const mui_1 = require("tss-react/mui");
8
8
  const mobx_react_1 = require("mobx-react");
9
- const configuration_1 = require("@jbrowse/core/configuration");
10
- const util_1 = require("@jbrowse/core/util");
11
- const ui_1 = require("@jbrowse/core/ui");
12
9
  const Rubberband_1 = __importDefault(require("./Rubberband"));
13
10
  const Header_1 = __importDefault(require("./Header"));
11
+ const LinearComparativeRenderArea_1 = __importDefault(require("./LinearComparativeRenderArea"));
14
12
  const useStyles = (0, mui_1.makeStyles)()(theme => ({
15
- container: {
16
- display: 'grid',
17
- },
18
- overlay: {
19
- zIndex: 100,
20
- gridArea: '1/1',
21
- },
22
- content: {
23
- gridArea: '1/1',
24
- position: 'relative',
25
- },
26
- grid: {
27
- display: 'grid',
28
- },
29
- relative: {
30
- position: 'relative',
31
- },
32
13
  // this helps keep the vertical guide inside the parent view container,
33
14
  // similar style exists in the single LGV's trackscontainer
34
15
  rubberbandContainer: {
@@ -44,56 +25,11 @@ const useStyles = (0, mui_1.makeStyles)()(theme => ({
44
25
  },
45
26
  },
46
27
  }));
47
- const Overlays = (0, mobx_react_1.observer)(({ model }) => {
28
+ const LinearComparativeView = (0, mobx_react_1.observer)(function ({ model, }) {
48
29
  const { classes } = useStyles();
49
- return (react_1.default.createElement(react_1.default.Fragment, null, model.tracks.map(track => {
50
- const [display] = track.displays;
51
- const { RenderingComponent } = display;
52
- const trackId = (0, configuration_1.getConf)(track, 'trackId');
53
- return RenderingComponent ? (react_1.default.createElement("div", { className: classes.overlay, key: trackId, style: {
54
- height: model.middleComparativeHeight,
55
- overflow: 'hidden',
56
- } },
57
- react_1.default.createElement(RenderingComponent, { model: display }))) : null;
58
- })));
59
- });
60
- // The comparative is in the middle of the views
61
- const MiddleComparativeView = (0, mobx_react_1.observer)(({ model }) => {
62
- const { classes } = useStyles();
63
- const { views } = model;
64
- const { pluginManager } = (0, util_1.getEnv)(model);
65
- const { ReactComponent } = pluginManager.getViewType(views[0].type);
66
30
  return (react_1.default.createElement("div", { className: classes.rubberbandContainer },
67
31
  react_1.default.createElement(Header_1.default, { model: model }),
68
32
  react_1.default.createElement(Rubberband_1.default, { model: model, ControlComponent: react_1.default.createElement("div", { className: classes.rubberbandDiv }) }),
69
- react_1.default.createElement("div", { className: classes.container },
70
- react_1.default.createElement(ReactComponent, { model: views[0] }),
71
- react_1.default.createElement("div", { className: classes.grid },
72
- react_1.default.createElement(Overlays, { model: model })),
73
- react_1.default.createElement(ui_1.ResizeHandle, { onDrag: n => model.setMiddleComparativeHeight(model.middleComparativeHeight + n), style: {
74
- height: 4,
75
- background: '#ccc',
76
- } }),
77
- react_1.default.createElement(ReactComponent, { model: views[1] }))));
78
- });
79
- const OverlayComparativeView = (0, mobx_react_1.observer)(({ model }) => {
80
- const { classes } = useStyles();
81
- const { views } = model;
82
- const { pluginManager } = (0, util_1.getEnv)(model);
83
- return (react_1.default.createElement("div", { className: classes.rubberbandContainer },
84
- react_1.default.createElement(Header_1.default, { model: model }),
85
- react_1.default.createElement(Rubberband_1.default, { model: model, ControlComponent: react_1.default.createElement("div", { className: classes.rubberbandDiv }) }),
86
- react_1.default.createElement("div", { className: classes.container },
87
- react_1.default.createElement("div", { className: classes.content },
88
- react_1.default.createElement("div", { className: classes.relative }, views.map(view => {
89
- const { ReactComponent } = pluginManager.getViewType(view.type);
90
- return react_1.default.createElement(ReactComponent, { key: view.id, model: view });
91
- })),
92
- react_1.default.createElement(Overlays, { model: model })))));
93
- });
94
- const LinearComparativeView = (0, mobx_react_1.observer)(function (props) {
95
- const { model } = props;
96
- const middle = model.tracks.some(({ displays }) => displays.some((d) => (0, configuration_1.getConf)(d, 'middle')));
97
- return middle ? (react_1.default.createElement(MiddleComparativeView, { ...props })) : (react_1.default.createElement(OverlayComparativeView, { ...props }));
33
+ react_1.default.createElement(LinearComparativeRenderArea_1.default, { model: model })));
98
34
  });
99
35
  exports.default = LinearComparativeView;
@@ -168,7 +168,7 @@ const LinearComparativeRubberband = (0, mobx_react_1.observer)(function Rubberba
168
168
  react_1.default.createElement("div", { ref: controlsRef, className: classes.rubberbandControl, onMouseDown: mouseDown, onMouseOut: mouseOut, onMouseMove: mouseMove }, ControlComponent)));
169
169
  }
170
170
  const right = anchorPosition ? anchorPosition.offsetX : currentX || 0;
171
- const left = right < startX ? right : startX;
171
+ const left = Math.min(right, startX);
172
172
  const width = Math.abs(right - startX);
173
173
  const { views } = model;
174
174
  const leftBpOffset = views.map(view => view.pxToBp(left));
@@ -34,6 +34,9 @@ function LinearComparativeViewF(pluginManager) {
34
34
  pluginManager.addViewType(() => {
35
35
  return new ViewType_1.default({
36
36
  name: 'LinearComparativeView',
37
+ viewMetadata: {
38
+ hiddenFromGUI: true,
39
+ },
37
40
  displayName: 'Linear comparative view',
38
41
  stateModel: (0, model_1.default)(pluginManager),
39
42
  ReactComponent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./components/LinearComparativeView')))),