@wezom/zz-load
Version:
Lazy loader based on IntersectionObserver API
43 lines (42 loc) • 1.24 kB
JavaScript
// import attrs from '../config/attrs';
import generateSources from '../utils/generate-sources';
export default function (picture, img, resource, _a, loadActions, errorActions) {
var setSourcesOnlyOnLoad = _a.setSourcesOnlyOnLoad;
var sources = generateSources(picture);
if (setSourcesOnlyOnLoad) {
var _picture_1 = document.createElement('picture');
var _img = document.createElement('img');
_img.addEventListener('error', function (event) {
return errorActions(event, resource);
});
_img.addEventListener('load', function (event) {
sources.forEach(function (source) {
picture.appendChild(source);
});
picture.appendChild(img);
img.src = resource;
loadActions(event, resource);
});
sources.forEach(function (source) {
_picture_1.appendChild(source.cloneNode());
});
_picture_1.appendChild(_img);
_img.src = resource;
} else {
img.addEventListener('error', function (event) {
return errorActions(event, resource);
});
img.addEventListener(
'load',
function (event) {
loadActions(event, resource);
},
{ once: true }
);
sources.forEach(function (source) {
picture.appendChild(source.cloneNode());
});
picture.appendChild(img);
img.src = resource;
}
}