@jbrowse/plugin-linear-genome-view 2.9.0 → 2.10.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 (47) hide show
  1. package/dist/BaseLinearDisplay/components/Tooltip.js +18 -50
  2. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +4 -16
  3. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js +8 -1
  4. package/dist/LinearBareDisplay/model.d.ts +8 -11
  5. package/dist/LinearBareDisplay/model.js +2 -1
  6. package/dist/LinearBasicDisplay/model.d.ts +30 -33
  7. package/dist/LinearBasicDisplay/model.js +3 -0
  8. package/dist/LinearGenomeView/components/Cytobands.d.ts +18 -6
  9. package/dist/LinearGenomeView/components/Cytobands.js +8 -2
  10. package/dist/LinearGenomeView/components/OverviewScalebar.d.ts +0 -8
  11. package/dist/LinearGenomeView/components/OverviewScalebar.js +23 -55
  12. package/dist/LinearGenomeView/components/OverviewScalebarPolygon.d.ts +9 -0
  13. package/dist/LinearGenomeView/components/OverviewScalebarPolygon.js +46 -0
  14. package/dist/LinearGenomeView/components/TracksContainer.js +1 -1
  15. package/dist/LinearGenomeView/model.d.ts +6 -1
  16. package/dist/LinearGenomeView/model.js +3 -0
  17. package/dist/LinearGenomeView/svgcomponents/SVGHeader.js +2 -2
  18. package/dist/LinearGenomeView/svgcomponents/SVGLinearGenomeView.d.ts +0 -7
  19. package/dist/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +11 -13
  20. package/dist/LinearGenomeView/svgcomponents/util.d.ts +8 -0
  21. package/dist/LinearGenomeView/svgcomponents/util.js +9 -0
  22. package/dist/index.d.ts +110 -37
  23. package/dist/index.js +3 -2
  24. package/esm/BaseLinearDisplay/components/Tooltip.js +16 -28
  25. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +4 -16
  26. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js +8 -1
  27. package/esm/LinearBareDisplay/model.d.ts +8 -11
  28. package/esm/LinearBareDisplay/model.js +2 -1
  29. package/esm/LinearBasicDisplay/model.d.ts +30 -33
  30. package/esm/LinearBasicDisplay/model.js +3 -0
  31. package/esm/LinearGenomeView/components/Cytobands.d.ts +18 -6
  32. package/esm/LinearGenomeView/components/Cytobands.js +8 -2
  33. package/esm/LinearGenomeView/components/OverviewScalebar.d.ts +0 -8
  34. package/esm/LinearGenomeView/components/OverviewScalebar.js +23 -53
  35. package/esm/LinearGenomeView/components/OverviewScalebarPolygon.d.ts +9 -0
  36. package/esm/LinearGenomeView/components/OverviewScalebarPolygon.js +41 -0
  37. package/esm/LinearGenomeView/components/TracksContainer.js +1 -1
  38. package/esm/LinearGenomeView/model.d.ts +6 -1
  39. package/esm/LinearGenomeView/model.js +3 -0
  40. package/esm/LinearGenomeView/svgcomponents/SVGHeader.js +2 -2
  41. package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.d.ts +0 -7
  42. package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +9 -10
  43. package/esm/LinearGenomeView/svgcomponents/util.d.ts +8 -0
  44. package/esm/LinearGenomeView/svgcomponents/util.js +5 -0
  45. package/esm/index.d.ts +110 -37
  46. package/esm/index.js +2 -1
  47. package/package.json +4 -6
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const material_1 = require("@mui/material");
8
+ const mobx_react_1 = require("mobx-react");
9
+ // locals
10
+ const __1 = require("..");
11
+ const OverviewScalebarPolygon = (0, mobx_react_1.observer)(function ({ model, overview, useOffset = true, }) {
12
+ const theme = (0, material_1.useTheme)();
13
+ const multiplier = Number(useOffset);
14
+ const { interRegionPaddingWidth, offsetPx, dynamicBlocks, cytobandOffset } = model;
15
+ const { contentBlocks, totalWidthPxWithoutBorders } = dynamicBlocks;
16
+ const { tertiary, primary } = theme.palette;
17
+ const polygonColor = tertiary ? tertiary.light : primary.light;
18
+ // catches possible null from at's below
19
+ if (!contentBlocks.length) {
20
+ return null;
21
+ }
22
+ const first = contentBlocks.at(0);
23
+ const last = contentBlocks.at(-1);
24
+ const topLeft = (overview.bpToPx({
25
+ ...first,
26
+ coord: first.reversed ? first.end : first.start,
27
+ }) || 0) +
28
+ cytobandOffset * multiplier;
29
+ const topRight = (overview.bpToPx({
30
+ ...last,
31
+ coord: last.reversed ? last.start : last.end,
32
+ }) || 0) +
33
+ cytobandOffset * multiplier;
34
+ const startPx = Math.max(0, -offsetPx);
35
+ const endPx = startPx +
36
+ totalWidthPxWithoutBorders +
37
+ (contentBlocks.length * interRegionPaddingWidth) / 2;
38
+ const points = [
39
+ [startPx, __1.HEADER_BAR_HEIGHT],
40
+ [endPx, __1.HEADER_BAR_HEIGHT],
41
+ [topRight, 0],
42
+ [topLeft, 0],
43
+ ];
44
+ return (react_1.default.createElement("polygon", { points: points.toString(), fill: (0, material_1.alpha)(polygonColor, 0.3), stroke: (0, material_1.alpha)(polygonColor, 0.8) }));
45
+ });
46
+ exports.default = OverviewScalebarPolygon;
@@ -30,6 +30,7 @@ const react_1 = __importStar(require("react"));
30
30
  const mui_1 = require("tss-react/mui");
31
31
  const mobx_react_1 = require("mobx-react");
32
32
  const ui_1 = require("@jbrowse/core/ui");
33
+ const util_1 = require("@jbrowse/core/util");
33
34
  // local utils
34
35
  const __1 = require("..");
35
36
  const hooks_1 = require("./hooks");
@@ -40,7 +41,6 @@ const Gridlines_1 = __importDefault(require("./Gridlines"));
40
41
  const CenterLine_1 = __importDefault(require("./CenterLine"));
41
42
  const VerticalGuide_1 = __importDefault(require("./VerticalGuide"));
42
43
  const RubberbandSpan_1 = __importDefault(require("./RubberbandSpan"));
43
- const util_1 = require("@jbrowse/core/util");
44
44
  const useStyles = (0, mui_1.makeStyles)()({
45
45
  tracksContainer: {
46
46
  position: 'relative',
@@ -21,7 +21,9 @@ export interface BpOffset {
21
21
  export interface ExportSvgOptions {
22
22
  rasterizeLayers?: boolean;
23
23
  filename?: string;
24
- Wrapper?: React.FC<any>;
24
+ Wrapper?: React.FC<{
25
+ children: React.ReactNode;
26
+ }>;
25
27
  fontSize?: number;
26
28
  rulerHeight?: number;
27
29
  textHeight?: number;
@@ -47,6 +49,9 @@ export declare const WIDGET_HEIGHT = 32;
47
49
  /**
48
50
  * #stateModel LinearGenomeView
49
51
  * #category view
52
+ *
53
+ * extends
54
+ * - [BaseViewModel](../baseviewmodel)
50
55
  */
51
56
  export declare function stateModelFactory(pluginManager: PluginManager): import("mobx-state-tree").IModelType<{
52
57
  id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
@@ -83,6 +83,9 @@ exports.WIDGET_HEIGHT = 32;
83
83
  /**
84
84
  * #stateModel LinearGenomeView
85
85
  * #category view
86
+ *
87
+ * extends
88
+ * - [BaseViewModel](../baseviewmodel)
86
89
  */
87
90
  function stateModelFactory(pluginManager) {
88
91
  return mobx_state_tree_1.types
@@ -10,9 +10,9 @@ const material_1 = require("@mui/material");
10
10
  // locals
11
11
  const __1 = require("..");
12
12
  const Cytobands_1 = __importDefault(require("../components/Cytobands"));
13
- const OverviewScalebar_1 = require("../components/OverviewScalebar");
14
13
  const SVGRuler_1 = __importDefault(require("./SVGRuler"));
15
14
  const SVGScalebar_1 = __importDefault(require("./SVGScalebar"));
15
+ const OverviewScalebarPolygon_1 = __importDefault(require("../components/OverviewScalebarPolygon"));
16
16
  function SVGHeader({ model, fontSize, cytobandHeight, rulerHeight, }) {
17
17
  const { width, assemblyNames, showCytobands, displayedRegions } = model;
18
18
  const { assemblyManager } = (0, util_1.getSession)(model);
@@ -49,7 +49,7 @@ function SVGHeader({ model, fontSize, cytobandHeight, rulerHeight, }) {
49
49
  react_1.default.createElement(Cytobands_1.default, { overview: overview, assembly: assembly, block: block }),
50
50
  react_1.default.createElement("rect", { stroke: "red", fill: "rgb(255,0,0,0.1)", width: Math.max(lastOverviewPx - firstOverviewPx, 0.5), height: __1.HEADER_OVERVIEW_HEIGHT - 1, x: firstOverviewPx, y: 0.5 }),
51
51
  react_1.default.createElement("g", { transform: `translate(0,${__1.HEADER_OVERVIEW_HEIGHT})` },
52
- react_1.default.createElement(OverviewScalebar_1.Polygon, { overview: overview, model: model, useOffset: false })))) : null,
52
+ react_1.default.createElement(OverviewScalebarPolygon_1.default, { overview: overview, model: model, useOffset: false })))) : null,
53
53
  react_1.default.createElement("g", { transform: `translate(0 ${fontSize + y})` },
54
54
  react_1.default.createElement(SVGScalebar_1.default, { model: model, fontSize: fontSize })),
55
55
  react_1.default.createElement("g", { transform: `translate(0 ${rulerHeight + y})` },
@@ -1,12 +1,5 @@
1
1
  import { LinearGenomeViewModel, ExportSvgOptions } from '..';
2
2
  type LGV = LinearGenomeViewModel;
3
- interface Display {
4
- height: number;
5
- }
6
- interface Track {
7
- displays: Display[];
8
- }
9
- export declare function totalHeight(tracks: Track[], textHeight: number, trackLabels: string): number;
10
3
  export declare function renderToSvg(model: LGV, opts: ExportSvgOptions): Promise<string>;
11
4
  export { default as SVGRuler } from './SVGRuler';
12
5
  export { default as SVGTracks } from './SVGTracks';
@@ -3,35 +3,33 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SVGTracks = exports.SVGRuler = exports.renderToSvg = exports.totalHeight = void 0;
6
+ exports.SVGTracks = exports.SVGRuler = exports.renderToSvg = void 0;
7
7
  /* eslint-disable react-refresh/only-export-components */
8
8
  const react_1 = __importDefault(require("react"));
9
- const server_1 = require("react-dom/server");
10
9
  const mobx_1 = require("mobx");
11
10
  const util_1 = require("@jbrowse/core/util");
12
11
  const material_1 = require("@mui/material");
13
12
  const ui_1 = require("@jbrowse/core/ui");
13
+ const tracks_1 = require("@jbrowse/core/util/tracks");
14
+ const mobx_state_tree_1 = require("mobx-state-tree");
14
15
  const SVGBackground_1 = __importDefault(require("./SVGBackground"));
15
16
  const SVGTracks_1 = __importDefault(require("./SVGTracks"));
16
17
  const SVGHeader_1 = __importDefault(require("./SVGHeader"));
17
- const tracks_1 = require("@jbrowse/core/util/tracks");
18
- function totalHeight(tracks, textHeight, trackLabels) {
19
- return (0, util_1.sum)(tracks.map(t => t.displays[0].height +
20
- (['none', 'left'].includes(trackLabels) ? 0 : textHeight)));
21
- }
22
- exports.totalHeight = totalHeight;
18
+ const util_2 = require("./util");
23
19
  // render LGV to SVG
24
20
  async function renderToSvg(model, opts) {
25
- var _a;
26
21
  await (0, mobx_1.when)(() => model.initialized);
27
22
  const { textHeight = 18, headerHeight = 40, rulerHeight = 50, fontSize = 13, cytobandHeight = 100, trackLabels = 'offset', themeName = 'default', Wrapper = ({ children }) => react_1.default.createElement(react_1.default.Fragment, null, children), } = opts;
28
23
  const session = (0, util_1.getSession)(model);
29
- const theme = (_a = session.allThemes) === null || _a === void 0 ? void 0 : _a.call(session)[themeName];
24
+ const { allThemes } = session;
25
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
+ const { createRootFn } = (0, mobx_state_tree_1.getRoot)(model);
27
+ const theme = allThemes === null || allThemes === void 0 ? void 0 : allThemes()[themeName];
30
28
  const { width, tracks, showCytobands } = model;
31
29
  const shift = 50;
32
30
  const c = +showCytobands * cytobandHeight;
33
31
  const offset = headerHeight + rulerHeight + c + 10;
34
- const height = totalHeight(tracks, textHeight, trackLabels) + offset + 100;
32
+ const height = (0, util_2.totalHeight)(tracks, textHeight, trackLabels) + offset + 100;
35
33
  const displayResults = await Promise.all(tracks.map(async (track) => {
36
34
  const display = track.displays[0];
37
35
  await (0, mobx_1.when)(() => !display.renderProps().notReady);
@@ -41,14 +39,14 @@ async function renderToSvg(model, opts) {
41
39
  const trackLabelOffset = trackLabels === 'left' ? trackLabelMaxLen : 0;
42
40
  const w = width + trackLabelOffset;
43
41
  // the xlink namespace is used for rendering <image> tag
44
- return (0, server_1.renderToStaticMarkup)(react_1.default.createElement(material_1.ThemeProvider, { theme: (0, ui_1.createJBrowseTheme)(theme) },
42
+ return (0, util_1.renderToStaticMarkup)(react_1.default.createElement(material_1.ThemeProvider, { theme: (0, ui_1.createJBrowseTheme)(theme) },
45
43
  react_1.default.createElement(Wrapper, null,
46
44
  react_1.default.createElement("svg", { width: w, height: height, xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", viewBox: [0, 0, w + shift * 2, height].toString() },
47
45
  react_1.default.createElement(SVGBackground_1.default, { width: w, height: height, shift: shift }),
48
46
  react_1.default.createElement("g", { transform: `translate(${shift} 0)` },
49
47
  react_1.default.createElement("g", { transform: `translate(${trackLabelOffset})` },
50
48
  react_1.default.createElement(SVGHeader_1.default, { model: model, fontSize: fontSize, rulerHeight: rulerHeight, cytobandHeight: cytobandHeight })),
51
- react_1.default.createElement(SVGTracks_1.default, { textHeight: textHeight, fontSize: fontSize, model: model, displayResults: displayResults, offset: offset, trackLabels: trackLabels, trackLabelOffset: trackLabelOffset }))))));
49
+ react_1.default.createElement(SVGTracks_1.default, { textHeight: textHeight, fontSize: fontSize, model: model, displayResults: displayResults, offset: offset, trackLabels: trackLabels, trackLabelOffset: trackLabelOffset }))))), createRootFn);
52
50
  }
53
51
  exports.renderToSvg = renderToSvg;
54
52
  var SVGRuler_1 = require("./SVGRuler");
@@ -0,0 +1,8 @@
1
+ interface Display {
2
+ height: number;
3
+ }
4
+ interface Track {
5
+ displays: Display[];
6
+ }
7
+ export declare function totalHeight(tracks: Track[], textHeight: number, trackLabels: string): number;
8
+ export {};
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.totalHeight = void 0;
4
+ const util_1 = require("@jbrowse/core/util");
5
+ function totalHeight(tracks, textHeight, trackLabels) {
6
+ return (0, util_1.sum)(tracks.map(t => t.displays[0].height +
7
+ (['none', 'left'].includes(trackLabels) ? 0 : textHeight)));
8
+ }
9
+ exports.totalHeight = totalHeight;
package/dist/index.d.ts CHANGED
@@ -1080,11 +1080,17 @@ export default class LinearGenomeViewPlugin extends Plugin {
1080
1080
  load(): Promise<void>;
1081
1081
  loadPre(): Promise<void>;
1082
1082
  } & {
1083
- getAdapterMapEntry(adapterConf: unknown, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
1084
- getRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1083
+ getAdapterMapEntry(adapterConf: {
1084
+ [x: string]: unknown;
1085
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
1086
+ getRefNameMapForAdapter(adapterConf: {
1087
+ [x: string]: unknown;
1088
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1085
1089
  [x: string]: string | undefined;
1086
1090
  }>;
1087
- getReverseRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1091
+ getReverseRefNameMapForAdapter(adapterConf: {
1092
+ [x: string]: unknown;
1093
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1088
1094
  [x: string]: string | undefined;
1089
1095
  }>;
1090
1096
  } & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
@@ -1136,11 +1142,17 @@ export default class LinearGenomeViewPlugin extends Plugin {
1136
1142
  load(): Promise<void>;
1137
1143
  loadPre(): Promise<void>;
1138
1144
  } & {
1139
- getAdapterMapEntry(adapterConf: unknown, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
1140
- getRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1145
+ getAdapterMapEntry(adapterConf: {
1146
+ [x: string]: unknown;
1147
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
1148
+ getRefNameMapForAdapter(adapterConf: {
1149
+ [x: string]: unknown;
1150
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1141
1151
  [x: string]: string | undefined;
1142
1152
  }>;
1143
- getReverseRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1153
+ getReverseRefNameMapForAdapter(adapterConf: {
1154
+ [x: string]: unknown;
1155
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1144
1156
  [x: string]: string | undefined;
1145
1157
  }>;
1146
1158
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
@@ -1387,11 +1399,17 @@ export default class LinearGenomeViewPlugin extends Plugin {
1387
1399
  load(): Promise<void>;
1388
1400
  loadPre(): Promise<void>;
1389
1401
  } & {
1390
- getAdapterMapEntry(adapterConf: unknown, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
1391
- getRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1402
+ getAdapterMapEntry(adapterConf: {
1403
+ [x: string]: unknown;
1404
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
1405
+ getRefNameMapForAdapter(adapterConf: {
1406
+ [x: string]: unknown;
1407
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1392
1408
  [x: string]: string | undefined;
1393
1409
  }>;
1394
- getReverseRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1410
+ getReverseRefNameMapForAdapter(adapterConf: {
1411
+ [x: string]: unknown;
1412
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1395
1413
  [x: string]: string | undefined;
1396
1414
  }>;
1397
1415
  } & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
@@ -1443,11 +1461,17 @@ export default class LinearGenomeViewPlugin extends Plugin {
1443
1461
  load(): Promise<void>;
1444
1462
  loadPre(): Promise<void>;
1445
1463
  } & {
1446
- getAdapterMapEntry(adapterConf: unknown, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
1447
- getRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1464
+ getAdapterMapEntry(adapterConf: {
1465
+ [x: string]: unknown;
1466
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
1467
+ getRefNameMapForAdapter(adapterConf: {
1468
+ [x: string]: unknown;
1469
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1448
1470
  [x: string]: string | undefined;
1449
1471
  }>;
1450
- getReverseRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1472
+ getReverseRefNameMapForAdapter(adapterConf: {
1473
+ [x: string]: unknown;
1474
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1451
1475
  [x: string]: string | undefined;
1452
1476
  }>;
1453
1477
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
@@ -1704,11 +1728,17 @@ export default class LinearGenomeViewPlugin extends Plugin {
1704
1728
  load(): Promise<void>;
1705
1729
  loadPre(): Promise<void>;
1706
1730
  } & {
1707
- getAdapterMapEntry(adapterConf: unknown, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
1708
- getRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1731
+ getAdapterMapEntry(adapterConf: {
1732
+ [x: string]: unknown;
1733
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
1734
+ getRefNameMapForAdapter(adapterConf: {
1735
+ [x: string]: unknown;
1736
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1709
1737
  [x: string]: string | undefined;
1710
1738
  }>;
1711
- getReverseRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1739
+ getReverseRefNameMapForAdapter(adapterConf: {
1740
+ [x: string]: unknown;
1741
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1712
1742
  [x: string]: string | undefined;
1713
1743
  }>;
1714
1744
  } & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
@@ -1760,11 +1790,17 @@ export default class LinearGenomeViewPlugin extends Plugin {
1760
1790
  load(): Promise<void>;
1761
1791
  loadPre(): Promise<void>;
1762
1792
  } & {
1763
- getAdapterMapEntry(adapterConf: unknown, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
1764
- getRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1793
+ getAdapterMapEntry(adapterConf: {
1794
+ [x: string]: unknown;
1795
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
1796
+ getRefNameMapForAdapter(adapterConf: {
1797
+ [x: string]: unknown;
1798
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1765
1799
  [x: string]: string | undefined;
1766
1800
  }>;
1767
- getReverseRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1801
+ getReverseRefNameMapForAdapter(adapterConf: {
1802
+ [x: string]: unknown;
1803
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
1768
1804
  [x: string]: string | undefined;
1769
1805
  }>;
1770
1806
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
@@ -2011,11 +2047,17 @@ export default class LinearGenomeViewPlugin extends Plugin {
2011
2047
  load(): Promise<void>;
2012
2048
  loadPre(): Promise<void>;
2013
2049
  } & {
2014
- getAdapterMapEntry(adapterConf: unknown, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
2015
- getRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2050
+ getAdapterMapEntry(adapterConf: {
2051
+ [x: string]: unknown;
2052
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
2053
+ getRefNameMapForAdapter(adapterConf: {
2054
+ [x: string]: unknown;
2055
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2016
2056
  [x: string]: string | undefined;
2017
2057
  }>;
2018
- getReverseRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2058
+ getReverseRefNameMapForAdapter(adapterConf: {
2059
+ [x: string]: unknown;
2060
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2019
2061
  [x: string]: string | undefined;
2020
2062
  }>;
2021
2063
  } & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
@@ -2067,11 +2109,17 @@ export default class LinearGenomeViewPlugin extends Plugin {
2067
2109
  load(): Promise<void>;
2068
2110
  loadPre(): Promise<void>;
2069
2111
  } & {
2070
- getAdapterMapEntry(adapterConf: unknown, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
2071
- getRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2112
+ getAdapterMapEntry(adapterConf: {
2113
+ [x: string]: unknown;
2114
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
2115
+ getRefNameMapForAdapter(adapterConf: {
2116
+ [x: string]: unknown;
2117
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2072
2118
  [x: string]: string | undefined;
2073
2119
  }>;
2074
- getReverseRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2120
+ getReverseRefNameMapForAdapter(adapterConf: {
2121
+ [x: string]: unknown;
2122
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2075
2123
  [x: string]: string | undefined;
2076
2124
  }>;
2077
2125
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
@@ -2328,11 +2376,17 @@ export default class LinearGenomeViewPlugin extends Plugin {
2328
2376
  load(): Promise<void>;
2329
2377
  loadPre(): Promise<void>;
2330
2378
  } & {
2331
- getAdapterMapEntry(adapterConf: unknown, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
2332
- getRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2379
+ getAdapterMapEntry(adapterConf: {
2380
+ [x: string]: unknown;
2381
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
2382
+ getRefNameMapForAdapter(adapterConf: {
2383
+ [x: string]: unknown;
2384
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2333
2385
  [x: string]: string | undefined;
2334
2386
  }>;
2335
- getReverseRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2387
+ getReverseRefNameMapForAdapter(adapterConf: {
2388
+ [x: string]: unknown;
2389
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2336
2390
  [x: string]: string | undefined;
2337
2391
  }>;
2338
2392
  } & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
@@ -2384,11 +2438,17 @@ export default class LinearGenomeViewPlugin extends Plugin {
2384
2438
  load(): Promise<void>;
2385
2439
  loadPre(): Promise<void>;
2386
2440
  } & {
2387
- getAdapterMapEntry(adapterConf: unknown, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
2388
- getRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2441
+ getAdapterMapEntry(adapterConf: {
2442
+ [x: string]: unknown;
2443
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
2444
+ getRefNameMapForAdapter(adapterConf: {
2445
+ [x: string]: unknown;
2446
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2389
2447
  [x: string]: string | undefined;
2390
2448
  }>;
2391
- getReverseRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2449
+ getReverseRefNameMapForAdapter(adapterConf: {
2450
+ [x: string]: unknown;
2451
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2392
2452
  [x: string]: string | undefined;
2393
2453
  }>;
2394
2454
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
@@ -2635,11 +2695,17 @@ export default class LinearGenomeViewPlugin extends Plugin {
2635
2695
  load(): Promise<void>;
2636
2696
  loadPre(): Promise<void>;
2637
2697
  } & {
2638
- getAdapterMapEntry(adapterConf: unknown, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
2639
- getRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2698
+ getAdapterMapEntry(adapterConf: {
2699
+ [x: string]: unknown;
2700
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
2701
+ getRefNameMapForAdapter(adapterConf: {
2702
+ [x: string]: unknown;
2703
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2640
2704
  [x: string]: string | undefined;
2641
2705
  }>;
2642
- getReverseRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2706
+ getReverseRefNameMapForAdapter(adapterConf: {
2707
+ [x: string]: unknown;
2708
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2643
2709
  [x: string]: string | undefined;
2644
2710
  }>;
2645
2711
  } & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
@@ -2691,11 +2757,17 @@ export default class LinearGenomeViewPlugin extends Plugin {
2691
2757
  load(): Promise<void>;
2692
2758
  loadPre(): Promise<void>;
2693
2759
  } & {
2694
- getAdapterMapEntry(adapterConf: unknown, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
2695
- getRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2760
+ getAdapterMapEntry(adapterConf: {
2761
+ [x: string]: unknown;
2762
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
2763
+ getRefNameMapForAdapter(adapterConf: {
2764
+ [x: string]: unknown;
2765
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2696
2766
  [x: string]: string | undefined;
2697
2767
  }>;
2698
- getReverseRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2768
+ getReverseRefNameMapForAdapter(adapterConf: {
2769
+ [x: string]: unknown;
2770
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
2699
2771
  [x: string]: string | undefined;
2700
2772
  }>;
2701
2773
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
@@ -2761,5 +2833,6 @@ export type { ExportSvgDisplayOptions, BaseLinearDisplayModel, BlockModel, } fro
2761
2833
  export { configSchemaFactory as linearBareDisplayConfigSchemaFactory } from './LinearBareDisplay';
2762
2834
  export { baseLinearDisplayConfigSchema, BaseLinearDisplay, BlockMsg, BaseLinearDisplayComponent, TrackHeightMixin, FeatureDensityMixin, TooLargeMessage, } from './BaseLinearDisplay';
2763
2835
  export { type LinearGenomeViewModel, type LinearGenomeViewStateModel, RefNameAutocomplete, SearchBox, } from './LinearGenomeView';
2764
- export { renderToSvg, SVGTracks, totalHeight, SVGRuler, } from './LinearGenomeView/svgcomponents/SVGLinearGenomeView';
2836
+ export { renderToSvg, SVGTracks, SVGRuler, } from './LinearGenomeView/svgcomponents/SVGLinearGenomeView';
2837
+ export { totalHeight } from './LinearGenomeView/svgcomponents/util';
2765
2838
  export { configSchema as linearBasicDisplayConfigSchemaFactory, modelFactory as linearBasicDisplayModelFactory, } from './LinearBasicDisplay';
package/dist/index.js CHANGED
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.linearBasicDisplayModelFactory = exports.linearBasicDisplayConfigSchemaFactory = exports.SVGRuler = exports.totalHeight = exports.SVGTracks = exports.renderToSvg = exports.SearchBox = exports.RefNameAutocomplete = exports.TooLargeMessage = exports.FeatureDensityMixin = exports.TrackHeightMixin = exports.BaseLinearDisplayComponent = exports.BlockMsg = exports.BaseLinearDisplay = exports.baseLinearDisplayConfigSchema = exports.linearBareDisplayConfigSchemaFactory = void 0;
29
+ exports.linearBasicDisplayModelFactory = exports.linearBasicDisplayConfigSchemaFactory = exports.totalHeight = exports.SVGRuler = exports.SVGTracks = exports.renderToSvg = exports.SearchBox = exports.RefNameAutocomplete = exports.TooLargeMessage = exports.FeatureDensityMixin = exports.TrackHeightMixin = exports.BaseLinearDisplayComponent = exports.BlockMsg = exports.BaseLinearDisplay = exports.baseLinearDisplayConfigSchema = exports.linearBareDisplayConfigSchemaFactory = void 0;
30
30
  const Plugin_1 = __importDefault(require("@jbrowse/core/Plugin"));
31
31
  const util_1 = require("@jbrowse/core/util");
32
32
  const configuration_1 = require("@jbrowse/core/configuration");
@@ -108,8 +108,9 @@ Object.defineProperty(exports, "SearchBox", { enumerable: true, get: function ()
108
108
  var SVGLinearGenomeView_1 = require("./LinearGenomeView/svgcomponents/SVGLinearGenomeView");
109
109
  Object.defineProperty(exports, "renderToSvg", { enumerable: true, get: function () { return SVGLinearGenomeView_1.renderToSvg; } });
110
110
  Object.defineProperty(exports, "SVGTracks", { enumerable: true, get: function () { return SVGLinearGenomeView_1.SVGTracks; } });
111
- Object.defineProperty(exports, "totalHeight", { enumerable: true, get: function () { return SVGLinearGenomeView_1.totalHeight; } });
112
111
  Object.defineProperty(exports, "SVGRuler", { enumerable: true, get: function () { return SVGLinearGenomeView_1.SVGRuler; } });
112
+ var util_2 = require("./LinearGenomeView/svgcomponents/util");
113
+ Object.defineProperty(exports, "totalHeight", { enumerable: true, get: function () { return util_2.totalHeight; } });
113
114
  var LinearBasicDisplay_2 = require("./LinearBasicDisplay");
114
115
  Object.defineProperty(exports, "linearBasicDisplayConfigSchemaFactory", { enumerable: true, get: function () { return LinearBasicDisplay_2.configSchema; } });
115
116
  Object.defineProperty(exports, "linearBasicDisplayModelFactory", { enumerable: true, get: function () { return LinearBasicDisplay_2.modelFactory; } });
@@ -1,10 +1,10 @@
1
- import React, { useState, useMemo } from 'react';
1
+ import React from 'react';
2
2
  import { getConf } from '@jbrowse/core/configuration';
3
3
  import { SanitizedHTML } from '@jbrowse/core/ui';
4
4
  import { observer } from 'mobx-react';
5
5
  import { Portal, alpha } from '@mui/material';
6
6
  import { makeStyles } from 'tss-react/mui';
7
- import { usePopper } from 'react-popper';
7
+ import { useClientPoint, useFloating, useInteractions, } from '@floating-ui/react';
8
8
  function round(value) {
9
9
  return Math.round(value * 1e5) / 1e5;
10
10
  }
@@ -27,39 +27,27 @@ const useStyles = makeStyles()(theme => ({
27
27
  const TooltipContents = React.forwardRef(function TooltipContents2({ message }, ref) {
28
28
  return (React.createElement("div", { ref: ref }, React.isValidElement(message) ? (message) : message ? (React.createElement(SanitizedHTML, { html: String(message) })) : null));
29
29
  });
30
- const Tooltip = observer(({ model, clientMouseCoord, }) => {
30
+ const Tooltip = observer(function ({ model, clientMouseCoord, }) {
31
31
  var _a, _b;
32
32
  const { theme, classes } = useStyles();
33
33
  const { featureUnderMouse } = model;
34
- const [width, setWidth] = useState(0);
35
- const [popperElt, setPopperElt] = useState(null);
36
- // must be memoized a la https://github.com/popperjs/react-popper/issues/391
37
- const virtElement = useMemo(() => ({
38
- getBoundingClientRect: () => {
39
- const x = clientMouseCoord[0] + width / 2 + 20;
40
- const y = clientMouseCoord[1];
41
- return {
42
- top: y,
43
- left: x,
44
- bottom: y,
45
- right: x,
46
- width: 0,
47
- height: 0,
48
- x,
49
- y,
50
- toJSON() { },
51
- };
52
- },
53
- }), [clientMouseCoord, width]);
54
- const { styles, attributes } = usePopper(virtElement, popperElt);
34
+ const x = clientMouseCoord[0] + 15;
35
+ const y = clientMouseCoord[1];
36
+ const { refs, floatingStyles, context } = useFloating({
37
+ placement: 'right',
38
+ });
39
+ const clientPoint = useClientPoint(context, { x, y });
40
+ const { getFloatingProps } = useInteractions([clientPoint]);
55
41
  const contents = featureUnderMouse
56
42
  ? getConf(model, 'mouseover', { feature: featureUnderMouse })
57
43
  : undefined;
58
44
  const popperTheme = (_a = theme === null || theme === void 0 ? void 0 : theme.components) === null || _a === void 0 ? void 0 : _a.MuiPopper;
59
45
  return featureUnderMouse && contents ? (React.createElement(Portal, { container: (_b = popperTheme === null || popperTheme === void 0 ? void 0 : popperTheme.defaultProps) === null || _b === void 0 ? void 0 : _b.container },
60
- React.createElement("div", { ref: setPopperElt, className: classes.tooltip,
61
- // zIndex needed to go over widget drawer
62
- style: { ...styles.popper, zIndex: 100000 }, ...attributes.popper },
63
- React.createElement(TooltipContents, { ref: elt => setWidth((elt === null || elt === void 0 ? void 0 : elt.getBoundingClientRect().width) || 0), message: contents })))) : null;
46
+ React.createElement("div", { className: classes.tooltip, ref: refs.setFloating, style: {
47
+ ...floatingStyles,
48
+ zIndex: 100000,
49
+ pointerEvents: 'none',
50
+ }, ...getFloatingProps() },
51
+ React.createElement(TooltipContents, { message: contents })))) : null;
64
52
  });
65
53
  export default Tooltip;
@@ -69,11 +69,7 @@ export declare const BaseLinearDisplay: import("mobx-state-tree").IModelType<{
69
69
  setMessage(messageText: string): void;
70
70
  setRendered(props: {
71
71
  reactElement: React.ReactElement<any, string | React.JSXElementConstructor<any>>;
72
- features: Map<string, Feature>; /**
73
- * #getter
74
- * a CompositeMap of `featureId -> feature obj` that
75
- * just looks in all the block data for that feature
76
- */
72
+ features: Map<string, Feature>;
77
73
  layout: any;
78
74
  maxHeightReached: boolean;
79
75
  renderProps: any;
@@ -132,9 +128,7 @@ export declare const BaseLinearDisplay: import("mobx-state-tree").IModelType<{
132
128
  message: string | undefined;
133
129
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
134
130
  onHorizontalScroll?: Function | undefined;
135
- blockState?: Record<string, any> | undefined; /**
136
- * #property
137
- */
131
+ blockState?: Record<string, any> | undefined;
138
132
  }>;
139
133
  readonly DisplayBlurb: React.FC<{
140
134
  model: {
@@ -142,9 +136,7 @@ export declare const BaseLinearDisplay: import("mobx-state-tree").IModelType<{
142
136
  type: string;
143
137
  rpcDriverName: string | undefined;
144
138
  } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
145
- rendererTypeName: string; /**
146
- * #getter
147
- */
139
+ rendererTypeName: string;
148
140
  error: unknown;
149
141
  message: string | undefined;
150
142
  } & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
@@ -361,11 +353,7 @@ export declare const BaseLinearDisplay: import("mobx-state-tree").IModelType<{
361
353
  setMessage(messageText: string): void;
362
354
  setRendered(props: {
363
355
  reactElement: React.ReactElement<any, string | React.JSXElementConstructor<any>>;
364
- features: Map<string, Feature>; /**
365
- * #getter
366
- * a CompositeMap of `featureId -> feature obj` that
367
- * just looks in all the block data for that feature
368
- */
356
+ features: Map<string, Feature>;
369
357
  layout: any;
370
358
  maxHeightReached: boolean;
371
359
  renderProps: any;