JAVASCRIPT   52

modernizr.js

Guest on 5th October 2021 08:06:19 AM

  1. window.Modernizr = function(e, t, n) {
  2.     function r(e) {
  3.         b.cssText = e
  4.     }
  5.     function o(e, t) {
  6.         return r(S.join(e + ";") + (t || ""))
  7.     }
  8.     function a(e, t) {
  9.         return typeof e === t
  10.     }
  11.     function i(e, t) {
  12.         return !!~("" + e).indexOf(t)
  13.     }
  14.     function c(e, t) {
  15.         for (var r in e) {
  16.             var o = e[r];
  17.             if (!i(o, "-") && b[o] !== n)
  18.                 return "pfx" == t ? o : !0
  19.         }
  20.         return !1
  21.     }
  22.     function s(e, t, r) {
  23.         for (var o in e) {
  24.             var i = t[e[o]];
  25.             if (i !== n)
  26.                 return r === !1 ? e[o] : a(i, "function") ? i.bind(r || t) : i
  27.         }
  28.         return !1
  29.     }
  30.     function u(e, t, n) {
  31.         var r = e.charAt(0).toUpperCase() + e.slice(1)
  32.           , o = (e + " " + k.join(r + " ") + r).split(" ");
  33.         return a(t, "string") || a(t, "undefined") ? c(o, t) : (o = (e + " " + T.join(r + " ") + r).split(" "),
  34.         s(o, t, n))
  35.     }
  36.     function l() {
  37.         p.input = function(n) {
  38.             for (var r = 0, o = n.length; o > r; r++)
  39.                 j[n[r]] = !!(n[r]in E);
  40.             return j.list && (j.list = !(!t.createElement("datalist") || !e.HTMLDataListElement)),
  41.             j
  42.         }("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),
  43.         p.inputtypes = function(e) {
  44.             for (var r, o, a, i = 0, c = e.length; c > i; i++)
  45.                 E.setAttribute("type", o = e[i]),
  46.                 r = "text" !== E.type,
  47.                 r && (E.value = x,
  48.                 E.style.cssText = "position:absolute;visibility:hidden;",
  49.                 /^range$/.test(o) && E.style.WebkitAppearance !== n ? (g.appendChild(E),
  50.                 a = t.defaultView,
  51.                 r = a.getComputedStyle && "textfield" !== a.getComputedStyle(E, null).WebkitAppearance && 0 !== E.offsetHeight,
  52.                 g.removeChild(E)) : /^(search|tel)$/.test(o) || (r = /^(url|email)$/.test(o) ? E.checkValidity && E.checkValidity() === !1 : E.value != x)),
  53.                 P[e[i]] = !!r;
  54.             return P
  55.         }("search tel url email datetime date month week time datetime-local number range color".split(" "))
  56.     }
  57.     var d, f, m = "2.7.1", p = {}, h = !0, g = t.documentElement, v = "modernizr", y = t.createElement(v), b = y.style, E = t.createElement("input"), x = ":)", w = {}.toString, S = " -webkit- -moz- -o- -ms- ".split(" "), C = "Webkit Moz O ms", k = C.split(" "), T = C.toLowerCase().split(" "), N = {
  58.         svg: "http://www.w3.org/2000/svg"
  59.     }, M = {}, P = {}, j = {}, $ = [], D = $.slice, F = function(e, n, r, o) {
  60.         var a, i, c, s, u = t.createElement("div"), l = t.body, d = l || t.createElement("body");
  61.         if (parseInt(r, 10))
  62.             for (; r--; )
  63.                 c = t.createElement("div"),
  64.                 c.id = o ? o[r] : v + (r + 1),
  65.                 u.appendChild(c);
  66.         return a = ["&#173;", '<style id="s', v, '">', e, "</style>"].join(""),
  67.         u.id = v,
  68.         (l ? u : d).innerHTML += a,
  69.         d.appendChild(u),
  70.         l || (d.style.background = "",
  71.         d.style.overflow = "hidden",
  72.         s = g.style.overflow,
  73.         g.style.overflow = "hidden",
  74.         g.appendChild(d)),
  75.         i = n(u, e),
  76.         l ? u.parentNode.removeChild(u) : (d.parentNode.removeChild(d),
  77.         g.style.overflow = s),
  78.         !!i
  79.     }, z = function(t) {
  80.         var n = e.matchMedia || e.msMatchMedia;
  81.         if (n)
  82.             return n(t).matches;
  83.         var r;
  84.         return F("@media " + t + " { #" + v + " { position: absolute; } }", function(t) {
  85.             r = "absolute" == (e.getComputedStyle ? getComputedStyle(t, null) : t.currentStyle).position
  86.         }),
  87.         r
  88.     }, A = function() {
  89.         function e(e, o) {
  90.             o = o || t.createElement(r[e] || "div"),
  91.             e = "on" + e;
  92.             var i = e in o;
  93.             return i || (o.setAttribute || (o = t.createElement("div")),
  94.             o.setAttribute && o.removeAttribute && (o.setAttribute(e, ""),
  95.             i = a(o[e], "function"),
  96.             a(o[e], "undefined") || (o[e] = n),
  97.             o.removeAttribute(e))),
  98.             o = null,
  99.             i
  100.         }
  101.         var r = {
  102.             select: "input",
  103.             change: "input",
  104.             submit: "form",
  105.             reset: "form",
  106.             error: "img",
  107.             load: "img",
  108.             abort: "img"
  109.         };
  110.         return e
  111.     }(), L = {}.hasOwnProperty;
  112.     f = a(L, "undefined") || a(L.call, "undefined") ? function(e, t) {
  113.         return t in e && a(e.constructor.prototype[t], "undefined")
  114.     }
  115.     : function(e, t) {
  116.         return L.call(e, t)
  117.     }
  118.     ,
  119.     Function.prototype.bind || (Function.prototype.bind = function(e) {
  120.         var t = this;
  121.         if ("function" != typeof t)
  122.             throw new TypeError;
  123.         var n = D.call(arguments, 1)
  124.           , r = function() {
  125.             if (this instanceof r) {
  126.                 var o = function() {};
  127.                 o.prototype = t.prototype;
  128.                 var a = new o
  129.                   , i = t.apply(a, n.concat(D.call(arguments)));
  130.                 return Object(i) === i ? i : a
  131.             }
  132.             return t.apply(e, n.concat(D.call(arguments)))
  133.         };
  134.         return r
  135.     }
  136.     ),
  137.     M.flexbox = function() {
  138.         return u("flexWrap")
  139.     }
  140.     ,
  141.     M.flexboxlegacy = function() {
  142.         return u("boxDirection")
  143.     }
  144.     ,
  145.     M.canvas = function() {
  146.         var e = t.createElement("canvas");
  147.         return !(!e.getContext || !e.getContext("2d"))
  148.     }
  149.     ,
  150.     M.canvastext = function() {
  151.         return !(!p.canvas || !a(t.createElement("canvas").getContext("2d").fillText, "function"))
  152.     }
  153.     ,
  154.     M.webgl = function() {
  155.         return !!e.WebGLRenderingContext
  156.     }
  157.     ,
  158.     M.touch = function() {
  159.         var n;
  160.         return "ontouchstart"in e || e.DocumentTouch && t instanceof DocumentTouch ? n = !0 : F(["@media (", S.join("touch-enabled),("), v, ")", "{#modernizr{top:9px;position:absolute}}"].join(""), function(e) {
  161.             n = 9 === e.offsetTop
  162.         }),
  163.         n
  164.     }
  165.     ,
  166.     M.geolocation = function() {
  167.         return "geolocation"in navigator
  168.     }
  169.     ,
  170.     M.postmessage = function() {
  171.         return !!e.postMessage
  172.     }
  173.     ,
  174.     M.websqldatabase = function() {
  175.         return !!e.openDatabase
  176.     }
  177.     ,
  178.     M.indexedDB = function() {
  179.         return !!u("indexedDB", e)
  180.     }
  181.     ,
  182.     M.hashchange = function() {
  183.         return A("hashchange", e) && (t.documentMode === n || t.documentMode > 7)
  184.     }
  185.     ,
  186.     M.history = function() {
  187.         return !(!e.history || !history.pushState)
  188.     }
  189.     ,
  190.     M.draganddrop = function() {
  191.         var e = t.createElement("div");
  192.         return "draggable"in e || "ondragstart"in e && "ondrop"in e
  193.     }
  194.     ,
  195.     M.websockets = function() {
  196.         return "WebSocket"in e || "MozWebSocket"in e
  197.     }
  198.     ,
  199.     M.rgba = function() {
  200.         return r("background-color:rgba(150,255,150,.5)"),
  201.         i(b.backgroundColor, "rgba")
  202.     }
  203.     ,
  204.     M.hsla = function() {
  205.         return r("background-color:hsla(120,40%,100%,.5)"),
  206.         i(b.backgroundColor, "rgba") || i(b.backgroundColor, "hsla")
  207.     }
  208.     ,
  209.     M.multiplebgs = function() {
  210.         return r("background:url(https://),url(https://),red url(https://)"),
  211.         /(url\s*\(.*?){3}/.test(b.background)
  212.     }
  213.     ,
  214.     M.backgroundsize = function() {
  215.         return u("backgroundSize")
  216.     }
  217.     ,
  218.     M.borderimage = function() {
  219.         return u("borderImage")
  220.     }
  221.     ,
  222.     M.borderradius = function() {
  223.         return u("borderRadius")
  224.     }
  225.     ,
  226.     M.boxshadow = function() {
  227.         return u("boxShadow")
  228.     }
  229.     ,
  230.     M.textshadow = function() {
  231.         return "" === t.createElement("div").style.textShadow
  232.     }
  233.     ,
  234.     M.opacity = function() {
  235.         return o("opacity:.55"),
  236.         /^0.55$/.test(b.opacity)
  237.     }
  238.     ,
  239.     M.cssanimations = function() {
  240.         return u("animationName")
  241.     }
  242.     ,
  243.     M.csscolumns = function() {
  244.         return u("columnCount")
  245.     }
  246.     ,
  247.     M.cssgradients = function() {
  248.         var e = "background-image:"
  249.           , t = "gradient(linear,left top,right bottom,from(#9f9),to(white));"
  250.           , n = "linear-gradient(left top,#9f9, white);";
  251.         return r((e + "-webkit- ".split(" ").join(t + e) + S.join(n + e)).slice(0, -e.length)),
  252.         i(b.backgroundImage, "gradient")
  253.     }
  254.     ,
  255.     M.cssreflections = function() {
  256.         return u("boxReflect")
  257.     }
  258.     ,
  259.     M.csstransforms = function() {
  260.         return !!u("transform")
  261.     }
  262.     ,
  263.     M.csstransforms3d = function() {
  264.         var e = !!u("perspective");
  265.         return e && "webkitPerspective"in g.style && F("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}", function(t) {
  266.             e = 9 === t.offsetLeft && 3 === t.offsetHeight
  267.         }),
  268.         e
  269.     }
  270.     ,
  271.     M.csstransitions = function() {
  272.         return u("transition")
  273.     }
  274.     ,
  275.     M.fontface = function() {
  276.         var e;
  277.         return F('@font-face {font-family:"font";src:url("https://")}', function(n, r) {
  278.             var o = t.getElementById("smodernizr")
  279.               , a = o.sheet || o.styleSheet
  280.               , i = a ? a.cssRules && a.cssRules[0] ? a.cssRules[0].cssText : a.cssText || "" : "";
  281.             e = /src/i.test(i) && 0 === i.indexOf(r.split(" ")[0])
  282.         }),
  283.         e
  284.     }
  285.     ,
  286.     M.generatedcontent = function() {
  287.         var e;
  288.         return F(["#", v, "{font:0/0 a}#", v, ':after{content:"', x, '";visibility:hidden;font:3px/1 a}'].join(""), function(t) {
  289.             e = t.offsetHeight >= 3
  290.         }),
  291.         e
  292.     }
  293.     ,
  294.     M.video = function() {
  295.         var e = t.createElement("video")
  296.           , n = !1;
  297.         try {
  298.             (n = !!e.canPlayType) && (n = new Boolean(n),
  299.             n.ogg = e.canPlayType('video/ogg; codecs="theora"').replace(/^no$/, ""),
  300.             n.h264 = e.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/, ""),
  301.             n.webm = e.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/, ""))
  302.         } catch (r) {}
  303.         return n
  304.     }
  305.     ,
  306.     M.audio = function() {
  307.         var e = t.createElement("audio")
  308.           , n = !1;
  309.         try {
  310.             (n = !!e.canPlayType) && (n = new Boolean(n),
  311.             n.ogg = e.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ""),
  312.             n.mp3 = e.canPlayType("audio/mpeg;").replace(/^no$/, ""),
  313.             n.wav = e.canPlayType('audio/wav; codecs="1"').replace(/^no$/, ""),
  314.             n.m4a = (e.canPlayType("audio/x-m4a;") || e.canPlayType("audio/aac;")).replace(/^no$/, ""))
  315.         } catch (r) {}
  316.         return n
  317.     }
  318.     ,
  319.     M.localstorage = function() {
  320.         try {
  321.             return localStorage.setItem(v, v),
  322.             localStorage.removeItem(v),
  323.             !0
  324.         } catch (e) {
  325.             return !1
  326.         }
  327.     }
  328.     ,
  329.     M.sessionstorage = function() {
  330.         try {
  331.             return sessionStorage.setItem(v, v),
  332.             sessionStorage.removeItem(v),
  333.             !0
  334.         } catch (e) {
  335.             return !1
  336.         }
  337.     }
  338.     ,
  339.     M.webworkers = function() {
  340.         return !!e.Worker
  341.     }
  342.     ,
  343.     M.applicationcache = function() {
  344.         return !!e.applicationCache
  345.     }
  346.     ,
  347.     M.svg = function() {
  348.         return !!t.createElementNS && !!t.createElementNS(N.svg, "svg").createSVGRect
  349.     }
  350.     ,
  351.     M.inlinesvg = function() {
  352.         var e = t.createElement("div");
  353.         return e.innerHTML = "<svg/>",
  354.         (e.firstChild && e.firstChild.namespaceURI) == N.svg
  355.     }
  356.     ,
  357.     M.smil = function() {
  358.         return !!t.createElementNS && /SVGAnimate/.test(w.call(t.createElementNS(N.svg, "animate")))
  359.     }
  360.     ,
  361.     M.svgclippaths = function() {
  362.         return !!t.createElementNS && /SVGClipPath/.test(w.call(t.createElementNS(N.svg, "clipPath")))
  363.     }
  364.     ;
  365.     for (var H in M)
  366.         f(M, H) && (d = H.toLowerCase(),
  367.         p[d] = M[H](),
  368.         $.push((p[d] ? "" : "no-") + d));
  369.     return p.input || l(),
  370.     p.addTest = function(e, t) {
  371.         if ("object" == typeof e)
  372.             for (var r in e)
  373.                 f(e, r) && p.addTest(r, e[r]);
  374.         else {
  375.             if (e = e.toLowerCase(),
  376.             p[e] !== n)
  377.                 return p;
  378.             t = "function" == typeof t ? t() : t,
  379.             "undefined" != typeof h && h && (g.className += " " + (t ? "" : "no-") + e),
  380.             p[e] = t
  381.         }
  382.         return p
  383.     }
  384.     ,
  385.     r(""),
  386.     y = E = null,
  387.     function(e, t) {
  388.         function n(e, t) {
  389.             var n = e.createElement("p")
  390.               , r = e.getElementsByTagName("head")[0] || e.documentElement;
  391.             return n.innerHTML = "x<style>" + t + "</style>",
  392.             r.insertBefore(n.lastChild, r.firstChild)
  393.         }
  394.         function r() {
  395.             var e = y.elements;
  396.             return "string" == typeof e ? e.split(" ") : e
  397.         }
  398.         function o(e) {
  399.             var t = v[e[h]];
  400.             return t || (t = {},
  401.             g++,
  402.             e[h] = g,
  403.             v[g] = t),
  404.             t
  405.         }
  406.         function a(e, n, r) {
  407.             if (n || (n = t),
  408.             l)
  409.                 return n.createElement(e);
  410.             r || (r = o(n));
  411.             var a;
  412.             return a = r.cache[e] ? r.cache[e].cloneNode() : p.test(e) ? (r.cache[e] = r.createElem(e)).cloneNode() : r.createElem(e),
  413.             !a.canHaveChildren || m.test(e) || a.tagUrn ? a : r.frag.appendChild(a)
  414.         }
  415.         function i(e, n) {
  416.             if (e || (e = t),
  417.             l)
  418.                 return e.createDocumentFragment();
  419.             n = n || o(e);
  420.             for (var a = n.frag.cloneNode(), i = 0, c = r(), s = c.length; s > i; i++)
  421.                 a.createElement(c[i]);
  422.             return a
  423.         }
  424.         function c(e, t) {
  425.             t.cache || (t.cache = {},
  426.             t.createElem = e.createElement,
  427.             t.createFrag = e.createDocumentFragment,
  428.             t.frag = t.createFrag()),
  429.             e.createElement = function(n) {
  430.                 return y.shivMethods ? a(n, e, t) : t.createElem(n)
  431.             }
  432.             ,
  433.             e.createDocumentFragment = Function("h,f", "return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(" + r().join().replace(/[\w\-]+/g, function(e) {
  434.                 return t.createElem(e),
  435.                 t.frag.createElement(e),
  436.                 'c("' + e + '")'
  437.             }) + ");return n}")(y, t.frag)
  438.         }
  439.         function s(e) {
  440.             e || (e = t);
  441.             var r = o(e);
  442.             return !y.shivCSS || u || r.hasCSS || (r.hasCSS = !!n(e, "article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),
  443.             l || c(e, r),
  444.             e
  445.         }
  446.         var u, l, d = "3.7.0", f = e.html5 || {}, m = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i, p = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i, h = "_html5shiv", g = 0, v = {};
  447.         !function() {
  448.             try {
  449.                 var e = t.createElement("a");
  450.                 e.innerHTML = "<xyz></xyz>",
  451.                 u = "hidden"in e,
  452.                 l = 1 == e.childNodes.length || function() {
  453.                     t.createElement("a");
  454.                     var e = t.createDocumentFragment();
  455.                     return "undefined" == typeof e.cloneNode || "undefined" == typeof e.createDocumentFragment || "undefined" == typeof e.createElement
  456.                 }()
  457.             } catch (n) {
  458.                 u = !0,
  459.                 l = !0
  460.             }
  461.         }();
  462.         var y = {
  463.             elements: f.elements || "abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",
  464.             version: d,
  465.             shivCSS: f.shivCSS !== !1,
  466.             supportsUnknownElements: l,
  467.             shivMethods: f.shivMethods !== !1,
  468.             type: "default",
  469.             shivDocument: s,
  470.             createElement: a,
  471.             createDocumentFragment: i
  472.         };
  473.         e.html5 = y,
  474.         s(t)
  475.     }(this, t),
  476.     p._version = m,
  477.     p._prefixes = S,
  478.     p._domPrefixes = T,
  479.     p._cssomPrefixes = k,
  480.     p.mq = z,
  481.     p.hasEvent = A,
  482.     p.testProp = function(e) {
  483.         return c([e])
  484.     }
  485.     ,
  486.     p.testAllProps = u,
  487.     p.testStyles = F,
  488.     p.prefixed = function(e, t, n) {
  489.         return t ? u(e, t, n) : u(e, "pfx")
  490.     }
  491.     ,
  492.     g.className = g.className.replace(/(^|\s)no-js(\s|$)/, "$1$2") + (h ? " js " + $.join(" ") : ""),
  493.     p
  494. }(this, this.document);

Raw Paste


Login or Register to edit or fork this paste. It's free.