diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d3edc1..c623a35 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ * Starting to add automated test suite ### 1.3.1 (August 13, 2017) +* Fixed issue where Opera 12 through 14 were detecting as Chrome, WebKit, and Opera * Added defunctr.browser which will replace defunctr.detective in 2.0 * Deprecated defunctr.detective * Updated build to current versions diff --git a/README.md b/README.md index a50afbb..3c2f153 100644 --- a/README.md +++ b/README.md @@ -159,9 +159,14 @@ We support most browsers, which is the point of using our module in the first pl #### Things to know about this release -* Microsoft Edge is detected as Microsoft Edge not Internet Explorer. * Opera Next is detected as Opera-Next not Opera. * Only Internet Explorer is supported for version information. +* Kindle Fire has an issue where it is detected as Khtml and Chrome. +* Android Emulators are unpredictable and may report Chrome as Safari or even Khtml. +* All 3rd party browsers (Chome, Firefox) will be **correctly** detected as Safari on iOS. All browsers on iOS are required to use Apple's provided frameworks for accessing the web. These browsers are only shells around Safari. +* `Defunctr` is deprecated and will be removed in 2.0. Use `defunctr` instead. +* `defunctr.detective` is deprecated and will be removed in 2.0. Use `defunctr.browser()` instead. +* Known issue with crashing on IE 6 actual (vs quirks emulation). Investigation under way. ### CDN Delivery diff --git a/dist/defunctr-dev.js b/dist/defunctr-dev.js index b8161b9..d9f52ec 100644 --- a/dist/defunctr-dev.js +++ b/dist/defunctr-dev.js @@ -1,12 +1,12 @@ /*! - * Defunctr 1.3.0 + * Defunctr 1.3.1 * https://github.com/cinecove/defunctr * * Copyright 2012 - 2017 Cinecove Digital, LLC and other contributors * Released under the MIT license * https://github.com/cinecove/defunctr/blob/master/LICENSE.md * - * Build Date: 2017-02-10T07:58:02.681Z + * Build Date: 2017-08-14T02:37:48.958Z */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : @@ -22,12 +22,12 @@ var noop = function noop() {}; var console = browserWindow && browserWindow.console ? browserWindow.console : undefined; var log = console ? console.log || noop : noop; var warn = console ? console.warn || log : noop; -var error$1 = console ? console.error || log : noop; +var error = console ? console.error || log : noop; var logger = { log: log, warn: warn, - error: error$1 + error: error }; var htmlElementConstructorCheck = function () { @@ -67,8 +67,16 @@ var firefox = function () { return installTriggerCheck(); }; +var operaVersionCheck = function () { + return Boolean(browserWindow && browserWindow.opera && browserWindow.opera.version !== undef); +}; + +var opera = function () { + return operaVersionCheck(); +}; + var webkit = function () { - return webKitTransformCheck() && msWriteProfilerMarkCheck() === false && !firefox(); + return webKitTransformCheck() && msWriteProfilerMarkCheck() === false && !firefox() && !opera(); }; var chrome = function () { @@ -95,14 +103,6 @@ var khtml = function () { return khtmlMarqueeCheck() && !safari(); }; -var operaVersionCheck = function () { - return Boolean(browserWindow && browserWindow.opera && browserWindow.opera.version !== undef); -}; - -var opera = function () { - return operaVersionCheck(); -}; - var ie = function () { @@ -491,12 +491,38 @@ var tagger = function (detective) { var Defunctr = function Defunctr() { classCallCheck(this, Defunctr); - this.version = '1.3.0'; - this.detective = new Detective(); + this.version = '1.3.1'; + this.browser = function browser() { + var d = new Detective(); + return { + vendor: d.isChrome ? 'chrome' : d.isEdge ? 'edge' : d.isFirefox ? 'firefox' : d.isIE ? 'ie' : d.isKhtml ? 'khtml' : d.isOpera && d.isOperaNext ? 'opera' : d.isSafari ? 'safari' : 'unknown', + version: !d.isIE ? 0 : d.ieIsBelowVersion6 ? 5 : d.ieIsVersion6 ? 6 : d.ieIsVersion7 ? 7 : d.ieIsVersion8 ? 8 : d.ieIsVersion9 ? 9 : d.ieIsVersion10 ? 10 : d.ieIsVersion11 ? 11 : d.ieIsAboveVersion11 ? 12 : 0, + standards: d.standardsCompliant, + detected: !d.isUndetected, + webkit: d.isWebKit + }; + }; }; var defunctr = new Defunctr(); +try { + Object.defineProperty(defunctr, 'detective', { + get: function get$$1() { + try { + var warn = logger && logger.warn ? logger.warn : logger.log; + warn('defunctr.detective is deprecated and will be removed in 2.0. Please use window.browser instead.'); + } catch (oe) { + } + return new Detective(); + }, + enumerable: true, + configurable: true + }); +} catch (ex) { + defunctr.detective = new Detective(); +} + if (browserWindow) { tagger(new Detective()).tag(); @@ -504,7 +530,11 @@ if (browserWindow) { try { Object.defineProperty(browserWindow, 'Defunctr', { get: function get$$1() { - logger.warn('window.Defunctr is deprecated and will be removed. Please use window.defunctr'); + try { + var warn = logger && logger.warn ? logger.warn : logger.log; + warn('window.Defunctr is deprecated and will be removed in 2.0. Please use window.defunctr instead.'); + } catch (oe) { + } return defunctr; }, enumerable: true, diff --git a/dist/defunctr.js b/dist/defunctr.js index 45679d7..7fd9d17 100644 --- a/dist/defunctr.js +++ b/dist/defunctr.js @@ -1,11 +1,11 @@ /*! - * Defunctr 1.3.0 + * Defunctr 1.3.1 * https://github.com/cinecove/defunctr * * Copyright 2012 - 2017 Cinecove Digital, LLC and other contributors * Released under the MIT license * https://github.com/cinecove/defunctr/blob/master/LICENSE.md * - * Build Date: 2017-02-10T07:58:02.681Z + * Build Date: 2017-08-14T02:37:48.958Z */ -!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):e.defunctr=n()}(this,function(){"use strict";function e(){try{return"WebkitTransform"in c.documentElement.style&&!!E.opr&&!!E.opr.addons}catch(e){return!1}}function n(e){return function(){return e}}function i(e,n){Modernizr?Modernizr.addTest(e,n):r(n()?e:"no-"+e)}function o(e){Re.className=Re.className.replace(new RegExp("\\b"+e+"\\b"),"")}function r(e){t(e)||(Re.className+=Re.className.length>0?" "+e:e)}function t(e){return Re.className.match(new RegExp("\\b"+e+"\\b"))}function s(e){t(Ae.NOTAGGING)||(i(me(de.IE),n(e.isIE)),t(Ae.IE_ONLY)||(i(me(de.CHROME),n(e.isChrome)),i(me(de.SAFARI),n(e.isSafari)),i(me(de.OPERA),n(e.isOpera)),i(me(de.OPERANEXT),n(e.isOperaNext)),i(me(de.FIREFOX),n(e.isFirefox)),i(me(de.KHTML),n(e.isKhtml)),i(me(de.WEBKIT),n(e.isWebKit)),i(me(de.EDGE),n(e.isEdge)),i(me(de.UNKNOWN),n(e.isUndetected))),t(Ae.IE_LESSTHAN_OFF)||(i(me(de.IE_LESSTHAN_6),n(e.ieIsBelowVersion6)),i(me(de.IE_LESSTHAN_7),n(e.ieIsBelowVersion7)),i(me(de.IE_LESSTHAN_8),n(e.ieIsBelowVersion8)),i(me(de.IE_LESSTHAN_9),n(e.ieIsBelowVersion9)),i(me(de.IE_LESSTHAN_10),n(e.ieIsBelowVersion10)),i(me(de.IE_LESSTHAN_11),n(e.ieIsBelowVersion11)),i(me(de.IE_LESSTHAN_12),n(e.ieIsBelowVersion12))),t(Ae.IE_GREATERTHAN_OFF)||(i(me(de.IE_GREATERTHAN_6),n(e.ieIsAboveVersion6)),i(me(de.IE_GREATERTHAN_7),n(e.ieIsAboveVersion7)),i(me(de.IE_GREATERTHAN_8),n(e.ieIsAboveVersion8)),i(me(de.IE_GREATERTHAN_9),n(e.ieIsAboveVersion9)),i(me(de.IE_GREATERTHAN_10),n(e.ieIsAboveVersion10)),i(me(de.IE_GREATERTHAN_11),n(e.ieIsAboveVersion11))),t(Ae.VERSION_OFF)||(i(me(de.IE_VERSION_6),n(e.ieIsVersion6)),i(me(de.IE_VERSION_7),n(e.ieIsVersion7)),i(me(de.IE_VERSION_8),n(e.ieIsVersion8)),i(me(de.IE_VERSION_9),n(e.ieIsVersion9)),i(me(de.IE_VERSION_10),n(e.ieIsVersion10)),i(me(de.IE_VERSION_11),n(e.ieIsVersion11)))),u()}function u(){o(Ae.IE_GREATERTHAN_OFF),o(Ae.IE_LESSTHAN_OFF),o(Ae.VERSION_OFF),o(Ae.IE_ONLY),o(Ae.DEFUNCTR),o(Ae.NOTAGGING)}var E=window||null,c=E?E.document||null:null,f=void 0,I=function(){},l=E&&E.console?E.console:void 0,V=l?l.log||I:I,a=l?l.warn||V:I,_=l?l.error||V:I,d={log:V,warn:a,error:_},A=function(){return Boolean(E&&E.HTMLElement&&Object.prototype.toString.call(E.HTMLElement).indexOf("Constructor")>0)},N=function(){return A()},m=function(){return e()},T=function(){return Boolean(c&&c.documentElement&&c.documentElement.style&&"WebkitTransform"in c.documentElement.style)},R=function(){return Boolean(E&&"undefined"!=typeof E.msWriteProfilerMark)},S=function(){return Boolean(E&&"undefined"!=typeof E.InstallTrigger)},h=function(){return S()},b=function(){return T()&&R()===!1&&!h()},v=function(){return!N()&&!m()&&b()},O=function(){return"ActiveXObject"in E},w=function(){return Boolean(E&&E.Event&&"function"==typeof E.Event)},B=function(){return Boolean(!O()&&w()&&R())},p=function(){return Boolean(c&&c.documentElement&&c.documentElement.style&&"KhtmlMarquee"in c.documentElement.style)},H=function(){return p()&&!N()},F=function(){return Boolean(E&&E.opera&&E.opera.version!==f)},G=function(){return F()},L=function(){return O()},y=function(){return!(b()||L()||v()||B()||h()||G()||m()||N())},g=function(){return Boolean(c&&c.compatMode&&("CSS1Compat"===c.compatMode||"BackCompat"===c.compatMode))},M=function(){return L()&&g()},C=function(){return Boolean(E&&"undefined"!=typeof E.XMLHttpRequest)},z=function(){return L()&&g()&&C()},x=function(){return Boolean(c&&"undefined"!=typeof c.querySelector)},K=function(){return L()&&x()},W=function(){return Boolean(c&&"undefined"!=typeof c.addEventListener)},j=function(){return L()&&W()},k=function(){return Boolean(E&&"undefined"!=typeof E.atob)},D=function(){return L()&&k()},P=function(){return Boolean(c&&"undefined"!=typeof c.attachEvent)},U=function(){return L()&&k()&&!P()},X=function(){return L()&&w()},q=function(){return Boolean(c&&"undefined"!=typeof c.compatMode)},Y=function(){return L()&&!q()},J=function(){return Boolean(c&&c.compatMode&&"BackCompat"===c.compatMode)},Q=function(){return L()&&!J()&&!C()},Z=function(){return L()&&!x()},$=function(){return L()&&!W()},ee=function(){return L()&&!k()},ne=function(){return L()&&P()},ie=function(){return L()&&!w()},oe=function(){return M()&&Q()},re=function(){return z()&&Z()},te=function(){return K()&&$()},se=function(){return j()&&ee()},ue=function(){return D()&&ne()},Ee=function(){return U()&&ie()},ce=(Object.freeze||Object)({isAboveVersion5:M,isAboveVersion6:z,isAboveVersion7:K,isAboveVersion8:j,isAboveVersion9:D,isAboveVersion10:U,isAboveVersion11:X,isBelowVersion6:Y,isBelowVersion7:Q,isBelowVersion8:Z,isBelowVersion9:$,isBelowVersion10:ee,isBelowVersion11:ne,isBelowVersion12:ie,isVersion6:oe,isVersion7:re,isVersion8:te,isVersion9:se,isVersion10:ue,isVersion11:Ee}),fe=function(){return Boolean(E&&E.chrome&&E.chrome.webstore&&E.chrome.webstore.install)},Ie=function(){return v()&&fe()},le=(Object.freeze||Object)({isAboveVersion15:Ie}),Ve={ie:ce,chrome:le},ae=function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")},_e=function e(){ae(this,e),this.isWebKit=b(),this.isOpera=G(),this.isIE=L(),this.isFirefox=h(),this.isSafari=N(),this.isKhtml=H(),this.isOperaNext=m(),this.isChrome=v(),this.isEdge=B(),this.isUndetected=y(),this.standardsCompliant=Ve.ie.isAboveVersion9()||!L(),this.chromeIsAbove15=Ve.chrome.isAboveVersion15(),this.ieIsVersion11=Ve.ie.isVersion11(),this.ieIsVersion10=Ve.ie.isVersion10(),this.ieIsVersion9=Ve.ie.isVersion9(),this.ieIsVersion8=Ve.ie.isVersion8(),this.ieIsVersion7=Ve.ie.isVersion7(),this.ieIsVersion6=Ve.ie.isVersion6(),this.ieIsBelowVersion6=Ve.ie.isBelowVersion6(),this.ieIsBelowVersion7=Ve.ie.isBelowVersion7(),this.ieIsBelowVersion8=Ve.ie.isBelowVersion8(),this.ieIsBelowVersion9=Ve.ie.isBelowVersion9(),this.ieIsBelowVersion10=Ve.ie.isBelowVersion10(),this.ieIsBelowVersion11=Ve.ie.isBelowVersion11(),this.ieIsBelowVersion12=Ve.ie.isBelowVersion12(),this.ieIsAboveVersion5=Ve.ie.isAboveVersion5(),this.ieIsAboveVersion6=Ve.ie.isAboveVersion6(),this.ieIsAboveVersion7=Ve.ie.isAboveVersion7(),this.ieIsAboveVersion8=Ve.ie.isAboveVersion8(),this.ieIsAboveVersion9=Ve.ie.isAboveVersion9(),this.ieIsAboveVersion10=Ve.ie.isAboveVersion10(),this.ieIsAboveVersion11=Ve.ie.isAboveVersion11()},de={IE:"ie",CHROME:"chrome",SAFARI:"safari",OPERA:"opera",OPERANEXT:"opera-next",FIREFOX:"firefox",KHTML:"khtml",WEBKIT:"webkit",EDGE:"edge",UNKNOWN:"undetected-browser",IE_LESSTHAN_6:"ie-lt-6",IE_LESSTHAN_7:"ie-lt-7",IE_LESSTHAN_8:"ie-lt-8",IE_LESSTHAN_9:"ie-lt-9",IE_LESSTHAN_10:"ie-lt-10",IE_LESSTHAN_11:"ie-lt-11",IE_LESSTHAN_12:"ie-lt-12",IE_GREATERTHAN_6:"ie-gt-6",IE_GREATERTHAN_7:"ie-gt-7",IE_GREATERTHAN_8:"ie-gt-8",IE_GREATERTHAN_9:"ie-gt-9",IE_GREATERTHAN_10:"ie-gt-10",IE_GREATERTHAN_11:"ie-gt-11",IE_VERSION_6:"ie-version-6",IE_VERSION_7:"ie-version-7",IE_VERSION_8:"ie-version-8",IE_VERSION_9:"ie-version-9",IE_VERSION_10:"ie-version-10",IE_VERSION_11:"ie-version-11"},Ae={DEFUNCTR:"defunctr",VERSION_OFF:"defunctr-version-off",IE_ONLY:"defunctr-ie-only",IE_LESSTHAN_OFF:"defunctr-lt-off",IE_GREATERTHAN_OFF:"defunctr-gt-off",NOTAGGING:"defunctr-off"},Ne="",me=function(e){return""+Ne+e},Te={modernizr:void 0};"function"==typeof require?require(["modernizr"],function(e){Te.modernizr=e}):E&&(E.Modernizr?Te.modernizr=E.Modernizr:E.modernizr&&(Te.modernizr=E.modernizr));var Re=c&&c.documentElement&&c.documentElement.className?c.documentElement:{className:""},Modernizr=Te.modernizr,Se=function(e){return{tag:function(){c&&s(e)}}},he=function e(){ae(this,e),this.version="1.3.0",this.detective=new _e},be=new he;if(E){Se(new _e).tag(),E.defunctr=be;try{Object.defineProperty(E,"Defunctr",{get:function(){return d.warn("window.Defunctr is deprecated and will be removed. Please use window.defunctr"),be},enumerable:!0,configurable:!0})}catch(e){E.Defunctr=be}}return be}); \ No newline at end of file +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):e.defunctr=n()}(this,function(){"use strict";function e(){try{return"WebkitTransform"in E.documentElement.style&&!!c.opr&&!!c.opr.addons}catch(e){return!1}}function n(e){return function(){return e}}function i(e,n){Modernizr?Modernizr.addTest(e,n):r(n()?e:"no-"+e)}function o(e){se.className=se.className.replace(new RegExp("\\b"+e+"\\b"),"")}function r(e){t(e)||(se.className+=se.className.length>0?" "+e:e)}function t(e){return se.className.match(new RegExp("\\b"+e+"\\b"))}function s(e){t(oe.NOTAGGING)||(i(re(ie.IE),n(e.isIE)),t(oe.IE_ONLY)||(i(re(ie.CHROME),n(e.isChrome)),i(re(ie.SAFARI),n(e.isSafari)),i(re(ie.OPERA),n(e.isOpera)),i(re(ie.OPERANEXT),n(e.isOperaNext)),i(re(ie.FIREFOX),n(e.isFirefox)),i(re(ie.KHTML),n(e.isKhtml)),i(re(ie.WEBKIT),n(e.isWebKit)),i(re(ie.EDGE),n(e.isEdge)),i(re(ie.UNKNOWN),n(e.isUndetected))),t(oe.IE_LESSTHAN_OFF)||(i(re(ie.IE_LESSTHAN_6),n(e.ieIsBelowVersion6)),i(re(ie.IE_LESSTHAN_7),n(e.ieIsBelowVersion7)),i(re(ie.IE_LESSTHAN_8),n(e.ieIsBelowVersion8)),i(re(ie.IE_LESSTHAN_9),n(e.ieIsBelowVersion9)),i(re(ie.IE_LESSTHAN_10),n(e.ieIsBelowVersion10)),i(re(ie.IE_LESSTHAN_11),n(e.ieIsBelowVersion11)),i(re(ie.IE_LESSTHAN_12),n(e.ieIsBelowVersion12))),t(oe.IE_GREATERTHAN_OFF)||(i(re(ie.IE_GREATERTHAN_6),n(e.ieIsAboveVersion6)),i(re(ie.IE_GREATERTHAN_7),n(e.ieIsAboveVersion7)),i(re(ie.IE_GREATERTHAN_8),n(e.ieIsAboveVersion8)),i(re(ie.IE_GREATERTHAN_9),n(e.ieIsAboveVersion9)),i(re(ie.IE_GREATERTHAN_10),n(e.ieIsAboveVersion10)),i(re(ie.IE_GREATERTHAN_11),n(e.ieIsAboveVersion11))),t(oe.VERSION_OFF)||(i(re(ie.IE_VERSION_6),n(e.ieIsVersion6)),i(re(ie.IE_VERSION_7),n(e.ieIsVersion7)),i(re(ie.IE_VERSION_8),n(e.ieIsVersion8)),i(re(ie.IE_VERSION_9),n(e.ieIsVersion9)),i(re(ie.IE_VERSION_10),n(e.ieIsVersion10)),i(re(ie.IE_VERSION_11),n(e.ieIsVersion11)))),u()}function u(){o(oe.IE_GREATERTHAN_OFF),o(oe.IE_LESSTHAN_OFF),o(oe.VERSION_OFF),o(oe.IE_ONLY),o(oe.DEFUNCTR),o(oe.NOTAGGING)}var c=window||null,E=c?c.document||null:null,f=function(){},I=c&&c.console?c.console:undefined,l=I?I.log||f:f,a={log:l,warn:I?I.warn||l:f,error:I?I.error||l:f},d=function(){return Boolean(c&&c.HTMLElement&&Object.prototype.toString.call(c.HTMLElement).indexOf("Constructor")>0)},V=function(){return d()},_=function(){return e()},A=function(){return Boolean(E&&E.documentElement&&E.documentElement.style&&"WebkitTransform"in E.documentElement.style)},m=function(){return Boolean(c&&"undefined"!=typeof c.msWriteProfilerMark)},N=function(){return Boolean(c&&"undefined"!=typeof c.InstallTrigger)},T=function(){return N()},b=function(){return Boolean(c&&c.opera&&void 0!==c.opera.version)},h=function(){return b()},w=function(){return A()&&!1===m()&&!T()&&!h()},R=function(){return!V()&&!_()&&w()},S=function(){return"ActiveXObject"in c},v=function(){return Boolean(c&&c.Event&&"function"==typeof c.Event)},O=function(){return Boolean(!S()&&v()&&m())},p=function(){return Boolean(E&&E.documentElement&&E.documentElement.style&&"KhtmlMarquee"in E.documentElement.style)},B=function(){return p()&&!V()},H=function(){return S()},y=function(){return!(w()||H()||R()||O()||T()||h()||_()||V())},F=function(){return Boolean(E&&E.compatMode&&("CSS1Compat"===E.compatMode||"BackCompat"===E.compatMode))},g=function(){return H()&&F()},G=function(){return Boolean(c&&"undefined"!=typeof c.XMLHttpRequest)},L=function(){return H()&&F()&&G()},M=function(){return Boolean(E&&"undefined"!=typeof E.querySelector)},C=function(){return H()&&M()},x=function(){return Boolean(E&&"undefined"!=typeof E.addEventListener)},K=function(){return H()&&x()},z=function(){return Boolean(c&&"undefined"!=typeof c.atob)},k=function(){return H()&&z()},W=function(){return Boolean(E&&"undefined"!=typeof E.attachEvent)},j=function(){return H()&&z()&&!W()},P=function(){return Boolean(E&&"undefined"!=typeof E.compatMode)},D=function(){return Boolean(E&&E.compatMode&&"BackCompat"===E.compatMode)},U=function(){return H()&&!D()&&!G()},X=function(){return H()&&!M()},q=function(){return H()&&!x()},Y=function(){return H()&&!z()},J=function(){return H()&&W()},Q=function(){return H()&&!v()},Z=function(){return Boolean(c&&c.chrome&&c.chrome.webstore&&c.chrome.webstore.install)},$={ie:(Object.freeze||Object)({isAboveVersion5:g,isAboveVersion6:L,isAboveVersion7:C,isAboveVersion8:K,isAboveVersion9:k,isAboveVersion10:j,isAboveVersion11:function(){return H()&&v()},isBelowVersion6:function(){return H()&&!P()},isBelowVersion7:U,isBelowVersion8:X,isBelowVersion9:q,isBelowVersion10:Y,isBelowVersion11:J,isBelowVersion12:Q,isVersion6:function(){return g()&&U()},isVersion7:function(){return L()&&X()},isVersion8:function(){return C()&&q()},isVersion9:function(){return K()&&Y()},isVersion10:function(){return k()&&J()},isVersion11:function(){return j()&&Q()}}),chrome:(Object.freeze||Object)({isAboveVersion15:function(){return R()&&Z()}})},ee=function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")},ne=function Ee(){ee(this,Ee),this.isWebKit=w(),this.isOpera=h(),this.isIE=H(),this.isFirefox=T(),this.isSafari=V(),this.isKhtml=B(),this.isOperaNext=_(),this.isChrome=R(),this.isEdge=O(),this.isUndetected=y(),this.standardsCompliant=$.ie.isAboveVersion9()||!H(),this.chromeIsAbove15=$.chrome.isAboveVersion15(),this.ieIsVersion11=$.ie.isVersion11(),this.ieIsVersion10=$.ie.isVersion10(),this.ieIsVersion9=$.ie.isVersion9(),this.ieIsVersion8=$.ie.isVersion8(),this.ieIsVersion7=$.ie.isVersion7(),this.ieIsVersion6=$.ie.isVersion6(),this.ieIsBelowVersion6=$.ie.isBelowVersion6(),this.ieIsBelowVersion7=$.ie.isBelowVersion7(),this.ieIsBelowVersion8=$.ie.isBelowVersion8(),this.ieIsBelowVersion9=$.ie.isBelowVersion9(),this.ieIsBelowVersion10=$.ie.isBelowVersion10(),this.ieIsBelowVersion11=$.ie.isBelowVersion11(),this.ieIsBelowVersion12=$.ie.isBelowVersion12(),this.ieIsAboveVersion5=$.ie.isAboveVersion5(),this.ieIsAboveVersion6=$.ie.isAboveVersion6(),this.ieIsAboveVersion7=$.ie.isAboveVersion7(),this.ieIsAboveVersion8=$.ie.isAboveVersion8(),this.ieIsAboveVersion9=$.ie.isAboveVersion9(),this.ieIsAboveVersion10=$.ie.isAboveVersion10(),this.ieIsAboveVersion11=$.ie.isAboveVersion11()},ie={IE:"ie",CHROME:"chrome",SAFARI:"safari",OPERA:"opera",OPERANEXT:"opera-next",FIREFOX:"firefox",KHTML:"khtml",WEBKIT:"webkit",EDGE:"edge",UNKNOWN:"undetected-browser",IE_LESSTHAN_6:"ie-lt-6",IE_LESSTHAN_7:"ie-lt-7",IE_LESSTHAN_8:"ie-lt-8",IE_LESSTHAN_9:"ie-lt-9",IE_LESSTHAN_10:"ie-lt-10",IE_LESSTHAN_11:"ie-lt-11",IE_LESSTHAN_12:"ie-lt-12",IE_GREATERTHAN_6:"ie-gt-6",IE_GREATERTHAN_7:"ie-gt-7",IE_GREATERTHAN_8:"ie-gt-8",IE_GREATERTHAN_9:"ie-gt-9",IE_GREATERTHAN_10:"ie-gt-10",IE_GREATERTHAN_11:"ie-gt-11",IE_VERSION_6:"ie-version-6",IE_VERSION_7:"ie-version-7",IE_VERSION_8:"ie-version-8",IE_VERSION_9:"ie-version-9",IE_VERSION_10:"ie-version-10",IE_VERSION_11:"ie-version-11"},oe={DEFUNCTR:"defunctr",VERSION_OFF:"defunctr-version-off",IE_ONLY:"defunctr-ie-only",IE_LESSTHAN_OFF:"defunctr-lt-off",IE_GREATERTHAN_OFF:"defunctr-gt-off",NOTAGGING:"defunctr-off"},re=function(e){return""+e},te={modernizr:undefined};"function"==typeof require?require(["modernizr"],function(e){te.modernizr=e}):c&&(c.Modernizr?te.modernizr=c.Modernizr:c.modernizr&&(te.modernizr=c.modernizr));var se=E&&E.documentElement&&E.documentElement.className?E.documentElement:{className:""},Modernizr=te.modernizr,ue=new function fe(){ee(this,fe),this.version="1.3.1",this.browser=function(){var e=new ne;return{vendor:e.isChrome?"chrome":e.isEdge?"edge":e.isFirefox?"firefox":e.isIE?"ie":e.isKhtml?"khtml":e.isOpera&&e.isOperaNext?"opera":e.isSafari?"safari":"unknown",version:e.isIE?e.ieIsBelowVersion6?5:e.ieIsVersion6?6:e.ieIsVersion7?7:e.ieIsVersion8?8:e.ieIsVersion9?9:e.ieIsVersion10?10:e.ieIsVersion11?11:e.ieIsAboveVersion11?12:0:0,standards:e.standardsCompliant,detected:!e.isUndetected,webkit:e.isWebKit}}};try{Object.defineProperty(ue,"detective",{get:function(){try{(a&&a.warn?a.warn:a.log)("defunctr.detective is deprecated and will be removed in 2.0. Please use window.browser instead.")}catch(e){}return new ne},enumerable:!0,configurable:!0})}catch(ce){ue.detective=new ne}if(c){(function(e){return{tag:function(){E&&s(e)}}})(new ne).tag(),c.defunctr=ue;try{Object.defineProperty(c,"Defunctr",{get:function(){try{(a&&a.warn?a.warn:a.log)("window.Defunctr is deprecated and will be removed in 2.0. Please use window.defunctr instead.")}catch(e){}return ue},enumerable:!0,configurable:!0})}catch(ce){c.Defunctr=ue}}return ue}); \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index 6ba6815..e936c58 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,12 +1,12 @@ /*! - * Defunctr 1.3.0 + * Defunctr 1.3.1 * https://github.com/cinecove/defunctr * * Copyright 2012 - 2017 Cinecove Digital, LLC and other contributors * Released under the MIT license * https://github.com/cinecove/defunctr/blob/master/LICENSE.md * - * Build Date: 2017-02-10T07:58:02.681Z + * Build Date: 2017-08-14T02:37:48.958Z */ var browserWindow = window || null; var browserDocument = browserWindow ? browserWindow.document || null : null; @@ -16,12 +16,12 @@ var noop = function noop() {}; var console = browserWindow && browserWindow.console ? browserWindow.console : undefined; var log = console ? console.log || noop : noop; var warn = console ? console.warn || log : noop; -var error$1 = console ? console.error || log : noop; +var error = console ? console.error || log : noop; var logger = { log: log, warn: warn, - error: error$1 + error: error }; var htmlElementConstructorCheck = function () { @@ -61,8 +61,16 @@ var firefox = function () { return installTriggerCheck(); }; +var operaVersionCheck = function () { + return Boolean(browserWindow && browserWindow.opera && browserWindow.opera.version !== undef); +}; + +var opera = function () { + return operaVersionCheck(); +}; + var webkit = function () { - return webKitTransformCheck() && msWriteProfilerMarkCheck() === false && !firefox(); + return webKitTransformCheck() && msWriteProfilerMarkCheck() === false && !firefox() && !opera(); }; var chrome = function () { @@ -89,14 +97,6 @@ var khtml = function () { return khtmlMarqueeCheck() && !safari(); }; -var operaVersionCheck = function () { - return Boolean(browserWindow && browserWindow.opera && browserWindow.opera.version !== undef); -}; - -var opera = function () { - return operaVersionCheck(); -}; - var ie = function () { @@ -485,12 +485,38 @@ var tagger = function (detective) { var Defunctr = function Defunctr() { classCallCheck(this, Defunctr); - this.version = '1.3.0'; - this.detective = new Detective(); + this.version = '1.3.1'; + this.browser = function browser() { + var d = new Detective(); + return { + vendor: d.isChrome ? 'chrome' : d.isEdge ? 'edge' : d.isFirefox ? 'firefox' : d.isIE ? 'ie' : d.isKhtml ? 'khtml' : d.isOpera && d.isOperaNext ? 'opera' : d.isSafari ? 'safari' : 'unknown', + version: !d.isIE ? 0 : d.ieIsBelowVersion6 ? 5 : d.ieIsVersion6 ? 6 : d.ieIsVersion7 ? 7 : d.ieIsVersion8 ? 8 : d.ieIsVersion9 ? 9 : d.ieIsVersion10 ? 10 : d.ieIsVersion11 ? 11 : d.ieIsAboveVersion11 ? 12 : 0, + standards: d.standardsCompliant, + detected: !d.isUndetected, + webkit: d.isWebKit + }; + }; }; var defunctr = new Defunctr(); +try { + Object.defineProperty(defunctr, 'detective', { + get: function get$$1() { + try { + var warn = logger && logger.warn ? logger.warn : logger.log; + warn('defunctr.detective is deprecated and will be removed in 2.0. Please use window.browser instead.'); + } catch (oe) { + } + return new Detective(); + }, + enumerable: true, + configurable: true + }); +} catch (ex) { + defunctr.detective = new Detective(); +} + if (browserWindow) { tagger(new Detective()).tag(); @@ -498,7 +524,11 @@ if (browserWindow) { try { Object.defineProperty(browserWindow, 'Defunctr', { get: function get$$1() { - logger.warn('window.Defunctr is deprecated and will be removed. Please use window.defunctr'); + try { + var warn = logger && logger.warn ? logger.warn : logger.log; + warn('window.Defunctr is deprecated and will be removed in 2.0. Please use window.defunctr instead.'); + } catch (oe) { + } return defunctr; }, enumerable: true, diff --git a/docs/scripts/defunctr.js b/docs/scripts/defunctr.js index b8161b9..d9f52ec 100644 --- a/docs/scripts/defunctr.js +++ b/docs/scripts/defunctr.js @@ -1,12 +1,12 @@ /*! - * Defunctr 1.3.0 + * Defunctr 1.3.1 * https://github.com/cinecove/defunctr * * Copyright 2012 - 2017 Cinecove Digital, LLC and other contributors * Released under the MIT license * https://github.com/cinecove/defunctr/blob/master/LICENSE.md * - * Build Date: 2017-02-10T07:58:02.681Z + * Build Date: 2017-08-14T02:37:48.958Z */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : @@ -22,12 +22,12 @@ var noop = function noop() {}; var console = browserWindow && browserWindow.console ? browserWindow.console : undefined; var log = console ? console.log || noop : noop; var warn = console ? console.warn || log : noop; -var error$1 = console ? console.error || log : noop; +var error = console ? console.error || log : noop; var logger = { log: log, warn: warn, - error: error$1 + error: error }; var htmlElementConstructorCheck = function () { @@ -67,8 +67,16 @@ var firefox = function () { return installTriggerCheck(); }; +var operaVersionCheck = function () { + return Boolean(browserWindow && browserWindow.opera && browserWindow.opera.version !== undef); +}; + +var opera = function () { + return operaVersionCheck(); +}; + var webkit = function () { - return webKitTransformCheck() && msWriteProfilerMarkCheck() === false && !firefox(); + return webKitTransformCheck() && msWriteProfilerMarkCheck() === false && !firefox() && !opera(); }; var chrome = function () { @@ -95,14 +103,6 @@ var khtml = function () { return khtmlMarqueeCheck() && !safari(); }; -var operaVersionCheck = function () { - return Boolean(browserWindow && browserWindow.opera && browserWindow.opera.version !== undef); -}; - -var opera = function () { - return operaVersionCheck(); -}; - var ie = function () { @@ -491,12 +491,38 @@ var tagger = function (detective) { var Defunctr = function Defunctr() { classCallCheck(this, Defunctr); - this.version = '1.3.0'; - this.detective = new Detective(); + this.version = '1.3.1'; + this.browser = function browser() { + var d = new Detective(); + return { + vendor: d.isChrome ? 'chrome' : d.isEdge ? 'edge' : d.isFirefox ? 'firefox' : d.isIE ? 'ie' : d.isKhtml ? 'khtml' : d.isOpera && d.isOperaNext ? 'opera' : d.isSafari ? 'safari' : 'unknown', + version: !d.isIE ? 0 : d.ieIsBelowVersion6 ? 5 : d.ieIsVersion6 ? 6 : d.ieIsVersion7 ? 7 : d.ieIsVersion8 ? 8 : d.ieIsVersion9 ? 9 : d.ieIsVersion10 ? 10 : d.ieIsVersion11 ? 11 : d.ieIsAboveVersion11 ? 12 : 0, + standards: d.standardsCompliant, + detected: !d.isUndetected, + webkit: d.isWebKit + }; + }; }; var defunctr = new Defunctr(); +try { + Object.defineProperty(defunctr, 'detective', { + get: function get$$1() { + try { + var warn = logger && logger.warn ? logger.warn : logger.log; + warn('defunctr.detective is deprecated and will be removed in 2.0. Please use window.browser instead.'); + } catch (oe) { + } + return new Detective(); + }, + enumerable: true, + configurable: true + }); +} catch (ex) { + defunctr.detective = new Detective(); +} + if (browserWindow) { tagger(new Detective()).tag(); @@ -504,7 +530,11 @@ if (browserWindow) { try { Object.defineProperty(browserWindow, 'Defunctr', { get: function get$$1() { - logger.warn('window.Defunctr is deprecated and will be removed. Please use window.defunctr'); + try { + var warn = logger && logger.warn ? logger.warn : logger.log; + warn('window.Defunctr is deprecated and will be removed in 2.0. Please use window.defunctr instead.'); + } catch (oe) { + } return defunctr; }, enumerable: true, diff --git a/nuget/Defunctr.1.3.1.nupkg b/nuget/Defunctr.1.3.1.nupkg new file mode 100644 index 0000000..ab83681 Binary files /dev/null and b/nuget/Defunctr.1.3.1.nupkg differ diff --git a/release/defunctr-1.3.1.js b/release/defunctr-1.3.1.js new file mode 100644 index 0000000..d9f52ec --- /dev/null +++ b/release/defunctr-1.3.1.js @@ -0,0 +1,550 @@ +/*! + * Defunctr 1.3.1 + * https://github.com/cinecove/defunctr + * + * Copyright 2012 - 2017 Cinecove Digital, LLC and other contributors + * Released under the MIT license + * https://github.com/cinecove/defunctr/blob/master/LICENSE.md + * + * Build Date: 2017-08-14T02:37:48.958Z + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.defunctr = factory()); +}(this, (function () { 'use strict'; + +var browserWindow = window || null; +var browserDocument = browserWindow ? browserWindow.document || null : null; +var undef = void 0; + +var noop = function noop() {}; +var console = browserWindow && browserWindow.console ? browserWindow.console : undefined; +var log = console ? console.log || noop : noop; +var warn = console ? console.warn || log : noop; +var error = console ? console.error || log : noop; + +var logger = { + log: log, + warn: warn, + error: error +}; + +var htmlElementConstructorCheck = function () { + return Boolean(browserWindow && browserWindow.HTMLElement && Object.prototype.toString.call(browserWindow.HTMLElement).indexOf('Constructor') > 0); +}; + +var safari = function () { + return htmlElementConstructorCheck(); +}; + + +function hasOperaHeader() { + try { + return 'WebkitTransform' in browserDocument.documentElement.style && !!browserWindow.opr && !!browserWindow.opr.addons; + } catch (ex) { + return false; + } +} + +var operaNext = function () { + return hasOperaHeader(); +}; + +var webKitTransformCheck = function () { + return Boolean(browserDocument && browserDocument.documentElement && browserDocument.documentElement.style && 'WebkitTransform' in browserDocument.documentElement.style); +}; + +var msWriteProfilerMarkCheck = function () { + return Boolean(browserWindow && typeof browserWindow.msWriteProfilerMark !== 'undefined'); +}; + +var installTriggerCheck = function () { + return Boolean(browserWindow && typeof browserWindow.InstallTrigger !== 'undefined'); +}; + +var firefox = function () { + return installTriggerCheck(); +}; + +var operaVersionCheck = function () { + return Boolean(browserWindow && browserWindow.opera && browserWindow.opera.version !== undef); +}; + +var opera = function () { + return operaVersionCheck(); +}; + +var webkit = function () { + return webKitTransformCheck() && msWriteProfilerMarkCheck() === false && !firefox() && !opera(); +}; + +var chrome = function () { + return !safari() && !operaNext() && webkit(); +}; + +var activeXCheck = function () { + return 'ActiveXObject' in browserWindow; +}; + +var functionalEventCheck = function () { + return Boolean(browserWindow && browserWindow.Event && typeof browserWindow.Event === 'function'); +}; + +var edge = function () { + return Boolean(!activeXCheck() && functionalEventCheck() && msWriteProfilerMarkCheck()); +}; + +var khtmlMarqueeCheck = function () { + return Boolean(browserDocument && browserDocument.documentElement && browserDocument.documentElement.style && 'KhtmlMarquee' in browserDocument.documentElement.style); +}; + +var khtml = function () { + return khtmlMarqueeCheck() && !safari(); +}; + + + +var ie = function () { + return activeXCheck(); +}; + +var undetected = function () { + return !webkit() && !ie() && !chrome() && !edge() && !firefox() && !opera() && !operaNext() && !safari(); +}; + + +var hasBackCompatCSS1Check = function () { + return Boolean(browserDocument && browserDocument.compatMode && (browserDocument.compatMode === 'CSS1Compat' || browserDocument.compatMode === 'BackCompat')); +}; + +var isAboveVersion5 = function () { + return ie() && hasBackCompatCSS1Check(); +}; + +var hasXmlHttpRequestCheck = function () { + return Boolean(browserWindow && typeof browserWindow.XMLHttpRequest !== 'undefined'); +}; + +var isAboveVersion6 = function () { + return ie() && hasBackCompatCSS1Check() && hasXmlHttpRequestCheck(); +}; + +var hasQuerySelectorCheck = function () { + return Boolean(browserDocument && typeof browserDocument.querySelector !== 'undefined'); +}; + +var isAboveVersion7 = function () { + return ie() && hasQuerySelectorCheck(); +}; + +var hasAddEventListenerCheck = function () { + return Boolean(browserDocument && typeof browserDocument.addEventListener !== 'undefined'); +}; + +var isAboveVersion8 = function () { + return ie() && hasAddEventListenerCheck(); +}; + +var hasAtobCheck = function () { + return Boolean(browserWindow && typeof browserWindow.atob !== 'undefined'); +}; + +var isAboveVersion9 = function () { + return ie() && hasAtobCheck(); +}; + +var attachEventCheck = function () { + return Boolean(browserDocument && typeof browserDocument.attachEvent !== 'undefined'); +}; + +var isAboveVersion10 = function () { + return ie() && hasAtobCheck() && !attachEventCheck(); +}; + +var isAboveVersion11 = function () { + return ie() && functionalEventCheck(); +}; + +var hasCompatModeCheck = function () { + return Boolean(browserDocument && typeof browserDocument.compatMode !== 'undefined'); +}; + +var isBelowVersion6 = function () { + return ie() && !hasCompatModeCheck(); +}; + +var hasBackCompatCheck = function () { + return Boolean(browserDocument && browserDocument.compatMode && browserDocument.compatMode === 'BackCompat'); +}; + +var isBelowVersion7 = function () { + return ie() && !hasBackCompatCheck() && !hasXmlHttpRequestCheck(); +}; + +var isBelowVersion8 = function () { + return ie() && !hasQuerySelectorCheck(); +}; + +var isBelowVersion9 = function () { + return ie() && !hasAddEventListenerCheck(); +}; + +var isBelowVersion10 = function () { + return ie() && !hasAtobCheck(); +}; + +var isBelowVersion11 = function () { + return ie() && attachEventCheck(); +}; + +var isBelowVersion12 = function () { + return ie() && !functionalEventCheck(); +}; + +var isVersion6 = function () { + return isAboveVersion5() && isBelowVersion7(); +}; + +var isVersion7 = function () { + return isAboveVersion6() && isBelowVersion8(); +}; + +var isVersion8 = function () { + return isAboveVersion7() && isBelowVersion9(); +}; + +var isVersion9 = function () { + return isAboveVersion8() && isBelowVersion10(); +}; + +var isVersion10 = function () { + return isAboveVersion9() && isBelowVersion11(); +}; + +var isVersion11 = function () { + return isAboveVersion10() && isBelowVersion12(); +}; + + + +var ie$1 = (Object.freeze || Object)({ + isAboveVersion5: isAboveVersion5, + isAboveVersion6: isAboveVersion6, + isAboveVersion7: isAboveVersion7, + isAboveVersion8: isAboveVersion8, + isAboveVersion9: isAboveVersion9, + isAboveVersion10: isAboveVersion10, + isAboveVersion11: isAboveVersion11, + isBelowVersion6: isBelowVersion6, + isBelowVersion7: isBelowVersion7, + isBelowVersion8: isBelowVersion8, + isBelowVersion9: isBelowVersion9, + isBelowVersion10: isBelowVersion10, + isBelowVersion11: isBelowVersion11, + isBelowVersion12: isBelowVersion12, + isVersion6: isVersion6, + isVersion7: isVersion7, + isVersion8: isVersion8, + isVersion9: isVersion9, + isVersion10: isVersion10, + isVersion11: isVersion11 +}); + +var hasChromeWebstoreInstallCheck = function () { + return Boolean(browserWindow && browserWindow.chrome && browserWindow.chrome.webstore && browserWindow.chrome.webstore.install); +}; + +var isAboveVersion15 = function () { + return chrome() && hasChromeWebstoreInstallCheck(); +}; + + + +var chrome$1 = (Object.freeze || Object)({ + isAboveVersion15: isAboveVersion15 +}); + +var versions = { + ie: ie$1, + chrome: chrome$1 +}; + +var classCallCheck = function (instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +}; + +var Detective = function Detective() { + classCallCheck(this, Detective); + + this.isWebKit = webkit(); + this.isOpera = opera(); + this.isIE = ie(); + this.isFirefox = firefox(); + this.isSafari = safari(); + this.isKhtml = khtml(); + this.isOperaNext = operaNext(); + this.isChrome = chrome(); + this.isEdge = edge(); + this.isUndetected = undetected(); + + this.standardsCompliant = versions.ie.isAboveVersion9() || !ie(); + + this.chromeIsAbove15 = versions.chrome.isAboveVersion15(); + + this.ieIsVersion11 = versions.ie.isVersion11(); + this.ieIsVersion10 = versions.ie.isVersion10(); + this.ieIsVersion9 = versions.ie.isVersion9(); + this.ieIsVersion8 = versions.ie.isVersion8(); + this.ieIsVersion7 = versions.ie.isVersion7(); + this.ieIsVersion6 = versions.ie.isVersion6(); + + this.ieIsBelowVersion6 = versions.ie.isBelowVersion6(); + this.ieIsBelowVersion7 = versions.ie.isBelowVersion7(); + this.ieIsBelowVersion8 = versions.ie.isBelowVersion8(); + this.ieIsBelowVersion9 = versions.ie.isBelowVersion9(); + this.ieIsBelowVersion10 = versions.ie.isBelowVersion10(); + this.ieIsBelowVersion11 = versions.ie.isBelowVersion11(); + this.ieIsBelowVersion12 = versions.ie.isBelowVersion12(); + + this.ieIsAboveVersion5 = versions.ie.isAboveVersion5(); + this.ieIsAboveVersion6 = versions.ie.isAboveVersion6(); + this.ieIsAboveVersion7 = versions.ie.isAboveVersion7(); + this.ieIsAboveVersion8 = versions.ie.isAboveVersion8(); + this.ieIsAboveVersion9 = versions.ie.isAboveVersion9(); + this.ieIsAboveVersion10 = versions.ie.isAboveVersion10(); + this.ieIsAboveVersion11 = versions.ie.isAboveVersion11(); +}; + +var classes = { + IE: 'ie', + CHROME: 'chrome', + SAFARI: 'safari', + OPERA: 'opera', + OPERANEXT: 'opera-next', + FIREFOX: 'firefox', + KHTML: 'khtml', + WEBKIT: 'webkit', + EDGE: 'edge', + UNKNOWN: 'undetected-browser', + + IE_LESSTHAN_6: 'ie-lt-6', + IE_LESSTHAN_7: 'ie-lt-7', + IE_LESSTHAN_8: 'ie-lt-8', + IE_LESSTHAN_9: 'ie-lt-9', + IE_LESSTHAN_10: 'ie-lt-10', + IE_LESSTHAN_11: 'ie-lt-11', + IE_LESSTHAN_12: 'ie-lt-12', + + IE_GREATERTHAN_6: 'ie-gt-6', + IE_GREATERTHAN_7: 'ie-gt-7', + IE_GREATERTHAN_8: 'ie-gt-8', + IE_GREATERTHAN_9: 'ie-gt-9', + IE_GREATERTHAN_10: 'ie-gt-10', + IE_GREATERTHAN_11: 'ie-gt-11', + + IE_VERSION_6: 'ie-version-6', + IE_VERSION_7: 'ie-version-7', + IE_VERSION_8: 'ie-version-8', + IE_VERSION_9: 'ie-version-9', + IE_VERSION_10: 'ie-version-10', + IE_VERSION_11: 'ie-version-11' +}; + +var tags = { + DEFUNCTR: 'defunctr', + VERSION_OFF: 'defunctr-version-off', + IE_ONLY: 'defunctr-ie-only', + IE_LESSTHAN_OFF: 'defunctr-lt-off', + IE_GREATERTHAN_OFF: 'defunctr-gt-off', + NOTAGGING: 'defunctr-off' +}; + +var prefix = ''; + +var prefixedClassFor = function (className) { + return '' + prefix + className; +}; + +var optionalModernizr = { + modernizr: undefined +}; + +if (typeof require === 'function') { + require(['modernizr'], function (m) { + optionalModernizr.modernizr = m; + }); +} else { + if (browserWindow) { + if (browserWindow.Modernizr) { + optionalModernizr.modernizr = browserWindow.Modernizr; + } else if (browserWindow.modernizr) { + optionalModernizr.modernizr = browserWindow.modernizr; + } + } +} + +var docElement = browserDocument && browserDocument.documentElement && browserDocument.documentElement.className ? browserDocument.documentElement : { className: '' }; + +var Modernizr = optionalModernizr.modernizr; + +function makeTest(item) { + return function test() { + return item; + }; +} + +function test(key, test) { + if (Modernizr) { + Modernizr.addTest(key, test); + } else { + if (test()) { + addTag(key); + } else { + addTag('no-' + key); + } + } +} + +function removeTag(tag) { + docElement.className = docElement.className.replace(new RegExp('\\b' + tag + '\\b'), ''); +} + +function addTag(tag) { + if (!hasTag(tag)) { + docElement.className += docElement.className.length > 0 ? ' ' + tag : tag; + } +} + +function hasTag(tag) { + return docElement.className.match(new RegExp('\\b' + tag + '\\b')); +} + +function tagPage(detective) { + if (!hasTag(tags.NOTAGGING)) { + test(prefixedClassFor(classes.IE), makeTest(detective.isIE)); + + if (!hasTag(tags.IE_ONLY)) { + test(prefixedClassFor(classes.CHROME), makeTest(detective.isChrome)); + test(prefixedClassFor(classes.SAFARI), makeTest(detective.isSafari)); + test(prefixedClassFor(classes.OPERA), makeTest(detective.isOpera)); + test(prefixedClassFor(classes.OPERANEXT), makeTest(detective.isOperaNext)); + test(prefixedClassFor(classes.FIREFOX), makeTest(detective.isFirefox)); + test(prefixedClassFor(classes.KHTML), makeTest(detective.isKhtml)); + test(prefixedClassFor(classes.WEBKIT), makeTest(detective.isWebKit)); + test(prefixedClassFor(classes.EDGE), makeTest(detective.isEdge)); + test(prefixedClassFor(classes.UNKNOWN), makeTest(detective.isUndetected)); + } + + if (!hasTag(tags.IE_LESSTHAN_OFF)) { + test(prefixedClassFor(classes.IE_LESSTHAN_6), makeTest(detective.ieIsBelowVersion6)); + test(prefixedClassFor(classes.IE_LESSTHAN_7), makeTest(detective.ieIsBelowVersion7)); + test(prefixedClassFor(classes.IE_LESSTHAN_8), makeTest(detective.ieIsBelowVersion8)); + test(prefixedClassFor(classes.IE_LESSTHAN_9), makeTest(detective.ieIsBelowVersion9)); + test(prefixedClassFor(classes.IE_LESSTHAN_10), makeTest(detective.ieIsBelowVersion10)); + test(prefixedClassFor(classes.IE_LESSTHAN_11), makeTest(detective.ieIsBelowVersion11)); + test(prefixedClassFor(classes.IE_LESSTHAN_12), makeTest(detective.ieIsBelowVersion12)); + } + + if (!hasTag(tags.IE_GREATERTHAN_OFF)) { + test(prefixedClassFor(classes.IE_GREATERTHAN_6), makeTest(detective.ieIsAboveVersion6)); + test(prefixedClassFor(classes.IE_GREATERTHAN_7), makeTest(detective.ieIsAboveVersion7)); + test(prefixedClassFor(classes.IE_GREATERTHAN_8), makeTest(detective.ieIsAboveVersion8)); + test(prefixedClassFor(classes.IE_GREATERTHAN_9), makeTest(detective.ieIsAboveVersion9)); + test(prefixedClassFor(classes.IE_GREATERTHAN_10), makeTest(detective.ieIsAboveVersion10)); + test(prefixedClassFor(classes.IE_GREATERTHAN_11), makeTest(detective.ieIsAboveVersion11)); + } + + if (!hasTag(tags.VERSION_OFF)) { + test(prefixedClassFor(classes.IE_VERSION_6), makeTest(detective.ieIsVersion6)); + test(prefixedClassFor(classes.IE_VERSION_7), makeTest(detective.ieIsVersion7)); + test(prefixedClassFor(classes.IE_VERSION_8), makeTest(detective.ieIsVersion8)); + test(prefixedClassFor(classes.IE_VERSION_9), makeTest(detective.ieIsVersion9)); + test(prefixedClassFor(classes.IE_VERSION_10), makeTest(detective.ieIsVersion10)); + test(prefixedClassFor(classes.IE_VERSION_11), makeTest(detective.ieIsVersion11)); + } + } + cleanTags(); +} + +function cleanTags() { + removeTag(tags.IE_GREATERTHAN_OFF); + removeTag(tags.IE_LESSTHAN_OFF); + removeTag(tags.VERSION_OFF); + removeTag(tags.IE_ONLY); + removeTag(tags.DEFUNCTR); + removeTag(tags.NOTAGGING); +} + +var tagger = function (detective) { + return { + tag: function tag() { + if (browserDocument) { + tagPage(detective); + } + } + }; +}; + +var Defunctr = function Defunctr() { + classCallCheck(this, Defunctr); + + this.version = '1.3.1'; + this.browser = function browser() { + var d = new Detective(); + return { + vendor: d.isChrome ? 'chrome' : d.isEdge ? 'edge' : d.isFirefox ? 'firefox' : d.isIE ? 'ie' : d.isKhtml ? 'khtml' : d.isOpera && d.isOperaNext ? 'opera' : d.isSafari ? 'safari' : 'unknown', + version: !d.isIE ? 0 : d.ieIsBelowVersion6 ? 5 : d.ieIsVersion6 ? 6 : d.ieIsVersion7 ? 7 : d.ieIsVersion8 ? 8 : d.ieIsVersion9 ? 9 : d.ieIsVersion10 ? 10 : d.ieIsVersion11 ? 11 : d.ieIsAboveVersion11 ? 12 : 0, + standards: d.standardsCompliant, + detected: !d.isUndetected, + webkit: d.isWebKit + }; + }; +}; + +var defunctr = new Defunctr(); + +try { + Object.defineProperty(defunctr, 'detective', { + get: function get$$1() { + try { + var warn = logger && logger.warn ? logger.warn : logger.log; + warn('defunctr.detective is deprecated and will be removed in 2.0. Please use window.browser instead.'); + } catch (oe) { + } + return new Detective(); + }, + enumerable: true, + configurable: true + }); +} catch (ex) { + defunctr.detective = new Detective(); +} + +if (browserWindow) { + tagger(new Detective()).tag(); + + browserWindow.defunctr = defunctr; + try { + Object.defineProperty(browserWindow, 'Defunctr', { + get: function get$$1() { + try { + var warn = logger && logger.warn ? logger.warn : logger.log; + warn('window.Defunctr is deprecated and will be removed in 2.0. Please use window.defunctr instead.'); + } catch (oe) { + } + return defunctr; + }, + enumerable: true, + configurable: true + }); + } catch (ex) { + browserWindow.Defunctr = defunctr; + } +} + +return defunctr; + +}))); diff --git a/release/defunctr-1.3.1.min.js b/release/defunctr-1.3.1.min.js new file mode 100644 index 0000000..7fd9d17 --- /dev/null +++ b/release/defunctr-1.3.1.min.js @@ -0,0 +1,11 @@ +/*! + * Defunctr 1.3.1 + * https://github.com/cinecove/defunctr + * + * Copyright 2012 - 2017 Cinecove Digital, LLC and other contributors + * Released under the MIT license + * https://github.com/cinecove/defunctr/blob/master/LICENSE.md + * + * Build Date: 2017-08-14T02:37:48.958Z + */ +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):e.defunctr=n()}(this,function(){"use strict";function e(){try{return"WebkitTransform"in E.documentElement.style&&!!c.opr&&!!c.opr.addons}catch(e){return!1}}function n(e){return function(){return e}}function i(e,n){Modernizr?Modernizr.addTest(e,n):r(n()?e:"no-"+e)}function o(e){se.className=se.className.replace(new RegExp("\\b"+e+"\\b"),"")}function r(e){t(e)||(se.className+=se.className.length>0?" "+e:e)}function t(e){return se.className.match(new RegExp("\\b"+e+"\\b"))}function s(e){t(oe.NOTAGGING)||(i(re(ie.IE),n(e.isIE)),t(oe.IE_ONLY)||(i(re(ie.CHROME),n(e.isChrome)),i(re(ie.SAFARI),n(e.isSafari)),i(re(ie.OPERA),n(e.isOpera)),i(re(ie.OPERANEXT),n(e.isOperaNext)),i(re(ie.FIREFOX),n(e.isFirefox)),i(re(ie.KHTML),n(e.isKhtml)),i(re(ie.WEBKIT),n(e.isWebKit)),i(re(ie.EDGE),n(e.isEdge)),i(re(ie.UNKNOWN),n(e.isUndetected))),t(oe.IE_LESSTHAN_OFF)||(i(re(ie.IE_LESSTHAN_6),n(e.ieIsBelowVersion6)),i(re(ie.IE_LESSTHAN_7),n(e.ieIsBelowVersion7)),i(re(ie.IE_LESSTHAN_8),n(e.ieIsBelowVersion8)),i(re(ie.IE_LESSTHAN_9),n(e.ieIsBelowVersion9)),i(re(ie.IE_LESSTHAN_10),n(e.ieIsBelowVersion10)),i(re(ie.IE_LESSTHAN_11),n(e.ieIsBelowVersion11)),i(re(ie.IE_LESSTHAN_12),n(e.ieIsBelowVersion12))),t(oe.IE_GREATERTHAN_OFF)||(i(re(ie.IE_GREATERTHAN_6),n(e.ieIsAboveVersion6)),i(re(ie.IE_GREATERTHAN_7),n(e.ieIsAboveVersion7)),i(re(ie.IE_GREATERTHAN_8),n(e.ieIsAboveVersion8)),i(re(ie.IE_GREATERTHAN_9),n(e.ieIsAboveVersion9)),i(re(ie.IE_GREATERTHAN_10),n(e.ieIsAboveVersion10)),i(re(ie.IE_GREATERTHAN_11),n(e.ieIsAboveVersion11))),t(oe.VERSION_OFF)||(i(re(ie.IE_VERSION_6),n(e.ieIsVersion6)),i(re(ie.IE_VERSION_7),n(e.ieIsVersion7)),i(re(ie.IE_VERSION_8),n(e.ieIsVersion8)),i(re(ie.IE_VERSION_9),n(e.ieIsVersion9)),i(re(ie.IE_VERSION_10),n(e.ieIsVersion10)),i(re(ie.IE_VERSION_11),n(e.ieIsVersion11)))),u()}function u(){o(oe.IE_GREATERTHAN_OFF),o(oe.IE_LESSTHAN_OFF),o(oe.VERSION_OFF),o(oe.IE_ONLY),o(oe.DEFUNCTR),o(oe.NOTAGGING)}var c=window||null,E=c?c.document||null:null,f=function(){},I=c&&c.console?c.console:undefined,l=I?I.log||f:f,a={log:l,warn:I?I.warn||l:f,error:I?I.error||l:f},d=function(){return Boolean(c&&c.HTMLElement&&Object.prototype.toString.call(c.HTMLElement).indexOf("Constructor")>0)},V=function(){return d()},_=function(){return e()},A=function(){return Boolean(E&&E.documentElement&&E.documentElement.style&&"WebkitTransform"in E.documentElement.style)},m=function(){return Boolean(c&&"undefined"!=typeof c.msWriteProfilerMark)},N=function(){return Boolean(c&&"undefined"!=typeof c.InstallTrigger)},T=function(){return N()},b=function(){return Boolean(c&&c.opera&&void 0!==c.opera.version)},h=function(){return b()},w=function(){return A()&&!1===m()&&!T()&&!h()},R=function(){return!V()&&!_()&&w()},S=function(){return"ActiveXObject"in c},v=function(){return Boolean(c&&c.Event&&"function"==typeof c.Event)},O=function(){return Boolean(!S()&&v()&&m())},p=function(){return Boolean(E&&E.documentElement&&E.documentElement.style&&"KhtmlMarquee"in E.documentElement.style)},B=function(){return p()&&!V()},H=function(){return S()},y=function(){return!(w()||H()||R()||O()||T()||h()||_()||V())},F=function(){return Boolean(E&&E.compatMode&&("CSS1Compat"===E.compatMode||"BackCompat"===E.compatMode))},g=function(){return H()&&F()},G=function(){return Boolean(c&&"undefined"!=typeof c.XMLHttpRequest)},L=function(){return H()&&F()&&G()},M=function(){return Boolean(E&&"undefined"!=typeof E.querySelector)},C=function(){return H()&&M()},x=function(){return Boolean(E&&"undefined"!=typeof E.addEventListener)},K=function(){return H()&&x()},z=function(){return Boolean(c&&"undefined"!=typeof c.atob)},k=function(){return H()&&z()},W=function(){return Boolean(E&&"undefined"!=typeof E.attachEvent)},j=function(){return H()&&z()&&!W()},P=function(){return Boolean(E&&"undefined"!=typeof E.compatMode)},D=function(){return Boolean(E&&E.compatMode&&"BackCompat"===E.compatMode)},U=function(){return H()&&!D()&&!G()},X=function(){return H()&&!M()},q=function(){return H()&&!x()},Y=function(){return H()&&!z()},J=function(){return H()&&W()},Q=function(){return H()&&!v()},Z=function(){return Boolean(c&&c.chrome&&c.chrome.webstore&&c.chrome.webstore.install)},$={ie:(Object.freeze||Object)({isAboveVersion5:g,isAboveVersion6:L,isAboveVersion7:C,isAboveVersion8:K,isAboveVersion9:k,isAboveVersion10:j,isAboveVersion11:function(){return H()&&v()},isBelowVersion6:function(){return H()&&!P()},isBelowVersion7:U,isBelowVersion8:X,isBelowVersion9:q,isBelowVersion10:Y,isBelowVersion11:J,isBelowVersion12:Q,isVersion6:function(){return g()&&U()},isVersion7:function(){return L()&&X()},isVersion8:function(){return C()&&q()},isVersion9:function(){return K()&&Y()},isVersion10:function(){return k()&&J()},isVersion11:function(){return j()&&Q()}}),chrome:(Object.freeze||Object)({isAboveVersion15:function(){return R()&&Z()}})},ee=function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")},ne=function Ee(){ee(this,Ee),this.isWebKit=w(),this.isOpera=h(),this.isIE=H(),this.isFirefox=T(),this.isSafari=V(),this.isKhtml=B(),this.isOperaNext=_(),this.isChrome=R(),this.isEdge=O(),this.isUndetected=y(),this.standardsCompliant=$.ie.isAboveVersion9()||!H(),this.chromeIsAbove15=$.chrome.isAboveVersion15(),this.ieIsVersion11=$.ie.isVersion11(),this.ieIsVersion10=$.ie.isVersion10(),this.ieIsVersion9=$.ie.isVersion9(),this.ieIsVersion8=$.ie.isVersion8(),this.ieIsVersion7=$.ie.isVersion7(),this.ieIsVersion6=$.ie.isVersion6(),this.ieIsBelowVersion6=$.ie.isBelowVersion6(),this.ieIsBelowVersion7=$.ie.isBelowVersion7(),this.ieIsBelowVersion8=$.ie.isBelowVersion8(),this.ieIsBelowVersion9=$.ie.isBelowVersion9(),this.ieIsBelowVersion10=$.ie.isBelowVersion10(),this.ieIsBelowVersion11=$.ie.isBelowVersion11(),this.ieIsBelowVersion12=$.ie.isBelowVersion12(),this.ieIsAboveVersion5=$.ie.isAboveVersion5(),this.ieIsAboveVersion6=$.ie.isAboveVersion6(),this.ieIsAboveVersion7=$.ie.isAboveVersion7(),this.ieIsAboveVersion8=$.ie.isAboveVersion8(),this.ieIsAboveVersion9=$.ie.isAboveVersion9(),this.ieIsAboveVersion10=$.ie.isAboveVersion10(),this.ieIsAboveVersion11=$.ie.isAboveVersion11()},ie={IE:"ie",CHROME:"chrome",SAFARI:"safari",OPERA:"opera",OPERANEXT:"opera-next",FIREFOX:"firefox",KHTML:"khtml",WEBKIT:"webkit",EDGE:"edge",UNKNOWN:"undetected-browser",IE_LESSTHAN_6:"ie-lt-6",IE_LESSTHAN_7:"ie-lt-7",IE_LESSTHAN_8:"ie-lt-8",IE_LESSTHAN_9:"ie-lt-9",IE_LESSTHAN_10:"ie-lt-10",IE_LESSTHAN_11:"ie-lt-11",IE_LESSTHAN_12:"ie-lt-12",IE_GREATERTHAN_6:"ie-gt-6",IE_GREATERTHAN_7:"ie-gt-7",IE_GREATERTHAN_8:"ie-gt-8",IE_GREATERTHAN_9:"ie-gt-9",IE_GREATERTHAN_10:"ie-gt-10",IE_GREATERTHAN_11:"ie-gt-11",IE_VERSION_6:"ie-version-6",IE_VERSION_7:"ie-version-7",IE_VERSION_8:"ie-version-8",IE_VERSION_9:"ie-version-9",IE_VERSION_10:"ie-version-10",IE_VERSION_11:"ie-version-11"},oe={DEFUNCTR:"defunctr",VERSION_OFF:"defunctr-version-off",IE_ONLY:"defunctr-ie-only",IE_LESSTHAN_OFF:"defunctr-lt-off",IE_GREATERTHAN_OFF:"defunctr-gt-off",NOTAGGING:"defunctr-off"},re=function(e){return""+e},te={modernizr:undefined};"function"==typeof require?require(["modernizr"],function(e){te.modernizr=e}):c&&(c.Modernizr?te.modernizr=c.Modernizr:c.modernizr&&(te.modernizr=c.modernizr));var se=E&&E.documentElement&&E.documentElement.className?E.documentElement:{className:""},Modernizr=te.modernizr,ue=new function fe(){ee(this,fe),this.version="1.3.1",this.browser=function(){var e=new ne;return{vendor:e.isChrome?"chrome":e.isEdge?"edge":e.isFirefox?"firefox":e.isIE?"ie":e.isKhtml?"khtml":e.isOpera&&e.isOperaNext?"opera":e.isSafari?"safari":"unknown",version:e.isIE?e.ieIsBelowVersion6?5:e.ieIsVersion6?6:e.ieIsVersion7?7:e.ieIsVersion8?8:e.ieIsVersion9?9:e.ieIsVersion10?10:e.ieIsVersion11?11:e.ieIsAboveVersion11?12:0:0,standards:e.standardsCompliant,detected:!e.isUndetected,webkit:e.isWebKit}}};try{Object.defineProperty(ue,"detective",{get:function(){try{(a&&a.warn?a.warn:a.log)("defunctr.detective is deprecated and will be removed in 2.0. Please use window.browser instead.")}catch(e){}return new ne},enumerable:!0,configurable:!0})}catch(ce){ue.detective=new ne}if(c){(function(e){return{tag:function(){E&&s(e)}}})(new ne).tag(),c.defunctr=ue;try{Object.defineProperty(c,"Defunctr",{get:function(){try{(a&&a.warn?a.warn:a.log)("window.Defunctr is deprecated and will be removed in 2.0. Please use window.defunctr instead.")}catch(e){}return ue},enumerable:!0,configurable:!0})}catch(ce){c.Defunctr=ue}}return ue}); \ No newline at end of file diff --git a/release/defunctr.js b/release/defunctr.js index b8161b9..d9f52ec 100644 --- a/release/defunctr.js +++ b/release/defunctr.js @@ -1,12 +1,12 @@ /*! - * Defunctr 1.3.0 + * Defunctr 1.3.1 * https://github.com/cinecove/defunctr * * Copyright 2012 - 2017 Cinecove Digital, LLC and other contributors * Released under the MIT license * https://github.com/cinecove/defunctr/blob/master/LICENSE.md * - * Build Date: 2017-02-10T07:58:02.681Z + * Build Date: 2017-08-14T02:37:48.958Z */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : @@ -22,12 +22,12 @@ var noop = function noop() {}; var console = browserWindow && browserWindow.console ? browserWindow.console : undefined; var log = console ? console.log || noop : noop; var warn = console ? console.warn || log : noop; -var error$1 = console ? console.error || log : noop; +var error = console ? console.error || log : noop; var logger = { log: log, warn: warn, - error: error$1 + error: error }; var htmlElementConstructorCheck = function () { @@ -67,8 +67,16 @@ var firefox = function () { return installTriggerCheck(); }; +var operaVersionCheck = function () { + return Boolean(browserWindow && browserWindow.opera && browserWindow.opera.version !== undef); +}; + +var opera = function () { + return operaVersionCheck(); +}; + var webkit = function () { - return webKitTransformCheck() && msWriteProfilerMarkCheck() === false && !firefox(); + return webKitTransformCheck() && msWriteProfilerMarkCheck() === false && !firefox() && !opera(); }; var chrome = function () { @@ -95,14 +103,6 @@ var khtml = function () { return khtmlMarqueeCheck() && !safari(); }; -var operaVersionCheck = function () { - return Boolean(browserWindow && browserWindow.opera && browserWindow.opera.version !== undef); -}; - -var opera = function () { - return operaVersionCheck(); -}; - var ie = function () { @@ -491,12 +491,38 @@ var tagger = function (detective) { var Defunctr = function Defunctr() { classCallCheck(this, Defunctr); - this.version = '1.3.0'; - this.detective = new Detective(); + this.version = '1.3.1'; + this.browser = function browser() { + var d = new Detective(); + return { + vendor: d.isChrome ? 'chrome' : d.isEdge ? 'edge' : d.isFirefox ? 'firefox' : d.isIE ? 'ie' : d.isKhtml ? 'khtml' : d.isOpera && d.isOperaNext ? 'opera' : d.isSafari ? 'safari' : 'unknown', + version: !d.isIE ? 0 : d.ieIsBelowVersion6 ? 5 : d.ieIsVersion6 ? 6 : d.ieIsVersion7 ? 7 : d.ieIsVersion8 ? 8 : d.ieIsVersion9 ? 9 : d.ieIsVersion10 ? 10 : d.ieIsVersion11 ? 11 : d.ieIsAboveVersion11 ? 12 : 0, + standards: d.standardsCompliant, + detected: !d.isUndetected, + webkit: d.isWebKit + }; + }; }; var defunctr = new Defunctr(); +try { + Object.defineProperty(defunctr, 'detective', { + get: function get$$1() { + try { + var warn = logger && logger.warn ? logger.warn : logger.log; + warn('defunctr.detective is deprecated and will be removed in 2.0. Please use window.browser instead.'); + } catch (oe) { + } + return new Detective(); + }, + enumerable: true, + configurable: true + }); +} catch (ex) { + defunctr.detective = new Detective(); +} + if (browserWindow) { tagger(new Detective()).tag(); @@ -504,7 +530,11 @@ if (browserWindow) { try { Object.defineProperty(browserWindow, 'Defunctr', { get: function get$$1() { - logger.warn('window.Defunctr is deprecated and will be removed. Please use window.defunctr'); + try { + var warn = logger && logger.warn ? logger.warn : logger.log; + warn('window.Defunctr is deprecated and will be removed in 2.0. Please use window.defunctr instead.'); + } catch (oe) { + } return defunctr; }, enumerable: true, diff --git a/release/defunctr.min.js b/release/defunctr.min.js index 45679d7..7fd9d17 100644 --- a/release/defunctr.min.js +++ b/release/defunctr.min.js @@ -1,11 +1,11 @@ /*! - * Defunctr 1.3.0 + * Defunctr 1.3.1 * https://github.com/cinecove/defunctr * * Copyright 2012 - 2017 Cinecove Digital, LLC and other contributors * Released under the MIT license * https://github.com/cinecove/defunctr/blob/master/LICENSE.md * - * Build Date: 2017-02-10T07:58:02.681Z + * Build Date: 2017-08-14T02:37:48.958Z */ -!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):e.defunctr=n()}(this,function(){"use strict";function e(){try{return"WebkitTransform"in c.documentElement.style&&!!E.opr&&!!E.opr.addons}catch(e){return!1}}function n(e){return function(){return e}}function i(e,n){Modernizr?Modernizr.addTest(e,n):r(n()?e:"no-"+e)}function o(e){Re.className=Re.className.replace(new RegExp("\\b"+e+"\\b"),"")}function r(e){t(e)||(Re.className+=Re.className.length>0?" "+e:e)}function t(e){return Re.className.match(new RegExp("\\b"+e+"\\b"))}function s(e){t(Ae.NOTAGGING)||(i(me(de.IE),n(e.isIE)),t(Ae.IE_ONLY)||(i(me(de.CHROME),n(e.isChrome)),i(me(de.SAFARI),n(e.isSafari)),i(me(de.OPERA),n(e.isOpera)),i(me(de.OPERANEXT),n(e.isOperaNext)),i(me(de.FIREFOX),n(e.isFirefox)),i(me(de.KHTML),n(e.isKhtml)),i(me(de.WEBKIT),n(e.isWebKit)),i(me(de.EDGE),n(e.isEdge)),i(me(de.UNKNOWN),n(e.isUndetected))),t(Ae.IE_LESSTHAN_OFF)||(i(me(de.IE_LESSTHAN_6),n(e.ieIsBelowVersion6)),i(me(de.IE_LESSTHAN_7),n(e.ieIsBelowVersion7)),i(me(de.IE_LESSTHAN_8),n(e.ieIsBelowVersion8)),i(me(de.IE_LESSTHAN_9),n(e.ieIsBelowVersion9)),i(me(de.IE_LESSTHAN_10),n(e.ieIsBelowVersion10)),i(me(de.IE_LESSTHAN_11),n(e.ieIsBelowVersion11)),i(me(de.IE_LESSTHAN_12),n(e.ieIsBelowVersion12))),t(Ae.IE_GREATERTHAN_OFF)||(i(me(de.IE_GREATERTHAN_6),n(e.ieIsAboveVersion6)),i(me(de.IE_GREATERTHAN_7),n(e.ieIsAboveVersion7)),i(me(de.IE_GREATERTHAN_8),n(e.ieIsAboveVersion8)),i(me(de.IE_GREATERTHAN_9),n(e.ieIsAboveVersion9)),i(me(de.IE_GREATERTHAN_10),n(e.ieIsAboveVersion10)),i(me(de.IE_GREATERTHAN_11),n(e.ieIsAboveVersion11))),t(Ae.VERSION_OFF)||(i(me(de.IE_VERSION_6),n(e.ieIsVersion6)),i(me(de.IE_VERSION_7),n(e.ieIsVersion7)),i(me(de.IE_VERSION_8),n(e.ieIsVersion8)),i(me(de.IE_VERSION_9),n(e.ieIsVersion9)),i(me(de.IE_VERSION_10),n(e.ieIsVersion10)),i(me(de.IE_VERSION_11),n(e.ieIsVersion11)))),u()}function u(){o(Ae.IE_GREATERTHAN_OFF),o(Ae.IE_LESSTHAN_OFF),o(Ae.VERSION_OFF),o(Ae.IE_ONLY),o(Ae.DEFUNCTR),o(Ae.NOTAGGING)}var E=window||null,c=E?E.document||null:null,f=void 0,I=function(){},l=E&&E.console?E.console:void 0,V=l?l.log||I:I,a=l?l.warn||V:I,_=l?l.error||V:I,d={log:V,warn:a,error:_},A=function(){return Boolean(E&&E.HTMLElement&&Object.prototype.toString.call(E.HTMLElement).indexOf("Constructor")>0)},N=function(){return A()},m=function(){return e()},T=function(){return Boolean(c&&c.documentElement&&c.documentElement.style&&"WebkitTransform"in c.documentElement.style)},R=function(){return Boolean(E&&"undefined"!=typeof E.msWriteProfilerMark)},S=function(){return Boolean(E&&"undefined"!=typeof E.InstallTrigger)},h=function(){return S()},b=function(){return T()&&R()===!1&&!h()},v=function(){return!N()&&!m()&&b()},O=function(){return"ActiveXObject"in E},w=function(){return Boolean(E&&E.Event&&"function"==typeof E.Event)},B=function(){return Boolean(!O()&&w()&&R())},p=function(){return Boolean(c&&c.documentElement&&c.documentElement.style&&"KhtmlMarquee"in c.documentElement.style)},H=function(){return p()&&!N()},F=function(){return Boolean(E&&E.opera&&E.opera.version!==f)},G=function(){return F()},L=function(){return O()},y=function(){return!(b()||L()||v()||B()||h()||G()||m()||N())},g=function(){return Boolean(c&&c.compatMode&&("CSS1Compat"===c.compatMode||"BackCompat"===c.compatMode))},M=function(){return L()&&g()},C=function(){return Boolean(E&&"undefined"!=typeof E.XMLHttpRequest)},z=function(){return L()&&g()&&C()},x=function(){return Boolean(c&&"undefined"!=typeof c.querySelector)},K=function(){return L()&&x()},W=function(){return Boolean(c&&"undefined"!=typeof c.addEventListener)},j=function(){return L()&&W()},k=function(){return Boolean(E&&"undefined"!=typeof E.atob)},D=function(){return L()&&k()},P=function(){return Boolean(c&&"undefined"!=typeof c.attachEvent)},U=function(){return L()&&k()&&!P()},X=function(){return L()&&w()},q=function(){return Boolean(c&&"undefined"!=typeof c.compatMode)},Y=function(){return L()&&!q()},J=function(){return Boolean(c&&c.compatMode&&"BackCompat"===c.compatMode)},Q=function(){return L()&&!J()&&!C()},Z=function(){return L()&&!x()},$=function(){return L()&&!W()},ee=function(){return L()&&!k()},ne=function(){return L()&&P()},ie=function(){return L()&&!w()},oe=function(){return M()&&Q()},re=function(){return z()&&Z()},te=function(){return K()&&$()},se=function(){return j()&&ee()},ue=function(){return D()&&ne()},Ee=function(){return U()&&ie()},ce=(Object.freeze||Object)({isAboveVersion5:M,isAboveVersion6:z,isAboveVersion7:K,isAboveVersion8:j,isAboveVersion9:D,isAboveVersion10:U,isAboveVersion11:X,isBelowVersion6:Y,isBelowVersion7:Q,isBelowVersion8:Z,isBelowVersion9:$,isBelowVersion10:ee,isBelowVersion11:ne,isBelowVersion12:ie,isVersion6:oe,isVersion7:re,isVersion8:te,isVersion9:se,isVersion10:ue,isVersion11:Ee}),fe=function(){return Boolean(E&&E.chrome&&E.chrome.webstore&&E.chrome.webstore.install)},Ie=function(){return v()&&fe()},le=(Object.freeze||Object)({isAboveVersion15:Ie}),Ve={ie:ce,chrome:le},ae=function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")},_e=function e(){ae(this,e),this.isWebKit=b(),this.isOpera=G(),this.isIE=L(),this.isFirefox=h(),this.isSafari=N(),this.isKhtml=H(),this.isOperaNext=m(),this.isChrome=v(),this.isEdge=B(),this.isUndetected=y(),this.standardsCompliant=Ve.ie.isAboveVersion9()||!L(),this.chromeIsAbove15=Ve.chrome.isAboveVersion15(),this.ieIsVersion11=Ve.ie.isVersion11(),this.ieIsVersion10=Ve.ie.isVersion10(),this.ieIsVersion9=Ve.ie.isVersion9(),this.ieIsVersion8=Ve.ie.isVersion8(),this.ieIsVersion7=Ve.ie.isVersion7(),this.ieIsVersion6=Ve.ie.isVersion6(),this.ieIsBelowVersion6=Ve.ie.isBelowVersion6(),this.ieIsBelowVersion7=Ve.ie.isBelowVersion7(),this.ieIsBelowVersion8=Ve.ie.isBelowVersion8(),this.ieIsBelowVersion9=Ve.ie.isBelowVersion9(),this.ieIsBelowVersion10=Ve.ie.isBelowVersion10(),this.ieIsBelowVersion11=Ve.ie.isBelowVersion11(),this.ieIsBelowVersion12=Ve.ie.isBelowVersion12(),this.ieIsAboveVersion5=Ve.ie.isAboveVersion5(),this.ieIsAboveVersion6=Ve.ie.isAboveVersion6(),this.ieIsAboveVersion7=Ve.ie.isAboveVersion7(),this.ieIsAboveVersion8=Ve.ie.isAboveVersion8(),this.ieIsAboveVersion9=Ve.ie.isAboveVersion9(),this.ieIsAboveVersion10=Ve.ie.isAboveVersion10(),this.ieIsAboveVersion11=Ve.ie.isAboveVersion11()},de={IE:"ie",CHROME:"chrome",SAFARI:"safari",OPERA:"opera",OPERANEXT:"opera-next",FIREFOX:"firefox",KHTML:"khtml",WEBKIT:"webkit",EDGE:"edge",UNKNOWN:"undetected-browser",IE_LESSTHAN_6:"ie-lt-6",IE_LESSTHAN_7:"ie-lt-7",IE_LESSTHAN_8:"ie-lt-8",IE_LESSTHAN_9:"ie-lt-9",IE_LESSTHAN_10:"ie-lt-10",IE_LESSTHAN_11:"ie-lt-11",IE_LESSTHAN_12:"ie-lt-12",IE_GREATERTHAN_6:"ie-gt-6",IE_GREATERTHAN_7:"ie-gt-7",IE_GREATERTHAN_8:"ie-gt-8",IE_GREATERTHAN_9:"ie-gt-9",IE_GREATERTHAN_10:"ie-gt-10",IE_GREATERTHAN_11:"ie-gt-11",IE_VERSION_6:"ie-version-6",IE_VERSION_7:"ie-version-7",IE_VERSION_8:"ie-version-8",IE_VERSION_9:"ie-version-9",IE_VERSION_10:"ie-version-10",IE_VERSION_11:"ie-version-11"},Ae={DEFUNCTR:"defunctr",VERSION_OFF:"defunctr-version-off",IE_ONLY:"defunctr-ie-only",IE_LESSTHAN_OFF:"defunctr-lt-off",IE_GREATERTHAN_OFF:"defunctr-gt-off",NOTAGGING:"defunctr-off"},Ne="",me=function(e){return""+Ne+e},Te={modernizr:void 0};"function"==typeof require?require(["modernizr"],function(e){Te.modernizr=e}):E&&(E.Modernizr?Te.modernizr=E.Modernizr:E.modernizr&&(Te.modernizr=E.modernizr));var Re=c&&c.documentElement&&c.documentElement.className?c.documentElement:{className:""},Modernizr=Te.modernizr,Se=function(e){return{tag:function(){c&&s(e)}}},he=function e(){ae(this,e),this.version="1.3.0",this.detective=new _e},be=new he;if(E){Se(new _e).tag(),E.defunctr=be;try{Object.defineProperty(E,"Defunctr",{get:function(){return d.warn("window.Defunctr is deprecated and will be removed. Please use window.defunctr"),be},enumerable:!0,configurable:!0})}catch(e){E.Defunctr=be}}return be}); \ No newline at end of file +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):e.defunctr=n()}(this,function(){"use strict";function e(){try{return"WebkitTransform"in E.documentElement.style&&!!c.opr&&!!c.opr.addons}catch(e){return!1}}function n(e){return function(){return e}}function i(e,n){Modernizr?Modernizr.addTest(e,n):r(n()?e:"no-"+e)}function o(e){se.className=se.className.replace(new RegExp("\\b"+e+"\\b"),"")}function r(e){t(e)||(se.className+=se.className.length>0?" "+e:e)}function t(e){return se.className.match(new RegExp("\\b"+e+"\\b"))}function s(e){t(oe.NOTAGGING)||(i(re(ie.IE),n(e.isIE)),t(oe.IE_ONLY)||(i(re(ie.CHROME),n(e.isChrome)),i(re(ie.SAFARI),n(e.isSafari)),i(re(ie.OPERA),n(e.isOpera)),i(re(ie.OPERANEXT),n(e.isOperaNext)),i(re(ie.FIREFOX),n(e.isFirefox)),i(re(ie.KHTML),n(e.isKhtml)),i(re(ie.WEBKIT),n(e.isWebKit)),i(re(ie.EDGE),n(e.isEdge)),i(re(ie.UNKNOWN),n(e.isUndetected))),t(oe.IE_LESSTHAN_OFF)||(i(re(ie.IE_LESSTHAN_6),n(e.ieIsBelowVersion6)),i(re(ie.IE_LESSTHAN_7),n(e.ieIsBelowVersion7)),i(re(ie.IE_LESSTHAN_8),n(e.ieIsBelowVersion8)),i(re(ie.IE_LESSTHAN_9),n(e.ieIsBelowVersion9)),i(re(ie.IE_LESSTHAN_10),n(e.ieIsBelowVersion10)),i(re(ie.IE_LESSTHAN_11),n(e.ieIsBelowVersion11)),i(re(ie.IE_LESSTHAN_12),n(e.ieIsBelowVersion12))),t(oe.IE_GREATERTHAN_OFF)||(i(re(ie.IE_GREATERTHAN_6),n(e.ieIsAboveVersion6)),i(re(ie.IE_GREATERTHAN_7),n(e.ieIsAboveVersion7)),i(re(ie.IE_GREATERTHAN_8),n(e.ieIsAboveVersion8)),i(re(ie.IE_GREATERTHAN_9),n(e.ieIsAboveVersion9)),i(re(ie.IE_GREATERTHAN_10),n(e.ieIsAboveVersion10)),i(re(ie.IE_GREATERTHAN_11),n(e.ieIsAboveVersion11))),t(oe.VERSION_OFF)||(i(re(ie.IE_VERSION_6),n(e.ieIsVersion6)),i(re(ie.IE_VERSION_7),n(e.ieIsVersion7)),i(re(ie.IE_VERSION_8),n(e.ieIsVersion8)),i(re(ie.IE_VERSION_9),n(e.ieIsVersion9)),i(re(ie.IE_VERSION_10),n(e.ieIsVersion10)),i(re(ie.IE_VERSION_11),n(e.ieIsVersion11)))),u()}function u(){o(oe.IE_GREATERTHAN_OFF),o(oe.IE_LESSTHAN_OFF),o(oe.VERSION_OFF),o(oe.IE_ONLY),o(oe.DEFUNCTR),o(oe.NOTAGGING)}var c=window||null,E=c?c.document||null:null,f=function(){},I=c&&c.console?c.console:undefined,l=I?I.log||f:f,a={log:l,warn:I?I.warn||l:f,error:I?I.error||l:f},d=function(){return Boolean(c&&c.HTMLElement&&Object.prototype.toString.call(c.HTMLElement).indexOf("Constructor")>0)},V=function(){return d()},_=function(){return e()},A=function(){return Boolean(E&&E.documentElement&&E.documentElement.style&&"WebkitTransform"in E.documentElement.style)},m=function(){return Boolean(c&&"undefined"!=typeof c.msWriteProfilerMark)},N=function(){return Boolean(c&&"undefined"!=typeof c.InstallTrigger)},T=function(){return N()},b=function(){return Boolean(c&&c.opera&&void 0!==c.opera.version)},h=function(){return b()},w=function(){return A()&&!1===m()&&!T()&&!h()},R=function(){return!V()&&!_()&&w()},S=function(){return"ActiveXObject"in c},v=function(){return Boolean(c&&c.Event&&"function"==typeof c.Event)},O=function(){return Boolean(!S()&&v()&&m())},p=function(){return Boolean(E&&E.documentElement&&E.documentElement.style&&"KhtmlMarquee"in E.documentElement.style)},B=function(){return p()&&!V()},H=function(){return S()},y=function(){return!(w()||H()||R()||O()||T()||h()||_()||V())},F=function(){return Boolean(E&&E.compatMode&&("CSS1Compat"===E.compatMode||"BackCompat"===E.compatMode))},g=function(){return H()&&F()},G=function(){return Boolean(c&&"undefined"!=typeof c.XMLHttpRequest)},L=function(){return H()&&F()&&G()},M=function(){return Boolean(E&&"undefined"!=typeof E.querySelector)},C=function(){return H()&&M()},x=function(){return Boolean(E&&"undefined"!=typeof E.addEventListener)},K=function(){return H()&&x()},z=function(){return Boolean(c&&"undefined"!=typeof c.atob)},k=function(){return H()&&z()},W=function(){return Boolean(E&&"undefined"!=typeof E.attachEvent)},j=function(){return H()&&z()&&!W()},P=function(){return Boolean(E&&"undefined"!=typeof E.compatMode)},D=function(){return Boolean(E&&E.compatMode&&"BackCompat"===E.compatMode)},U=function(){return H()&&!D()&&!G()},X=function(){return H()&&!M()},q=function(){return H()&&!x()},Y=function(){return H()&&!z()},J=function(){return H()&&W()},Q=function(){return H()&&!v()},Z=function(){return Boolean(c&&c.chrome&&c.chrome.webstore&&c.chrome.webstore.install)},$={ie:(Object.freeze||Object)({isAboveVersion5:g,isAboveVersion6:L,isAboveVersion7:C,isAboveVersion8:K,isAboveVersion9:k,isAboveVersion10:j,isAboveVersion11:function(){return H()&&v()},isBelowVersion6:function(){return H()&&!P()},isBelowVersion7:U,isBelowVersion8:X,isBelowVersion9:q,isBelowVersion10:Y,isBelowVersion11:J,isBelowVersion12:Q,isVersion6:function(){return g()&&U()},isVersion7:function(){return L()&&X()},isVersion8:function(){return C()&&q()},isVersion9:function(){return K()&&Y()},isVersion10:function(){return k()&&J()},isVersion11:function(){return j()&&Q()}}),chrome:(Object.freeze||Object)({isAboveVersion15:function(){return R()&&Z()}})},ee=function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")},ne=function Ee(){ee(this,Ee),this.isWebKit=w(),this.isOpera=h(),this.isIE=H(),this.isFirefox=T(),this.isSafari=V(),this.isKhtml=B(),this.isOperaNext=_(),this.isChrome=R(),this.isEdge=O(),this.isUndetected=y(),this.standardsCompliant=$.ie.isAboveVersion9()||!H(),this.chromeIsAbove15=$.chrome.isAboveVersion15(),this.ieIsVersion11=$.ie.isVersion11(),this.ieIsVersion10=$.ie.isVersion10(),this.ieIsVersion9=$.ie.isVersion9(),this.ieIsVersion8=$.ie.isVersion8(),this.ieIsVersion7=$.ie.isVersion7(),this.ieIsVersion6=$.ie.isVersion6(),this.ieIsBelowVersion6=$.ie.isBelowVersion6(),this.ieIsBelowVersion7=$.ie.isBelowVersion7(),this.ieIsBelowVersion8=$.ie.isBelowVersion8(),this.ieIsBelowVersion9=$.ie.isBelowVersion9(),this.ieIsBelowVersion10=$.ie.isBelowVersion10(),this.ieIsBelowVersion11=$.ie.isBelowVersion11(),this.ieIsBelowVersion12=$.ie.isBelowVersion12(),this.ieIsAboveVersion5=$.ie.isAboveVersion5(),this.ieIsAboveVersion6=$.ie.isAboveVersion6(),this.ieIsAboveVersion7=$.ie.isAboveVersion7(),this.ieIsAboveVersion8=$.ie.isAboveVersion8(),this.ieIsAboveVersion9=$.ie.isAboveVersion9(),this.ieIsAboveVersion10=$.ie.isAboveVersion10(),this.ieIsAboveVersion11=$.ie.isAboveVersion11()},ie={IE:"ie",CHROME:"chrome",SAFARI:"safari",OPERA:"opera",OPERANEXT:"opera-next",FIREFOX:"firefox",KHTML:"khtml",WEBKIT:"webkit",EDGE:"edge",UNKNOWN:"undetected-browser",IE_LESSTHAN_6:"ie-lt-6",IE_LESSTHAN_7:"ie-lt-7",IE_LESSTHAN_8:"ie-lt-8",IE_LESSTHAN_9:"ie-lt-9",IE_LESSTHAN_10:"ie-lt-10",IE_LESSTHAN_11:"ie-lt-11",IE_LESSTHAN_12:"ie-lt-12",IE_GREATERTHAN_6:"ie-gt-6",IE_GREATERTHAN_7:"ie-gt-7",IE_GREATERTHAN_8:"ie-gt-8",IE_GREATERTHAN_9:"ie-gt-9",IE_GREATERTHAN_10:"ie-gt-10",IE_GREATERTHAN_11:"ie-gt-11",IE_VERSION_6:"ie-version-6",IE_VERSION_7:"ie-version-7",IE_VERSION_8:"ie-version-8",IE_VERSION_9:"ie-version-9",IE_VERSION_10:"ie-version-10",IE_VERSION_11:"ie-version-11"},oe={DEFUNCTR:"defunctr",VERSION_OFF:"defunctr-version-off",IE_ONLY:"defunctr-ie-only",IE_LESSTHAN_OFF:"defunctr-lt-off",IE_GREATERTHAN_OFF:"defunctr-gt-off",NOTAGGING:"defunctr-off"},re=function(e){return""+e},te={modernizr:undefined};"function"==typeof require?require(["modernizr"],function(e){te.modernizr=e}):c&&(c.Modernizr?te.modernizr=c.Modernizr:c.modernizr&&(te.modernizr=c.modernizr));var se=E&&E.documentElement&&E.documentElement.className?E.documentElement:{className:""},Modernizr=te.modernizr,ue=new function fe(){ee(this,fe),this.version="1.3.1",this.browser=function(){var e=new ne;return{vendor:e.isChrome?"chrome":e.isEdge?"edge":e.isFirefox?"firefox":e.isIE?"ie":e.isKhtml?"khtml":e.isOpera&&e.isOperaNext?"opera":e.isSafari?"safari":"unknown",version:e.isIE?e.ieIsBelowVersion6?5:e.ieIsVersion6?6:e.ieIsVersion7?7:e.ieIsVersion8?8:e.ieIsVersion9?9:e.ieIsVersion10?10:e.ieIsVersion11?11:e.ieIsAboveVersion11?12:0:0,standards:e.standardsCompliant,detected:!e.isUndetected,webkit:e.isWebKit}}};try{Object.defineProperty(ue,"detective",{get:function(){try{(a&&a.warn?a.warn:a.log)("defunctr.detective is deprecated and will be removed in 2.0. Please use window.browser instead.")}catch(e){}return new ne},enumerable:!0,configurable:!0})}catch(ce){ue.detective=new ne}if(c){(function(e){return{tag:function(){E&&s(e)}}})(new ne).tag(),c.defunctr=ue;try{Object.defineProperty(c,"Defunctr",{get:function(){try{(a&&a.warn?a.warn:a.log)("window.Defunctr is deprecated and will be removed in 2.0. Please use window.defunctr instead.")}catch(e){}return ue},enumerable:!0,configurable:!0})}catch(ce){c.Defunctr=ue}}return ue}); \ No newline at end of file