@jbrowse/plugin-linear-genome-view 1.6.7 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js +232 -0
  2. package/dist/BaseLinearDisplay/components/Block.js +86 -0
  3. package/dist/BaseLinearDisplay/components/LinearBlocks.js +110 -0
  4. package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +192 -0
  5. package/dist/BaseLinearDisplay/index.js +41 -0
  6. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js +763 -0
  7. package/dist/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js +24 -0
  8. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js +328 -0
  9. package/dist/LinearBareDisplay/configSchema.js +19 -0
  10. package/dist/LinearBareDisplay/index.js +21 -0
  11. package/dist/LinearBareDisplay/index.test.js +33 -0
  12. package/dist/LinearBareDisplay/model.d.ts +7 -7
  13. package/dist/LinearBareDisplay/model.js +44 -0
  14. package/dist/LinearBasicDisplay/components/SetMaxHeight.js +94 -0
  15. package/dist/LinearBasicDisplay/configSchema.js +25 -0
  16. package/dist/LinearBasicDisplay/index.js +23 -0
  17. package/dist/LinearBasicDisplay/model.d.ts +7 -7
  18. package/dist/LinearBasicDisplay/model.js +162 -0
  19. package/dist/LinearGenomeView/components/CenterLine.js +80 -0
  20. package/dist/LinearGenomeView/components/ExportSvgDialog.js +137 -0
  21. package/dist/LinearGenomeView/components/Header.js +144 -0
  22. package/dist/LinearGenomeView/components/HelpDialog.js +48 -0
  23. package/dist/LinearGenomeView/components/ImportForm.js +330 -0
  24. package/dist/LinearGenomeView/components/LinearGenomeView.js +129 -0
  25. package/dist/LinearGenomeView/components/LinearGenomeView.test.js +234 -0
  26. package/dist/LinearGenomeView/components/LinearGenomeViewSvg.js +349 -0
  27. package/dist/LinearGenomeView/components/MiniControls.js +83 -0
  28. package/dist/LinearGenomeView/components/OverviewRubberBand.js +310 -0
  29. package/dist/LinearGenomeView/components/OverviewScaleBar.d.ts +6 -6
  30. package/dist/LinearGenomeView/components/OverviewScaleBar.js +403 -0
  31. package/dist/LinearGenomeView/components/RefNameAutocomplete.js +331 -0
  32. package/dist/LinearGenomeView/components/RubberBand.js +309 -0
  33. package/dist/LinearGenomeView/components/Ruler.js +101 -0
  34. package/dist/LinearGenomeView/components/ScaleBar.js +184 -0
  35. package/dist/LinearGenomeView/components/ScaleBar.test.js +180 -0
  36. package/dist/LinearGenomeView/components/SearchBox.js +201 -0
  37. package/dist/LinearGenomeView/components/SearchResultsDialog.js +159 -0
  38. package/dist/LinearGenomeView/components/SequenceDialog.js +304 -0
  39. package/dist/LinearGenomeView/components/TrackContainer.js +179 -0
  40. package/dist/LinearGenomeView/components/TrackLabel.js +165 -0
  41. package/dist/LinearGenomeView/components/TracksContainer.js +214 -0
  42. package/dist/LinearGenomeView/components/VerticalGuides.js +116 -0
  43. package/dist/LinearGenomeView/components/ZoomControls.js +92 -0
  44. package/dist/LinearGenomeView/components/util.js +16 -0
  45. package/dist/LinearGenomeView/index.js +1418 -0
  46. package/dist/LinearGenomeView/index.test.js +1170 -0
  47. package/dist/LinearGenomeView/util.js +93 -0
  48. package/dist/LinearGenomeView/util.test.js +78 -0
  49. package/dist/index.d.ts +21 -21
  50. package/dist/index.js +293 -6
  51. package/dist/plugin-linear-genome-view.cjs.development.js +37 -22
  52. package/dist/plugin-linear-genome-view.cjs.development.js.map +1 -1
  53. package/dist/plugin-linear-genome-view.cjs.production.min.js +1 -1
  54. package/dist/plugin-linear-genome-view.cjs.production.min.js.map +1 -1
  55. package/dist/plugin-linear-genome-view.esm.js +37 -22
  56. package/dist/plugin-linear-genome-view.esm.js.map +1 -1
  57. package/package.json +4 -8
  58. package/src/BaseLinearDisplay/components/BaseLinearDisplay.tsx +9 -12
  59. package/src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx +2 -0
  60. package/src/BaseLinearDisplay/models/serverSideRenderedBlock.ts +10 -8
  61. package/src/LinearBasicDisplay/components/SetMaxHeight.tsx +21 -12
  62. package/src/LinearBasicDisplay/model.ts +17 -18
  63. package/src/LinearGenomeView/components/Header.tsx +1 -1
  64. package/src/LinearGenomeView/components/ImportForm.tsx +10 -4
  65. package/src/LinearGenomeView/components/LinearGenomeView.test.js +1 -0
  66. package/src/LinearGenomeView/components/OverviewScaleBar.tsx +2 -2
  67. package/src/LinearGenomeView/components/RubberBand.tsx +14 -24
  68. package/src/LinearGenomeView/components/ScaleBar.test.tsx +1 -0
  69. package/src/LinearGenomeView/components/ScaleBar.tsx +3 -6
  70. package/src/LinearGenomeView/components/SequenceDialog.tsx +1 -1
  71. package/src/LinearGenomeView/components/TrackContainer.tsx +31 -24
  72. package/src/LinearGenomeView/components/TrackLabel.tsx +1 -1
  73. package/src/LinearGenomeView/components/__snapshots__/LinearGenomeView.test.js.snap +23 -47
  74. package/src/LinearGenomeView/index.tsx +2 -3
@@ -27,7 +27,7 @@ declare const stateModelFactory: (configSchema: AnyConfigurationSchemaType) => i
27
27
  renderInProgress: AbortController | undefined;
28
28
  filled: boolean;
29
29
  reactElement: import("react").ReactElement<any, string | ((props: any) => import("react").ReactElement<any, any> | null) | (new (props: any) => import("react").Component<any, any, any>)> | undefined;
30
- features: Map<string, import("@jbrowse/core/util/simpleFeature").Feature> | undefined;
30
+ features: Map<string, import("@jbrowse/core/util").Feature> | undefined;
31
31
  layout: any;
32
32
  status: string;
33
33
  error: unknown;
@@ -45,7 +45,7 @@ declare const stateModelFactory: (configSchema: AnyConfigurationSchemaType) => i
45
45
  setMessage(messageText: string): void;
46
46
  setRendered(props: {
47
47
  reactElement: import("react").ReactElement<any, string | ((props: any) => import("react").ReactElement<any, any> | null) | (new (props: any) => import("react").Component<any, any, any>)>;
48
- features: Map<string, import("@jbrowse/core/util/simpleFeature").Feature>;
48
+ features: Map<string, import("@jbrowse/core/util").Feature>;
49
49
  layout: any;
50
50
  maxHeightReached: boolean;
51
51
  renderProps: any;
@@ -119,7 +119,7 @@ declare const stateModelFactory: (configSchema: AnyConfigurationSchemaType) => i
119
119
  currBpPerPx: number;
120
120
  message: string;
121
121
  featureIdUnderMouse: string | undefined;
122
- contextMenuFeature: import("@jbrowse/core/util/simpleFeature").Feature | undefined;
122
+ contextMenuFeature: import("@jbrowse/core/util").Feature | undefined;
123
123
  scrollTop: number;
124
124
  estimatedRegionStatsP: Promise<import("@jbrowse/core/data_adapters/BaseAdapter").Stats> | undefined;
125
125
  estimatedRegionStats: import("@jbrowse/core/data_adapters/BaseAdapter").Stats | undefined;
@@ -132,8 +132,8 @@ declare const stateModelFactory: (configSchema: AnyConfigurationSchemaType) => i
132
132
  readonly selectedFeatureId: string | undefined;
133
133
  readonly DisplayMessageComponent: import("react").FC<any> | undefined;
134
134
  } & {
135
- readonly features: import("@jbrowse/core/util/compositeMap").default<string, import("@jbrowse/core/util/simpleFeature").Feature>;
136
- readonly featureUnderMouse: import("@jbrowse/core/util/simpleFeature").Feature | undefined;
135
+ readonly features: import("@jbrowse/core/util/compositeMap").default<string, import("@jbrowse/core/util").Feature>;
136
+ readonly featureUnderMouse: import("@jbrowse/core/util").Feature | undefined;
137
137
  getFeatureOverlapping(blockKey: string, x: number, y: number): any;
138
138
  getFeatureByID(blockKey: string, id: string): [number, number, number, number] | undefined;
139
139
  searchFeatureByID(id: string): [number, number, number, number] | undefined;
@@ -160,11 +160,11 @@ declare const stateModelFactory: (configSchema: AnyConfigurationSchemaType) => i
160
160
  addBlock(key: string, block: import("@jbrowse/core/util/blockTypes").BaseBlock): void;
161
161
  setCurrBpPerPx(n: number): void;
162
162
  deleteBlock(key: string): void;
163
- selectFeature(feature: import("@jbrowse/core/util/simpleFeature").Feature): void;
163
+ selectFeature(feature: import("@jbrowse/core/util").Feature): void;
164
164
  clearFeatureSelection(): void;
165
165
  setFeatureIdUnderMouse(feature: string | undefined): void;
166
166
  reload(): void;
167
- setContextMenuFeature(feature?: import("@jbrowse/core/util/simpleFeature").Feature | undefined): void;
167
+ setContextMenuFeature(feature?: import("@jbrowse/core/util").Feature | undefined): void;
168
168
  } & {
169
169
  readonly regionTooLarge: boolean;
170
170
  readonly regionTooLargeReason: string;
@@ -0,0 +1,162 @@
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 _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
+
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
+ var _react = require("react");
17
+
18
+ var _configuration = require("@jbrowse/core/configuration");
19
+
20
+ var _util = require("@jbrowse/core/util");
21
+
22
+ var _mobxStateTree = require("mobx-state-tree");
23
+
24
+ var _Visibility = _interopRequireDefault(require("@material-ui/icons/Visibility"));
25
+
26
+ var _BaseLinearDisplay = require("../BaseLinearDisplay");
27
+
28
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
29
+
30
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
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 || (0, _typeof2["default"])(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 SetMaxHeightDlg = /*#__PURE__*/(0, _react.lazy)(function () {
37
+ return Promise.resolve().then(function () {
38
+ return _interopRequireWildcard(require('./components/SetMaxHeight'));
39
+ });
40
+ });
41
+
42
+ var stateModelFactory = function stateModelFactory(configSchema) {
43
+ return _mobxStateTree.types.compose('LinearBasicDisplay', _BaseLinearDisplay.BaseLinearDisplay, _mobxStateTree.types.model({
44
+ type: _mobxStateTree.types.literal('LinearBasicDisplay'),
45
+ trackShowLabels: _mobxStateTree.types.maybe(_mobxStateTree.types["boolean"]),
46
+ trackShowDescriptions: _mobxStateTree.types.maybe(_mobxStateTree.types["boolean"]),
47
+ trackDisplayMode: _mobxStateTree.types.maybe(_mobxStateTree.types.string),
48
+ trackMaxHeight: _mobxStateTree.types.maybe(_mobxStateTree.types.number),
49
+ configuration: (0, _configuration.ConfigurationReference)(configSchema)
50
+ })).views(function (self) {
51
+ return {
52
+ get rendererTypeName() {
53
+ return (0, _configuration.getConf)(self, ['renderer', 'type']);
54
+ },
55
+
56
+ get showLabels() {
57
+ var _self$trackShowLabels;
58
+
59
+ return (_self$trackShowLabels = self.trackShowLabels) !== null && _self$trackShowLabels !== void 0 ? _self$trackShowLabels : (0, _configuration.getConf)(self, ['renderer', 'showLabels']);
60
+ },
61
+
62
+ get showDescriptions() {
63
+ var _self$trackShowDescri;
64
+
65
+ return (_self$trackShowDescri = self.trackShowDescriptions) !== null && _self$trackShowDescri !== void 0 ? _self$trackShowDescri : (0, _configuration.getConf)(self, ['renderer', 'showLabels']);
66
+ },
67
+
68
+ get maxHeight() {
69
+ var _self$trackMaxHeight;
70
+
71
+ return (_self$trackMaxHeight = self.trackMaxHeight) !== null && _self$trackMaxHeight !== void 0 ? _self$trackMaxHeight : (0, _configuration.getConf)(self, ['renderer', 'maxHeight']);
72
+ },
73
+
74
+ get displayMode() {
75
+ var _self$trackDisplayMod;
76
+
77
+ var displayMode = (0, _configuration.getConf)(self, ['renderer', 'displayMode']);
78
+ return (_self$trackDisplayMod = self.trackDisplayMode) !== null && _self$trackDisplayMod !== void 0 ? _self$trackDisplayMod : displayMode;
79
+ },
80
+
81
+ get rendererConfig() {
82
+ var configBlob = (0, _configuration.getConf)(self, ['renderer']) || {};
83
+ return self.rendererType.configSchema.create(_objectSpread(_objectSpread({}, configBlob), {}, {
84
+ showLabels: this.showLabels,
85
+ showDescriptions: this.showDescriptions,
86
+ displayMode: this.displayMode,
87
+ maxHeight: this.maxHeight
88
+ }), (0, _mobxStateTree.getEnv)(self));
89
+ }
90
+
91
+ };
92
+ }).actions(function (self) {
93
+ return {
94
+ toggleShowLabels: function toggleShowLabels() {
95
+ self.trackShowLabels = !self.showLabels;
96
+ },
97
+ toggleShowDescriptions: function toggleShowDescriptions() {
98
+ self.trackShowDescriptions = !self.showDescriptions;
99
+ },
100
+ setDisplayMode: function setDisplayMode(val) {
101
+ self.trackDisplayMode = val;
102
+ },
103
+ setMaxHeight: function setMaxHeight(val) {
104
+ self.trackMaxHeight = val;
105
+ }
106
+ };
107
+ }).views(function (self) {
108
+ var superTrackMenuItems = self.trackMenuItems,
109
+ superRenderProps = self.renderProps;
110
+ return {
111
+ renderProps: function renderProps() {
112
+ var config = self.rendererConfig;
113
+ return _objectSpread(_objectSpread({}, superRenderProps()), {}, {
114
+ config: config
115
+ });
116
+ },
117
+ trackMenuItems: function trackMenuItems() {
118
+ return [].concat((0, _toConsumableArray2["default"])(superTrackMenuItems()), [{
119
+ label: 'Show labels',
120
+ icon: _Visibility["default"],
121
+ type: 'checkbox',
122
+ checked: self.showLabels,
123
+ onClick: function onClick() {
124
+ self.toggleShowLabels();
125
+ }
126
+ }, {
127
+ label: 'Show descriptions',
128
+ icon: _Visibility["default"],
129
+ type: 'checkbox',
130
+ checked: self.showDescriptions,
131
+ onClick: function onClick() {
132
+ self.toggleShowDescriptions();
133
+ }
134
+ }, {
135
+ label: 'Display mode',
136
+ icon: _Visibility["default"],
137
+ subMenu: ['compact', 'reducedRepresentation', 'normal', 'collapse'].map(function (val) {
138
+ return {
139
+ label: val,
140
+ onClick: function onClick() {
141
+ self.setDisplayMode(val);
142
+ }
143
+ };
144
+ })
145
+ }, {
146
+ label: 'Set max height',
147
+ onClick: function onClick() {
148
+ (0, _util.getSession)(self).queueDialog(function (doneCallback) {
149
+ return [SetMaxHeightDlg, {
150
+ model: self,
151
+ handleClose: doneCallback
152
+ }];
153
+ });
154
+ }
155
+ }]);
156
+ }
157
+ };
158
+ });
159
+ };
160
+
161
+ var _default = stateModelFactory;
162
+ exports["default"] = _default;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _styles = require("@material-ui/core/styles");
11
+
12
+ var _mobxReact = require("mobx-react");
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ 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); }
17
+
18
+ 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; }
19
+
20
+ var useStyles = (0, _styles.makeStyles)(function () {
21
+ return {
22
+ centerLineContainer: {
23
+ background: 'transparent',
24
+ height: '100%',
25
+ zIndex: 5,
26
+ // above the track but under menu
27
+ position: 'absolute',
28
+ border: '1px black dashed',
29
+ borderTop: 'none',
30
+ borderBottom: 'none',
31
+ pointerEvents: 'none'
32
+ },
33
+ centerLineText: {
34
+ position: 'absolute',
35
+ pointerEvents: 'none',
36
+ whiteSpace: 'nowrap',
37
+ fontWeight: 'bold'
38
+ }
39
+ };
40
+ });
41
+
42
+ function CenterLine(_ref) {
43
+ var model = _ref.model;
44
+ var bpPerPx = model.bpPerPx,
45
+ centerLineInfo = model.centerLineInfo,
46
+ trackHeights = model.trackHeights,
47
+ tracks = model.tracks,
48
+ width = model.width;
49
+ var ref = (0, _react.useRef)(null);
50
+ var classes = useStyles();
51
+ var startingPosition = width / 2;
52
+ return tracks.length ? /*#__PURE__*/_react["default"].createElement("div", {
53
+ "data-testid": "centerline_container",
54
+ className: classes.centerLineContainer,
55
+ role: "presentation",
56
+ ref: ref,
57
+ style: {
58
+ left: "".concat(startingPosition, "px"),
59
+ width: Math.max(1 / bpPerPx, 1)
60
+ }
61
+ }, centerLineInfo && /*#__PURE__*/_react["default"].createElement("div", {
62
+ // text that indicates what bp is center, positioned
63
+ // at the bottom right of the center line
64
+ "data-testid": "centerline_text",
65
+ className: classes.centerLineText,
66
+ role: "presentation",
67
+ style: {
68
+ left: Math.max(1 / bpPerPx, 1) + 5,
69
+ top: trackHeights
70
+ }
71
+ }, centerLineInfo.refName, ":", ' ', Math.max(Math.round(centerLineInfo.offset) + 1, 0))) : null;
72
+ }
73
+
74
+ CenterLine.propTypes = {
75
+ model: _mobxReact.PropTypes.objectOrObservableObject.isRequired
76
+ };
77
+
78
+ var _default = (0, _mobxReact.observer)(CenterLine);
79
+
80
+ exports["default"] = _default;
@@ -0,0 +1,137 @@
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"] = ExportSvgDlg;
11
+
12
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
18
+ var _react = _interopRequireWildcard(require("react"));
19
+
20
+ var _styles = require("@material-ui/core/styles");
21
+
22
+ var _core = require("@material-ui/core");
23
+
24
+ var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
25
+
26
+ 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); }
27
+
28
+ 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; }
29
+
30
+ var useStyles = (0, _styles.makeStyles)(function (theme) {
31
+ return {
32
+ closeButton: {
33
+ position: 'absolute',
34
+ right: theme.spacing(1),
35
+ top: theme.spacing(1),
36
+ color: theme.palette.grey[500]
37
+ }
38
+ };
39
+ });
40
+
41
+ function ExportSvgDlg(_ref) {
42
+ var model = _ref.model,
43
+ handleClose = _ref.handleClose;
44
+ // @ts-ignore
45
+ var offscreenCanvas = typeof OffscreenCanvas !== 'undefined';
46
+
47
+ var _useState = (0, _react.useState)(offscreenCanvas),
48
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
49
+ rasterizeLayers = _useState2[0],
50
+ setRasterizeLayers = _useState2[1];
51
+
52
+ var _useState3 = (0, _react.useState)(false),
53
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
54
+ loading = _useState4[0],
55
+ setLoading = _useState4[1];
56
+
57
+ var _useState5 = (0, _react.useState)(),
58
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
59
+ error = _useState6[0],
60
+ setError = _useState6[1];
61
+
62
+ var classes = useStyles();
63
+ return /*#__PURE__*/_react["default"].createElement(_core.Dialog, {
64
+ open: true,
65
+ onClose: handleClose
66
+ }, /*#__PURE__*/_react["default"].createElement(_core.DialogTitle, null, "Export SVG", /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
67
+ className: classes.closeButton,
68
+ onClick: handleClose
69
+ }, /*#__PURE__*/_react["default"].createElement(_Close["default"], null))), /*#__PURE__*/_react["default"].createElement(_core.DialogContent, null, error ? /*#__PURE__*/_react["default"].createElement("div", {
70
+ style: {
71
+ color: 'red'
72
+ }
73
+ }, "".concat(error)) : loading ? /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_core.CircularProgress, {
74
+ size: 20,
75
+ style: {
76
+ marginRight: 20
77
+ }
78
+ }), /*#__PURE__*/_react["default"].createElement(_core.Typography, {
79
+ display: "inline"
80
+ }, "Creating SVG")) : null, offscreenCanvas ? /*#__PURE__*/_react["default"].createElement(_core.FormControlLabel, {
81
+ control: /*#__PURE__*/_react["default"].createElement(_core.Checkbox, {
82
+ checked: rasterizeLayers,
83
+ onChange: function onChange() {
84
+ return setRasterizeLayers(function (val) {
85
+ return !val;
86
+ });
87
+ }
88
+ }),
89
+ label: "Rasterize canvas based tracks? File may be much larger if this is turned off"
90
+ }) : /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "Note: rasterizing layers not yet supported in this browser, so SVG size may be large")), /*#__PURE__*/_react["default"].createElement(_core.DialogActions, null, /*#__PURE__*/_react["default"].createElement(_core.Button, {
91
+ variant: "contained",
92
+ color: "secondary",
93
+ onClick: function onClick() {
94
+ return handleClose();
95
+ }
96
+ }, "Cancel"), /*#__PURE__*/_react["default"].createElement(_core.Button, {
97
+ variant: "contained",
98
+ color: "primary",
99
+ type: "submit",
100
+ onClick: /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
101
+ return _regenerator["default"].wrap(function _callee$(_context) {
102
+ while (1) {
103
+ switch (_context.prev = _context.next) {
104
+ case 0:
105
+ setLoading(true);
106
+ setError(undefined);
107
+ _context.prev = 2;
108
+ _context.next = 5;
109
+ return model.exportSvg({
110
+ rasterizeLayers: rasterizeLayers
111
+ });
112
+
113
+ case 5:
114
+ handleClose();
115
+ _context.next = 12;
116
+ break;
117
+
118
+ case 8:
119
+ _context.prev = 8;
120
+ _context.t0 = _context["catch"](2);
121
+ console.error(_context.t0);
122
+ setError(_context.t0);
123
+
124
+ case 12:
125
+ _context.prev = 12;
126
+ setLoading(false);
127
+ return _context.finish(12);
128
+
129
+ case 15:
130
+ case "end":
131
+ return _context.stop();
132
+ }
133
+ }
134
+ }, _callee, null, [[2, 8, 12, 15]]);
135
+ }))
136
+ }, "Submit")));
137
+ }
@@ -0,0 +1,144 @@
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 _react = _interopRequireDefault(require("react"));
11
+
12
+ var _mobxReact = require("mobx-react");
13
+
14
+ var _core = require("@material-ui/core");
15
+
16
+ var _SearchBox = _interopRequireDefault(require("./SearchBox"));
17
+
18
+ var _Icons = require("@jbrowse/core/ui/Icons");
19
+
20
+ var _ArrowForward = _interopRequireDefault(require("@material-ui/icons/ArrowForward"));
21
+
22
+ var _ArrowBack = _interopRequireDefault(require("@material-ui/icons/ArrowBack"));
23
+
24
+ var _ = require("..");
25
+
26
+ var _OverviewScaleBar = _interopRequireDefault(require("./OverviewScaleBar"));
27
+
28
+ var _ZoomControls = _interopRequireDefault(require("./ZoomControls"));
29
+
30
+ // icons
31
+ // locals
32
+ var useStyles = (0, _core.makeStyles)(function (theme) {
33
+ return {
34
+ headerBar: {
35
+ height: _.HEADER_BAR_HEIGHT,
36
+ display: 'flex'
37
+ },
38
+ headerForm: {
39
+ flexWrap: 'nowrap',
40
+ marginRight: 7
41
+ },
42
+ spacer: {
43
+ flexGrow: 1
44
+ },
45
+ panButton: {
46
+ background: (0, _core.alpha)(theme.palette.background.paper, 0.8),
47
+ height: _.WIDGET_HEIGHT,
48
+ margin: _.SPACING
49
+ },
50
+ bp: {
51
+ display: 'flex',
52
+ alignItems: 'center',
53
+ marginLeft: 5
54
+ },
55
+ toggleButton: {
56
+ height: 44,
57
+ border: 'none',
58
+ margin: theme.spacing(0.5)
59
+ },
60
+ buttonSpacer: {
61
+ marginRight: theme.spacing(2)
62
+ }
63
+ };
64
+ });
65
+ var HeaderButtons = (0, _mobxReact.observer)(function (_ref) {
66
+ var model = _ref.model;
67
+ var classes = useStyles();
68
+ return /*#__PURE__*/_react["default"].createElement(_core.Button, {
69
+ onClick: model.activateTrackSelector,
70
+ className: classes.toggleButton,
71
+ title: "Open track selector",
72
+ value: "track_select",
73
+ color: "secondary"
74
+ }, /*#__PURE__*/_react["default"].createElement(_Icons.TrackSelector, {
75
+ className: classes.buttonSpacer
76
+ }));
77
+ });
78
+
79
+ function PanControls(_ref2) {
80
+ var model = _ref2.model;
81
+ var classes = useStyles();
82
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_core.Button, {
83
+ variant: "outlined",
84
+ className: classes.panButton,
85
+ onClick: function onClick() {
86
+ return model.slide(-0.9);
87
+ }
88
+ }, /*#__PURE__*/_react["default"].createElement(_ArrowBack["default"], null)), /*#__PURE__*/_react["default"].createElement(_core.Button, {
89
+ variant: "outlined",
90
+ className: classes.panButton,
91
+ onClick: function onClick() {
92
+ return model.slide(0.9);
93
+ }
94
+ }, /*#__PURE__*/_react["default"].createElement(_ArrowForward["default"], null)));
95
+ }
96
+
97
+ var RegionWidth = (0, _mobxReact.observer)(function (_ref3) {
98
+ var model = _ref3.model;
99
+ var classes = useStyles();
100
+ var coarseTotalBp = model.coarseTotalBp;
101
+ return /*#__PURE__*/_react["default"].createElement(_core.Typography, {
102
+ variant: "body2",
103
+ color: "textSecondary",
104
+ className: classes.bp
105
+ }, Math.round(coarseTotalBp).toLocaleString('en-US'), " bp");
106
+ });
107
+
108
+ var Controls = function Controls(_ref4) {
109
+ var model = _ref4.model;
110
+ var classes = useStyles();
111
+ return /*#__PURE__*/_react["default"].createElement("div", {
112
+ className: classes.headerBar
113
+ }, /*#__PURE__*/_react["default"].createElement(HeaderButtons, {
114
+ model: model
115
+ }), /*#__PURE__*/_react["default"].createElement("div", {
116
+ className: classes.spacer
117
+ }), /*#__PURE__*/_react["default"].createElement(_core.FormGroup, {
118
+ row: true,
119
+ className: classes.headerForm
120
+ }, /*#__PURE__*/_react["default"].createElement(PanControls, {
121
+ model: model
122
+ }), /*#__PURE__*/_react["default"].createElement(_SearchBox["default"], {
123
+ model: model
124
+ })), /*#__PURE__*/_react["default"].createElement(RegionWidth, {
125
+ model: model
126
+ }), /*#__PURE__*/_react["default"].createElement(_ZoomControls["default"], {
127
+ model: model
128
+ }), /*#__PURE__*/_react["default"].createElement("div", {
129
+ className: classes.spacer
130
+ }));
131
+ };
132
+
133
+ var LinearGenomeViewHeader = (0, _mobxReact.observer)(function (_ref5) {
134
+ var model = _ref5.model;
135
+ return model.hideHeaderOverview ? /*#__PURE__*/_react["default"].createElement(Controls, {
136
+ model: model
137
+ }) : /*#__PURE__*/_react["default"].createElement(_OverviewScaleBar["default"], {
138
+ model: model
139
+ }, /*#__PURE__*/_react["default"].createElement(Controls, {
140
+ model: model
141
+ }));
142
+ });
143
+ var _default = LinearGenomeViewHeader;
144
+ exports["default"] = _default;
@@ -0,0 +1,48 @@
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"] = HelpDialog;
9
+ exports.useStyles = void 0;
10
+
11
+ var _react = _interopRequireDefault(require("react"));
12
+
13
+ var _core = require("@material-ui/core");
14
+
15
+ var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
16
+
17
+ var useStyles = (0, _core.makeStyles)(function (theme) {
18
+ return {
19
+ closeButton: {
20
+ position: 'absolute',
21
+ right: theme.spacing(1),
22
+ top: theme.spacing(1),
23
+ color: theme.palette.grey[500]
24
+ }
25
+ };
26
+ });
27
+ exports.useStyles = useStyles;
28
+
29
+ function HelpDialog(_ref) {
30
+ var handleClose = _ref.handleClose;
31
+ var classes = useStyles();
32
+ return /*#__PURE__*/_react["default"].createElement(_core.Dialog, {
33
+ open: true,
34
+ maxWidth: "xl",
35
+ onClose: handleClose
36
+ }, /*#__PURE__*/_react["default"].createElement(_core.DialogTitle, null, "Using the search box", handleClose ? /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
37
+ "data-testid": "close-resultsDialog",
38
+ className: classes.closeButton,
39
+ onClick: function onClick() {
40
+ handleClose();
41
+ }
42
+ }, /*#__PURE__*/_react["default"].createElement(_Close["default"], null)) : null), /*#__PURE__*/_react["default"].createElement(_core.Divider, null), /*#__PURE__*/_react["default"].createElement(_core.DialogContent, null, /*#__PURE__*/_react["default"].createElement("h3", null, "Searching"), /*#__PURE__*/_react["default"].createElement("ul", null, /*#__PURE__*/_react["default"].createElement("li", null, "Jump to a feature or reference sequence by typing its name in the location box and pressing Enter."), /*#__PURE__*/_react["default"].createElement("li", null, "Jump to a specific region by typing the region into the location box as: ", /*#__PURE__*/_react["default"].createElement("code", null, "ref:start..end"), " or ", /*#__PURE__*/_react["default"].createElement("code", null, "ref:start-end"), ". Commas are allowed in the start and end coordinates. A space-separated list of locstrings can be used to open up multiple chromosomes at a time")), /*#__PURE__*/_react["default"].createElement("h3", null, "Example Searches"), /*#__PURE__*/_react["default"].createElement("ul", null, /*#__PURE__*/_react["default"].createElement("li", null, /*#__PURE__*/_react["default"].createElement("code", null, "BRCA"), " - searches for the feature named BRCA"), /*#__PURE__*/_react["default"].createElement("li", null, /*#__PURE__*/_react["default"].createElement("code", null, "chr4"), " - jumps to chromosome 4"), /*#__PURE__*/_react["default"].createElement("li", null, /*#__PURE__*/_react["default"].createElement("code", null, "chr4:79,500,000..80,000,000"), " - jumps the region on chromosome 4 between 79.5Mb and 80Mb."), /*#__PURE__*/_react["default"].createElement("li", null, /*#__PURE__*/_react["default"].createElement("code", null, "chr1:1-100 chr2:1-100"), " - create a split view of chr1:1-100 and chr2:1-100"), /*#__PURE__*/_react["default"].createElement("li", null, /*#__PURE__*/_react["default"].createElement("code", null, "chr1 chr2 chr3"), " - open up multiple chromosomes at once"), /*#__PURE__*/_react["default"].createElement("li", null, /*#__PURE__*/_react["default"].createElement("code", null, "chr1:1-100[rev] chr2:1-100"), " - open up the first region in the horizontally flipped orientation"))), /*#__PURE__*/_react["default"].createElement(_core.Divider, null), /*#__PURE__*/_react["default"].createElement(_core.DialogActions, null, /*#__PURE__*/_react["default"].createElement(_core.Button, {
43
+ onClick: function onClick() {
44
+ return handleClose();
45
+ },
46
+ color: "primary"
47
+ }, "Close")));
48
+ }