Loading js/lazy.js +38 −9 Original line number Diff line number Diff line (function () { (function (Drupal, drupalSettings) { 'use strict'; function extend(obj, src) { Drupal.behaviors.lazy = { attach: function attach(context, settings) { var lazysizes = settings.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); 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'), ''); } } var lazysizes = drupalSettings.lazy.lazysizes || {}; window.lazySizesConfig = window.lazySizesConfig || {}; window.lazySizesConfig = extend(window.lazySizesConfig, lazysizes); })(); })(Drupal, drupalSettings); lazy.libraries.yml +1 −17 Original line number Diff line number Diff line Loading @@ -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 Loading
js/lazy.js +38 −9 Original line number Diff line number Diff line (function () { (function (Drupal, drupalSettings) { 'use strict'; function extend(obj, src) { Drupal.behaviors.lazy = { attach: function attach(context, settings) { var lazysizes = settings.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); 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'), ''); } } var lazysizes = drupalSettings.lazy.lazysizes || {}; window.lazySizesConfig = window.lazySizesConfig || {}; window.lazySizesConfig = extend(window.lazySizesConfig, lazysizes); })(); })(Drupal, drupalSettings);
lazy.libraries.yml +1 −17 Original line number Diff line number Diff line Loading @@ -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