@jbrowse/core 1.6.9 → 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.js +4 -6
- 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/rpc/WebWorkerRpcDriver.d.ts +2 -6
- package/rpc/WebWorkerRpcDriver.js +6 -5
- 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 +7 -1
- package/util/index.js +20 -0
- 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/ui/NewSessionCards.d.ts +0 -14
- package/ui/NewSessionCards.js +0 -136
package/ui/App.js
CHANGED
|
@@ -238,23 +238,19 @@ var App = (0, _mobxReact.observer)(function (_ref2) {
|
|
|
238
238
|
}
|
|
239
239
|
|
|
240
240
|
var ReactComponent = viewType.ReactComponent;
|
|
241
|
-
return (
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
session: session,
|
|
255
|
-
getTrackType: pluginManager.getTrackType
|
|
256
|
-
})))
|
|
257
|
-
);
|
|
241
|
+
return /*#__PURE__*/_react.default.createElement(_ViewContainer.default, {
|
|
242
|
+
key: "view-".concat(view.id),
|
|
243
|
+
view: view,
|
|
244
|
+
onClose: function onClose() {
|
|
245
|
+
return session.removeView(view);
|
|
246
|
+
}
|
|
247
|
+
}, /*#__PURE__*/_react.default.createElement(_react.Suspense, {
|
|
248
|
+
fallback: /*#__PURE__*/_react.default.createElement("div", null, "Loading...")
|
|
249
|
+
}, /*#__PURE__*/_react.default.createElement(ReactComponent, {
|
|
250
|
+
model: view,
|
|
251
|
+
session: session,
|
|
252
|
+
getTrackType: pluginManager.getTrackType
|
|
253
|
+
})));
|
|
258
254
|
}) : /*#__PURE__*/_react.default.createElement(_core.Paper, {
|
|
259
255
|
className: classes.selectPaper
|
|
260
256
|
}, /*#__PURE__*/_react.default.createElement(_core.Typography, null, "Select a view to launch"), /*#__PURE__*/_react.default.createElement(_core.Select, {
|
package/ui/AssemblySelector.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import { InputProps as IIP } from '@material-ui/core';
|
|
2
3
|
import { AbstractSessionModel } from '../util';
|
|
3
|
-
declare const AssemblySelector: ({ session, onChange, selected, }: {
|
|
4
|
+
declare const AssemblySelector: ({ session, onChange, selected, InputProps, extra, }: {
|
|
4
5
|
session: AbstractSessionModel;
|
|
5
6
|
onChange: (arg: string) => void;
|
|
6
7
|
selected: string | undefined;
|
|
8
|
+
InputProps?: IIP | undefined;
|
|
9
|
+
extra?: unknown;
|
|
7
10
|
}) => JSX.Element;
|
|
8
11
|
export default AssemblySelector;
|
package/ui/AssemblySelector.js
CHANGED
|
@@ -2,12 +2,16 @@
|
|
|
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
|
});
|
|
8
10
|
exports.default = void 0;
|
|
9
11
|
|
|
10
|
-
var
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
15
|
|
|
12
16
|
var _mobxReact = require("mobx-react");
|
|
13
17
|
|
|
@@ -15,35 +19,92 @@ var _configuration = require("../configuration");
|
|
|
15
19
|
|
|
16
20
|
var _core = require("@material-ui/core");
|
|
17
21
|
|
|
22
|
+
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); }
|
|
23
|
+
|
|
24
|
+
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; }
|
|
25
|
+
|
|
18
26
|
var useStyles = (0, _core.makeStyles)(function () {
|
|
19
27
|
return {
|
|
20
28
|
importFormEntry: {
|
|
21
29
|
minWidth: 180
|
|
22
30
|
}
|
|
23
31
|
};
|
|
24
|
-
});
|
|
32
|
+
}); // Hook from https://usehooks.com/useLocalStorage/
|
|
33
|
+
|
|
34
|
+
function useLocalStorage(key, initialValue) {
|
|
35
|
+
var _useState = (0, _react.useState)(function () {
|
|
36
|
+
if (typeof window === 'undefined') {
|
|
37
|
+
return initialValue;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
try {
|
|
41
|
+
var item = window.localStorage.getItem(key);
|
|
42
|
+
return item ? JSON.parse(item) : initialValue;
|
|
43
|
+
} catch (error) {
|
|
44
|
+
console.error(error);
|
|
45
|
+
return initialValue;
|
|
46
|
+
}
|
|
47
|
+
}),
|
|
48
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
49
|
+
storedValue = _useState2[0],
|
|
50
|
+
setStoredValue = _useState2[1];
|
|
51
|
+
|
|
52
|
+
var setValue = function setValue(value) {
|
|
53
|
+
try {
|
|
54
|
+
var valueToStore = value instanceof Function ? value(storedValue) : value;
|
|
55
|
+
setStoredValue(valueToStore);
|
|
56
|
+
|
|
57
|
+
if (typeof window !== 'undefined') {
|
|
58
|
+
window.localStorage.setItem(key, JSON.stringify(valueToStore));
|
|
59
|
+
}
|
|
60
|
+
} catch (error) {
|
|
61
|
+
console.error(error);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
return [storedValue, setValue];
|
|
66
|
+
}
|
|
67
|
+
|
|
25
68
|
var AssemblySelector = (0, _mobxReact.observer)(function (_ref) {
|
|
26
69
|
var session = _ref.session,
|
|
27
|
-
|
|
28
|
-
selected = _ref.selected
|
|
70
|
+
onChange = _ref.onChange,
|
|
71
|
+
selected = _ref.selected,
|
|
72
|
+
InputProps = _ref.InputProps,
|
|
73
|
+
_ref$extra = _ref.extra,
|
|
74
|
+
extra = _ref$extra === void 0 ? 0 : _ref$extra;
|
|
29
75
|
var classes = useStyles();
|
|
30
76
|
var assemblyNames = session.assemblyNames,
|
|
31
|
-
assemblyManager = session.assemblyManager;
|
|
77
|
+
assemblyManager = session.assemblyManager; // constructs a localstorage key based on host/path/config to help
|
|
78
|
+
// remember. non-config assists usage with e.g. embedded apps
|
|
79
|
+
|
|
80
|
+
var config = new URLSearchParams(window.location.search).get('config');
|
|
81
|
+
|
|
82
|
+
var _useLocalStorage = useLocalStorage("lastAssembly-".concat([window.location.host + window.location.pathname, config, extra].join('-')), selected),
|
|
83
|
+
_useLocalStorage2 = (0, _slicedToArray2.default)(_useLocalStorage, 2),
|
|
84
|
+
lastSelected = _useLocalStorage2[0],
|
|
85
|
+
setLastSelected = _useLocalStorage2[1];
|
|
86
|
+
|
|
87
|
+
var selection = assemblyNames.includes(lastSelected || '') ? lastSelected : selected;
|
|
88
|
+
(0, _react.useEffect)(function () {
|
|
89
|
+
if (selection && selection !== selected) {
|
|
90
|
+
onChange(selection);
|
|
91
|
+
}
|
|
92
|
+
}, [selection, onChange, selected]);
|
|
32
93
|
var error = assemblyNames.length ? '' : 'No configured assemblies';
|
|
33
94
|
return /*#__PURE__*/_react.default.createElement(_core.TextField, {
|
|
34
95
|
select: true,
|
|
35
96
|
label: "Assembly",
|
|
36
97
|
variant: "outlined",
|
|
37
|
-
margin: "normal",
|
|
38
98
|
helperText: error || 'Select assembly to view',
|
|
39
|
-
value: error ? '' :
|
|
99
|
+
value: error ? '' : selection,
|
|
40
100
|
inputProps: {
|
|
41
101
|
'data-testid': 'assembly-selector'
|
|
42
102
|
},
|
|
43
103
|
onChange: function onChange(event) {
|
|
44
|
-
return
|
|
104
|
+
return setLastSelected(event.target.value);
|
|
45
105
|
},
|
|
46
106
|
error: !!error,
|
|
107
|
+
InputProps: InputProps,
|
|
47
108
|
disabled: !!error,
|
|
48
109
|
className: classes.importFormEntry
|
|
49
110
|
}, assemblyNames.map(function (name) {
|
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
|
@@ -228,7 +228,7 @@ export declare function stringify({ refName, coord, oob, }: {
|
|
|
228
228
|
export declare const isElectron: boolean;
|
|
229
229
|
export declare function revcom(seqString: string): string;
|
|
230
230
|
export declare const complement: (seqString: string) => string;
|
|
231
|
-
export declare function blobToDataURL(blob: Blob): Promise<
|
|
231
|
+
export declare function blobToDataURL(blob: Blob): Promise<string>;
|
|
232
232
|
export declare const rIC: (((callback: IdleRequestCallback, options?: IdleRequestOptions | undefined) => number) & typeof requestIdleCallback) | ((cb: Function) => any);
|
|
233
233
|
export declare function measureText(str: unknown, fontSize?: number): number;
|
|
234
234
|
export declare const defaultStarts: string[];
|
|
@@ -341,3 +341,9 @@ export declare function viewBpToPx({ refName, coord, regionNumber, self, }: {
|
|
|
341
341
|
offsetPx: number;
|
|
342
342
|
} | undefined;
|
|
343
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", {
|
|
@@ -1409,4 +1411,22 @@ function getBpDisplayStr(totalBp) {
|
|
|
1409
1411
|
}
|
|
1410
1412
|
|
|
1411
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
|
+
};
|
|
1412
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 {};
|