@jbrowse/plugin-variants 2.1.3 → 2.1.5
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/ChordVariantDisplay/models/ChordVariantDisplay.d.ts +5 -3
- package/dist/ChordVariantDisplay/models/ChordVariantDisplay.js +2 -1
- package/dist/ChordVariantDisplay/models/ChordVariantDisplay.js.map +1 -1
- package/dist/LinearVariantDisplay/model.d.ts +1 -1
- package/dist/StructuralVariantChordRenderer/ReactComponent.d.ts +32 -22
- package/dist/StructuralVariantChordRenderer/ReactComponent.js +11 -25
- package/dist/StructuralVariantChordRenderer/ReactComponent.js.map +1 -1
- package/dist/StructuralVariantChordRenderer/index.d.ts +3 -2
- package/dist/StructuralVariantChordRenderer/index.js +1 -1
- package/dist/StructuralVariantChordRenderer/index.js.map +1 -1
- package/esm/ChordVariantDisplay/models/ChordVariantDisplay.d.ts +5 -3
- package/esm/ChordVariantDisplay/models/ChordVariantDisplay.js +2 -1
- package/esm/ChordVariantDisplay/models/ChordVariantDisplay.js.map +1 -1
- package/esm/LinearVariantDisplay/model.d.ts +1 -1
- package/esm/StructuralVariantChordRenderer/ReactComponent.d.ts +32 -22
- package/esm/StructuralVariantChordRenderer/ReactComponent.js +13 -24
- package/esm/StructuralVariantChordRenderer/ReactComponent.js.map +1 -1
- package/esm/StructuralVariantChordRenderer/index.d.ts +3 -2
- package/esm/StructuralVariantChordRenderer/index.js +1 -1
- package/esm/StructuralVariantChordRenderer/index.js.map +1 -1
- package/package.json +2 -2
- package/src/ChordVariantDisplay/models/{ChordVariantDisplay.js → ChordVariantDisplay.ts} +5 -2
- package/src/StructuralVariantChordRenderer/{ReactComponent.js → ReactComponent.tsx} +67 -34
- package/src/StructuralVariantChordRenderer/{index.js → index.ts} +3 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import PluginManager from '@jbrowse/core/PluginManager';
|
|
3
|
+
declare const ChordVariantDisplayF: (pluginManager: PluginManager) => {
|
|
3
4
|
stateModel: import("mobx-state-tree").IModelType<{
|
|
4
5
|
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
5
6
|
type: import("mobx-state-tree").ISimpleType<string>;
|
|
@@ -91,7 +92,8 @@ declare function ChordVariantDisplayF(pluginManager: any): {
|
|
|
91
92
|
afterAttach(): void;
|
|
92
93
|
} & {
|
|
93
94
|
readonly rendererTypeName: any;
|
|
94
|
-
renderProps():
|
|
95
|
+
renderProps(): Record<string, unknown>;
|
|
95
96
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
96
97
|
configSchema: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
|
|
97
98
|
};
|
|
99
|
+
export default ChordVariantDisplayF;
|
|
@@ -5,7 +5,7 @@ const configuration_1 = require("@jbrowse/core/configuration");
|
|
|
5
5
|
const mobx_state_tree_1 = require("mobx-state-tree");
|
|
6
6
|
const util_1 = require("@jbrowse/core/util");
|
|
7
7
|
const tracks_1 = require("@jbrowse/core/util/tracks");
|
|
8
|
-
const ChordVariantDisplayF = pluginManager => {
|
|
8
|
+
const ChordVariantDisplayF = (pluginManager) => {
|
|
9
9
|
const configSchema = (0, configuration_1.ConfigurationSchema)('ChordVariantDisplay', {
|
|
10
10
|
renderer: mobx_state_tree_1.types.optional(pluginManager.pluggableConfigSchemaType('renderer'), { type: 'StructuralVariantChordRenderer' }),
|
|
11
11
|
}, { baseConfiguration: plugin_circular_view_1.baseChordDisplayConfig, explicitlyTyped: true });
|
|
@@ -26,6 +26,7 @@ const ChordVariantDisplayF = pluginManager => {
|
|
|
26
26
|
displayModel: self,
|
|
27
27
|
bezierRadius: view.radiusPx * self.bezierRadiusRatio,
|
|
28
28
|
radius: view.radiusPx,
|
|
29
|
+
// @ts-ignore
|
|
29
30
|
blockDefinitions: this.blockDefinitions,
|
|
30
31
|
config: self.configuration.renderer,
|
|
31
32
|
onChordClick: self.onChordClick,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChordVariantDisplay.js","sourceRoot":"","sources":["../../../src/ChordVariantDisplay/models/ChordVariantDisplay.
|
|
1
|
+
{"version":3,"file":"ChordVariantDisplay.js","sourceRoot":"","sources":["../../../src/ChordVariantDisplay/models/ChordVariantDisplay.ts"],"names":[],"mappings":";;AAAA,wEAGsC;AACtC,+DAGoC;AACpC,qDAAuC;AACvC,6CAAsD;AACtD,sDAAgE;AAGhE,MAAM,oBAAoB,GAAG,CAAC,aAA4B,EAAE,EAAE;IAC5D,MAAM,YAAY,GAAG,IAAA,mCAAmB,EACtC,qBAAqB,EACrB;QACE,QAAQ,EAAE,uBAAK,CAAC,QAAQ,CACtB,aAAa,CAAC,yBAAyB,CAAC,UAAU,CAAC,EACnD,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAC3C;KACF,EACD,EAAE,iBAAiB,EAAE,6CAAsB,EAAE,eAAe,EAAE,IAAI,EAAE,CACrE,CAAA;IAED,MAAM,UAAU,GAAG,uBAAK;SACrB,OAAO,CACN,qBAAqB,EACrB,4CAAqB,EACrB,uBAAK,CAAC,KAAK,CAAC;QACV,IAAI,EAAE,uBAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC;QAC1C,aAAa,EAAE,IAAA,sCAAsB,EAAC,YAAY,CAAC;KACpD,CAAC,CACH;SACA,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,gBAAgB;YAClB,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAA;QACzC,CAAC;QAED,WAAW;YACT,MAAM,IAAI,GAAG,IAAA,wBAAiB,EAAC,IAAI,CAAC,CAAA;YACpC,OAAO;gBACL,GAAG,IAAA,6BAAoB,EAAC,IAAI,CAAC;gBAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB;gBACpD,MAAM,EAAE,IAAI,CAAC,QAAQ;gBAErB,aAAa;gBACb,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ;gBACnC,YAAY,EAAE,IAAI,CAAC,YAAY;aAChC,CAAA;QACH,CAAC;KACF,CAAC,CAAC,CAAA;IAEL,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAA;AACrC,CAAC,CAAA;AAED,0EAA0E;AAE1E,wDAAwD;AAExD,2BAA2B;AAC3B,EAAE;AACF,kBAAe,oBAAoB,CAAA"}
|
|
@@ -175,7 +175,7 @@ export default function (configSchema: LinearVariantDisplayConfigModel): import(
|
|
|
175
175
|
afterAttach(): void;
|
|
176
176
|
} & {
|
|
177
177
|
regionCannotBeRenderedText(_region: import("@jbrowse/core/util").Region): "" | "Force load to see features";
|
|
178
|
-
regionCannotBeRendered(_region: import("@jbrowse/core/util").Region): JSX.Element |
|
|
178
|
+
regionCannotBeRendered(_region: import("@jbrowse/core/util").Region): JSX.Element | null;
|
|
179
179
|
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
180
180
|
contextMenuItems(): {
|
|
181
181
|
label: string;
|
|
@@ -1,24 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const bezierRadius: PropTypes.Validator<number>;
|
|
10
|
-
const selectedFeatureId: PropTypes.Requireable<string>;
|
|
11
|
-
const onChordClick: PropTypes.Requireable<NonNullable<string | ((...args: any[]) => any) | null | undefined>>;
|
|
12
|
-
}
|
|
13
|
-
namespace defaultProps {
|
|
14
|
-
const displayModel_1: undefined;
|
|
15
|
-
export { displayModel_1 as displayModel };
|
|
16
|
-
const selectedFeatureId_1: string;
|
|
17
|
-
export { selectedFeatureId_1 as selectedFeatureId };
|
|
18
|
-
const onChordClick_1: undefined;
|
|
19
|
-
export { onChordClick_1 as onChordClick };
|
|
20
|
-
}
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Feature } from '@jbrowse/core/util';
|
|
3
|
+
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
4
|
+
interface Region {
|
|
5
|
+
end: number;
|
|
6
|
+
start: number;
|
|
7
|
+
refName: string;
|
|
8
|
+
elided?: false;
|
|
21
9
|
}
|
|
10
|
+
interface ElidedRegion {
|
|
11
|
+
elided: true;
|
|
12
|
+
regions: Region[];
|
|
13
|
+
}
|
|
14
|
+
declare type AnyRegion = Region | ElidedRegion;
|
|
15
|
+
interface Block {
|
|
16
|
+
flipped: boolean;
|
|
17
|
+
bpPerRadian: number;
|
|
18
|
+
startRadians: number;
|
|
19
|
+
region: AnyRegion;
|
|
20
|
+
}
|
|
21
|
+
declare function StructuralVariantChords(props: {
|
|
22
|
+
features: Map<string, Feature>;
|
|
23
|
+
radius: number;
|
|
24
|
+
config: AnyConfigurationModel;
|
|
25
|
+
displayModel: {
|
|
26
|
+
id: string;
|
|
27
|
+
selectedFeatureId: string;
|
|
28
|
+
};
|
|
29
|
+
blockDefinitions: Block[];
|
|
30
|
+
bezierRadius: number;
|
|
31
|
+
onChordClick: (feature: Feature, reg: AnyRegion, endBlock: AnyRegion, evt: unknown) => void;
|
|
32
|
+
}): JSX.Element;
|
|
33
|
+
declare const _default: typeof StructuralVariantChords;
|
|
22
34
|
export default _default;
|
|
23
|
-
import PropTypes from "prop-types";
|
|
24
|
-
import React from "react";
|
|
@@ -22,23 +22,17 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
26
|
const react_1 = __importStar(require("react"));
|
|
30
27
|
const mobx_react_1 = require("mobx-react");
|
|
31
28
|
const util_1 = require("@jbrowse/core/util");
|
|
32
29
|
const configuration_1 = require("@jbrowse/core/configuration");
|
|
33
|
-
const mst_1 = require("@jbrowse/core/util/types/mst");
|
|
34
30
|
const vcf_1 = require("@gmod/vcf");
|
|
35
|
-
const prop_types_1 = __importDefault(require("prop-types"));
|
|
36
31
|
function bpToRadians(block, pos) {
|
|
37
32
|
const blockStart = block.region.elided ? 0 : block.region.start;
|
|
38
33
|
const blockEnd = block.region.elided ? 0 : block.region.end;
|
|
39
34
|
const bpOffset = block.flipped ? blockEnd - pos : pos - blockStart;
|
|
40
|
-
|
|
41
|
-
return radians;
|
|
35
|
+
return bpOffset / block.bpPerRadian + block.startRadians;
|
|
42
36
|
}
|
|
43
37
|
const Chord = (0, mobx_react_1.observer)(function Chord({ feature, blocksForRefs, radius, config, bezierRadius, selected, onClick, }) {
|
|
44
38
|
var _a, _b, _c, _d, _e;
|
|
@@ -92,14 +86,22 @@ const Chord = (0, mobx_react_1.observer)(function Chord({ feature, blocksForRefs
|
|
|
92
86
|
const hoverStrokeColor = (0, configuration_1.readConfObject)(config, 'strokeColorHover', {
|
|
93
87
|
feature,
|
|
94
88
|
});
|
|
95
|
-
return (react_1.default.createElement("path", { "data-testid": `chord-${feature.id()}`, d: ['M', ...startXY, 'Q', ...controlXY, ...endXY].join(' '), style: { stroke: strokeColor }, onClick: evt =>
|
|
89
|
+
return (react_1.default.createElement("path", { "data-testid": `chord-${feature.id()}`, d: ['M', ...startXY, 'Q', ...controlXY, ...endXY].join(' '), style: { stroke: strokeColor }, onClick: evt => {
|
|
90
|
+
if (endBlock && startBlock) {
|
|
91
|
+
onClick(feature, startBlock.region, endBlock.region, evt);
|
|
92
|
+
}
|
|
93
|
+
}, onMouseOver: evt => {
|
|
96
94
|
if (!selected) {
|
|
95
|
+
// @ts-ignore
|
|
97
96
|
evt.target.style.stroke = hoverStrokeColor;
|
|
97
|
+
// @ts-ignore
|
|
98
98
|
evt.target.style.strokeWidth = 3;
|
|
99
99
|
}
|
|
100
100
|
}, onMouseOut: evt => {
|
|
101
101
|
if (!selected) {
|
|
102
|
+
// @ts-ignore
|
|
102
103
|
evt.target.style.stroke = strokeColor;
|
|
104
|
+
// @ts-ignore
|
|
103
105
|
evt.target.style.strokeWidth = 1;
|
|
104
106
|
}
|
|
105
107
|
} }));
|
|
@@ -125,7 +127,7 @@ function StructuralVariantChords(props) {
|
|
|
125
127
|
const chords = [];
|
|
126
128
|
for (const [id, feature] of features) {
|
|
127
129
|
const selected = String(selectedFeatureId) === String(feature.id());
|
|
128
|
-
chords.push(react_1.default.createElement(Chord, { key: id, feature: feature, config: config,
|
|
130
|
+
chords.push(react_1.default.createElement(Chord, { key: id, feature: feature, config: config, radius: radius, bezierRadius: bezierRadius, blocksForRefs: blocksForRefsMemo, selected: selected, onClick: onChordClick }));
|
|
129
131
|
}
|
|
130
132
|
const trackStyleId = `chords-${displayModel.id}`;
|
|
131
133
|
return (react_1.default.createElement("g", { id: trackStyleId, "data-testid": "structuralVariantChordRenderer" },
|
|
@@ -141,21 +143,5 @@ function StructuralVariantChords(props) {
|
|
|
141
143
|
} }),
|
|
142
144
|
chords));
|
|
143
145
|
}
|
|
144
|
-
StructuralVariantChords.propTypes = {
|
|
145
|
-
features: prop_types_1.default.instanceOf(Map).isRequired,
|
|
146
|
-
config: mst_1.PropTypes.ConfigSchema.isRequired,
|
|
147
|
-
displayModel: mobx_react_1.PropTypes.objectOrObservableObject,
|
|
148
|
-
blockDefinitions: prop_types_1.default.arrayOf(mobx_react_1.PropTypes.objectOrObservableObject)
|
|
149
|
-
.isRequired,
|
|
150
|
-
radius: prop_types_1.default.number.isRequired,
|
|
151
|
-
bezierRadius: prop_types_1.default.number.isRequired,
|
|
152
|
-
selectedFeatureId: prop_types_1.default.string,
|
|
153
|
-
onChordClick: prop_types_1.default.oneOfType([prop_types_1.default.func, prop_types_1.default.string]),
|
|
154
|
-
};
|
|
155
|
-
StructuralVariantChords.defaultProps = {
|
|
156
|
-
displayModel: undefined,
|
|
157
|
-
selectedFeatureId: '',
|
|
158
|
-
onChordClick: undefined,
|
|
159
|
-
};
|
|
160
146
|
exports.default = (0, mobx_react_1.observer)(StructuralVariantChords);
|
|
161
147
|
//# sourceMappingURL=ReactComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactComponent.js","sourceRoot":"","sources":["../../src/StructuralVariantChordRenderer/ReactComponent.
|
|
1
|
+
{"version":3,"file":"ReactComponent.js","sourceRoot":"","sources":["../../src/StructuralVariantChordRenderer/ReactComponent.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import ChordRendererType from '@jbrowse/core/pluggableElementTypes/renderers/CircularChordRendererType';
|
|
2
|
+
import PluginManager from '@jbrowse/core/PluginManager';
|
|
3
|
+
declare const ChordRendererConfigF: (pluginManager: PluginManager) => ChordRendererType;
|
|
1
4
|
export default ChordRendererConfigF;
|
|
2
|
-
declare function ChordRendererConfigF(pluginManager: any): ChordRendererType;
|
|
3
|
-
import ChordRendererType from "@jbrowse/core/pluggableElementTypes/renderers/CircularChordRendererType";
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const CircularChordRendererType_1 = __importDefault(require("@jbrowse/core/pluggableElementTypes/renderers/CircularChordRendererType"));
|
|
7
7
|
const configuration_1 = require("@jbrowse/core/configuration");
|
|
8
8
|
const ReactComponent_1 = __importDefault(require("./ReactComponent"));
|
|
9
|
-
const ChordRendererConfigF = pluginManager => {
|
|
9
|
+
const ChordRendererConfigF = (pluginManager) => {
|
|
10
10
|
const configSchema = (0, configuration_1.ConfigurationSchema)('StructuralVariantChordRenderer', {
|
|
11
11
|
strokeColor: {
|
|
12
12
|
type: 'color',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/StructuralVariantChordRenderer/index.
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/StructuralVariantChordRenderer/index.ts"],"names":[],"mappings":";;;;;AAAA,wIAAuG;AACvG,+DAAiE;AAGjE,sEAA6C;AAE7C,MAAM,oBAAoB,GAAG,CAAC,aAA4B,EAAE,EAAE;IAC5D,MAAM,YAAY,GAAG,IAAA,mCAAmB,EACtC,gCAAgC,EAChC;QACE,WAAW,EAAE;YACX,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,4BAA4B;YACzC,YAAY,EAAE,sBAAsB;YACpC,eAAe,EAAE,CAAC,SAAS,CAAC;SAC7B;QACD,mBAAmB,EAAE;YACnB,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,iDAAiD;YAC9D,YAAY,EAAE,OAAO;YACrB,eAAe,EAAE,CAAC,SAAS,CAAC;SAC7B;QACD,gBAAgB,EAAE;YAChB,IAAI,EAAE,OAAO;YACb,WAAW,EACT,oEAAoE;YACtE,YAAY,EAAE,MAAM;YACpB,eAAe,EAAE,CAAC,SAAS,CAAC;SAC7B;KACF,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CAAA;IACD,OAAO,IAAI,mCAAiB,CAAC;QAC3B,IAAI,EAAE,gCAAgC;QACtC,cAAc,EAAd,wBAAc;QACd,YAAY;QACZ,aAAa;KACd,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,kBAAe,oBAAoB,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import PluginManager from '@jbrowse/core/PluginManager';
|
|
3
|
+
declare const ChordVariantDisplayF: (pluginManager: PluginManager) => {
|
|
3
4
|
stateModel: import("mobx-state-tree").IModelType<{
|
|
4
5
|
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
5
6
|
type: import("mobx-state-tree").ISimpleType<string>;
|
|
@@ -91,7 +92,8 @@ declare function ChordVariantDisplayF(pluginManager: any): {
|
|
|
91
92
|
afterAttach(): void;
|
|
92
93
|
} & {
|
|
93
94
|
readonly rendererTypeName: any;
|
|
94
|
-
renderProps():
|
|
95
|
+
renderProps(): Record<string, unknown>;
|
|
95
96
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
96
97
|
configSchema: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
|
|
97
98
|
};
|
|
99
|
+
export default ChordVariantDisplayF;
|
|
@@ -3,7 +3,7 @@ import { ConfigurationSchema, ConfigurationReference, } from '@jbrowse/core/conf
|
|
|
3
3
|
import { types } from 'mobx-state-tree';
|
|
4
4
|
import { getContainingView } from '@jbrowse/core/util';
|
|
5
5
|
import { getParentRenderProps } from '@jbrowse/core/util/tracks';
|
|
6
|
-
const ChordVariantDisplayF = pluginManager => {
|
|
6
|
+
const ChordVariantDisplayF = (pluginManager) => {
|
|
7
7
|
const configSchema = ConfigurationSchema('ChordVariantDisplay', {
|
|
8
8
|
renderer: types.optional(pluginManager.pluggableConfigSchemaType('renderer'), { type: 'StructuralVariantChordRenderer' }),
|
|
9
9
|
}, { baseConfiguration: baseChordDisplayConfig, explicitlyTyped: true });
|
|
@@ -24,6 +24,7 @@ const ChordVariantDisplayF = pluginManager => {
|
|
|
24
24
|
displayModel: self,
|
|
25
25
|
bezierRadius: view.radiusPx * self.bezierRadiusRatio,
|
|
26
26
|
radius: view.radiusPx,
|
|
27
|
+
// @ts-ignore
|
|
27
28
|
blockDefinitions: this.blockDefinitions,
|
|
28
29
|
config: self.configuration.renderer,
|
|
29
30
|
onChordClick: self.onChordClick,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChordVariantDisplay.js","sourceRoot":"","sources":["../../../src/ChordVariantDisplay/models/ChordVariantDisplay.
|
|
1
|
+
{"version":3,"file":"ChordVariantDisplay.js","sourceRoot":"","sources":["../../../src/ChordVariantDisplay/models/ChordVariantDisplay.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAGhE,MAAM,oBAAoB,GAAG,CAAC,aAA4B,EAAE,EAAE;IAC5D,MAAM,YAAY,GAAG,mBAAmB,CACtC,qBAAqB,EACrB;QACE,QAAQ,EAAE,KAAK,CAAC,QAAQ,CACtB,aAAa,CAAC,yBAAyB,CAAC,UAAU,CAAC,EACnD,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAC3C;KACF,EACD,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,eAAe,EAAE,IAAI,EAAE,CACrE,CAAA;IAED,MAAM,UAAU,GAAG,KAAK;SACrB,OAAO,CACN,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,CAAC,KAAK,CAAC;QACV,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC;QAC1C,aAAa,EAAE,sBAAsB,CAAC,YAAY,CAAC;KACpD,CAAC,CACH;SACA,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,gBAAgB;YAClB,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAA;QACzC,CAAC;QAED,WAAW;YACT,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;YACpC,OAAO;gBACL,GAAG,oBAAoB,CAAC,IAAI,CAAC;gBAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB;gBACpD,MAAM,EAAE,IAAI,CAAC,QAAQ;gBAErB,aAAa;gBACb,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ;gBACnC,YAAY,EAAE,IAAI,CAAC,YAAY;aAChC,CAAA;QACH,CAAC;KACF,CAAC,CAAC,CAAA;IAEL,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAA;AACrC,CAAC,CAAA;AAED,0EAA0E;AAE1E,wDAAwD;AAExD,2BAA2B;AAC3B,EAAE;AACF,eAAe,oBAAoB,CAAA"}
|
|
@@ -175,7 +175,7 @@ export default function (configSchema: LinearVariantDisplayConfigModel): import(
|
|
|
175
175
|
afterAttach(): void;
|
|
176
176
|
} & {
|
|
177
177
|
regionCannotBeRenderedText(_region: import("@jbrowse/core/util").Region): "" | "Force load to see features";
|
|
178
|
-
regionCannotBeRendered(_region: import("@jbrowse/core/util").Region): JSX.Element |
|
|
178
|
+
regionCannotBeRendered(_region: import("@jbrowse/core/util").Region): JSX.Element | null;
|
|
179
179
|
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
180
180
|
contextMenuItems(): {
|
|
181
181
|
label: string;
|
|
@@ -1,24 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const bezierRadius: PropTypes.Validator<number>;
|
|
10
|
-
const selectedFeatureId: PropTypes.Requireable<string>;
|
|
11
|
-
const onChordClick: PropTypes.Requireable<NonNullable<string | ((...args: any[]) => any) | null | undefined>>;
|
|
12
|
-
}
|
|
13
|
-
namespace defaultProps {
|
|
14
|
-
const displayModel_1: undefined;
|
|
15
|
-
export { displayModel_1 as displayModel };
|
|
16
|
-
const selectedFeatureId_1: string;
|
|
17
|
-
export { selectedFeatureId_1 as selectedFeatureId };
|
|
18
|
-
const onChordClick_1: undefined;
|
|
19
|
-
export { onChordClick_1 as onChordClick };
|
|
20
|
-
}
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Feature } from '@jbrowse/core/util';
|
|
3
|
+
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
4
|
+
interface Region {
|
|
5
|
+
end: number;
|
|
6
|
+
start: number;
|
|
7
|
+
refName: string;
|
|
8
|
+
elided?: false;
|
|
21
9
|
}
|
|
10
|
+
interface ElidedRegion {
|
|
11
|
+
elided: true;
|
|
12
|
+
regions: Region[];
|
|
13
|
+
}
|
|
14
|
+
declare type AnyRegion = Region | ElidedRegion;
|
|
15
|
+
interface Block {
|
|
16
|
+
flipped: boolean;
|
|
17
|
+
bpPerRadian: number;
|
|
18
|
+
startRadians: number;
|
|
19
|
+
region: AnyRegion;
|
|
20
|
+
}
|
|
21
|
+
declare function StructuralVariantChords(props: {
|
|
22
|
+
features: Map<string, Feature>;
|
|
23
|
+
radius: number;
|
|
24
|
+
config: AnyConfigurationModel;
|
|
25
|
+
displayModel: {
|
|
26
|
+
id: string;
|
|
27
|
+
selectedFeatureId: string;
|
|
28
|
+
};
|
|
29
|
+
blockDefinitions: Block[];
|
|
30
|
+
bezierRadius: number;
|
|
31
|
+
onChordClick: (feature: Feature, reg: AnyRegion, endBlock: AnyRegion, evt: unknown) => void;
|
|
32
|
+
}): JSX.Element;
|
|
33
|
+
declare const _default: typeof StructuralVariantChords;
|
|
22
34
|
export default _default;
|
|
23
|
-
import PropTypes from "prop-types";
|
|
24
|
-
import React from "react";
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import React, { useMemo } from 'react';
|
|
2
|
-
import { observer
|
|
2
|
+
import { observer } from 'mobx-react';
|
|
3
3
|
import { polarToCartesian } from '@jbrowse/core/util';
|
|
4
|
-
import { readConfObject } from '@jbrowse/core/configuration';
|
|
5
|
-
import { PropTypes as CommonPropTypes } from '@jbrowse/core/util/types/mst';
|
|
4
|
+
import { readConfObject, } from '@jbrowse/core/configuration';
|
|
6
5
|
import { parseBreakend } from '@gmod/vcf';
|
|
7
|
-
import PropTypes from 'prop-types';
|
|
8
6
|
function bpToRadians(block, pos) {
|
|
9
7
|
const blockStart = block.region.elided ? 0 : block.region.start;
|
|
10
8
|
const blockEnd = block.region.elided ? 0 : block.region.end;
|
|
11
9
|
const bpOffset = block.flipped ? blockEnd - pos : pos - blockStart;
|
|
12
|
-
|
|
13
|
-
return radians;
|
|
10
|
+
return bpOffset / block.bpPerRadian + block.startRadians;
|
|
14
11
|
}
|
|
15
12
|
const Chord = observer(function Chord({ feature, blocksForRefs, radius, config, bezierRadius, selected, onClick, }) {
|
|
16
13
|
var _a, _b, _c, _d, _e;
|
|
@@ -64,14 +61,22 @@ const Chord = observer(function Chord({ feature, blocksForRefs, radius, config,
|
|
|
64
61
|
const hoverStrokeColor = readConfObject(config, 'strokeColorHover', {
|
|
65
62
|
feature,
|
|
66
63
|
});
|
|
67
|
-
return (React.createElement("path", { "data-testid": `chord-${feature.id()}`, d: ['M', ...startXY, 'Q', ...controlXY, ...endXY].join(' '), style: { stroke: strokeColor }, onClick: evt =>
|
|
64
|
+
return (React.createElement("path", { "data-testid": `chord-${feature.id()}`, d: ['M', ...startXY, 'Q', ...controlXY, ...endXY].join(' '), style: { stroke: strokeColor }, onClick: evt => {
|
|
65
|
+
if (endBlock && startBlock) {
|
|
66
|
+
onClick(feature, startBlock.region, endBlock.region, evt);
|
|
67
|
+
}
|
|
68
|
+
}, onMouseOver: evt => {
|
|
68
69
|
if (!selected) {
|
|
70
|
+
// @ts-ignore
|
|
69
71
|
evt.target.style.stroke = hoverStrokeColor;
|
|
72
|
+
// @ts-ignore
|
|
70
73
|
evt.target.style.strokeWidth = 3;
|
|
71
74
|
}
|
|
72
75
|
}, onMouseOut: evt => {
|
|
73
76
|
if (!selected) {
|
|
77
|
+
// @ts-ignore
|
|
74
78
|
evt.target.style.stroke = strokeColor;
|
|
79
|
+
// @ts-ignore
|
|
75
80
|
evt.target.style.strokeWidth = 1;
|
|
76
81
|
}
|
|
77
82
|
} }));
|
|
@@ -97,7 +102,7 @@ function StructuralVariantChords(props) {
|
|
|
97
102
|
const chords = [];
|
|
98
103
|
for (const [id, feature] of features) {
|
|
99
104
|
const selected = String(selectedFeatureId) === String(feature.id());
|
|
100
|
-
chords.push(React.createElement(Chord, { key: id, feature: feature, config: config,
|
|
105
|
+
chords.push(React.createElement(Chord, { key: id, feature: feature, config: config, radius: radius, bezierRadius: bezierRadius, blocksForRefs: blocksForRefsMemo, selected: selected, onClick: onChordClick }));
|
|
101
106
|
}
|
|
102
107
|
const trackStyleId = `chords-${displayModel.id}`;
|
|
103
108
|
return (React.createElement("g", { id: trackStyleId, "data-testid": "structuralVariantChordRenderer" },
|
|
@@ -113,21 +118,5 @@ function StructuralVariantChords(props) {
|
|
|
113
118
|
} }),
|
|
114
119
|
chords));
|
|
115
120
|
}
|
|
116
|
-
StructuralVariantChords.propTypes = {
|
|
117
|
-
features: PropTypes.instanceOf(Map).isRequired,
|
|
118
|
-
config: CommonPropTypes.ConfigSchema.isRequired,
|
|
119
|
-
displayModel: MobxPropTypes.objectOrObservableObject,
|
|
120
|
-
blockDefinitions: PropTypes.arrayOf(MobxPropTypes.objectOrObservableObject)
|
|
121
|
-
.isRequired,
|
|
122
|
-
radius: PropTypes.number.isRequired,
|
|
123
|
-
bezierRadius: PropTypes.number.isRequired,
|
|
124
|
-
selectedFeatureId: PropTypes.string,
|
|
125
|
-
onChordClick: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),
|
|
126
|
-
};
|
|
127
|
-
StructuralVariantChords.defaultProps = {
|
|
128
|
-
displayModel: undefined,
|
|
129
|
-
selectedFeatureId: '',
|
|
130
|
-
onChordClick: undefined,
|
|
131
|
-
};
|
|
132
121
|
export default observer(StructuralVariantChords);
|
|
133
122
|
//# sourceMappingURL=ReactComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactComponent.js","sourceRoot":"","sources":["../../src/StructuralVariantChordRenderer/ReactComponent.
|
|
1
|
+
{"version":3,"file":"ReactComponent.js","sourceRoot":"","sources":["../../src/StructuralVariantChordRenderer/ReactComponent.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import ChordRendererType from '@jbrowse/core/pluggableElementTypes/renderers/CircularChordRendererType';
|
|
2
|
+
import PluginManager from '@jbrowse/core/PluginManager';
|
|
3
|
+
declare const ChordRendererConfigF: (pluginManager: PluginManager) => ChordRendererType;
|
|
1
4
|
export default ChordRendererConfigF;
|
|
2
|
-
declare function ChordRendererConfigF(pluginManager: any): ChordRendererType;
|
|
3
|
-
import ChordRendererType from "@jbrowse/core/pluggableElementTypes/renderers/CircularChordRendererType";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import ChordRendererType from '@jbrowse/core/pluggableElementTypes/renderers/CircularChordRendererType';
|
|
2
2
|
import { ConfigurationSchema } from '@jbrowse/core/configuration';
|
|
3
3
|
import ReactComponent from './ReactComponent';
|
|
4
|
-
const ChordRendererConfigF = pluginManager => {
|
|
4
|
+
const ChordRendererConfigF = (pluginManager) => {
|
|
5
5
|
const configSchema = ConfigurationSchema('StructuralVariantChordRenderer', {
|
|
6
6
|
strokeColor: {
|
|
7
7
|
type: 'color',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/StructuralVariantChordRenderer/index.
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/StructuralVariantChordRenderer/index.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,yEAAyE,CAAA;AACvG,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAGjE,OAAO,cAAc,MAAM,kBAAkB,CAAA;AAE7C,MAAM,oBAAoB,GAAG,CAAC,aAA4B,EAAE,EAAE;IAC5D,MAAM,YAAY,GAAG,mBAAmB,CACtC,gCAAgC,EAChC;QACE,WAAW,EAAE;YACX,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,4BAA4B;YACzC,YAAY,EAAE,sBAAsB;YACpC,eAAe,EAAE,CAAC,SAAS,CAAC;SAC7B;QACD,mBAAmB,EAAE;YACnB,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,iDAAiD;YAC9D,YAAY,EAAE,OAAO;YACrB,eAAe,EAAE,CAAC,SAAS,CAAC;SAC7B;QACD,gBAAgB,EAAE;YAChB,IAAI,EAAE,OAAO;YACb,WAAW,EACT,oEAAoE;YACtE,YAAY,EAAE,MAAM;YACpB,eAAe,EAAE,CAAC,SAAS,CAAC;SAC7B;KACF,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CAAA;IACD,OAAO,IAAI,iBAAiB,CAAC;QAC3B,IAAI,EAAE,gCAAgC;QACtC,cAAc;QACd,YAAY;QACZ,aAAa;KACd,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,eAAe,oBAAoB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-variants",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.5",
|
|
4
4
|
"description": "JBrowse 2 variant adapters, tracks, etc.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"distModule": "esm/index.js",
|
|
66
66
|
"srcModule": "src/index.ts",
|
|
67
67
|
"module": "esm/index.js",
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "bc5253ecdddeceeb999fffebf6dc6cf5f444e1c9"
|
|
69
69
|
}
|
|
@@ -9,8 +9,9 @@ import {
|
|
|
9
9
|
import { types } from 'mobx-state-tree'
|
|
10
10
|
import { getContainingView } from '@jbrowse/core/util'
|
|
11
11
|
import { getParentRenderProps } from '@jbrowse/core/util/tracks'
|
|
12
|
+
import PluginManager from '@jbrowse/core/PluginManager'
|
|
12
13
|
|
|
13
|
-
const ChordVariantDisplayF = pluginManager => {
|
|
14
|
+
const ChordVariantDisplayF = (pluginManager: PluginManager) => {
|
|
14
15
|
const configSchema = ConfigurationSchema(
|
|
15
16
|
'ChordVariantDisplay',
|
|
16
17
|
{
|
|
@@ -36,7 +37,7 @@ const ChordVariantDisplayF = pluginManager => {
|
|
|
36
37
|
return self.configuration.renderer.type
|
|
37
38
|
},
|
|
38
39
|
|
|
39
|
-
renderProps() {
|
|
40
|
+
renderProps(): Record<string, unknown> {
|
|
40
41
|
const view = getContainingView(self)
|
|
41
42
|
return {
|
|
42
43
|
...getParentRenderProps(self),
|
|
@@ -44,6 +45,8 @@ const ChordVariantDisplayF = pluginManager => {
|
|
|
44
45
|
displayModel: self,
|
|
45
46
|
bezierRadius: view.radiusPx * self.bezierRadiusRatio,
|
|
46
47
|
radius: view.radiusPx,
|
|
48
|
+
|
|
49
|
+
// @ts-ignore
|
|
47
50
|
blockDefinitions: this.blockDefinitions,
|
|
48
51
|
config: self.configuration.renderer,
|
|
49
52
|
onChordClick: self.onChordClick,
|
|
@@ -1,17 +1,38 @@
|
|
|
1
1
|
import React, { useMemo } from 'react'
|
|
2
|
-
import { observer
|
|
3
|
-
import { polarToCartesian } from '@jbrowse/core/util'
|
|
4
|
-
import {
|
|
5
|
-
|
|
2
|
+
import { observer } from 'mobx-react'
|
|
3
|
+
import { polarToCartesian, Feature } from '@jbrowse/core/util'
|
|
4
|
+
import {
|
|
5
|
+
AnyConfigurationModel,
|
|
6
|
+
readConfObject,
|
|
7
|
+
} from '@jbrowse/core/configuration'
|
|
6
8
|
import { parseBreakend } from '@gmod/vcf'
|
|
7
|
-
import PropTypes from 'prop-types'
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
interface Region {
|
|
11
|
+
end: number
|
|
12
|
+
start: number
|
|
13
|
+
refName: string
|
|
14
|
+
elided?: false
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
interface ElidedRegion {
|
|
18
|
+
elided: true
|
|
19
|
+
regions: Region[]
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
type AnyRegion = Region | ElidedRegion
|
|
23
|
+
|
|
24
|
+
interface Block {
|
|
25
|
+
flipped: boolean
|
|
26
|
+
bpPerRadian: number
|
|
27
|
+
startRadians: number
|
|
28
|
+
region: AnyRegion
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function bpToRadians(block: Block, pos: number) {
|
|
10
32
|
const blockStart = block.region.elided ? 0 : block.region.start
|
|
11
33
|
const blockEnd = block.region.elided ? 0 : block.region.end
|
|
12
34
|
const bpOffset = block.flipped ? blockEnd - pos : pos - blockStart
|
|
13
|
-
|
|
14
|
-
return radians
|
|
35
|
+
return bpOffset / block.bpPerRadian + block.startRadians
|
|
15
36
|
}
|
|
16
37
|
|
|
17
38
|
const Chord = observer(function Chord({
|
|
@@ -22,6 +43,19 @@ const Chord = observer(function Chord({
|
|
|
22
43
|
bezierRadius,
|
|
23
44
|
selected,
|
|
24
45
|
onClick,
|
|
46
|
+
}: {
|
|
47
|
+
feature: Feature
|
|
48
|
+
blocksForRefs: { [key: string]: Block }
|
|
49
|
+
radius: number
|
|
50
|
+
config: AnyConfigurationModel
|
|
51
|
+
bezierRadius: number
|
|
52
|
+
selected: boolean
|
|
53
|
+
onClick: (
|
|
54
|
+
feature: Feature,
|
|
55
|
+
reg: AnyRegion,
|
|
56
|
+
endBlock: AnyRegion,
|
|
57
|
+
evt: unknown,
|
|
58
|
+
) => void
|
|
25
59
|
}) {
|
|
26
60
|
// find the blocks that our start and end points belong to
|
|
27
61
|
const startBlock = blocksForRefs[feature.get('refName')]
|
|
@@ -35,7 +69,7 @@ const Chord = observer(function Chord({
|
|
|
35
69
|
svType = 'mate'
|
|
36
70
|
}
|
|
37
71
|
let endPosition
|
|
38
|
-
let endBlock
|
|
72
|
+
let endBlock: Block | undefined
|
|
39
73
|
const alt = feature.get('ALT')?.[0]
|
|
40
74
|
const bnd = alt && parseBreakend(alt)
|
|
41
75
|
if (bnd) {
|
|
@@ -80,18 +114,24 @@ const Chord = observer(function Chord({
|
|
|
80
114
|
data-testid={`chord-${feature.id()}`}
|
|
81
115
|
d={['M', ...startXY, 'Q', ...controlXY, ...endXY].join(' ')}
|
|
82
116
|
style={{ stroke: strokeColor }}
|
|
83
|
-
onClick={evt =>
|
|
84
|
-
|
|
85
|
-
|
|
117
|
+
onClick={evt => {
|
|
118
|
+
if (endBlock && startBlock) {
|
|
119
|
+
onClick(feature, startBlock.region, endBlock.region, evt)
|
|
120
|
+
}
|
|
121
|
+
}}
|
|
86
122
|
onMouseOver={evt => {
|
|
87
123
|
if (!selected) {
|
|
124
|
+
// @ts-ignore
|
|
88
125
|
evt.target.style.stroke = hoverStrokeColor
|
|
126
|
+
// @ts-ignore
|
|
89
127
|
evt.target.style.strokeWidth = 3
|
|
90
128
|
}
|
|
91
129
|
}}
|
|
92
130
|
onMouseOut={evt => {
|
|
93
131
|
if (!selected) {
|
|
132
|
+
// @ts-ignore
|
|
94
133
|
evt.target.style.stroke = strokeColor
|
|
134
|
+
// @ts-ignore
|
|
95
135
|
evt.target.style.strokeWidth = 1
|
|
96
136
|
}
|
|
97
137
|
}}
|
|
@@ -102,7 +142,20 @@ const Chord = observer(function Chord({
|
|
|
102
142
|
return null
|
|
103
143
|
})
|
|
104
144
|
|
|
105
|
-
function StructuralVariantChords(props
|
|
145
|
+
function StructuralVariantChords(props: {
|
|
146
|
+
features: Map<string, Feature>
|
|
147
|
+
radius: number
|
|
148
|
+
config: AnyConfigurationModel
|
|
149
|
+
displayModel: { id: string; selectedFeatureId: string }
|
|
150
|
+
blockDefinitions: Block[]
|
|
151
|
+
bezierRadius: number
|
|
152
|
+
onChordClick: (
|
|
153
|
+
feature: Feature,
|
|
154
|
+
reg: AnyRegion,
|
|
155
|
+
endBlock: AnyRegion,
|
|
156
|
+
evt: unknown,
|
|
157
|
+
) => void
|
|
158
|
+
}) {
|
|
106
159
|
const {
|
|
107
160
|
features,
|
|
108
161
|
config,
|
|
@@ -111,12 +164,11 @@ function StructuralVariantChords(props) {
|
|
|
111
164
|
radius,
|
|
112
165
|
bezierRadius,
|
|
113
166
|
displayModel: { selectedFeatureId },
|
|
114
|
-
|
|
115
167
|
onChordClick,
|
|
116
168
|
} = props
|
|
117
169
|
// make a map of refName -> blockDefinition
|
|
118
170
|
const blocksForRefsMemo = useMemo(() => {
|
|
119
|
-
const blocksForRefs = {}
|
|
171
|
+
const blocksForRefs = {} as { [key: string]: Block }
|
|
120
172
|
blockDefinitions.forEach(block => {
|
|
121
173
|
const regions = block.region.elided
|
|
122
174
|
? block.region.regions
|
|
@@ -136,7 +188,6 @@ function StructuralVariantChords(props) {
|
|
|
136
188
|
key={id}
|
|
137
189
|
feature={feature}
|
|
138
190
|
config={config}
|
|
139
|
-
displayModel={displayModel}
|
|
140
191
|
radius={radius}
|
|
141
192
|
bezierRadius={bezierRadius}
|
|
142
193
|
blocksForRefs={blocksForRefsMemo}
|
|
@@ -164,22 +215,4 @@ function StructuralVariantChords(props) {
|
|
|
164
215
|
)
|
|
165
216
|
}
|
|
166
217
|
|
|
167
|
-
StructuralVariantChords.propTypes = {
|
|
168
|
-
features: PropTypes.instanceOf(Map).isRequired,
|
|
169
|
-
config: CommonPropTypes.ConfigSchema.isRequired,
|
|
170
|
-
displayModel: MobxPropTypes.objectOrObservableObject,
|
|
171
|
-
blockDefinitions: PropTypes.arrayOf(MobxPropTypes.objectOrObservableObject)
|
|
172
|
-
.isRequired,
|
|
173
|
-
radius: PropTypes.number.isRequired,
|
|
174
|
-
bezierRadius: PropTypes.number.isRequired,
|
|
175
|
-
selectedFeatureId: PropTypes.string,
|
|
176
|
-
onChordClick: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
StructuralVariantChords.defaultProps = {
|
|
180
|
-
displayModel: undefined,
|
|
181
|
-
selectedFeatureId: '',
|
|
182
|
-
onChordClick: undefined,
|
|
183
|
-
}
|
|
184
|
-
|
|
185
218
|
export default observer(StructuralVariantChords)
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import ChordRendererType from '@jbrowse/core/pluggableElementTypes/renderers/CircularChordRendererType'
|
|
2
2
|
import { ConfigurationSchema } from '@jbrowse/core/configuration'
|
|
3
|
+
import PluginManager from '@jbrowse/core/PluginManager'
|
|
4
|
+
|
|
3
5
|
import ReactComponent from './ReactComponent'
|
|
4
6
|
|
|
5
|
-
const ChordRendererConfigF = pluginManager => {
|
|
7
|
+
const ChordRendererConfigF = (pluginManager: PluginManager) => {
|
|
6
8
|
const configSchema = ConfigurationSchema(
|
|
7
9
|
'StructuralVariantChordRenderer',
|
|
8
10
|
{
|