@jbrowse/core
Version:
JBrowse 2 core libraries used by plugins
34 lines (33 loc) • 1.28 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { useEffect, useRef, useState } from 'react';
import { drawImageOntoCanvasContext } from "../util/offscreenCanvasPonyfill.js";
function PrerenderedCanvas(props) {
const { width, height, highResolutionScaling = 1, style = {}, imageData, blockKey, showSoftClip, } = props;
const [done, setDone] = useState(false);
const featureCanvas = useRef(null);
useEffect(() => {
if (!imageData) {
return;
}
const canvas = featureCanvas.current;
if (!canvas) {
return;
}
const context = canvas.getContext('2d');
if (!context) {
return;
}
context.clearRect(0, 0, canvas.width, canvas.height);
drawImageOntoCanvasContext(imageData, context);
setDone(true);
}, [imageData]);
return (_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 } }));
}
export default PrerenderedCanvas;