35 lines
911 B
JavaScript
35 lines
911 B
JavaScript
|
import { blob } from './fetch.mjs';
|
||
|
import { rewriteUrl } from './cors.mjs';
|
||
|
|
||
|
// ****************************** load images *********************************
|
||
|
// load an image from a blob or url
|
||
|
const loadImg = (imgData, cors = false) => new Promise((resolve) => {
|
||
|
const img = new Image();
|
||
|
img.onload = (e) => {
|
||
|
resolve(e.target);
|
||
|
};
|
||
|
if (imgData instanceof Blob) {
|
||
|
img.src = window.URL.createObjectURL(imgData);
|
||
|
} else {
|
||
|
let url = imgData;
|
||
|
if (cors) url = rewriteUrl(imgData);
|
||
|
img.src = url;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// preload an image
|
||
|
// the goal is to get it in the browser's cache so it is available more quickly when the browser needs it
|
||
|
// a list of cached icons is used to avoid hitting the cache multiple times
|
||
|
const cachedImages = [];
|
||
|
const preloadImg = (src) => {
|
||
|
if (cachedImages.includes(src)) return false;
|
||
|
blob(src);
|
||
|
// cachedImages.push(src);
|
||
|
return true;
|
||
|
};
|
||
|
|
||
|
export {
|
||
|
loadImg,
|
||
|
preloadImg,
|
||
|
};
|