@jbrowse/plugin-linear-genome-view 1.6.9 → 1.7.3
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.
- package/dist/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +13 -13
- package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js +232 -0
- package/dist/BaseLinearDisplay/components/Block.d.ts +15 -15
- package/dist/BaseLinearDisplay/components/Block.js +86 -0
- package/dist/BaseLinearDisplay/components/LinearBlocks.d.ts +12 -12
- package/dist/BaseLinearDisplay/components/LinearBlocks.js +110 -0
- package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.d.ts +4 -4
- package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +192 -0
- package/dist/BaseLinearDisplay/index.d.ts +5 -5
- package/dist/BaseLinearDisplay/index.js +41 -0
- package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +227 -230
- package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js +763 -0
- package/dist/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.d.ts +1 -1
- package/dist/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js +24 -0
- package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.d.ts +96 -96
- package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js +328 -0
- package/dist/LinearBareDisplay/configSchema.d.ts +2 -2
- package/dist/LinearBareDisplay/configSchema.js +19 -0
- package/dist/LinearBareDisplay/index.d.ts +2 -2
- package/dist/LinearBareDisplay/index.js +21 -0
- package/dist/LinearBareDisplay/index.test.js +33 -0
- package/dist/LinearBareDisplay/model.d.ts +192 -192
- package/dist/LinearBareDisplay/model.js +44 -0
- package/dist/LinearBasicDisplay/components/SetMaxHeight.d.ts +10 -10
- package/dist/LinearBasicDisplay/components/SetMaxHeight.js +94 -0
- package/dist/LinearBasicDisplay/configSchema.d.ts +2 -2
- package/dist/LinearBasicDisplay/configSchema.js +25 -0
- package/dist/LinearBasicDisplay/index.d.ts +2 -2
- package/dist/LinearBasicDisplay/index.js +23 -0
- package/dist/LinearBasicDisplay/model.d.ts +213 -213
- package/dist/LinearBasicDisplay/model.js +162 -0
- package/dist/LinearGenomeView/components/CenterLine.d.ts +14 -14
- package/dist/LinearGenomeView/components/CenterLine.js +80 -0
- package/dist/LinearGenomeView/components/ExportSvgDialog.d.ts +6 -6
- package/dist/LinearGenomeView/components/ExportSvgDialog.js +137 -0
- package/dist/LinearGenomeView/components/Header.d.ts +7 -7
- package/dist/LinearGenomeView/components/Header.js +144 -0
- package/dist/LinearGenomeView/components/HelpDialog.d.ts +5 -5
- package/dist/LinearGenomeView/components/HelpDialog.js +48 -0
- package/dist/LinearGenomeView/components/ImportForm.d.ts +7 -7
- package/dist/LinearGenomeView/components/ImportForm.js +330 -0
- package/dist/LinearGenomeView/components/LinearGenomeView.d.ts +7 -7
- package/dist/LinearGenomeView/components/LinearGenomeView.js +129 -0
- package/dist/LinearGenomeView/components/LinearGenomeView.test.js +234 -0
- package/dist/LinearGenomeView/components/LinearGenomeViewSvg.d.ts +4 -4
- package/dist/LinearGenomeView/components/LinearGenomeViewSvg.js +349 -0
- package/dist/LinearGenomeView/components/MiniControls.d.ts +6 -6
- package/dist/LinearGenomeView/components/MiniControls.js +83 -0
- package/dist/LinearGenomeView/components/OverviewRubberBand.d.ts +22 -22
- package/dist/LinearGenomeView/components/OverviewRubberBand.js +310 -0
- package/dist/LinearGenomeView/components/OverviewScaleBar.d.ts +132 -124
- package/dist/LinearGenomeView/components/OverviewScaleBar.js +403 -0
- package/dist/LinearGenomeView/components/RefNameAutocomplete.d.ts +21 -21
- package/dist/LinearGenomeView/components/RefNameAutocomplete.js +331 -0
- package/dist/LinearGenomeView/components/RubberBand.d.ts +9 -20
- package/dist/LinearGenomeView/components/RubberBand.js +309 -0
- package/dist/LinearGenomeView/components/Ruler.d.ts +27 -27
- package/dist/LinearGenomeView/components/Ruler.js +101 -0
- package/dist/LinearGenomeView/components/ScaleBar.d.ts +401 -401
- package/dist/LinearGenomeView/components/ScaleBar.js +184 -0
- package/dist/LinearGenomeView/components/ScaleBar.test.js +180 -0
- package/dist/LinearGenomeView/components/SearchBox.d.ts +8 -8
- package/dist/LinearGenomeView/components/SearchBox.js +201 -0
- package/dist/LinearGenomeView/components/SearchResultsDialog.d.ts +8 -8
- package/dist/LinearGenomeView/components/SearchResultsDialog.js +159 -0
- package/dist/LinearGenomeView/components/SequenceDialog.d.ts +8 -8
- package/dist/LinearGenomeView/components/SequenceDialog.js +304 -0
- package/dist/LinearGenomeView/components/TrackContainer.d.ts +9 -9
- package/dist/LinearGenomeView/components/TrackContainer.js +179 -0
- package/dist/LinearGenomeView/components/TrackLabel.d.ts +44 -44
- package/dist/LinearGenomeView/components/TrackLabel.js +165 -0
- package/dist/LinearGenomeView/components/TracksContainer.d.ts +10 -10
- package/dist/LinearGenomeView/components/TracksContainer.js +214 -0
- package/dist/LinearGenomeView/components/VerticalGuides.d.ts +9 -9
- package/dist/LinearGenomeView/components/VerticalGuides.js +116 -0
- package/dist/LinearGenomeView/components/ZoomControls.d.ts +7 -7
- package/dist/LinearGenomeView/components/ZoomControls.js +92 -0
- package/dist/LinearGenomeView/components/util.d.ts +2 -2
- package/dist/LinearGenomeView/components/util.js +16 -0
- package/dist/LinearGenomeView/index.d.ts +292 -292
- package/dist/LinearGenomeView/index.js +1418 -0
- package/dist/LinearGenomeView/index.test.js +1170 -0
- package/dist/LinearGenomeView/util.d.ts +14 -14
- package/dist/LinearGenomeView/util.js +93 -0
- package/dist/LinearGenomeView/util.test.js +78 -0
- package/dist/index.d.ts +565 -565
- package/dist/index.js +293 -6
- package/package.json +6 -9
- package/src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx +2 -0
- package/src/BaseLinearDisplay/models/serverSideRenderedBlock.ts +10 -8
- package/src/LinearBasicDisplay/components/SetMaxHeight.tsx +1 -1
- package/src/LinearBasicDisplay/model.ts +17 -18
- package/src/LinearGenomeView/components/Header.tsx +1 -1
- package/src/LinearGenomeView/components/ImportForm.tsx +10 -4
- package/src/LinearGenomeView/components/LinearGenomeView.test.js +1 -0
- package/src/LinearGenomeView/components/OverviewScaleBar.tsx +2 -2
- package/src/LinearGenomeView/components/RubberBand.tsx +14 -24
- package/src/LinearGenomeView/components/ScaleBar.test.tsx +1 -0
- package/src/LinearGenomeView/components/ScaleBar.tsx +3 -6
- package/src/LinearGenomeView/components/SequenceDialog.tsx +1 -1
- package/src/LinearGenomeView/components/TrackLabel.tsx +1 -1
- package/src/LinearGenomeView/components/__snapshots__/LinearGenomeView.test.js.snap +0 -4
- package/src/LinearGenomeView/index.tsx +2 -3
- package/dist/LinearBareDisplay/index.test.d.ts +0 -1
- package/dist/LinearGenomeView/components/LinearGenomeView.test.d.ts +0 -1
- package/dist/plugin-linear-genome-view.cjs.development.js +0 -8121
- package/dist/plugin-linear-genome-view.cjs.development.js.map +0 -1
- package/dist/plugin-linear-genome-view.cjs.production.min.js +0 -2
- package/dist/plugin-linear-genome-view.cjs.production.min.js.map +0 -1
- package/dist/plugin-linear-genome-view.esm.js +0 -8105
- package/dist/plugin-linear-genome-view.esm.js.map +0 -1
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
declare const _default: React.ForwardRefExoticComponent<{
|
|
3
|
-
track: import("mobx-state-tree").ModelInstanceTypeProps<{
|
|
4
|
-
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
5
|
-
type: import("mobx-state-tree").ISimpleType<string>;
|
|
6
|
-
configuration: import("mobx-state-tree").ITypeUnion<any, any, any>;
|
|
7
|
-
displays: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
|
|
8
|
-
}> & {
|
|
9
|
-
readonly rpcSessionId: any;
|
|
10
|
-
readonly name: any;
|
|
11
|
-
readonly textSearchAdapter: any;
|
|
12
|
-
readonly adapterType: any;
|
|
13
|
-
readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
|
|
14
|
-
readonly canConfigure: any;
|
|
15
|
-
} & {
|
|
16
|
-
activateConfigurationUI(): void;
|
|
17
|
-
showDisplay(displayId: string, initialSnapshot?: {}): void;
|
|
18
|
-
hideDisplay(displayId: string): number;
|
|
19
|
-
replaceDisplay(oldDisplayId: string, newDisplayId: string, initialSnapshot?: {}): void;
|
|
20
|
-
} & {
|
|
21
|
-
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
22
|
-
} & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
|
|
23
|
-
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
24
|
-
type: import("mobx-state-tree").ISimpleType<string>;
|
|
25
|
-
configuration: import("mobx-state-tree").ITypeUnion<any, any, any>;
|
|
26
|
-
displays: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
|
|
27
|
-
}, {
|
|
28
|
-
readonly rpcSessionId: any;
|
|
29
|
-
readonly name: any;
|
|
30
|
-
readonly textSearchAdapter: any;
|
|
31
|
-
readonly adapterType: any;
|
|
32
|
-
readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
|
|
33
|
-
readonly canConfigure: any;
|
|
34
|
-
} & {
|
|
35
|
-
activateConfigurationUI(): void;
|
|
36
|
-
showDisplay(displayId: string, initialSnapshot?: {}): void;
|
|
37
|
-
hideDisplay(displayId: string): number;
|
|
38
|
-
replaceDisplay(oldDisplayId: string, newDisplayId: string, initialSnapshot?: {}): void;
|
|
39
|
-
} & {
|
|
40
|
-
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
41
|
-
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
|
|
42
|
-
className?: string | undefined;
|
|
43
|
-
} & React.RefAttributes<unknown>>;
|
|
44
|
-
export default _default;
|
|
1
|
+
import React from 'react';
|
|
2
|
+
declare const _default: React.ForwardRefExoticComponent<{
|
|
3
|
+
track: import("mobx-state-tree").ModelInstanceTypeProps<{
|
|
4
|
+
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
5
|
+
type: import("mobx-state-tree").ISimpleType<string>;
|
|
6
|
+
configuration: import("mobx-state-tree").ITypeUnion<any, any, any>;
|
|
7
|
+
displays: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
|
|
8
|
+
}> & {
|
|
9
|
+
readonly rpcSessionId: any;
|
|
10
|
+
readonly name: any;
|
|
11
|
+
readonly textSearchAdapter: any;
|
|
12
|
+
readonly adapterType: any;
|
|
13
|
+
readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
|
|
14
|
+
readonly canConfigure: any;
|
|
15
|
+
} & {
|
|
16
|
+
activateConfigurationUI(): void;
|
|
17
|
+
showDisplay(displayId: string, initialSnapshot?: {} | undefined): void;
|
|
18
|
+
hideDisplay(displayId: string): number;
|
|
19
|
+
replaceDisplay(oldDisplayId: string, newDisplayId: string, initialSnapshot?: {} | undefined): void;
|
|
20
|
+
} & {
|
|
21
|
+
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
22
|
+
} & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
|
|
23
|
+
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
24
|
+
type: import("mobx-state-tree").ISimpleType<string>;
|
|
25
|
+
configuration: import("mobx-state-tree").ITypeUnion<any, any, any>;
|
|
26
|
+
displays: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
|
|
27
|
+
}, {
|
|
28
|
+
readonly rpcSessionId: any;
|
|
29
|
+
readonly name: any;
|
|
30
|
+
readonly textSearchAdapter: any;
|
|
31
|
+
readonly adapterType: any;
|
|
32
|
+
readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
|
|
33
|
+
readonly canConfigure: any;
|
|
34
|
+
} & {
|
|
35
|
+
activateConfigurationUI(): void;
|
|
36
|
+
showDisplay(displayId: string, initialSnapshot?: {} | undefined): void;
|
|
37
|
+
hideDisplay(displayId: string): number;
|
|
38
|
+
replaceDisplay(oldDisplayId: string, newDisplayId: string, initialSnapshot?: {} | undefined): void;
|
|
39
|
+
} & {
|
|
40
|
+
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
41
|
+
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
|
|
42
|
+
className?: string | undefined;
|
|
43
|
+
} & React.RefAttributes<unknown>>;
|
|
44
|
+
export default _default;
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
+
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireDefault(require("react"));
|
|
15
|
+
|
|
16
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
17
|
+
|
|
18
|
+
var _ui = require("@jbrowse/core/ui");
|
|
19
|
+
|
|
20
|
+
var _util = require("@jbrowse/core/util");
|
|
21
|
+
|
|
22
|
+
var _core = require("@material-ui/core");
|
|
23
|
+
|
|
24
|
+
var _MoreVert = _interopRequireDefault(require("@material-ui/icons/MoreVert"));
|
|
25
|
+
|
|
26
|
+
var _DragIndicator = _interopRequireDefault(require("@material-ui/icons/DragIndicator"));
|
|
27
|
+
|
|
28
|
+
var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
|
|
29
|
+
|
|
30
|
+
var _clsx = _interopRequireDefault(require("clsx"));
|
|
31
|
+
|
|
32
|
+
var _mobxReact = require("mobx-react");
|
|
33
|
+
|
|
34
|
+
// icons
|
|
35
|
+
var useStyles = (0, _core.makeStyles)(function (theme) {
|
|
36
|
+
return {
|
|
37
|
+
root: {
|
|
38
|
+
background: (0, _core.alpha)(theme.palette.background.paper, 0.8),
|
|
39
|
+
'&:hover': {
|
|
40
|
+
background: theme.palette.background.paper
|
|
41
|
+
},
|
|
42
|
+
transition: theme.transitions.create(['background'], {
|
|
43
|
+
duration: theme.transitions.duration.shortest
|
|
44
|
+
})
|
|
45
|
+
},
|
|
46
|
+
trackName: {
|
|
47
|
+
margin: '0 auto',
|
|
48
|
+
width: '90%',
|
|
49
|
+
fontSize: '0.8rem',
|
|
50
|
+
pointerEvents: 'none'
|
|
51
|
+
},
|
|
52
|
+
dragHandle: {
|
|
53
|
+
cursor: 'grab',
|
|
54
|
+
color: '#135560'
|
|
55
|
+
},
|
|
56
|
+
dragHandleIcon: {
|
|
57
|
+
display: 'inline-block',
|
|
58
|
+
verticalAlign: 'middle',
|
|
59
|
+
pointerEvents: 'none'
|
|
60
|
+
},
|
|
61
|
+
iconButton: {
|
|
62
|
+
padding: theme.spacing(1)
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
var TrackLabel = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
|
|
68
|
+
var _session$getTrackActi;
|
|
69
|
+
|
|
70
|
+
var classes = useStyles();
|
|
71
|
+
|
|
72
|
+
var _React$useState = _react["default"].useState(null),
|
|
73
|
+
_React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
|
|
74
|
+
anchorEl = _React$useState2[0],
|
|
75
|
+
setAnchorEl = _React$useState2[1];
|
|
76
|
+
|
|
77
|
+
var track = props.track,
|
|
78
|
+
className = props.className;
|
|
79
|
+
var view = (0, _util.getContainingView)(track);
|
|
80
|
+
var session = (0, _util.getSession)(track);
|
|
81
|
+
var trackConf = track.configuration;
|
|
82
|
+
var trackId = (0, _configuration.getConf)(track, 'trackId');
|
|
83
|
+
|
|
84
|
+
var handleClick = function handleClick(event) {
|
|
85
|
+
setAnchorEl(event.currentTarget);
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
var handleClose = function handleClose() {
|
|
89
|
+
setAnchorEl(null);
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
var onDragStart = function onDragStart(event) {
|
|
93
|
+
var target = event.target;
|
|
94
|
+
|
|
95
|
+
if (target.parentNode) {
|
|
96
|
+
event.dataTransfer.setDragImage(target.parentNode, 20, 20);
|
|
97
|
+
view.setDraggingTrackId(track.id);
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
var onDragEnd = function onDragEnd() {
|
|
102
|
+
view.setDraggingTrackId(undefined);
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
var trackName = (0, _configuration.getConf)(track, 'name');
|
|
106
|
+
|
|
107
|
+
if ((0, _configuration.getConf)(track, 'type') === 'ReferenceSequenceTrack') {
|
|
108
|
+
trackName = 'Reference Sequence';
|
|
109
|
+
session.assemblies.forEach(function (assembly) {
|
|
110
|
+
if (assembly.sequence === trackConf) {
|
|
111
|
+
trackName = "Reference Sequence (".concat((0, _configuration.readConfObject)(assembly, 'name'), ")");
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function handleMenuItemClick(_, callback) {
|
|
117
|
+
callback();
|
|
118
|
+
handleClose();
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
var items = [].concat((0, _toConsumableArray2["default"])(((_session$getTrackActi = session.getTrackActionMenuItems) === null || _session$getTrackActi === void 0 ? void 0 : _session$getTrackActi.call(session, trackConf)) || []), (0, _toConsumableArray2["default"])(track.trackMenuItems())).sort(function (a, b) {
|
|
122
|
+
return (b.priority || 0) - (a.priority || 0);
|
|
123
|
+
});
|
|
124
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_core.Paper, {
|
|
125
|
+
ref: ref,
|
|
126
|
+
className: (0, _clsx["default"])(className, classes.root)
|
|
127
|
+
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
128
|
+
draggable: true,
|
|
129
|
+
className: classes.dragHandle,
|
|
130
|
+
onDragStart: onDragStart,
|
|
131
|
+
onDragEnd: onDragEnd,
|
|
132
|
+
"data-testid": "dragHandle-".concat(view.id, "-").concat(trackId)
|
|
133
|
+
}, /*#__PURE__*/_react["default"].createElement(_DragIndicator["default"], {
|
|
134
|
+
className: classes.dragHandleIcon
|
|
135
|
+
})), /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
|
|
136
|
+
onClick: function onClick() {
|
|
137
|
+
return view.hideTrack(trackId);
|
|
138
|
+
},
|
|
139
|
+
className: classes.iconButton,
|
|
140
|
+
title: "close this track",
|
|
141
|
+
color: "secondary"
|
|
142
|
+
}, /*#__PURE__*/_react["default"].createElement(_Close["default"], null)), /*#__PURE__*/_react["default"].createElement(_core.Typography, {
|
|
143
|
+
variant: "body1",
|
|
144
|
+
component: "span",
|
|
145
|
+
className: classes.trackName
|
|
146
|
+
}, trackName), /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
|
|
147
|
+
"aria-controls": "simple-menu",
|
|
148
|
+
"aria-haspopup": "true",
|
|
149
|
+
onClick: handleClick,
|
|
150
|
+
className: classes.iconButton,
|
|
151
|
+
color: "secondary",
|
|
152
|
+
"data-testid": "track_menu_icon",
|
|
153
|
+
disabled: !items.length
|
|
154
|
+
}, /*#__PURE__*/_react["default"].createElement(_MoreVert["default"], null))), /*#__PURE__*/_react["default"].createElement(_ui.Menu, {
|
|
155
|
+
anchorEl: anchorEl,
|
|
156
|
+
onMenuItemClick: handleMenuItemClick,
|
|
157
|
+
open: Boolean(anchorEl),
|
|
158
|
+
onClose: handleClose,
|
|
159
|
+
menuItems: items
|
|
160
|
+
}));
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
var _default = (0, _mobxReact.observer)(TrackLabel);
|
|
164
|
+
|
|
165
|
+
exports["default"] = _default;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Instance } from 'mobx-state-tree';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { LinearGenomeViewStateModel } from '..';
|
|
4
|
-
declare type LGV = Instance<LinearGenomeViewStateModel>;
|
|
5
|
-
declare function TracksContainer({ children, model, }: {
|
|
6
|
-
children: React.ReactNode;
|
|
7
|
-
model: LGV;
|
|
8
|
-
}): JSX.Element;
|
|
9
|
-
declare const _default: typeof TracksContainer;
|
|
10
|
-
export default _default;
|
|
1
|
+
import { Instance } from 'mobx-state-tree';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { LinearGenomeViewStateModel } from '..';
|
|
4
|
+
declare type LGV = Instance<LinearGenomeViewStateModel>;
|
|
5
|
+
declare function TracksContainer({ children, model, }: {
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
model: LGV;
|
|
8
|
+
}): JSX.Element;
|
|
9
|
+
declare const _default: typeof TracksContainer;
|
|
10
|
+
export default _default;
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports["default"] = void 0;
|
|
11
|
+
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
|
|
14
|
+
var _styles = require("@material-ui/core/styles");
|
|
15
|
+
|
|
16
|
+
var _mobxReact = require("mobx-react");
|
|
17
|
+
|
|
18
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
19
|
+
|
|
20
|
+
var _normalizeWheel = _interopRequireDefault(require("normalize-wheel"));
|
|
21
|
+
|
|
22
|
+
var _ = require("..");
|
|
23
|
+
|
|
24
|
+
var _RubberBand = _interopRequireDefault(require("./RubberBand"));
|
|
25
|
+
|
|
26
|
+
var _ScaleBar = _interopRequireDefault(require("./ScaleBar"));
|
|
27
|
+
|
|
28
|
+
var _VerticalGuides = _interopRequireDefault(require("./VerticalGuides"));
|
|
29
|
+
|
|
30
|
+
var _CenterLine = _interopRequireDefault(require("./CenterLine"));
|
|
31
|
+
|
|
32
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
33
|
+
|
|
34
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
35
|
+
|
|
36
|
+
var useStyles = (0, _styles.makeStyles)(function (theme) {
|
|
37
|
+
return {
|
|
38
|
+
tracksContainer: {
|
|
39
|
+
position: 'relative',
|
|
40
|
+
borderRadius: theme.shape.borderRadius,
|
|
41
|
+
overflow: 'hidden'
|
|
42
|
+
},
|
|
43
|
+
spacer: {
|
|
44
|
+
position: 'relative',
|
|
45
|
+
height: _.RESIZE_HANDLE_HEIGHT
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
function TracksContainer(_ref) {
|
|
51
|
+
var children = _ref.children,
|
|
52
|
+
model = _ref.model;
|
|
53
|
+
var classes = useStyles(); // refs are to store these variables to avoid repeated rerenders associated
|
|
54
|
+
// with useState/setState
|
|
55
|
+
|
|
56
|
+
var delta = (0, _react.useRef)(0);
|
|
57
|
+
var scheduled = (0, _react.useRef)(false);
|
|
58
|
+
var timeout = (0, _react.useRef)();
|
|
59
|
+
var ref = (0, _react.useRef)(null);
|
|
60
|
+
var prevX = (0, _react.useRef)(0);
|
|
61
|
+
|
|
62
|
+
var _useState = (0, _react.useState)(false),
|
|
63
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
64
|
+
mouseDragging = _useState2[0],
|
|
65
|
+
setMouseDragging = _useState2[1];
|
|
66
|
+
|
|
67
|
+
(0, _react.useEffect)(function () {
|
|
68
|
+
var cleanup = function cleanup() {};
|
|
69
|
+
|
|
70
|
+
function globalMouseMove(event) {
|
|
71
|
+
event.preventDefault();
|
|
72
|
+
var currX = event.clientX;
|
|
73
|
+
var distance = currX - prevX.current;
|
|
74
|
+
|
|
75
|
+
if (distance) {
|
|
76
|
+
// use rAF to make it so multiple event handlers aren't fired per-frame
|
|
77
|
+
// see https://calendar.perfplanet.com/2013/the-runtime-performance-checklist/
|
|
78
|
+
if (!scheduled.current) {
|
|
79
|
+
scheduled.current = true;
|
|
80
|
+
window.requestAnimationFrame(function () {
|
|
81
|
+
model.horizontalScroll(-distance);
|
|
82
|
+
scheduled.current = false;
|
|
83
|
+
prevX.current = event.clientX;
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function globalMouseUp() {
|
|
90
|
+
prevX.current = 0;
|
|
91
|
+
|
|
92
|
+
if (mouseDragging) {
|
|
93
|
+
setMouseDragging(false);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (mouseDragging) {
|
|
98
|
+
window.addEventListener('mousemove', globalMouseMove, true);
|
|
99
|
+
window.addEventListener('mouseup', globalMouseUp, true);
|
|
100
|
+
|
|
101
|
+
cleanup = function cleanup() {
|
|
102
|
+
window.removeEventListener('mousemove', globalMouseMove, true);
|
|
103
|
+
window.removeEventListener('mouseup', globalMouseUp, true);
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return cleanup;
|
|
108
|
+
}, [model, mouseDragging, prevX]);
|
|
109
|
+
|
|
110
|
+
function mouseDown(event) {
|
|
111
|
+
// check if clicking a draggable element or a resize handle
|
|
112
|
+
var target = event.target;
|
|
113
|
+
|
|
114
|
+
if (target.draggable || target.dataset.resizer) {
|
|
115
|
+
return;
|
|
116
|
+
} // otherwise do click and drag scroll
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
if (event.button === 0) {
|
|
120
|
+
prevX.current = event.clientX;
|
|
121
|
+
setMouseDragging(true);
|
|
122
|
+
}
|
|
123
|
+
} // this local mouseup is used in addition to the global because sometimes
|
|
124
|
+
// the global add/remove are not called in time, resulting in issue #533
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
function mouseUp(event) {
|
|
128
|
+
event.preventDefault();
|
|
129
|
+
setMouseDragging(false);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function mouseLeave(event) {
|
|
133
|
+
event.preventDefault();
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
(0, _react.useEffect)(function () {
|
|
137
|
+
var curr = ref.current; // if ctrl is held down, zoom in with y-scroll
|
|
138
|
+
// else scroll horizontally with x-scroll
|
|
139
|
+
|
|
140
|
+
function onWheel(origEvent) {
|
|
141
|
+
var event = (0, _normalizeWheel["default"])(origEvent);
|
|
142
|
+
|
|
143
|
+
if (origEvent.ctrlKey === true) {
|
|
144
|
+
origEvent.preventDefault();
|
|
145
|
+
delta.current += event.pixelY / 500;
|
|
146
|
+
model.setScaleFactor(delta.current < 0 ? 1 - delta.current : 1 / (1 + delta.current));
|
|
147
|
+
|
|
148
|
+
if (timeout.current) {
|
|
149
|
+
clearTimeout(timeout.current);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
timeout.current = setTimeout(function () {
|
|
153
|
+
model.setScaleFactor(1);
|
|
154
|
+
model.zoomTo(delta.current > 0 ? model.bpPerPx * (1 + delta.current) : model.bpPerPx / (1 - delta.current));
|
|
155
|
+
delta.current = 0;
|
|
156
|
+
}, 300);
|
|
157
|
+
} else {
|
|
158
|
+
// this is needed to stop the event from triggering "back button
|
|
159
|
+
// action" on MacOSX etc. but is a heuristic to avoid preventing the
|
|
160
|
+
// inner-track scroll behavior
|
|
161
|
+
if (Math.abs(event.pixelX) > Math.abs(2 * event.pixelY)) {
|
|
162
|
+
origEvent.preventDefault();
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
delta.current += event.pixelX;
|
|
166
|
+
|
|
167
|
+
if (!scheduled.current) {
|
|
168
|
+
// use rAF to make it so multiple event handlers aren't fired per-frame
|
|
169
|
+
// see https://calendar.perfplanet.com/2013/the-runtime-performance-checklist/
|
|
170
|
+
scheduled.current = true;
|
|
171
|
+
window.requestAnimationFrame(function () {
|
|
172
|
+
model.horizontalScroll(delta.current);
|
|
173
|
+
delta.current = 0;
|
|
174
|
+
scheduled.current = false;
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
if (curr) {
|
|
181
|
+
curr.addEventListener('wheel', onWheel);
|
|
182
|
+
return function () {
|
|
183
|
+
curr.removeEventListener('wheel', onWheel);
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
return function () {};
|
|
188
|
+
}, [model]);
|
|
189
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
190
|
+
ref: ref,
|
|
191
|
+
role: "presentation",
|
|
192
|
+
className: classes.tracksContainer,
|
|
193
|
+
onMouseDown: mouseDown,
|
|
194
|
+
onMouseUp: mouseUp,
|
|
195
|
+
onMouseLeave: mouseLeave
|
|
196
|
+
}, /*#__PURE__*/_react["default"].createElement(_VerticalGuides["default"], {
|
|
197
|
+
model: model
|
|
198
|
+
}), model.showCenterLine ? /*#__PURE__*/_react["default"].createElement(_CenterLine["default"], {
|
|
199
|
+
model: model
|
|
200
|
+
}) : null, /*#__PURE__*/_react["default"].createElement(_RubberBand["default"], {
|
|
201
|
+
model: model,
|
|
202
|
+
ControlComponent: /*#__PURE__*/_react["default"].createElement(_ScaleBar["default"], {
|
|
203
|
+
model: model,
|
|
204
|
+
style: {
|
|
205
|
+
height: _.SCALE_BAR_HEIGHT,
|
|
206
|
+
boxSizing: 'border-box'
|
|
207
|
+
}
|
|
208
|
+
})
|
|
209
|
+
}), children);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
var _default = (0, _mobxReact.observer)(TracksContainer);
|
|
213
|
+
|
|
214
|
+
exports["default"] = _default;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { Instance } from 'mobx-state-tree';
|
|
3
|
-
import { LinearGenomeViewStateModel } from '..';
|
|
4
|
-
declare type LGV = Instance<LinearGenomeViewStateModel>;
|
|
5
|
-
declare function VerticalGuides({ model }: {
|
|
6
|
-
model: LGV;
|
|
7
|
-
}): JSX.Element;
|
|
8
|
-
declare const _default: typeof VerticalGuides;
|
|
9
|
-
export default _default;
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Instance } from 'mobx-state-tree';
|
|
3
|
+
import { LinearGenomeViewStateModel } from '..';
|
|
4
|
+
declare type LGV = Instance<LinearGenomeViewStateModel>;
|
|
5
|
+
declare function VerticalGuides({ model }: {
|
|
6
|
+
model: LGV;
|
|
7
|
+
}): JSX.Element;
|
|
8
|
+
declare const _default: typeof VerticalGuides;
|
|
9
|
+
export default _default;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _blockTypes = require("@jbrowse/core/util/blockTypes");
|
|
11
|
+
|
|
12
|
+
var _styles = require("@material-ui/core/styles");
|
|
13
|
+
|
|
14
|
+
var _clsx = _interopRequireDefault(require("clsx"));
|
|
15
|
+
|
|
16
|
+
var _mobxReact = require("mobx-react");
|
|
17
|
+
|
|
18
|
+
var _react = _interopRequireDefault(require("react"));
|
|
19
|
+
|
|
20
|
+
var _Block = require("../../BaseLinearDisplay/components/Block");
|
|
21
|
+
|
|
22
|
+
var _util = require("../util");
|
|
23
|
+
|
|
24
|
+
var useStyles = (0, _styles.makeStyles)(function (theme) {
|
|
25
|
+
return {
|
|
26
|
+
verticalGuidesZoomContainer: {
|
|
27
|
+
position: 'absolute',
|
|
28
|
+
height: '100%',
|
|
29
|
+
width: '100%',
|
|
30
|
+
zIndex: 1,
|
|
31
|
+
pointerEvents: 'none'
|
|
32
|
+
},
|
|
33
|
+
verticalGuidesContainer: {
|
|
34
|
+
position: 'absolute',
|
|
35
|
+
height: '100%',
|
|
36
|
+
zIndex: 1,
|
|
37
|
+
pointerEvents: 'none',
|
|
38
|
+
display: 'flex'
|
|
39
|
+
},
|
|
40
|
+
tick: {
|
|
41
|
+
position: 'absolute',
|
|
42
|
+
height: '100%',
|
|
43
|
+
width: 1
|
|
44
|
+
},
|
|
45
|
+
majorTick: {
|
|
46
|
+
background: theme.palette.text.hint
|
|
47
|
+
},
|
|
48
|
+
minorTick: {
|
|
49
|
+
background: theme.palette.divider
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
var RenderedVerticalGuides = (0, _mobxReact.observer)(function (_ref) {
|
|
54
|
+
var model = _ref.model;
|
|
55
|
+
var classes = useStyles();
|
|
56
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, model.staticBlocks.map(function (block, index) {
|
|
57
|
+
if (block instanceof _blockTypes.ContentBlock) {
|
|
58
|
+
var ticks = (0, _util.makeTicks)(block.start, block.end, model.bpPerPx);
|
|
59
|
+
return /*#__PURE__*/_react["default"].createElement(_Block.ContentBlock, {
|
|
60
|
+
key: "".concat(block.key, "-").concat(index),
|
|
61
|
+
block: block
|
|
62
|
+
}, ticks.map(function (tick) {
|
|
63
|
+
var x = (block.reversed ? block.end - tick.base : tick.base - block.start) / model.bpPerPx;
|
|
64
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
65
|
+
key: tick.base,
|
|
66
|
+
className: (0, _clsx["default"])(classes.tick, tick.type === 'major' || tick.type === 'labeledMajor' ? classes.majorTick : classes.minorTick),
|
|
67
|
+
style: {
|
|
68
|
+
left: x
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (block instanceof _blockTypes.ElidedBlock) {
|
|
75
|
+
return /*#__PURE__*/_react["default"].createElement(_Block.ElidedBlock, {
|
|
76
|
+
key: block.key,
|
|
77
|
+
width: block.widthPx
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (block instanceof _blockTypes.InterRegionPaddingBlock) {
|
|
82
|
+
return /*#__PURE__*/_react["default"].createElement(_Block.InterRegionPaddingBlock, {
|
|
83
|
+
key: block.key,
|
|
84
|
+
width: block.widthPx,
|
|
85
|
+
boundary: block.variant === 'boundary'
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return null;
|
|
90
|
+
}));
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
function VerticalGuides(_ref2) {
|
|
94
|
+
var model = _ref2.model;
|
|
95
|
+
var classes = useStyles(); // find the block that needs pinning to the left side for context
|
|
96
|
+
|
|
97
|
+
var offsetLeft = model.staticBlocks.offsetPx - model.offsetPx;
|
|
98
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
99
|
+
className: classes.verticalGuidesZoomContainer,
|
|
100
|
+
style: {
|
|
101
|
+
transform: model.scaleFactor !== 1 ? "scaleX(".concat(model.scaleFactor, ")") : undefined
|
|
102
|
+
}
|
|
103
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
104
|
+
className: classes.verticalGuidesContainer,
|
|
105
|
+
style: {
|
|
106
|
+
left: offsetLeft,
|
|
107
|
+
width: model.staticBlocks.totalWidthPx
|
|
108
|
+
}
|
|
109
|
+
}, /*#__PURE__*/_react["default"].createElement(RenderedVerticalGuides, {
|
|
110
|
+
model: model
|
|
111
|
+
})));
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
var _default = (0, _mobxReact.observer)(VerticalGuides);
|
|
115
|
+
|
|
116
|
+
exports["default"] = _default;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { LinearGenomeViewModel } from '..';
|
|
3
|
-
declare function ZoomControls({ model }: {
|
|
4
|
-
model: LinearGenomeViewModel;
|
|
5
|
-
}): JSX.Element;
|
|
6
|
-
declare const _default: typeof ZoomControls;
|
|
7
|
-
export default _default;
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { LinearGenomeViewModel } from '..';
|
|
3
|
+
declare function ZoomControls({ model }: {
|
|
4
|
+
model: LinearGenomeViewModel;
|
|
5
|
+
}): JSX.Element;
|
|
6
|
+
declare const _default: typeof ZoomControls;
|
|
7
|
+
export default _default;
|