jbrowse-plugin-gwas 2.0.6 → 2.1.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 (25) hide show
  1. package/dist/LinearManhattanDisplay/components/AddFiltersDialog.d.ts +10 -0
  2. package/dist/LinearManhattanDisplay/components/AddFiltersDialog.js +78 -0
  3. package/dist/LinearManhattanDisplay/components/AddFiltersDialog.js.map +1 -0
  4. package/dist/LinearManhattanDisplay/components/TooltipComponent.js.map +1 -0
  5. package/dist/LinearManhattanDisplay/stateModelFactory.d.ts +110 -22
  6. package/dist/LinearManhattanDisplay/stateModelFactory.js +94 -7
  7. package/dist/LinearManhattanDisplay/stateModelFactory.js.map +1 -1
  8. package/dist/LinearManhattanRenderer/LinearManhattanRenderer.d.ts +30 -14
  9. package/dist/LinearManhattanRenderer/LinearManhattanRenderer.js +33 -44
  10. package/dist/LinearManhattanRenderer/LinearManhattanRenderer.js.map +1 -1
  11. package/dist/LinearManhattanRenderer/util.d.ts +1 -0
  12. package/dist/LinearManhattanRenderer/util.js +14 -0
  13. package/dist/LinearManhattanRenderer/util.js.map +1 -0
  14. package/dist/jbrowse-plugin-gwas.umd.production.min.js +31 -32
  15. package/dist/jbrowse-plugin-gwas.umd.production.min.js.map +4 -4
  16. package/package.json +27 -26
  17. package/src/LinearManhattanDisplay/components/AddFiltersDialog.tsx +130 -0
  18. package/src/LinearManhattanDisplay/stateModelFactory.ts +141 -46
  19. package/src/LinearManhattanRenderer/LinearManhattanRenderer.ts +55 -46
  20. package/src/LinearManhattanRenderer/util.ts +13 -0
  21. package/dist/LinearManhattanDisplay/TooltipComponent.js.map +0 -1
  22. package/dist/out.js +0 -48498
  23. /package/dist/LinearManhattanDisplay/{TooltipComponent.d.ts → components/TooltipComponent.d.ts} +0 -0
  24. /package/dist/LinearManhattanDisplay/{TooltipComponent.js → components/TooltipComponent.js} +0 -0
  25. /package/src/LinearManhattanDisplay/{TooltipComponent.tsx → components/TooltipComponent.tsx} +0 -0
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ declare const AddFiltersDialog: ({ model, handleClose, }: {
3
+ model: {
4
+ jexlFilters?: string[];
5
+ activeFilters: string[];
6
+ setJexlFilters: (arg?: string[]) => void;
7
+ };
8
+ handleClose: () => void;
9
+ }) => React.JSX.Element;
10
+ export default AddFiltersDialog;
@@ -0,0 +1,78 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { Dialog } from '@jbrowse/core/ui';
3
+ import { stringToJexlExpression } from '@jbrowse/core/util/jexlStrings';
4
+ import { Button, DialogActions, DialogContent, TextField } from '@mui/material';
5
+ import { observer } from 'mobx-react';
6
+ import { makeStyles } from 'tss-react/mui';
7
+ const useStyles = makeStyles()({
8
+ dialogContent: {
9
+ width: '80em',
10
+ },
11
+ textAreaFont: {
12
+ fontFamily: 'Courier New',
13
+ },
14
+ error: {
15
+ color: 'red',
16
+ fontSize: '0.8em',
17
+ },
18
+ });
19
+ function checkJexl(code) {
20
+ stringToJexlExpression(code);
21
+ }
22
+ const AddFiltersDialog = observer(function ({ model, handleClose, }) {
23
+ const { classes } = useStyles();
24
+ const { activeFilters } = model;
25
+ const [data, setData] = useState(activeFilters.join('\n'));
26
+ const [error, setError] = useState();
27
+ useEffect(() => {
28
+ try {
29
+ data
30
+ .split('\n')
31
+ .map(line => line.trim())
32
+ .filter(line => !!line)
33
+ .map(line => {
34
+ checkJexl(line.trim());
35
+ });
36
+ setError(undefined);
37
+ }
38
+ catch (e) {
39
+ console.error(e);
40
+ setError(e);
41
+ }
42
+ }, [data]);
43
+ return (React.createElement(Dialog, { maxWidth: "xl", open: true, onClose: handleClose, title: "Add track filters" },
44
+ React.createElement(DialogContent, null,
45
+ React.createElement("div", null,
46
+ "Add filters, in jexl format, one per line, starting with the string jexl:. Examples:",
47
+ ' ',
48
+ React.createElement("ul", null,
49
+ React.createElement("li", null,
50
+ React.createElement("code", null, "jexl:get(feature,'name')=='BRCA1'"),
51
+ " - show only feature where the name attribute is BRCA1"),
52
+ React.createElement("li", null,
53
+ React.createElement("code", null, "jexl:get(feature,'type')=='gene'"),
54
+ " - show only gene type features in a GFF that has many other feature types"),
55
+ React.createElement("li", null,
56
+ React.createElement("code", null, "jexl:get(feature,'score') > 400"),
57
+ " - show only features that have a score greater than 400"))),
58
+ error ? React.createElement("p", { className: classes.error }, `${error}`) : null,
59
+ React.createElement(TextField, { variant: "outlined", multiline: true, minRows: 5, maxRows: 10, className: classes.dialogContent, fullWidth: true, value: data, onChange: event => {
60
+ setData(event.target.value);
61
+ }, slotProps: {
62
+ input: {
63
+ classes: {
64
+ input: classes.textAreaFont,
65
+ },
66
+ },
67
+ } })),
68
+ React.createElement(DialogActions, null,
69
+ React.createElement(Button, { variant: "contained", color: "primary", type: "submit", autoFocus: true, disabled: !!error, onClick: () => {
70
+ model.setJexlFilters(data.split('\n'));
71
+ handleClose();
72
+ } }, "Submit"),
73
+ React.createElement(Button, { variant: "contained", color: "secondary", onClick: () => {
74
+ handleClose();
75
+ } }, "Cancel"))));
76
+ });
77
+ export default AddFiltersDialog;
78
+ //# sourceMappingURL=AddFiltersDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddFiltersDialog.js","sourceRoot":"","sources":["../../../src/LinearManhattanDisplay/components/AddFiltersDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC7B,aAAa,EAAE;QACb,KAAK,EAAE,MAAM;KACd;IACD,YAAY,EAAE;QACZ,UAAU,EAAE,aAAa;KAC1B;IAED,KAAK,EAAE;QACL,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,OAAO;KAClB;CACF,CAAC,CAAA;AAEF,SAAS,SAAS,CAAC,IAAY;IAC7B,sBAAsB,CAAC,IAAI,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,EAC1C,KAAK,EACL,WAAW,GAQZ;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAA;IAC/B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC1D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAW,CAAA;IAE7C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC;YACH,IAAI;iBACD,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;iBACxB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;iBACtB,GAAG,CAAC,IAAI,CAAC,EAAE;gBACV,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YACxB,CAAC,CAAC,CAAA;YACJ,QAAQ,CAAC,SAAS,CAAC,CAAA;QACrB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAChB,QAAQ,CAAC,CAAC,CAAC,CAAA;QACb,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEV,OAAO,CACL,oBAAC,MAAM,IAAC,QAAQ,EAAC,IAAI,EAAC,IAAI,QAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAC,mBAAmB;QACxE,oBAAC,aAAa;YACZ;;gBAEmB,GAAG;gBACpB;oBACE;wBACE,sEAA8C;iFAE3C;oBACL;wBACE,qEAA6C;qGAE1C;oBACL;wBACE,oEAA+C;mFAE5C,CACF,CACD;YAEL,KAAK,CAAC,CAAC,CAAC,2BAAG,SAAS,EAAE,OAAO,CAAC,KAAK,IAAG,GAAG,KAAK,EAAE,CAAK,CAAC,CAAC,CAAC,IAAI;YAC7D,oBAAC,SAAS,IACR,OAAO,EAAC,UAAU,EAClB,SAAS,QACT,OAAO,EAAE,CAAC,EACV,OAAO,EAAE,EAAE,EACX,SAAS,EAAE,OAAO,CAAC,aAAa,EAChC,SAAS,QACT,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,KAAK,CAAC,EAAE;oBAChB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBAC7B,CAAC,EACD,SAAS,EAAE;oBACT,KAAK,EAAE;wBACL,OAAO,EAAE;4BACP,KAAK,EAAE,OAAO,CAAC,YAAY;yBAC5B;qBACF;iBACF,GACD,CACY;QAChB,oBAAC,aAAa;YACZ,oBAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,SAAS,EACf,IAAI,EAAC,QAAQ,EACb,SAAS,QACT,QAAQ,EAAE,CAAC,CAAC,KAAK,EACjB,OAAO,EAAE,GAAG,EAAE;oBACZ,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;oBACtC,WAAW,EAAE,CAAA;gBACf,CAAC,aAGM;YACT,oBAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,GAAG,EAAE;oBACZ,WAAW,EAAE,CAAA;gBACf,CAAC,aAGM,CACK,CACT,CACV,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,gBAAgB,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TooltipComponent.js","sourceRoot":"","sources":["../../../src/LinearManhattanDisplay/components/TooltipComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAerC,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CACtC,SAAS,gBAAgB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG;IAC/C,OAAO,CACL,6BAAK,GAAG,EAAE,GAAG;QACX,oBAAC,aAAa,IAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,GAAI,CAC7D,CACP,CAAA;AACH,CAAC,CACF,CAAA;AAID,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,KAO3C;IACC,OAAO,oBAAC,OAAO,IAAC,eAAe,EAAE,eAAe,KAAM,KAAK,GAAI,CAAA;AACjE,CAAC,CAAC,CAAA;AAEF,eAAe,gBAAgB,CAAA"}
@@ -1,6 +1,8 @@
1
+ import SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain';
1
2
  import type PluginManager from '@jbrowse/core/PluginManager';
3
+ import type { AnyConfigurationSchemaType } from '@jbrowse/core/configuration';
2
4
  import type { Feature } from '@jbrowse/core/util';
3
- export declare function stateModelFactory(pluginManager: PluginManager, configSchema: any): import("mobx-state-tree").IModelType<{
5
+ export declare function stateModelFactory(pluginManager: PluginManager, configSchema: AnyConfigurationSchemaType): import("mobx-state-tree").IModelType<{
4
6
  id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
5
7
  type: import("mobx-state-tree").ISimpleType<string>;
6
8
  rpcDriverName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
@@ -35,7 +37,7 @@ export declare function stateModelFactory(pluginManager: PluginManager, configSc
35
37
  status?: string;
36
38
  reactElement?: React.ReactElement;
37
39
  };
38
- }) => import("react").JSX.Element | undefined;
40
+ }) => import("react/jsx-runtime").JSX.Element | undefined;
39
41
  renderProps: any;
40
42
  } & {
41
43
  doReload(): void;
@@ -93,11 +95,20 @@ export declare function stateModelFactory(pluginManager: PluginManager, configSc
93
95
  max: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
94
96
  min: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
95
97
  }, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>, [undefined]>;
96
- configuration: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
98
+ configuration: AnyConfigurationSchemaType;
97
99
  } & {
98
100
  type: import("mobx-state-tree").ISimpleType<"LinearWiggleDisplay">;
101
+ invertedSetting: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<boolean>>;
99
102
  } & {
100
103
  type: import("mobx-state-tree").ISimpleType<"LinearManhattanDisplay">;
104
+ /**
105
+ * #property
106
+ */
107
+ configuration: AnyConfigurationSchemaType;
108
+ /**
109
+ * #property
110
+ */
111
+ jexlFilters: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IArrayType<import("mobx-state-tree").ISimpleType<string>>>;
101
112
  }, {
102
113
  rendererTypeName: string;
103
114
  error: unknown;
@@ -189,13 +200,13 @@ export declare function stateModelFactory(pluginManager: PluginManager, configSc
189
200
  } & {
190
201
  readonly statsReadyAndRegionNotTooLarge: boolean;
191
202
  regionCannotBeRenderedText(_region: import("@jbrowse/core/util").Region): "" | "Force load to see features";
192
- regionCannotBeRendered(_region: import("@jbrowse/core/util").Region): import("react").JSX.Element | null;
203
+ regionCannotBeRendered(_region: import("@jbrowse/core/util").Region): import("react/jsx-runtime").JSX.Element | null;
193
204
  } & {
194
205
  featureIdUnderMouse: undefined | string;
195
206
  contextMenuFeature: undefined | import("@jbrowse/core/util").Feature;
196
207
  } & {
197
- readonly DisplayMessageComponent: import("react").FC<any> | undefined;
198
- readonly blockType: "dynamicBlocks" | "staticBlocks";
208
+ readonly DisplayMessageComponent: undefined | React.FC<any>;
209
+ readonly blockType: "staticBlocks" | "dynamicBlocks";
199
210
  readonly blockDefinitions: import("@jbrowse/core/util/blockTypes").BlockSet;
200
211
  } & {
201
212
  readonly renderDelay: number;
@@ -210,7 +221,7 @@ export declare function stateModelFactory(pluginManager: PluginManager, configSc
210
221
  } & {
211
222
  addBlock(key: string, block: import("@jbrowse/core/util/blockTypes").BaseBlock): void;
212
223
  deleteBlock(key: string): void;
213
- selectFeature(feature: import("@jbrowse/core/util").Feature): void;
224
+ selectFeature(feature: import("@jbrowse/core/util").Feature): Promise<void>;
214
225
  navToFeature(feature: import("@jbrowse/core/util").Feature): void;
215
226
  clearFeatureSelection(): void;
216
227
  setFeatureIdUnderMouse(feature?: string): void;
@@ -222,7 +233,7 @@ export declare function stateModelFactory(pluginManager: PluginManager, configSc
222
233
  contextMenuItems(): import("@jbrowse/core/ui").MenuItem[];
223
234
  renderProps(): any;
224
235
  } & {
225
- renderSvg(opts: import("@jbrowse/plugin-linear-genome-view").ExportSvgDisplayOptions): Promise<import("react").JSX.Element>;
236
+ renderSvg(opts: import("@jbrowse/plugin-linear-genome-view").ExportSvgDisplayOptions): Promise<import("react/jsx-runtime").JSX.Element>;
226
237
  afterAttach(): void;
227
238
  } & {
228
239
  message: undefined | string;
@@ -256,11 +267,11 @@ export declare function stateModelFactory(pluginManager: PluginManager, configSc
256
267
  setCrossHatches(cross: boolean): void;
257
268
  } & {
258
269
  readonly adapterTypeName: any;
259
- readonly rendererTypeNameSimple: any;
270
+ readonly rendererTypeNameSimple: string;
260
271
  readonly filters: undefined;
261
- readonly scaleType: any;
262
- readonly maxScore: any;
263
- readonly minScore: any;
272
+ readonly scaleType: string;
273
+ readonly maxScore: number;
274
+ readonly minScore: number;
264
275
  } & {
265
276
  readonly adapterCapabilities: string[];
266
277
  readonly rendererConfig: {
@@ -271,10 +282,10 @@ export declare function stateModelFactory(pluginManager: PluginManager, configSc
271
282
  } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
272
283
  setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
273
284
  [x: string]: any;
274
- } & import("mobx-state-tree/dist/internal").NonEmptyObject & any & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
275
- } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
276
- } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>;
277
- readonly autoscaleType: any;
285
+ } & import("mobx-state-tree/dist/internal").NonEmptyObject & any & import("mobx-state-tree").IStateTreeNode<AnyConfigurationSchemaType>);
286
+ } & import("mobx-state-tree").IStateTreeNode<AnyConfigurationSchemaType>);
287
+ } & import("mobx-state-tree").IStateTreeNode<AnyConfigurationSchemaType>;
288
+ readonly autoscaleType: string;
278
289
  } & {
279
290
  readonly domain: number[] | undefined;
280
291
  } & {
@@ -287,9 +298,9 @@ export declare function stateModelFactory(pluginManager: PluginManager, configSc
287
298
  scoreMin: number;
288
299
  scoreMax: number;
289
300
  } | undefined;
290
- autoscaleType: any;
291
- scaleType: any;
292
- inverted: any;
301
+ autoscaleType: string;
302
+ scaleType: string;
303
+ inverted: boolean;
293
304
  };
294
305
  readonly canHaveFill: boolean;
295
306
  readonly displayCrossHatchesSetting: boolean;
@@ -319,10 +330,14 @@ export declare function stateModelFactory(pluginManager: PluginManager, configSc
319
330
  })[];
320
331
  } & {
321
332
  reload(): Promise<void>;
333
+ } & {
334
+ setInverted(arg: boolean): void;
322
335
  } & {
323
336
  readonly TooltipComponent: import("@jbrowse/core/util").AnyReactComponentType;
324
337
  readonly rendererTypeName: string;
325
338
  readonly quantitativeStatsRelevantToCurrentZoom: boolean;
339
+ readonly graphType: boolean;
340
+ readonly inverted: boolean;
326
341
  } & {
327
342
  adapterProps(): any;
328
343
  readonly ticks: {
@@ -333,12 +348,14 @@ export declare function stateModelFactory(pluginManager: PluginManager, configSc
333
348
  } | undefined;
334
349
  } & {
335
350
  renderProps(): any;
336
- readonly needsScalebar: boolean;
337
351
  readonly fillSetting: 2 | 1 | 0;
338
352
  readonly quantitativeStatsReady: boolean;
339
353
  } & {
340
354
  trackMenuItems(): (import("@jbrowse/core/ui").MenuDivider | import("@jbrowse/core/ui").MenuSubHeader | import("@jbrowse/core/ui").NormalMenuItem | import("@jbrowse/core/ui").CheckboxMenuItem | import("@jbrowse/core/ui").RadioMenuItem | import("@jbrowse/core/ui").SubMenuItem | {
341
355
  label: string;
356
+ icon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
357
+ muiName: string;
358
+ };
342
359
  subMenu: ({
343
360
  label: string;
344
361
  subMenu: {
@@ -363,6 +380,13 @@ export declare function stateModelFactory(pluginManager: PluginManager, configSc
363
380
  type?: undefined;
364
381
  checked?: undefined;
365
382
  onClick?: undefined;
383
+ } | {
384
+ label: string;
385
+ type: string;
386
+ checked: boolean;
387
+ onClick: () => void;
388
+ icon?: undefined;
389
+ subMenu?: undefined;
366
390
  } | {
367
391
  label: string;
368
392
  subMenu: {
@@ -371,11 +395,24 @@ export declare function stateModelFactory(pluginManager: PluginManager, configSc
371
395
  checked: boolean;
372
396
  onClick: () => void;
373
397
  }[];
398
+ icon?: undefined;
374
399
  type?: undefined;
375
400
  checked?: undefined;
376
401
  onClick?: undefined;
402
+ } | {
403
+ label: string;
404
+ icon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
405
+ muiName: string;
406
+ };
407
+ onClick: () => void;
408
+ subMenu?: undefined;
409
+ type?: undefined;
410
+ checked?: undefined;
377
411
  } | {
378
412
  type: string;
413
+ icon: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").SvgIconTypeMap<{}, "svg">> & {
414
+ muiName: string;
415
+ };
379
416
  label: string;
380
417
  checked: boolean;
381
418
  onClick: () => void;
@@ -383,19 +420,44 @@ export declare function stateModelFactory(pluginManager: PluginManager, configSc
383
420
  })[];
384
421
  } & {
385
422
  afterAttach(): void;
386
- renderSvg(opts: import("@jbrowse/plugin-linear-genome-view").ExportSvgDisplayOptions): Promise<import("react").JSX.Element>;
423
+ renderSvg(opts: import("@jbrowse/plugin-linear-genome-view").ExportSvgDisplayOptions): Promise<import("react/jsx-runtime").JSX.Element>;
387
424
  } & {
425
+ /**
426
+ * #getter
427
+ */
388
428
  readonly TooltipComponent: (props: {
389
- model: import("./TooltipComponent").Model;
429
+ model: import("./components/TooltipComponent").Model;
390
430
  height: number;
391
431
  offsetMouseCoord: [number, number];
392
432
  clientMouseCoord: [number, number];
393
433
  clientRect?: DOMRect;
394
434
  TooltipContents?: import("@jbrowse/plugin-wiggle").TooltipContentsComponent;
395
435
  }) => import("react").JSX.Element;
436
+ /**
437
+ * #getter
438
+ */
396
439
  readonly rendererTypeName: string;
440
+ /**
441
+ * #getter
442
+ * older way of showing y-scalebar
443
+ */
397
444
  readonly needsScalebar: boolean;
445
+ /**
446
+ * #getter
447
+ * newer way of showing y-scalebar
448
+ */
449
+ readonly graphType: boolean;
450
+ /**
451
+ * #getter
452
+ * never too large!
453
+ */
398
454
  readonly regionTooLarge: boolean;
455
+ /**
456
+ * #getter
457
+ * config jexlFilters are deferred evaluated so they are prepended with
458
+ * jexl at runtime rather than being stored with jexl in the config
459
+ */
460
+ readonly activeFilters: any;
399
461
  } & {
400
462
  /**
401
463
  * #action
@@ -404,5 +466,31 @@ export declare function stateModelFactory(pluginManager: PluginManager, configSc
404
466
  * model so listeners can detect a click
405
467
  */
406
468
  selectFeature(feature: Feature): void;
469
+ /**
470
+ * #action
471
+ */
472
+ setJexlFilters(f?: string[]): void;
473
+ } & {
474
+ /**
475
+ * #method
476
+ */
477
+ renderProps(): {
478
+ config: {
479
+ [x: string]: any;
480
+ } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
481
+ setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
482
+ [x: string]: any;
483
+ } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
484
+ setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
485
+ [x: string]: any;
486
+ } & import("mobx-state-tree/dist/internal").NonEmptyObject & any & import("mobx-state-tree").IStateTreeNode<AnyConfigurationSchemaType>);
487
+ } & import("mobx-state-tree").IStateTreeNode<AnyConfigurationSchemaType>);
488
+ } & import("mobx-state-tree").IStateTreeNode<AnyConfigurationSchemaType>;
489
+ filters: SerializableFilterChain;
490
+ };
491
+ /**
492
+ * #method
493
+ */
494
+ trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
407
495
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
408
496
  export type LinearManhattanDisplayModel = ReturnType<typeof stateModelFactory>;
@@ -1,26 +1,69 @@
1
+ import { lazy } from 'react';
2
+ import { ConfigurationReference, getConf } from '@jbrowse/core/configuration';
3
+ import SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain';
1
4
  import { getContainingTrack, getContainingView, getSession, isSelectionContainer, isSessionModelWithWidgets, } from '@jbrowse/core/util';
2
- import TooltipComponent from './TooltipComponent';
5
+ import { cast, types } from 'mobx-state-tree';
6
+ import TooltipComponent from './components/TooltipComponent';
7
+ // lazies
8
+ const AddFiltersDialog = lazy(() => import('./components/AddFiltersDialog'));
3
9
  export function stateModelFactory(pluginManager, configSchema) {
4
- const { types } = pluginManager.lib['mobx-state-tree'];
5
10
  const WigglePlugin = pluginManager.getPlugin('WigglePlugin');
6
11
  const { linearWiggleDisplayModelFactory } = WigglePlugin.exports;
7
- return types.compose('LinearManhattanDisplay', linearWiggleDisplayModelFactory(pluginManager, configSchema), types
8
- .model({
12
+ return types
13
+ .compose('LinearManhattanDisplay', linearWiggleDisplayModelFactory(pluginManager, configSchema), types.model({
9
14
  type: types.literal('LinearManhattanDisplay'),
10
- })
11
- .views(() => ({
15
+ /**
16
+ * #property
17
+ */
18
+ configuration: ConfigurationReference(configSchema),
19
+ /**
20
+ * #property
21
+ */
22
+ jexlFilters: types.maybe(types.array(types.string)),
23
+ }))
24
+ .views(self => ({
25
+ /**
26
+ * #getter
27
+ */
12
28
  get TooltipComponent() {
13
29
  return TooltipComponent;
14
30
  },
31
+ /**
32
+ * #getter
33
+ */
15
34
  get rendererTypeName() {
16
35
  return 'LinearManhattanRenderer';
17
36
  },
37
+ /**
38
+ * #getter
39
+ * older way of showing y-scalebar
40
+ */
18
41
  get needsScalebar() {
19
42
  return true;
20
43
  },
44
+ /**
45
+ * #getter
46
+ * newer way of showing y-scalebar
47
+ */
48
+ get graphType() {
49
+ return true;
50
+ },
51
+ /**
52
+ * #getter
53
+ * never too large!
54
+ */
21
55
  get regionTooLarge() {
22
56
  return false;
23
57
  },
58
+ /**
59
+ * #getter
60
+ * config jexlFilters are deferred evaluated so they are prepended with
61
+ * jexl at runtime rather than being stored with jexl in the config
62
+ */
63
+ get activeFilters() {
64
+ var _a;
65
+ return ((_a = self.jexlFilters) !== null && _a !== void 0 ? _a : getConf(self, 'jexlFilters').map((r) => `jexl:${r}`));
66
+ },
24
67
  }))
25
68
  .actions(self => ({
26
69
  /**
@@ -43,6 +86,50 @@ export function stateModelFactory(pluginManager, configSchema) {
43
86
  session.setSelection(feature);
44
87
  }
45
88
  },
46
- })));
89
+ /**
90
+ * #action
91
+ */
92
+ setJexlFilters(f) {
93
+ self.jexlFilters = cast(f);
94
+ },
95
+ }))
96
+ .views(self => {
97
+ const { trackMenuItems: superTrackMenuItems, renderProps: superRenderProps, } = self;
98
+ return {
99
+ /**
100
+ * #method
101
+ */
102
+ renderProps() {
103
+ const superProps = superRenderProps();
104
+ return {
105
+ ...superProps,
106
+ config: self.rendererConfig,
107
+ filters: new SerializableFilterChain({
108
+ filters: self.activeFilters,
109
+ }),
110
+ };
111
+ },
112
+ /**
113
+ * #method
114
+ */
115
+ trackMenuItems() {
116
+ return [
117
+ ...superTrackMenuItems(),
118
+ {
119
+ label: 'Edit filters',
120
+ onClick: () => {
121
+ getSession(self).queueDialog(handleClose => [
122
+ AddFiltersDialog,
123
+ {
124
+ model: self,
125
+ handleClose,
126
+ },
127
+ ]);
128
+ },
129
+ },
130
+ ];
131
+ },
132
+ };
133
+ });
47
134
  }
48
135
  //# sourceMappingURL=stateModelFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stateModelFactory.js","sourceRoot":"","sources":["../../src/LinearManhattanDisplay/stateModelFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAA;AAE3B,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AAMjD,MAAM,UAAU,iBAAiB,CAC/B,aAA4B,EAC5B,YAAiB;IAEjB,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IACtD,MAAM,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC,cAAc,CAAiB,CAAA;IAC5E,MAAM,EAAE,+BAA+B,EAAE,GAAG,YAAY,CAAC,OAAO,CAAA;IAChE,OAAO,KAAK,CAAC,OAAO,CAClB,wBAAwB,EACxB,+BAA+B,CAAC,aAAa,EAAE,YAAY,CAAC,EAC5D,KAAK;SACF,KAAK,CAAC;QACL,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC;KAC9C,CAAC;SACD,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACZ,IAAI,gBAAgB;YAClB,OAAO,gBAAgB,CAAA;QACzB,CAAC;QACD,IAAI,gBAAgB;YAClB,OAAO,yBAAyB,CAAA;QAClC,CAAC;QACD,IAAI,aAAa;YACf,OAAO,IAAI,CAAA;QACb,CAAC;QACD,IAAI,cAAc;YAChB,OAAO,KAAK,CAAA;QACd,CAAC;KACF,CAAC,CAAC;SACF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB;;;;;WAKG;QACH,aAAa,CAAC,OAAgB;YAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;YAChC,IAAI,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CACrC,mBAAmB,EACnB,aAAa,EACb;oBACE,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC;oBAC7B,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC;oBAC/B,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE;iBAC9B,CACF,CAAA;gBAED,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;YACnC,CAAC;YACD,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;KACF,CAAC,CAAC,CACN,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"stateModelFactory.js","sourceRoot":"","sources":["../../src/LinearManhattanDisplay/stateModelFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAE5B,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAC7E,OAAO,uBAAuB,MAAM,4EAA4E,CAAA;AAChH,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAE7C,OAAO,gBAAgB,MAAM,+BAA+B,CAAA;AAO5D,SAAS;AACT,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAA;AAE5E,MAAM,UAAU,iBAAiB,CAC/B,aAA4B,EAC5B,YAAwC;IAExC,MAAM,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC,cAAc,CAAiB,CAAA;IAC5E,MAAM,EAAE,+BAA+B,EAAE,GAAG,YAAY,CAAC,OAAO,CAAA;IAChE,OAAO,KAAK;SACT,OAAO,CACN,wBAAwB,EACxB,+BAA+B,CAAC,aAAa,EAAE,YAAY,CAAC,EAC5D,KAAK,CAAC,KAAK,CAAC;QACV,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC;QAC7C;;WAEG;QACH,aAAa,EAAE,sBAAsB,CAAC,YAAY,CAAC;QACnD;;WAEG;QACH,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KACpD,CAAC,CACH;SACA,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd;;WAEG;QACH,IAAI,gBAAgB;YAClB,OAAO,gBAAgB,CAAA;QACzB,CAAC;QACD;;WAEG;QACH,IAAI,gBAAgB;YAClB,OAAO,yBAAyB,CAAA;QAClC,CAAC;QACD;;;WAGG;QACH,IAAI,aAAa;YACf,OAAO,IAAI,CAAA;QACb,CAAC;QACD;;;WAGG;QACH,IAAI,SAAS;YACX,OAAO,IAAI,CAAA;QACb,CAAC;QACD;;;WAGG;QACH,IAAI,cAAc;YAChB,OAAO,KAAK,CAAA;QACd,CAAC;QACD;;;;WAIG;QACH,IAAI,aAAa;;YACf,OAAO,CACL,MAAA,IAAI,CAAC,WAAW,mCAChB,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAC7D,CAAA;QACH,CAAC;KACF,CAAC,CAAC;SACF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB;;;;;WAKG;QACH,aAAa,CAAC,OAAgB;YAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;YAChC,IAAI,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CACrC,mBAAmB,EACnB,aAAa,EACb;oBACE,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC;oBAC7B,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC;oBAC/B,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE;iBAC9B,CACF,CAAA;gBAED,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;YACnC,CAAC;YACD,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;QACD;;WAEG;QACH,cAAc,CAAC,CAAY;YACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAC5B,CAAC;KACF,CAAC,CAAC;SACF,KAAK,CAAC,IAAI,CAAC,EAAE;QACZ,MAAM,EACJ,cAAc,EAAE,mBAAmB,EACnC,WAAW,EAAE,gBAAgB,GAC9B,GAAG,IAAI,CAAA;QACR,OAAO;YACL;;eAEG;YACH,WAAW;gBACT,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAA;gBACrC,OAAO;oBACL,GAAI,UAA8C;oBAClD,MAAM,EAAE,IAAI,CAAC,cAAc;oBAC3B,OAAO,EAAE,IAAI,uBAAuB,CAAC;wBACnC,OAAO,EAAE,IAAI,CAAC,aAAa;qBAC5B,CAAC;iBACH,CAAA;YACH,CAAC;YACD;;eAEG;YACH,cAAc;gBACZ,OAAO;oBACL,GAAG,mBAAmB,EAAE;oBACxB;wBACE,KAAK,EAAE,cAAc;wBACrB,OAAO,EAAE,GAAG,EAAE;4BACZ,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;gCAC1C,gBAAgB;gCAChB;oCACE,KAAK,EAAE,IAAI;oCACX,WAAW;iCACZ;6BACF,CAAC,CAAA;wBACJ,CAAC;qBACF;iBACF,CAAA;YACH,CAAC;SACF,CAAA;IACH,CAAC,CAAC,CAAA;AACN,CAAC"}
@@ -1,5 +1,20 @@
1
+ import { AnyConfigurationModel } from '@jbrowse/core/configuration';
2
+ import { Feature, Region } from '@jbrowse/core/util';
1
3
  import type PluginManager from '@jbrowse/core/PluginManager';
2
- export declare function checkStopToken(stopToken?: string): void;
4
+ interface ManhattanProps {
5
+ features: Map<string, Feature>;
6
+ regions: Region[];
7
+ bpPerPx: number;
8
+ statusCallback?: (arg: string) => void;
9
+ config: AnyConfigurationModel;
10
+ scaleOpts: any;
11
+ height: number;
12
+ displayCrossHatches: boolean;
13
+ ticks: {
14
+ values: number[];
15
+ };
16
+ stopToken?: string;
17
+ }
3
18
  export default function rendererFactory(pluginManager: PluginManager): {
4
19
  new (stuff: {
5
20
  name: string;
@@ -8,50 +23,51 @@ export default function rendererFactory(pluginManager: PluginManager): {
8
23
  configSchema: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
9
24
  pluginManager: PluginManager;
10
25
  }): {
11
- draw(ctx: CanvasRenderingContext2D, props: any): Promise<{
26
+ draw(ctx: CanvasRenderingContext2D, props: ManhattanProps): Promise<{
12
27
  clickMap: any;
13
28
  }>;
14
29
  supportsSVG: boolean;
15
30
  render(renderProps: import("@jbrowse/plugin-wiggle/dist/WiggleBaseRenderer").RenderArgsDeserialized): Promise<{
16
- features: Map<string, import("@jbrowse/core/util").Feature>;
31
+ features: Map<string, Feature>;
17
32
  height: number;
18
33
  width: number;
19
34
  containsNoTransferables: boolean;
20
- canvasRecordedData: any;
21
- reactElement?: import("react").ReactElement;
35
+ canvasRecordedData: Record<string, unknown>;
36
+ reactElement?: React.ReactElement;
22
37
  html?: string;
23
38
  } | {
24
- features: Map<string, import("@jbrowse/core/util").Feature>;
39
+ features: Map<string, Feature>;
25
40
  height: number;
26
41
  width: number;
27
42
  containsNoTransferables: boolean;
28
- reactElement: React.JSX.Element;
43
+ imageData: any;
44
+ reactElement?: React.ReactElement;
29
45
  html?: string;
30
46
  } | {
31
- features: Map<string, import("@jbrowse/core/util").Feature>;
47
+ features: Map<string, Feature>;
32
48
  height: number;
33
49
  width: number;
34
50
  containsNoTransferables: boolean;
35
- imageData: any;
36
- reactElement?: import("react").ReactElement;
51
+ reactElement: React.ReactElement;
37
52
  html?: string;
38
53
  }>;
39
54
  serializeArgsInClient(args: import("@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType").RenderArgs): import("@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType").RenderArgsSerialized;
40
55
  deserializeResultsInClient(result: import("@jbrowse/plugin-wiggle/dist/WiggleBaseRenderer").ResultsSerialized, args: import("@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType").RenderArgs): import("@jbrowse/plugin-wiggle/dist/WiggleBaseRenderer").ResultsDeserialized;
41
56
  serializeResultsInWorker(result: import("@jbrowse/plugin-wiggle/dist/WiggleBaseRenderer").RenderResults, args: import("@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType").RenderArgsDeserialized): import("@jbrowse/plugin-wiggle/dist/WiggleBaseRenderer").ResultsSerialized;
42
57
  getExpandedRegion(region: import("@jbrowse/core/util").AugmentedRegion, _renderArgs: import("@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType").RenderArgsDeserialized): import("@jbrowse/core/util").AugmentedRegion;
43
- getFeatures(renderArgs: import("@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType").RenderArgsDeserialized): Promise<Map<string, import("@jbrowse/core/util").Feature>>;
44
- featurePassesFilters(renderArgs: import("@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType").RenderArgsDeserialized, feature: import("@jbrowse/core/util").Feature): boolean;
58
+ getFeatures(renderArgs: import("@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType").RenderArgsDeserialized): Promise<Map<string, Feature>>;
59
+ featurePassesFilters(renderArgs: import("@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType").RenderArgsDeserialized, feature: Feature): boolean;
45
60
  deserializeArgsInWorker(args: import("@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType").RenderArgsSerialized): import("@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType").RenderArgsDeserialized;
46
61
  renderInClient(rpcManager: import("@jbrowse/core/rpc/RpcManager").default, args: import("@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType").RenderArgs): Promise<import("@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType").ResultsSerialized>;
47
62
  renderInWorker(args: import("@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType").RenderArgsSerialized): Promise<import("@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType").ResultsSerialized>;
48
- freeResourcesInClient(rpcManager: import("@jbrowse/core/rpc/RpcManager").default, args: import("@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType").RenderArgs): Promise<number>;
63
+ freeResourcesInClient(rpcManager: import("@jbrowse/core/rpc/RpcManager").default, args: import("@jbrowse/core/pluggableElementTypes/renderers/ServerSideRendererType").RenderArgs): Promise<void>;
49
64
  ReactComponent: import("@jbrowse/core/util").AnyReactComponentType;
50
65
  configSchema: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
51
66
  pluginManager: PluginManager;
52
- freeResources(): number;
67
+ freeResources(_args: any): void;
53
68
  name: string;
54
69
  maybeDisplayName?: string;
55
70
  readonly displayName: string;
56
71
  };
57
72
  };
73
+ export {};