vendor: 4,563 bytes, lines 1-169
1/*! lozad.js - v1.14.0 - 2019-10-31 2* https://github.com/ApoorvSaxena/lozad.js 3* Copyright (c) 2019 Apoorv Saxena; Licensed MIT */ 4 5 6(function (global, factory) { 7 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : 8 typeof define === 'function' && define.amd ? define(factory) : 9 (global.lozad = factory()); 10}(this, (function () { 'use strict'; 11 12 /** 13 * Detect IE browser 14 * @const {boolean} 15 * @private 16 */ 17 var isIE = typeof document !== 'undefined' && document.documentMode; 18 19 var defaultConfig = { 20 rootMargin: '0px', 21 threshold: 0, 22 load: function load(element) { 23 if (element.nodeName.toLowerCase() === 'picture') { 24 var img = document.createElement('img'); 25 if (isIE && element.getAttribute('data-iesrc')) { 26 img.src = element.getAttribute('data-iesrc'); 27 } 28 29 if (element.getAttribute('data-alt')) { 30 img.alt = element.getAttribute('data-alt'); 31 } 32 33 element.append(img); 34 } 35 36 if (element.nodeName.toLowerCase() === 'video' && !element.getAttribute('data-src')) { 37 if (element.children) { 38 var childs = element.children; 39 var childSrc = void 0; 40 for (var i = 0; i <= childs.length - 1; i++) { 41 childSrc = childs[i].getAttribute('data-src'); 42 if (childSrc) { 43 childs[i].src = childSrc; 44 } 45 } 46 47 element.load(); 48 } 49 } 50 51 if (element.getAttribute('data-poster')) { 52 element.poster = element.getAttribute('data-poster'); 53 } 54 55 if (element.getAttribute('data-src')) { 56 element.src = element.getAttribute('data-src'); 57 } 58 59 if (element.getAttribute('data-srcset')) { 60 element.setAttribute('srcset', element.getAttribute('data-srcset')); 61 } 62 63 if (element.getAttribute('data-toggle-class')) { 64 element.classList.toggle(element.getAttribute('data-toggle-class')); 65 } 66 }, 67 loaded: function loaded() {} 68 }; 69 70 function markAsLoaded(element) { 71 element.setAttribute('data-loaded', true); 72 } 73 74 var isLoaded = function isLoaded(element) { 75 return element.getAttribute('data-loaded') === 'true'; 76 }; 77 78 var onIntersection = function onIntersection(load, loaded) { 79 return function (entries, observer) { 80 entries.forEach(function (entry) { 81 if (entry.intersectionRatio > 0 || entry.isIntersecting) { 82 observer.unobserve(entry.target); 83 84 if (!isLoaded(entry.target)) { 85 load(entry.target); 86 markAsLoaded(entry.target); 87 loaded(entry.target); 88 } 89 } 90 }); 91 }; 92 }; 93 94 var getElements = function getElements(selector) { 95 var root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document; 96 97 if (selector instanceof Element) { 98 return [selector]; 99 } 100 101 if (selector instanceof NodeList) { 102 return selector; 103 } 104 105 return root.querySelectorAll(selector); 106 }; 107 108 function lozad () { 109 var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '.lozad'; 110 var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 111 112 var _Object$assign = Object.assign({}, defaultConfig, options), 113 root = _Object$assign.root, 114 rootMargin = _Object$assign.rootMargin, 115 threshold = _Object$assign.threshold, 116 load = _Object$assign.load, 117 loaded = _Object$assign.loaded; 118 119 var observer = void 0; 120 121 if (typeof window !== 'undefined' && window.IntersectionObserver) { 122 observer = new IntersectionObserver(onIntersection(load, loaded), { 123 root: root, 124 rootMargin: rootMargin, 125 threshold: threshold 126 }); 127 } 128 129 return { 130 observe: function observe() { 131 var elements = getElements(selector, root); 132 133 for (var i = 0; i < elements.length; i++) { 134 if (isLoaded(elements[i])) { 135 continue; 136 } 137 138 if (observer) { 139 observer.observe(elements[i]); 140 continue; 141 } 142 143 load(elements[i]); 144 markAsLoaded(elements[i]); 145 loaded(elements[i]); 146 } 147 }, 148 triggerLoad: function triggerLoad(element) { 149 if (isLoaded(element)) { 150 return; 151 } 152 153 load(element); 154 markAsLoaded(element); 155 loaded(element); 156 }, 157 158 observer: observer 159 }; 160 } 161 162 return lozad; 163 164}))); 165 166$(document).ready(function() { 167 //add lazy loading 168 lozad('.oct-lazy').observe(); 169});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.