Файловый менеджер - Редактировать - /usr/src/litespeed-wp-plugin/4.4/litespeed-cache/assets/js/lazyload.lib.js
Назад
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; (function (global, factory) { (typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.LazyLoad = factory(); })(this, function () { 'use strict'; var defaultSettings = { elements_selector: "img", container: document, threshold: 300, thresholds: null, data_src: "src", data_srcset: "srcset", data_sizes: "sizes", data_bg: "bg", class_loading: "litespeed-loading", class_loaded: "litespeed-loaded", class_error: "error", load_delay: 0, callback_load: null, callback_error: null, callback_set: null, callback_enter: null, callback_finish: null, to_webp: false }; var getInstanceSettings = function getInstanceSettings(customSettings) { return _extends({}, defaultSettings, customSettings); }; var dataPrefix = "data-"; var processedDataName = "was-processed"; var timeoutDataName = "ll-timeout"; var trueString = "true"; var getData = function getData(element, attribute) { return element.getAttribute(dataPrefix + attribute); }; var setData = function setData(element, attribute, value) { var attrName = dataPrefix + attribute; if (value === null) { element.removeAttribute(attrName); return; } element.setAttribute(attrName, value); }; var setWasProcessedData = function setWasProcessedData(element) { return setData(element, processedDataName, trueString); }; var getWasProcessedData = function getWasProcessedData(element) { return getData(element, processedDataName) === trueString; }; var setTimeoutData = function setTimeoutData(element, value) { return setData(element, timeoutDataName, value); }; var getTimeoutData = function getTimeoutData(element) { return getData(element, timeoutDataName); }; var purgeProcessedElements = function purgeProcessedElements(elements) { return elements.filter(function (element) { return !getWasProcessedData(element); }); }; var purgeOneElement = function purgeOneElement(elements, elementToPurge) { return elements.filter(function (element) { return element !== elementToPurge; }); }; /* Creates instance and notifies it through the window element */ var createInstance = function createInstance(classObj, options) { var event; var eventString = "LazyLoad::Initialized"; var instance = new classObj(options); try { // Works in modern browsers event = new CustomEvent(eventString, { detail: { instance: instance } }); } catch (err) { // Works in Internet Explorer (all versions) event = document.createEvent("CustomEvent"); event.initCustomEvent(eventString, false, false, { instance: instance }); } window.dispatchEvent(event); }; /* Auto initialization of one or more instances of lazyload, depending on the options passed in (plain object or an array) */ function autoInitialize(classObj, options) { if (!options) { return; } if (!options.length) { // Plain object createInstance(classObj, options); } else { // Array of objects for (var i = 0, optionsItem; optionsItem = options[i]; i += 1) { createInstance(classObj, optionsItem); } } } var replaceExtToWebp = function replaceExtToWebp(value, condition) { return condition ? value.replace(/\.(jpe?g|png)/gi, ".webp") : value; }; var detectWebp = function detectWebp() { // var webpString = "image/webp"; // var canvas = document.createElement("canvas"); // if (canvas.getContext && canvas.getContext("2d")) { // return canvas.toDataURL(webpString).indexOf('data:' + webpString) === 0; // } return false; }; var runningOnBrowser = typeof window !== "undefined"; var isBot = runningOnBrowser && !("onscroll" in window) || /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent); var supportsIntersectionObserver = runningOnBrowser && "IntersectionObserver" in window; var supportsClassList = runningOnBrowser && "classList" in document.createElement("p"); var supportsWebp = runningOnBrowser && detectWebp(); var setSourcesInChildren = function setSourcesInChildren(parentTag, attrName, dataAttrName, toWebpFlag) { for (var i = 0, childTag; childTag = parentTag.children[i]; i += 1) { if (childTag.tagName === "SOURCE") { var attrValue = getData(childTag, dataAttrName); setAttributeIfValue(childTag, attrName, attrValue, toWebpFlag); } } }; var setAttributeIfValue = function setAttributeIfValue(element, attrName, value, toWebpFlag) { if (!value) { return; } element.setAttribute(attrName, replaceExtToWebp(value, toWebpFlag)); }; var setSourcesImg = function setSourcesImg(element, settings) { var toWebpFlag = supportsWebp && settings.to_webp; var srcsetDataName = settings.data_srcset; var parent = element.parentNode; if (parent && parent.tagName === "PICTURE") { setSourcesInChildren(parent, "srcset", srcsetDataName, toWebpFlag); } var sizesDataValue = getData(element, settings.data_sizes); setAttributeIfValue(element, "sizes", sizesDataValue); var srcsetDataValue = getData(element, srcsetDataName); setAttributeIfValue(element, "srcset", srcsetDataValue, toWebpFlag); var srcDataValue = getData(element, settings.data_src); setAttributeIfValue(element, "src", srcDataValue, toWebpFlag); }; var setSourcesIframe = function setSourcesIframe(element, settings) { var srcDataValue = getData(element, settings.data_src); setAttributeIfValue(element, "src", srcDataValue); }; var setSourcesVideo = function setSourcesVideo(element, settings) { var srcDataName = settings.data_src; var srcDataValue = getData(element, srcDataName); setSourcesInChildren(element, "src", srcDataName); setAttributeIfValue(element, "src", srcDataValue); element.load(); }; var setSourcesBgImage = function setSourcesBgImage(element, settings) { var toWebpFlag = supportsWebp && settings.to_webp; var srcDataValue = getData(element, settings.data_src); var bgDataValue = getData(element, settings.data_bg); if (srcDataValue) { var setValue = replaceExtToWebp(srcDataValue, toWebpFlag); element.style.backgroundImage = 'url("' + setValue + '")'; } if (bgDataValue) { var _setValue = replaceExtToWebp(bgDataValue, toWebpFlag); element.style.backgroundImage = _setValue; } }; var setSourcesFunctions = { IMG: setSourcesImg, IFRAME: setSourcesIframe, VIDEO: setSourcesVideo }; var setSources = function setSources(element, instance) { var settings = instance._settings; var tagName = element.tagName; var setSourcesFunction = setSourcesFunctions[tagName]; if (setSourcesFunction) { setSourcesFunction(element, settings); instance._updateLoadingCount(1); instance._elements = purgeOneElement(instance._elements, element); return; } setSourcesBgImage(element, settings); }; var addClass = function addClass(element, className) { if (supportsClassList) { element.classList.add(className); return; } element.className += (element.className ? " " : "") + className; }; var removeClass = function removeClass(element, className) { if (supportsClassList) { element.classList.remove(className); return; } element.className = element.className.replace(new RegExp("(^|\\s+)" + className + "(\\s+|$)"), " ").replace(/^\s+/, "").replace(/\s+$/, ""); }; var callbackIfSet = function callbackIfSet(callback, argument) { if (callback) { callback(argument); } }; var genericLoadEventName = "load"; var mediaLoadEventName = "loadeddata"; var errorEventName = "error"; var addEventListener = function addEventListener(element, eventName, handler) { element.addEventListener(eventName, handler); }; var removeEventListener = function removeEventListener(element, eventName, handler) { element.removeEventListener(eventName, handler); }; var addEventListeners = function addEventListeners(element, loadHandler, errorHandler) { addEventListener(element, genericLoadEventName, loadHandler); addEventListener(element, mediaLoadEventName, loadHandler); addEventListener(element, errorEventName, errorHandler); }; var removeEventListeners = function removeEventListeners(element, loadHandler, errorHandler) { removeEventListener(element, genericLoadEventName, loadHandler); removeEventListener(element, mediaLoadEventName, loadHandler); removeEventListener(element, errorEventName, errorHandler); }; var eventHandler = function eventHandler(event, success, instance) { var settings = instance._settings; var className = success ? settings.class_loaded : settings.class_error; var callback = success ? settings.callback_load : settings.callback_error; var element = event.target; removeClass(element, settings.class_loading); addClass(element, className); callbackIfSet(callback, element); instance._updateLoadingCount(-1); }; var addOneShotEventListeners = function addOneShotEventListeners(element, instance) { var loadHandler = function loadHandler(event) { eventHandler(event, true, instance); removeEventListeners(element, loadHandler, errorHandler); }; var errorHandler = function errorHandler(event) { eventHandler(event, false, instance); removeEventListeners(element, loadHandler, errorHandler); }; addEventListeners(element, loadHandler, errorHandler); }; var managedTags = ["IMG", "IFRAME", "VIDEO"]; var loadAndUnobserve = function loadAndUnobserve(element, observer, instance) { revealElement(element, instance); observer.unobserve(element); }; var cancelDelayLoad = function cancelDelayLoad(element) { var timeoutId = getTimeoutData(element); if (!timeoutId) { return; // do nothing if timeout doesn't exist } clearTimeout(timeoutId); setTimeoutData(element, null); }; var delayLoad = function delayLoad(element, observer, instance) { var loadDelay = instance._settings.load_delay; var timeoutId = getTimeoutData(element); if (timeoutId) { return; // do nothing if timeout already set } timeoutId = setTimeout(function () { loadAndUnobserve(element, observer, instance); cancelDelayLoad(element); }, loadDelay); setTimeoutData(element, timeoutId); }; function revealElement(element, instance, force) { var settings = instance._settings; if (!force && getWasProcessedData(element)) { return; // element has already been processed and force wasn't true } callbackIfSet(settings.callback_enter, element); if (managedTags.indexOf(element.tagName) > -1) { addOneShotEventListeners(element, instance); addClass(element, settings.class_loading); } setSources(element, instance); setWasProcessedData(element); callbackIfSet(settings.callback_set, element); } /* entry.isIntersecting needs fallback because is null on some versions of MS Edge, and entry.intersectionRatio is not enough alone because it could be 0 on some intersecting elements */ var isIntersecting = function isIntersecting(entry) { return entry.isIntersecting || entry.intersectionRatio > 0; }; var getObserverSettings = function getObserverSettings(settings) { return { root: settings.container === document ? null : settings.container, rootMargin: settings.thresholds || settings.threshold + "px" }; }; var LazyLoad = function LazyLoad(customSettings, elements) { this._settings = getInstanceSettings(customSettings); this._setObserver(); this._loadingCount = 0; this.update(elements); }; LazyLoad.prototype = { _manageIntersection: function _manageIntersection(entry) { var observer = this._observer; var loadDelay = this._settings.load_delay; var element = entry.target; // WITHOUT LOAD DELAY if (!loadDelay) { if (isIntersecting(entry)) { loadAndUnobserve(element, observer, this); } return; } // WITH LOAD DELAY if (isIntersecting(entry)) { delayLoad(element, observer, this); } else { cancelDelayLoad(element); } }, _onIntersection: function _onIntersection(entries) { entries.forEach(this._manageIntersection.bind(this)); }, _setObserver: function _setObserver() { if (!supportsIntersectionObserver) { return; } this._observer = new IntersectionObserver(this._onIntersection.bind(this), getObserverSettings(this._settings)); }, _updateLoadingCount: function _updateLoadingCount(plusMinus) { this._loadingCount += plusMinus; if (this._elements.length === 0 && this._loadingCount === 0) { callbackIfSet(this._settings.callback_finish); } }, update: function update(elements) { var _this = this; var settings = this._settings; var nodeSet = elements || settings.container.querySelectorAll(settings.elements_selector); this._elements = purgeProcessedElements(Array.prototype.slice.call(nodeSet) // NOTE: nodeset to array for IE compatibility ); if (isBot || !this._observer) { this.loadAll(); return; } this._elements.forEach(function (element) { _this._observer.observe(element); }); }, destroy: function destroy() { var _this2 = this; if (this._observer) { this._elements.forEach(function (element) { _this2._observer.unobserve(element); }); this._observer = null; } this._elements = null; this._settings = null; }, load: function load(element, force) { revealElement(element, this, force); }, loadAll: function loadAll() { var _this3 = this; var elements = this._elements; elements.forEach(function (element) { _this3.load(element); }); } }; /* Automatic instances creation if required (useful for async script loading) */ if (runningOnBrowser) { autoInitialize(LazyLoad, window.lazyLoadOptions); } return LazyLoad; });
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка