aboutsummaryrefslogtreecommitdiffstats
path: root/src/js/utils/load-image.js
blob: 8acd2496146c0d4e2943f0542fb9788db22e10dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// ==========================================================================
// Load image avoiding xhr/fetch CORS issues
// Server status can't be obtained this way unfortunately, so this uses "naturalWidth" to determine if the image has loaded
// By default it checks if it is at least 1px, but you can add a second argument to change this
// ==========================================================================

export default function loadImage(src, minWidth = 1) {
    return new Promise((resolve, reject) => {
        const image = new Image();

        const handler = () => {
            delete image.onload;
            delete image.onerror;
            (image.naturalWidth >= minWidth ? resolve : reject)(image);
        };

        Object.assign(image, { onload: handler, onerror: handler, src });
    });
}