@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.
- package/BaseFeatureWidget/BaseFeatureDetail.d.ts +2 -2
- package/PluginLoader.d.ts +11 -3
- package/PluginLoader.js +37 -89
- package/PluginManager.d.ts +2 -2
- package/PluginManager.js +4 -6
- package/ReExports/modules.d.ts +2 -2
- package/assemblyManager/assemblyManager.d.ts +21 -21
- package/configuration/util.js +1 -5
- package/data_adapters/BaseAdapter.js +70 -108
- package/package.json +5 -8
- package/pluggableElementTypes/WidgetType.d.ts +1 -2
- package/pluggableElementTypes/models/BaseViewModel.js +1 -1
- package/pluggableElementTypes/models/InternetAccountModel.js +51 -69
- package/pluggableElementTypes/renderers/FeatureRendererType.js +14 -19
- package/rpc/BaseRpcDriver.d.ts +7 -8
- package/rpc/BaseRpcDriver.js +35 -44
- package/rpc/BaseRpcDriver.test.js +2 -2
- package/rpc/RpcManager.js +29 -11
- package/rpc/WebWorkerRpcDriver.d.ts +2 -6
- package/rpc/WebWorkerRpcDriver.js +6 -5
- package/rpc/configSchema.js +14 -6
- package/ui/App.js +13 -17
- package/ui/AssemblySelector.d.ts +4 -1
- package/ui/AssemblySelector.js +69 -8
- package/ui/PrerenderedCanvas.js +1 -26
- package/ui/ViewContainer.d.ts +5 -5
- package/ui/ViewContainer.js +12 -7
- package/util/index.d.ts +12 -5
- package/util/index.js +47 -26
- package/util/io/index.js +3 -1
- package/util/layouts/BaseLayout.d.ts +1 -0
- package/util/layouts/GranularRectLayout.js +2 -0
- package/util/layouts/PrecomputedLayout.js +2 -1
- package/util/offscreenCanvas/Canvas2DContextShim/Canvas2DContextShim.test.d.ts +1 -0
- package/util/offscreenCanvas/Canvas2DContextShim/Canvas2DContextShim.test.js +15 -0
- package/util/offscreenCanvas/Canvas2DContextShim/context.d.ts +56 -0
- package/util/offscreenCanvas/Canvas2DContextShim/context.js +356 -0
- package/util/offscreenCanvas/Canvas2DContextShim/index.d.ts +2 -0
- package/util/offscreenCanvas/Canvas2DContextShim/index.js +13 -0
- package/util/offscreenCanvas/Canvas2DContextShim/svg.d.ts +3 -0
- package/util/offscreenCanvas/Canvas2DContextShim/svg.js +210 -0
- package/util/offscreenCanvas/Canvas2DContextShim/types.d.ts +50 -0
- package/util/offscreenCanvas/Canvas2DContextShim/types.js +59 -0
- package/util/offscreenCanvas/Canvas2DContextShim/util.d.ts +12 -0
- package/util/offscreenCanvas/Canvas2DContextShim/util.js +91 -0
- package/util/offscreenCanvas/CanvasShim.d.ts +11 -0
- package/util/offscreenCanvas/CanvasShim.js +54 -0
- package/util/offscreenCanvas/index.d.ts +14 -0
- package/util/offscreenCanvas/index.js +170 -0
- package/util/offscreenCanvas/ponyfill.d.ts +6 -0
- package/util/offscreenCanvas/ponyfill.js +145 -0
- package/util/offscreenCanvas/types.d.ts +16 -0
- package/util/offscreenCanvas/types.js +14 -0
- package/util/offscreenCanvasPonyfill.d.ts +1 -58
- package/util/offscreenCanvasPonyfill.js +10 -815
- package/util/offscreenCanvasUtils.d.ts +1 -13
- package/util/offscreenCanvasUtils.js +12 -124
- package/util/simpleFeature.d.ts +1 -0
- package/util/tracks.js +4 -1
- package/ui/NewSessionCards.d.ts +0 -14
- package/ui/NewSessionCards.js +0 -136
package/ui/PrerenderedCanvas.js
CHANGED
|
@@ -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
|
-
|
|
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 : '';
|
package/ui/ViewContainer.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { IBaseViewModel } from '../pluggableElementTypes/models';
|
|
3
|
-
declare const
|
|
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
|
-
|
|
9
|
-
|
|
6
|
+
style?: React.CSSProperties | undefined;
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
}) => JSX.Element;
|
|
9
|
+
export default ViewContainer;
|
package/ui/ViewContainer.js
CHANGED
|
@@ -23,7 +23,7 @@ var _mobxReact = require("mobx-react");
|
|
|
23
23
|
|
|
24
24
|
var _mobxStateTree = require("mobx-state-tree");
|
|
25
25
|
|
|
26
|
-
var
|
|
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 {
|
|
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,
|
|
125
|
-
start
|
|
126
|
-
end
|
|
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<
|
|
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,
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
1057
|
-
var refName =
|
|
1058
|
-
coord =
|
|
1059
|
-
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(
|
|
1360
|
-
var refName =
|
|
1361
|
-
coord =
|
|
1362
|
-
regionNumber =
|
|
1363
|
-
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
|
|
1403
|
+
var str;
|
|
1401
1404
|
|
|
1402
1405
|
if (Math.floor(totalBp / 1000000) > 0) {
|
|
1403
|
-
|
|
1406
|
+
str = "".concat(parseFloat((totalBp / 1000000).toPrecision(3)), "Mbp");
|
|
1404
1407
|
} else if (Math.floor(totalBp / 1000) > 0) {
|
|
1405
|
-
|
|
1408
|
+
str = "".concat(parseFloat((totalBp / 1000).toPrecision(3)), "Kbp");
|
|
1406
1409
|
} else {
|
|
1407
|
-
|
|
1410
|
+
str = "".concat(Math.floor(totalBp), "bp");
|
|
1408
1411
|
}
|
|
1409
1412
|
|
|
1410
|
-
return
|
|
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");
|
|
@@ -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 @@
|
|
|
1
|
+
export {};
|
|
@@ -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 {};
|