@jbrowse/plugin-arc 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/LICENSE +201 -0
  2. package/dist/ArcRenderer/ArcRenderer.d.ts +3 -0
  3. package/dist/ArcRenderer/ArcRenderer.js +10 -0
  4. package/dist/ArcRenderer/ArcRenderer.js.map +1 -0
  5. package/dist/ArcRenderer/ArcRendering.d.ts +4 -0
  6. package/dist/ArcRenderer/ArcRendering.js +62 -0
  7. package/dist/ArcRenderer/ArcRendering.js.map +1 -0
  8. package/dist/ArcRenderer/configSchema.d.ts +48 -0
  9. package/dist/ArcRenderer/configSchema.js +56 -0
  10. package/dist/ArcRenderer/configSchema.js.map +1 -0
  11. package/dist/ArcRenderer/index.d.ts +3 -0
  12. package/dist/ArcRenderer/index.js +17 -0
  13. package/dist/ArcRenderer/index.js.map +1 -0
  14. package/dist/LinearArcDisplay/configSchema.d.ts +32 -0
  15. package/dist/LinearArcDisplay/configSchema.js +25 -0
  16. package/dist/LinearArcDisplay/configSchema.js.map +1 -0
  17. package/dist/LinearArcDisplay/index.d.ts +3 -0
  18. package/dist/LinearArcDisplay/index.js +21 -0
  19. package/dist/LinearArcDisplay/index.js.map +1 -0
  20. package/dist/LinearArcDisplay/model.d.ts +303 -0
  21. package/dist/LinearArcDisplay/model.js +36 -0
  22. package/dist/LinearArcDisplay/model.js.map +1 -0
  23. package/dist/index.d.ts +6 -0
  24. package/dist/index.js +23 -0
  25. package/dist/index.js.map +1 -0
  26. package/esm/ArcRenderer/ArcRenderer.d.ts +3 -0
  27. package/esm/ArcRenderer/ArcRenderer.js +4 -0
  28. package/esm/ArcRenderer/ArcRenderer.js.map +1 -0
  29. package/esm/ArcRenderer/ArcRendering.d.ts +4 -0
  30. package/esm/ArcRenderer/ArcRendering.js +57 -0
  31. package/esm/ArcRenderer/ArcRendering.js.map +1 -0
  32. package/esm/ArcRenderer/configSchema.d.ts +48 -0
  33. package/esm/ArcRenderer/configSchema.js +54 -0
  34. package/esm/ArcRenderer/configSchema.js.map +1 -0
  35. package/esm/ArcRenderer/index.d.ts +3 -0
  36. package/esm/ArcRenderer/index.js +12 -0
  37. package/esm/ArcRenderer/index.js.map +1 -0
  38. package/esm/LinearArcDisplay/configSchema.d.ts +32 -0
  39. package/esm/LinearArcDisplay/configSchema.js +21 -0
  40. package/esm/LinearArcDisplay/configSchema.js.map +1 -0
  41. package/esm/LinearArcDisplay/index.d.ts +3 -0
  42. package/esm/LinearArcDisplay/index.js +19 -0
  43. package/esm/LinearArcDisplay/index.js.map +1 -0
  44. package/esm/LinearArcDisplay/model.d.ts +303 -0
  45. package/esm/LinearArcDisplay/model.js +32 -0
  46. package/esm/LinearArcDisplay/model.js.map +1 -0
  47. package/esm/index.d.ts +6 -0
  48. package/esm/index.js +17 -0
  49. package/esm/index.js.map +1 -0
  50. package/package.json +61 -0
  51. package/src/ArcRenderer/ArcRenderer.ts +3 -0
  52. package/src/ArcRenderer/ArcRendering.test.tsx +45 -0
  53. package/src/ArcRenderer/ArcRendering.tsx +131 -0
  54. package/src/ArcRenderer/__snapshots__/ArcRendering.test.tsx.snap +40 -0
  55. package/src/ArcRenderer/configSchema.ts +60 -0
  56. package/src/ArcRenderer/index.ts +17 -0
  57. package/src/LinearArcDisplay/configSchema.ts +29 -0
  58. package/src/LinearArcDisplay/index.ts +21 -0
  59. package/src/LinearArcDisplay/model.ts +40 -0
  60. package/src/declare.d.ts +1 -0
  61. package/src/index.ts +20 -0
@@ -0,0 +1,303 @@
1
+ /// <reference types="react" />
2
+ import { AnyConfigurationSchemaType } from '@jbrowse/core/configuration';
3
+ export declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): import("mobx-state-tree").IModelType<{
4
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
5
+ type: import("mobx-state-tree").ISimpleType<string>;
6
+ rpcDriverName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
7
+ } & {
8
+ heightPreConfig: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
9
+ } & {
10
+ userBpPerPxLimit: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
11
+ userByteSizeLimit: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
12
+ } & {
13
+ blockState: import("mobx-state-tree").IMapType<import("mobx-state-tree").IModelType<{
14
+ key: import("mobx-state-tree").ISimpleType<string>;
15
+ region: import("mobx-state-tree").IModelType<{
16
+ refName: import("mobx-state-tree").ISimpleType<string>;
17
+ start: import("mobx-state-tree").ISimpleType<number>;
18
+ end: import("mobx-state-tree").ISimpleType<number>;
19
+ reversed: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
20
+ } & {
21
+ assemblyName: import("mobx-state-tree").ISimpleType<string>;
22
+ }, {
23
+ setRefName(newRefName: string): void;
24
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
25
+ reloadFlag: import("mobx-state-tree").IType<number | undefined, number, number>;
26
+ isLeftEndOfDisplayedRegion: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
27
+ isRightEndOfDisplayedRegion: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
28
+ }, {
29
+ renderInProgress: AbortController | undefined;
30
+ filled: boolean;
31
+ reactElement: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
32
+ features: Map<string, import("@jbrowse/core/util").Feature> | undefined;
33
+ layout: any;
34
+ status: string;
35
+ error: unknown;
36
+ message: string | undefined;
37
+ maxHeightReached: boolean;
38
+ ReactComponent: ({ model, }: {
39
+ model: any;
40
+ }) => any;
41
+ renderProps: any;
42
+ } & {
43
+ doReload(): void;
44
+ afterAttach(): void;
45
+ setStatus(message: string): void;
46
+ setLoading(abortController: AbortController): void;
47
+ setMessage(messageText: string): void;
48
+ setRendered(props: {
49
+ reactElement: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
50
+ features: Map<string, import("@jbrowse/core/util").Feature>;
51
+ layout: any;
52
+ maxHeightReached: boolean;
53
+ renderProps: any;
54
+ } | undefined): void;
55
+ setError(error: unknown): void;
56
+ reload(): void;
57
+ beforeDestroy(): void;
58
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
59
+ configuration: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
60
+ maxFeatureScreenDensity: {
61
+ type: string;
62
+ description: string;
63
+ defaultValue: number;
64
+ };
65
+ fetchSizeLimit: {
66
+ type: string;
67
+ defaultValue: number;
68
+ description: string;
69
+ };
70
+ height: {
71
+ type: string;
72
+ defaultValue: number;
73
+ description: string;
74
+ };
75
+ mouseover: {
76
+ type: string;
77
+ description: string;
78
+ defaultValue: string;
79
+ contextVariable: string[];
80
+ };
81
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "displayId">>;
82
+ } & {
83
+ type: import("mobx-state-tree").ISimpleType<"LinearArcDisplay">;
84
+ configuration: AnyConfigurationSchemaType;
85
+ }, {
86
+ rendererTypeName: string;
87
+ error: unknown;
88
+ message: string | undefined;
89
+ } & {
90
+ readonly RenderingComponent: import("react").FC<{
91
+ model: {
92
+ id: string;
93
+ type: string;
94
+ rpcDriverName: string | undefined;
95
+ } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
96
+ rendererTypeName: string;
97
+ error: unknown;
98
+ message: string | undefined;
99
+ } & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
100
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
101
+ type: import("mobx-state-tree").ISimpleType<string>;
102
+ rpcDriverName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
103
+ }, {
104
+ rendererTypeName: string;
105
+ error: unknown;
106
+ message: string | undefined;
107
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
108
+ onHorizontalScroll?: Function | undefined;
109
+ blockState?: Record<string, any> | undefined;
110
+ }>;
111
+ readonly DisplayBlurb: import("react").FC<{
112
+ model: {
113
+ id: string;
114
+ type: string;
115
+ rpcDriverName: string | undefined;
116
+ } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
117
+ rendererTypeName: string;
118
+ error: unknown;
119
+ message: string | undefined;
120
+ } & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
121
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
122
+ type: import("mobx-state-tree").ISimpleType<string>;
123
+ rpcDriverName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
124
+ }, {
125
+ rendererTypeName: string;
126
+ error: unknown;
127
+ message: string | undefined;
128
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
129
+ }> | null;
130
+ readonly adapterConfig: any;
131
+ readonly parentTrack: any;
132
+ renderProps(): any;
133
+ readonly rendererType: import("@jbrowse/core/pluggableElementTypes").RendererType;
134
+ readonly DisplayMessageComponent: import("react").FC<any> | undefined;
135
+ trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
136
+ readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
137
+ regionCannotBeRendered(): null;
138
+ } & {
139
+ setMessage(arg?: string | undefined): void;
140
+ setError(error?: unknown): void;
141
+ setRpcDriverName(rpcDriverName: string): void;
142
+ reload(): void;
143
+ } & {
144
+ scrollTop: number;
145
+ } & {
146
+ readonly height: number;
147
+ } & {
148
+ setScrollTop(scrollTop: number): void;
149
+ setHeight(displayHeight: number): number;
150
+ resizeHeight(distance: number): number;
151
+ } & {
152
+ featureDensityStatsP: Promise<import("@jbrowse/core/data_adapters/BaseAdapter").FeatureDensityStats> | undefined;
153
+ featureDensityStats: import("@jbrowse/core/data_adapters/BaseAdapter").FeatureDensityStats | undefined;
154
+ currStatsBpPerPx: number;
155
+ } & {
156
+ readonly currentBytesRequested: number;
157
+ readonly currentFeatureScreenDensity: number;
158
+ readonly maxFeatureScreenDensity: any;
159
+ readonly featureDensityStatsReady: boolean;
160
+ readonly maxAllowableBytes: number;
161
+ } & {
162
+ afterAttach(): void;
163
+ } & {
164
+ setCurrStatsBpPerPx(n: number): void;
165
+ setFeatureDensityStatsLimit(stats?: import("@jbrowse/core/data_adapters/BaseAdapter").FeatureDensityStats | undefined): void;
166
+ getFeatureDensityStats(): Promise<import("@jbrowse/core/data_adapters/BaseAdapter").FeatureDensityStats>;
167
+ setFeatureDensityStatsP(arg: any): void;
168
+ setFeatureDensityStats(featureDensityStats?: import("@jbrowse/core/data_adapters/BaseAdapter").FeatureDensityStats | undefined): void;
169
+ clearFeatureDensityStats(): void;
170
+ } & {
171
+ readonly regionTooLarge: boolean;
172
+ readonly regionTooLargeReason: string;
173
+ } & {
174
+ regionCannotBeRenderedText(_region: import("@jbrowse/core/util").Region): "" | "Force load to see features";
175
+ regionCannotBeRendered(_region: import("@jbrowse/core/util").Region): import("react").JSX.Element | null;
176
+ } & {
177
+ featureIdUnderMouse: string | undefined;
178
+ contextMenuFeature: import("@jbrowse/core/util").Feature | undefined;
179
+ } & {
180
+ readonly blockType: "dynamicBlocks" | "staticBlocks";
181
+ readonly blockDefinitions: import("@jbrowse/core/util/blockTypes").BlockSet;
182
+ } & {
183
+ readonly renderDelay: number;
184
+ readonly TooltipComponent: import("react").FC<any>;
185
+ readonly selectedFeatureId: string | undefined;
186
+ readonly DisplayMessageComponent: import("react").FC<any> | undefined;
187
+ } & {
188
+ readonly features: import("@jbrowse/core/util/compositeMap").default<string, import("@jbrowse/core/util").Feature>;
189
+ readonly featureUnderMouse: import("@jbrowse/core/util").Feature | undefined;
190
+ getFeatureOverlapping(blockKey: string, x: number, y: number): string | undefined;
191
+ getFeatureByID(blockKey: string, id: string): [number, number, number, number] | undefined;
192
+ searchFeatureByID(id: string): [number, number, number, number] | undefined;
193
+ } & {
194
+ addBlock(key: string, block: import("@jbrowse/core/util/blockTypes").BaseBlock): void;
195
+ deleteBlock(key: string): void;
196
+ selectFeature(feature: import("@jbrowse/core/util").Feature): void;
197
+ clearFeatureSelection(): void;
198
+ setFeatureIdUnderMouse(feature?: string | undefined): void;
199
+ setContextMenuFeature(feature?: import("@jbrowse/core/util").Feature | undefined): void;
200
+ } & {
201
+ reload(): Promise<void>;
202
+ } & {
203
+ trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
204
+ contextMenuItems(): import("@jbrowse/core/ui").MenuItem[];
205
+ renderProps(): any;
206
+ } & {
207
+ renderSvg(opts: import("@jbrowse/plugin-linear-genome-view").ExportSvgDisplayOptions): Promise<import("react").JSX.Element>;
208
+ afterAttach(): void;
209
+ } & {
210
+ readonly blockType: string;
211
+ readonly renderDelay: number;
212
+ renderProps(): any;
213
+ readonly rendererTypeName: any;
214
+ }, {
215
+ type: string;
216
+ } & Partial<import("mobx-state-tree/dist/internal").ExtractCFromProps<{
217
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
218
+ type: import("mobx-state-tree").ISimpleType<string>;
219
+ rpcDriverName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
220
+ } & {
221
+ heightPreConfig: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
222
+ } & {
223
+ userBpPerPxLimit: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
224
+ userByteSizeLimit: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
225
+ } & {
226
+ blockState: import("mobx-state-tree").IMapType<import("mobx-state-tree").IModelType<{
227
+ key: import("mobx-state-tree").ISimpleType<string>;
228
+ region: import("mobx-state-tree").IModelType<{
229
+ refName: import("mobx-state-tree").ISimpleType<string>;
230
+ start: import("mobx-state-tree").ISimpleType<number>;
231
+ end: import("mobx-state-tree").ISimpleType<number>;
232
+ reversed: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
233
+ } & {
234
+ assemblyName: import("mobx-state-tree").ISimpleType<string>;
235
+ }, {
236
+ setRefName(newRefName: string): void;
237
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
238
+ reloadFlag: import("mobx-state-tree").IType<number | undefined, number, number>;
239
+ isLeftEndOfDisplayedRegion: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
240
+ isRightEndOfDisplayedRegion: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
241
+ }, {
242
+ renderInProgress: AbortController | undefined;
243
+ filled: boolean;
244
+ reactElement: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
245
+ features: Map<string, import("@jbrowse/core/util").Feature> | undefined;
246
+ layout: any;
247
+ status: string;
248
+ error: unknown;
249
+ message: string | undefined;
250
+ maxHeightReached: boolean;
251
+ ReactComponent: ({ model, }: {
252
+ model: any;
253
+ }) => any;
254
+ renderProps: any;
255
+ } & {
256
+ doReload(): void;
257
+ afterAttach(): void;
258
+ setStatus(message: string): void;
259
+ setLoading(abortController: AbortController): void;
260
+ setMessage(messageText: string): void;
261
+ setRendered(props: {
262
+ reactElement: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
263
+ features: Map<string, import("@jbrowse/core/util").Feature>;
264
+ layout: any;
265
+ maxHeightReached: boolean;
266
+ renderProps: any;
267
+ } | undefined): void;
268
+ setError(error: unknown): void;
269
+ reload(): void;
270
+ beforeDestroy(): void;
271
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
272
+ configuration: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
273
+ maxFeatureScreenDensity: {
274
+ type: string;
275
+ description: string;
276
+ defaultValue: number;
277
+ };
278
+ fetchSizeLimit: {
279
+ type: string;
280
+ defaultValue: number;
281
+ description: string;
282
+ };
283
+ height: {
284
+ type: string;
285
+ defaultValue: number;
286
+ description: string;
287
+ };
288
+ mouseover: {
289
+ type: string;
290
+ description: string;
291
+ defaultValue: string;
292
+ contextVariable: string[];
293
+ };
294
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "displayId">>;
295
+ }>> & import("mobx-state-tree/dist/internal").NonEmptyObject & import("mobx-state-tree")._NotCustomized, {
296
+ type: string;
297
+ id: string;
298
+ configuration: import("mobx-state-tree").ModelSnapshotType<Record<string, any>>;
299
+ rpcDriverName: string | undefined;
300
+ heightPreConfig: number | undefined;
301
+ userBpPerPxLimit: number | undefined;
302
+ userByteSizeLimit: number | undefined;
303
+ } & import("mobx-state-tree")._NotCustomized>;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stateModelFactory = void 0;
4
+ const configuration_1 = require("@jbrowse/core/configuration");
5
+ const mobx_state_tree_1 = require("mobx-state-tree");
6
+ const plugin_linear_genome_view_1 = require("@jbrowse/plugin-linear-genome-view");
7
+ function stateModelFactory(configSchema) {
8
+ return mobx_state_tree_1.types
9
+ .compose('LinearArcDisplay', plugin_linear_genome_view_1.BaseLinearDisplay, mobx_state_tree_1.types.model({
10
+ type: mobx_state_tree_1.types.literal('LinearArcDisplay'),
11
+ configuration: (0, configuration_1.ConfigurationReference)(configSchema),
12
+ }))
13
+ .views(self => {
14
+ const { renderProps: superRenderProps } = self;
15
+ return {
16
+ get blockType() {
17
+ return 'staticBlocks';
18
+ },
19
+ get renderDelay() {
20
+ return 500;
21
+ },
22
+ renderProps() {
23
+ return {
24
+ ...superRenderProps(),
25
+ rpcDriverName: self.rpcDriverName,
26
+ config: self.configuration.renderer,
27
+ };
28
+ },
29
+ get rendererTypeName() {
30
+ return self.configuration.renderer.type;
31
+ },
32
+ };
33
+ });
34
+ }
35
+ exports.stateModelFactory = stateModelFactory;
36
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/LinearArcDisplay/model.ts"],"names":[],"mappings":";;;AAAA,+DAGoC;AACpC,qDAAuC;AACvC,kFAAsE;AAEtE,SAAgB,iBAAiB,CAAC,YAAwC;IACxE,OAAO,uBAAK;SACT,OAAO,CACN,kBAAkB,EAClB,6CAAiB,EACjB,uBAAK,CAAC,KAAK,CAAC;QACV,IAAI,EAAE,uBAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC;QACvC,aAAa,EAAE,IAAA,sCAAsB,EAAC,YAAY,CAAC;KACpD,CAAC,CACH;SAEA,KAAK,CAAC,IAAI,CAAC,EAAE;QACZ,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAA;QAC9C,OAAO;YACL,IAAI,SAAS;gBACX,OAAO,cAAc,CAAA;YACvB,CAAC;YACD,IAAI,WAAW;gBACb,OAAO,GAAG,CAAA;YACZ,CAAC;YACD,WAAW;gBACT,OAAO;oBACL,GAAG,gBAAgB,EAAE;oBACrB,aAAa,EAAE,IAAI,CAAC,aAAa;oBACjC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ;iBACpC,CAAA;YACH,CAAC;YACD,IAAI,gBAAgB;gBAClB,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAA;YACzC,CAAC;SACF,CAAA;IACH,CAAC,CAAC,CAAA;AACN,CAAC;AAhCD,8CAgCC"}
@@ -0,0 +1,6 @@
1
+ import Plugin from '@jbrowse/core/Plugin';
2
+ import PluginManager from '@jbrowse/core/PluginManager';
3
+ export default class ArcPlugin extends Plugin {
4
+ name: string;
5
+ install(pluginManager: PluginManager): void;
6
+ }
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const Plugin_1 = __importDefault(require("@jbrowse/core/Plugin"));
7
+ const LinearArcDisplay_1 = __importDefault(require("./LinearArcDisplay"));
8
+ const ArcRenderer_1 = __importDefault(require("./ArcRenderer"));
9
+ class ArcPlugin extends Plugin_1.default {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.name = 'ArcRenderer';
13
+ }
14
+ install(pluginManager) {
15
+ (0, ArcRenderer_1.default)(pluginManager);
16
+ (0, LinearArcDisplay_1.default)(pluginManager);
17
+ pluginManager.jexl.addFunction('logThickness', (feature, attributeName) => {
18
+ return Math.log(feature.get(attributeName) + 1);
19
+ });
20
+ }
21
+ }
22
+ exports.default = ArcPlugin;
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,kEAAyC;AAEzC,0EAAkD;AAClD,gEAAwC;AAGxC,MAAqB,SAAU,SAAQ,gBAAM;IAA7C;;QACE,SAAI,GAAG,aAAa,CAAA;IAYtB,CAAC;IAXC,OAAO,CAAC,aAA4B;QAClC,IAAA,qBAAY,EAAC,aAAa,CAAC,CAAA;QAC3B,IAAA,0BAAiB,EAAC,aAAa,CAAC,CAAA;QAEhC,aAAa,CAAC,IAAI,CAAC,WAAW,CAC5B,cAAc,EACd,CAAC,OAAgB,EAAE,aAAqB,EAAE,EAAE;YAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;QACjD,CAAC,CACF,CAAA;IACH,CAAC;CACF;AAbD,4BAaC"}
@@ -0,0 +1,3 @@
1
+ import FeatureRendererType from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
2
+ export default class extends FeatureRendererType {
3
+ }
@@ -0,0 +1,4 @@
1
+ import FeatureRendererType from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
2
+ export default class extends FeatureRendererType {
3
+ }
4
+ //# sourceMappingURL=ArcRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArcRenderer.js","sourceRoot":"","sources":["../../src/ArcRenderer/ArcRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,mEAAmE,CAAA;AAEnG,MAAM,CAAC,OAAO,MAAO,SAAQ,mBAAmB;CAAG"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ declare function ArcRendering(props: any): React.JSX.Element;
3
+ declare const _default: typeof ArcRendering;
4
+ export default _default;
@@ -0,0 +1,57 @@
1
+ import React from 'react';
2
+ import { readConfObject } from '@jbrowse/core/configuration';
3
+ import { bpSpanPx, measureText } from '@jbrowse/core/util';
4
+ import { observer } from 'mobx-react';
5
+ import { Tooltip } from 'react-svg-tooltip';
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+ function ArcRendering(props) {
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
+ const onClick = (event, id) => {
10
+ const { onFeatureClick: handler } = props;
11
+ if (!handler) {
12
+ return undefined;
13
+ }
14
+ return handler(event, id);
15
+ };
16
+ const { features, config, regions, blockKey, bpPerPx, displayModel: { selectedFeatureId }, } = props;
17
+ const [region] = regions;
18
+ const arcsRendered = [];
19
+ for (const feature of features.values()) {
20
+ const [left, right] = bpSpanPx(feature.get('start'), feature.get('end'), region, bpPerPx);
21
+ const featureId = feature.id();
22
+ const id = blockKey + '-' + featureId;
23
+ let stroke = readConfObject(config, 'color', { feature });
24
+ let textStroke = 'black';
25
+ if (selectedFeatureId &&
26
+ String(selectedFeatureId) === String(feature.id())) {
27
+ stroke = textStroke = 'red';
28
+ }
29
+ const label = readConfObject(config, 'label', { feature });
30
+ const caption = readConfObject(config, 'caption', { feature });
31
+ const strokeWidth = readConfObject(config, 'thickness', { feature }) || 1;
32
+ const height = readConfObject(config, 'height', { feature }) || 100;
33
+ const ref = React.createRef();
34
+ const tooltipWidth = 20 + measureText(caption === null || caption === void 0 ? void 0 : caption.toString());
35
+ const t = 0.5;
36
+ // formula: https://en.wikipedia.org/wiki/B%C3%A9zier_curve#Cubic_B%C3%A9zier_curves
37
+ const textYCoord = (1 - t) * (1 - t) * (1 - t) * 0 +
38
+ 3 * ((1 - t) * (1 - t)) * (t * height) +
39
+ 3 * (1 - t) * (t * t) * height +
40
+ t * t * t * 0;
41
+ arcsRendered.push(React.createElement("g", { key: id, onClick: e => onClick(e, featureId) },
42
+ React.createElement("path", { id: id, d: `M ${left} 0 C ${left} ${height}, ${right} ${height}, ${right} 0`, stroke: stroke, strokeWidth: strokeWidth, fill: "transparent", onClick: e => onClick(e, featureId), ref: ref, pointerEvents: "stroke" }),
43
+ React.createElement(Tooltip, { triggerRef: ref },
44
+ React.createElement("rect", { x: 12, y: 0, width: tooltipWidth, height: 20, rx: 5, ry: 5, fill: "black", fillOpacity: "50%" }),
45
+ React.createElement("text", { x: 22, y: 14, fontSize: 10, fill: "white", textLength: tooltipWidth - 20 }, caption)),
46
+ React.createElement("text", { x: left + (right - left) / 2, y: textYCoord + 3, style: { stroke: 'white', strokeWidth: '0.6em' } }, label),
47
+ React.createElement("text", { x: left + (right - left) / 2, y: textYCoord + 3, style: { stroke: textStroke } }, label)));
48
+ }
49
+ const width = (region.end - region.start) / bpPerPx;
50
+ const height = 500;
51
+ return (React.createElement("svg", { className: "ArcRendering", width: width, height: height, style: {
52
+ outline: 'none',
53
+ position: 'relative',
54
+ } }, arcsRendered));
55
+ }
56
+ export default observer(ArcRendering);
57
+ //# sourceMappingURL=ArcRendering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArcRendering.js","sourceRoot":"","sources":["../../src/ArcRenderer/ArcRendering.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ declare const ArcRenderer: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
2
+ /**
3
+ * #slot
4
+ */
5
+ color: {
6
+ type: string;
7
+ description: string;
8
+ defaultValue: string;
9
+ contextVariable: string[];
10
+ };
11
+ /**
12
+ * #slot
13
+ */
14
+ thickness: {
15
+ type: string;
16
+ description: string;
17
+ defaultValue: string;
18
+ contextVariable: string[];
19
+ };
20
+ /**
21
+ * #slot
22
+ */
23
+ label: {
24
+ type: string;
25
+ description: string;
26
+ defaultValue: string;
27
+ contextVariable: string[];
28
+ };
29
+ /**
30
+ * #slot
31
+ */
32
+ height: {
33
+ type: string;
34
+ description: string;
35
+ defaultValue: string;
36
+ contextVariable: string[];
37
+ };
38
+ /**
39
+ * #slot
40
+ */
41
+ caption: {
42
+ type: string;
43
+ description: string;
44
+ defaultValue: string;
45
+ contextVariable: string[];
46
+ };
47
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
48
+ export default ArcRenderer;
@@ -0,0 +1,54 @@
1
+ import { ConfigurationSchema } from '@jbrowse/core/configuration';
2
+ /**
3
+ * #config ArcRenderer
4
+ */
5
+ function x() { } // eslint-disable-line @typescript-eslint/no-unused-vars
6
+ const ArcRenderer = ConfigurationSchema('ArcRenderer', {
7
+ /**
8
+ * #slot
9
+ */
10
+ color: {
11
+ type: 'color',
12
+ description: 'the color of the arcs',
13
+ defaultValue: 'darkblue',
14
+ contextVariable: ['feature'],
15
+ },
16
+ /**
17
+ * #slot
18
+ */
19
+ thickness: {
20
+ type: 'number',
21
+ description: 'the thickness of the arcs',
22
+ defaultValue: `jexl:logThickness(feature,'score')`,
23
+ contextVariable: ['feature'],
24
+ },
25
+ /**
26
+ * #slot
27
+ */
28
+ label: {
29
+ type: 'string',
30
+ description: 'the label to appear at the apex of the arcs',
31
+ defaultValue: `jexl:get(feature,'score')`,
32
+ contextVariable: ['feature'],
33
+ },
34
+ /**
35
+ * #slot
36
+ */
37
+ height: {
38
+ type: 'number',
39
+ description: 'the height of the arcs',
40
+ defaultValue: `jexl:log10(get(feature,'end')-get(feature,'start'))*50`,
41
+ contextVariable: ['feature'],
42
+ },
43
+ /**
44
+ * #slot
45
+ */
46
+ caption: {
47
+ type: 'string',
48
+ description: 'the caption to appear when hovering over any point on the arcs',
49
+ defaultValue: `jexl:get(feature,'name')`,
50
+ contextVariable: ['feature'],
51
+ },
52
+ }, { explicitlyTyped: true });
53
+ export default ArcRenderer;
54
+ //# sourceMappingURL=configSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/ArcRenderer/configSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEjE;;GAEG;AACH,SAAS,CAAC,KAAI,CAAC,CAAC,wDAAwD;AAExE,MAAM,WAAW,GAAG,mBAAmB,CACrC,aAAa,EACb;IACE;;OAEG;IACH,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,uBAAuB;QACpC,YAAY,EAAE,UAAU;QACxB,eAAe,EAAE,CAAC,SAAS,CAAC;KAC7B;IACD;;OAEG;IACH,SAAS,EAAE;QACT,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,2BAA2B;QACxC,YAAY,EAAE,oCAAoC;QAClD,eAAe,EAAE,CAAC,SAAS,CAAC;KAC7B;IACD;;OAEG;IACH,KAAK,EAAE;QACL,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,6CAA6C;QAC1D,YAAY,EAAE,2BAA2B;QACzC,eAAe,EAAE,CAAC,SAAS,CAAC;KAC7B;IACD;;OAEG;IACH,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,wBAAwB;QACrC,YAAY,EAAE,wDAAwD;QACtE,eAAe,EAAE,CAAC,SAAS,CAAC;KAC7B;IACD;;OAEG;IACH,OAAO,EAAE;QACP,IAAI,EAAE,QAAQ;QACd,WAAW,EACT,gEAAgE;QAClE,YAAY,EAAE,0BAA0B;QACxC,eAAe,EAAE,CAAC,SAAS,CAAC;KAC7B;CACF,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CAAA;AACD,eAAe,WAAW,CAAA"}
@@ -0,0 +1,3 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager';
2
+ declare const _default: (pluginManager: PluginManager) => void;
3
+ export default _default;
@@ -0,0 +1,12 @@
1
+ import ReactComponent from './ArcRendering';
2
+ import configSchema from './configSchema';
3
+ import ArcRenderer from './ArcRenderer';
4
+ export default (pluginManager) => {
5
+ pluginManager.addRendererType(() => new ArcRenderer({
6
+ name: 'ArcRenderer',
7
+ ReactComponent,
8
+ configSchema,
9
+ pluginManager,
10
+ }));
11
+ };
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ArcRenderer/index.ts"],"names":[],"mappings":"AAEA,OAAO,cAAc,MAAM,gBAAgB,CAAA;AAC3C,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,WAAW,MAAM,eAAe,CAAA;AAEvC,eAAe,CAAC,aAA4B,EAAE,EAAE;IAC9C,aAAa,CAAC,eAAe,CAC3B,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;QACd,IAAI,EAAE,aAAa;QACnB,cAAc;QACd,YAAY;QACZ,aAAa;KACd,CAAC,CACL,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,32 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager';
2
+ /**
3
+ * #config LinearArcDisplay
4
+ */
5
+ export declare function configSchemaFactory(pluginManager: PluginManager): import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
6
+ /**
7
+ * #slot
8
+ */
9
+ renderer: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IAnyModelType, [undefined]>;
10
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
11
+ maxFeatureScreenDensity: {
12
+ type: string;
13
+ description: string;
14
+ defaultValue: number;
15
+ };
16
+ fetchSizeLimit: {
17
+ type: string;
18
+ defaultValue: number;
19
+ description: string;
20
+ };
21
+ height: {
22
+ type: string;
23
+ defaultValue: number;
24
+ description: string;
25
+ };
26
+ mouseover: {
27
+ type: string;
28
+ description: string;
29
+ defaultValue: string;
30
+ contextVariable: string[];
31
+ };
32
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "displayId">>, undefined>>;
@@ -0,0 +1,21 @@
1
+ import { types } from 'mobx-state-tree';
2
+ import { ConfigurationSchema } from '@jbrowse/core/configuration';
3
+ import { baseLinearDisplayConfigSchema } from '@jbrowse/plugin-linear-genome-view';
4
+ /**
5
+ * #config LinearArcDisplay
6
+ */
7
+ export function configSchemaFactory(pluginManager) {
8
+ return ConfigurationSchema('LinearArcDisplay', {
9
+ /**
10
+ * #slot
11
+ */
12
+ renderer: types.optional(pluginManager.pluggableConfigSchemaType('renderer'), { type: 'ArcRenderer' }),
13
+ }, {
14
+ /**
15
+ * #baseConfiguration
16
+ */
17
+ baseConfiguration: baseLinearDisplayConfigSchema,
18
+ explicitlyTyped: true,
19
+ });
20
+ }
21
+ //# sourceMappingURL=configSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/LinearArcDisplay/configSchema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAA;AAElF;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,aAA4B;IAC9D,OAAO,mBAAmB,CACxB,kBAAkB,EAClB;QACE;;WAEG;QACH,QAAQ,EAAE,KAAK,CAAC,QAAQ,CACtB,aAAa,CAAC,yBAAyB,CAAC,UAAU,CAAC,EACnD,EAAE,IAAI,EAAE,aAAa,EAAE,CACxB;KACF,EACD;QACE;;WAEG;QACH,iBAAiB,EAAE,6BAA6B;QAChD,eAAe,EAAE,IAAI;KACtB,CACF,CAAA;AACH,CAAC"}