@jbrowse/plugin-linear-genome-view 2.8.0 → 2.10.0

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 (59) 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/BasicTrack/configSchema.d.ts +5 -0
  5. package/dist/FeatureTrack/configSchema.d.ts +5 -0
  6. package/dist/LaunchLinearGenomeView/index.js +16 -14
  7. package/dist/LinearBareDisplay/model.d.ts +8 -11
  8. package/dist/LinearBareDisplay/model.js +2 -1
  9. package/dist/LinearBasicDisplay/model.d.ts +30 -33
  10. package/dist/LinearBasicDisplay/model.js +3 -0
  11. package/dist/LinearGenomeView/components/CenterLine.js +1 -1
  12. package/dist/LinearGenomeView/components/Cytobands.d.ts +18 -6
  13. package/dist/LinearGenomeView/components/Cytobands.js +8 -2
  14. package/dist/LinearGenomeView/components/ImportForm.js +26 -74
  15. package/dist/LinearGenomeView/components/ImportFormRefNameAutocomplete.d.ts +12 -0
  16. package/dist/LinearGenomeView/components/ImportFormRefNameAutocomplete.js +29 -0
  17. package/dist/LinearGenomeView/components/OverviewScalebar.js +1 -1
  18. package/dist/LinearGenomeView/components/SearchBox.js +19 -56
  19. package/dist/LinearGenomeView/components/TracksContainer.js +1 -1
  20. package/dist/LinearGenomeView/model.d.ts +18 -2
  21. package/dist/LinearGenomeView/model.js +19 -0
  22. package/dist/LinearGenomeView/svgcomponents/SVGLinearGenomeView.d.ts +0 -7
  23. package/dist/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +11 -13
  24. package/dist/LinearGenomeView/svgcomponents/util.d.ts +8 -0
  25. package/dist/LinearGenomeView/svgcomponents/util.js +9 -0
  26. package/dist/index.d.ts +776 -7
  27. package/dist/index.js +5 -4
  28. package/dist/searchUtils.d.ts +26 -0
  29. package/dist/searchUtils.js +90 -0
  30. package/esm/BaseLinearDisplay/components/Tooltip.js +16 -28
  31. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +4 -16
  32. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js +8 -1
  33. package/esm/BasicTrack/configSchema.d.ts +5 -0
  34. package/esm/FeatureTrack/configSchema.d.ts +5 -0
  35. package/esm/LaunchLinearGenomeView/index.js +16 -14
  36. package/esm/LinearBareDisplay/model.d.ts +8 -11
  37. package/esm/LinearBareDisplay/model.js +2 -1
  38. package/esm/LinearBasicDisplay/model.d.ts +30 -33
  39. package/esm/LinearBasicDisplay/model.js +3 -0
  40. package/esm/LinearGenomeView/components/CenterLine.js +1 -1
  41. package/esm/LinearGenomeView/components/Cytobands.d.ts +18 -6
  42. package/esm/LinearGenomeView/components/Cytobands.js +8 -2
  43. package/esm/LinearGenomeView/components/ImportForm.js +26 -74
  44. package/esm/LinearGenomeView/components/ImportFormRefNameAutocomplete.d.ts +12 -0
  45. package/esm/LinearGenomeView/components/ImportFormRefNameAutocomplete.js +24 -0
  46. package/esm/LinearGenomeView/components/OverviewScalebar.js +1 -1
  47. package/esm/LinearGenomeView/components/SearchBox.js +20 -57
  48. package/esm/LinearGenomeView/components/TracksContainer.js +1 -1
  49. package/esm/LinearGenomeView/model.d.ts +18 -2
  50. package/esm/LinearGenomeView/model.js +19 -0
  51. package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.d.ts +0 -7
  52. package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +9 -10
  53. package/esm/LinearGenomeView/svgcomponents/util.d.ts +8 -0
  54. package/esm/LinearGenomeView/svgcomponents/util.js +5 -0
  55. package/esm/index.d.ts +776 -7
  56. package/esm/index.js +4 -3
  57. package/esm/searchUtils.d.ts +26 -0
  58. package/esm/searchUtils.js +79 -0
  59. package/package.json +4 -6
@@ -1,35 +1,15 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
4
  };
25
5
  Object.defineProperty(exports, "__esModule", { value: true });
26
- const react_1 = __importStar(require("react"));
6
+ const react_1 = __importDefault(require("react"));
27
7
  const configuration_1 = require("@jbrowse/core/configuration");
28
8
  const ui_1 = require("@jbrowse/core/ui");
29
9
  const mobx_react_1 = require("mobx-react");
30
10
  const material_1 = require("@mui/material");
31
11
  const mui_1 = require("tss-react/mui");
32
- const react_popper_1 = require("react-popper");
12
+ const react_2 = require("@floating-ui/react");
33
13
  function round(value) {
34
14
  return Math.round(value * 1e5) / 1e5;
35
15
  }
@@ -52,39 +32,27 @@ const useStyles = (0, mui_1.makeStyles)()(theme => ({
52
32
  const TooltipContents = react_1.default.forwardRef(function TooltipContents2({ message }, ref) {
53
33
  return (react_1.default.createElement("div", { ref: ref }, react_1.default.isValidElement(message) ? (message) : message ? (react_1.default.createElement(ui_1.SanitizedHTML, { html: String(message) })) : null));
54
34
  });
55
- const Tooltip = (0, mobx_react_1.observer)(({ model, clientMouseCoord, }) => {
35
+ const Tooltip = (0, mobx_react_1.observer)(function ({ model, clientMouseCoord, }) {
56
36
  var _a, _b;
57
37
  const { theme, classes } = useStyles();
58
38
  const { featureUnderMouse } = model;
59
- const [width, setWidth] = (0, react_1.useState)(0);
60
- const [popperElt, setPopperElt] = (0, react_1.useState)(null);
61
- // must be memoized a la https://github.com/popperjs/react-popper/issues/391
62
- const virtElement = (0, react_1.useMemo)(() => ({
63
- getBoundingClientRect: () => {
64
- const x = clientMouseCoord[0] + width / 2 + 20;
65
- const y = clientMouseCoord[1];
66
- return {
67
- top: y,
68
- left: x,
69
- bottom: y,
70
- right: x,
71
- width: 0,
72
- height: 0,
73
- x,
74
- y,
75
- toJSON() { },
76
- };
77
- },
78
- }), [clientMouseCoord, width]);
79
- const { styles, attributes } = (0, react_popper_1.usePopper)(virtElement, popperElt);
39
+ const x = clientMouseCoord[0] + 15;
40
+ const y = clientMouseCoord[1];
41
+ const { refs, floatingStyles, context } = (0, react_2.useFloating)({
42
+ placement: 'right',
43
+ });
44
+ const clientPoint = (0, react_2.useClientPoint)(context, { x, y });
45
+ const { getFloatingProps } = (0, react_2.useInteractions)([clientPoint]);
80
46
  const contents = featureUnderMouse
81
47
  ? (0, configuration_1.getConf)(model, 'mouseover', { feature: featureUnderMouse })
82
48
  : undefined;
83
49
  const popperTheme = (_a = theme === null || theme === void 0 ? void 0 : theme.components) === null || _a === void 0 ? void 0 : _a.MuiPopper;
84
50
  return featureUnderMouse && contents ? (react_1.default.createElement(material_1.Portal, { container: (_b = popperTheme === null || popperTheme === void 0 ? void 0 : popperTheme.defaultProps) === null || _b === void 0 ? void 0 : _b.container },
85
- react_1.default.createElement("div", { ref: setPopperElt, className: classes.tooltip,
86
- // zIndex needed to go over widget drawer
87
- style: { ...styles.popper, zIndex: 100000 }, ...attributes.popper },
88
- react_1.default.createElement(TooltipContents, { ref: elt => setWidth((elt === null || elt === void 0 ? void 0 : elt.getBoundingClientRect().width) || 0), message: contents })))) : null;
51
+ react_1.default.createElement("div", { className: classes.tooltip, ref: refs.setFloating, style: {
52
+ ...floatingStyles,
53
+ zIndex: 100000,
54
+ pointerEvents: 'none',
55
+ }, ...getFloatingProps() },
56
+ react_1.default.createElement(TooltipContents, { message: contents })))) : null;
89
57
  });
90
58
  exports.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;
@@ -44,7 +44,14 @@ const FeatureDensityMixin_1 = __importDefault(require("./FeatureDensityMixin"));
44
44
  /**
45
45
  * #stateModel BaseLinearDisplay
46
46
  * #category display
47
- * extends `BaseDisplay`
47
+ *
48
+ * BaseLinearDisplay is used as the basis for many linear genome view tracks.
49
+ * It is block based, and can use 'static blocks' or 'dynamic blocks'
50
+ *
51
+ * extends
52
+ * - [BaseDisplay](../basedisplay)
53
+ * - [TrackHeightMixin](../trackheightmixin)
54
+ * - [FeatureDensityMixin](../featuredensitymixin)
48
55
  */
49
56
  function stateModelFactory() {
50
57
  return mobx_state_tree_1.types
@@ -58,6 +58,11 @@ declare const configSchema: (pluginManager: PluginManager) => import("@jbrowse/c
58
58
  defaultValue: number;
59
59
  description: string;
60
60
  };
61
+ maxDepth: {
62
+ type: string;
63
+ defaultValue: number;
64
+ description: string;
65
+ };
61
66
  }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
62
67
  formatAbout: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
63
68
  config: {
@@ -58,6 +58,11 @@ declare const configSchema: (pluginManager: PluginManager) => import("@jbrowse/c
58
58
  defaultValue: number;
59
59
  description: string;
60
60
  };
61
+ maxDepth: {
62
+ type: string;
63
+ defaultValue: number;
64
+ description: string;
65
+ };
61
66
  }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
62
67
  formatAbout: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
63
68
  config: {
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const util_1 = require("@jbrowse/core/util");
4
+ const searchUtils_1 = require("..//searchUtils");
4
5
  exports.default = (pluginManager) => {
5
6
  pluginManager.addToExtensionPoint('LaunchView-LinearGenomeView',
6
7
  // @ts-expect-error
@@ -16,21 +17,9 @@ exports.default = (pluginManager) => {
16
17
  if (!asm) {
17
18
  throw new Error(`Assembly "${assembly}" not found when launching linear genome view`);
18
19
  }
19
- await view.navToLocString(loc, assembly);
20
+ await (0, searchUtils_1.handleSelectedRegion)({ input: loc, model: view, assembly: asm });
20
21
  const idsNotFound = [];
21
- tracks.forEach(track => {
22
- try {
23
- view.showTrack(track);
24
- }
25
- catch (e) {
26
- if (`${e}`.match('Could not resolve identifier')) {
27
- idsNotFound.push(track);
28
- }
29
- else {
30
- throw e;
31
- }
32
- }
33
- });
22
+ tracks.forEach(track => tryTrack(view, track, idsNotFound));
34
23
  if (idsNotFound.length) {
35
24
  throw new Error(`Could not resolve identifiers: ${idsNotFound.join(',')}`);
36
25
  }
@@ -41,3 +30,16 @@ exports.default = (pluginManager) => {
41
30
  }
42
31
  });
43
32
  };
33
+ function tryTrack(model, trackId, idsNotFound) {
34
+ try {
35
+ model.showTrack(trackId);
36
+ }
37
+ catch (e) {
38
+ if (`${e}`.match('Could not resolve identifier')) {
39
+ idsNotFound.push(trackId);
40
+ }
41
+ else {
42
+ throw e;
43
+ }
44
+ }
45
+ }
@@ -3,7 +3,8 @@ import { AnyConfigurationSchemaType } from '@jbrowse/core/configuration';
3
3
  /**
4
4
  * #stateModel LinearBareDisplay
5
5
  * #category display
6
- * extends `BaseLinearDisplay`
6
+ * extends
7
+ * - [BaseLinearDisplay](../baselineardisplay)
7
8
  */
8
9
  export declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): import("mobx-state-tree").IModelType<{
9
10
  id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
@@ -76,9 +77,7 @@ export declare function stateModelFactory(configSchema: AnyConfigurationSchemaTy
76
77
  type: string;
77
78
  defaultValue: number;
78
79
  description: string;
79
- }; /**
80
- * #getter
81
- */
80
+ };
82
81
  mouseover: {
83
82
  type: string;
84
83
  description: string;
@@ -98,9 +97,7 @@ export declare function stateModelFactory(configSchema: AnyConfigurationSchemaTy
98
97
  }, {
99
98
  rendererTypeName: string;
100
99
  error: unknown;
101
- message: string | undefined; /**
102
- * #property
103
- */
100
+ message: string | undefined;
104
101
  } & {
105
102
  readonly RenderingComponent: import("react").FC<{
106
103
  model: {
@@ -160,7 +157,9 @@ export declare function stateModelFactory(configSchema: AnyConfigurationSchemaTy
160
157
  } & {
161
158
  readonly height: number;
162
159
  } & {
163
- setScrollTop(scrollTop: number): void;
160
+ setScrollTop(scrollTop: number): void; /**
161
+ * #method
162
+ */
164
163
  setHeight(displayHeight: number): number;
165
164
  resizeHeight(distance: number): number;
166
165
  } & {
@@ -303,9 +302,7 @@ export declare function stateModelFactory(configSchema: AnyConfigurationSchemaTy
303
302
  type: string;
304
303
  defaultValue: number;
305
304
  description: string;
306
- }; /**
307
- * #getter
308
- */
305
+ };
309
306
  mouseover: {
310
307
  type: string;
311
308
  description: string;
@@ -8,7 +8,8 @@ const BaseLinearDisplay_1 = require("../BaseLinearDisplay");
8
8
  /**
9
9
  * #stateModel LinearBareDisplay
10
10
  * #category display
11
- * extends `BaseLinearDisplay`
11
+ * extends
12
+ * - [BaseLinearDisplay](../baselineardisplay)
12
13
  */
13
14
  function stateModelFactory(configSchema) {
14
15
  return mobx_state_tree_1.types
@@ -7,6 +7,9 @@ import { Instance } from 'mobx-state-tree';
7
7
  * #category display
8
8
  * used by `FeatureTrack`, has simple settings like "show/hide feature labels",
9
9
  * etc.
10
+ *
11
+ * extends
12
+ * - [BaseLinearDisplay](../baselineardisplay)
10
13
  */
11
14
  declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): import("mobx-state-tree").IModelType<{
12
15
  id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
@@ -34,7 +37,9 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
34
37
  isLeftEndOfDisplayedRegion: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
35
38
  isRightEndOfDisplayedRegion: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
36
39
  }, {
37
- renderInProgress: AbortController | undefined;
40
+ renderInProgress: AbortController | undefined; /**
41
+ * #property
42
+ */
38
43
  filled: boolean;
39
44
  reactElement: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
40
45
  features: Map<string, import("@jbrowse/core/util").Feature> | undefined;
@@ -52,9 +57,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
52
57
  afterAttach(): void;
53
58
  setStatus(message: string): void;
54
59
  setLoading(abortController: AbortController): void;
55
- setMessage(messageText: string): void; /**
56
- * #method
57
- */
60
+ setMessage(messageText: string): void;
58
61
  setRendered(props: {
59
62
  reactElement: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
60
63
  features: Map<string, import("@jbrowse/core/util").Feature>;
@@ -81,15 +84,11 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
81
84
  type: string;
82
85
  defaultValue: number;
83
86
  description: string;
84
- }; /**
85
- * #property
86
- */
87
+ };
87
88
  mouseover: {
88
89
  type: string;
89
90
  description: string;
90
- defaultValue: string; /**
91
- * #property
92
- */
91
+ defaultValue: string;
93
92
  contextVariable: string[];
94
93
  };
95
94
  }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "displayId">>;
@@ -127,9 +126,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
127
126
  model: {
128
127
  id: string;
129
128
  type: string;
130
- rpcDriverName: string | undefined; /**
131
- * #property
132
- */
129
+ rpcDriverName: string | undefined;
133
130
  } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
134
131
  rendererTypeName: string;
135
132
  error: unknown;
@@ -160,13 +157,14 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
160
157
  type: import("mobx-state-tree").ISimpleType<string>;
161
158
  rpcDriverName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
162
159
  }, {
163
- rendererTypeName: string; /**
164
- * #action
165
- */
160
+ rendererTypeName: string;
166
161
  error: unknown;
167
162
  message: string | undefined;
168
163
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
169
164
  }> | null;
165
+ /**
166
+ * #action
167
+ */
170
168
  readonly adapterConfig: any;
171
169
  readonly parentTrack: any;
172
170
  renderProps(): any;
@@ -195,10 +193,11 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
195
193
  } & {
196
194
  readonly currentBytesRequested: number;
197
195
  readonly currentFeatureScreenDensity: number;
198
- readonly maxFeatureScreenDensity: any;
199
- readonly featureDensityStatsReady: boolean; /**
196
+ /**
200
197
  * #getter
201
198
  */
199
+ readonly maxFeatureScreenDensity: any;
200
+ readonly featureDensityStatsReady: boolean;
202
201
  readonly maxAllowableBytes: number;
203
202
  } & {
204
203
  afterAttach(): void;
@@ -219,9 +218,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
219
218
  featureIdUnderMouse: string | undefined;
220
219
  contextMenuFeature: import("@jbrowse/core/util").Feature | undefined;
221
220
  } & {
222
- readonly blockType: "dynamicBlocks" | "staticBlocks"; /**
223
- * #getter
224
- */
221
+ readonly blockType: "dynamicBlocks" | "staticBlocks";
225
222
  readonly blockDefinitions: import("@jbrowse/core/util/blockTypes").BlockSet;
226
223
  } & {
227
224
  readonly renderDelay: number;
@@ -278,7 +275,9 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
278
275
  readonly rendererConfig: {
279
276
  [x: string]: any;
280
277
  } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
281
- setSubschema(slotName: string, data: unknown): any;
278
+ setSubschema(slotName: string, data: unknown): any; /**
279
+ * #property
280
+ */
282
281
  } & import("mobx-state-tree").IStateTreeNode<AnyConfigurationSchemaType>;
283
282
  } & {
284
283
  /**
@@ -305,7 +304,9 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
305
304
  config: {
306
305
  [x: string]: any;
307
306
  } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
308
- setSubschema(slotName: string, data: unknown): any;
307
+ setSubschema(slotName: string, data: unknown): any; /**
308
+ * #property
309
+ */
309
310
  } & import("mobx-state-tree").IStateTreeNode<AnyConfigurationSchemaType>;
310
311
  };
311
312
  /**
@@ -340,7 +341,9 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
340
341
  isLeftEndOfDisplayedRegion: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
341
342
  isRightEndOfDisplayedRegion: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
342
343
  }, {
343
- renderInProgress: AbortController | undefined;
344
+ renderInProgress: AbortController | undefined; /**
345
+ * #property
346
+ */
344
347
  filled: boolean;
345
348
  reactElement: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
346
349
  features: Map<string, import("@jbrowse/core/util").Feature> | undefined;
@@ -358,9 +361,7 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
358
361
  afterAttach(): void;
359
362
  setStatus(message: string): void;
360
363
  setLoading(abortController: AbortController): void;
361
- setMessage(messageText: string): void; /**
362
- * #method
363
- */
364
+ setMessage(messageText: string): void;
364
365
  setRendered(props: {
365
366
  reactElement: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
366
367
  features: Map<string, import("@jbrowse/core/util").Feature>;
@@ -387,15 +388,11 @@ declare function stateModelFactory(configSchema: AnyConfigurationSchemaType): im
387
388
  type: string;
388
389
  defaultValue: number;
389
390
  description: string;
390
- }; /**
391
- * #property
392
- */
391
+ };
393
392
  mouseover: {
394
393
  type: string;
395
394
  description: string;
396
- defaultValue: string; /**
397
- * #property
398
- */
395
+ defaultValue: string;
399
396
  contextVariable: string[];
400
397
  };
401
398
  }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "displayId">>;
@@ -40,6 +40,9 @@ const SetMaxHeightDlg = (0, react_1.lazy)(() => Promise.resolve().then(() => __i
40
40
  * #category display
41
41
  * used by `FeatureTrack`, has simple settings like "show/hide feature labels",
42
42
  * etc.
43
+ *
44
+ * extends
45
+ * - [BaseLinearDisplay](../baselineardisplay)
43
46
  */
44
47
  function stateModelFactory(configSchema) {
45
48
  return mobx_state_tree_1.types
@@ -30,7 +30,7 @@ const useStyles = (0, mui_1.makeStyles)()(theme => ({
30
30
  centerLineContainer: {
31
31
  background: 'transparent',
32
32
  height: '100%',
33
- zIndex: 5,
33
+ zIndex: 5, // above the track but under menu
34
34
  position: 'absolute',
35
35
  border: `1px ${theme.palette.action.active} dashed`,
36
36
  borderTop: 'none',
@@ -53,11 +53,17 @@ declare const Cytobands: ({ overview, block, assembly, }: {
53
53
  load(): Promise<void>;
54
54
  loadPre(): Promise<void>;
55
55
  } & {
56
- getAdapterMapEntry(adapterConf: unknown, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
57
- getRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
56
+ getAdapterMapEntry(adapterConf: {
57
+ [x: string]: unknown;
58
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
59
+ getRefNameMapForAdapter(adapterConf: {
60
+ [x: string]: unknown;
61
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
58
62
  [x: string]: string | undefined;
59
63
  }>;
60
- getReverseRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
64
+ getReverseRefNameMapForAdapter(adapterConf: {
65
+ [x: string]: unknown;
66
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
61
67
  [x: string]: string | undefined;
62
68
  }>;
63
69
  } & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
@@ -109,11 +115,17 @@ declare const Cytobands: ({ overview, block, assembly, }: {
109
115
  load(): Promise<void>;
110
116
  loadPre(): Promise<void>;
111
117
  } & {
112
- getAdapterMapEntry(adapterConf: unknown, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
113
- getRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
118
+ getAdapterMapEntry(adapterConf: {
119
+ [x: string]: unknown;
120
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameMap>;
121
+ getRefNameMapForAdapter(adapterConf: {
122
+ [x: string]: unknown;
123
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
114
124
  [x: string]: string | undefined;
115
125
  }>;
116
- getReverseRefNameMapForAdapter(adapterConf: unknown, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
126
+ getReverseRefNameMapForAdapter(adapterConf: {
127
+ [x: string]: unknown;
128
+ }, opts: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<{
117
129
  [x: string]: string | undefined;
118
130
  }>;
119
131
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>) | undefined;
@@ -71,10 +71,16 @@ const Cytobands = (0, mobx_react_1.observer)(function ({ overview, block, assemb
71
71
  const c = colorMap[type];
72
72
  if (type === 'acen' && !centromereSeen) {
73
73
  centromereSeen = true; // the next acen entry is drawn with different right triangle
74
- return react_1.default.createElement("polygon", { key: k, points: leftTriangle(s, 0, w, h), fill: c });
74
+ const tri = reversed
75
+ ? rightTriangle(s - w, 0, w, h)
76
+ : leftTriangle(s, 0, w, h);
77
+ return react_1.default.createElement("polygon", { key: k, points: tri, fill: c });
75
78
  }
76
79
  else if (type === 'acen' && centromereSeen) {
77
- return react_1.default.createElement("polygon", { key: k, points: rightTriangle(s, 0, w, h), fill: c });
80
+ const tri = reversed
81
+ ? leftTriangle(s - w, 0, w, h)
82
+ : rightTriangle(s, 0, w, h);
83
+ return react_1.default.createElement("polygon", { key: k, points: tri, fill: c });
78
84
  }
79
85
  else if (lcap === index) {
80
86
  return react_1.default.createElement("path", { key: k, d: leftRoundedRect(l, 0, w, h, 8), fill: c });