scrivito
Version:
Scrivito is a professional, yet easy to use SaaS Enterprise Content Management Service, built for digital agencies and medium to large businesses. It is completely maintenance-free, cost-effective, and has unprecedented performance and security.
41 lines (35 loc) • 983 B
text/typescript
// @rewire
export function decodeOrLoadImg(imageUrl: string): Promise<HTMLImageElement> {
const img = new Image();
return hasDecodeImg(img) ? decodeImg(img, imageUrl) : loadImg(img, imageUrl);
}
export function hasDecodeImg(img: HTMLImageElement): boolean {
return !!img.decode;
}
// For test purpose only
export async function decodeImg(
img: HTMLImageElement,
imageUrl: string
): Promise<HTMLImageElement> {
if (!hasDecodeImg(img)) {
throw new Error('Browser does not support decode!');
}
img.src = imageUrl;
await imgDecode(img)();
return img;
}
// For test purpose only
export function imgDecode(img: HTMLImageElement) {
return img.decode && img.decode.bind(img);
}
// For test purpose only
export function loadImg(
img: HTMLImageElement,
imageUrl: string
): Promise<HTMLImageElement> {
return new Promise((resolve, reject) => {
img.onload = () => resolve(img);
img.onerror = (event) => reject(event);
img.src = imageUrl;
});
}