UNPKG

@jbrowse/core

Version:

JBrowse 2 core libraries used by plugins

66 lines (65 loc) 2.22 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ImageBitmapType = exports.createImageBitmap = exports.createCanvas = void 0; exports.drawImageOntoCanvasContext = drawImageOntoCanvasContext; const canvas_sequencer_1 = require("canvas-sequencer"); const detect_node_1 = __importDefault(require("detect-node")); function drawImageOntoCanvasContext(imageData, context) { if (imageData.serializedCommands) { const seq = new canvas_sequencer_1.CanvasSequence(imageData.serializedCommands); seq.execute(context); } else { context.drawImage(imageData, 0, 0); } } const weHave = { realOffscreenCanvas: typeof OffscreenCanvas === 'function', node: detect_node_1.default, }; if (weHave.realOffscreenCanvas) { exports.createCanvas = (width, height) => new OffscreenCanvas(width, height); exports.createImageBitmap = window.createImageBitmap || self.createImageBitmap; exports.ImageBitmapType = window.ImageBitmap || self.ImageBitmap; } else if (weHave.node) { exports.createCanvas = (...args) => { return nodeCreateCanvas(...args); }; exports.createImageBitmap = async (canvas) => { const dataUri = canvas.toDataURL(); const img = new nodeImage(); return new Promise((resolve, reject) => { img.onload = () => { resolve(img); }; img.onerror = reject; img.src = dataUri; }); }; } else { exports.createCanvas = (width, height) => { const context = new canvas_sequencer_1.CanvasSequence(); return { width, height, getContext() { return context; }, }; }; exports.createImageBitmap = async (canvas) => { const ctx = canvas.getContext('2d'); return { height: canvas.height, width: canvas.width, serializedCommands: ctx.toJSON(), containsNoTransferables: true, }; }; exports.ImageBitmapType = String; }