@jbrowse/core 1.6.7 → 1.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 (61) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail.d.ts +2 -2
  2. package/PluginLoader.d.ts +11 -3
  3. package/PluginLoader.js +37 -89
  4. package/PluginManager.d.ts +2 -2
  5. package/PluginManager.js +4 -6
  6. package/ReExports/modules.d.ts +2 -2
  7. package/assemblyManager/assemblyManager.d.ts +21 -21
  8. package/configuration/util.js +1 -5
  9. package/data_adapters/BaseAdapter.js +70 -108
  10. package/package.json +5 -8
  11. package/pluggableElementTypes/WidgetType.d.ts +1 -2
  12. package/pluggableElementTypes/models/BaseViewModel.js +1 -1
  13. package/pluggableElementTypes/models/InternetAccountModel.js +51 -69
  14. package/pluggableElementTypes/renderers/FeatureRendererType.js +14 -19
  15. package/rpc/BaseRpcDriver.d.ts +7 -8
  16. package/rpc/BaseRpcDriver.js +35 -44
  17. package/rpc/BaseRpcDriver.test.js +2 -2
  18. package/rpc/RpcManager.js +29 -11
  19. package/rpc/WebWorkerRpcDriver.d.ts +2 -6
  20. package/rpc/WebWorkerRpcDriver.js +6 -5
  21. package/rpc/configSchema.js +14 -6
  22. package/ui/App.js +13 -17
  23. package/ui/AssemblySelector.d.ts +4 -1
  24. package/ui/AssemblySelector.js +69 -8
  25. package/ui/PrerenderedCanvas.js +1 -26
  26. package/ui/ViewContainer.d.ts +5 -5
  27. package/ui/ViewContainer.js +12 -7
  28. package/util/index.d.ts +12 -5
  29. package/util/index.js +47 -26
  30. package/util/io/index.js +3 -1
  31. package/util/layouts/BaseLayout.d.ts +1 -0
  32. package/util/layouts/GranularRectLayout.js +2 -0
  33. package/util/layouts/PrecomputedLayout.js +2 -1
  34. package/util/offscreenCanvas/Canvas2DContextShim/Canvas2DContextShim.test.d.ts +1 -0
  35. package/util/offscreenCanvas/Canvas2DContextShim/Canvas2DContextShim.test.js +15 -0
  36. package/util/offscreenCanvas/Canvas2DContextShim/context.d.ts +56 -0
  37. package/util/offscreenCanvas/Canvas2DContextShim/context.js +356 -0
  38. package/util/offscreenCanvas/Canvas2DContextShim/index.d.ts +2 -0
  39. package/util/offscreenCanvas/Canvas2DContextShim/index.js +13 -0
  40. package/util/offscreenCanvas/Canvas2DContextShim/svg.d.ts +3 -0
  41. package/util/offscreenCanvas/Canvas2DContextShim/svg.js +210 -0
  42. package/util/offscreenCanvas/Canvas2DContextShim/types.d.ts +50 -0
  43. package/util/offscreenCanvas/Canvas2DContextShim/types.js +59 -0
  44. package/util/offscreenCanvas/Canvas2DContextShim/util.d.ts +12 -0
  45. package/util/offscreenCanvas/Canvas2DContextShim/util.js +91 -0
  46. package/util/offscreenCanvas/CanvasShim.d.ts +11 -0
  47. package/util/offscreenCanvas/CanvasShim.js +54 -0
  48. package/util/offscreenCanvas/index.d.ts +14 -0
  49. package/util/offscreenCanvas/index.js +170 -0
  50. package/util/offscreenCanvas/ponyfill.d.ts +6 -0
  51. package/util/offscreenCanvas/ponyfill.js +145 -0
  52. package/util/offscreenCanvas/types.d.ts +16 -0
  53. package/util/offscreenCanvas/types.js +14 -0
  54. package/util/offscreenCanvasPonyfill.d.ts +1 -58
  55. package/util/offscreenCanvasPonyfill.js +10 -815
  56. package/util/offscreenCanvasUtils.d.ts +1 -13
  57. package/util/offscreenCanvasUtils.js +12 -124
  58. package/util/simpleFeature.d.ts +1 -0
  59. package/util/tracks.js +4 -1
  60. package/ui/NewSessionCards.d.ts +0 -14
  61. package/ui/NewSessionCards.js +0 -136
@@ -11,8 +11,6 @@ exports.default = void 0;
11
11
 
12
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
13
 
14
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
-
16
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
17
15
 
18
16
  var _react = _interopRequireWildcard(require("react"));
@@ -53,30 +51,7 @@ function PrerenderedCanvas(props) {
53
51
  return;
54
52
  }
55
53
 
56
- if (imageData.commands) {
57
- imageData.commands.forEach(function (command) {
58
- if (command.type === 'strokeStyle') {
59
- context.strokeStyle = command.style;
60
- } else if (command.type === 'fillStyle') {
61
- context.fillStyle = command.style;
62
- } else if (command.type === 'font') {
63
- context.font = command.style;
64
- } else {
65
- // @ts-ignore
66
- context[command.type].apply(context, (0, _toConsumableArray2.default)(command.args));
67
- }
68
- });
69
- } else if (imageData instanceof _offscreenCanvasPonyfill.ImageBitmapType) {
70
- context.drawImage(imageData, 0, 0);
71
- } else if (imageData.dataURL) {
72
- var img = new Image();
73
-
74
- img.onload = function () {
75
- return context.drawImage(img, 0, 0);
76
- };
77
-
78
- img.src = imageData.dataURL;
79
- }
54
+ (0, _offscreenCanvasPonyfill.drawImageOntoCanvasContext)(imageData, context);
80
55
  }, [imageData]);
81
56
  var softClipString = showSoftClip ? '_softclipped' : '';
82
57
  var blockKeyStr = blockKey ? '_' + blockKey : '';
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
2
  import { IBaseViewModel } from '../pluggableElementTypes/models';
3
- declare const _default: React.ComponentType<{
3
+ declare const ViewContainer: ({ view, onClose, style, children, }: {
4
4
  view: IBaseViewModel;
5
- style: React.CSSProperties;
6
- children: React.ReactNode;
7
5
  onClose: () => void;
8
- } & import("react-sizeme").WithSizeProps>;
9
- export default _default;
6
+ style?: React.CSSProperties | undefined;
7
+ children: React.ReactNode;
8
+ }) => JSX.Element;
9
+ export default ViewContainer;
@@ -23,7 +23,7 @@ var _mobxReact = require("mobx-react");
23
23
 
24
24
  var _mobxStateTree = require("mobx-state-tree");
25
25
 
26
- var _reactSizeme = require("react-sizeme");
26
+ var _reactUseMeasure = _interopRequireDefault(require("react-use-measure"));
27
27
 
28
28
  var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
29
29
 
@@ -114,16 +114,20 @@ var ViewMenu = (0, _mobxReact.observer)(function (_ref) {
114
114
  menuItems: model.menuItems()
115
115
  })) : null;
116
116
  });
117
-
118
- var _default = (0, _reactSizeme.withSize)()((0, _mobxReact.observer)(function (_ref2) {
117
+ var ViewContainer = (0, _mobxReact.observer)(function (_ref2) {
119
118
  var view = _ref2.view,
120
119
  onClose = _ref2.onClose,
121
120
  style = _ref2.style,
122
- children = _ref2.children,
123
- width = _ref2.size.width;
121
+ children = _ref2.children;
124
122
  var classes = useStyles();
125
123
  var theme = (0, _core.useTheme)();
126
124
  var padWidth = theme.spacing(1);
125
+
126
+ var _useMeasure = (0, _reactUseMeasure.default)(),
127
+ _useMeasure2 = (0, _slicedToArray2.default)(_useMeasure, 2),
128
+ ref = _useMeasure2[0],
129
+ width = _useMeasure2[1].width;
130
+
127
131
  (0, _react.useEffect)(function () {
128
132
  if (width && (0, _mobxStateTree.isAlive)(view)) {
129
133
  view.setWidth(width - padWidth * 2);
@@ -141,6 +145,7 @@ var _default = (0, _reactSizeme.withSize)()((0, _mobxReact.observer)(function (_
141
145
  });
142
146
  }, []);
143
147
  return /*#__PURE__*/_react.default.createElement(_core.Paper, {
148
+ ref: ref,
144
149
  elevation: 12,
145
150
  className: classes.viewContainer,
146
151
  style: _objectSpread(_objectSpread({}, style), {}, {
@@ -193,6 +198,6 @@ var _default = (0, _reactSizeme.withSize)()((0, _mobxReact.observer)(function (_
193
198
  }, /*#__PURE__*/_react.default.createElement(_Close.default, {
194
199
  className: classes.icon
195
200
  }))), /*#__PURE__*/_react.default.createElement(_core.Paper, null, children));
196
- }));
197
-
201
+ });
202
+ var _default = ViewContainer;
198
203
  exports.default = _default;
package/util/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import { IAnyStateTreeNode } from 'mobx-state-tree';
2
2
  import { IReactionPublic, IReactionOptions } from 'mobx';
3
3
  import SimpleFeature, { Feature, isFeature } from './simpleFeature';
4
- import { TypeTestedByPredicate, Region, AssemblyManager } from './types';
4
+ import { AssemblyManager, Region, TypeTestedByPredicate } from './types';
5
+ export type { Feature };
5
6
  export * from './types';
6
7
  export * from './aborting';
7
8
  export * from './when';
@@ -121,9 +122,9 @@ export declare function clamp(num: number, min: number, max: number): number;
121
122
  * @param region -
122
123
  * @param bpPerPx -
123
124
  */
124
- export declare function bpToPx(bp: number, region: {
125
- start: number;
126
- end: number;
125
+ export declare function bpToPx(bp: number, { reversed, end, start, }: {
126
+ start?: number;
127
+ end?: number;
127
128
  reversed?: boolean;
128
129
  }, bpPerPx: number): number;
129
130
  export declare function radToDeg(radians: number): number;
@@ -227,7 +228,7 @@ export declare function stringify({ refName, coord, oob, }: {
227
228
  export declare const isElectron: boolean;
228
229
  export declare function revcom(seqString: string): string;
229
230
  export declare const complement: (seqString: string) => string;
230
- export declare function blobToDataURL(blob: Blob): Promise<unknown>;
231
+ export declare function blobToDataURL(blob: Blob): Promise<string>;
231
232
  export declare const rIC: (((callback: IdleRequestCallback, options?: IdleRequestOptions | undefined) => number) & typeof requestIdleCallback) | ((cb: Function) => any);
232
233
  export declare function measureText(str: unknown, fontSize?: number): number;
233
234
  export declare const defaultStarts: string[];
@@ -340,3 +341,9 @@ export declare function viewBpToPx({ refName, coord, regionNumber, self, }: {
340
341
  offsetPx: number;
341
342
  } | undefined;
342
343
  export declare function getBpDisplayStr(totalBp: number): string;
344
+ export declare function getViewParams(model: IAnyStateTreeNode, exportSVG?: boolean): {
345
+ offsetPx: number;
346
+ offsetPx1: number;
347
+ start: any;
348
+ end: any;
349
+ };
package/util/index.js CHANGED
@@ -57,6 +57,7 @@ var _exportNames = {
57
57
  bytesForRegions: true,
58
58
  viewBpToPx: true,
59
59
  getBpDisplayStr: true,
60
+ getViewParams: true,
60
61
  SimpleFeature: true,
61
62
  isFeature: true
62
63
  };
@@ -87,6 +88,7 @@ exports.getContainingDisplay = getContainingDisplay;
87
88
  exports.getContainingTrack = getContainingTrack;
88
89
  exports.getContainingView = getContainingView;
89
90
  exports.getSession = getSession;
91
+ exports.getViewParams = getViewParams;
90
92
  exports.hashCode = hashCode;
91
93
  exports.isElectron = exports.inProduction = exports.inDevelopment = void 0;
92
94
  Object.defineProperty(exports, "isFeature", {
@@ -129,14 +131,14 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
129
131
 
130
132
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
131
133
 
134
+ var _react = require("react");
135
+
132
136
  var _mobxStateTree = require("mobx-state-tree");
133
137
 
134
138
  var _mobx = require("mobx");
135
139
 
136
140
  var _object = _interopRequireDefault(require("object.fromentries"));
137
141
 
138
- var _react = require("react");
139
-
140
142
  var _deepmerge = _interopRequireDefault(require("deepmerge"));
141
143
 
142
144
  var _simpleFeature = _interopRequireWildcard(require("./simpleFeature"));
@@ -731,12 +733,13 @@ function roundToNearestPointOne(num) {
731
733
  */
732
734
 
733
735
 
734
- function bpToPx(bp, region, bpPerPx) {
735
- if (region.reversed) {
736
- return roundToNearestPointOne((region.end - bp) / bpPerPx);
737
- }
738
-
739
- return roundToNearestPointOne((bp - region.start) / bpPerPx);
736
+ function bpToPx(bp, _ref, bpPerPx) {
737
+ var reversed = _ref.reversed,
738
+ _ref$end = _ref.end,
739
+ end = _ref$end === void 0 ? 0 : _ref$end,
740
+ _ref$start = _ref.start,
741
+ start = _ref$start === void 0 ? 0 : _ref$start;
742
+ return roundToNearestPointOne((reversed ? end - bp : bp - start) / bpPerPx);
740
743
  }
741
744
 
742
745
  var oneEightyOverPi = 180.0 / Math.PI;
@@ -881,7 +884,7 @@ function makeAbortableReaction(self, dataFunction, asyncReactionFunction, reacti
881
884
  return undefined;
882
885
  }
883
886
  }, /*#__PURE__*/function () {
884
- var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(data, mobxReactionHandle) {
887
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(data, mobxReactionHandle) {
885
888
  var thisInProgress, result;
886
889
  return _regenerator.default.wrap(function _callee$(_context) {
887
890
  while (1) {
@@ -936,7 +939,7 @@ function makeAbortableReaction(self, dataFunction, asyncReactionFunction, reacti
936
939
  }));
937
940
 
938
941
  return function (_x, _x2) {
939
- return _ref.apply(this, arguments);
942
+ return _ref2.apply(this, arguments);
940
943
  };
941
944
  }(), reactionOptions);
942
945
  (0, _mobxStateTree.addDisposer)(self, reactionDisposer);
@@ -1002,7 +1005,7 @@ function _renameRegionsIfNeeded() {
1002
1005
  _context3.t0 = Object;
1003
1006
  _context3.next = 7;
1004
1007
  return Promise.all(assemblyNames.map( /*#__PURE__*/function () {
1005
- var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(assemblyName) {
1008
+ var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(assemblyName) {
1006
1009
  return _regenerator.default.wrap(function _callee2$(_context2) {
1007
1010
  while (1) {
1008
1011
  switch (_context2.prev = _context2.next) {
@@ -1024,7 +1027,7 @@ function _renameRegionsIfNeeded() {
1024
1027
  }));
1025
1028
 
1026
1029
  return function (_x10) {
1027
- return _ref4.apply(this, arguments);
1030
+ return _ref5.apply(this, arguments);
1028
1031
  };
1029
1032
  }()));
1030
1033
 
@@ -1053,10 +1056,10 @@ function minmax(a, b) {
1053
1056
  return [Math.min(a, b), Math.max(a, b)];
1054
1057
  }
1055
1058
 
1056
- function stringify(_ref2) {
1057
- var refName = _ref2.refName,
1058
- coord = _ref2.coord,
1059
- oob = _ref2.oob;
1059
+ function stringify(_ref3) {
1060
+ var refName = _ref3.refName,
1061
+ coord = _ref3.coord,
1062
+ oob = _ref3.oob;
1060
1063
  return "".concat(refName, ":").concat(coord.toLocaleString('en-US')).concat(oob ? ' (out of bounds)' : '');
1061
1064
  } // this is recommended in a later comment in https://github.com/electron/electron/issues/2288
1062
1065
  // for detecting electron in a renderer process, which is the one that has node enabled for us
@@ -1356,11 +1359,11 @@ function _bytesForRegions() {
1356
1359
  return _bytesForRegions.apply(this, arguments);
1357
1360
  }
1358
1361
 
1359
- function viewBpToPx(_ref3) {
1360
- var refName = _ref3.refName,
1361
- coord = _ref3.coord,
1362
- regionNumber = _ref3.regionNumber,
1363
- self = _ref3.self;
1362
+ function viewBpToPx(_ref4) {
1363
+ var refName = _ref4.refName,
1364
+ coord = _ref4.coord,
1365
+ regionNumber = _ref4.regionNumber,
1366
+ self = _ref4.self;
1364
1367
  var offsetBp = 0;
1365
1368
  var interRegionPaddingBp = self.interRegionPaddingWidth * self.bpPerPx;
1366
1369
  var minimumBlockBp = self.minimumBlockWidth * self.bpPerPx;
@@ -1397,15 +1400,33 @@ function viewBpToPx(_ref3) {
1397
1400
  }
1398
1401
 
1399
1402
  function getBpDisplayStr(totalBp) {
1400
- var displayBp;
1403
+ var str;
1401
1404
 
1402
1405
  if (Math.floor(totalBp / 1000000) > 0) {
1403
- displayBp = "".concat(parseFloat((totalBp / 1000000).toPrecision(3)), "Mbp");
1406
+ str = "".concat(parseFloat((totalBp / 1000000).toPrecision(3)), "Mbp");
1404
1407
  } else if (Math.floor(totalBp / 1000) > 0) {
1405
- displayBp = "".concat(parseFloat((totalBp / 1000).toPrecision(3)), "Kbp");
1408
+ str = "".concat(parseFloat((totalBp / 1000).toPrecision(3)), "Kbp");
1406
1409
  } else {
1407
- displayBp = "".concat(Math.floor(totalBp), "bp");
1410
+ str = "".concat(Math.floor(totalBp), "bp");
1408
1411
  }
1409
1412
 
1410
- return displayBp;
1413
+ return str;
1414
+ }
1415
+
1416
+ function getViewParams(model, exportSVG) {
1417
+ // @ts-ignore
1418
+ var _getContainingView = getContainingView(model),
1419
+ dynamicBlocks = _getContainingView.dynamicBlocks,
1420
+ staticBlocks = _getContainingView.staticBlocks,
1421
+ offsetPx = _getContainingView.offsetPx;
1422
+
1423
+ var block = (dynamicBlocks === null || dynamicBlocks === void 0 ? void 0 : dynamicBlocks.contentBlocks[0]) || {};
1424
+ var staticblock = (staticBlocks === null || staticBlocks === void 0 ? void 0 : staticBlocks.contentBlocks[0]) || {};
1425
+ var staticblock1 = (staticBlocks === null || staticBlocks === void 0 ? void 0 : staticBlocks.contentBlocks[1]) || {};
1426
+ return {
1427
+ offsetPx: exportSVG ? 0 : offsetPx - staticblock.offsetPx,
1428
+ offsetPx1: exportSVG ? 0 : offsetPx - staticblock1.offsetPx,
1429
+ start: block.start,
1430
+ end: block.end
1431
+ };
1411
1432
  }
package/util/io/index.js CHANGED
@@ -30,6 +30,8 @@ var _tracks = require("../tracks");
30
30
 
31
31
  var _detectNode = _interopRequireDefault(require("detect-node"));
32
32
 
33
+ var _util = require("@jbrowse/core/util");
34
+
33
35
  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; }
34
36
 
35
37
  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; }
@@ -52,7 +54,7 @@ function openLocation(location, pluginManager) {
52
54
  throw new Error('No local path provided');
53
55
  }
54
56
 
55
- if (_detectNode.default) {
57
+ if (_detectNode.default || _util.isElectron) {
56
58
  return new _genericFilehandle.LocalFile(location.localPath);
57
59
  } else {
58
60
  throw new Error("can't use local files in the browser");
@@ -2,6 +2,7 @@ export declare type RectTuple = [number, number, number, number];
2
2
  export interface SerializedLayout {
3
3
  rectangles: Record<string, RectTuple>;
4
4
  totalHeight: number;
5
+ containsNoTransferables: true;
5
6
  maxHeightReached: boolean;
6
7
  }
7
8
  export interface Rectangle<T> {
@@ -580,6 +580,7 @@ var GranularRectLayout = /*#__PURE__*/function () {
580
580
 
581
581
  return {
582
582
  rectangles: regionRectangles,
583
+ containsNoTransferables: true,
583
584
  totalHeight: this.getTotalHeight(),
584
585
  maxHeightReached: maxHeightReached
585
586
  };
@@ -590,6 +591,7 @@ var GranularRectLayout = /*#__PURE__*/function () {
590
591
  var rectangles = (0, _index.objectFromEntries)(this.getRectangles());
591
592
  return {
592
593
  rectangles: rectangles,
594
+ containsNoTransferables: true,
593
595
  totalHeight: this.getTotalHeight(),
594
596
  maxHeightReached: this.maxHeightReached
595
597
  };
@@ -118,7 +118,8 @@ var PrecomputedLayout = /*#__PURE__*/function () {
118
118
  return {
119
119
  rectangles: (0, _.objectFromEntries)(this.rectangles),
120
120
  totalHeight: this.totalHeight,
121
- maxHeightReached: false
121
+ maxHeightReached: false,
122
+ containsNoTransferables: true
122
123
  };
123
124
  }
124
125
  }]);
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _ = _interopRequireDefault(require("."));
6
+
7
+ test('serialize a single command and read back out', function () {
8
+ var ctx = new _.default(100, 100);
9
+ ctx.arc(20, 21, 22, 23, 24);
10
+ var cmds = Array.from(ctx.getCommands());
11
+ expect(cmds).toEqual([{
12
+ name: 'arc',
13
+ args: [20, 21, 22, 23, 24]
14
+ }]);
15
+ });
@@ -0,0 +1,56 @@
1
+ /// <reference types="react" />
2
+ /// <reference types="offscreencanvas" />
3
+ import { Command } from './types';
4
+ /** get the params type of real method in OffscreenCanvasRenderingContext2D */
5
+ declare type RealP<METHODNAME extends keyof OffscreenCanvasRenderingContext2D> = OffscreenCanvasRenderingContext2D[METHODNAME] extends (...arg0: any[]) => any ? Parameters<OffscreenCanvasRenderingContext2D[METHODNAME]> : never;
6
+ /** get the return type of real method in OffscreenCanvasRenderingContext2D */
7
+ declare type RealRet<METHODNAME extends keyof OffscreenCanvasRenderingContext2D> = OffscreenCanvasRenderingContext2D[METHODNAME] extends (...arg0: any[]) => any ? ReturnType<OffscreenCanvasRenderingContext2D[METHODNAME]> : never;
8
+ /** get the type of the params of a method of the canvas shim */
9
+ export declare type ShimP<METHODNAME extends keyof OffscreenCanvasRenderingContext2DShim> = OffscreenCanvasRenderingContext2DShim[METHODNAME] extends (...arg0: any[]) => any ? Parameters<OffscreenCanvasRenderingContext2DShim[METHODNAME]> : never;
10
+ /** decode all the commands in the given buffer and replay them onto the given context */
11
+ export declare function replayCommandsOntoContext(targetContext: CanvasRenderingContext2D, encodedCommands: Iterable<Command>): void;
12
+ export default class OffscreenCanvasRenderingContext2DShim {
13
+ width: number;
14
+ height: number;
15
+ currentFont: string;
16
+ currentStrokeStyle: string;
17
+ currentFillStyle: string;
18
+ recordedCommands: Command[];
19
+ constructor(width: number, height: number);
20
+ private pushMethodCall;
21
+ private pushSetterCall;
22
+ getSerializedCommands(): Command[];
23
+ getSerializedSvg(): JSX.Element;
24
+ getCommands(): Command[];
25
+ set strokeStyle(style: string);
26
+ set fillStyle(style: string);
27
+ set font(style: string);
28
+ arc(...args: RealP<'arc'>): RealRet<'arc'>;
29
+ arcTo(...args: RealP<'arcTo'>): RealRet<'arcTo'>;
30
+ beginPath(...args: RealP<'beginPath'>): RealRet<'beginPath'>;
31
+ clearRect(...args: RealP<'clearRect'>): RealRet<'clearRect'>;
32
+ closePath(...args: RealP<'closePath'>): RealRet<'closePath'>;
33
+ ellipse(...args: RealP<'ellipse'>): RealRet<'ellipse'>;
34
+ fill(...args: RealP<'fill'>): RealRet<'fill'>;
35
+ fillRect(...args: RealP<'fillRect'>): RealRet<'fillRect'>;
36
+ fillText(...args: RealP<'fillText'>): RealRet<'fillText'>;
37
+ lineTo(...args: RealP<'lineTo'>): RealRet<'lineTo'>;
38
+ measureText(...args: RealP<'measureText'>): {
39
+ width: number;
40
+ height: number;
41
+ };
42
+ moveTo(...args: RealP<'moveTo'>): RealRet<'moveTo'>;
43
+ quadraticCurveTo(...args: RealP<'quadraticCurveTo'>): RealRet<'quadraticCurveTo'>;
44
+ rect(...args: RealP<'rect'>): RealRet<'rect'>;
45
+ restore(...args: RealP<'restore'>): RealRet<'restore'>;
46
+ rotate(...args: RealP<'rotate'>): RealRet<'rotate'>;
47
+ save(...args: RealP<'save'>): RealRet<'save'>;
48
+ setTransform(...args: RealP<'setTransform'>): RealRet<'setTransform'>;
49
+ scale(...args: RealP<'scale'>): RealRet<'scale'>;
50
+ stroke(): RealRet<'stroke'>;
51
+ strokeRect(...args: RealP<'strokeRect'>): RealRet<'strokeRect'>;
52
+ strokeText(...args: RealP<'strokeText'>): RealRet<'strokeText'>;
53
+ transform(...args: RealP<'transform'>): RealRet<'transform'>;
54
+ translate(...args: RealP<'translate'>): RealRet<'translate'>;
55
+ }
56
+ export {};