@jbrowse/core
Version:
JBrowse 2 core libraries used by plugins
35 lines (34 loc) • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = require("react");
const offscreenCanvasPonyfill_1 = require("../util/offscreenCanvasPonyfill");
function PrerenderedCanvas(props) {
const { width, height, highResolutionScaling = 1, style = {}, imageData, blockKey, showSoftClip, } = props;
const [done, setDone] = (0, react_1.useState)(false);
const featureCanvas = (0, react_1.useRef)(null);
(0, react_1.useEffect)(() => {
if (!imageData) {
return;
}
const canvas = featureCanvas.current;
if (!canvas) {
return;
}
const context = canvas.getContext('2d');
if (!context) {
return;
}
(0, offscreenCanvasPonyfill_1.drawImageOntoCanvasContext)(imageData, context);
setDone(true);
}, [imageData]);
return ((0, jsx_runtime_1.jsx)("canvas", { "data-testid": [
'prerendered_canvas',
showSoftClip ? 'softclipped' : '',
blockKey,
done ? 'done' : '',
]
.filter(f => !!f)
.join('_'), ref: featureCanvas, width: width * highResolutionScaling, height: height * highResolutionScaling, style: { width, height, ...style } }));
}
exports.default = PrerenderedCanvas;