@jbrowse/plugin-circular-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.
@@ -2,5 +2,5 @@ import React from 'react';
2
2
  import { CircularViewModel } from '../models/model';
3
3
  declare const CircularView: ({ model }: {
4
4
  model: CircularViewModel;
5
- }) => React.JSX.Element;
5
+ }) => React.JSX.Element | null;
6
6
  export default CircularView;
@@ -38,7 +38,7 @@ const CircularView = (0, mobx_react_1.observer)(({ model }) => {
38
38
  model.initialized;
39
39
  const showImportForm = !initialized && !model.disableImportForm;
40
40
  const showFigure = initialized && !showImportForm;
41
- return (react_1.default.createElement(react_1.default.Fragment, null, showImportForm || model.error ? (react_1.default.createElement(ImportForm_1.default, { model: model })) : showFigure ? (react_1.default.createElement(CircularViewLoaded, { model: model })) : null));
41
+ return showImportForm || model.error ? (react_1.default.createElement(ImportForm_1.default, { model: model })) : showFigure ? (react_1.default.createElement(CircularViewLoaded, { model: model })) : null;
42
42
  });
43
43
  const CircularViewLoaded = (0, mobx_react_1.observer)(function ({ model, }) {
44
44
  const { width, height, id, offsetRadians, centerXY, figureWidth, figureHeight, hideVerticalResizeHandle, } = model;
@@ -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
  }
@@ -46,9 +50,8 @@ function ExportSvgDialog({ model, handleClose, }) {
46
50
  return (react_1.default.createElement(ui_1.Dialog, { open: true, onClose: handleClose, title: "Export SVG" },
47
51
  react_1.default.createElement(material_1.DialogContent, null,
48
52
  error ? (react_1.default.createElement(ui_1.ErrorMessage, { error: error })) : loading ? (react_1.default.createElement(LoadingMessage, null)) : null,
49
- react_1.default.createElement(material_1.TextField, { helperText: "filename", value: filename, onChange: event => setFilename(event.target.value) }),
50
- react_1.default.createElement("br", null),
51
- session.allThemes ? (react_1.default.createElement(material_1.TextField, { select: true, label: "Theme", 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 },
53
+ react_1.default.createElement(TextField2, { helperText: "filename", value: filename, onChange: event => setFilename(event.target.value) }),
54
+ session.allThemes ? (react_1.default.createElement(TextField2, { select: true, label: "Theme", 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 },
52
55
  // @ts-expect-error
53
56
  val.name || '(Unknown name)'))))) : null,
54
57
  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"))),
@@ -68,6 +71,8 @@ function ExportSvgDialog({ model, handleClose, }) {
68
71
  catch (e) {
69
72
  console.error(e);
70
73
  setError(e);
74
+ }
75
+ finally {
71
76
  setLoading(false);
72
77
  }
73
78
  } }, "Submit"))));
@@ -63,7 +63,7 @@ const ElisionRulerArc = (0, mobx_react_1.observer)(function ({ model, slice, reg
63
63
  largeArc,
64
64
  '1',
65
65
  ...endXY,
66
- ].join(' '), stroke: theme.palette.text.secondary, strokeWidth: 2, strokeDasharray: "2,2", fill: "none" })));
66
+ ].join(' '), ...(0, util_1.getStrokeProps)(theme.palette.text.secondary), strokeWidth: 2, strokeDasharray: "2,2", fill: "none" })));
67
67
  });
68
68
  const RulerLabel = (0, mobx_react_1.observer)(function ({ view, text, maxWidthPx, radians, radiusPx, title, color, }) {
69
69
  const { classes } = useStyles();
@@ -73,7 +73,7 @@ const RulerLabel = (0, mobx_react_1.observer)(function ({ view, text, maxWidthPx
73
73
  }
74
74
  if (text.length * 6.5 < maxWidthPx) {
75
75
  // text is rotated parallel to the ruler arc
76
- return (react_1.default.createElement("text", { x: 0, y: 0, className: classes.rulerLabel, textAnchor: "middle", dominantBaseline: "baseline", transform: `translate(${textXY}) rotate(${(0, util_1.radToDeg)(radians) + 90})`, style: { fill: color } },
76
+ return (react_1.default.createElement("text", { x: 0, y: 0, className: classes.rulerLabel, textAnchor: "middle", dominantBaseline: "baseline", transform: `translate(${textXY}) rotate(${(0, util_1.radToDeg)(radians) + 90})`, ...(0, util_1.getFillProps)(color) },
77
77
  text,
78
78
  react_1.default.createElement("title", null, title || text)));
79
79
  }
@@ -81,11 +81,11 @@ const RulerLabel = (0, mobx_react_1.observer)(function ({ view, text, maxWidthPx
81
81
  // text is rotated perpendicular to the ruler arc
82
82
  const overallRotation = (0, util_1.radToDeg)(radians + view.offsetRadians - Math.PI / 2);
83
83
  if (overallRotation >= 180) {
84
- return (react_1.default.createElement("text", { x: 0, y: 0, className: classes.rulerLabel, textAnchor: "start", dominantBaseline: "middle", transform: `translate(${textXY}) rotate(${(0, util_1.radToDeg)(radians)})`, style: { fill: color } },
84
+ return (react_1.default.createElement("text", { x: 0, y: 0, className: classes.rulerLabel, textAnchor: "start", dominantBaseline: "middle", transform: `translate(${textXY}) rotate(${(0, util_1.radToDeg)(radians)})`, fill: color },
85
85
  text,
86
86
  react_1.default.createElement("title", null, title || text)));
87
87
  }
88
- return (react_1.default.createElement("text", { x: 0, y: 0, className: classes.rulerLabel, textAnchor: "end", dominantBaseline: "middle", transform: `translate(${textXY}) rotate(${(0, util_1.radToDeg)(radians) + 180})`, style: { fill: color } },
88
+ return (react_1.default.createElement("text", { x: 0, y: 0, className: classes.rulerLabel, textAnchor: "end", dominantBaseline: "middle", transform: `translate(${textXY}) rotate(${(0, util_1.radToDeg)(radians) + 180})`, fill: color },
89
89
  text,
90
90
  react_1.default.createElement("title", null, title || text)));
91
91
  }
@@ -121,9 +121,6 @@ const RegionRulerArc = (0, mobx_react_1.observer)(function ({ model, slice, regi
121
121
  react_1.default.createElement("path", { d: sliceArcPath(slice, radiusPx + 1, region.start, region.end), stroke: color, strokeWidth: 2, fill: "none" })));
122
122
  });
123
123
  const Ruler = (0, mobx_react_1.observer)(function ({ model, slice, }) {
124
- if (slice.region.elided) {
125
- return (react_1.default.createElement(ElisionRulerArc, { key: (0, util_1.assembleLocString)(slice.region.regions[0]), model: model, region: slice.region, slice: slice }));
126
- }
127
- return (react_1.default.createElement(RegionRulerArc, { key: (0, util_1.assembleLocString)(slice.region), region: slice.region, model: model, slice: slice }));
124
+ return slice.region.elided ? (react_1.default.createElement(ElisionRulerArc, { key: (0, util_1.assembleLocString)(slice.region.regions[0]), model: model, region: slice.region, slice: slice })) : (react_1.default.createElement(RegionRulerArc, { key: (0, util_1.assembleLocString)(slice.region), region: slice.region, model: model, slice: slice }));
128
125
  });
129
126
  exports.default = Ruler;
@@ -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 CircularViewF(pluginManager: PluginManager): void;
@@ -29,11 +29,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
29
  const react_1 = require("react");
30
30
  const ViewType_1 = __importDefault(require("@jbrowse/core/pluggableElementTypes/ViewType"));
31
31
  const model_1 = __importDefault(require("./models/model"));
32
- exports.default = (pluginManager) => {
32
+ function CircularViewF(pluginManager) {
33
33
  pluginManager.addViewType(() => new ViewType_1.default({
34
34
  ReactComponent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./components/CircularView')))),
35
35
  stateModel: (0, model_1.default)(pluginManager),
36
36
  name: 'CircularView',
37
37
  displayName: 'Circular view',
38
38
  }));
39
- };
39
+ }
40
+ exports.default = CircularViewF;
@@ -15,7 +15,7 @@ const Ruler_1 = __importDefault(require("../components/Ruler"));
15
15
  async function renderToSvg(model, opts) {
16
16
  var _a;
17
17
  await (0, mobx_1.when)(() => model.initialized);
18
- const { themeName = 'default', Wrapper = ({ children }) => react_1.default.createElement(react_1.default.Fragment, null, children) } = opts;
18
+ const { themeName = 'default', Wrapper = ({ children }) => children } = opts;
19
19
  const session = (0, util_1.getSession)(model);
20
20
  const theme = (_a = session.allThemes) === null || _a === void 0 ? void 0 : _a.call(session)[themeName];
21
21
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -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 LaunchCircularViewF(pluginManager: PluginManager): void;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const mobx_1 = require("mobx");
4
- exports.default = (pluginManager) => {
4
+ function LaunchCircularViewF(pluginManager) {
5
5
  pluginManager.addToExtensionPoint('LaunchView-CircularView',
6
6
  // @ts-expect-error
7
7
  async ({ session, assembly, tracks = [], }) => {
@@ -18,4 +18,5 @@ exports.default = (pluginManager) => {
18
18
  view.setDisplayedRegions(asm.regions || []);
19
19
  tracks.forEach(track => view.showTrack(track));
20
20
  });
21
- };
21
+ }
22
+ exports.default = LaunchCircularViewF;
@@ -2,5 +2,5 @@ import React from 'react';
2
2
  import { CircularViewModel } from '../models/model';
3
3
  declare const CircularView: ({ model }: {
4
4
  model: CircularViewModel;
5
- }) => React.JSX.Element;
5
+ }) => React.JSX.Element | null;
6
6
  export default CircularView;
@@ -33,7 +33,7 @@ const CircularView = observer(({ model }) => {
33
33
  model.initialized;
34
34
  const showImportForm = !initialized && !model.disableImportForm;
35
35
  const showFigure = initialized && !showImportForm;
36
- return (React.createElement(React.Fragment, null, showImportForm || model.error ? (React.createElement(ImportForm, { model: model })) : showFigure ? (React.createElement(CircularViewLoaded, { model: model })) : null));
36
+ return showImportForm || model.error ? (React.createElement(ImportForm, { model: model })) : showFigure ? (React.createElement(CircularViewLoaded, { model: model })) : null;
37
37
  });
38
38
  const CircularViewLoaded = observer(function ({ model, }) {
39
39
  const { width, height, id, offsetRadians, centerXY, figureWidth, figureHeight, hideVerticalResizeHandle, } = model;
@@ -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
  }
@@ -21,9 +25,8 @@ export default function ExportSvgDialog({ model, handleClose, }) {
21
25
  return (React.createElement(Dialog, { open: true, onClose: handleClose, title: "Export SVG" },
22
26
  React.createElement(DialogContent, null,
23
27
  error ? (React.createElement(ErrorMessage, { error: error })) : loading ? (React.createElement(LoadingMessage, null)) : null,
24
- React.createElement(TextField, { helperText: "filename", value: filename, onChange: event => setFilename(event.target.value) }),
25
- React.createElement("br", null),
26
- session.allThemes ? (React.createElement(TextField, { select: true, label: "Theme", value: themeName, onChange: event => setThemeName(event.target.value) }, Object.entries(session.allThemes()).map(([key, val]) => (React.createElement(MenuItem, { key: key, value: key },
28
+ React.createElement(TextField2, { helperText: "filename", value: filename, onChange: event => setFilename(event.target.value) }),
29
+ session.allThemes ? (React.createElement(TextField2, { select: true, label: "Theme", value: themeName, onChange: event => setThemeName(event.target.value) }, Object.entries(session.allThemes()).map(([key, val]) => (React.createElement(MenuItem, { key: key, value: key },
27
30
  // @ts-expect-error
28
31
  val.name || '(Unknown name)'))))) : null,
29
32
  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"))),
@@ -43,6 +46,8 @@ export default function ExportSvgDialog({ model, handleClose, }) {
43
46
  catch (e) {
44
47
  console.error(e);
45
48
  setError(e);
49
+ }
50
+ finally {
46
51
  setLoading(false);
47
52
  }
48
53
  } }, "Submit"))));
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { observer } from 'mobx-react';
3
- import { getSession, polarToCartesian, radToDeg, assembleLocString, } from '@jbrowse/core/util';
3
+ import { getSession, polarToCartesian, radToDeg, assembleLocString, getStrokeProps, getFillProps, } from '@jbrowse/core/util';
4
4
  import { makeContrasting } from '@jbrowse/core/util/color';
5
5
  import { useTheme } from '@mui/material/styles';
6
6
  import { makeStyles } from 'tss-react/mui';
@@ -58,7 +58,7 @@ const ElisionRulerArc = observer(function ({ model, slice, region, }) {
58
58
  largeArc,
59
59
  '1',
60
60
  ...endXY,
61
- ].join(' '), stroke: theme.palette.text.secondary, strokeWidth: 2, strokeDasharray: "2,2", fill: "none" })));
61
+ ].join(' '), ...getStrokeProps(theme.palette.text.secondary), strokeWidth: 2, strokeDasharray: "2,2", fill: "none" })));
62
62
  });
63
63
  const RulerLabel = observer(function ({ view, text, maxWidthPx, radians, radiusPx, title, color, }) {
64
64
  const { classes } = useStyles();
@@ -68,7 +68,7 @@ const RulerLabel = observer(function ({ view, text, maxWidthPx, radians, radiusP
68
68
  }
69
69
  if (text.length * 6.5 < maxWidthPx) {
70
70
  // text is rotated parallel to the ruler arc
71
- return (React.createElement("text", { x: 0, y: 0, className: classes.rulerLabel, textAnchor: "middle", dominantBaseline: "baseline", transform: `translate(${textXY}) rotate(${radToDeg(radians) + 90})`, style: { fill: color } },
71
+ return (React.createElement("text", { x: 0, y: 0, className: classes.rulerLabel, textAnchor: "middle", dominantBaseline: "baseline", transform: `translate(${textXY}) rotate(${radToDeg(radians) + 90})`, ...getFillProps(color) },
72
72
  text,
73
73
  React.createElement("title", null, title || text)));
74
74
  }
@@ -76,11 +76,11 @@ const RulerLabel = observer(function ({ view, text, maxWidthPx, radians, radiusP
76
76
  // text is rotated perpendicular to the ruler arc
77
77
  const overallRotation = radToDeg(radians + view.offsetRadians - Math.PI / 2);
78
78
  if (overallRotation >= 180) {
79
- return (React.createElement("text", { x: 0, y: 0, className: classes.rulerLabel, textAnchor: "start", dominantBaseline: "middle", transform: `translate(${textXY}) rotate(${radToDeg(radians)})`, style: { fill: color } },
79
+ return (React.createElement("text", { x: 0, y: 0, className: classes.rulerLabel, textAnchor: "start", dominantBaseline: "middle", transform: `translate(${textXY}) rotate(${radToDeg(radians)})`, fill: color },
80
80
  text,
81
81
  React.createElement("title", null, title || text)));
82
82
  }
83
- return (React.createElement("text", { x: 0, y: 0, className: classes.rulerLabel, textAnchor: "end", dominantBaseline: "middle", transform: `translate(${textXY}) rotate(${radToDeg(radians) + 180})`, style: { fill: color } },
83
+ return (React.createElement("text", { x: 0, y: 0, className: classes.rulerLabel, textAnchor: "end", dominantBaseline: "middle", transform: `translate(${textXY}) rotate(${radToDeg(radians) + 180})`, fill: color },
84
84
  text,
85
85
  React.createElement("title", null, title || text)));
86
86
  }
@@ -116,9 +116,6 @@ const RegionRulerArc = observer(function ({ model, slice, region, }) {
116
116
  React.createElement("path", { d: sliceArcPath(slice, radiusPx + 1, region.start, region.end), stroke: color, strokeWidth: 2, fill: "none" })));
117
117
  });
118
118
  const Ruler = observer(function ({ model, slice, }) {
119
- if (slice.region.elided) {
120
- return (React.createElement(ElisionRulerArc, { key: assembleLocString(slice.region.regions[0]), model: model, region: slice.region, slice: slice }));
121
- }
122
- return (React.createElement(RegionRulerArc, { key: assembleLocString(slice.region), region: slice.region, model: model, slice: slice }));
119
+ return slice.region.elided ? (React.createElement(ElisionRulerArc, { key: assembleLocString(slice.region.regions[0]), model: model, region: slice.region, slice: slice })) : (React.createElement(RegionRulerArc, { key: assembleLocString(slice.region), region: slice.region, model: model, slice: slice }));
123
120
  });
124
121
  export default Ruler;
@@ -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 CircularViewF(pluginManager: PluginManager): void;
@@ -1,11 +1,11 @@
1
1
  import { lazy } from 'react';
2
2
  import ViewType from '@jbrowse/core/pluggableElementTypes/ViewType';
3
3
  import stateModelFactory from './models/model';
4
- export default (pluginManager) => {
4
+ export default function CircularViewF(pluginManager) {
5
5
  pluginManager.addViewType(() => new ViewType({
6
6
  ReactComponent: lazy(() => import('./components/CircularView')),
7
7
  stateModel: stateModelFactory(pluginManager),
8
8
  name: 'CircularView',
9
9
  displayName: 'Circular view',
10
10
  }));
11
- };
11
+ }
@@ -9,7 +9,7 @@ import Ruler from '../components/Ruler';
9
9
  export async function renderToSvg(model, opts) {
10
10
  var _a;
11
11
  await when(() => model.initialized);
12
- const { themeName = 'default', Wrapper = ({ children }) => React.createElement(React.Fragment, null, children) } = opts;
12
+ const { themeName = 'default', Wrapper = ({ children }) => children } = opts;
13
13
  const session = getSession(model);
14
14
  const theme = (_a = session.allThemes) === null || _a === void 0 ? void 0 : _a.call(session)[themeName];
15
15
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -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 LaunchCircularViewF(pluginManager: PluginManager): void;
@@ -1,5 +1,5 @@
1
1
  import { when } from 'mobx';
2
- export default (pluginManager) => {
2
+ export default function LaunchCircularViewF(pluginManager) {
3
3
  pluginManager.addToExtensionPoint('LaunchView-CircularView',
4
4
  // @ts-expect-error
5
5
  async ({ session, assembly, tracks = [], }) => {
@@ -16,4 +16,4 @@ export default (pluginManager) => {
16
16
  view.setDisplayedRegions(asm.regions || []);
17
17
  tracks.forEach(track => view.showTrack(track));
18
18
  });
19
- };
19
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbrowse/plugin-circular-view",
3
- "version": "2.10.3",
3
+ "version": "2.11.1",
4
4
  "description": "JBrowse 2 circular view",
5
5
  "keywords": [
6
6
  "jbrowse",
@@ -57,5 +57,5 @@
57
57
  "distModule": "esm/index.js",
58
58
  "srcModule": "src/index.ts",
59
59
  "module": "esm/index.js",
60
- "gitHead": "c8fc800cd17decd72b2e971c7a6add3b95214e72"
60
+ "gitHead": "11b28d66d782eb06f92ccb993108bb6c3c82819e"
61
61
  }