@jbrowse/plugin-breakpoint-split-view 2.18.0 → 3.0.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 (59) hide show
  1. package/dist/BreakpointAlignmentsFeatureDetail/BreakpointAlignmentsFeatureDetail.d.ts +1 -2
  2. package/dist/BreakpointAlignmentsFeatureDetail/BreakpointAlignmentsFeatureDetail.js +2 -9
  3. package/dist/BreakpointAlignmentsFeatureDetail/index.js +17 -7
  4. package/dist/BreakpointSplitView/components/AlignmentConnections.d.ts +2 -3
  5. package/dist/BreakpointSplitView/components/AlignmentConnections.js +91 -113
  6. package/dist/BreakpointSplitView/components/Breakends.d.ts +2 -3
  7. package/dist/BreakpointSplitView/components/Breakends.js +67 -89
  8. package/dist/BreakpointSplitView/components/BreakpointSplitView.d.ts +1 -2
  9. package/dist/BreakpointSplitView/components/BreakpointSplitView.js +12 -16
  10. package/dist/BreakpointSplitView/components/BreakpointSplitViewOverlay.d.ts +1 -2
  11. package/dist/BreakpointSplitView/components/BreakpointSplitViewOverlay.js +9 -31
  12. package/dist/BreakpointSplitView/components/ExportSvgDialog.d.ts +2 -3
  13. package/dist/BreakpointSplitView/components/ExportSvgDialog.js +34 -73
  14. package/dist/BreakpointSplitView/components/Overlay.d.ts +2 -3
  15. package/dist/BreakpointSplitView/components/Overlay.js +7 -6
  16. package/dist/BreakpointSplitView/components/PairedFeatures.d.ts +2 -3
  17. package/dist/BreakpointSplitView/components/PairedFeatures.js +47 -69
  18. package/dist/BreakpointSplitView/components/Translocations.d.ts +2 -3
  19. package/dist/BreakpointSplitView/components/Translocations.js +57 -79
  20. package/dist/BreakpointSplitView/index.js +17 -7
  21. package/dist/BreakpointSplitView/model.d.ts +19 -46
  22. package/dist/BreakpointSplitView/model.js +46 -64
  23. package/dist/BreakpointSplitView/svgcomponents/SVGBackground.d.ts +1 -2
  24. package/dist/BreakpointSplitView/svgcomponents/SVGBackground.js +2 -5
  25. package/dist/BreakpointSplitView/svgcomponents/SVGBreakpointSplitView.d.ts +2 -1
  26. package/dist/BreakpointSplitView/svgcomponents/SVGBreakpointSplitView.js +2 -23
  27. package/dist/BreakpointSplitView/types.d.ts +22 -0
  28. package/dist/BreakpointSplitView/types.js +2 -0
  29. package/dist/BreakpointSplitView/util.d.ts +11 -1
  30. package/dist/BreakpointSplitView/util.js +34 -0
  31. package/esm/BreakpointAlignmentsFeatureDetail/BreakpointAlignmentsFeatureDetail.d.ts +1 -2
  32. package/esm/BreakpointAlignmentsFeatureDetail/BreakpointAlignmentsFeatureDetail.js +2 -6
  33. package/esm/BreakpointSplitView/components/AlignmentConnections.d.ts +2 -3
  34. package/esm/BreakpointSplitView/components/AlignmentConnections.js +91 -90
  35. package/esm/BreakpointSplitView/components/Breakends.d.ts +2 -3
  36. package/esm/BreakpointSplitView/components/Breakends.js +67 -66
  37. package/esm/BreakpointSplitView/components/BreakpointSplitView.d.ts +1 -2
  38. package/esm/BreakpointSplitView/components/BreakpointSplitView.js +12 -16
  39. package/esm/BreakpointSplitView/components/BreakpointSplitViewOverlay.d.ts +1 -2
  40. package/esm/BreakpointSplitView/components/BreakpointSplitViewOverlay.js +9 -8
  41. package/esm/BreakpointSplitView/components/ExportSvgDialog.d.ts +2 -3
  42. package/esm/BreakpointSplitView/components/ExportSvgDialog.js +34 -50
  43. package/esm/BreakpointSplitView/components/Overlay.d.ts +2 -3
  44. package/esm/BreakpointSplitView/components/Overlay.js +7 -6
  45. package/esm/BreakpointSplitView/components/PairedFeatures.d.ts +2 -3
  46. package/esm/BreakpointSplitView/components/PairedFeatures.js +47 -46
  47. package/esm/BreakpointSplitView/components/Translocations.d.ts +2 -3
  48. package/esm/BreakpointSplitView/components/Translocations.js +57 -56
  49. package/esm/BreakpointSplitView/model.d.ts +19 -46
  50. package/esm/BreakpointSplitView/model.js +26 -53
  51. package/esm/BreakpointSplitView/svgcomponents/SVGBackground.d.ts +1 -2
  52. package/esm/BreakpointSplitView/svgcomponents/SVGBackground.js +2 -2
  53. package/esm/BreakpointSplitView/svgcomponents/SVGBreakpointSplitView.d.ts +2 -1
  54. package/esm/BreakpointSplitView/svgcomponents/SVGBreakpointSplitView.js +2 -23
  55. package/esm/BreakpointSplitView/types.d.ts +22 -0
  56. package/esm/BreakpointSplitView/types.js +1 -0
  57. package/esm/BreakpointSplitView/util.d.ts +11 -1
  58. package/esm/BreakpointSplitView/util.js +32 -1
  59. package/package.json +10 -10
@@ -1,41 +1,16 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
3
  exports.default = ExportSvgDialog;
27
- const react_1 = __importStar(require("react"));
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
28
6
  const ui_1 = require("@jbrowse/core/ui");
29
7
  const util_1 = require("@jbrowse/core/util");
30
8
  const material_1 = require("@mui/material");
31
9
  function LoadingMessage() {
32
- return (react_1.default.createElement("div", null,
33
- react_1.default.createElement(material_1.CircularProgress, { size: 20, style: { marginRight: 20 } }),
34
- react_1.default.createElement(material_1.Typography, { display: "inline" }, "Creating SVG")));
10
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(material_1.CircularProgress, { size: 20, style: { marginRight: 20 } }), (0, jsx_runtime_1.jsx)(material_1.Typography, { display: "inline", children: "Creating SVG" })] }));
35
11
  }
36
12
  function TextField2({ children, ...rest }) {
37
- return (react_1.default.createElement("div", null,
38
- react_1.default.createElement(material_1.TextField, { ...rest }, children)));
13
+ return ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(material_1.TextField, { ...rest, children: children }) }));
39
14
  }
40
15
  function useSvgLocal(key, val) {
41
16
  return (0, util_1.useLocalStorage)(`svg-${key}`, val);
@@ -49,48 +24,34 @@ function ExportSvgDialog({ model, handleClose, }) {
49
24
  const [filename, setFilename] = useSvgLocal('file', 'jbrowse.svg');
50
25
  const [trackLabels, setTrackLabels] = useSvgLocal('tracklabels', 'offset');
51
26
  const [themeName, setThemeName] = useSvgLocal('theme', session.themeName || 'default');
52
- return (react_1.default.createElement(ui_1.Dialog, { open: true, onClose: handleClose, title: "Export SVG" },
53
- react_1.default.createElement(material_1.DialogContent, null,
54
- error ? (react_1.default.createElement(ui_1.ErrorMessage, { error: error })) : loading ? (react_1.default.createElement(LoadingMessage, null)) : null,
55
- react_1.default.createElement(TextField2, { helperText: "filename", value: filename, onChange: event => {
56
- setFilename(event.target.value);
57
- } }),
58
- react_1.default.createElement(TextField2, { select: true, label: "Track label positioning", variant: "outlined", style: { width: 150 }, value: trackLabels, onChange: event => {
59
- setTrackLabels(event.target.value);
60
- } },
61
- react_1.default.createElement(material_1.MenuItem, { value: "offset" }, "Offset"),
62
- react_1.default.createElement(material_1.MenuItem, { value: "overlay" }, "Overlay"),
63
- react_1.default.createElement(material_1.MenuItem, { value: "left" }, "Left"),
64
- react_1.default.createElement(material_1.MenuItem, { value: "none" }, "None")),
65
- react_1.default.createElement("br", null),
66
- session.allThemes ? (react_1.default.createElement(TextField2, { select: true, label: "Theme", variant: "outlined", value: themeName, onChange: event => {
67
- setThemeName(event.target.value);
68
- } }, Object.entries(session.allThemes()).map(([key, val]) => (react_1.default.createElement(material_1.MenuItem, { key: key, value: key }, val.name || '(Unknown name)'))))) : null,
69
- offscreenCanvas ? (react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Checkbox, { checked: rasterizeLayers, onChange: () => {
70
- setRasterizeLayers(val => !val);
71
- } }), label: "Rasterize canvas based tracks? File may be much larger if this is turned off" })) : (react_1.default.createElement(material_1.Typography, null, "Note: rasterizing layers not yet supported in this browser, so SVG size may be large"))),
72
- react_1.default.createElement(material_1.DialogActions, null,
73
- react_1.default.createElement(material_1.Button, { variant: "contained", color: "secondary", onClick: () => {
74
- handleClose();
75
- } }, "Cancel"),
76
- react_1.default.createElement(material_1.Button, { variant: "contained", color: "primary", type: "submit", onClick: async () => {
77
- setLoading(true);
78
- setError(undefined);
79
- try {
80
- await model.exportSvg({
81
- rasterizeLayers,
82
- filename,
83
- trackLabels,
84
- themeName,
85
- });
86
- handleClose();
87
- }
88
- catch (e) {
89
- console.error(e);
90
- setError(e);
91
- }
92
- finally {
93
- setLoading(false);
94
- }
95
- } }, "Submit"))));
27
+ return ((0, jsx_runtime_1.jsxs)(ui_1.Dialog, { open: true, onClose: handleClose, title: "Export SVG", children: [(0, jsx_runtime_1.jsxs)(material_1.DialogContent, { children: [error ? ((0, jsx_runtime_1.jsx)(ui_1.ErrorMessage, { error: error })) : loading ? ((0, jsx_runtime_1.jsx)(LoadingMessage, {})) : null, (0, jsx_runtime_1.jsx)(TextField2, { helperText: "filename", value: filename, onChange: event => {
28
+ setFilename(event.target.value);
29
+ } }), (0, jsx_runtime_1.jsxs)(TextField2, { select: true, label: "Track label positioning", variant: "outlined", style: { width: 150 }, value: trackLabels, onChange: event => {
30
+ setTrackLabels(event.target.value);
31
+ }, children: [(0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: "offset", children: "Offset" }), (0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: "overlay", children: "Overlay" }), (0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: "left", children: "Left" }), (0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: "none", children: "None" })] }), (0, jsx_runtime_1.jsx)("br", {}), session.allThemes ? ((0, jsx_runtime_1.jsx)(TextField2, { select: true, label: "Theme", variant: "outlined", value: themeName, onChange: event => {
32
+ setThemeName(event.target.value);
33
+ }, children: Object.entries(session.allThemes()).map(([key, val]) => ((0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: key, children: val.name || '(Unknown name)' }, key))) })) : null, offscreenCanvas ? ((0, jsx_runtime_1.jsx)(material_1.FormControlLabel, { control: (0, jsx_runtime_1.jsx)(material_1.Checkbox, { checked: rasterizeLayers, onChange: () => {
34
+ setRasterizeLayers(val => !val);
35
+ } }), label: "Rasterize canvas based tracks? File may be much larger if this is turned off" })) : ((0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Note: rasterizing layers not yet supported in this browser, so SVG size may be large" }))] }), (0, jsx_runtime_1.jsxs)(material_1.DialogActions, { children: [(0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", color: "secondary", onClick: () => {
36
+ handleClose();
37
+ }, children: "Cancel" }), (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", color: "primary", type: "submit", onClick: async () => {
38
+ setLoading(true);
39
+ setError(undefined);
40
+ try {
41
+ await model.exportSvg({
42
+ rasterizeLayers,
43
+ filename,
44
+ trackLabels,
45
+ themeName,
46
+ });
47
+ handleClose();
48
+ }
49
+ catch (e) {
50
+ console.error(e);
51
+ setError(e);
52
+ }
53
+ finally {
54
+ setLoading(false);
55
+ }
56
+ }, children: "Submit" })] })] }));
96
57
  }
@@ -1,9 +1,8 @@
1
- import React from 'react';
2
1
  import type { BreakpointViewModel } from '../model';
3
2
  declare const Overlay: (props: {
4
- parentRef: React.RefObject<SVGSVGElement>;
3
+ parentRef: React.RefObject<SVGSVGElement | null>;
5
4
  model: BreakpointViewModel;
6
5
  trackId: string;
7
6
  getTrackYPosOverride?: (trackId: string, level: number) => number;
8
- }) => React.JSX.Element | null;
7
+ }) => import("react/jsx-runtime").JSX.Element | null;
9
8
  export default Overlay;
@@ -3,21 +3,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const react_1 = __importDefault(require("react"));
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
7
  const mobx_react_1 = require("mobx-react");
8
8
  const AlignmentConnections_1 = __importDefault(require("./AlignmentConnections"));
9
9
  const Breakends_1 = __importDefault(require("./Breakends"));
10
10
  const PairedFeatures_1 = __importDefault(require("./PairedFeatures"));
11
11
  const Translocations_1 = __importDefault(require("./Translocations"));
12
12
  const Overlay = (0, mobx_react_1.observer)(function (props) {
13
- var _a, _b;
13
+ var _a;
14
14
  const { model, trackId } = props;
15
15
  const tracks = model.getMatchedTracks(trackId);
16
- if (((_a = tracks[0]) === null || _a === void 0 ? void 0 : _a.type) === 'AlignmentsTrack') {
17
- return react_1.default.createElement(AlignmentConnections_1.default, { ...props });
16
+ const type = (_a = tracks[0]) === null || _a === void 0 ? void 0 : _a.type;
17
+ if (type === 'AlignmentsTrack') {
18
+ return (0, jsx_runtime_1.jsx)(AlignmentConnections_1.default, { ...props });
18
19
  }
19
- else if (((_b = tracks[0]) === null || _b === void 0 ? void 0 : _b.type) === 'VariantTrack') {
20
- return model.hasTranslocations(trackId) ? (react_1.default.createElement(Translocations_1.default, { ...props })) : model.hasPairedFeatures(trackId) ? (react_1.default.createElement(PairedFeatures_1.default, { ...props })) : (react_1.default.createElement(Breakends_1.default, { ...props }));
20
+ else if (type === 'VariantTrack') {
21
+ return model.hasTranslocations(trackId) ? ((0, jsx_runtime_1.jsx)(Translocations_1.default, { ...props })) : model.hasPairedFeatures(trackId) ? ((0, jsx_runtime_1.jsx)(PairedFeatures_1.default, { ...props })) : ((0, jsx_runtime_1.jsx)(Breakends_1.default, { ...props }));
21
22
  }
22
23
  else {
23
24
  return null;
@@ -1,9 +1,8 @@
1
- import React from 'react';
2
1
  import type { BreakpointViewModel } from '../model';
3
2
  declare const PairedFeatures: ({ model, trackId, parentRef: ref, getTrackYPosOverride, }: {
4
3
  model: BreakpointViewModel;
5
4
  trackId: string;
6
- parentRef: React.RefObject<SVGSVGElement>;
5
+ parentRef: React.RefObject<SVGSVGElement | null>;
7
6
  getTrackYPosOverride?: (trackId: string, level: number) => number;
8
- }) => React.JSX.Element | null;
7
+ }) => import("react/jsx-runtime").JSX.Element | null;
9
8
  export default PairedFeatures;
@@ -1,29 +1,7 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
- const react_1 = __importStar(require("react"));
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const react_1 = require("react");
27
5
  const util_1 = require("@jbrowse/core/util");
28
6
  const mobx_react_1 = require("mobx-react");
29
7
  const mobx_state_tree_1 = require("mobx-state-tree");
@@ -31,7 +9,7 @@ const util_2 = require("./util");
31
9
  const util_3 = require("../util");
32
10
  const [LEFT] = [0, 1, 2, 3];
33
11
  const PairedFeatures = (0, mobx_react_1.observer)(function ({ model, trackId, parentRef: ref, getTrackYPosOverride, }) {
34
- const { views } = model;
12
+ const { interactiveOverlay, views } = model;
35
13
  const session = (0, util_1.getSession)(model);
36
14
  const { assemblyManager } = session;
37
15
  const totalFeatures = model.getTrackFeatures(trackId);
@@ -48,50 +26,50 @@ const PairedFeatures = (0, mobx_react_1.observer)(function ({ model, trackId, pa
48
26
  const rect = ref.current.getBoundingClientRect();
49
27
  yoff = rect.top;
50
28
  }
51
- return (react_1.default.createElement("g", { stroke: "green", strokeWidth: 5, fill: "none", "data-testid": layoutMatches.length ? `${trackId}-loaded` : trackId }, layoutMatches.map(chunk => {
52
- const ret = [];
53
- for (let i = 0; i < chunk.length - 1; i += 1) {
54
- const { layout: c1, feature: f1, level: level1 } = chunk[i];
55
- const { layout: c2, feature: f2, level: level2 } = chunk[i + 1];
56
- const id = f1.id();
57
- if (!c1 || !c2) {
58
- return null;
59
- }
60
- const f1origref = f1.get('refName');
61
- const f2origref = f2.get('refName');
62
- const f1ref = assembly.getCanonicalRefName(f1origref);
63
- const f2ref = assembly.getCanonicalRefName(f2origref);
64
- if (!f1ref || !f2ref) {
65
- throw new Error(`unable to find ref for ${f1ref || f2ref}`);
29
+ return ((0, jsx_runtime_1.jsx)("g", { stroke: "green", strokeWidth: 5, fill: "none", "data-testid": layoutMatches.length ? `${trackId}-loaded` : trackId, children: layoutMatches.map(chunk => {
30
+ const ret = [];
31
+ for (let i = 0; i < chunk.length - 1; i += 1) {
32
+ const { layout: c1, feature: f1, level: level1 } = chunk[i];
33
+ const { layout: c2, feature: f2, level: level2 } = chunk[i + 1];
34
+ const id = f1.id();
35
+ if (!c1 || !c2) {
36
+ return null;
37
+ }
38
+ const f1origref = f1.get('refName');
39
+ const f2origref = f2.get('refName');
40
+ const f1ref = assembly.getCanonicalRefName(f1origref);
41
+ const f2ref = assembly.getCanonicalRefName(f2origref);
42
+ if (!f1ref || !f2ref) {
43
+ throw new Error(`unable to find ref for ${f1ref || f2ref}`);
44
+ }
45
+ const x1 = (0, util_3.getPxFromCoordinate)(views[level1], f1ref, c1[LEFT]);
46
+ const x2 = (0, util_3.getPxFromCoordinate)(views[level2], f2ref, c2[LEFT]);
47
+ const tracks = views.map(v => v.getTrack(trackId));
48
+ const y1 = (0, util_3.yPos)(trackId, level1, views, tracks, c1, getTrackYPosOverride) -
49
+ yoff;
50
+ const y2 = (0, util_3.yPos)(trackId, level2, views, tracks, c2, getTrackYPosOverride) -
51
+ yoff;
52
+ const path = [
53
+ 'M',
54
+ x1,
55
+ y1,
56
+ 'L',
57
+ x2,
58
+ y2,
59
+ ].join(' ');
60
+ ret.push((0, jsx_runtime_1.jsx)("path", { d: path, "data-testid": "r2", pointerEvents: interactiveOverlay ? 'auto' : undefined, strokeWidth: id === mouseoverElt ? 10 : 5, onClick: () => {
61
+ var _a, _b, _c;
62
+ const featureWidget = (_a = session.addWidget) === null || _a === void 0 ? void 0 : _a.call(session, 'VariantFeatureWidget', 'variantFeature', {
63
+ featureData: (_b = totalFeatures.get(id)) === null || _b === void 0 ? void 0 : _b.toJSON(),
64
+ });
65
+ (_c = session.showWidget) === null || _c === void 0 ? void 0 : _c.call(session, featureWidget);
66
+ }, onMouseOver: () => {
67
+ setMouseoverElt(id);
68
+ }, onMouseOut: () => {
69
+ setMouseoverElt(undefined);
70
+ } }, JSON.stringify(path)));
66
71
  }
67
- const x1 = (0, util_3.getPxFromCoordinate)(views[level1], f1ref, c1[LEFT]);
68
- const x2 = (0, util_3.getPxFromCoordinate)(views[level2], f2ref, c2[LEFT]);
69
- const tracks = views.map(v => v.getTrack(trackId));
70
- const y1 = (0, util_3.yPos)(trackId, level1, views, tracks, c1, getTrackYPosOverride) -
71
- yoff;
72
- const y2 = (0, util_3.yPos)(trackId, level2, views, tracks, c2, getTrackYPosOverride) -
73
- yoff;
74
- const path = [
75
- 'M',
76
- x1,
77
- y1,
78
- 'L',
79
- x2,
80
- y2,
81
- ].join(' ');
82
- ret.push(react_1.default.createElement("path", { d: path, "data-testid": "r2", key: JSON.stringify(path), strokeWidth: id === mouseoverElt ? 10 : 5, onClick: () => {
83
- var _a, _b, _c;
84
- const featureWidget = (_a = session.addWidget) === null || _a === void 0 ? void 0 : _a.call(session, 'VariantFeatureWidget', 'variantFeature', {
85
- featureData: (_b = totalFeatures.get(id)) === null || _b === void 0 ? void 0 : _b.toJSON(),
86
- });
87
- (_c = session.showWidget) === null || _c === void 0 ? void 0 : _c.call(session, featureWidget);
88
- }, onMouseOver: () => {
89
- setMouseoverElt(id);
90
- }, onMouseOut: () => {
91
- setMouseoverElt(undefined);
92
- } }));
93
- }
94
- return ret;
95
- })));
72
+ return ret;
73
+ }) }));
96
74
  });
97
75
  exports.default = PairedFeatures;
@@ -1,9 +1,8 @@
1
- import React from 'react';
2
1
  import type { BreakpointViewModel } from '../model';
3
2
  declare const Translocations: ({ model, trackId, parentRef: ref, getTrackYPosOverride, }: {
4
3
  model: BreakpointViewModel;
5
4
  trackId: string;
6
- parentRef: React.RefObject<SVGSVGElement>;
5
+ parentRef: React.RefObject<SVGSVGElement | null>;
7
6
  getTrackYPosOverride?: (trackId: string, level: number) => number;
8
- }) => React.JSX.Element | null;
7
+ }) => import("react/jsx-runtime").JSX.Element | null;
9
8
  export default Translocations;
@@ -1,29 +1,7 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
- const react_1 = __importStar(require("react"));
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const react_1 = require("react");
27
5
  const util_1 = require("@jbrowse/core/util");
28
6
  const mobx_react_1 = require("mobx-react");
29
7
  const mobx_state_tree_1 = require("mobx-state-tree");
@@ -42,7 +20,7 @@ function str(s) {
42
20
  }
43
21
  }
44
22
  const Translocations = (0, mobx_react_1.observer)(function ({ model, trackId, parentRef: ref, getTrackYPosOverride, }) {
45
- const { views } = model;
23
+ const { interactiveOverlay, views } = model;
46
24
  const session = (0, util_1.getSession)(model);
47
25
  const { assemblyManager } = session;
48
26
  const totalFeatures = model.getTrackFeatures(trackId);
@@ -62,60 +40,60 @@ const Translocations = (0, mobx_react_1.observer)(function ({ model, trackId, pa
62
40
  if (views.length < 2) {
63
41
  return null;
64
42
  }
65
- return (react_1.default.createElement("g", { fill: "none", stroke: "green", strokeWidth: 5, "data-testid": layoutMatches.length ? `${trackId}-loaded` : trackId }, layoutMatches.map(chunk => {
66
- var _a, _b;
67
- const ret = [];
68
- for (const { layout: c1, feature: f1, level: level1 } of chunk) {
69
- const level2 = level1 === 0 ? 1 : 0;
70
- const id = f1.id();
71
- if (!c1) {
72
- return null;
73
- }
74
- const info = f1.get('INFO');
75
- const chr2 = info.CHR2[0];
76
- const end2 = info.END[0];
77
- const res = (_b = (_a = info.STRANDS) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.split('');
78
- const [myDirection, mateDirection] = res !== null && res !== void 0 ? res : ['.', '.'];
79
- const r = (0, util_3.getPxFromCoordinate)(views[level2], chr2, end2);
80
- if (r) {
81
- const c2 = [r, 0, r + 1, 0];
82
- const x1 = (0, util_3.getPxFromCoordinate)(views[level1], f1.get('refName'), c1[LEFT]);
83
- const x2 = r;
84
- const reversed1 = views[level1].pxToBp(x1).reversed;
85
- const reversed2 = views[level2].pxToBp(x2).reversed;
86
- const tracks = views.map(v => v.getTrack(trackId));
87
- const y1 = (0, util_3.yPos)(trackId, level1, views, tracks, c1, getTrackYPosOverride) -
88
- yOffset;
89
- const y2 = (0, util_3.yPos)(trackId, level2, views, tracks, c2, getTrackYPosOverride) -
90
- yOffset;
91
- const path = [
92
- 'M',
93
- x1 - 20 * str(myDirection) * (reversed1 ? -1 : 1),
94
- y1,
95
- 'L',
96
- x1,
97
- y1,
98
- 'L',
99
- x2,
100
- y2,
101
- 'L',
102
- x2 - 20 * str(mateDirection) * (reversed2 ? -1 : 1),
103
- y2,
104
- ].join(' ');
105
- ret.push(react_1.default.createElement("path", { d: path, key: JSON.stringify(path), strokeWidth: id === mouseoverElt ? 10 : 5, onClick: () => {
106
- var _a, _b;
107
- const featureWidget = (_a = session.addWidget) === null || _a === void 0 ? void 0 : _a.call(session, 'VariantFeatureWidget', 'variantFeature', {
108
- featureData: (totalFeatures.get(id) || { toJSON: () => { } }).toJSON(),
109
- });
110
- (_b = session.showWidget) === null || _b === void 0 ? void 0 : _b.call(session, featureWidget);
111
- }, onMouseOver: () => {
112
- setMouseoverElt(id);
113
- }, onMouseOut: () => {
114
- setMouseoverElt(undefined);
115
- } }));
43
+ return ((0, jsx_runtime_1.jsx)("g", { fill: "none", stroke: "green", strokeWidth: 5, "data-testid": layoutMatches.length ? `${trackId}-loaded` : trackId, children: layoutMatches.map(chunk => {
44
+ var _a, _b;
45
+ const ret = [];
46
+ for (const { layout: c1, feature: f1, level: level1 } of chunk) {
47
+ const level2 = level1 === 0 ? 1 : 0;
48
+ const id = f1.id();
49
+ if (!c1) {
50
+ return null;
51
+ }
52
+ const info = f1.get('INFO');
53
+ const chr2 = info.CHR2[0];
54
+ const end2 = info.END[0];
55
+ const res = (_b = (_a = info.STRANDS) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.split('');
56
+ const [myDirection, mateDirection] = res !== null && res !== void 0 ? res : ['.', '.'];
57
+ const r = (0, util_3.getPxFromCoordinate)(views[level2], chr2, end2);
58
+ if (r) {
59
+ const c2 = [r, 0, r + 1, 0];
60
+ const x1 = (0, util_3.getPxFromCoordinate)(views[level1], f1.get('refName'), c1[LEFT]);
61
+ const x2 = r;
62
+ const reversed1 = views[level1].pxToBp(x1).reversed;
63
+ const reversed2 = views[level2].pxToBp(x2).reversed;
64
+ const tracks = views.map(v => v.getTrack(trackId));
65
+ const y1 = (0, util_3.yPos)(trackId, level1, views, tracks, c1, getTrackYPosOverride) -
66
+ yOffset;
67
+ const y2 = (0, util_3.yPos)(trackId, level2, views, tracks, c2, getTrackYPosOverride) -
68
+ yOffset;
69
+ const path = [
70
+ 'M',
71
+ x1 - 20 * str(myDirection) * (reversed1 ? -1 : 1),
72
+ y1,
73
+ 'L',
74
+ x1,
75
+ y1,
76
+ 'L',
77
+ x2,
78
+ y2,
79
+ 'L',
80
+ x2 - 20 * str(mateDirection) * (reversed2 ? -1 : 1),
81
+ y2,
82
+ ].join(' ');
83
+ ret.push((0, jsx_runtime_1.jsx)("path", { d: path, pointerEvents: interactiveOverlay ? 'auto' : undefined, strokeWidth: id === mouseoverElt ? 10 : 5, onClick: () => {
84
+ var _a, _b;
85
+ const featureWidget = (_a = session.addWidget) === null || _a === void 0 ? void 0 : _a.call(session, 'VariantFeatureWidget', 'variantFeature', {
86
+ featureData: (totalFeatures.get(id) || { toJSON: () => { } }).toJSON(),
87
+ });
88
+ (_b = session.showWidget) === null || _b === void 0 ? void 0 : _b.call(session, featureWidget);
89
+ }, onMouseOver: () => {
90
+ setMouseoverElt(id);
91
+ }, onMouseOut: () => {
92
+ setMouseoverElt(undefined);
93
+ } }, JSON.stringify(path)));
94
+ }
116
95
  }
117
- }
118
- return ret;
119
- })));
96
+ return ret;
97
+ }) }));
120
98
  });
121
99
  exports.default = Translocations;
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
37
  };