Skip to content
Snippets Groups Projects
Commit 50259504 authored by Osman Gormus's avatar Osman Gormus
Browse files

Prioritize native lazy-loading, load lazysizes like polyfill

parent 01788e16
Branches
Tags
No related merge requests found
(function () {
(function (Drupal, drupalSettings) {
'use strict';
function extend(obj, src) {
Object.keys(src).forEach(function (key) { obj[key] = src[key]; });
return obj;
}
Drupal.behaviors.lazy = {
attach: function attach(context, settings) {
var lazysizes = settings.lazy.lazysizes || {};
var lazysizes = drupalSettings.lazy.lazysizes || {};
if ('loading' in HTMLImageElement.prototype) {
var images = document.querySelectorAll('img[loading="lazy"]');
images.forEach(img => {
img.src = img.getAttribute(lazysizes.srcAttr);
this.removeClass(img, lazysizes.lazyClass);
this.addClass(img, lazysizes.loadedClass);
});
}
else {
window.lazySizesConfig = window.lazySizesConfig || {};
window.lazySizesConfig = this.extend(window.lazySizesConfig, lazysizes);
window.lazySizesConfig = window.lazySizesConfig || {};
window.lazySizesConfig = extend(window.lazySizesConfig, lazysizes);
var script = document.createElement('script'),
scripts = document.getElementsByTagName('script')[0];
script.src = Drupal.url('libraries/lazysizes/lazysizes.min.js');
scripts.parentNode.insertBefore(script, scripts);
}
},
extend: function extend(obj, src) {
Object.keys(src).forEach(function (key) { obj[key] = src[key]; });
return obj;
},
hasClass: function hasClass(el, className) {
return el.classList ? el.classList.contains(className) : new RegExp('\\b'+ className+'\\b').test(el.className);
},
addClass: function addClass(el, className) {
if (el.classList) el.classList.add(className);
else if (!hasClass(el, className)) el.className += ' ' + className;
},
removeClass: function removeClass(el, className) {
if (el.classList) el.classList.remove(className);
else el.className = el.className.replace(new RegExp('\\b'+ className+'\\b', 'g'), '');
}
}
})();
})(Drupal, drupalSettings);
......@@ -3,24 +3,8 @@ lazy:
version: VERSION
js:
js/lazy.js: { }
dependencies:
- core/drupalSettings
lazysizes:
header: true
remote: https://github.com/aFarkas/lazysizes
version: 5.1.1
license:
name: MIT
url: https://github.com/aFarkas/lazysizes/blob/master/LICENSE
js:
/libraries/lazysizes/plugins/respimg/ls.respimg.min.js: { minified: true }
/libraries/lazysizes/plugins/parent-fit/ls.parent-fit.min.js: { minified: true }
/libraries/lazysizes/plugins/object-fit/ls.object-fit.min.js: { minified: true }
/libraries/lazysizes/plugins/blur-up/ls.blur-up.min.js: { minified: true }
/libraries/lazysizes/lazysizes.min.js: { minified: true }
css:
theme:
css/lazysizes.css: { }
dependencies:
- lazy/lazy
- core/drupal
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment