@onesy/utils
Version:
55 lines (54 loc) • 2.04 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const isEnvironment_1 = __importDefault(require("./isEnvironment"));
const allImagesLoaded = () => {
if ((0, isEnvironment_1.default)('browser')) {
return new Promise(resolve => {
try {
const images = window.document.getElementsByTagName('img');
const imagesTotal = images.length;
let loaded = 0;
const pending = [];
if (!imagesTotal)
return resolve(loaded);
const check = () => {
if (imagesTotal === loaded &&
!pending.length)
return resolve(loaded);
pending.forEach((image, index) => {
if (image.complete && image.naturalWidth !== 0)
pending.splice(index, 1);
});
setTimeout(check, 40);
};
const onLoad = (event) => {
loaded += 1;
if (!event.target.complete ||
event.target.naturalWidth === 0)
pending.push(event.target);
check();
};
const onError = () => {
loaded += 1;
};
for (const image of images) {
if (image.complete)
onLoad({ target: image });
else {
image.onload = onLoad;
image.onerror = onError;
}
}
}
catch (error) {
console.error(`Images loaded: ${error}`);
resolve(false);
}
});
}
return false;
};
exports.default = allImagesLoaded;
;