lazy-widgets
Version:
Typescript retained mode GUI for the HTML canvas API
47 lines • 1.9 kB
JavaScript
import { AsyncMedia } from './AsyncMedia.js';
import { BackingMediaSourceType } from './BackingMediaSourceType.js';
export function getBackingMediaSourceType(media) {
if (media instanceof Element) {
if (media.namespaceURI === 'http://www.w3.org/1999/xhtml') {
switch (media.tagName) {
case 'IMG': return BackingMediaSourceType.HTMLImageElement;
case 'VIDEO': return BackingMediaSourceType.HTMLVideoElement;
case 'CANVAS': return BackingMediaSourceType.Immediate;
}
}
else if (media.namespaceURI === 'http://www.w3.org/2000/svg') {
switch (media.tagName) {
case 'IMAGE': return BackingMediaSourceType.SVGImageElement;
}
}
}
else if (media instanceof AsyncMedia) {
return BackingMediaSourceType.AsyncMedia;
}
else if (media instanceof VideoFrame) {
return BackingMediaSourceType.VideoFrame;
}
else if (media instanceof ImageBitmap) {
return BackingMediaSourceType.ImageBitmap;
}
return BackingMediaSourceType.Immediate;
}
const VIDEO_REGEX = /^.*\.(webm|og[gv]|m(p4|4v|ov)|avi|qt)$/i;
export function urlToBackingMediaSource(url) {
if (VIDEO_REGEX.test(url)) {
const videoElem = document.createElement('video');
videoElem.crossOrigin = 'anonymous';
videoElem.src = url;
// So that video poster shows. If you're passing your own video element
// then this won't be automatically set
videoElem.preload = 'auto';
return [videoElem, BackingMediaSourceType.HTMLVideoElement];
}
else {
const imgElem = document.createElement('img');
imgElem.crossOrigin = 'anonymous';
imgElem.src = url;
return [imgElem, BackingMediaSourceType.HTMLImageElement];
}
}
//# sourceMappingURL=BackingMediaSource.js.map