@jbrowse/core 2.2.1 → 2.3.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 (96) hide show
  1. package/BaseFeatureWidget/SequenceFeatureDetails.js +1 -0
  2. package/BaseFeatureWidget/SequenceFeatureSettingsDialog.js +2 -17
  3. package/BaseFeatureWidget/SequenceHelpDialog.js +3 -19
  4. package/PluginManager.d.ts +4 -0
  5. package/PluginManager.js +12 -0
  6. package/README.md +6 -2
  7. package/data_adapters/BaseAdapter.d.ts +1 -1
  8. package/package.json +3 -3
  9. package/pluggableElementTypes/AdapterType.d.ts +4 -4
  10. package/pluggableElementTypes/AdapterType.js +0 -1
  11. package/pluggableElementTypes/AddTrackWorkflowType.d.ts +3 -3
  12. package/pluggableElementTypes/ConnectionType.d.ts +0 -1
  13. package/pluggableElementTypes/ConnectionType.js +0 -1
  14. package/pluggableElementTypes/DisplayType.d.ts +9 -0
  15. package/pluggableElementTypes/DisplayType.js +1 -0
  16. package/pluggableElementTypes/PluggableElementBase.d.ts +3 -0
  17. package/pluggableElementTypes/PluggableElementBase.js +4 -0
  18. package/pluggableElementTypes/TextSearchAdapterType.d.ts +1 -0
  19. package/pluggableElementTypes/TrackType.d.ts +2 -1
  20. package/pluggableElementTypes/ViewType.d.ts +4 -3
  21. package/pluggableElementTypes/WidgetType.d.ts +10 -9
  22. package/pluggableElementTypes/models/BaseDisplayModel.js +1 -0
  23. package/pluggableElementTypes/models/BaseTrackModel.d.ts +19 -8
  24. package/pluggableElementTypes/models/BaseTrackModel.js +32 -26
  25. package/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +0 -3
  26. package/pluggableElementTypes/renderers/BoxRendererType.js +1 -14
  27. package/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +9 -0
  28. package/pluggableElementTypes/renderers/CircularChordRendererType.js +23 -0
  29. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +4 -1
  30. package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +4 -4
  31. package/pluggableElementTypes/renderers/FeatureRendererType.js +11 -13
  32. package/pluggableElementTypes/renderers/RendererType.d.ts +1 -0
  33. package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.d.ts +8 -0
  34. package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.js +60 -0
  35. package/pluggableElementTypes/renderers/ServerSideRenderedContent.d.ts +2 -2
  36. package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +6 -6
  37. package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +5 -5
  38. package/pluggableElementTypes/renderers/ServerSideRendererType.js +14 -13
  39. package/rpc/BaseRpcDriver.d.ts +1 -1
  40. package/rpc/BaseRpcDriver.js +8 -18
  41. package/rpc/coreRpcMethods.d.ts +11 -99
  42. package/rpc/coreRpcMethods.js +17 -241
  43. package/rpc/methods/CoreEstimateRegionStats.d.ts +18 -0
  44. package/rpc/methods/CoreEstimateRegionStats.js +37 -0
  45. package/rpc/methods/CoreFreeResources.d.ts +12 -0
  46. package/rpc/methods/CoreFreeResources.js +35 -0
  47. package/rpc/methods/CoreGetFeatureDetails.d.ts +16 -0
  48. package/rpc/methods/CoreGetFeatureDetails.js +44 -0
  49. package/rpc/methods/CoreGetFeatures.d.ts +17 -0
  50. package/rpc/methods/CoreGetFeatures.js +44 -0
  51. package/rpc/methods/CoreGetFileInfo.d.ts +10 -0
  52. package/rpc/methods/CoreGetFileInfo.js +24 -0
  53. package/rpc/methods/CoreGetMetadata.d.ts +10 -0
  54. package/rpc/methods/CoreGetMetadata.js +24 -0
  55. package/rpc/methods/CoreGetRefNames.d.ts +10 -0
  56. package/rpc/methods/CoreGetRefNames.js +25 -0
  57. package/rpc/methods/CoreRender.d.ts +14 -0
  58. package/rpc/methods/CoreRender.js +57 -0
  59. package/rpc/methods/util.d.ts +14 -0
  60. package/rpc/methods/util.js +21 -0
  61. package/rpc/remoteAbortSignals.d.ts +3 -1
  62. package/rpc/remoteAbortSignals.js +3 -1
  63. package/tsconfig.build.tsbuildinfo +1 -1
  64. package/ui/AboutDialog.d.ts +1 -1
  65. package/ui/AboutDialog.js +8 -18
  66. package/ui/App.js +9 -77
  67. package/ui/AppLogo.d.ts +8 -0
  68. package/ui/AppLogo.js +22 -0
  69. package/ui/AppToolbar.d.ts +19 -0
  70. package/ui/AppToolbar.js +56 -0
  71. package/ui/AssemblySelector.d.ts +5 -3
  72. package/ui/AssemblySelector.js +4 -4
  73. package/ui/Dialog.d.ts +7 -0
  74. package/ui/Dialog.js +35 -0
  75. package/ui/FactoryResetDialog.js +8 -13
  76. package/ui/PrerenderedCanvas.d.ts +3 -20
  77. package/ui/PrerenderedCanvas.js +1 -19
  78. package/ui/ReturnToImportFormDialog.js +2 -17
  79. package/ui/Snackbar.js +7 -53
  80. package/ui/ViewLauncher.d.ts +18 -0
  81. package/ui/ViewLauncher.js +50 -0
  82. package/ui/index.d.ts +9 -8
  83. package/ui/index.js +19 -17
  84. package/util/Base1DUtils.js +1 -1
  85. package/util/analytics.js +3 -0
  86. package/util/dedupe.d.ts +3 -0
  87. package/util/dedupe.js +18 -0
  88. package/util/formatFastaStrings.d.ts +1 -1
  89. package/util/formatFastaStrings.js +1 -1
  90. package/util/index.d.ts +1 -0
  91. package/util/index.js +1 -0
  92. package/util/offscreenCanvasUtils.js +1 -1
  93. package/util/stats.d.ts +7 -3
  94. package/util/stats.js +33 -24
  95. package/util/tracks.d.ts +1 -1
  96. package/util/tracks.js +1 -1
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const RpcMethodType_1 = __importDefault(require("../../pluggableElementTypes/RpcMethodType"));
8
+ const util_1 = require("./util");
9
+ const util_2 = require("../../util");
10
+ /**
11
+ * fetches features from an adapter and call a renderer with them
12
+ */
13
+ class CoreRender extends RpcMethodType_1.default {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.name = 'CoreRender';
17
+ }
18
+ async serializeArguments(args, rpcDriver) {
19
+ const { rootModel } = this.pluginManager;
20
+ const assemblyManager = rootModel.session.assemblyManager;
21
+ const renamedArgs = await (0, util_2.renameRegionsIfNeeded)(assemblyManager, args);
22
+ const superArgs = (await super.serializeArguments(renamedArgs, rpcDriver));
23
+ if (rpcDriver === 'MainThreadRpcDriver') {
24
+ return superArgs;
25
+ }
26
+ const { rendererType } = args;
27
+ const RendererType = (0, util_1.validateRendererType)(rendererType, this.pluginManager.getRendererType(rendererType));
28
+ return RendererType.serializeArgsInClient(superArgs);
29
+ }
30
+ async execute(args, rpcDriver) {
31
+ let deserializedArgs = args;
32
+ if (rpcDriver !== 'MainThreadRpcDriver') {
33
+ deserializedArgs = await this.deserializeArguments(args, rpcDriver);
34
+ }
35
+ const { sessionId, rendererType, signal } = deserializedArgs;
36
+ if (!sessionId) {
37
+ throw new Error('must pass a unique session id');
38
+ }
39
+ (0, util_2.checkAbortSignal)(signal);
40
+ const RendererType = (0, util_1.validateRendererType)(rendererType, this.pluginManager.getRendererType(rendererType));
41
+ const result = rpcDriver === 'MainThreadRpcDriver'
42
+ ? await RendererType.render(deserializedArgs)
43
+ : await RendererType.renderInWorker(deserializedArgs);
44
+ (0, util_2.checkAbortSignal)(signal);
45
+ return result;
46
+ }
47
+ async deserializeReturn(serializedReturn, args, rpcDriver) {
48
+ const des = await super.deserializeReturn(serializedReturn, args, rpcDriver);
49
+ if (rpcDriver === 'MainThreadRpcDriver') {
50
+ return des;
51
+ }
52
+ const { rendererType } = args;
53
+ const RendererType = (0, util_1.validateRendererType)(rendererType, this.pluginManager.getRendererType(rendererType));
54
+ return RendererType.deserializeResultsInClient(des, args);
55
+ }
56
+ }
57
+ exports.default = CoreRender;
@@ -0,0 +1,14 @@
1
+ import ServerSideRendererType, { RenderArgs as ServerSideRenderArgs, RenderArgsSerialized as ServerSideRenderArgsSerialized, RenderResults, ResultsSerialized } from '../../pluggableElementTypes/renderers/ServerSideRendererType';
2
+ import { Region } from '../../util';
3
+ export interface RenderArgs extends ServerSideRenderArgs {
4
+ adapterConfig: {};
5
+ rendererType: string;
6
+ }
7
+ export interface RenderArgsSerialized extends ServerSideRenderArgsSerialized {
8
+ assemblyName: string;
9
+ regions: Region[];
10
+ adapterConfig: {};
11
+ rendererType: string;
12
+ }
13
+ export type { RenderResults, ResultsSerialized };
14
+ export declare function validateRendererType<T>(rendererType: string, RendererType: T): T & ServerSideRendererType;
@@ -0,0 +1,21 @@
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
+ exports.validateRendererType = void 0;
7
+ const ServerSideRendererType_1 = __importDefault(require("../../pluggableElementTypes/renderers/ServerSideRendererType"));
8
+ function validateRendererType(rendererType, RendererType) {
9
+ if (!RendererType) {
10
+ throw new Error(`renderer "${rendererType}" not found`);
11
+ }
12
+ // @ts-ignore
13
+ if (!RendererType.ReactComponent) {
14
+ throw new Error(`renderer ${rendererType} has no ReactComponent, it may not be completely implemented yet`);
15
+ }
16
+ if (!(RendererType instanceof ServerSideRendererType_1.default)) {
17
+ throw new Error('CoreRender requires a renderer that is a subclass of ServerSideRendererType');
18
+ }
19
+ return RendererType;
20
+ }
21
+ exports.validateRendererType = validateRendererType;
@@ -2,7 +2,9 @@ export type RemoteAbortSignal = {
2
2
  abortSignalId: number;
3
3
  };
4
4
  /**
5
- * assign an ID to the given abort signal and return a plain object representation
5
+ * assign an ID to the given abort signal and return a plain object
6
+ * representation
7
+ *
6
8
  * @param signal - the signal to serialize
7
9
  * @param callfunc - function used to call
8
10
  * a remote method, will be called like callfunc('signalAbort', signalId)
@@ -5,7 +5,9 @@ exports.remoteAbortRpcHandler = exports.remoteAbort = exports.deserializeAbortSi
5
5
  let abortSignalCounter = 0;
6
6
  const abortSignalIds = new WeakMap(); // map of abortsignal => numerical ID
7
7
  /**
8
- * assign an ID to the given abort signal and return a plain object representation
8
+ * assign an ID to the given abort signal and return a plain object
9
+ * representation
10
+ *
9
11
  * @param signal - the signal to serialize
10
12
  * @param callfunc - function used to call
11
13
  * a remote method, will be called like callfunc('signalAbort', signalId)