@wezom/zz-load
Version:
Lazy loader based on IntersectionObserver API
53 lines (52 loc) • 1.41 kB
JavaScript
;
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, '__esModule', { value: true });
// import attrs from '../config/attrs';
const generate_sources_1 = __importDefault(require('../utils/generate-sources'));
function default_1(
picture,
img,
resource,
{ setSourcesOnlyOnLoad },
loadActions,
errorActions
) {
const sources = generate_sources_1.default(picture);
if (setSourcesOnlyOnLoad) {
const _picture = document.createElement('picture');
const _img = document.createElement('img');
_img.addEventListener('error', (event) => errorActions(event, resource));
_img.addEventListener('load', (event) => {
sources.forEach((source) => {
picture.appendChild(source);
});
picture.appendChild(img);
img.src = resource;
loadActions(event, resource);
});
sources.forEach((source) => {
_picture.appendChild(source.cloneNode());
});
_picture.appendChild(_img);
_img.src = resource;
} else {
img.addEventListener('error', (event) => errorActions(event, resource));
img.addEventListener(
'load',
(event) => {
loadActions(event, resource);
},
{ once: true }
);
sources.forEach((source) => {
picture.appendChild(source.cloneNode());
});
picture.appendChild(img);
img.src = resource;
}
}
exports.default = default_1;