1/* eslint-disable */ 2(function (exports,ui_vue) { 3 'use strict'; 4 5 /** 6 * Image Lazy Load Vue directive 7 * 8 * @package bitrix 9 * @subpackage ui 10 * @copyright 2001-2019 Bitrix 11 */ 12 var WATCH = 'bx-lazyload-watch'; 13 var LOADING = 'bx-lazyload-loading'; 14 var SUCCESS = 'bx-lazyload-success'; 15 var ERROR = 'bx-lazyload-error'; 16 var HIDDEN = 'bx-lazyload-hidden'; 17 var BLANK_IMAGE = "data:image/svg+xml,%3Csvg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'%3E%3C/svg%3E"; 18 var lazyloadObserver = null; 19 var lazyloadLoadImage = function lazyloadLoadImage(currentImage, callback) { 20 var SUCCESS_CLASS = currentImage.dataset.lazyloadSuccessClass ? currentImage.dataset.lazyloadSuccessClass.split(" ") : []; 21 delete currentImage.dataset.lazyloadSuccessClass; 22 SUCCESS_CLASS = [SUCCESS].concat(babelHelpers.toConsumableArray(SUCCESS_CLASS)); 23 var ERROR_CLASS = currentImage.dataset.lazyloadErrorClass ? currentImage.dataset.lazyloadErrorClass.split(" ") : []; 24 delete currentImage.dataset.lazyloadErrorClass; 25 ERROR_CLASS = [ERROR].concat(babelHelpers.toConsumableArray(ERROR_CLASS)); 26 currentImage.classList.add(LOADING); 27 var newImage = new Image(); 28 newImage.src = currentImage.dataset.lazyloadSrc; 29 if (!currentImage.dataset.lazyloadHiddenSrc) { 30 currentImage.dataset.lazyloadHiddenSrc = currentImage.src; 31 } 32 newImage.onload = function () { 33 var _currentImage$classLi; 34 if (currentImage.classList.contains(HIDDEN)) { 35 return false; 36 } 37 if (currentImage.dataset.lazyloadSrc) { 38 currentImage.src = currentImage.dataset.lazyloadSrc; 39 } 40 currentImage.classList.remove(LOADING); 41 (_currentImage$classLi = currentImage.classList).add.apply(_currentImage$classLi, babelHelpers.toConsumableArray(SUCCESS_CLASS)); 42 if (typeof currentImage.lazyloadCallback === 'function') { 43 currentImage.lazyloadCallback({ 44 element: currentImage, 45 state: 'success' 46 }); 47 delete currentImage.lazyloadCallback; 48 } 49 }; 50 newImage.onerror = function () { 51 var _currentImage$classLi2; 52 if (currentImage.classList.contains(HIDDEN)) { 53 return false; 54 } 55 currentImage.classList.remove(LOADING); 56 (_currentImage$classLi2 = currentImage.classList).add.apply(_currentImage$classLi2, babelHelpers.toConsumableArray(ERROR_CLASS)); 57 currentImage.title = ''; 58 currentImage.alt = ''; 59 if (typeof currentImage.lazyloadCallback === 'function') { 60 currentImage.lazyloadCallback({ 61 element: currentImage, 62 state: 'error' 63 }); 64 delete currentImage.lazyloadCallback; 65 } else { 66 currentImage.src = BLANK_IMAGE; 67 } 68 }; 69 if (typeof currentImage.dataset.lazyloadDontHide !== 'undefined') { 70 currentImage.classList.remove(WATCH); 71 delete currentImage.dataset.lazyloadDontHide; 72 if (lazyloadObserver) { 73 lazyloadObserver.unobserve(currentImage); 74 } 75 } 76 }; 77 if (typeof window.IntersectionObserver !== 'undefined') { 78 lazyloadObserver = new IntersectionObserver(function (entries, observer) {
79 entries.forEach(function (entry) { 80 var currentImage = entry.target; 81 if (currentImage.classList.contains(ERROR)) { 82 return true; 83 } 84 if (entry.isIntersecting) { 85 if (currentImage.classList.contains(HIDDEN)) { 86 if (currentImage.dataset.lazyloadSrc) { 87 currentImage.src = currentImage.dataset.lazyloadSrc; 88 } 89 currentImage.classList.remove(HIDDEN); 90 } else if (currentImage.classList.contains(WATCH)) { 91 return true; 92 } else { 93 currentImage.classList.add(WATCH); 94 lazyloadLoadImage(currentImage); 95 } 96 } else { 97 if (currentImage.classList.contains(HIDDEN) || !currentImage.classList.contains(WATCH)) { 98 return true; 99 } 100 if (currentImage.dataset.lazyloadHiddenSrc) { 101 currentImage.src = currentImage.dataset.lazyloadHiddenSrc; 102 } 103 currentImage.classList.remove(LOADING); 104 currentImage.classList.add(HIDDEN); 105 } 106 }); 107 }, { 108 threshold: [0, 1] 109 }); 110 } 111 ui_vue.BitrixVue.directive('bx-lazyload', { 112 bind: function bind(element, bindings) { 113 if (babelHelpers["typeof"](bindings.value) === 'object' && typeof bindings.value.callback === 'function') { 114 element.lazyloadCallback = bindings.value.callback; 115 } 116 if (!element.src || element.src === location.href.replace(location.hash, '')) { 117 element.src = BLANK_IMAGE; 118 } 119 if (lazyloadObserver) { 120 lazyloadObserver.observe(element); 121 } else { 122 lazyloadLoadImage(element); 123 } 124 }, 125 componentUpdated: function componentUpdated(element) { 126 if (!element.classList.contains(SUCCESS) && !element.classList.contains(ERROR) && !element.classList.contains(WATCH) && !element.classList.contains(LOADING)) { 127 element.classList.add(LOADING); 128 } else if ((element.classList.contains(SUCCESS) || element.classList.contains(ERROR)) && element.dataset.lazyloadSrc && element.dataset.lazyloadSrc !== element.src) { 129 if (!element.dataset.lazyloadSrc.startsWith('http')) { 130 var url = document.createElement('a'); 131 url.href = element.dataset.lazyloadSrc; 132 if (url.href === element.src) { 133 return; 134 } 135 } 136 lazyloadLoadImage(element); 137 } 138 }, 139 unbind: function unbind(element) { 140 if (lazyloadObserver) { 141 lazyloadObserver.unobserve(element); 142 } 143 } 144 }); 145 146}((this.window = this.window || {}),BX)); 147//# sourceMappingURL=lazyload.bundle.js.map
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.