@jbrowse/core 1.7.6 → 1.7.9

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 (36) hide show
  1. package/assemblyManager/assemblyManager.d.ts +3 -3
  2. package/assemblyManager/assemblyManager.js +22 -6
  3. package/package.json +4 -2
  4. package/pluggableElementTypes/models/InternetAccountModel.d.ts +2 -2
  5. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +6 -14
  6. package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +6 -0
  7. package/pluggableElementTypes/renderers/ServerSideRendererType.js +44 -2
  8. package/pluggableElementTypes/renderers/declare.d.js +1 -0
  9. package/tsconfig.build.tsbuildinfo +1 -1
  10. package/ui/SanitizedHTML.js +26 -4
  11. package/ui/SnackbarModel.d.ts +2 -2
  12. package/util/declare.d.js +1 -0
  13. package/util/offscreenCanvasPonyfill.d.ts +8 -1
  14. package/util/offscreenCanvasPonyfill.js +140 -12
  15. package/util/offscreenCanvasUtils.d.ts +19 -1
  16. package/util/offscreenCanvasUtils.js +146 -12
  17. package/util/types/mst.d.ts +9 -9
  18. package/util/offscreenCanvas/Canvas2DContextShim/Canvas2DContextShim.test.js +0 -15
  19. package/util/offscreenCanvas/Canvas2DContextShim/context.d.ts +0 -56
  20. package/util/offscreenCanvas/Canvas2DContextShim/context.js +0 -356
  21. package/util/offscreenCanvas/Canvas2DContextShim/index.d.ts +0 -2
  22. package/util/offscreenCanvas/Canvas2DContextShim/index.js +0 -13
  23. package/util/offscreenCanvas/Canvas2DContextShim/svg.d.ts +0 -3
  24. package/util/offscreenCanvas/Canvas2DContextShim/svg.js +0 -210
  25. package/util/offscreenCanvas/Canvas2DContextShim/types.d.ts +0 -50
  26. package/util/offscreenCanvas/Canvas2DContextShim/types.js +0 -59
  27. package/util/offscreenCanvas/Canvas2DContextShim/util.d.ts +0 -12
  28. package/util/offscreenCanvas/Canvas2DContextShim/util.js +0 -91
  29. package/util/offscreenCanvas/CanvasShim.d.ts +0 -11
  30. package/util/offscreenCanvas/CanvasShim.js +0 -54
  31. package/util/offscreenCanvas/index.d.ts +0 -14
  32. package/util/offscreenCanvas/index.js +0 -170
  33. package/util/offscreenCanvas/ponyfill.d.ts +0 -6
  34. package/util/offscreenCanvas/ponyfill.js +0 -145
  35. package/util/offscreenCanvas/types.d.ts +0 -16
  36. package/util/offscreenCanvas/types.js +0 -14
@@ -285,19 +285,19 @@ export default function assemblyManagerFactory(assemblyConfigType: IAnyType, plu
285
285
  [k: string]: string;
286
286
  }>;
287
287
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>) | undefined>;
288
- getRefNameMapForAdapter(adapterConf: unknown, assemblyName: string, opts: {
288
+ getRefNameMapForAdapter(adapterConf: unknown, assemblyName: string | undefined, opts: {
289
289
  signal?: AbortSignal;
290
290
  sessionId: string;
291
291
  }): Promise<{
292
292
  [k: string]: string;
293
293
  } | undefined>;
294
- getReverseRefNameMapForAdapter(adapterConf: unknown, assemblyName: string, opts: {
294
+ getReverseRefNameMapForAdapter(adapterConf: unknown, assemblyName: string | undefined, opts: {
295
295
  signal?: AbortSignal;
296
296
  sessionId: string;
297
297
  }): Promise<{
298
298
  [k: string]: string;
299
299
  } | undefined>;
300
- isValidRefName(refName: string, assemblyName?: string | undefined): boolean;
300
+ isValidRefName(refName: string, assemblyName?: string): boolean;
301
301
  } & {
302
302
  removeAssembly(asm: import("mobx-state-tree").ModelInstanceTypeProps<{
303
303
  configuration: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IReferenceType<IAnyType>>;
@@ -155,7 +155,12 @@ function assemblyManagerFactory(assemblyConfigType, pluginManager) {
155
155
  while (1) {
156
156
  switch (_context2.prev = _context2.next) {
157
157
  case 0:
158
- _context2.next = 2;
158
+ if (!assemblyName) {
159
+ _context2.next = 4;
160
+ break;
161
+ }
162
+
163
+ _context2.next = 3;
159
164
  return (0, _util.when)(function () {
160
165
  return Boolean(self.get(assemblyName));
161
166
  }, {
@@ -163,10 +168,13 @@ function assemblyManagerFactory(assemblyConfigType, pluginManager) {
163
168
  name: 'when assembly ready'
164
169
  });
165
170
 
166
- case 2:
171
+ case 3:
167
172
  return _context2.abrupt("return", (_self$get = self.get(assemblyName)) === null || _self$get === void 0 ? void 0 : _self$get.getRefNameMapForAdapter(adapterConf, opts));
168
173
 
169
- case 3:
174
+ case 4:
175
+ return _context2.abrupt("return", {});
176
+
177
+ case 5:
170
178
  case "end":
171
179
  return _context2.stop();
172
180
  }
@@ -182,7 +190,12 @@ function assemblyManagerFactory(assemblyConfigType, pluginManager) {
182
190
  while (1) {
183
191
  switch (_context3.prev = _context3.next) {
184
192
  case 0:
185
- _context3.next = 2;
193
+ if (!assemblyName) {
194
+ _context3.next = 4;
195
+ break;
196
+ }
197
+
198
+ _context3.next = 3;
186
199
  return (0, _util.when)(function () {
187
200
  return Boolean(self.get(assemblyName));
188
201
  }, {
@@ -190,10 +203,13 @@ function assemblyManagerFactory(assemblyConfigType, pluginManager) {
190
203
  name: 'when assembly ready'
191
204
  });
192
205
 
193
- case 2:
206
+ case 3:
194
207
  return _context3.abrupt("return", (_self$get2 = self.get(assemblyName)) === null || _self$get2 === void 0 ? void 0 : _self$get2.getReverseRefNameMapForAdapter(adapterConf, opts));
195
208
 
196
- case 3:
209
+ case 4:
210
+ return _context3.abrupt("return", {});
211
+
212
+ case 5:
197
213
  case "end":
198
214
  return _context3.stop();
199
215
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbrowse/core",
3
- "version": "1.7.6",
3
+ "version": "1.7.9",
4
4
  "description": "JBrowse 2 core libraries used by plugins",
5
5
  "keywords": [
6
6
  "jbrowse",
@@ -33,6 +33,8 @@
33
33
  "@material-ui/icons": "^4.0.1",
34
34
  "abortable-promise-cache": "^1.5.0",
35
35
  "canvas": "^2.8.0",
36
+ "canvas-sequencer": "^3.1.0",
37
+ "canvas2svg": "^1.0.16",
36
38
  "clsx": "^1.0.4",
37
39
  "color": "^3.1.3",
38
40
  "copy-to-clipboard": "^3.3.1",
@@ -72,5 +74,5 @@
72
74
  "access": "public",
73
75
  "directory": "dist"
74
76
  },
75
- "gitHead": "dbd73f99714e395cf20877d5e05d26855857a0e3"
77
+ "gitHead": "a6504c385d703ce6e755d05652ef659ffe28c864"
76
78
  }
@@ -69,7 +69,7 @@ export declare const InternetAccount: import("mobx-state-tree").IModelType<{
69
69
  * @param location - UriLocation of the resource
70
70
  * @returns A promise for the token
71
71
  */
72
- getToken(location?: UriLocation | undefined): Promise<string>;
72
+ getToken(location?: UriLocation): Promise<string>;
73
73
  } & {
74
74
  addAuthHeaderToInit(init: RequestInit | undefined, token: string): {
75
75
  headers: Headers;
@@ -107,7 +107,7 @@ export declare const InternetAccount: import("mobx-state-tree").IModelType<{
107
107
  * @param location - UriLocation of the resource
108
108
  * @returns A function that can be used to fetch
109
109
  */
110
- getFetcher(location?: UriLocation | undefined): (input: RequestInfo, init?: RequestInit | undefined) => Promise<Response>;
110
+ getFetcher(location?: UriLocation): (input: RequestInfo, init?: RequestInit) => Promise<Response>;
111
111
  } & {
112
112
  /**
113
113
  * Gets a filehandle that uses a fetch that adds auth headers
@@ -143,11 +143,7 @@ var ComparativeServerSideRenderer = /*#__PURE__*/function (_ServerSideRenderer)
143
143
  }, {
144
144
  key: "featurePassesFilters",
145
145
  value: function featurePassesFilters(renderArgs, feature) {
146
- if (!renderArgs.filters) {
147
- return true;
148
- }
149
-
150
- return renderArgs.filters.passes(feature, renderArgs);
146
+ return renderArgs.filters ? renderArgs.filters.passes(feature, renderArgs) : true;
151
147
  }
152
148
  }, {
153
149
  key: "getFeatures",
@@ -155,13 +151,13 @@ var ComparativeServerSideRenderer = /*#__PURE__*/function (_ServerSideRenderer)
155
151
  var _getFeatures = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(renderArgs) {
156
152
  var _this = this;
157
153
 
158
- var signal, sessionId, adapterConfig, _yield$getAdapter, dataAdapter, regions, requestRegions, featureObservable;
154
+ var sessionId, adapterConfig, _yield$getAdapter, dataAdapter, regions, requestRegions;
159
155
 
160
156
  return _regenerator.default.wrap(function _callee3$(_context3) {
161
157
  while (1) {
162
158
  switch (_context3.prev = _context3.next) {
163
159
  case 0:
164
- signal = renderArgs.signal, sessionId = renderArgs.sessionId, adapterConfig = renderArgs.adapterConfig;
160
+ sessionId = renderArgs.sessionId, adapterConfig = renderArgs.adapterConfig;
165
161
  _context3.next = 3;
166
162
  return (0, _dataAdapterCache.getAdapter)(this.pluginManager, sessionId, adapterConfig);
167
163
 
@@ -197,15 +193,11 @@ var ComparativeServerSideRenderer = /*#__PURE__*/function (_ServerSideRenderer)
197
193
  return requestRegion;
198
194
  }); // note that getFeaturesInMultipleRegions does not do glyph expansion
199
195
 
200
- featureObservable = dataAdapter.getFeaturesInMultipleRegions(requestRegions, {
201
- signal: signal
202
- });
203
- return _context3.abrupt("return", featureObservable.pipe( // @ts-ignore
204
- (0, _operators.filter)(function (feature) {
205
- return _this.featurePassesFilters(renderArgs, feature);
196
+ return _context3.abrupt("return", dataAdapter.getFeaturesInMultipleRegions(requestRegions, renderArgs).pipe((0, _operators.filter)(function (f) {
197
+ return _this.featurePassesFilters(renderArgs, f);
206
198
  }), (0, _operators.toArray)()).toPromise());
207
199
 
208
- case 13:
200
+ case 12:
209
201
  case "end":
210
202
  return _context3.stop();
211
203
  }
@@ -29,6 +29,12 @@ export type { RenderResults };
29
29
  export interface ResultsSerialized extends Omit<RenderResults, 'reactElement'> {
30
30
  html: string;
31
31
  }
32
+ export interface ResultsSerializedSvgExport extends ResultsSerialized {
33
+ canvasRecordedData: unknown;
34
+ width: number;
35
+ height: number;
36
+ reactElement: unknown;
37
+ }
32
38
  export declare type ResultsDeserialized = RenderResults;
33
39
  export default class ServerSideRenderer extends RendererType {
34
40
  /**
@@ -2,6 +2,8 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
@@ -31,6 +33,8 @@ var _react = _interopRequireDefault(require("react"));
31
33
 
32
34
  var _styles = require("@material-ui/core/styles");
33
35
 
36
+ var _canvasSequencer = require("canvas-sequencer");
37
+
34
38
  var _server = require("react-dom/server");
35
39
 
36
40
  var _mobxStateTree = require("mobx-state-tree");
@@ -47,6 +51,10 @@ var _ServerSideRenderedContent = _interopRequireDefault(require("./ServerSideRen
47
51
 
48
52
  var _excluded = ["html"];
49
53
 
54
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
55
+
56
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
57
+
50
58
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
51
59
 
52
60
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -55,6 +63,10 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
55
63
 
56
64
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
57
65
 
66
+ function isSvgExport(elt) {
67
+ return 'canvasRecordedData' in elt;
68
+ }
69
+
58
70
  var ServerSideRenderer = /*#__PURE__*/function (_RendererType) {
59
71
  (0, _inherits2.default)(ServerSideRenderer, _RendererType);
60
72
 
@@ -164,13 +176,43 @@ var ServerSideRenderer = /*#__PURE__*/function (_RendererType) {
164
176
  key: "renderInClient",
165
177
  value: function () {
166
178
  var _renderInClient = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(rpcManager, args) {
179
+ var results, width, height, canvasRecordedData, C2S, ctx, seq, str;
167
180
  return _regenerator.default.wrap(function _callee$(_context) {
168
181
  while (1) {
169
182
  switch (_context.prev = _context.next) {
170
183
  case 0:
171
- return _context.abrupt("return", rpcManager.call(args.sessionId, 'CoreRender', args));
184
+ _context.next = 2;
185
+ return rpcManager.call(args.sessionId, 'CoreRender', args);
186
+
187
+ case 2:
188
+ results = _context.sent;
189
+
190
+ if (!isSvgExport(results)) {
191
+ _context.next = 14;
192
+ break;
193
+ }
194
+
195
+ width = results.width, height = results.height, canvasRecordedData = results.canvasRecordedData;
196
+ _context.next = 7;
197
+ return Promise.resolve().then(function () {
198
+ return _interopRequireWildcard(require('canvas2svg'));
199
+ });
200
+
201
+ case 7:
202
+ C2S = _context.sent;
203
+ ctx = new C2S.default(width, height);
204
+ seq = new _canvasSequencer.CanvasSequence(canvasRecordedData);
205
+ seq.execute(ctx);
206
+ str = ctx.getSvg(); // innerHTML strips the outer <svg> element from returned data, we add
207
+ // our own <svg> element in the view's SVG export
208
+
209
+ results.html = str.innerHTML;
210
+ delete results.reactElement;
211
+
212
+ case 14:
213
+ return _context.abrupt("return", results);
172
214
 
173
- case 1:
215
+ case 15:
174
216
  case "end":
175
217
  return _context.stop();
176
218
  }
@@ -0,0 +1 @@
1
+ "use strict";