MCPcopy Create free account
hub / github.com/MALSync/MALSync / lazyload

Function lazyload

src/utils/general.ts:763–823  ·  view source on GitHub ↗
(doc, scrollElement = '.mdl-layout__content')

Source from the content-addressed store, hash-verified

761let lazyimages: any[] = [];
762
763export function lazyload(doc, scrollElement = '.mdl-layout__content') {
764 /* lazyload.js (c) Lorenzo Giuliani
765 * MIT License (http://www.opensource.org/licenses/mit-license.html)
766 *
767 * expects a list of:
768 * `<img src="blank.gif" data-src="my_image.png" width="600" height="400" class="lazy">`
769 */
770 // eslint-disable-next-line
771 function loadImage(el, fn) {
772 if (!j.$(el).is(':visible')) return false;
773 if (j.$(el).hasClass('lazyBack')) {
774 j.$(el)
775 .css('background-image', `url(${el.getAttribute('data-src')})`)
776 .removeClass('lazyBack');
777 } else {
778 const img = new Image();
779 const src = el.getAttribute('data-src');
780 img.onload = function () {
781 if (el.parent) el.parent.replaceChild(img, el);
782 else el.src = src;
783 // eslint-disable-next-line
784 fn ? fn() : null;
785 };
786 img.src = src;
787 }
788 }
789
790 for (let i = 0; i < lazyimages.length; i++) {
791 $(lazyimages[i]).addClass('init');
792 }
793
794 lazyimages = [];
795 const query = doc.find('img.lazy.init, .lazyBack.init');
796 const processScroll = function () {
797 for (let i = 0; i < lazyimages.length; i++) {
798 if (utils.elementInViewport(lazyimages[i], 600)) {
799 // eslint-disable-next-line
800 loadImage(lazyimages[i], function() {
801 lazyimages.splice(i, i);
802 });
803 }
804 if (!$(lazyimages[i]).length) {
805 lazyimages.splice(i, i);
806 }
807 }
808 };
809 // Array.prototype.slice.call is not callable under our lovely IE8
810 for (let i = 0; i < query.length; i++) {
811 lazyimages.push(query[i]);
812 $(query[i]).removeClass('init');
813 }
814
815 processScroll();
816
817 if (!lazyloaded) {
818 lazyloaded = true;
819 doc.find(scrollElement).scroll(function () {
820 processScroll();

Callers

nothing calls this directly

Calls 1

processScrollFunction · 0.85

Tested by

no test coverage detected