Вход Регистрация
Файл: contao-3.5.8/assets/respimage/1.4.0/respimage.js
Строк: 602
<?php
/*! respimage - v1.4.0 - 2015-04-17
 Licensed MIT */
!function(windowdocumentundefined) {
    
"use strict";
    function 
trim(str) {
        return 
str.trim str.trim() : str.replace(/^s+|s+$/g"");
    }
    function 
updateMetrics() {
        var 
dprM;
        
isVwDirty = !1DPR window.devicePixelRatiocssCache = {}, sizeLengthCache = {}, 
        
dprM = (DPR || 1) * cfg.xQuantcfg.uT || (cfg.maxX Math.max(1.3cfg.maxX), dprM Math.min(dprMcfg.maxX), 
        
ri.DPR dprM), units.width Math.max(window.innerWidth || 0docElem.clientWidth), 
        
units.height Math.max(window.innerHeight || 0docElem.clientHeight), units.vw units.width 100
        
units.vh units.height 100units.em ri.getEmValue(), units.rem units.em
        
lazyFactor cfg.lazyFactor 2lazyFactor lazyFactor dprM lazyFactorsubstractCurRes .2 .1 dprM
        
lowTreshHold .5 .2 dprMpartialLowTreshHold .5 .25 dprMtMemory dprM 1.3
        (
isLandscape units.width units.height) || (lazyFactor *= .9), supportAbort && (lazyFactor *= .9), 
        
evalID = [ units.widthunits.heightdprM ].join("-");
    }
    function 
chooseLowRes(lowResdiffdpr) {
        var 
add diff Math.pow(lowRes .31.9);
        return 
isLandscape || (add /= 1.3), lowRes += addlowRes dpr;
    }
    function 
applyBestCandidate(img) {
        var 
srcSetCandidatesmatchingSet ri.getSet(img), evaluated = !1;
        
"pending" != matchingSet && (evaluated evalIDmatchingSet && (srcSetCandidates ri.setRes(matchingSet), 
        
evaluated ri.applySetCandidate(srcSetCandidatesimg))), img[ri.ns].evaled evaluated;
    }
    function 
ascendingSort(ab) {
        return 
a.res b.res;
    }
    function 
setSrcToCur(imgsrcset) {
        var 
candidate;
        return !
set && src && (set img[ri.ns].setsset set && set[set.length 1]), 
        
candidate getCandidateForSrc(srcset), candidate && (src ri.makeUrl(src), img[ri.ns].curSrc src
        
img[ri.ns].curCan candidatecandidate.res || setResolution(candidatecandidate.set.sizes)), 
        
candidate;
    }
    function 
getCandidateForSrc(srcset) {
        var 
icandidatecandidates;
        if (
src && set) for (candidates ri.parseSet(set), src ri.makeUrl(src), 0candidates.lengthi++) if (src == ri.makeUrl(candidates[i].url)) {
            
candidate candidates[i];
            break;
        }
        return 
candidate;
    }
    function 
getAllSourceElements(picturecandidates) {
        var 
ilensourcesrcsetsources picture.getElementsByTagName("source");
        for (
0len sources.lengthlen ii++) source sources[i], source[ri.ns] = !0
        
srcset source.getAttribute("srcset"), srcset && candidates.push({
            
srcsetsrcset,
            
mediasource.getAttribute("media"),
            
typesource.getAttribute("type"),
            
sizessource.getAttribute("sizes")
        });
    }
    
document.createElement("picture");
    var 
lowTreshHoldpartialLowTreshHoldisLandscapelazyFactortMemorysubstractCurReseminpxalwaysCheckWDescriptorresizeThrottleevalIDri = {}, noop = function() {}, image document.createElement("img"), getImgAttr image.getAttributesetImgAttr image.setAttributeremoveImgAttr image.removeAttributedocElem document.documentElementtypes = {}, cfg = {
        
xQuant1,
        
lazyFactor.4,
        
maxX2
    
}, srcAttr "data-risrc"srcsetAttr srcAttr "set"reflowBug "webkitBackfaceVisibility" in docElem.styleua navigator.userAgentsupportAbort = /rident/.test(ua) || /ecko/.test(ua) && ua.match(/rv:(d+)/) && RegExp.$35curSrcProp "currentSrc"regWDesc = /s++?d+(ed+)?w/, regSize = /((?:([^)]+)(?:s*ands*|s*ors*|s*nots*)?)+)?s*(.+)/, regDescriptor = /^([+eEd.]+)(w|x)$/, regHDesc = /s*d+hs*/, setOptions window.respimgCFGbaseStyle = ("https:" == location.protocol
    
"position:absolute;left:0;visibility:hidden;display:block;padding:0;border:none;font-size:1em;width:1em;overflow:hidden;clip:rect(0px, 0px, 0px, 0px)"), fsCss "font-size:100%!important;"isVwDirty = !0cssCache = {}, sizeLengthCache = {}, DPR window.devicePixelRatiounits = {
        
px1,
        
"in"96
    
}, anchor document.createElement("a"), alreadyRun = !1on = function(objevtfncapture) {
        
obj.addEventListener obj.addEventListener(evtfncapture || !1) : obj.attachEvent && obj.attachEvent("on" evtfn);
    }, 
memoize = function(fn) {
        var 
cache = {};
        return function(
input) {
            return 
input in cache || (cache[input] = fn(input)), cache[input];
        };
    }, 
evalCSS = function() {
        var 
regLength = /^([d.]+)(em|vw|px)$/, replace = function() {
            for (var 
args argumentsindex 0string args[0]; ++index in args; ) string string.replace(args[index], args[++index]);
            return 
string;
        }, 
buidlStr memoize(function(css) {
            return 
"return " replace((css || "").toLowerCase(), /bandb/g"&&", /,/g"||", /min-([a-z-s]+):/g"e.$1>=", /max-([a-z-s]+):/g"e.$1<=", /calc([^)]+)/g"($1)", /(d+[.]*[d]*)([a-z]+)/g"($1 * e.$2)", /^(?!(e.[a-z]|[0-9.&=|><+-*()/])).*/gi"");
        });
        return function(
csslength) {
            var 
parsedLength;
            if (!(
css in cssCache)) if (cssCache[css] = !1length && (parsedLength css.match(regLength))) cssCache[css] = parsedLength[1] * units[parsedLength[2]]; else try {
                
cssCache[css] = new Function("e"buidlStr(css))(units);
            } catch (
e) {}
            return 
cssCache[css];
        };
    }(), 
setResolution = function(candidatesizesattr) {
        return 
candidate.? (candidate.cWidth ri.calcListLength(sizesattr || "100vw"), 
        
candidate.res candidate.candidate.cWidth) : candidate.res candidate.xcandidate;
    }, 
respimage = function(opt) {
        var 
elementsiplenoptions opt || {};
        if (
options.elements && == options.elements.nodeType && ("IMG" == options.elements.nodeName.toUpperCase() ? options.elements = [ options.elements ] : (options.context options.elements
        
options.elements null)), options.reparse && !options.reevaluate && (options.reevaluate = !0
        
window.console && console.warn && console.warn("reparse was renamed to reevaluate!")), 
        
elements options.elements || ri.qsa(options.context || documentoptions.reevaluate || options.reselect ri.sel ri.selShort), 
        
plen elements.length) {
            for (
ri.setupRun(options), alreadyRun = !00plen ii++) ri.fillImg(elements[i], options);
            
ri.teardownRun(options);
        }
    }, 
parseDescriptor memoize(function(descriptor) {
        var 
descriptorObj = [ 1"x" ], parsedDescriptor trim(descriptor || "");
        return 
parsedDescriptor && (parsedDescriptor parsedDescriptor.replace(regHDesc""), 
        
descriptorObj parsedDescriptor.match(regDescriptor) ? [ RegExp.$1RegExp.$] : !1), 
        
descriptorObj;
    });
    
curSrcProp in image || (curSrcProp "src"), types["image/jpeg"] = !0types["image/gif"] = !0
    
types["image/png"] = !0types["image/svg+xml"] = document.implementation.hasFeature("http://wwwindow.w3.org/TR/SVG11/feature#Image""1.1"), 
    
ri.ns = ("ri" + new Date().getTime()).substr(09), ri.supSrcset "srcset" in image
    
ri.supSizes "sizes" in imageri.selShort "picture>img,img[srcset]"ri.sel ri.selShort
    
ri.cfg cfgri.supSrcset && (ri.sel += ",img[" srcsetAttr "]"), ri.DPR DPR || 1
    
ri.unitsri.types typesalwaysCheckWDescriptor ri.supSrcset && !ri.supSizes
    
ri.setSize noopri.makeUrl memoize(function(src) {
        return 
anchor.href srcanchor.href;
    }), 
ri.qsa = function(contextsel) {
        return 
context.querySelectorAll(sel);
    }, 
ri.matchesMedia = function() {
        return 
ri.matchesMedia window.matchMedia && (matchMedia("(min-width: 0.1em)") || {}).matches ? function(media) {
            return !
media || matchMedia(media).matches;
        } : 
ri.mMQri.matchesMedia.apply(thisarguments);
    }, 
ri.mMQ = function(media) {
        return 
media evalCSS(media) : !0;
    }, 
ri.calcLength = function(sourceSizeValue) {
        var 
value evalCSS(sourceSizeValue, !0) || !1;
        return 
value && (value = !1), value;
    }, 
ri.supportsType = function(type) {
        return 
type types[type] : !0;
    }, 
ri.parseSize memoize(function(sourceSizeStr) {
        var 
match = (sourceSizeStr || "").match(regSize);
        return {
            
mediamatch && match[1],
            
lengthmatch && match[2]
        };
    }), 
ri.parseSet = function(set) {
        if (!
set.cands) {
            var 
posurldescriptorlastdescposcansrcset set.srcset;
            for (
set.cands = []; srcset; ) srcset srcset.replace(/^s+/g""), pos srcset.search(/s/g), 
            
descriptor null, -!= pos ? (url srcset.slice(0pos), last url.charAt(url.length 1), 
            
"," != last && url || (url url.replace(/,+$/, ""), descriptor ""), srcset srcset.slice(pos 1), 
            
null == descriptor && (descpos srcset.indexOf(","), -!= descpos ? (descriptor srcset.slice(0descpos), 
            
srcset srcset.slice(descpos 1)) : (descriptor srcsetsrcset ""))) : (url srcset
            
srcset ""), url && (descriptor parseDescriptor(descriptor)) && (can = {
                
urlurl.replace(/^,+/, ""),
                
setset
            
}, can[descriptor[1]] = descriptor[0], "x" == descriptor[1] && == descriptor[0] && (set.has1x = !0), 
            
set.cands.push(can));
        }
        return 
set.cands;
    }, 
ri.getEmValue = function() {
        var 
body;
        if (!
eminpx && (body document.body)) {
            var 
div document.createElement("div"), originalHTMLCSS docElem.style.cssTextoriginalBodyCSS body.style.cssText;
            
div.style.cssText baseStyledocElem.style.cssText fsCssbody.style.cssText fsCss
            
body.appendChild(div), eminpx div.offsetWidthbody.removeChild(div), eminpx parseFloat(eminpx10), 
            
docElem.style.cssText originalHTMLCSSbody.style.cssText originalBodyCSS;
        }
        return 
eminpx || 16;
    }, 
ri.calcListLength = function(sourceSizeListStr) {
        if (!(
sourceSizeListStr in sizeLengthCache) || cfg.uT) {
            var 
sourceSizeparsedSizelengthmediailensourceSizeList trim(sourceSizeListStr).split(/s*,s*/), winningLength = !1;
            for (
0len sourceSizeList.lengthlen && (sourceSize sourceSizeList[i], 
            
parsedSize ri.parseSize(sourceSize), length parsedSize.lengthmedia parsedSize.media
            !
length || !ri.matchesMedia(media) || (winningLength ri.calcLength(length)) === !1); i++) ;
            
sizeLengthCache[sourceSizeListStr] = winningLength winningLength units.width;
        }
        return 
sizeLengthCache[sourceSizeListStr];
    }, 
ri.setRes = function(set) {
        var 
candidates;
        if (
set) {
            
candidates ri.parseSet(set);
            for (var 
0len candidates.lengthlen ii++) setResolution(candidates[i], set.sizes);
        }
        return 
candidates;
    }, 
ri.setRes.res setResolutionri.applySetCandidate = function(candidatesimg) {
        if (
candidates.length) {
            var 
candidatedprijdifflengthbestCandidatecurSrccurCanisSameSetcandidateSrcabortCurSrcoldResimageData img[ri.ns], evaled evalIDlazyF lazyFactorsub substractCurRes;
            if (
curSrc imageData.curSrc || img[curSrcProp], curCan imageData.curCan || setSrcToCur(imgcurSrccandidates[0].set), 
            
dpr ri.DPRoldRes curCan && curCan.res, !bestCandidate && curSrc && (abortCurSrc supportAbort && !img.complete && curCan && oldRes dpr
            
abortCurSrc || curCan && !(tMemory oldRes) || (curCan && dpr oldRes && oldRes lowTreshHold && (partialLowTreshHold oldRes && (lazyF *= .87
            
sub += .04 dpr), curCan.res += lazyF Math.pow(oldRes sub2)), isSameSet = !imageData.pic || curCan && curCan.set == candidates[0].set
            
curCan && isSameSet && curCan.res >= dpr && (bestCandidate curCan))), !bestCandidate) for (oldRes && (curCan.res curCan.res - (curCan.res oldRes) / 2), 
            
candidates.sort(ascendingSort), length candidates.lengthbestCandidate candidates[length 1], 
            
0length ii++) if (candidate candidates[i], candidate.res >= dpr) {
                
1bestCandidate candidates[j] && (diff candidate.res dpr) && (abortCurSrc || curSrc != ri.makeUrl(candidate.url)) && chooseLowRes(candidates[j].resdiffdpr) ? candidates[j] : candidate;
                break;
            }
            return 
oldRes && (curCan.res oldRes), bestCandidate && (candidateSrc ri.makeUrl(bestCandidate.url), 
            
imageData.curSrc candidateSrcimageData.curCan bestCandidatecandidateSrc != curSrc && ri.setSrc(imgbestCandidate), 
            
ri.setSize(img)), evaled;
        }
    }, 
ri.setSrc = function(imgbestCandidate) {
        var 
origStyle;
        
img.src bestCandidate.urlreflowBug && (origStyle img.style.zoomimg.style.zoom "0.999"
        
img.style.zoom origStyle);
    }, 
ri.getSet = function(img) {
        var 
isetsupportsTypematch = !1sets img[ri.ns].sets;
        for (
0sets.length && !matchi++) if (set sets[i], set.srcset && ri.matchesMedia(set.media) && (supportsType ri.supportsType(set.type))) {
            
"pending" == supportsType && (set supportsType), match set;
            break;
        }
        return 
match;
    }, 
ri.parseSets = function(elementparentoptions) {
        var 
srcsetAttributeimageSetisWDescriporsrcsetParsedhasPicture "PICTURE" == parent.nodeName.toUpperCase(), imageData element[ri.ns];
        (
imageData.src === undefined || options.src) && (imageData.src getImgAttr.call(element"src"), 
        
imageData.src setImgAttr.call(elementsrcAttrimageData.src) : removeImgAttr.call(elementsrcAttr)), 
        (
imageData.srcset === undefined || !ri.supSrcset || element.srcset || options.srcset) && (srcsetAttribute getImgAttr.call(element"srcset"), 
        
imageData.srcset srcsetAttributesrcsetParsed = !0), imageData.sets = [], hasPicture && (imageData.pic = !0
        
getAllSourceElements(parentimageData.sets)), imageData.srcset ? (imageSet = {
            
srcsetimageData.srcset,
            
sizesgetImgAttr.call(element"sizes")
        }, 
imageData.sets.push(imageSet), isWDescripor = (alwaysCheckWDescriptor || imageData.src) && regWDesc.test(imageData.srcset || ""), 
        
isWDescripor || !imageData.src || getCandidateForSrc(imageData.srcimageSet) || imageSet.has1x || (imageSet.srcset += ", " imageData.src
        
imageSet.cands.push({
            
urlimageData.src,
            
x1,
            
setimageSet
        
}))) : imageData.src && imageData.sets.push({
            
srcsetimageData.src,
            
sizesnull
        
}), imageData.curCan nullimageData.curSrc undefinedimageData.supported = !(hasPicture || imageSet && !ri.supSrcset || isWDescripor), 
        
srcsetParsed && ri.supSrcset && !imageData.supported && (srcsetAttribute ? (setImgAttr.call(elementsrcsetAttrsrcsetAttribute), 
        
element.srcset "") : removeImgAttr.call(elementsrcsetAttr)), imageData.supported && !imageData.srcset && (!imageData.src && element.src || element.src != ri.makeUrl(imageData.src)) && (null == imageData.src element.removeAttribute("src") : element.src imageData.src), 
        
imageData.parsed = !0;
    }, 
ri.fillImg = function(elementoptions) {
        var 
parentimageDataextreme options.reselect || options.reevaluate;
        if (
element[ri.ns] || (element[ri.ns] = {}), imageData element[ri.ns], extreme || imageData.evaled != evalID) {
            if (!
imageData.parsed || options.reevaluate) {
                if (
parent element.parentNode, !parent) return;
                
ri.parseSets(elementparentoptions);
            }
            
imageData.supported imageData.evaled evalID applyBestCandidate(element);
        }
    }, 
ri.setupRun = function(options) {
        (!
alreadyRun || isVwDirty || DPR != window.devicePixelRatio) && (updateMetrics(), 
        
options.elements || options.context || clearTimeout(resizeThrottle));
    }, 
window.HTMLPictureElement ? (respimage noopri.fillImg noop) : !function() {
        var 
isDomReadyregReady window.attachEvent ? /d$|^c/ : /d$|^c|^i/, run = function() {
            var 
readyState document.readyState || "";
            
timerId setTimeout(run"loading" == readyState 200 999), document.body && (isDomReady isDomReady || regReady.test(readyState), 
            
ri.fillImgs(), isDomReady && clearTimeout(timerId));
        }, 
resizeEval = function() {
            
ri.fillImgs();
        }, 
onResize = function() {
            
clearTimeout(resizeThrottle), isVwDirty = !0resizeThrottle setTimeout(resizeEval99);
        }, 
timerId setTimeout(rundocument.body 99);
        
on(window"resize"onResize), on(document"readystatechange"run);
    }(), 
ri.respimage respimageri.fillImgs respimageri.teardownRun nooprespimage.ri
    
window.respimage respimagewindow.respimgCFG = {
        
riri,
        
push: function(args) {
            var 
name args.shift();
            
"function" == typeof ri[name] ? ri[name].apply(riargs) : (cfg[name] = args[0], 
            
alreadyRun && ri.fillImgs({
                
reselect: !0
            
}));
        }
    };
    for (;
setOptions && setOptions.length; ) window.respimgCFG.push(setOptions.shift());
}(
windowdocument);
?>
Онлайн: 1
Реклама