UNPKG

@dark-engine/platform-desktop

Version:

Dark renderer to desktop platforms like Windows, Linux, macOS via Nodegui and Qt

46 lines (45 loc) 1.26 kB
import { QLabel, QMovie } from '@nodegui/nodegui'; import { component } from '@dark-engine/core'; import fetch from 'node-fetch'; import { qAnimatedImage } from '../factory'; import { detectisValidURL } from '../utils'; const AnimatedImage = component(props => qAnimatedImage(props), { displayName: 'AnimatedImage', }); class QDarkAnimatedImage extends QLabel { constructor() { super(); this.setProperty('scaledContents', true); } async setSrc(value) { if (!value) return; try { this.setMovie(await createMoviewFromPath(value)); this.movie().start(); } catch (error) { console.warn(error); } } setBuffer(buffer) { this.setMovie(createMovieFromBuffer(buffer)); this.movie().start(); } } async function createMoviewFromPath(src) { const movie = new QMovie(); if (detectisValidURL(src)) { const response = await fetch(src); const buffer = Buffer.from(await response.arrayBuffer()); movie.loadFromData(buffer); } else { movie.setFileName(src); } return movie; } function createMovieFromBuffer(buffer) { const movie = new QMovie(); movie.loadFromData(buffer); return movie; } export { AnimatedImage, QDarkAnimatedImage }; //# sourceMappingURL=animated-image.js.map