@jbrowse/core 2.6.2 → 2.7.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 (104) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +0 -9
  2. package/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +2 -3
  3. package/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +1 -3
  4. package/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +0 -9
  5. package/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +2 -3
  6. package/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.d.ts +0 -9
  7. package/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +11 -6
  8. package/BaseFeatureWidget/BaseFeatureDetail/FieldName.d.ts +0 -9
  9. package/BaseFeatureWidget/BaseFeatureDetail/FieldName.js +2 -3
  10. package/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +0 -9
  11. package/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +2 -3
  12. package/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +0 -9
  13. package/BaseFeatureWidget/BaseFeatureDetail/UriField.js +2 -3
  14. package/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +2 -11
  15. package/BaseFeatureWidget/BaseFeatureDetail/index.js +5 -4
  16. package/BaseFeatureWidget/SequenceFeatureDetails/ProteinSequence.d.ts +1 -3
  17. package/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +1 -1
  18. package/BaseFeatureWidget/util.js +0 -4
  19. package/PluginManager.d.ts +9 -17
  20. package/ReExports/modules.d.ts +5 -5
  21. package/ReExports/modules.js +24 -18
  22. package/TextSearch/TextSearchManager.d.ts +1 -1
  23. package/assemblyManager/assembly.d.ts +2 -0
  24. package/assemblyManager/assembly.js +9 -4
  25. package/assemblyManager/assemblyManager.d.ts +123 -111
  26. package/assemblyManager/assemblyManager.js +1 -1
  27. package/configuration/configurationSchema.js +2 -2
  28. package/configuration/configurationSlot.js +3 -6
  29. package/data_adapters/BaseAdapter/index.d.ts +1 -3
  30. package/data_adapters/dataAdapterCache.js +2 -2
  31. package/package.json +5 -6
  32. package/pluggableElementTypes/AdapterType.d.ts +2 -2
  33. package/pluggableElementTypes/RpcMethodType.js +2 -3
  34. package/pluggableElementTypes/models/BaseTrackModel.d.ts +5 -5
  35. package/pluggableElementTypes/models/BaseTrackModel.js +1 -16
  36. package/pluggableElementTypes/models/InternetAccountModel.d.ts +2 -2
  37. package/pluggableElementTypes/models/InternetAccountModel.js +2 -2
  38. package/pluggableElementTypes/renderers/BoxRendererType.d.ts +1 -3
  39. package/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +3 -0
  40. package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.d.ts +7 -3
  41. package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.js +45 -2
  42. package/pluggableElementTypes/renderers/ServerSideRenderedContent.d.ts +2 -2
  43. package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +49 -12
  44. package/pluggableElementTypes/renderers/util/serializableFilterChain.js +2 -2
  45. package/rpc/RpcManager.d.ts +2 -2
  46. package/rpc/WebWorkerRpcDriver.js +6 -3
  47. package/rpc/methods/CoreGetFeatureDensityStats.js +0 -1
  48. package/rpc/methods/CoreGetFeatureDetails.js +0 -1
  49. package/rpc/methods/CoreGetFeatures.js +0 -1
  50. package/rpc/methods/CoreRender.js +0 -1
  51. package/rpc/remoteAbortSignals.d.ts +2 -2
  52. package/tsconfig.build.tsbuildinfo +1 -1
  53. package/ui/ColorPicker.js +3 -6
  54. package/ui/Dialog.d.ts +2 -2
  55. package/ui/Dialog.js +2 -1
  56. package/ui/DropDownMenu.d.ts +3 -4
  57. package/ui/DropDownMenu.js +8 -12
  58. package/ui/EditableTypography.js +7 -5
  59. package/ui/FactoryResetDialog.d.ts +3 -4
  60. package/ui/FactoryResetDialog.js +3 -2
  61. package/ui/FileSelector/FileSelector.d.ts +2 -2
  62. package/ui/FileSelector/FileSelector.js +2 -1
  63. package/ui/FileSelector/LocalFileChooser.d.ts +2 -2
  64. package/ui/FileSelector/LocalFileChooser.js +4 -3
  65. package/ui/FileSelector/UrlChooser.d.ts +5 -5
  66. package/ui/FileSelector/UrlChooser.js +2 -2
  67. package/ui/Menu.js +1 -1
  68. package/ui/ResizeBar.d.ts +0 -4
  69. package/ui/ResizeBar.js +12 -31
  70. package/ui/ResizeHandle.d.ts +3 -2
  71. package/ui/ResizeHandle.js +10 -7
  72. package/ui/ReturnToImportFormDialog.d.ts +4 -5
  73. package/ui/ReturnToImportFormDialog.js +3 -3
  74. package/ui/SanitizedHTML.d.ts +0 -1
  75. package/ui/SanitizedHTML.js +0 -2
  76. package/ui/Snackbar.d.ts +2 -2
  77. package/ui/Snackbar.js +2 -1
  78. package/ui/Tooltip.d.ts +4 -7
  79. package/ui/Tooltip.js +3 -3
  80. package/ui/theme.d.ts +1 -3
  81. package/ui/theme.js +2 -2
  82. package/ui/useResizeBar.d.ts +5 -0
  83. package/ui/useResizeBar.js +22 -0
  84. package/util/Base1DUtils.js +0 -1
  85. package/util/blockTypes.d.ts +1 -9
  86. package/util/blockTypes.js +5 -21
  87. package/util/calculateDynamicBlocks.js +3 -2
  88. package/util/calculateStaticBlocks.js +3 -4
  89. package/util/colord.d.ts +1 -0
  90. package/util/colord.js +13 -0
  91. package/util/dedupe.js +1 -2
  92. package/util/index.d.ts +13 -16
  93. package/util/index.js +17 -10
  94. package/util/io/RemoteFileWithRangeCache.js +3 -3
  95. package/util/layouts/GranularRectLayout.js +1 -2
  96. package/util/map-obj.d.ts +1 -1
  97. package/util/nanoid.d.ts +5 -0
  98. package/util/nanoid.js +73 -0
  99. package/util/offscreenCanvasPonyfill.js +1 -2
  100. package/util/offscreenCanvasUtils.js +1 -0
  101. package/util/tracks.d.ts +2 -6
  102. package/util/types/index.d.ts +38 -10
  103. package/util/types/index.js +19 -1
  104. package/util/types/mst.js +2 -2
@@ -25,11 +25,50 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  const react_1 = __importStar(require("react"));
27
27
  const styles_1 = require("@mui/material/styles");
28
- const react_dom_1 = require("react-dom");
29
28
  // locals
30
29
  const ui_1 = require("../../ui");
30
+ const mobx_react_1 = require("mobx-react");
31
+ const mobx_state_tree_1 = require("mobx-state-tree");
32
+ // eslint-disable-next-line react/no-deprecated
33
+ const react_dom_1 = require("react-dom");
31
34
  const util_1 = require("../../util");
32
- function default_1({ theme, html, RenderingComponent, ...rest }) {
35
+ const NewHydrate = (0, mobx_react_1.observer)(function ServerSideRenderedContent({ theme, html, RenderingComponent, ...rest }) {
36
+ const ref = (0, react_1.useRef)(null);
37
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
+ const rootRef = (0, react_1.useRef)();
39
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
+ const { hydrateFn } = (0, mobx_state_tree_1.getRoot)(rest.displayModel);
41
+ (0, react_1.useEffect)(() => {
42
+ // requestIdleCallback here helps to avoid hydration mismatch
43
+ // because it provides time for dangerouslySetInnerHTML to set the innerHTML
44
+ // contents of the node, otherwise ref.current.innerHTML can be empty
45
+ const renderTimeout = (0, util_1.rIC)(() => {
46
+ var _a;
47
+ if (!ref.current) {
48
+ return;
49
+ }
50
+ const jbrowseTheme = (0, ui_1.createJBrowseTheme)(theme);
51
+ // if there is a hydration mismatch, investigate value of
52
+ // - value of ref.current.innerHTML
53
+ // - value of `html` variable
54
+ // - renderToString of the below React element
55
+ rootRef.current =
56
+ (_a = rootRef.current) !== null && _a !== void 0 ? _a : hydrateFn(ref.current, react_1.default.createElement(styles_1.ThemeProvider, { theme: jbrowseTheme },
57
+ react_1.default.createElement(RenderingComponent, { ...rest })));
58
+ });
59
+ return () => {
60
+ clearTimeout(renderTimeout);
61
+ const root = rootRef.current;
62
+ rootRef.current = undefined;
63
+ setTimeout(() => {
64
+ root === null || root === void 0 ? void 0 : root.unmount();
65
+ });
66
+ };
67
+ }, [html, theme, rest, hydrateFn, RenderingComponent]);
68
+ // eslint-disable-next-line react/no-danger
69
+ return react_1.default.createElement("div", { ref: ref, dangerouslySetInnerHTML: { __html: html } });
70
+ });
71
+ const OldHydrate = (0, mobx_react_1.observer)(function ({ theme, html, RenderingComponent, ...rest }) {
33
72
  const ref = (0, react_1.useRef)(null);
34
73
  const jbrowseTheme = (0, ui_1.createJBrowseTheme)(theme);
35
74
  (0, react_1.useEffect)(() => {
@@ -40,17 +79,10 @@ function default_1({ theme, html, RenderingComponent, ...rest }) {
40
79
  (0, react_dom_1.unmountComponentAtNode)(domNode);
41
80
  }
42
81
  domNode.innerHTML = html;
43
- // defer main-thread rendering and hydration for when
44
- // we have some free time. helps keep the framerate up.
45
- //
46
- // note: the timeout param to rIC below helps when you are doing
47
- // a long continuous scroll, it forces it to evaluate because
48
- // otherwise the continuous scroll would never give it time to do
49
- // so
50
82
  (0, util_1.rIC)(() => {
51
83
  (0, react_dom_1.hydrate)(react_1.default.createElement(styles_1.ThemeProvider, { theme: jbrowseTheme },
52
84
  react_1.default.createElement(RenderingComponent, { ...rest })), domNode);
53
- }, { timeout: 300 });
85
+ });
54
86
  }
55
87
  }
56
88
  doHydrate();
@@ -61,5 +93,10 @@ function default_1({ theme, html, RenderingComponent, ...rest }) {
61
93
  };
62
94
  }, [html, jbrowseTheme, rest, RenderingComponent]);
63
95
  return react_1.default.createElement("div", { ref: ref });
64
- }
65
- exports.default = default_1;
96
+ });
97
+ const ServerSideRenderedContent = (0, mobx_react_1.observer)(function (props) {
98
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
99
+ const root = (0, mobx_state_tree_1.getRoot)(props.displayModel);
100
+ return root.hydrateFn ? react_1.default.createElement(NewHydrate, { ...props }) : react_1.default.createElement(OldHydrate, { ...props });
101
+ });
102
+ exports.default = ServerSideRenderedContent;
@@ -13,10 +13,10 @@ class SerializableFilterChain {
13
13
  }
14
14
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
15
  passes(...args) {
16
- for (let i = 0; i < this.filterChain.length; i += 1) {
16
+ for (const entry of this.filterChain) {
17
17
  if (
18
18
  // @ts-expect-error
19
- !this.filterChain[i].expr.evalSync({ feature: args[0] })) {
19
+ !entry.expr.evalSync({ feature: args[0] })) {
20
20
  return false;
21
21
  }
22
22
  }
@@ -3,10 +3,10 @@ import { AnyConfigurationModel } from '../configuration';
3
3
  import WebWorkerRpcDriver from './WebWorkerRpcDriver';
4
4
  import MainThreadRpcDriver from './MainThreadRpcDriver';
5
5
  type DriverClass = WebWorkerRpcDriver | MainThreadRpcDriver;
6
- type BackendConfigurations = {
6
+ interface BackendConfigurations {
7
7
  WebWorkerRpcDriver?: Omit<ConstructorParameters<typeof WebWorkerRpcDriver>[0], 'config'>;
8
8
  MainThreadRpcDriver?: Omit<ConstructorParameters<typeof MainThreadRpcDriver>[0], 'config'>;
9
- };
9
+ }
10
10
  declare const DriverClasses: {
11
11
  WebWorkerRpcDriver: typeof WebWorkerRpcDriver;
12
12
  MainThreadRpcDriver: typeof MainThreadRpcDriver;
@@ -4,17 +4,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const librpc_web_mod_1 = __importDefault(require("librpc-web-mod"));
7
- const shortid_1 = __importDefault(require("shortid"));
7
+ const serialize_error_1 = require("serialize-error");
8
8
  // locals
9
+ const nanoid_1 = require("../util/nanoid");
9
10
  const BaseRpcDriver_1 = __importDefault(require("./BaseRpcDriver"));
10
- const serialize_error_1 = require("serialize-error");
11
11
  class WebWorkerHandle extends librpc_web_mod_1.default.Client {
12
12
  destroy() {
13
13
  this.workers[0].terminate();
14
14
  }
15
15
  async call(funcName, args, opts) {
16
16
  const { statusCallback, rpcDriverClassName } = opts;
17
- const channel = `message-${shortid_1.default.generate()}`;
17
+ const channel = `message-${(0, nanoid_1.nanoid)()}`;
18
18
  const listener = (message) => {
19
19
  statusCallback === null || statusCallback === void 0 ? void 0 : statusCallback(message);
20
20
  };
@@ -36,6 +36,9 @@ class WebWorkerRpcDriver extends BaseRpcDriver_1.default {
36
36
  // one for each worker, because we want to do our own state-group-aware
37
37
  // load balancing rather than using librpc's builtin round-robin
38
38
  const instance = this.makeWorkerInstance();
39
+ // @ts-ignore this is used to avoid warning in jbrowse-web startup
40
+ // (because this file is referred to via src, declare.d.ts file is in
41
+ // e.g. products/jbrowse-web)
39
42
  const worker = new WebWorkerHandle({ workers: [instance] });
40
43
  const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
41
44
  if (isSafari) {
@@ -3,7 +3,6 @@ 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
- /* eslint-disable @typescript-eslint/no-non-null-assertion */
7
6
  const dataAdapterCache_1 = require("../../data_adapters/dataAdapterCache");
8
7
  const RpcMethodType_1 = __importDefault(require("../../pluggableElementTypes/RpcMethodType"));
9
8
  const BaseAdapter_1 = require("../../data_adapters/BaseAdapter");
@@ -3,7 +3,6 @@ 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
- /* eslint-disable @typescript-eslint/no-non-null-assertion */
7
6
  const RpcMethodType_1 = __importDefault(require("../../pluggableElementTypes/RpcMethodType"));
8
7
  const util_1 = require("../../util");
9
8
  const util_2 = require("./util");
@@ -3,7 +3,6 @@ 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
- /* eslint-disable @typescript-eslint/no-non-null-assertion */
7
6
  const operators_1 = require("rxjs/operators");
8
7
  const rxjs_1 = require("rxjs");
9
8
  // locals
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- /* eslint-disable @typescript-eslint/no-non-null-assertion */
3
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
4
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
4
  };
@@ -1,6 +1,6 @@
1
- export type RemoteAbortSignal = {
1
+ export interface RemoteAbortSignal {
2
2
  abortSignalId: number;
3
- };
3
+ }
4
4
  /**
5
5
  * assign an ID to the given abort signal and return a plain object
6
6
  * representation