PageSourceSearch

https://touristshop.by/catalog/view/theme/oct_remarket/js/lozad.js

js touristshop.by collected 2026-10-08 14:55:05 UTC 4,563 bytes, 169 lines download raw bytes

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.