@jbrowse/plugin-breakpoint-split-view 2.10.3 → 2.11.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 (27) hide show
  1. package/dist/BreakpointAlignmentsFeatureDetail/index.d.ts +1 -2
  2. package/dist/BreakpointAlignmentsFeatureDetail/index.js +3 -2
  3. package/dist/BreakpointSplitView/components/AlignmentConnections.d.ts +1 -1
  4. package/dist/BreakpointSplitView/components/AlignmentConnections.js +2 -5
  5. package/dist/BreakpointSplitView/components/Breakends.d.ts +1 -1
  6. package/dist/BreakpointSplitView/components/ExportSvgDialog.js +9 -4
  7. package/dist/BreakpointSplitView/components/Overlay.d.ts +1 -1
  8. package/dist/BreakpointSplitView/components/Translocations.d.ts +1 -1
  9. package/dist/BreakpointSplitView/index.d.ts +1 -2
  10. package/dist/BreakpointSplitView/index.js +3 -2
  11. package/dist/BreakpointSplitView/model.d.ts +44 -13
  12. package/dist/BreakpointSplitView/model.js +1 -1
  13. package/dist/BreakpointSplitView/svgcomponents/SVGBreakpointSplitView.js +1 -1
  14. package/esm/BreakpointAlignmentsFeatureDetail/index.d.ts +1 -2
  15. package/esm/BreakpointAlignmentsFeatureDetail/index.js +2 -2
  16. package/esm/BreakpointSplitView/components/AlignmentConnections.d.ts +1 -1
  17. package/esm/BreakpointSplitView/components/AlignmentConnections.js +3 -6
  18. package/esm/BreakpointSplitView/components/Breakends.d.ts +1 -1
  19. package/esm/BreakpointSplitView/components/ExportSvgDialog.js +9 -4
  20. package/esm/BreakpointSplitView/components/Overlay.d.ts +1 -1
  21. package/esm/BreakpointSplitView/components/Translocations.d.ts +1 -1
  22. package/esm/BreakpointSplitView/index.d.ts +1 -2
  23. package/esm/BreakpointSplitView/index.js +2 -2
  24. package/esm/BreakpointSplitView/model.d.ts +44 -13
  25. package/esm/BreakpointSplitView/model.js +1 -1
  26. package/esm/BreakpointSplitView/svgcomponents/SVGBreakpointSplitView.js +1 -1
  27. package/package.json +2 -2
@@ -1,3 +1,2 @@
1
1
  import PluginManager from '@jbrowse/core/PluginManager';
2
- declare const _default: (pluginManager: PluginManager) => void;
3
- export default _default;
2
+ export default function BreakpointAlignmentsFeatureDetailF(pluginManager: PluginManager): void;
@@ -43,7 +43,7 @@ const stateModel = mobx_state_tree_1.types
43
43
  self.featureData = undefined;
44
44
  },
45
45
  }));
46
- exports.default = (pluginManager) => {
46
+ function BreakpointAlignmentsFeatureDetailF(pluginManager) {
47
47
  pluginManager.addWidgetType(() => {
48
48
  return new pluggableElementTypes_1.WidgetType({
49
49
  name: 'BreakpointAlignmentsWidget',
@@ -53,4 +53,5 @@ exports.default = (pluginManager) => {
53
53
  ReactComponent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./BreakpointAlignmentsFeatureDetail')))),
54
54
  });
55
55
  });
56
- };
56
+ }
57
+ exports.default = BreakpointAlignmentsFeatureDetailF;
@@ -4,6 +4,6 @@ declare const AlignmentConnections: ({ model, trackId, parentRef, getTrackYPosOv
4
4
  model: BreakpointViewModel;
5
5
  trackId: string;
6
6
  parentRef: React.RefObject<SVGSVGElement>;
7
- getTrackYPosOverride?: ((trackId: string, level: number) => number) | undefined;
7
+ getTrackYPosOverride?: (trackId: string, level: number) => number;
8
8
  }) => React.JSX.Element | null;
9
9
  export default AlignmentConnections;
@@ -59,10 +59,7 @@ const AlignmentConnections = (0, mobx_react_1.observer)(function ({ model, track
59
59
  const rect = parentRef.current.getBoundingClientRect();
60
60
  yOffset = rect.top;
61
61
  }
62
- if (!assembly) {
63
- return null;
64
- }
65
- return (react_1.default.createElement("g", { stroke: theme.palette.text.disabled, fill: "none", "data-testid": layoutMatches.length ? `${trackId}-loaded` : trackId }, layoutMatches.map(chunk => {
62
+ return assembly ? (react_1.default.createElement("g", { fill: "none", ...(0, util_1.getStrokeProps)(theme.palette.text.disabled), "data-testid": layoutMatches.length ? `${trackId}-loaded` : trackId }, layoutMatches.map(chunk => {
66
63
  const ret = [];
67
64
  // we follow a path in the list of chunks, not from top to bottom, just in series
68
65
  // following x1,y1 -> x2,y2
@@ -127,6 +124,6 @@ const AlignmentConnections = (0, mobx_react_1.observer)(function ({ model, track
127
124
  }, onMouseOver: () => setMouseoverElt(id), onMouseOut: () => setMouseoverElt(undefined) }));
128
125
  }
129
126
  return ret;
130
- })));
127
+ }))) : null;
131
128
  });
132
129
  exports.default = AlignmentConnections;
@@ -4,6 +4,6 @@ declare const Breakends: ({ model, trackId, parentRef: ref, getTrackYPosOverride
4
4
  model: BreakpointViewModel;
5
5
  trackId: string;
6
6
  parentRef: React.RefObject<SVGSVGElement>;
7
- getTrackYPosOverride?: ((trackId: string, level: number) => number) | undefined;
7
+ getTrackYPosOverride?: (trackId: string, level: number) => number;
8
8
  }) => React.JSX.Element | null;
9
9
  export default Breakends;
@@ -32,6 +32,10 @@ function LoadingMessage() {
32
32
  react_1.default.createElement(material_1.CircularProgress, { size: 20, style: { marginRight: 20 } }),
33
33
  react_1.default.createElement(material_1.Typography, { display: "inline" }, "Creating SVG")));
34
34
  }
35
+ function TextField2({ children, ...rest }) {
36
+ return (react_1.default.createElement("div", null,
37
+ react_1.default.createElement(material_1.TextField, { ...rest }, children)));
38
+ }
35
39
  function useSvgLocal(key, val) {
36
40
  return (0, util_1.useLocalStorage)('svg-' + key, val);
37
41
  }
@@ -47,15 +51,14 @@ function ExportSvgDialog({ model, handleClose, }) {
47
51
  return (react_1.default.createElement(ui_1.Dialog, { open: true, onClose: handleClose, title: "Export SVG" },
48
52
  react_1.default.createElement(material_1.DialogContent, null,
49
53
  error ? (react_1.default.createElement(ui_1.ErrorMessage, { error: error })) : loading ? (react_1.default.createElement(LoadingMessage, null)) : null,
50
- react_1.default.createElement(material_1.TextField, { helperText: "filename", value: filename, onChange: event => setFilename(event.target.value) }),
51
- react_1.default.createElement("br", null),
52
- react_1.default.createElement(material_1.TextField, { select: true, label: "Track label positioning", variant: "outlined", style: { width: 150 }, value: trackLabels, onChange: event => setTrackLabels(event.target.value) },
54
+ react_1.default.createElement(TextField2, { helperText: "filename", value: filename, onChange: event => setFilename(event.target.value) }),
55
+ react_1.default.createElement(TextField2, { select: true, label: "Track label positioning", variant: "outlined", style: { width: 150 }, value: trackLabels, onChange: event => setTrackLabels(event.target.value) },
53
56
  react_1.default.createElement(material_1.MenuItem, { value: "offset" }, "Offset"),
54
57
  react_1.default.createElement(material_1.MenuItem, { value: "overlay" }, "Overlay"),
55
58
  react_1.default.createElement(material_1.MenuItem, { value: "left" }, "Left"),
56
59
  react_1.default.createElement(material_1.MenuItem, { value: "none" }, "None")),
57
60
  react_1.default.createElement("br", null),
58
- session.allThemes ? (react_1.default.createElement(material_1.TextField, { select: true, label: "Theme", variant: "outlined", value: themeName, onChange: event => setThemeName(event.target.value) }, Object.entries(session.allThemes()).map(([key, val]) => (react_1.default.createElement(material_1.MenuItem, { key: key, value: key },
61
+ session.allThemes ? (react_1.default.createElement(TextField2, { select: true, label: "Theme", variant: "outlined", value: themeName, onChange: event => setThemeName(event.target.value) }, Object.entries(session.allThemes()).map(([key, val]) => (react_1.default.createElement(material_1.MenuItem, { key: key, value: key },
59
62
  // @ts-expect-error
60
63
  val.name || '(Unknown name)'))))) : null,
61
64
  offscreenCanvas ? (react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Checkbox, { checked: rasterizeLayers, onChange: () => setRasterizeLayers(val => !val) }), label: "Rasterize canvas based tracks? File may be much larger if this is turned off" })) : (react_1.default.createElement(material_1.Typography, null, "Note: rasterizing layers not yet supported in this browser, so SVG size may be large"))),
@@ -76,6 +79,8 @@ function ExportSvgDialog({ model, handleClose, }) {
76
79
  catch (e) {
77
80
  console.error(e);
78
81
  setError(e);
82
+ }
83
+ finally {
79
84
  setLoading(false);
80
85
  }
81
86
  } }, "Submit"))));
@@ -4,6 +4,6 @@ declare const Overlay: (props: {
4
4
  parentRef: React.RefObject<SVGSVGElement>;
5
5
  model: BreakpointViewModel;
6
6
  trackId: string;
7
- getTrackYPosOverride?: ((trackId: string, level: number) => number) | undefined;
7
+ getTrackYPosOverride?: (trackId: string, level: number) => number;
8
8
  }) => React.JSX.Element | null;
9
9
  export default Overlay;
@@ -4,6 +4,6 @@ declare const Translocations: ({ model, trackId, parentRef: ref, getTrackYPosOve
4
4
  model: BreakpointViewModel;
5
5
  trackId: string;
6
6
  parentRef: React.RefObject<SVGSVGElement>;
7
- getTrackYPosOverride?: ((trackId: string, level: number) => number) | undefined;
7
+ getTrackYPosOverride?: (trackId: string, level: number) => number;
8
8
  }) => React.JSX.Element | null;
9
9
  export default Translocations;
@@ -1,3 +1,2 @@
1
1
  import PluginManager from '@jbrowse/core/PluginManager';
2
- declare const _default: (pluginManager: PluginManager) => void;
3
- export default _default;
2
+ export default function BreakpointSplitViewF(pluginManager: PluginManager): void;
@@ -30,7 +30,7 @@ const react_1 = require("react");
30
30
  // locals
31
31
  const BreakpointSplitView_1 = __importDefault(require("./BreakpointSplitView"));
32
32
  const model_1 = __importDefault(require("./model"));
33
- exports.default = (pluginManager) => {
33
+ function BreakpointSplitViewF(pluginManager) {
34
34
  pluginManager.addViewType(() => {
35
35
  return new BreakpointSplitView_1.default({
36
36
  name: 'BreakpointSplitView',
@@ -39,4 +39,5 @@ exports.default = (pluginManager) => {
39
39
  ReactComponent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./components/BreakpointSplitView')))),
40
40
  });
41
41
  });
42
- };
42
+ }
43
+ exports.default = BreakpointSplitViewF;
@@ -70,7 +70,8 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
70
70
  showCytobandsSetting: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
71
71
  trackLabels: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
72
72
  showGridlines: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
73
- highlight: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IType<Required<import("@jbrowse/core/util").ParsedLocString>, Required<import("@jbrowse/core/util").ParsedLocString>, Required<import("@jbrowse/core/util").ParsedLocString>>>;
73
+ highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<Required<import("@jbrowse/core/util").ParsedLocString>, Required<import("@jbrowse/core/util").ParsedLocString>, Required<import("@jbrowse/core/util").ParsedLocString>>>, [undefined]>;
74
+ colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
74
75
  }, {
75
76
  width: number;
76
77
  } & {
@@ -82,20 +83,13 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
82
83
  } & {
83
84
  volatileWidth: number | undefined;
84
85
  minimumBlockWidth: number;
85
- /**
86
- * #action
87
- */
88
86
  draggingTrackId: string | undefined;
89
87
  volatileError: unknown;
90
88
  afterDisplayedRegionsSetCallbacks: Function[];
91
- scaleFactor: number; /**
92
- * #action
93
- */
89
+ scaleFactor: number;
94
90
  trackRefs: Record<string, HTMLDivElement>;
95
91
  coarseDynamicBlocks: import("@jbrowse/core/util/blockTypes").BaseBlock[];
96
- coarseTotalBp: number; /**
97
- * #action
98
- */
92
+ coarseTotalBp: number;
99
93
  leftOffset: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset | undefined;
100
94
  rightOffset: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset | undefined;
101
95
  } & {
@@ -133,6 +127,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
133
127
  rewriteOnClicks(trackType: string, viewMenuActions: import("@jbrowse/core/ui").MenuItem[]): void;
134
128
  readonly trackTypeActions: Map<string, import("@jbrowse/core/ui").MenuItem[]>;
135
129
  } & {
130
+ setColorByCDS(flag: boolean): void;
136
131
  setShowCytobands(flag: boolean): void;
137
132
  setWidth(newWidth: number): void;
138
133
  setError(error: unknown): void;
@@ -140,7 +135,9 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
140
135
  setHideHeaderOverview(b: boolean): void;
141
136
  setHideNoTracksActive(b: boolean): void;
142
137
  setShowGridlines(b: boolean): void;
143
- setHighlight(highlight: Required<import("@jbrowse/core/util").ParsedLocString> | undefined): void;
138
+ addToHighlights(highlight: Required<import("@jbrowse/core/util").ParsedLocString>): void;
139
+ setHighlight(highlight: Required<import("@jbrowse/core/util").ParsedLocString>[] | undefined): void;
140
+ removeHighlight(highlight: Required<import("@jbrowse/core/util").ParsedLocString>): void;
144
141
  scrollTo(offsetPx: number): number;
145
142
  zoomTo(bpPerPx: number, offset?: number, centerAtOffset?: boolean): number;
146
143
  setOffsets(left?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset | undefined, right?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset | undefined): void;
@@ -150,6 +147,10 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
150
147
  showTrack(trackId: string, initialSnapshot?: {}, displayInitialSnapshot?: {}): any;
151
148
  hideTrack(trackId: string): number;
152
149
  } & {
150
+ moveTrackDown(id: string): void;
151
+ moveTrackUp(id: string): void;
152
+ moveTrackToTop(id: string): void;
153
+ moveTrackToBottom(id: string): void;
153
154
  moveTrack(movingId: string, targetId: string): void;
154
155
  closeView(): void;
155
156
  toggleTrack(trackId: string): boolean;
@@ -347,7 +348,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
347
348
  index: number;
348
349
  offsetPx: number;
349
350
  } | undefined;
350
- centerAt(coord: number, refName: string, regionNumber: number): void;
351
+ centerAt(coord: number, refName: string, regionNumber?: number | undefined): void;
351
352
  pxToBp(px: number): {
352
353
  coord: number;
353
354
  index: number;
@@ -372,7 +373,37 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
372
373
  } | undefined;
373
374
  } & {
374
375
  afterCreate(): void;
375
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
376
+ }, import("mobx-state-tree").ModelCreationType<import("mobx-state-tree/dist/internal").ExtractCFromProps<{
377
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
378
+ displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
379
+ minimized: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
380
+ } & {
381
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
382
+ type: import("mobx-state-tree").IType<string | undefined, string, string>;
383
+ offsetPx: import("mobx-state-tree").IType<number | undefined, number, number>;
384
+ bpPerPx: import("mobx-state-tree").IType<number | undefined, number, number>;
385
+ displayedRegions: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
386
+ refName: import("mobx-state-tree").ISimpleType<string>;
387
+ start: import("mobx-state-tree").ISimpleType<number>;
388
+ end: import("mobx-state-tree").ISimpleType<number>;
389
+ reversed: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
390
+ } & {
391
+ assemblyName: import("mobx-state-tree").ISimpleType<string>;
392
+ }, {
393
+ setRefName(newRefName: string): void;
394
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
395
+ tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
396
+ hideHeader: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
397
+ hideHeaderOverview: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
398
+ hideNoTracksActive: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
399
+ trackSelectorType: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
400
+ showCenterLine: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
401
+ showCytobandsSetting: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
402
+ trackLabels: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
403
+ showGridlines: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
404
+ highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<Required<import("@jbrowse/core/util").ParsedLocString>, Required<import("@jbrowse/core/util").ParsedLocString>, Required<import("@jbrowse/core/util").ParsedLocString>>>, [undefined]>;
405
+ colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
406
+ }>>, import("mobx-state-tree")._NotCustomized>>;
376
407
  }, {
377
408
  width: number;
378
409
  } & {
@@ -259,7 +259,7 @@ function stateModelFactory(pluginManager) {
259
259
  }
260
260
  catch (e) {
261
261
  console.error(e);
262
- (0, util_1.getSession)(self).notify(`${e}`, 'error');
262
+ (0, util_1.getSession)(self).notifyError(`${e}`, e);
263
263
  }
264
264
  }));
265
265
  },
@@ -18,7 +18,7 @@ const util_2 = require("./util");
18
18
  // render LGV to SVG
19
19
  async function renderToSvg(model, opts) {
20
20
  var _a;
21
- const { textHeight = 18, headerHeight = 30, rulerHeight = 30, fontSize = 13, trackLabels = 'offset', Wrapper = ({ children }) => react_1.default.createElement(react_1.default.Fragment, null, children), themeName = 'default', } = opts;
21
+ const { textHeight = 18, headerHeight = 30, rulerHeight = 30, fontSize = 13, trackLabels = 'offset', Wrapper = ({ children }) => children, themeName = 'default', } = opts;
22
22
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
23
  const { createRootFn } = (0, mobx_state_tree_1.getRoot)(model);
24
24
  const session = (0, util_1.getSession)(model);
@@ -1,3 +1,2 @@
1
1
  import PluginManager from '@jbrowse/core/PluginManager';
2
- declare const _default: (pluginManager: PluginManager) => void;
3
- export default _default;
2
+ export default function BreakpointAlignmentsFeatureDetailF(pluginManager: PluginManager): void;
@@ -18,7 +18,7 @@ const stateModel = types
18
18
  self.featureData = undefined;
19
19
  },
20
20
  }));
21
- export default (pluginManager) => {
21
+ export default function BreakpointAlignmentsFeatureDetailF(pluginManager) {
22
22
  pluginManager.addWidgetType(() => {
23
23
  return new WidgetType({
24
24
  name: 'BreakpointAlignmentsWidget',
@@ -28,4 +28,4 @@ export default (pluginManager) => {
28
28
  ReactComponent: lazy(() => import('./BreakpointAlignmentsFeatureDetail')),
29
29
  });
30
30
  });
31
- };
31
+ }
@@ -4,6 +4,6 @@ declare const AlignmentConnections: ({ model, trackId, parentRef, getTrackYPosOv
4
4
  model: BreakpointViewModel;
5
5
  trackId: string;
6
6
  parentRef: React.RefObject<SVGSVGElement>;
7
- getTrackYPosOverride?: ((trackId: string, level: number) => number) | undefined;
7
+ getTrackYPosOverride?: (trackId: string, level: number) => number;
8
8
  }) => React.JSX.Element | null;
9
9
  export default AlignmentConnections;
@@ -2,7 +2,7 @@ import React, { useMemo, useState } from 'react';
2
2
  import { observer } from 'mobx-react';
3
3
  import { getSnapshot } from 'mobx-state-tree';
4
4
  import { useTheme } from '@mui/material';
5
- import { getSession } from '@jbrowse/core/util';
5
+ import { getSession, getStrokeProps } from '@jbrowse/core/util';
6
6
  // locals
7
7
  import { getBadlyPairedAlignments, getMatchedAlignmentFeatures, hasPairedReads, } from './util';
8
8
  import { yPos, useNextFrame, getPxFromCoordinate } from '../util';
@@ -34,10 +34,7 @@ const AlignmentConnections = observer(function ({ model, trackId, parentRef, get
34
34
  const rect = parentRef.current.getBoundingClientRect();
35
35
  yOffset = rect.top;
36
36
  }
37
- if (!assembly) {
38
- return null;
39
- }
40
- return (React.createElement("g", { stroke: theme.palette.text.disabled, fill: "none", "data-testid": layoutMatches.length ? `${trackId}-loaded` : trackId }, layoutMatches.map(chunk => {
37
+ return assembly ? (React.createElement("g", { fill: "none", ...getStrokeProps(theme.palette.text.disabled), "data-testid": layoutMatches.length ? `${trackId}-loaded` : trackId }, layoutMatches.map(chunk => {
41
38
  const ret = [];
42
39
  // we follow a path in the list of chunks, not from top to bottom, just in series
43
40
  // following x1,y1 -> x2,y2
@@ -102,6 +99,6 @@ const AlignmentConnections = observer(function ({ model, trackId, parentRef, get
102
99
  }, onMouseOver: () => setMouseoverElt(id), onMouseOut: () => setMouseoverElt(undefined) }));
103
100
  }
104
101
  return ret;
105
- })));
102
+ }))) : null;
106
103
  });
107
104
  export default AlignmentConnections;
@@ -4,6 +4,6 @@ declare const Breakends: ({ model, trackId, parentRef: ref, getTrackYPosOverride
4
4
  model: BreakpointViewModel;
5
5
  trackId: string;
6
6
  parentRef: React.RefObject<SVGSVGElement>;
7
- getTrackYPosOverride?: ((trackId: string, level: number) => number) | undefined;
7
+ getTrackYPosOverride?: (trackId: string, level: number) => number;
8
8
  }) => React.JSX.Element | null;
9
9
  export default Breakends;
@@ -7,6 +7,10 @@ function LoadingMessage() {
7
7
  React.createElement(CircularProgress, { size: 20, style: { marginRight: 20 } }),
8
8
  React.createElement(Typography, { display: "inline" }, "Creating SVG")));
9
9
  }
10
+ function TextField2({ children, ...rest }) {
11
+ return (React.createElement("div", null,
12
+ React.createElement(TextField, { ...rest }, children)));
13
+ }
10
14
  function useSvgLocal(key, val) {
11
15
  return useLocalStorage('svg-' + key, val);
12
16
  }
@@ -22,15 +26,14 @@ export default function ExportSvgDialog({ model, handleClose, }) {
22
26
  return (React.createElement(Dialog, { open: true, onClose: handleClose, title: "Export SVG" },
23
27
  React.createElement(DialogContent, null,
24
28
  error ? (React.createElement(ErrorMessage, { error: error })) : loading ? (React.createElement(LoadingMessage, null)) : null,
25
- React.createElement(TextField, { helperText: "filename", value: filename, onChange: event => setFilename(event.target.value) }),
26
- React.createElement("br", null),
27
- React.createElement(TextField, { select: true, label: "Track label positioning", variant: "outlined", style: { width: 150 }, value: trackLabels, onChange: event => setTrackLabels(event.target.value) },
29
+ React.createElement(TextField2, { helperText: "filename", value: filename, onChange: event => setFilename(event.target.value) }),
30
+ React.createElement(TextField2, { select: true, label: "Track label positioning", variant: "outlined", style: { width: 150 }, value: trackLabels, onChange: event => setTrackLabels(event.target.value) },
28
31
  React.createElement(MenuItem, { value: "offset" }, "Offset"),
29
32
  React.createElement(MenuItem, { value: "overlay" }, "Overlay"),
30
33
  React.createElement(MenuItem, { value: "left" }, "Left"),
31
34
  React.createElement(MenuItem, { value: "none" }, "None")),
32
35
  React.createElement("br", null),
33
- session.allThemes ? (React.createElement(TextField, { select: true, label: "Theme", variant: "outlined", value: themeName, onChange: event => setThemeName(event.target.value) }, Object.entries(session.allThemes()).map(([key, val]) => (React.createElement(MenuItem, { key: key, value: key },
36
+ session.allThemes ? (React.createElement(TextField2, { select: true, label: "Theme", variant: "outlined", value: themeName, onChange: event => setThemeName(event.target.value) }, Object.entries(session.allThemes()).map(([key, val]) => (React.createElement(MenuItem, { key: key, value: key },
34
37
  // @ts-expect-error
35
38
  val.name || '(Unknown name)'))))) : null,
36
39
  offscreenCanvas ? (React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: rasterizeLayers, onChange: () => setRasterizeLayers(val => !val) }), label: "Rasterize canvas based tracks? File may be much larger if this is turned off" })) : (React.createElement(Typography, null, "Note: rasterizing layers not yet supported in this browser, so SVG size may be large"))),
@@ -51,6 +54,8 @@ export default function ExportSvgDialog({ model, handleClose, }) {
51
54
  catch (e) {
52
55
  console.error(e);
53
56
  setError(e);
57
+ }
58
+ finally {
54
59
  setLoading(false);
55
60
  }
56
61
  } }, "Submit"))));
@@ -4,6 +4,6 @@ declare const Overlay: (props: {
4
4
  parentRef: React.RefObject<SVGSVGElement>;
5
5
  model: BreakpointViewModel;
6
6
  trackId: string;
7
- getTrackYPosOverride?: ((trackId: string, level: number) => number) | undefined;
7
+ getTrackYPosOverride?: (trackId: string, level: number) => number;
8
8
  }) => React.JSX.Element | null;
9
9
  export default Overlay;
@@ -4,6 +4,6 @@ declare const Translocations: ({ model, trackId, parentRef: ref, getTrackYPosOve
4
4
  model: BreakpointViewModel;
5
5
  trackId: string;
6
6
  parentRef: React.RefObject<SVGSVGElement>;
7
- getTrackYPosOverride?: ((trackId: string, level: number) => number) | undefined;
7
+ getTrackYPosOverride?: (trackId: string, level: number) => number;
8
8
  }) => React.JSX.Element | null;
9
9
  export default Translocations;
@@ -1,3 +1,2 @@
1
1
  import PluginManager from '@jbrowse/core/PluginManager';
2
- declare const _default: (pluginManager: PluginManager) => void;
3
- export default _default;
2
+ export default function BreakpointSplitViewF(pluginManager: PluginManager): void;
@@ -2,7 +2,7 @@ import { lazy } from 'react';
2
2
  // locals
3
3
  import BreakpointSplitView from './BreakpointSplitView';
4
4
  import stateModelFactory from './model';
5
- export default (pluginManager) => {
5
+ export default function BreakpointSplitViewF(pluginManager) {
6
6
  pluginManager.addViewType(() => {
7
7
  return new BreakpointSplitView({
8
8
  name: 'BreakpointSplitView',
@@ -11,4 +11,4 @@ export default (pluginManager) => {
11
11
  ReactComponent: lazy(() => import('./components/BreakpointSplitView')),
12
12
  });
13
13
  });
14
- };
14
+ }
@@ -70,7 +70,8 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
70
70
  showCytobandsSetting: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
71
71
  trackLabels: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
72
72
  showGridlines: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
73
- highlight: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IType<Required<import("@jbrowse/core/util").ParsedLocString>, Required<import("@jbrowse/core/util").ParsedLocString>, Required<import("@jbrowse/core/util").ParsedLocString>>>;
73
+ highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<Required<import("@jbrowse/core/util").ParsedLocString>, Required<import("@jbrowse/core/util").ParsedLocString>, Required<import("@jbrowse/core/util").ParsedLocString>>>, [undefined]>;
74
+ colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
74
75
  }, {
75
76
  width: number;
76
77
  } & {
@@ -82,20 +83,13 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
82
83
  } & {
83
84
  volatileWidth: number | undefined;
84
85
  minimumBlockWidth: number;
85
- /**
86
- * #action
87
- */
88
86
  draggingTrackId: string | undefined;
89
87
  volatileError: unknown;
90
88
  afterDisplayedRegionsSetCallbacks: Function[];
91
- scaleFactor: number; /**
92
- * #action
93
- */
89
+ scaleFactor: number;
94
90
  trackRefs: Record<string, HTMLDivElement>;
95
91
  coarseDynamicBlocks: import("@jbrowse/core/util/blockTypes").BaseBlock[];
96
- coarseTotalBp: number; /**
97
- * #action
98
- */
92
+ coarseTotalBp: number;
99
93
  leftOffset: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset | undefined;
100
94
  rightOffset: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset | undefined;
101
95
  } & {
@@ -133,6 +127,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
133
127
  rewriteOnClicks(trackType: string, viewMenuActions: import("@jbrowse/core/ui").MenuItem[]): void;
134
128
  readonly trackTypeActions: Map<string, import("@jbrowse/core/ui").MenuItem[]>;
135
129
  } & {
130
+ setColorByCDS(flag: boolean): void;
136
131
  setShowCytobands(flag: boolean): void;
137
132
  setWidth(newWidth: number): void;
138
133
  setError(error: unknown): void;
@@ -140,7 +135,9 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
140
135
  setHideHeaderOverview(b: boolean): void;
141
136
  setHideNoTracksActive(b: boolean): void;
142
137
  setShowGridlines(b: boolean): void;
143
- setHighlight(highlight: Required<import("@jbrowse/core/util").ParsedLocString> | undefined): void;
138
+ addToHighlights(highlight: Required<import("@jbrowse/core/util").ParsedLocString>): void;
139
+ setHighlight(highlight: Required<import("@jbrowse/core/util").ParsedLocString>[] | undefined): void;
140
+ removeHighlight(highlight: Required<import("@jbrowse/core/util").ParsedLocString>): void;
144
141
  scrollTo(offsetPx: number): number;
145
142
  zoomTo(bpPerPx: number, offset?: number, centerAtOffset?: boolean): number;
146
143
  setOffsets(left?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset | undefined, right?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset | undefined): void;
@@ -150,6 +147,10 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
150
147
  showTrack(trackId: string, initialSnapshot?: {}, displayInitialSnapshot?: {}): any;
151
148
  hideTrack(trackId: string): number;
152
149
  } & {
150
+ moveTrackDown(id: string): void;
151
+ moveTrackUp(id: string): void;
152
+ moveTrackToTop(id: string): void;
153
+ moveTrackToBottom(id: string): void;
153
154
  moveTrack(movingId: string, targetId: string): void;
154
155
  closeView(): void;
155
156
  toggleTrack(trackId: string): boolean;
@@ -347,7 +348,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
347
348
  index: number;
348
349
  offsetPx: number;
349
350
  } | undefined;
350
- centerAt(coord: number, refName: string, regionNumber: number): void;
351
+ centerAt(coord: number, refName: string, regionNumber?: number | undefined): void;
351
352
  pxToBp(px: number): {
352
353
  coord: number;
353
354
  index: number;
@@ -372,7 +373,37 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
372
373
  } | undefined;
373
374
  } & {
374
375
  afterCreate(): void;
375
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
376
+ }, import("mobx-state-tree").ModelCreationType<import("mobx-state-tree/dist/internal").ExtractCFromProps<{
377
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
378
+ displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
379
+ minimized: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
380
+ } & {
381
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
382
+ type: import("mobx-state-tree").IType<string | undefined, string, string>;
383
+ offsetPx: import("mobx-state-tree").IType<number | undefined, number, number>;
384
+ bpPerPx: import("mobx-state-tree").IType<number | undefined, number, number>;
385
+ displayedRegions: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
386
+ refName: import("mobx-state-tree").ISimpleType<string>;
387
+ start: import("mobx-state-tree").ISimpleType<number>;
388
+ end: import("mobx-state-tree").ISimpleType<number>;
389
+ reversed: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
390
+ } & {
391
+ assemblyName: import("mobx-state-tree").ISimpleType<string>;
392
+ }, {
393
+ setRefName(newRefName: string): void;
394
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
395
+ tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
396
+ hideHeader: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
397
+ hideHeaderOverview: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
398
+ hideNoTracksActive: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
399
+ trackSelectorType: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
400
+ showCenterLine: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
401
+ showCytobandsSetting: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
402
+ trackLabels: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
403
+ showGridlines: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
404
+ highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<Required<import("@jbrowse/core/util").ParsedLocString>, Required<import("@jbrowse/core/util").ParsedLocString>, Required<import("@jbrowse/core/util").ParsedLocString>>>, [undefined]>;
405
+ colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
406
+ }>>, import("mobx-state-tree")._NotCustomized>>;
376
407
  }, {
377
408
  width: number;
378
409
  } & {
@@ -231,7 +231,7 @@ export default function stateModelFactory(pluginManager) {
231
231
  }
232
232
  catch (e) {
233
233
  console.error(e);
234
- getSession(self).notify(`${e}`, 'error');
234
+ getSession(self).notifyError(`${e}`, e);
235
235
  }
236
236
  }));
237
237
  },
@@ -12,7 +12,7 @@ import { getTrackNameMaxLen, getTrackOffsets } from './util';
12
12
  // render LGV to SVG
13
13
  export async function renderToSvg(model, opts) {
14
14
  var _a;
15
- const { textHeight = 18, headerHeight = 30, rulerHeight = 30, fontSize = 13, trackLabels = 'offset', Wrapper = ({ children }) => React.createElement(React.Fragment, null, children), themeName = 'default', } = opts;
15
+ const { textHeight = 18, headerHeight = 30, rulerHeight = 30, fontSize = 13, trackLabels = 'offset', Wrapper = ({ children }) => children, themeName = 'default', } = opts;
16
16
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
17
  const { createRootFn } = getRoot(model);
18
18
  const session = getSession(model);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbrowse/plugin-breakpoint-split-view",
3
- "version": "2.10.3",
3
+ "version": "2.11.1",
4
4
  "description": "JBrowse 2 breakpoint detail split view",
5
5
  "keywords": [
6
6
  "jbrowse",
@@ -58,5 +58,5 @@
58
58
  "publishConfig": {
59
59
  "access": "public"
60
60
  },
61
- "gitHead": "c8fc800cd17decd72b2e971c7a6add3b95214e72"
61
+ "gitHead": "11b28d66d782eb06f92ccb993108bb6c3c82819e"
62
62
  }