playwright/tests/assets/modernizr/modernizr.js

4148 lines
197 KiB
JavaScript
Raw Normal View History

(()=>{var j=(e,A)=>()=>(A||e((A={exports:{}}).exports,A),A.exports);var Y=j((exports,module)=>{(function(scriptGlobalObject,window,document,undefined){var tests=[],ModernizrProto={_version:"4.0.0-alpha",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,A){var t=this;setTimeout(function(){A(t[e])},0)},addTest:function(e,A,t){tests.push({name:e,fn:A,options:t})},addAsyncTest:function(e){tests.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=ModernizrProto,Modernizr=new Modernizr;var classes=[];function is(e,A){return typeof e===A}function testRunner(){var e,A,t,r,n,o,a;for(var l in tests)if(tests.hasOwnProperty(l)){if(e=[],A=tests[l],A.name&&(e.push(A.name.toLowerCase()),A.options&&A.options.aliases&&A.options.aliases.length))for(t=0;t<A.options.aliases.length;t++)e.push(A.options.aliases[t].toLowerCase());for(r=is(A.fn,"function")?A.fn():A.fn,n=0;n<e.length;n++)o=e[n],a=o.split("."),a.length===1?Modernizr[a[0]]=r:((!Modernizr[a[0]]||Modernizr[a[0]]&&!(Modernizr[a[0]]instanceof Boolean))&&(Modernizr[a[0]]=new Boolean(Modernizr[a[0]])),Modernizr[a[0]][a[1]]=r),classes.push((r?"":"no-")+a.join("-"))}}var docElement=document.documentElement,isSVG=docElement.nodeName.toLowerCase()==="svg";function setClasses(e){var A=docElement.className,t=Modernizr._config.classPrefix||"";if(isSVG&&(A=A.baseVal),Modernizr._config.enableJSClass){var r=new RegExp("(^|\\s)"+t+"no-js(\\s|$)");A=A.replace(r,"$1"+t+"js$2")}Modernizr._config.enableClasses&&(e.length>0&&(A+=" "+t+e.join(" "+t)),isSVG?docElement.className.baseVal=A:docElement.className=A)}var hasOwnProp;(function(){var e={}.hasOwnProperty;!is(e,"undefined")&&!is(e.call,"undefined")?hasOwnProp=function(A,t){return e.call(A,t)}:hasOwnProp=function(A,t){return t in A&&is(A.constructor.prototype[t],"undefined")}})(),ModernizrProto._l={},ModernizrProto.on=function(e,A){this._l[e]||(this._l[e]=[]),this._l[e].push(A),Modernizr.hasOwnProperty(e)&&setTimeout(function(){Modernizr._trigger(e,Modernizr[e])},0)},ModernizrProto._trigger=function(e,A){if(this._l[e]){var t=this._l[e];setTimeout(function(){var r,n;for(r=0;r<t.length;r++)n=t[r],n(A)},0),delete this._l[e]}};function addTest(e,A){if(typeof e=="object")for(var t in e)hasOwnProp(e,t)&&addTest(t,e[t]);else{e=e.toLowerCase();var r=e.split("."),n=Modernizr[r[0]];if(r.length===2&&(n=n[r[1]]),typeof n<"u")return Modernizr;A=typeof A=="function"?A():A,r.length===1?Modernizr[r[0]]=A:(Modernizr[r[0]]&&!(Modernizr[r[0]]instanceof Boolean)&&(Modernizr[r[0]]=new Boolean(Modernizr[r[0]])),Modernizr[r[0]][r[1]]=A),setClasses([(A&&A!==!1?"":"no-")+r.join("-")]),Modernizr._trigger(e,A)}return Modernizr}Modernizr._q.push(function(){ModernizrProto.addTest=addTest});var omPrefixes="Moz O ms Webkit",cssomPrefixes=ModernizrProto._config.usePrefixes?omPrefixes.split(" "):[];ModernizrProto._cssomPrefixes=cssomPrefixes;var atRule=function(e){var A=prefixes.length,t=window.CSSRule,r;if(typeof t>"u")return undefined;if(!e)return!1;if(e=e.replace(/^@/,""),r=e.replace(/-/g,"_").toUpperCase()+"_RULE",r in t)return"@"+e;for(var n=0;n<A;n++){var o=prefixes[n],a=o.toUpperCase()+"_"+r;if(a in t)return"@-"+o.toLowerCase()+"-"+e}return!1};ModernizrProto.atRule=atRule;var domPrefixes=ModernizrProto._config.usePrefixes?omPrefixes.toLowerCase().split(" "):[];ModernizrProto._domPrefixes=domPrefixes;function createElement(){return typeof document.createElement!="function"?document.createElement(arguments[0]):isSVG?document.createElementNS.call(document,"http://www.w3.org/2000/svg",arguments[0]):document.createElement.apply(document,arguments)}var hasEvent=function(){var e=!("onblur"in docElement);function A(t,r){var n;return t?((!r||typeof r=="string")&&(r=createElement(r||"div")),t="on"+t,n=t in r,!n&&e&&(r.setAttribute||(r=createElement("div")),r.setAttribute(t,""),n=typeof r[t]=="function",r[t]!==undefined&&(r[t]=undefined),r.removeAttribute(t)),n):!1}return A}();ModernizrProto.hasEvent=hasEvent;var html5;if(!isSVG){(function(e,A){var t="3.7.3",r=e.html5||{},n=/^<|^(?:button|map|select|textarea|object|iframe|opt
See http://github.com/Modernizr/Modernizr/issues/1182 for more information.`),window.yepnope.apply(window,[].slice.call(arguments,0))):err("yepnope.js (aka Modernizr.load) is no longer included as part of Modernizr. Get it from http://yepnopejs.com. See http://github.com/Modernizr/Modernizr/issues/1182 for more information.")};function getBody(){var e=document.body;return e||(e=createElement(isSVG?"svg":"body"),e.fake=!0),e}function injectElementWithStyles(e,A,t,r){var n="modernizr",o,a,l,s,f=createElement("div"),u=getBody();if(parseInt(t,10))for(;t--;)l=createElement("div"),l.id=r?r[t]:n+(t+1),f.appendChild(l);return o=createElement("style"),o.type="text/css",o.id="s"+n,(u.fake?u:f).appendChild(o),u.appendChild(f),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e)),f.id=n,u.fake&&(u.style.background="",u.style.overflow="hidden",s=docElement.style.overflow,docElement.style.overflow="hidden",docElement.appendChild(u)),a=A(f,e),u.fake&&u.parentNode?(u.parentNode.removeChild(u),docElement.style.overflow=s,docElement.offsetHeight):f.parentNode.removeChild(f),!!a}function computedStyle(e,A,t){var r;if("getComputedStyle"in window){r=getComputedStyle.call(window,e,A);var n=window.console;if(r!==null)t&&(r=r.getPropertyValue(t));else if(n){var o=n.error?"error":"log";n[o].call(n,"getComputedStyle returning null, its possible modernizr test results are inaccurate")}}else r=!A&&e.currentStyle&&e.currentStyle[t];return r}var mq=function(){var e=window.matchMedia||window.msMatchMedia;return e?function(A){var t=e(A);return t&&t.matches||!1}:function(A){var t=!1;return injectElementWithStyles("@media "+A+" { #modernizr { position: absolute; } }",function(r){t=computedStyle(r,null,"position")==="absolute"}),t}}();ModernizrProto.mq=mq;function contains(e,A){return!!~(""+e).indexOf(A)}var modElem={elem:createElement("modernizr")};Modernizr._q.push(function(){delete modElem.elem});var mStyle={style:modElem.elem.style};Modernizr._q.unshift(function(){delete mStyle.style});function domToCSS(e){return e.replace(/([A-Z])/g,function(A,t){return"-"+t.toLowerCase()}).replace(/^ms-/,"-ms-")}function nativeTestProps(e,A){var t=e.length;if("CSS"in window&&"supports"in window.CSS){for(;t--;)if(window.CSS.supports(domToCSS(e[t]),A))return!0;return!1}else if("CSSSupportsRule"in window){for(var r=[];t--;)r.push("("+domToCSS(e[t])+":"+A+")");return r=r.join(" or "),injectElementWithStyles("@supports ("+r+") { #modernizr { position: absolute; } }",function(n){return computedStyle(n,null,"position")==="absolute"})}return undefined}function cssToDOM(e){return e.replace(/([a-z])-([a-z])/g,function(A,t,r){return t+r.toUpperCase()}).replace(/^-/,"")}function testProps(e,A,t,r){if(r=is(r,"undefined")?!1:r,!is(t,"undefined")){var n=nativeTestProps(e,t);if(!is(n,"undefined"))return n}for(var o,a,l,s,f,u=["modernizr","tspan","samp"];!mStyle.style&&u.length;)o=!0,mStyle.modElem=createElement(u.shift()),mStyle.style=mStyle.modElem.style;function m(){o&&(delete mStyle.style,delete mStyle.modElem)}for(l=e.length,a=0;a<l;a++)if(s=e[a],f=mStyle.style[s],contains(s,"-")&&(s=cssToDOM(s)),mStyle.style[s]!==undefined)if(!r&&!is(t,"undefined")){try{mStyle.style[s]=t}catch{}if(mStyle.style[s]!==f)return m(),A==="pfx"?s:!0}else return m(),A==="pfx"?s:!0;return m(),!1}function fnBind(e,A){return function(){return e.apply(A,arguments)}}function testDOMProps(e,A,t){var r;for(var n in e)if(e[n]in A)return t===!1?e[n]:(r=A[e[n]],is(r,"function")?fnBind(r,t||A):r);return!1}function testPropsAll(e,A,t,r,n){var o=e.charAt(0).toUpperCase()+e.slice(1),a=(e+" "+cssomPrefixes.join(o+" ")+o).split(" ");return is(A,"string")||is(A,"undefined")?testProps(a,A,r,n):(a=(e+" "+domPrefixes.join(o+" ")+o).split(" "),testDOMProps(a,A,t))}ModernizrProto.testAllProps=testPropsAll;var prefixed=ModernizrProto.prefixed=function(e,A,t){return e.indexOf("@")===0?atRule(e):(e.indexOf("-")!==-1&&(e=cssToDOM(e)),A?testPropsAll(e,A,t):testPropsAll(e,"pfx"))},prefixes=ModernizrProto._config.usePrefixes?" -webkit- -moz- -o- -ms- ".split(" "):["",""];ModernizrProto._prefixes=prefixes
`+r;t.src="data:image/gif;base64,"+r}});Modernizr.addTest("urlparser",function(){var e;try{return e=new URL("http://modernizr.com/"),e.href==="http://modernizr.com/"}catch{return!1}});Modernizr.addTest("urlsearchparams","URLSearchParams"in window);Modernizr.addTest("vibrate",!!prefixed("vibrate",navigator));(function(){var e=createElement("video");Modernizr.addTest("video",function(){var A=!1;try{A=!!e.canPlayType,A&&(A=new Boolean(A))}catch{}return A});try{e.canPlayType&&(Modernizr.addTest("video.ogg",e.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,"")),Modernizr.addTest("video.h264",e.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,"")),Modernizr.addTest("video.h265",e.canPlayType('video/mp4; codecs="hev1"').replace(/^no$/,"")),Modernizr.addTest("video.webm",e.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")),Modernizr.addTest("video.vp9",e.canPlayType('video/webm; codecs="vp9"').replace(/^no$/,"")),Modernizr.addTest("video.hls",e.canPlayType('application/x-mpegURL; codecs="avc1.42E01E"').replace(/^no$/,"")),Modernizr.addTest("video.av1",e.canPlayType('video/mp4; codecs="av01"').replace(/^no$/,"")))}catch{}})();Modernizr.addAsyncTest(function(){var e,A=200,t=5,r=0,n=createElement("video"),o=n.style;function a(l){r++,clearTimeout(e);var s=l&&l.type==="playing"||n.currentTime!==0;if(!s&&r<t){e=setTimeout(a,A);return}n.removeEventListener("playing",a,!1),addTest("videoautoplay",s),n.parentNode&&n.parentNode.removeChild(n)}if(!Modernizr.video||!("autoplay"in n)){addTest("videoautoplay",!1);return}o.position="absolute",o.height=0,o.width=0;try{if(Modernizr.video.ogg)n.src="data:video/ogg;base64,T2dnUwACAAAAAAAAAABmnCATAAAAAHDEixYBKoB0aGVvcmEDAgEAAQABAAAQAAAQAAAAAAAFAAAAAQAAAAAAAAAAAGIAYE9nZ1MAAAAAAAAAAAAAZpwgEwEAAAACrA7TDlj///////////////+QgXRoZW9yYSsAAABYaXBoLk9yZyBsaWJ0aGVvcmEgMS4xIDIwMDkwODIyIChUaHVzbmVsZGEpAQAAABoAAABFTkNPREVSPWZmbXBlZzJ0aGVvcmEtMC4yOYJ0aGVvcmG+zSj3uc1rGLWpSUoQc5zmMYxSlKQhCDGMYhCEIQhAAAAAAAAAAAAAEW2uU2eSyPxWEvx4OVts5ir1aKtUKBMpJFoQ/nk5m41mUwl4slUpk4kkghkIfDwdjgajQYC8VioUCQRiIQh8PBwMhgLBQIg4FRba5TZ5LI/FYS/Hg5W2zmKvVoq1QoEykkWhD+eTmbjWZTCXiyVSmTiSSCGQh8PB2OBqNBgLxWKhQJBGIhCHw8HAyGAsFAiDgUCw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDAwPEhQUFQ0NDhESFRUUDg4PEhQVFRUOEBETFBUVFRARFBUVFRUVEhMUFRUVFRUUFRUVFRUVFRUVFRUVFRUVEAwLEBQZGxwNDQ4SFRwcGw4NEBQZHBwcDhATFhsdHRwRExkcHB4eHRQYGxwdHh4dGxwdHR4eHh4dHR0dHh4eHRALChAYKDM9DAwOExo6PDcODRAYKDlFOA4RFh0zV1A+EhYlOkRtZ00YIzdAUWhxXDFATldneXhlSFxfYnBkZ2MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEhIVGRoaGhoSFBYaGhoaGhUWGRoaGhoaGRoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhESFh8kJCQkEhQYIiQkJCQWGCEkJCQkJB8iJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQREhgvY2NjYxIVGkJjY2NjGBo4Y2NjY2MvQmNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRISEhUXGBkbEhIVFxgZGxwSFRcYGRscHRUXGBkbHB0dFxgZGxwdHR0YGRscHR0dHhkbHB0dHR4eGxwdHR0eHh4REREUFxocIBERFBcaHCAiERQXGhwgIiUUFxocICIlJRcaHCAiJSUlGhwgIiUlJSkcICIlJSUpKiAiJSUlKSoqEBAQFBgcICgQEBQYHCAoMBAUGBwgKDBAFBgcICgwQEAYHCAoMEBAQBwgKDBAQEBgICgwQEBAYIAoMEBAQGCAgAfF5cdH1e3Ow/L66wGmYnfIUbwdUTe3LMRbqON8B+5RJEvcGxkvrVUjTMrsXYhAnIwe0dTJfOYbWrDYyqUrz7dw/JO4hpmV2LsQQvkUeGq1BsZLx+cu5iV0e0eScJ91VIQYrmqfdVSK7GgjOU0oPaPOu5IcDK1mNvnD+K8LwS87f8Jx2mHtHnUkTGAurWZlNQa74ZLSFH9oF6FPGxzLsjQO5Qe0edcpttd7BXBSqMCL4k/4tFrHIPuEQ7m1/uIWkbDMWVoDdOSuRQ9286kvVUlQjzOE6VrNguN4oRXYGkgcnih7t13/9kxvLYKQezwLTrO44sVmMPgMqORo1E0sm1/9SludkcWHwfJwTSybR4LeAz6ugWVgRaY8mV/9SluQmtHrzsBtRF/wPY+X0JuYTs+ltgrXAmlk10xQHmTu9VSIAk1+vcvU4ml2oNzrNhEtQ3CysNP8UeR35wqpKUBdGdZMSjX4WVi8nJpdpHnbhzEIdx7mwf6W1FKAiucMXrWUWVjyRf23chNtR9mIzDoT/6ZLYailAjhFlZuvPtSeZ+2oREubDoWmT3TguY+JHPdRVSLKxfKH3vgNqJ/9emeEYikGXDFNzaLjvTeGAL61mogOoeG3y6oU4rW55ydoj0lUTSR/mmRhPmF86uwIfzp3FtiufQCmppaHDlGE0r2iTzXIw3zBq5hvaTldjG4CPb9wdxAme0SyedVKczJ9AtYbgPOzYKJvZZImsN7ecrxWZg5dR6ZLj/j4qpWsIA+vYwE+Tca9ounMIsrXMB4Stiib2SPQtZv+FVIpfEbzv8ncZoLBXc3YBqTG1HsskTTotZOYTG+oVUjLk6zhP8bg4RhMUNtfZdO7FdpBuXzhJ5Fh8IKlJG7wtD9ik8r
/*!
* modernizr v4.0.0-alpha
* Build https://modernizr.com/download?-adownload-ambientlight-aping-apng-appearance-applicationcache-areaping-arrow-aspectratio-atobbtoa-audio-audioautoplay-audioloop-audiopreload-avif-backdropfilter-backgroundblendmode-backgroundcliptext-backgroundsize-batteryapi-bdi-beacon-bgpositionshorthand-bgpositionxy-bgrepeatspace_bgrepeatround-bgsizecover-blobconstructor-bloburls-blobworkers-borderimage-borderradius-boxdecorationbreak-boxshadow-boxsizing-broadcastchannel-canvas-canvasblending-canvastext-canvaswinding-capture-checked-classlist-clipboard-connectioneffectivetype-contenteditable-contextmenu-cookies-cors-createelementattrs_createelement_attrs-cryptography-cssall-cssanimations-csscalc-csschunit-csscolumns-cssescape-cssexunit-cssfilters-cssgradients-cssgrid_cssgridlegacy-csshyphens_softhyphens_softhyphensfind-cssinvalid-cssmask-csspointerevents-csspositionsticky-csspseudoanimations-csspseudotransitions-cssreflections-cssremunit-cssresize-cssscrollbar-csstransforms-csstransforms3d-csstransformslevel2-csstransitions-cssvalid-cssvhunit-cssvmaxunit-cssvminunit-cssvwunit-cubicbezierrange-customelements-customevent-customproperties-customprotocolhandler-dart-datachannel-dataset-datauri-dataview-dataworkers-details-devicemotion_deviceorientation-directory-display_runin-displaytable-documentfragment-ellipsis-emoji-es5-es5array-es5date-es5function-es5object-es5string-es5syntax-es5undefined-es6array-es6class-es6collections-es6math-es6number-es6object-es6string-es6symbol-es7array-es8object-eventlistener-eventsource-exiforientation-fetch-fileinput-filereader-filesystem-flash-flexbox-flexboxlegacy-flexboxtweener-flexgap-flexwrap-focusvisible-focuswithin-fontdisplay-fontface-forcetouch-formattribute-formvalidation-framed-fullscreen-gamepads-generatedcontent-generators-geolocation-getrandomvalues-getusermedia-hairline-hashchange-hidden-hiddenscroll-history-hovermq-hsla-htmlimports-ie8compat-imgcrossorigin-indexeddb-indexeddb2-indexeddbblob-inlinesvg-input-inputformaction-inputformenctype-inputformmethod-inputformnovalidate-inputformtarget-inputsearchevent-inputtypes-intersectionobserver-intl-jpeg2000-jpegxr-json-lastchild-lazyloading-ligatures-localizednumber-localstorage-lowbandwidth-lowbattery-matchmedia-mathml-mediaqueries-mediarecorder-mediasource-messagechannel-microdata-multiplebgs-mutationobserver-notification-nthchild-objectfit-olreversed-oninput-opacity-outputelem-overflowscrolling-pagevisibility-passiveeventlisteners-peerconnection-performance-picture-placeholder-pointerevents-pointerlock-pointermq-postmessage-prefetch-preserve3d-progressbar_meter-promises-proximity-proxy-publickeycredential-pushmanager-queryselector-quotamanagement-regions-requestanimationframe-requestautocomplete-resizeobserver-restdestructuringarray_restdestructuringobject-restparameters-rgba-ruby-sandbox-scriptasync-scriptdefer-scrollsnappoints-scrolltooptions-seamless-serviceworker-sessionstorage-shadowroot-shadowrootlegacy-shapes-sharedworkers-siblinggeneral-sizes-smil-speechrecognition-speechsynthesis-spreadarray-spreadobject-srcdoc-srcset-strictmode-stringtemplate-stylescoped-subpixelfont-supports-svg-svgasimg-svgclippaths-svgfilters-svgforeignobject-target-template-textalignlast-textareamaxlength-textdecoration-textencoder_textdecoder-textshadow-texttrackapi_track-time-todataurljpeg_todataurlpng_todataurlwebp-transferables-typedarrays-unicoderange-unknownelements-urlparser-urlsearchparams-userdata-userselect-variablefonts-vibrate-video-videoautoplay-videocrossorigin-videoloop-videopreload-vml-webanimations-webaudio-webgl-webglextensions-webintents-webp-webpalpha-webpanimation-webplossless_webp_lossless-websockets-websocketsbinary-websqldatabase-webworkers-willchange-workertypeoption-wrapflow-xdomainrequest-xhr2-xhrresponsetype-xhrresponsetypearraybuffer-xhrresponsetypeblob-xhrresponsetypedocument-xhrresponsetypejson-xhrresponsetypetext-addtest-atrule-domprefixes-hasevent-load-mq-prefixed-prefixedcss-prefixes-printshiv-setclasses-testallprops-testprop-teststyles-dontmin
*
* Copyright (c)
* Faruk Ates
* Paul Irish
* Alex Sexton
* Ryan Seddon
* Patrick Kettner
* Stu Cox
* Richard Herrera
* Veeck
* MIT License
*/
/**
* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
/*!
{
"name": "a[download] Attribute",
"property": "adownload",
"caniuse": "download",
"tags": ["media", "attribute"],
"builderAliases": ["a_download"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://developers.whatwg.org/links.html#downloading-resources"
}]
}
!*/
/*!
{
"name": "a[ping] Attribute",
"property": "aping",
"caniuse": "ping",
"tags": ["media", "attribute"],
"builderAliases": ["a_ping"],
"authors": ["Hélio Correia (@heliocorreia)"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/dev/links.html#ping"
}]
}
!*/
/*!
{
"name": "area[ping] Attribute",
"property": "areaping",
"caniuse": "ping",
"tags": ["media", "attribute"],
"builderAliases": ["area_ping"],
"authors": ["Hélio Correia (@heliocorreia)"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/dev/links.html#ping"
}]
}
!*/
/*!
{
"name": "Ambient Light Events",
"property": "ambientlight",
"caniuse": "ambient-light",
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/ambient-light/"
}]
}
!*/
/*!
{
"name": "Application Cache",
"property": "applicationcache",
"caniuse": "offline-apps",
"tags": ["storage", "offline"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en/docs/HTML/Using_the_application_cache"
}],
"polyfills": ["html5gears"]
}
!*/
/*!
{
"name": "HTML5 Audio Element",
"property": "audio",
"caniuse": "audio",
"tags": ["html5", "audio", "media"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements"
}]
}
!*/
/*!
{
"name": "Audio Autoplay",
"property": "audioautoplay",
"authors": ["Jordy van Dortmont"],
"tags": ["audio"],
"async": true
}
!*/
/*!
{
"name": "Audio Loop Attribute",
"property": "audioloop",
"tags": ["audio", "media"]
}
!*/
/*!
{
"name": "Audio Preload",
"property": "audiopreload",
"tags": ["audio", "media"],
"async": true,
"warnings": ["This test is very large only include it if you absolutely need it"]
}
!*/
/*!
{
"name": "Web Audio API",
"property": "webaudio",
"caniuse": "audio-api",
"polyfills": ["dynamicaudiojs", "audiolibjs"],
"tags": ["audio", "media"],
"builderAliases": ["audio_webaudio_api"],
"authors": ["Addy Osmani"],
"notes": [{
"name": "W3C Spec",
"href": "https://webaudio.github.io/web-audio-api/"
}]
}
!*/
/*!
{
"name": "Battery API",
"property": "batteryapi",
"aliases": ["battery-api"],
"builderAliases": ["battery_api"],
"tags": ["battery", "device", "media"],
"authors": ["Paul Sayre", "Alex Bradley (@abrad1212)"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en/DOM/window.navigator.mozBattery"
}]
}
!*/
/*!
{
"name": "Low Battery Level",
"property": "lowbattery",
"tags": ["battery", "hardware", "mobile"],
"builderAliases": ["battery_level"],
"authors": ["Paul Sayre"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/Navigator/battery"
}]
}
!*/
/*!
{
"name": "Blob constructor",
"property": "blobconstructor",
"aliases": ["blob-constructor"],
"builderAliases": ["blob_constructor"],
"caniuse": "blobbuilder",
"notes": [{
"name": "W3C Spec",
"href": "https://w3c.github.io/FileAPI/#constructorBlob"
}],
"polyfills": ["blobjs"]
}
!*/
/*!
{
"name": "Broadcast Channel",
"property": "broadcastchannel",
"authors": ["Alex Neises (@AlexNeises)"],
"caniuse": "broadcastchannel",
"tags": ["performance", "broadcastchannel"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel"
}]
}
!*/
/*!
{
"name": "Canvas",
"property": "canvas",
"caniuse": "canvas",
"tags": ["canvas", "graphics"],
"polyfills": ["excanvas", "slcanvas"]
}
!*/
/*!
{
"name": "canvas blending support",
"property": "canvasblending",
"caniuse": "canvas-blending",
"tags": ["canvas"],
"notes": [{
"name": "W3C Spec",
"href": "https://drafts.fxtf.org/compositing-1/"
}, {
"name": "Article",
"href": "https://web.archive.org/web/20171003232921/http://blogs.adobe.com/webplatform/2013/01/28/blending-features-in-canvas/"
}]
}
!*/
/*!
{
"name": "canvas.toDataURL type support",
"property": ["todataurljpeg", "todataurlpng", "todataurlwebp"],
"tags": ["canvas"],
"builderAliases": ["canvas_todataurl_type"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.toDataURL"
}]
}
!*/
/*!
{
"name": "canvas winding support",
"property": "canvaswinding",
"tags": ["canvas"],
"notes": [{
"name": "Article",
"href": "https://web.archive.org/web/20170825024655/http://blogs.adobe.com/webplatform/2013/01/30/winding-rules-in-canvas/"
}]
}
!*/
/*!
{
"name": "Canvas text",
"property": "canvastext",
"caniuse": "canvas-text",
"tags": ["canvas", "graphics"],
"polyfills": ["canvastext"]
}
!*/
/*!
{
"name": "Clipboard API",
"property": "clipboard",
"tags": ["clipboard"],
"authors": ["Markel Ferro (@MarkelFe)"],
"async": true,
"warnings": ["It may return false in non-HTTPS connections as the API is only available in secure contexts"],
"notes": [{
"name": "MDN Docs Clipboard Object",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/Clipboard"
}, {
"name": "MDN Docs Clipboard API",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API"
}]
}
!*/
/*!
{
"name": "Content Editable",
"property": "contenteditable",
"caniuse": "contenteditable",
"notes": [{
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/multipage/interaction.html#contenteditable"
}]
}
!*/
/*!
{
"name": "Context menus",
"property": "contextmenu",
"caniuse": "menu",
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/html5/interactive-elements.html#context-menus"
}, {
"name": "thewebrocks.com Demo",
"href": "http://thewebrocks.com/demos/context-menu/"
}],
"polyfills": ["jquery-contextmenu"]
}
!*/
/*!
{
"name": "Cross-Origin Resource Sharing",
"property": "cors",
"caniuse": "cors",
"authors": ["Theodoor van Donge"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS"
}],
"polyfills": ["pmxdr", "ppx", "flxhr"]
}
!*/
/*!
{
"name": "Web Cryptography",
"property": "cryptography",
"caniuse": "cryptography",
"tags": ["crypto"],
"authors": ["roblarsen"],
"notes": [{
"name": "W3C Editor's Draft Spec",
"href": "https://www.w3.org/TR/WebCryptoAPI/"
}]
}
!*/
/*!
{
"name": "getRandomValues",
"property": "getrandomvalues",
"caniuse": "getrandomvalues",
"tags": ["crypto"],
"authors": ["komachi"],
"notes": [{
"name": "W3C Editors Draft Spec",
"href": "https://w3c.github.io/webcrypto/#Crypto-interface-methods"
}]
}
!*/
/*!
{
"name": "cssall",
"property": "cssall",
"notes": [{
"name": "Spec",
"href": "https://drafts.csswg.org/css-cascade/#all-shorthand"
}]
}
!*/
/*!
{
"name": "CSS Animations",
"property": "cssanimations",
"caniuse": "css-animation",
"polyfills": ["transformie", "csssandpaper"],
"tags": ["css"],
"warnings": ["Android < 4 will pass this test, but can only animate a single property at a time"],
"notes": [{
"name": "Article: 'Dispelling the Android CSS animation myths'",
"href": "https://web.archive.org/web/20180602074607/https://daneden.me/2011/12/14/putting-up-with-androids-bullshit/"
}]
}
!*/
/*!
{
"name": "Appearance",
"property": "appearance",
"caniuse": "css-appearance",
"tags": ["css"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-appearance"
}, {
"name": "CSS-Tricks CSS Almanac: appearance",
"href": "https://css-tricks.com/almanac/properties/a/appearance/"
}]
}
!*/
/*!
{
"name": "aspectratio css property",
"property": "aspectratio",
"tags": ["css aspectratio", "aspect-ratio"],
"builderAliases": ["aspectratio"],
"caniuse":"mdn-css_properties_aspect-ratio",
"authors": ["Debadutta Panda"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/aspect-ratio"
}]
}
!*/
/*!
{
"name": "Backdrop Filter",
"property": "backdropfilter",
"authors": ["Brian Seward"],
"tags": ["css"],
"caniuse": "css-backdrop-filter",
"notes": [{
"name": "W3C Editors Draft Spec",
"href": "https://drafts.fxtf.org/filters-2/#BackdropFilterProperty"
}, {
"name": "WebKit Blog introduction + Demo",
"href": "https://www.webkit.org/blog/3632/introducing-backdrop-filters/"
}]
}
!*/
/*!
{
"name": "CSS Background Blend Mode",
"property": "backgroundblendmode",
"caniuse": "css-backgroundblendmode",
"tags": ["css"],
"notes": [{
"name": "CSS Blend Modes could be the next big thing in Web Design",
"href": "https://medium.com/@bennettfeely/css-blend-modes-could-be-the-next-big-thing-in-web-design-6b51bf53743a"
}, {
"name": "Demo",
"href": "https://bennettfeely.com/gradients/"
}]
}
!*/
/*!
{
"name": "CSS Background Clip Text",
"property": "backgroundcliptext",
"authors": ["ausi"],
"tags": ["css"],
"notes": [{
"name": "CSS Tricks Article",
"href": "https://css-tricks.com/image-under-text/"
}, {
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip"
}, {
"name": "Related Github Issue",
"href": "https://github.com/Modernizr/Modernizr/issues/199"
}]
}
!*/
/*!
{
"name": "Background Position Shorthand",
"property": "bgpositionshorthand",
"caniuse": "css-background-offsets",
"tags": ["css"],
"builderAliases": ["css_backgroundposition_shorthand"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en/CSS/background-position"
}, {
"name": "W3C Spec",
"href": "https://www.w3.org/TR/css3-background/#background-position"
}, {
"name": "Demo",
"href": "https://jsfiddle.net/Blink/bBXvt/"
}]
}
!*/
/*!
{
"name": "Background Position XY",
"property": "bgpositionxy",
"tags": ["css"],
"builderAliases": ["css_backgroundposition_xy"],
"authors": ["Allan Lei", "Brandom Aaron"],
"notes": [{
"name": "Demo",
"href": "https://jsfiddle.net/allanlei/R8AYS/"
}, {
"name": "Adapted From",
"href": "https://github.com/brandonaaron/jquery-cssHooks/blob/master/bgpos.js"
}]
}
!*/
/*!
{
"name": "Background Repeat",
"property": ["bgrepeatspace", "bgrepeatround"],
"tags": ["css"],
"builderAliases": ["css_backgroundrepeat"],
"authors": ["Ryan Seddon"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/background-repeat"
}, {
"name": "Test Page",
"href": "https://jsbin.com/uzesun/"
}, {
"name": "Demo",
"href": "https://jsfiddle.net/ryanseddon/yMLTQ/6/"
}]
}
!*/
/*!
{
"name": "Background Size",
"property": "backgroundsize",
"tags": ["css"],
"knownBugs": ["This will false positive in Opera Mini - https://github.com/Modernizr/Modernizr/issues/396"],
"notes": [{
"name": "Related Issue",
"href": "https://github.com/Modernizr/Modernizr/issues/396"
}]
}
!*/
/*!
{
"name": "Background Size Cover",
"property": "bgsizecover",
"tags": ["css"],
"builderAliases": ["css_backgroundsizecover"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en/CSS/background-size"
}]
}
!*/
/*!
{
"name": "Border Image",
"property": "borderimage",
"caniuse": "border-image",
"polyfills": ["css3pie"],
"knownBugs": ["Android < 2.0 is true, but has a broken implementation"],
"tags": ["css"]
}
!*/
/*!
{
"name": "Border Radius",
"property": "borderradius",
"caniuse": "border-radius",
"polyfills": ["css3pie"],
"tags": ["css"],
"notes": [{
"name": "Comprehensive Compat Chart",
"href": "https://muddledramblings.com/table-of-css3-border-radius-compliance"
}]
}
!*/
/*!
{
"name": "Box Decoration Break",
"property": "boxdecorationbreak",
"caniuse": "css-boxdecorationbreak",
"tags": ["css"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/box-decoration-break"
}, {
"name": "Demo",
"href": "https://jsbin.com/xojoro/edit?css,output"
}]
}
!*/
/*!
{
"name": "Box Shadow",
"property": "boxshadow",
"caniuse": "css-boxshadow",
"tags": ["css"],
"knownBugs": [
"WebOS false positives on this test.",
"The Kindle Silk browser false positives"
]
}
!*/
/*!
{
"name": "Box Sizing",
"property": "boxsizing",
"caniuse": "css3-boxsizing",
"polyfills": ["borderboxmodel", "boxsizingpolyfill", "borderbox"],
"tags": ["css"],
"builderAliases": ["css_boxsizing"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing"
}, {
"name": "Related Github Issue",
"href": "https://github.com/Modernizr/Modernizr/issues/248"
}]
}
!*/
/*!
{
"name": "CSS Calc",
"property": "csscalc",
"caniuse": "calc",
"tags": ["css"],
"builderAliases": ["css_calc"],
"authors": ["@calvein"]
}
!*/
/*!
{
"name": "CSS :checked pseudo-selector",
"caniuse": "css-sel3",
"property": "checked",
"tags": ["css"],
"notes": [{
"name": "Related Github Issue",
"href": "https://github.com/Modernizr/Modernizr/pull/879"
}]
}
!*/
/*!
{
"name": "CSS Font ch Units",
"authors": ["Ron Waldon (@jokeyrhyme)"],
"property": "csschunit",
"caniuse": "ch-unit",
"tags": ["css"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/css3-values/#font-relative-lengths"
}]
}
!*/
/*!
{
"name": "CSS Columns",
"property": "csscolumns",
"caniuse": "multicolumn",
"tags": ["css"]
}
!*/
/*!
{
"name": "CSS Grid (old & new)",
"property": ["cssgrid", "cssgridlegacy"],
"authors": ["Faruk Ates"],
"tags": ["css"],
"notes": [{
"name": "The new, standardized CSS Grid",
"href": "https://www.w3.org/TR/css3-grid-layout/"
}, {
"name": "The _old_ CSS Grid (legacy)",
"href": "https://www.w3.org/TR/2011/WD-css3-grid-layout-20110407/"
}]
}
!*/
/*!
{
"name": "CSS Cubic Bezier Range",
"property": "cubicbezierrange",
"tags": ["css"],
"builderAliases": ["css_cubicbezierrange"],
"authors": ["@calvein"],
"warnings": ["In old versions (pre-2013) cubic-bezier values can't be > 1 due to Webkit [bug #45761](https://bugs.webkit.org/show_bug.cgi?id=45761)"],
"notes": [{
"name": "Comprehensive Compat Chart",
"href": "https://muddledramblings.com/table-of-css3-border-radius-compliance/"
}]
}
!*/
/*!
{
"name": "CSS Custom Properties",
"property": "customproperties",
"caniuse": "css-variables",
"tags": ["css"],
"builderAliases": ["css_customproperties"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/--*"
}, {
"name": "W3C Spec",
"href": "https://drafts.csswg.org/css-variables/"
}]
}
!*/
/*!
{
"name": "CSS Display run-in",
"property": "display-runin",
"authors": ["alanhogan"],
"tags": ["css"],
"builderAliases": ["css_displayrunin"],
"notes": [{
"name": "CSS Tricks Article",
"href": "https://web.archive.org/web/20111204150927/http://css-tricks.com:80/596-run-in/"
}, {
"name": "Related Github Issue",
"href": "https://github.com/Modernizr/Modernizr/issues/198"
}]
}
!*/
/*!
{
"name": "CSS Display table",
"property": "displaytable",
"caniuse": "css-table",
"authors": ["scottjehl"],
"tags": ["css"],
"builderAliases": ["css_displaytable"],
"notes": [{
"name": "Detects for all additional table display values",
"href": "https://pastebin.com/Gk9PeVaQ"
}]
}
!*/
/*!
{
"name": "CSS text-overflow ellipsis",
"property": "ellipsis",
"caniuse": "text-overflow",
"tags": ["css"]
}
!*/
/*!
{
"name": "CSS.escape()",
"property": "cssescape",
"polyfills": ["css-escape"],
"tags": ["css", "cssom"]
}
!*/
/*!
{
"name": "CSS Font ex Units",
"authors": ["Ron Waldon (@jokeyrhyme)"],
"property": "cssexunit",
"caniuse": "mdn-css_types_length_ex",
"tags": ["css"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/css3-values/#font-relative-lengths"
}]
}
!*/
/*!
{
"name": "CSS Supports",
"property": "supports",
"caniuse": "css-featurequeries",
"tags": ["css"],
"builderAliases": ["css_supports"],
"notes": [{
"name": "W3C Spec (The @supports rule)",
"href": "https://dev.w3.org/csswg/css3-conditional/#at-supports"
}, {
"name": "Related Github Issue",
"href": "https://github.com/Modernizr/Modernizr/issues/648"
}, {
"name": "W3C Spec (The CSSSupportsRule interface)",
"href": "https://dev.w3.org/csswg/css3-conditional/#the-csssupportsrule-interface"
}]
}
!*/
/*!
{
"name": "CSS Filters",
"property": "cssfilters",
"caniuse": "css-filters",
"polyfills": ["polyfilter"],
"tags": ["css"],
"builderAliases": ["css_filters"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/filter"
}]
}
!*/
/*!
{
"name": "Flexbox",
"property": "flexbox",
"caniuse": "flexbox",
"tags": ["css"],
"notes": [{
"name": "The _new_ flexbox",
"href": "https://www.w3.org/TR/css-flexbox-1/"
}],
"warnings": [
"A `true` result for this detect does not imply that the `flex-wrap` property is supported; see the `flexwrap` detect."
]
}
!*/
/*!
{
"name": "Flexbox (legacy)",
"property": "flexboxlegacy",
"tags": ["css"],
"polyfills": ["flexie"],
"notes": [{
"name": "The _old_ flexbox",
"href": "https://www.w3.org/TR/2009/WD-css3-flexbox-20090723/"
}]
}
!*/
/*!
{
"name": "Flexbox (tweener)",
"property": "flexboxtweener",
"tags": ["css"],
"polyfills": ["flexie"],
"notes": [{
"name": "The _inbetween_ flexbox",
"href": "https://www.w3.org/TR/2011/WD-css3-flexbox-20111129/"
}],
"warnings": ["This represents an old syntax, not the latest standard syntax."]
}
!*/
/*!
{
"name": "Flex Gap",
"property": "flexgap",
"caniuse": "flexbox-gap",
"tags": ["css", "flexbox"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/css-align-3/#gaps"
}],
"authors": ["Chris Smith (@chris13524)"]
}
!*/
/*!
{
"name": "Flex Line Wrapping",
"property": "flexwrap",
"tags": ["css", "flexbox"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/css-flexbox-1/"
}],
"warnings": [
"Does not imply a modern implementation see documentation."
]
}
!*/
/*!
{
"name": "CSS :focus-visible pseudo-selector",
"caniuse": "css-focus-visible",
"property": "focusvisible",
"authors": ["@esaborit4code"],
"tags": ["css"]
}
!*/
/*!
{
"name": "CSS :focus-within pseudo-selector",
"caniuse": "css-focus-within",
"property": "focuswithin",
"tags": ["css"]
}
!*/
/*!
{
"name": "Font Display",
"property": "fontdisplay",
"authors": ["Patrick Kettner"],
"caniuse": "css-font-rendering-controls",
"notes": [{
"name": "W3C Spec",
"href": "https://drafts.csswg.org/css-fonts-4/#font-display-desc"
}, {
"name": "`font-display` for the masses",
"href": "https://css-tricks.com/font-display-masses/"
}]
}
!*/
/*!
{
"name": "@font-face",
"property": "fontface",
"authors": ["Diego Perini", "Mat Marquis"],
"tags": ["css"],
"knownBugs": [
"False Positive: WebOS https://github.com/Modernizr/Modernizr/issues/342",
"False Positive: WP7 https://github.com/Modernizr/Modernizr/issues/538"
],
"notes": [{
"name": "@font-face detection routine by Diego Perini",
"href": "http://javascript.nwbox.com/CSSSupport/"
}, {
"name": "Filament Group @font-face compatibility research",
"href": "https://docs.google.com/presentation/d/1n4NyG4uPRjAA8zn_pSQ_Ket0RhcWC6QlZ6LMjKeECo0/edit#slide=id.p"
}, {
"name": "Filament Grunticon/@font-face device testing results",
"href": "https://docs.google.com/spreadsheet/ccc?key=0Ag5_yGvxpINRdHFYeUJPNnZMWUZKR2ItMEpRTXZPdUE#gid=0"
}, {
"name": "CSS fonts on Android",
"href": "https://stackoverflow.com/questions/3200069/css-fonts-on-android"
}, {
"name": "@font-face and Android",
"href": "http://archivist.incutio.com/viewlist/css-discuss/115960"
}]
}
!*/
/*!
{
"name": "CSS Generated Content",
"property": "generatedcontent",
"tags": ["css"],
"warnings": ["Android may not return correct height for anything below 7px in old versions #738"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/css3-selectors/#gen-content"
}, {
"name": "MDN Docs on :before",
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/::before"
}, {
"name": "MDN Docs on :after",
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/::after"
}]
}
!*/
/*!
{
"name": "CSS Gradients",
"caniuse": "css-gradients",
"property": "cssgradients",
"tags": ["css"],
"knownBugs": ["False-positives on webOS (https://github.com/Modernizr/Modernizr/issues/202)"],
"notes": [{
"name": "Webkit Gradient Syntax",
"href": "https://webkit.org/blog/175/introducing-css-gradients/"
}, {
"name": "Linear Gradient Syntax",
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient"
}, {
"name": "W3C Spec",
"href": "https://drafts.csswg.org/css-images-3/#gradients"
}]
}
!*/
/*! {
"name": "CSS Hairline",
"property": "hairline",
"tags": ["css"],
"authors": ["strarsis"],
"notes": [{
"name": "Blog post about CSS retina hairlines",
"href": "http://dieulot.net/css-retina-hairline"
}, {
"name": "Derived from",
"href": "https://gist.github.com/dieulot/520a49463f6058fbc8d1"
}]
}
!*/
/*!
{
"name": "CSS HSLA Colors",
"caniuse": "css3-colors",
"property": "hsla",
"tags": ["css"]
}
!*/
/*!
{
"name": "CSS Hyphens",
"caniuse": "css-hyphens",
"property": ["csshyphens", "softhyphens", "softhyphensfind"],
"tags": ["css"],
"builderAliases": ["css_hyphens"],
"async": true,
"authors": ["David Newton"],
"warnings": [
"These tests currently require document.body to be present",
"If loading Hyphenator.js via yepnope, be cautious of issue 158: https://github.com/mnater/hyphenator/issues/158",
"This is very large only include it if you absolutely need it"
],
"notes": [{
"name": "The Current State of Hyphenation on the Web.",
"href": "https://davidnewton.ca/the-current-state-of-hyphenation-on-the-web"
}, {
"name": "Hyphenation Test Page",
"href": "https://web.archive.org/web/20150319125549/http://davidnewton.ca/demos/hyphenation/test.html"
}, {
"name": "Hyphenation is Language Specific",
"href": "https://code.google.com/p/hyphenator/source/diff?spec=svn975&r=975&format=side&path=/trunk/Hyphenator.js#sc_svn975_313"
}, {
"name": "Related Modernizr Issue",
"href": "https://github.com/Modernizr/Modernizr/issues/312"
}]
}
!*/
/*!
{
"name": "CSS :invalid pseudo-class",
"property": "cssinvalid",
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/:invalid"
}]
}
!*/
/*!
{
"name": "CSS :last-child pseudo-selector",
"caniuse": "css-sel3",
"property": "lastchild",
"tags": ["css"],
"builderAliases": ["css_lastchild"],
"notes": [{
"name": "Related Github Issue",
"href": "https://github.com/Modernizr/Modernizr/pull/304"
}]
}
!*/
/*!
{
"name": "CSS Mask",
"caniuse": "css-masks",
"property": "cssmask",
"tags": ["css"],
"builderAliases": ["css_mask"],
"notes": [{
"name": "Webkit blog on CSS Masks",
"href": "https://webkit.org/blog/181/css-masks/"
}, {
"name": "Safari Docs",
"href": "https://developer.apple.com/library/archive/documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Masks/Masks.html"
}, {
"name": "CSS SVG mask",
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/mask"
}, {
"name": "Combine with clippaths for awesomeness",
"href": "https://web.archive.org/web/20150508193041/http://generic.cx:80/for/webkit/test.html"
}]
}
!*/
/*!
{
"name": "CSS Media Queries",
"caniuse": "css-mediaqueries",
"property": "mediaqueries",
"tags": ["css"],
"builderAliases": ["css_mediaqueries"]
}
!*/
/*!
{
"name": "CSS Multiple Backgrounds",
"caniuse": "multibackgrounds",
"property": "multiplebgs",
"tags": ["css"]
}
!*/
/*!
{
"name": "CSS :nth-child pseudo-selector",
"caniuse": "css-sel3",
"property": "nthchild",
"tags": ["css"],
"notes": [{
"name": "Related Github Issue",
"href": "https://github.com/Modernizr/Modernizr/pull/685"
}, {
"name": "Sitepoint :nth-child documentation",
"href": "https://www.sitepoint.com/atoz-css-screencast-nth-child/"
}],
"authors": ["@emilchristensen"],
"knownBugs": ["Known false negative in Safari 3.1 and Safari 3.2.2"]
}
!*/
/*!
{
"name": "CSS Object Fit",
"caniuse": "object-fit",
"property": "objectfit",
"tags": ["css"],
"builderAliases": ["css_objectfit"],
"notes": [{
"name": "Opera Article on Object Fit",
"href": "https://dev.opera.com/articles/css3-object-fit-object-position/"
}]
}
!*/
/*!
{
"name": "CSS Opacity",
"caniuse": "css-opacity",
"property": "opacity",
"tags": ["css"]
}
!*/
/*!
{
"name": "CSS Overflow Scrolling",
"property": "overflowscrolling",
"tags": ["css"],
"builderAliases": ["css_overflow_scrolling"],
"notes": [{
"name": "Article on iOS overflow scrolling",
"href": "https://css-tricks.com/snippets/css/momentum-scrolling-on-ios-overflow-elements/"
}, {
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-overflow-scrolling"
}]
}
!*/
/*!
{
"name": "CSS Pointer Events",
"caniuse": "pointer-events",
"property": "csspointerevents",
"authors": ["ausi"],
"tags": ["css"],
"builderAliases": ["css_pointerevents"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events"
}, {
"name": "Test Project Page",
"href": "https://ausi.github.com/Feature-detection-technique-for-pointer-events/"
}, {
"name": "Test Project Wiki",
"href": "https://github.com/ausi/Feature-detection-technique-for-pointer-events/wiki"
}, {
"name": "Related Github Issue",
"href": "https://github.com/Modernizr/Modernizr/issues/80"
}]
}
!*/
/*!
{
"name": "CSS position: sticky",
"property": "csspositionsticky",
"tags": ["css"],
"builderAliases": ["css_positionsticky"],
"notes": [{
"name": "Chrome bug report",
"href": "https://bugs.chromium.org/p/chromium/issues/detail?id=322972"
}],
"warnings": ["using position:sticky on anything but top aligned elements is buggy in Chrome < 37 and iOS <=7+"]
}
!*/
/*!
{
"name": "CSS Generated Content Animations",
"property": "csspseudoanimations",
"tags": ["css"]
}
!*/
/*!
{
"name": "CSS Transitions",
"property": "csstransitions",
"caniuse": "css-transitions",
"tags": ["css"]
}
!*/
/*!
{
"name": "CSS Generated Content Transitions",
"property": "csspseudotransitions",
"tags": ["css"]
}
!*/
/*!
{
"name": "CSS Reflections",
"caniuse": "css-reflections",
"property": "cssreflections",
"tags": ["css"]
}
!*/
/*!
{
"name": "CSS Regions",
"caniuse": "css-regions",
"authors": ["Mihai Balan"],
"property": "regions",
"tags": ["css"],
"builderAliases": ["css_regions"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/css3-regions/"
}]
}
!*/
/*!
{
"name": "CSS Font rem Units",
"caniuse": "rem",
"authors": ["nsfmc"],
"property": "cssremunit",
"tags": ["css"],
"builderAliases": ["css_remunit"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/css3-values/#relative0"
}, {
"name": "Font Size with rem by Jonathan Snook",
"href": "https://snook.ca/archives/html_and_css/font-size-with-rem"
}]
}
!*/
/*!
{
"name": "CSS UI Resize",
"property": "cssresize",
"caniuse": "css-resize",
"tags": ["css"],
"builderAliases": ["css_resize"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/css3-ui/#resize"
}, {
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en/CSS/resize"
}]
}
!*/
/*!
{
"name": "CSS rgba",
"caniuse": "css3-colors",
"property": "rgba",
"tags": ["css"],
"notes": [{
"name": "CSSTricks Tutorial",
"href": "https://css-tricks.com/rgba-browser-support/"
}]
}
!*/
/*!
{
"name": "CSS Stylable Scrollbars",
"property": "cssscrollbar",
"tags": ["css"],
"builderAliases": ["css_scrollbars"]
}
!*/
/*!
{
"name": "Scroll Snap Points",
"property": "scrollsnappoints",
"caniuse": "css-snappoints",
"notes": [{
"name": "Setting native-like scrolling offsets in CSS with Scrolling Snap Points",
"href": "http://generatedcontent.org/post/66817675443/setting-native-like-scrolling-offsets-in-css-with"
}, {
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Scroll_Snap_Points"
}],
"polyfills": ["scrollsnap"]
}
!*/
/*!
{
"name": "CSS Shapes",
"property": "shapes",
"tags": ["css"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/css-shapes"
}, {
"name": "Examples from Adobe",
"href": "https://web.archive.org/web/20171230010236/http://webplatform.adobe.com:80/shapes"
}, {
"name": "Examples from CSS-Tricks",
"href": "https://css-tricks.com/examples/ShapesOfCSS/"
}]
}
!*/
/*!
{
"name": "CSS general sibling selector",
"caniuse": "css-sel3",
"property": "siblinggeneral",
"tags": ["css"],
"notes": [{
"name": "Related Github Issue",
"href": "https://github.com/Modernizr/Modernizr/pull/889"
}]
}
!*/
/*!
{
"name": "CSS Subpixel Fonts",
"property": "subpixelfont",
"tags": ["css"],
"builderAliases": ["css_subpixelfont"],
"authors": ["@derSchepp", "@gerritvanaaken", "@rodneyrehm", "@yatil", "@ryanseddon"],
"notes": [{
"name": "Origin Test",
"href": "https://github.com/gerritvanaaken/subpixeldetect"
}]
}
!*/
/*!
{
"name": "CSS :target pseudo-class",
"caniuse": "css-sel3",
"property": "target",
"tags": ["css"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/:target"
}],
"authors": ["@zachleat"],
"warnings": ["Opera Mini supports :target but doesn't update the hash for anchor links."]
}
!*/
/*!
{
"name": "CSS text-align-last",
"property": "textalignlast",
"caniuse": "css-text-align-last",
"tags": ["css"],
"warnings": ["IE does not support the 'start' or 'end' values."],
"notes": [{
"name": "Quirksmode",
"href": "https://www.quirksmode.org/css/text/textalignlast.html"
}, {
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/text-align-last"
}]
}
!*/
/*!
{
"name": "CSS textDecoration",
"property": "textdecoration",
"caniuse": "text-decoration",
"tags": ["css"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/css-text-decor-3/#line-decoration"
}]
}
!*/
/*!
{
"name": "CSS textshadow",
"property": "textshadow",
"caniuse": "css-textshadow",
"tags": ["css"],
"knownBugs": ["FF3.0 will false positive on this test"]
}
!*/
/*!
{
"name": "CSS Transforms",
"property": "csstransforms",
"caniuse": "transforms2d",
"tags": ["css"]
}
!*/
/*!
{
"name": "CSS Transforms 3D",
"property": "csstransforms3d",
"caniuse": "transforms3d",
"tags": ["css"],
"knownBugs": [
"Chrome may occasionally fail this test on some systems; more info: https://bugs.chromium.org/p/chromium/issues/detail?id=129004, however, the issue has since been closed (marked as fixed)."
]
}
!*/
/*!
{
"name": "CSS Transforms Level 2",
"property": "csstransformslevel2",
"authors": ["rupl"],
"tags": ["css"],
"notes": [{
"name": "CSSWG Draft Spec",
"href": "https://drafts.csswg.org/css-transforms-2/"
}]
}
!*/
/*!
{
"name": "CSS Transform Style preserve-3d",
"property": "preserve3d",
"authors": ["denyskoch", "aFarkas"],
"tags": ["css"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/transform-style"
}, {
"name": "Related Github Issue",
"href": "https://github.com/Modernizr/Modernizr/issues/1748"
}]
}
!*/
/*!
{
"name": "CSS user-select",
"property": "userselect",
"caniuse": "user-select-none",
"authors": ["ryan seddon"],
"tags": ["css"],
"builderAliases": ["css_userselect"],
"notes": [{
"name": "Related Modernizr Issue",
"href": "https://github.com/Modernizr/Modernizr/issues/250"
}]
}
!*/
/*!
{
"name": "CSS :valid pseudo-class",
"property": "cssvalid",
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/:valid"
}]
}
!*/
/*!
{
"name": "Variable Open Type Fonts",
"property": "variablefonts",
"authors": ["Patrick Kettner"],
"tags": ["css"],
"notes": [{
"name": "Variable fonts on the web",
"href": "https://webkit.org/blog/7051/variable-fonts-on-the-web/"
}, {
"name": "Variable fonts for responsive design",
"href": "https://alistapart.com/blog/post/variable-fonts-for-responsive-design"
}]
}
!*/
/*!
{
"name": "CSS vh unit",
"property": "cssvhunit",
"caniuse": "viewport-units",
"tags": ["css"],
"builderAliases": ["css_vhunit"],
"notes": [{
"name": "Related Modernizr Issue",
"href": "https://github.com/Modernizr/Modernizr/issues/572"
}, {
"name": "Similar JSFiddle",
"href": "https://jsfiddle.net/FWeinb/etnYC/"
}]
}
!*/
/*!
{
"name": "CSS vmax unit",
"property": "cssvmaxunit",
"caniuse": "viewport-units",
"tags": ["css"],
"builderAliases": ["css_vmaxunit"],
"notes": [{
"name": "Related Modernizr Issue",
"href": "https://github.com/Modernizr/Modernizr/issues/572"
}, {
"name": "JSFiddle Example",
"href": "https://jsfiddle.net/glsee/JDsWQ/4/"
}]
}
!*/
/*!
{
"name": "CSS vmin unit",
"property": "cssvminunit",
"caniuse": "viewport-units",
"tags": ["css"],
"builderAliases": ["css_vminunit"],
"notes": [{
"name": "Related Modernizr Issue",
"href": "https://github.com/Modernizr/Modernizr/issues/572"
}, {
"name": "JSFiddle Example",
"href": "https://jsfiddle.net/glsee/JRmdq/8/"
}]
}
!*/
/*!
{
"name": "CSS vw unit",
"property": "cssvwunit",
"caniuse": "viewport-units",
"tags": ["css"],
"builderAliases": ["css_vwunit"],
"notes": [{
"name": "Related Modernizr Issue",
"href": "https://github.com/Modernizr/Modernizr/issues/572"
}, {
"name": "JSFiddle Example",
"href": "https://jsfiddle.net/FWeinb/etnYC/"
}]
}
!*/
/*!
{
"name": "will-change",
"property": "willchange",
"caniuse": "will-change",
"notes": [{
"name": "W3C Spec",
"href": "https://drafts.csswg.org/css-will-change/"
}]
}
!*/
/*!
{
"name": "CSS wrap-flow",
"property": "wrapflow",
"tags": ["css"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/css3-exclusions"
}, {
"name": "Example by Louie Rootfield",
"href": "https://webdesign.tutsplus.com/tutorials/css-exclusions--cms-28087"
}]
}
!*/
/*!
{
"name": "Custom Elements API",
"property": "customelements",
"caniuse": "custom-elementsv1",
"tags": ["customelements"],
"polyfills": ["customelements"],
"notes": [{
"name": "Specs for Custom Elements",
"href": "https://www.w3.org/TR/custom-elements/"
}]
}
!*/
/*!
{
"name": "Custom protocol handler",
"property": "customprotocolhandler",
"authors": ["Ben Schwarz"],
"builderAliases": ["custom_protocol_handler"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/dev/system-state.html#custom-handlers"
}, {
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/navigator.registerProtocolHandler"
}]
}
!*/
/*!
{
"name": "Dart",
"property": "dart",
"authors": ["Theodoor van Donge"],
"notes": [{
"name": "Language website",
"href": "https://www.dartlang.org/"
}]
}
!*/
/*!
{
"name": "DataView",
"property": "dataview",
"authors": ["Addy Osmani"],
"builderAliases": ["dataview_api"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en/JavaScript_typed_arrays/DataView"
}],
"polyfills": ["jdataview"]
}
!*/
/*!
{
"name": "classList",
"caniuse": "classlist",
"property": "classlist",
"tags": ["dom"],
"builderAliases": ["dataview_api"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en/DOM/element.classList"
}]
}
!*/
/*!
{
"name": "createElement with Attributes",
"property": ["createelementattrs", "createelement-attrs"],
"tags": ["dom"],
"builderAliases": ["dom_createElement_attrs"],
"authors": ["James A. Rosen"],
"notes": [{
"name": "Related Github Issue",
"href": "https://github.com/Modernizr/Modernizr/issues/258"
}]
}
!*/
/*!
{
"name": "dataset API",
"caniuse": "dataset",
"property": "dataset",
"tags": ["dom"],
"builderAliases": ["dom_dataset"],
"authors": ["@phiggins42"]
}
!*/
/*!
{
"name": "Document Fragment",
"property": "documentfragment",
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-B63ED1A3"
}, {
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment"
}, {
"name": "QuirksMode Compatibility Tables",
"href": "https://www.quirksmode.org/m/w3c_core.html#t112"
}],
"authors": ["Ron Waldon (@jokeyrhyme)"],
"knownBugs": ["false-positive on Blackberry 9500, see QuirksMode note"],
"tags": ["dom"]
}
!*/
/*!
{
"name": "[hidden] Attribute",
"property": "hidden",
"tags": ["dom"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/dev/interaction.html#the-hidden-attribute"
}, {
"name": "original implementation of detect code",
"href": "https://github.com/aFarkas/html5shiv/blob/bf4fcc4/src/html5shiv.js#L38"
}],
"polyfills": ["html5shiv"],
"authors": ["Ron Waldon (@jokeyrhyme)"]
}
!*/
/*!
{
"name": "Intersection Observer",
"property": "intersectionobserver",
"caniuse": "intersectionobserver",
"tags": ["dom"],
"notes": [{
"name": "W3C Spec",
"href": "https://w3c.github.io/IntersectionObserver/"
}, {
"name": "IntersectionObserver polyfill",
"href": "https://github.com/w3c/IntersectionObserver/tree/master/polyfill"
}, {
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en/docs/Web/API/Intersection_Observer_API"
}]
}
!*/
/*!
{
"name": "microdata",
"property": "microdata",
"tags": ["dom"],
"builderAliases": ["dom_microdata"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/microdata/"
}]
}
!*/
/*!
{
"name": "DOM4 MutationObserver",
"property": "mutationobserver",
"caniuse": "mutationobserver",
"tags": ["dom"],
"authors": ["Karel Sedláček (@ksdlck)"],
"polyfills": ["mutationobservers"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver"
}]
}
!*/
/*!
{
"property": "passiveeventlisteners",
"caniuse": "passive-event-listener",
"tags": ["dom"],
"authors": ["Rick Byers"],
"name": "Passive event listeners",
"notes": [{
"name": "WHATWG Spec",
"href": "https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-passive"
}, {
"name": "WICG explainer",
"href": "https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md"
}]
}
!*/
/*!
{
"name": "Shadow DOM API",
"property": "shadowroot",
"caniuse": "shadowdomv1",
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot"
}],
"authors": ["Kevin Coyle (@kevin-coyle-unipro)", "Pascal Lim (@pascalim)"],
"tags": ["dom"]
}
!*/
/*!
{
"name": "Shadow DOM API (Legacy)",
"property": "shadowrootlegacy",
"caniuse": "shadowdom",
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/Element/createShadowRoot"
}],
"authors": ["Kevin Coyle (@kevin-coyle-unipro)", "Pascal Lim (@pascalim)"],
"tags": ["dom"]
}
!*/
/*!
{
"name": "bdi Element",
"property": "bdi",
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bdi"
}]
}
!*/
/*!
{
"name": "details Element",
"caniuse": "details",
"property": "details",
"tags": ["elem"],
"builderAliases": ["elem_details"],
"authors": ["@mathias"],
"notes": [{
"name": "Mathias' Original",
"href": "https://mathiasbynens.be/notes/html5-details-jquery#comment-35"
}]
}
!*/
/*!
{
"name": "output Element",
"property": "outputelem",
"tags": ["elem"],
"builderAliases": ["elem_output"],
"notes": [{
"name": "WhatWG Spec",
"href": "https://html.spec.whatwg.org/multipage/form-elements.html#the-output-element"
}]
}
!*/
/*!
{
"name": "picture Element",
"property": "picture",
"tags": ["elem"],
"authors": ["Scott Jehl", "Mat Marquis"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/multipage/embedded-content.html#embedded-content"
}, {
"name": "Relevant spec issue",
"href": "https://github.com/ResponsiveImagesCG/picture-element/issues/87"
}]
}
!*/
/*!
{
"name": "progress Element",
"caniuse": "progress",
"property": ["progressbar", "meter"],
"tags": ["elem"],
"builderAliases": ["elem_progress_meter"],
"authors": ["Stefan Wallin"]
}
!*/
/*!
{
"name": "ruby, rp, rt Elements",
"caniuse": "ruby",
"property": "ruby",
"tags": ["elem"],
"builderAliases": ["elem_ruby"],
"authors": ["Cătălin Mariș"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-ruby-element"
}]
}
!*/
/*!
{
"name": "Template Tag",
"property": "template",
"caniuse": "template",
"tags": ["elem"],
"notes": [{
"name": "HTML5Rocks Article",
"href": "https://www.html5rocks.com/en/tutorials/webcomponents/template/"
}, {
"name": "W3C Spec",
"href": "https://web.archive.org/web/20171130222649/http://www.w3.org/TR/html5/scripting-1.html"
}]
}
!*/
/*!
{
"name": "time Element",
"property": "time",
"tags": ["elem"],
"builderAliases": ["elem_time"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-time-element"
}]
}
!*/
/*!
{
"name": "Track element and Timed Text Track",
"property": ["texttrackapi", "track"],
"tags": ["elem"],
"builderAliases": ["elem_track"],
"authors": ["Addy Osmani"],
"notes": [{
"name": "W3C Spec (Track Element)",
"href": "https://web.archive.org/web/20121119095019/http://www.w3.org/TR/html5/the-track-element.html#the-track-element"
}, {
"name": "W3C Spec (Track API)",
"href": "https://web.archive.org/web/20121119094620/http://www.w3.org/TR/html5/media-elements.html#text-track-api"
}],
"warnings": ["While IE10 has implemented the track element, IE10 does not expose the underlying APIs to create timed text tracks by JS (really sad)"]
}
!*/
/*!
{
"name": "Unknown Elements",
"property": "unknownelements",
"tags": ["elem"],
"notes": [{
"name": "The Story of the HTML5 Shiv",
"href": "https://www.paulirish.com/2011/the-history-of-the-html5-shiv/"
}, {
"name": "original implementation of detect code",
"href": "https://github.com/aFarkas/html5shiv/blob/bf4fcc4/src/html5shiv.js#L36"
}],
"polyfills": ["html5shiv"],
"authors": ["Ron Waldon (@jokeyrhyme)"]
}
!*/
/*!
{
"name": "Emoji",
"property": "emoji"
}
!*/
/*!
{
"name": "ES5 Array",
"property": "es5array",
"notes": [{
"name": "ECMAScript 5.1 Language Specification",
"href": "https://www.ecma-international.org/ecma-262/5.1/"
}],
"polyfills": ["es5shim"],
"authors": ["Ron Waldon (@jokeyrhyme)"],
"tags": ["es5"]
}
!*/
/*!
{
"name": "ES5 Date",
"property": "es5date",
"notes": [{
"name": "ECMAScript 5.1 Language Specification",
"href": "https://www.ecma-international.org/ecma-262/5.1/"
}],
"polyfills": ["es5shim"],
"authors": ["Ron Waldon (@jokeyrhyme)"],
"tags": ["es5"]
}
!*/
/*!
{
"name": "ES5 Function",
"property": "es5function",
"notes": [{
"name": "ECMAScript 5.1 Language Specification",
"href": "https://www.ecma-international.org/ecma-262/5.1/"
}],
"polyfills": ["es5shim"],
"authors": ["Ron Waldon (@jokeyrhyme)"],
"tags": ["es5"]
}
!*/
/*!
{
"name": "ES5 Object",
"property": "es5object",
"notes": [{
"name": "ECMAScript 5.1 Language Specification",
"href": "https://www.ecma-international.org/ecma-262/5.1/"
}],
"polyfills": ["es5shim", "es5sham"],
"authors": ["Ron Waldon (@jokeyrhyme)"],
"tags": ["es5"]
}
!*/
/*!
{
"name": "ES5 Strict Mode",
"property": "strictmode",
"caniuse": "use-strict",
"notes": [{
"name": "ECMAScript 5.1 Language Specification",
"href": "https://www.ecma-international.org/ecma-262/5.1/"
}],
"authors": ["@kangax"],
"tags": ["es5"],
"builderAliases": ["es5_strictmode"]
}
!*/
/*!
{
"name": "ES5 String",
"property": "es5string",
"notes": [{
"name": "ECMAScript 5.1 Language Specification",
"href": "https://www.ecma-international.org/ecma-262/5.1/"
}],
"polyfills": ["es5shim"],
"authors": ["Ron Waldon (@jokeyrhyme)"],
"tags": ["es5"]
}
!*/
/*!
{
"name": "JSON",
"property": "json",
"caniuse": "json",
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Glossary/JSON"
}],
"polyfills": ["json2"]
}
!*/
/*!
{
"name": "ES5 Syntax",
"property": "es5syntax",
"notes": [{
"name": "ECMAScript 5.1 Language Specification",
"href": "https://www.ecma-international.org/ecma-262/5.1/"
}, {
"name": "original implementation of detect code",
"href": "https://kangax.github.io/compat-table/es5/"
}],
"authors": ["Ron Waldon (@jokeyrhyme)"],
"warnings": ["This detect uses `eval()`, so CSP may be a problem."],
"tags": ["es5"]
}
!*/
/*!
{
"name": "ES5 Immutable Undefined",
"property": "es5undefined",
"notes": [{
"name": "ECMAScript 5.1 Language Specification",
"href": "https://www.ecma-international.org/ecma-262/5.1/"
}, {
"name": "original implementation of detect code",
"href": "https://kangax.github.io/compat-table/es5/"
}],
"authors": ["Ron Waldon (@jokeyrhyme)"],
"tags": ["es5"]
}
!*/
/*!
{
"name": "ES5",
"property": "es5",
"caniuse": "es5",
"notes": [{
"name": "ECMAScript 5.1 Language Specification",
"href": "https://www.ecma-international.org/ecma-262/5.1/"
}],
"polyfills": ["es5shim", "es5sham"],
"authors": ["Ron Waldon (@jokeyrhyme)"],
"tags": ["es5"]
}
!*/
/*!
{
"name": "ES6 Array",
"property": "es6array",
"notes": [{
"name": "ECMAScript 6 specification",
"href": "https://www.ecma-international.org/ecma-262/6.0/index.html"
}, {
"name": "Last ECMAScript specification",
"href": "https://www.ecma-international.org/ecma-262/index.html"
}],
"polyfills": ["es6shim"],
"authors": ["Ron Waldon (@jokeyrhyme)"],
"tags": ["es6"]
}
!*/
/*!
{
"name": "ES6 Arrow Functions",
"property": "arrow",
"authors": ["Vincent Riemer"],
"tags": ["es6"]
}
!*/
/*!
{
"name": "ES6 Class",
"property": "es6class",
"notes": [{
"name": "ECMAScript 6 language specification",
"href": "https://www.ecma-international.org/ecma-262/6.0/#sec-class-definitions"
}],
"caniuse": "es6-class",
"authors": ["dabretin"],
"tags": ["es6"],
"builderAliases": ["class"]
}
!*/
/*!
{
"name": "ES6 Collections",
"property": "es6collections",
"notes": [{
"name": "ECMAScript 6 specification",
"href": "https://www.ecma-international.org/ecma-262/6.0/index.html"
}, {
"name": "Last ECMAScript specification",
"href": "https://www.ecma-international.org/ecma-262/index.html"
}],
"polyfills": ["es6shim", "weakmap"],
"authors": ["Ron Waldon (@jokeyrhyme)"],
"tags": ["es6"]
}
!*/
/*!
{
"name": "ES6 Generators",
"property": "generators",
"authors": ["Michael Kachanovskyi"],
"tags": ["es6"]
}
!*/
/*!
{
"name": "ES6 Math",
"property": "es6math",
"notes": [{
"name": "ECMAScript 6 specification",
"href": "https://www.ecma-international.org/ecma-262/6.0/index.html"
}, {
"name": "Last ECMAScript specification",
"href": "https://www.ecma-international.org/ecma-262/index.html"
}],
"polyfills": ["es6shim"],
"authors": ["Ron Waldon (@jokeyrhyme)"],
"tags": ["es6"]
}
!*/
/*!
{
"name": "ES6 Number",
"property": "es6number",
"notes": [{
"name": "ECMAScript 6 specification",
"href": "https://www.ecma-international.org/ecma-262/6.0/index.html"
}, {
"name": "Last ECMAScript specification",
"href": "https://www.ecma-international.org/ecma-262/index.html"
}],
"polyfills": ["es6shim"],
"authors": ["Ron Waldon (@jokeyrhyme)"],
"tags": ["es6"]
}
!*/
/*!
{
"name": "ES6 Object",
"property": "es6object",
"notes": [{
"name": "ECMAScript 6 specification",
"href": "https://www.ecma-international.org/ecma-262/6.0/index.html"
}, {
"name": "Last ECMAScript specification",
"href": "https://www.ecma-international.org/ecma-262/index.html"
}],
"polyfills": ["es6shim"],
"authors": ["Ron Waldon (@jokeyrhyme)"],
"tags": ["es6"]
}
!*/
/*!
{
"name": "ES6 Promises",
"property": "promises",
"caniuse": "promises",
"polyfills": ["es6promises"],
"authors": ["Krister Kari", "Jake Archibald"],
"tags": ["es6"],
"notes": [{
"name": "The ES6 promises spec",
"href": "https://github.com/domenic/promises-unwrapping"
}, {
"name": "Chromium dashboard - ES6 Promises",
"href": "https://www.chromestatus.com/features/5681726336532480"
}, {
"name": "JavaScript Promises: an Introduction",
"href": "https://developers.google.com/web/fundamentals/primers/promises/"
}]
}
!*/
/*!
{
"name": "ES6 Rest parameters",
"property": "restparameters",
"notes": [{
"name": "ECMAScript 6 language specification",
"href": "https://www.ecma-international.org/ecma-262/6.0/#sec-function-definitions"
}],
"caniuse": "rest",
"authors": ["dabretin"],
"tags": ["es6"]
}
!*/
/*!
{
"name": "ES6 Spread array",
"property": "spreadarray",
"notes": [{
"name": "ECMAScript Specification",
"href": "https://tc39.es/ecma262/#sec-array-initializer"
},
{
"name": "Article",
"href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax"
}],
"caniuse": "mdn-javascript_operators_spread_spread_in_arrays",
"authors": ["dabretin"],
"warnings": ["not for object literals (implemented in ES7)"],
"tags": ["es6"]
}
!*/
/*!
{
"name": "ES6 Template Strings",
"property": "stringtemplate",
"caniuse": "template-literals",
"builderAliases": ["templatestrings"],
"notes": [{
"name": "ECMAScript 6 draft specification",
"href": "https://tc39wiki.calculist.org/es6/template-strings/"
}],
"authors": ["dabretin"],
"tags": ["es6"]
}
!*/
/*!
{
"name": "ES6 String",
"property": "es6string",
"notes": [{
"name": "ECMAScript 6 Specification",
"href": "https://www.ecma-international.org/ecma-262/6.0/index.html"
}, {
"name": "Last ECMAScript Specification",
"href": "https://www.ecma-international.org/ecma-262/index.html"
}],
"polyfills": ["es6shim"],
"authors": ["Ron Waldon (@jokeyrhyme)"],
"tags": ["es6"]
}
!*/
/*!
{
"name": "ES6 Symbol",
"property": "es6symbol",
"caniuse": "mdn-javascript_builtins_symbol",
"notes": [{
"name": "Official ECMAScript 6 specification",
"href": "https://www.ecma-international.org/ecma-262/6.0/#sec-symbol-constructor"
},{
"name": "MDN web docs",
"href": "https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Symbol"
}],
"polyfills": ["es6symbol"],
"authors": ["buhichan (@buhichan)"],
"tags": ["es6","symbol"]
}
!*/
/*!
{
"name": "ES7 Array",
"property": "es7array",
"notes": [{
"name": "ECMAScript array Specification",
"href": "https://tc39.es/ecma262/#sec-array.prototype.includes"
}],
"authors": ["dabretin"],
"tags": ["es7"]
}
!*/
/*!
{
"name": "ES7 Rest destructuring",
"property": ["restdestructuringarray", "restdestructuringobject"],
"caniuse" : "destructuring%20assignment",
"notes": [{
"name": "ECMAScript Destructuring Assignment Specification",
"href": "https://tc39.es/ecma262/#sec-destructuring-assignment"
}],
"authors": ["dabretin"],
"tags": ["es7"]
}
!*/
/*!
{
"name": "ES7 Spread object",
"property": "spreadobject",
"notes": [{
"name": "ECMAScript array Specification",
"href": "http://www.ecma-international.org/ecma-262/#sec-object-initializer"
}],
"authors": ["dabretin"],
"tags": ["es7"]
}
!*/
/*!
{
"name": "ES8 Object",
"property": "es8object",
"notes": [{
"name": "ECMAScript specification: Object.entries",
"href": "https://www.ecma-international.org/ecma-262/#sec-object.entries"
}, {
"name": "ECMAScript specification: Object.values",
"href": "https://www.ecma-international.org/ecma-262/#sec-object.values"
}],
"caniuse": "object-entries,object-values",
"authors": ["dabretin"],
"tags": ["es8"]
}
!*/
/*!
{
"name": "CustomEvent",
"property": "customevent",
"tags": ["customevent"],
"authors": ["Alberto Elias"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/DOM-Level-3-Events/#interface-CustomEvent"
}, {
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en/docs/Web/API/CustomEvent"
}],
"polyfills": ["eventlistener"]
}
!*/
/*!
{
"name": "Orientation and Motion Events",
"property": ["devicemotion", "deviceorientation"],
"caniuse": "deviceorientation",
"notes": [{
"name": "W3C Editor's Draft Spec",
"href": "https://w3c.github.io/deviceorientation/"
}, {
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/Detecting_device_orientation"
}],
"authors": ["Shi Chuan"],
"tags": ["event"],
"builderAliases": ["event_deviceorientation_motion"]
}
!*/
/*!
{
"name": "Event Listener",
"property": "eventlistener",
"caniuse": "addeventlistener",
"authors": ["Andrew Betts (@triblondon)"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-Registration-interfaces"
}],
"polyfills": ["eventlistener"]
}
!*/
/*!
{
"name": "Force Touch Events",
"property": "forcetouch",
"authors": ["Kraig Walker"],
"notes": [{
"name": "Responding to Force Touch Events from JavaScript",
"href": "https://developer.apple.com/library/archive/documentation/AppleApplications/Conceptual/SafariJSProgTopics/RespondingtoForceTouchEventsfromJavaScript.html"
}]
}
!*/
/*!
{
"name": "Hashchange event",
"property": "hashchange",
"caniuse": "hashchange",
"tags": ["history"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onhashchange"
}],
"polyfills": [
"jquery-hashchange",
"moo-historymanager",
"jquery-ajaxy",
"hasher",
"shistory"
]
}
!*/
/*!
{
"name": "onInput Event",
"property": "oninput",
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.oninput"
}, {
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/multipage/input.html#common-input-element-attributes"
}, {
"name": "Related Github Issue",
"href": "https://github.com/Modernizr/Modernizr/issues/210"
}],
"authors": ["Patrick Kettner"],
"tags": ["event"]
}
!*/
/*!
{
"name": "DOM Pointer Events API",
"property": "pointerevents",
"caniuse": "pointer",
"tags": ["input"],
"authors": ["Stu Cox"],
"notes": [{
"name": "W3C Spec (Pointer Events)",
"href": "https://www.w3.org/TR/pointerevents/"
}, {
"name": "W3C Spec (Pointer Events Level 2)",
"href": "https://www.w3.org/TR/pointerevents2/"
}, {
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent"
}],
"warnings": ["This property name now refers to W3C DOM PointerEvents: https://github.com/Modernizr/Modernizr/issues/548#issuecomment-12812099"],
"polyfills": ["pep"]
}
!*/
/*!
{
"name": "Proximity API",
"property": "proximity",
"authors": ["Cătălin Mariș"],
"tags": ["events", "proximity"],
"caniuse": "proximity",
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/Proximity_Events"
}, {
"name": "W3C Spec",
"href": "https://www.w3.org/TR/proximity/"
}]
}
!*/
/*!
{
"name": "File API",
"property": "filereader",
"caniuse": "fileapi",
"notes": [{
"name": "W3C Working Draft Spec",
"href": "https://www.w3.org/TR/FileAPI/"
}],
"tags": ["file"],
"builderAliases": ["file_api"],
"knownBugs": ["Will fail in Safari 5 due to its lack of support for the standards defined FileReader object"]
}
!*/
/*!
{
"name": "Filesystem API",
"property": "filesystem",
"caniuse": "filesystem",
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/file-system-api/"
}],
"authors": ["Eric Bidelman (@ebidel)"],
"tags": ["file"],
"builderAliases": ["file_filesystem"],
"knownBugs": ["The API will be present in Chrome incognito, but will throw an exception. See crbug.com/93417"]
}
!*/
/*!
{
"name": "Flash",
"property": "flash",
"tags": ["flash"],
"polyfills": ["shumway"]
}
!*/
/*!
{
"name": "Fullscreen API",
"property": "fullscreen",
"caniuse": "fullscreen",
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en/API/Fullscreen"
}],
"polyfills": ["screenfulljs"],
"builderAliases": ["fullscreen_api"]
}
!*/
/*!
{
"name": "GamePad API",
"property": "gamepads",
"caniuse": "gamepad",
"authors": ["Eric Bidelman"],
"tags": ["media"],
"warnings": ["In new browsers it may return false in non-HTTPS connections"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/gamepad/"
}, {
"name": "HTML5 Rocks Tutorial",
"href": "https://www.html5rocks.com/en/tutorials/doodles/gamepad/#toc-featuredetect"
}]
}
!*/
/*!
{
"name": "Geolocation API",
"property": "geolocation",
"caniuse": "geolocation",
"tags": ["media"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/WebAPI/Using_geolocation"
}],
"polyfills": [
"joshuabell-polyfill",
"webshims",
"geo-location-javascript",
"geolocation-api-polyfill"
]
}
!*/
/*!
{
"name": "Hidden Scrollbar",
"property": "hiddenscroll",
"authors": ["Oleg Korsunsky"],
"tags": ["overlay"],
"notes": [{
"name": "Overlay Scrollbar description",
"href": "https://developer.apple.com/library/mac/releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_7.html#//apple_ref/doc/uid/TP40010355-SW39"
}, {
"name": "Video example of overlay scrollbars",
"href": "https://gfycat.com/FoolishMeaslyAtlanticsharpnosepuffer"
}]
}
!*/
/*!
{
"name": "History API",
"property": "history",
"caniuse": "history",
"tags": ["history"],
"authors": ["Hay Kranen", "Alexander Farkas"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/html51/browsers.html#the-history-interface"
}, {
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/window.history"
}],
"polyfills": ["historyjs", "html5historyapi"]
}
!*/
/*!
{
"name": "HTML Imports",
"property": "htmlimports",
"tags": ["html", "import"],
"polyfills": ["polymer-htmlimports"],
"notes": [{
"name": "W3C Spec",
"href": "https://w3c.github.io/webcomponents/spec/imports/"
}, {
"name": "HTML Imports - #include for the web",
"href": "https://www.html5rocks.com/en/tutorials/webcomponents/imports/"
}]
}
!*/
/*!
{
"name": "IE8 compat mode",
"property": "ie8compat",
"authors": ["Erich Ocean"]
}
!*/
/*!
{
"name": "iframe[sandbox] Attribute",
"property": "sandbox",
"caniuse": "iframe-sandbox",
"tags": ["iframe"],
"builderAliases": ["iframe_sandbox"],
"notes": [
{
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/multipage/embedded-content.html#attr-iframe-sandbox"
}],
"knownBugs": ["False-positive on Firefox < 29"]
}
!*/
/*!
{
"name": "iframe[seamless] Attribute",
"property": "seamless",
"tags": ["iframe"],
"builderAliases": ["iframe_seamless"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/multipage/embedded-content.html#attr-iframe-seamless"
}]
}
!*/
/*!
{
"name": "iframe[srcdoc] Attribute",
"property": "srcdoc",
"caniuse": "iframe-srcdoc",
"tags": ["iframe"],
"builderAliases": ["iframe_srcdoc"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/multipage/embedded-content.html#attr-iframe-srcdoc"
}]
}
!*/
/*!
{
"name": "Animated PNG",
"async": true,
"property": "apng",
"caniuse": "apng",
"tags": ["image"],
"builderAliases": ["img_apng"],
"notes": [{
"name": "Wikipedia Article",
"href": "https://en.wikipedia.org/wiki/APNG"
}]
}
!*/
/*!
{
"name": "AVIF",
"async": true,
"property": "avif",
"caniuse": "avif",
"tags": ["image"],
"authors": ["Markel Ferro (@MarkelFe)"],
"polyfills": ["avifjs"],
"notes": [{
"name": "Avif Spec",
"href": "https://aomediacodec.github.io/av1-avif/"
}]
}
!*/
/*!
{
"name": "Image crossOrigin",
"property": "imgcrossorigin",
"tags": ["image"],
"notes": [{
"name": "Cross Domain Images and the Tainted Canvas",
"href": "https://blog.codepen.io/2013/10/08/cross-domain-images-tainted-canvas/"
}]
}
!*/
/*!
{
"name": "EXIF Orientation",
"property": "exiforientation",
"tags": ["image"],
"builderAliases": ["exif_orientation"],
"async": true,
"authors": ["Paul Sayre"],
"notes": [{
"name": "Article by Dave Perrett",
"href": "https://www.daveperrett.com/articles/2012/07/28/exif-orientation-handling-is-a-ghetto/"
}, {
"name": "Article by Calvin Hass",
"href": "https://www.impulseadventure.com/photo/exif-orientation.html"
}]
}
!*/
/*!
{
"name": "JPEG 2000",
"async": true,
"aliases": ["jpeg-2000", "jpg2"],
"property": "jpeg2000",
"caniuse": "jpeg2000",
"tags": ["image"],
"authors": ["@eric_wvgg"],
"notes": [{
"name": "Wikipedia Article",
"href": "https://en.wikipedia.org/wiki/JPEG_2000"
}]
}
!*/
/*!
{
"name": "JPEG XR (extended range)",
"async": true,
"aliases": ["jpeg-xr"],
"property": "jpegxr",
"tags": ["image"],
"notes": [{
"name": "Wikipedia Article",
"href": "https://en.wikipedia.org/wiki/JPEG_XR"
}]
}
!*/
/*!
{
"name": "image and iframe native lazy loading",
"property": "lazyloading",
"caniuse": "loading-lazy-attr",
"tags": ["image", "lazy", "loading"],
"notes": [{
"name": "Native image lazy-loading for the web",
"href": "https://addyosmani.com/blog/lazy-loading/"
}]
}
!*/
/*!
{
"name": "sizes attribute",
"async": true,
"property": "sizes",
"tags": ["image"],
"authors": ["Mat Marquis"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element"
}, {
"name": "Srcset and sizes",
"href": "https://ericportis.com/posts/2014/srcset-sizes/"
}]
}
!*/
/*!
{
"name": "srcset attribute",
"property": "srcset",
"caniuse": "srcset",
"tags": ["image"],
"notes": [{
"name": "Smashing Magazine Article",
"href": "https://www.smashingmagazine.com/2013/08/webkit-implements-srcset-and-why-its-a-good-thing/"
}, {
"name": "Generate multi-resolution images for srcset with Grunt",
"href": "https://addyosmani.com/blog/generate-multi-resolution-images-for-srcset-with-grunt/"
}]
}
!*/
/*!
{
"name": "Webp Alpha",
"async": true,
"property": "webpalpha",
"aliases": ["webp-alpha"],
"tags": ["image"],
"authors": ["Krister Kari", "Rich Bradshaw", "Ryan Seddon", "Paul Irish"],
"notes": [{
"name": "WebP Info",
"href": "https://developers.google.com/speed/webp/"
}, {
"name": "Article about WebP support",
"href": "https://optimus.keycdn.com/support/webp-support/"
}, {
"name": "Chromium WebP announcement",
"href": "https://blog.chromium.org/2011/11/lossless-and-transparency-encoding-in.html?m=1"
}]
}
!*/
/*!
{
"name": "Webp Animation",
"async": true,
"property": "webpanimation",
"aliases": ["webp-animation"],
"tags": ["image"],
"authors": ["Krister Kari", "Rich Bradshaw", "Ryan Seddon", "Paul Irish"],
"notes": [{
"name": "WebP Info",
"href": "https://developers.google.com/speed/webp/"
}, {
"name": "Chromium blog - Chrome 32 Beta: Animated WebP images and faster Chrome for Android touch input",
"href": "https://blog.chromium.org/2013/11/chrome-32-beta-animated-webp-images-and.html"
}]
}
!*/
/*!
{
"name": "Webp Lossless",
"async": true,
"property": ["webplossless", "webp-lossless"],
"tags": ["image"],
"authors": ["@amandeep", "Rich Bradshaw", "Ryan Seddon", "Paul Irish"],
"notes": [{
"name": "Webp Info",
"href": "https://developers.google.com/speed/webp/"
}, {
"name": "Webp Lossless Spec",
"href": "https://developers.google.com/speed/webp/docs/webp_lossless_bitstream_specification"
}]
}
!*/
/*!
{
"name": "Webp",
"async": true,
"property": "webp",
"caniuse": "webp",
"tags": ["image"],
"builderAliases": ["img_webp"],
"authors": ["Krister Kari", "@amandeep", "Rich Bradshaw", "Ryan Seddon", "Paul Irish"],
"notes": [{
"name": "Webp Info",
"href": "https://developers.google.com/speed/webp/"
}, {
"name": "Chromium blog - Chrome 32 Beta: Animated WebP images and faster Chrome for Android touch input",
"href": "https://blog.chromium.org/2013/11/chrome-32-beta-animated-webp-images-and.html"
}, {
"name": "Webp Lossless Spec",
"href": "https://developers.google.com/speed/webp/docs/webp_lossless_bitstream_specification"
}, {
"name": "Article about WebP support",
"href": "https://optimus.keycdn.com/support/webp-support/"
}, {
"name": "Chromium WebP announcement",
"href": "https://blog.chromium.org/2011/11/lossless-and-transparency-encoding-in.html?m=1"
}]
}
!*/
/*!
{
"name": "input[capture] Attribute",
"property": "capture",
"tags": ["video", "image", "audio", "media", "attribute"],
"notes": [{
"name": "W3C Draft Spec",
"href": "https://www.w3.org/TR/html-media-capture/"
}]
}
!*/
/*!
{
"name": "input[file] Attribute",
"property": "fileinput",
"caniuse": "forms",
"tags": ["file", "forms", "input"],
"builderAliases": ["forms_fileinput"]
}
!*/
/*!
{
"name": "input[directory] Attribute",
"property": "directory",
"authors": ["silverwind"],
"tags": ["file", "input", "attribute"]
}
!*/
/*!
{
"name": "input formaction",
"property": "inputformaction",
"aliases": ["input-formaction"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-formaction"
}, {
"name": "Wufoo demo",
"href": "https://www.wufoo.com/html5/formaction-attribute/"
}],
"polyfills": ["webshims"]
}
!*/
/*!
{
"name": "input[form] Attribute",
"property": "formattribute",
"tags": ["attribute", "forms", "input"],
"builderAliases": ["forms_formattribute"]
}
!*/
/*!
{
"name": "input formenctype",
"property": "inputformenctype",
"aliases": ["input-formenctype"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-formenctype"
}, {
"name": "Wufoo demo",
"href": "https://www.wufoo.com/html5/formenctype-attribute/"
}],
"polyfills": ["html5formshim"]
}
!*/
/*!
{
"name": "input formmethod",
"property": "inputformmethod",
"notes": [{
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-formmethod"
}, {
"name": "Wufoo demo",
"href": "https://www.wufoo.com/html5/formmethod-attribute/"
}],
"polyfills": ["webshims"]
}
!*/
/*!
{
"name": "input formnovalidate",
"property": "inputformnovalidate",
"aliases": ["input-formnovalidate"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-formnovalidate"
}, {
"name": "Wufoo demo",
"href": "https://www.wufoo.com/html5/formnovalidate-attribute/"
}],
"polyfills": ["html5formshim"]
}
!*/
/*!
{
"name": "input formtarget",
"property": "inputformtarget",
"aliases": ["input-formtarget"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-formtarget"
}, {
"name": "Wufoo demo",
"href": "https://www.wufoo.com/html5/formtarget-attribute/"
}],
"polyfills": ["html5formshim"]
}
!*/
/*!
{
"name": "Input attributes",
"property": "input",
"tags": ["forms"],
"authors": ["Mike Taylor"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/multipage/input.html#input-type-attr-summary"
}],
"knownBugs": ["Some blackberry devices report false positive for input.multiple"]
}
!*/
/*!
{
"name": "Form input types",
"property": "inputtypes",
"caniuse": "forms",
"tags": ["forms"],
"authors": ["Mike Taylor"],
"polyfills": [
"jquerytools",
"webshims",
"h5f",
"webforms2",
"nwxforms",
"fdslider",
"html5slider",
"galleryhtml5forms",
"jscolor",
"html5formshim",
"selectedoptionsjs",
"formvalidationjs"
]
}
!*/
/*!
{
"name": "Form Validation",
"property": "formvalidation",
"tags": ["forms", "validation", "attribute"],
"builderAliases": ["forms_validation"]
}
!*/
/*!
{
"name": "input[type=\"number\"] Localization",
"property": "localizednumber",
"tags": ["forms", "localization", "attribute"],
"authors": ["Peter Janes"],
"notes": [{
"name": "Webkit Bug Tracker Listing",
"href": "https://bugs.webkit.org/show_bug.cgi?id=42484"
}, {
"name": "Based on This",
"href": "https://trac.webkit.org/browser/trunk/LayoutTests/fast/forms/script-tests/input-number-keyoperation.js?rev=80096#L9"
}],
"knownBugs": ["Only ever returns true if the browser/OS is configured to use comma as a decimal separator. This is probably fine for most use cases."]
}
!*/
/*!
{
"name": "input[search] search event",
"property": "inputsearchevent",
"tags": ["input","search"],
"authors": ["Calvin Webster"],
"notes": [{
"name": "Wufoo demo",
"href": "https://www.wufoo.com/html5/search-type/"
}, {
"name": "CSS Tricks",
"href": "https://css-tricks.com/webkit-html5-search-inputs/"
}]
}
!*/
/*!
{
"name": "placeholder attribute",
"property": "placeholder",
"tags": ["forms", "attribute"],
"builderAliases": ["forms_placeholder"]
}
!*/
/*!
{
"name": "form#requestAutocomplete()",
"property": "requestautocomplete",
"tags": ["form", "forms", "requestAutocomplete", "payments"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://wiki.whatwg.org/wiki/RequestAutocomplete"
}]
}
!*/
/*!
{
"name": "Internationalization API",
"property": "intl",
"caniuse": "internationalization",
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl"
}, {
"name": "ECMAScript spec",
"href": "https://www.ecma-international.org/ecma-402/1.0/"
}]
}
!*/
/*!
{
"name": "Font Ligatures",
"property": "ligatures",
"caniuse": "font-feature",
"notes": [{
"name": "Cross-browser Web Fonts",
"href": "https://www.sitepoint.com/cross-browser-web-fonts-part-3/"
}]
}
!*/
/*!
{
"name": "Reverse Ordered Lists",
"property": "olreversed",
"notes": [{
"name": "Impressive Webs article",
"href": "https://www.impressivewebs.com/reverse-ordered-lists-html5/"
}],
"builderAliases": ["lists_reversed"]
}
!*/
/*!
{
"name": "MathML",
"property": "mathml",
"caniuse": "mathml",
"authors": ["Addy Osmani", "Davide P. Cervone", "David Carlisle"],
"knownBugs": ["Firefox < 4 will likely return a false, however it does support MathML inside XHTML documents"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/Math/"
}],
"polyfills": ["mathjax"]
}
!*/
/*!
{
"name": "Media Source Extensions API",
"caniuse": "mediasource",
"property": "mediasource",
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/Media_Source_Extensions_API"
}],
"builderAliases": ["media_source_extension_api"]
}
!*/
/*!
{
"name": "Hover Media Query",
"property": "hovermq",
"tags": ["mediaquery"]
}
!*/
/*!
{
"name": "Pointer Media Query",
"property": "pointermq",
"tags": ["mediaquery"]
}
!*/
/*!
{
"name": "Message Channel",
"property": "messagechannel",
"authors": ["Raju Konga (@kongaraju)"],
"caniuse": "channel-messaging",
"tags": ["performance", "messagechannel"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/2011/WD-webmessaging-20110317/#message-channels"
}, {
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/Channel_Messaging_API/Using_channel_messaging"
}]
}
!*/
/*!
{
"name": "Beacon API",
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/navigator.sendBeacon"
}, {
"name": "W3C Spec",
"href": "https://w3c.github.io/beacon/"
}],
"property": "beacon",
"caniuse": "beacon",
"tags": ["beacon", "network"],
"authors": ["Cătălin Mariș"]
}
!*/
/*!
{
"name": "Connection Effective Type",
"notes": [{
"name": "MDN documentation",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/NetworkInformation/effectiveType"
}],
"property": "connectioneffectivetype",
"builderAliases": ["network_connection"],
"tags": ["network"]
}
!*/
/*!
{
"name": "Low Bandwidth Connection",
"property": "lowbandwidth",
"tags": ["network"],
"builderAliases": ["network_connection"]
}
!*/
/*!
{
"name": "Server Sent Events",
"property": "eventsource",
"tags": ["network"],
"builderAliases": ["network_eventsource"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events"
}]
}
!*/
/*!
{
"name": "Fetch API",
"property": "fetch",
"tags": ["network"],
"caniuse": "fetch",
"notes": [{
"name": "WHATWG Spec",
"href": "https://fetch.spec.whatwg.org/"
}],
"polyfills": ["fetch"]
}
!*/
/*!
{
"name": "XHR responseType='arraybuffer'",
"property": "xhrresponsetypearraybuffer",
"tags": ["network"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://xhr.spec.whatwg.org/#the-responsetype-attribute"
}]
}
!*/
/*!
{
"name": "XHR responseType='blob'",
"property": "xhrresponsetypeblob",
"tags": ["network"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://xhr.spec.whatwg.org/#the-responsetype-attribute"
}]
}
!*/
/*!
{
"name": "XHR responseType='document'",
"property": "xhrresponsetypedocument",
"tags": ["network"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://xhr.spec.whatwg.org/#the-responsetype-attribute"
}]
}
!*/
/*!
{
"name": "XHR responseType='json'",
"property": "xhrresponsetypejson",
"tags": ["network"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://xhr.spec.whatwg.org/#the-responsetype-attribute"
}, {
"name": "Explanation of xhr.responseType='json'",
"href": "https://mathiasbynens.be/notes/xhr-responsetype-json"
}]
}
!*/
/*!
{
"name": "XHR responseType='text'",
"property": "xhrresponsetypetext",
"tags": ["network"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://xhr.spec.whatwg.org/#the-responsetype-attribute"
}]
}
!*/
/*!
{
"name": "XHR responseType",
"property": "xhrresponsetype",
"tags": ["network"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://xhr.spec.whatwg.org/#the-responsetype-attribute"
}]
}
!*/
/*!
{
"name": "XML HTTP Request Level 2 XHR2",
"property": "xhr2",
"caniuse": "xhr2",
"tags": ["network"],
"builderAliases": ["network_xhr2"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/XMLHttpRequest2/"
}, {
"name": "Details on Related Github Issue",
"href": "https://github.com/Modernizr/Modernizr/issues/385"
}]
}
!*/
/*!
{
"name": "Notification",
"property": "notification",
"caniuse": "notifications",
"authors": ["Theodoor van Donge", "Hendrik Beskow"],
"notes": [{
"name": "HTML5 Rocks Tutorial",
"href": "https://www.html5rocks.com/en/tutorials/notifications/quick/"
}, {
"name": "W3C Spec",
"href": "https://www.w3.org/TR/notifications/"
}, {
"name": "Changes in Chrome to Notifications API due to Service Worker Push Notifications",
"href": "https://developers.google.com/web/updates/2015/05/Notifying-you-of-notificiation-changes"
}],
"knownBugs": ["Possibility of false-positive on Chrome for Android if permissions we're granted for a website prior to Chrome 44."],
"polyfills": ["desktop-notify", "html5-notifications"]
}
!*/
/*!
{
"name": "Page Visibility API",
"property": "pagevisibility",
"caniuse": "pagevisibility",
"tags": ["performance"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/DOM/Using_the_Page_Visibility_API"
}, {
"name": "W3C Spec",
"href": "https://www.w3.org/TR/2011/WD-page-visibility-20110602/"
}, {
"name": "HTML5 Rocks Tutorial",
"href": "https://www.html5rocks.com/en/tutorials/pagevisibility/intro/"
}],
"polyfills": ["visibilityjs", "visiblyjs", "jquery-visibility"]
}
!*/
/*!
{
"name": "Navigation Timing API",
"property": "performance",
"caniuse": "nav-timing",
"tags": ["performance"],
"authors": ["Scott Murphy (@uxder)"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/navigation-timing/"
}, {
"name": "HTML5 Rocks Tutorial",
"href": "https://www.html5rocks.com/en/tutorials/webperformance/basics/"
}],
"polyfills": ["perfnow"]
}
!*/
/*!
{
"name": "Pointer Lock API",
"property": "pointerlock",
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/API/Pointer_Lock_API"
}],
"builderAliases": ["pointerlock_api"]
}
!*/
/*!
{
"name": "postMessage",
"property": "postmessage",
"caniuse": "x-doc-messaging",
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/webmessaging/#crossDocumentMessages"
}],
"polyfills": ["easyxdm", "postmessage-jquery"],
"knownBugs": [
"structuredclones - Android 2&3 can not send a structured clone of dates, filelists or regexps.",
"Some old WebKit versions have bugs."
],
"warnings": ["To be safe you should stick with object, array, number and pixeldata."]
}
!*/
/*!
{
"name": "Proxy Object",
"property": "proxy",
"caniuse": "proxy",
"authors": ["Brock Beaudry"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy"
}],
"polyfills": [
"harmony-reflect"
]
}
!*/
/*!
{
"name": "QuerySelector",
"property": "queryselector",
"caniuse": "queryselector",
"tags": ["queryselector"],
"authors": ["Andrew Betts (@triblondon)"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/selectors-api/#queryselectorall"
}],
"polyfills": ["css-selector-engine"]
}
!*/
/*!
{
"name": "rel=prefetch",
"property": "prefetch",
"caniuse": "link-rel-prefetch",
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/resource-hints/#prefetch"
}, {
"name": "Related Github Issue",
"href": "https://github.com/Modernizr/Modernizr/issues/2536"
}]
}
!*/
/*!
{
"name": "requestAnimationFrame",
"property": "requestanimationframe",
"aliases": ["raf"],
"caniuse": "requestanimationframe",
"tags": ["animation"],
"authors": ["Addy Osmani"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/animation-timing/"
}],
"polyfills": ["raf"]
}
!*/
/*!
{
"name": "script[async]",
"property": "scriptasync",
"caniuse": "script-async",
"tags": ["script"],
"builderAliases": ["script_async"],
"authors": ["Theodoor van Donge"]
}
!*/
/*!
{
"name": "script[defer]",
"property": "scriptdefer",
"caniuse": "script-defer",
"tags": ["script"],
"builderAliases": ["script_defer"],
"authors": ["Theodoor van Donge"],
"warnings": ["Browser implementation of the `defer` attribute vary: https://stackoverflow.com/questions/3952009/defer-attribute-chrome#answer-3982619"],
"knownBugs": ["False positive in Opera 12"]
}
!*/
/*!
{
"name": "scrollToOptions dictionary",
"property": "scrolltooptions",
"caniuse": "mdn-api_scrolltooptions",
"notes": [{
"name": "MDN docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollTo"
}],
"authors": ["Oliver Tušla (@asmarcz)", "Chris Smith (@chris13524)"]
}
!*/
/*!
{
"name": "ServiceWorker API",
"property": "serviceworker",
"caniuse": "serviceworkers",
"notes": [{
"name": "ServiceWorkers Explained",
"href": "https://github.com/slightlyoff/ServiceWorker/blob/master/explainer.md"
}]
}
!*/
/*!
{
"property": "speechrecognition",
"caniuse": "speech-recognition",
"tags": ["input", "speech"],
"authors": ["Cătălin Mariș"],
"name": "Speech Recognition API",
"notes": [{
"name": "W3C Spec",
"href": "https://w3c.github.io/speech-api/speechapi.html#speechreco-section"
}, {
"name": "Introduction to the Web Speech API",
"href": "https://developers.google.com/web/updates/2013/01/Voice-Driven-Web-Apps-Introduction-to-the-Web-Speech-API"
}]
}
!*/
/*!
{
"property": "speechsynthesis",
"caniuse": "speech-synthesis",
"tags": ["input", "speech"],
"authors": ["Cătălin Mariș"],
"name": "Speech Synthesis API",
"notes": [{
"name": "W3C Spec",
"href": "https://w3c.github.io/speech-api/speechapi.html#tts-section"
}]
}
!*/
/*!
{
"name": "Cookies",
"property": "cookies",
"tags": ["storage"],
"authors": ["tauren"]
}
!*/
/*!
{
"name": "IndexedDB",
"property": "indexeddb",
"caniuse": "indexeddb",
"tags": ["storage"],
"polyfills": ["indexeddb"],
"async": true
}
!*/
/*!
{
"name": "IndexedDB Blob",
"property": "indexeddbblob",
"tags": ["storage"]
}
!*/
/*!
{
"name": "IndexedDB 2.0",
"property": "indexeddb2",
"tags": ["storage"],
"caniuse": "indexeddb2",
"authors": ["Tan Zhen Yong (@Xenonym)"],
"polyfills": ["indexeddb"],
"async": true
}
!*/
/*!
{
"name": "Local Storage",
"property": "localstorage",
"caniuse": "namevalue-storage",
"tags": ["storage"],
"polyfills": [
"joshuabell-polyfill",
"cupcake",
"storagepolyfill",
"amplifyjs",
"yui-cacheoffline"
]
}
!*/
/*!
{
"name": "Quota Storage Management API",
"property": "quotamanagement",
"tags": ["storage"],
"builderAliases": ["quota_management_api"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/quota-api/"
}]
}
!*/
/*!
{
"name": "Session Storage",
"property": "sessionstorage",
"tags": ["storage"],
"polyfills": ["joshuabell-polyfill", "cupcake", "storagepolyfill"]
}
!*/
/*!
{
"name": "IE User Data API",
"property": "userdata",
"tags": ["storage"],
"authors": ["@stereobooster"],
"notes": [{
"name": "MSDN Documentation",
"href": "https://msdn.microsoft.com/en-us/library/ms531424.aspx"
}]
}
!*/
/*!
{
"name": "Web SQL Database",
"property": "websqldatabase",
"caniuse": "sql-storage",
"tags": ["storage"]
}
!*/
/*!
{
"name": "style[scoped]",
"property": "stylescoped",
"caniuse": "style-scoped",
"tags": ["dom"],
"builderAliases": ["style_scoped"],
"authors": ["Cătălin Mariș"],
"notes": [{
"name": "WHATWG Spec",
"href": "https://html.spec.whatwg.org/multipage/semantics.html#attr-style-scoped"
}],
"polyfills": ["scoped-styles"]
}
!*/
/*!
{
"name": "SVG",
"property": "svg",
"caniuse": "svg",
"tags": ["svg"],
"authors": ["Erik Dahlstrom"],
"polyfills": [
"svgweb",
"raphael",
"canvg",
"svg-boilerplate",
"sie",
"fabricjs"
]
}
!*/
/*!
{
"name": "SVG as an <img> tag source",
"property": "svgasimg",
"caniuse": "svg-img",
"tags": ["svg"],
"aliases": ["svgincss"],
"authors": ["Chris Coyier"],
"notes": [{
"name": "HTML5 Spec",
"href": "https://www.w3.org/TR/html5/embedded-content-0.html#the-img-element"
}]
}
!*/
/*!
{
"name": "SVG clip paths",
"property": "svgclippaths",
"tags": ["svg"],
"notes": [{
"name": "Demo",
"href": "http://srufaculty.sru.edu/david.dailey/svg/newstuff/clipPath4.svg"
}]
}
!*/
/*!
{
"name": "SVG filters",
"property": "svgfilters",
"caniuse": "svg-filters",
"tags": ["svg"],
"builderAliases": ["svg_filters"],
"authors": ["Erik Dahlstrom"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/SVG11/filters.html"
}]
}
!*/
/*!
{
"name": "SVG foreignObject",
"property": "svgforeignobject",
"tags": ["svg"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/SVG11/extend.html"
}]
}
!*/
/*!
{
"name": "Inline SVG",
"property": "inlinesvg",
"caniuse": "svg-html5",
"tags": ["svg"],
"notes": [{
"name": "Test page",
"href": "https://paulirish.com/demo/inline-svg"
}, {
"name": "Test page and results",
"href": "https://codepen.io/eltonmesquita/full/GgXbvo/"
}],
"polyfills": ["inline-svg-polyfill"],
"knownBugs": ["False negative on some Chromia browsers."]
}
!*/
/*!
{
"name": "SVG SMIL animation",
"property": "smil",
"caniuse": "svg-smil",
"tags": ["svg"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/AudioVideo/"
}]
}
!*/
/*!
{
"name": "textarea maxlength",
"property": "textareamaxlength",
"aliases": ["textarea-maxlength"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea"
}],
"polyfills": ["maxlength"]
}
!*/
/*!
{
"name": "Text Encoding/Decoding",
"property": ["textencoder", "textdecoder"],
"caniuse" : "textencoder",
"notes": [{
"name": "MDN TextEncoder Doc",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder"
}, {
"name": "MDN TextDecoder Doc",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder"
}],
"authors": ["dabretin"]
}
!*/
/*!
{
"name": "Typed arrays",
"property": "typedarrays",
"caniuse": "typedarrays",
"tags": ["js"],
"authors": ["Stanley Stuart (@fivetanley)"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays"
}, {
"name": "Kronos spec",
"href": "http://www.ecma-international.org/ecma-262/6.0/#sec-typedarray-objects"
}],
"polyfills": ["joshuabell-polyfill"]
}
!*/
/*!
{
"name": "Unicode Range",
"property": "unicoderange",
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/2013/CR-css-fonts-3-20131003/#descdef-unicode-range"
}, {
"name": "24 Way article",
"href": "https://24ways.org/2011/creating-custom-font-stacks-with-unicode-range"
}]
}
!*/
/*!
{
"name": "Blob URLs",
"property": "bloburls",
"caniuse": "bloburls",
"notes": [{
"name": "W3C Working Draft Spec",
"href": "https://www.w3.org/TR/FileAPI/#creating-revoking"
}],
"tags": ["file", "url"],
"authors": ["Ron Waldon (@jokeyrhyme)"]
}
!*/
/*!
{
"name": "Data URI",
"property": "datauri",
"caniuse": "datauri",
"tags": ["url"],
"builderAliases": ["url_data_uri"],
"async": true,
"notes": [{
"name": "Wikipedia article",
"href": "https://en.wikipedia.org/wiki/Data_URI_scheme"
}],
"warnings": ["Support in Internet Explorer 8 is limited to images and linked resources like CSS files, not HTML files"]
}
!*/
/*!
{
"name": "URL parser",
"property": "urlparser",
"notes": [{
"name": "WHATWG Spec",
"href": "https://url.spec.whatwg.org/"
}],
"polyfills": ["urlparser"],
"authors": ["Ron Waldon (@jokeyrhyme)"],
"tags": ["url"]
}
!*/
/*!
{
"property": "urlsearchparams",
"caniuse": "urlsearchparams",
"tags": ["querystring", "url"],
"authors": ["Cătălin Mariș"],
"name": "URLSearchParams API",
"notes": [{
"name": "WHATWG Spec",
"href": "https://url.spec.whatwg.org/#interface-urlsearchparams"
}, {
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams"
}]
}
!*/
/*!
{
"name": "Vibration API",
"property": "vibrate",
"caniuse": "vibration",
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en/DOM/window.navigator.mozVibrate"
}, {
"name": "W3C Spec",
"href": "https://www.w3.org/TR/vibration/"
}]
}
!*/
/*!
{
"name": "HTML5 Video",
"property": "video",
"caniuse": "video",
"tags": ["html5", "video", "media"],
"knownBugs": ["Without QuickTime, `Modernizr.video.h264` will be `undefined`; https://github.com/Modernizr/Modernizr/issues/546"],
"polyfills": [
"html5media",
"mediaelementjs",
"videojs",
"leanbackplayer",
"videoforeverybody"
]
}
!*/
/*!
{
"name": "Video Autoplay",
"property": "videoautoplay",
"tags": ["video"],
"async": true,
"warnings": ["This test is very large only include it if you absolutely need it"],
"knownBugs": ["crashes with an alert on iOS7 when added to homescreen"]
}
!*/
/*!
{
"name": "Video crossOrigin",
"property": "videocrossorigin",
"caniuse": "cors",
"authors": ["Florian Mailliet"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes"
}]
}
!*/
/*!
{
"name": "Video Loop Attribute",
"property": "videoloop",
"tags": ["video", "media"]
}
!*/
/*!
{
"name": "Video Preload Attribute",
"property": "videopreload",
"tags": ["video", "media"]
}
!*/
/*!
{
"name": "VML",
"property": "vml",
"tags": ["vml"],
"authors": ["Craig Andrews (@candrews)"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/NOTE-VML"
}, {
"name": "MSDN Documentation",
"href": "https://docs.microsoft.com/en-us/windows/desktop/VML/msdn-online-vml-introduction"
}]
}
!*/
/*!
{
"name": "Web Intents",
"property": "webintents",
"authors": ["Eric Bidelman"],
"notes": [{
"name": "Web Intents project site",
"href": "http://www.webintents.org/"
}],
"builderAliases": ["web_intents"]
}
!*/
/*!
{
"name": "Web Animation API",
"property": "webanimations",
"caniuse": "web-animation",
"tags": ["webanimations"],
"polyfills": ["webanimationsjs"],
"notes": [{
"name": "Introducing Web Animations",
"href": "https://birtles.wordpress.com/2013/06/26/introducing-web-animations/"
}]
}
!*/
/*!
{
"name": "PublicKeyCredential",
"notes": [
{
"name": "MDN Documentation",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/PublicKeyCredential"
},
{
"name": "Google Developers solution",
"href": "https://developers.google.com/web/updates/2018/03/webauthn-credential-management#the_solution"
}
],
"property": "publickeycredential",
"tags": ["webauthn", "web authentication"],
"authors": ["Eric Delia"]
}
!*/
/*!
{
"name": "WebGL",
"property": "webgl",
"caniuse": "webgl",
"tags": ["webgl", "graphics"],
"polyfills": ["jebgl", "cwebgl", "iewebgl"]
}
!*/
/*!
{
"name": "WebGL Extensions",
"property": "webglextensions",
"tags": ["webgl", "graphics"],
"builderAliases": ["webgl_extensions"],
"async": true,
"authors": ["Ilmari Heikkinen"],
"notes": [{
"name": "Kronos extensions registry",
"href": "https://www.khronos.org/registry/webgl/extensions/"
}]
}
!*/
/*!
{
"name": "RTC Peer Connection",
"property": "peerconnection",
"caniuse": "rtcpeerconnection",
"tags": ["webrtc"],
"authors": ["Ankur Oberoi"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/webrtc/"
}]
}
!*/
/*!
{
"name": "RTC Data Channel",
"property": "datachannel",
"notes": [{
"name": "HTML5 Rocks Tutorial",
"href": "https://www.html5rocks.com/en/tutorials/webrtc/datachannels/"
}]
}
!*/
/*!
{
"name": "getUserMedia",
"property": "getusermedia",
"caniuse": "stream",
"tags": ["webrtc"],
"authors": ["Eric Bidelman", "Masataka Yakura"],
"notes": [{
"name": "W3C Spec",
"href": "https://w3c.github.io/mediacapture-main/#dom-mediadevices-getusermedia"
}]
}
!*/
/*!
{
"name": "MediaStream Recording API",
"property": "mediarecorder",
"caniuse": "mediarecorder",
"tags": ["mediarecorder", "media"],
"authors": ["Onkar Dahale"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/MediaStream_Recording_API"
}]
}
!*/
/*!
{
"name": "WebSockets Support",
"property": "websockets",
"authors": ["Phread (@fearphage)", "Mike Sherov (@mikesherov)", "Burak Yigit Kaya (@BYK)"],
"caniuse": "websockets",
"tags": ["html5"],
"knownBugs": ["This test will reject any old version of WebSockets even if it is not prefixed such as in Safari 5.1"],
"notes": [{
"name": "CLOSING State and Spec",
"href": "https://www.w3.org/TR/websockets/#the-websocket-interface"
}],
"polyfills": [
"sockjs",
"socketio",
"websocketjs",
"atmosphere",
"graceful-websocket",
"portal",
"datachannel"
]
}
!*/
/*!
{
"name": "Binary WebSockets",
"property": "websocketsbinary",
"tags": ["websockets"],
"builderAliases": ["websockets_binary"]
}
!*/
/*!
{
"name": "Base 64 encoding/decoding",
"property": "atobbtoa",
"builderAliases": ["atob-btoa"],
"caniuse": "atob-btoa",
"tags": ["atob", "base64", "WindowBase64", "btoa"],
"authors": ["Christian Ulbrich"],
"notes": [{
"name": "WindowBase64",
"href": "https://www.w3.org/TR/html5/webappapis.html#windowbase64"
}, {
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/atob"
}],
"polyfills": ["base64js"]
}
!*/
/*!
{
"name": "Framed window",
"property": "framed",
"tags": ["window"],
"builderAliases": ["window_framed"]
}
!*/
/*!
{
"name": "matchMedia",
"property": "matchmedia",
"caniuse": "matchmedia",
"tags": ["matchmedia"],
"authors": ["Alberto Elias"],
"notes": [{
"name": "W3C Spec",
"href": "https://drafts.csswg.org/cssom-view/#the-mediaquerylist-interface"
}, {
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/Window.matchMedia"
}],
"polyfills": ["matchmediajs"]
}
!*/
/*!
{
"name": "PushManager",
"property": "pushmanager",
"caniuse": "mdn-api_pushmanager",
"authors": ["Dawid Kulpa (@dawidkulpa)"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/PushManager"
}]
}
!*/
/*!
{
"name": "ResizeObserver",
"property": "resizeobserver",
"caniuse": "resizeobserver",
"tags": ["ResizeObserver"],
"authors": ["Christian Andersson"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/resize-observer/"
}, {
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver"
}, {
"name": "Web.dev Article",
"href": "https://web.dev/resize-observer/"
}, {
"name": "Digital Ocean tutorial",
"href": "https://www.digitalocean.com/community/tutorials/js-resize-observer"
}]
}
!*/
/*!
{
"name": "worker type option test",
"property": "workertypeoption",
"caniuse":"mdn-api_worker_worker_ecmascript_modules",
"tags": ["web worker type options", "web worker"],
"builderAliases": ["worker_type_options"],
"authors": ["Debadutta Panda"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/Worker/Worker"
}]
}
!*/
/*!
{
"name": "Workers from Blob URIs",
"property": "blobworkers",
"tags": ["performance", "workers"],
"builderAliases": ["workers_blobworkers"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/workers/"
}],
"warnings": ["This test may output garbage to console."],
"authors": ["Jussi Kalliokoski"],
"async": true
}
!*/
/*!
{
"name": "Workers from Data URIs",
"property": "dataworkers",
"tags": ["performance", "workers"],
"builderAliases": ["workers_dataworkers"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/workers/"
}],
"warnings": ["This test may output garbage to console."],
"authors": ["Jussi Kalliokoski"],
"async": true
}
!*/
/*!
{
"name": "Shared Workers",
"property": "sharedworkers",
"caniuse": "sharedworkers",
"tags": ["performance", "workers"],
"builderAliases": ["workers_sharedworkers"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/workers/"
}]
}
!*/
/*!
{
"name": "Web Workers",
"property": "webworkers",
"caniuse": "webworkers",
"tags": ["performance", "workers"],
"notes": [{
"name": "W3C Spec",
"href": "https://www.w3.org/TR/workers/"
}, {
"name": "HTML5 Rocks Tutorial",
"href": "https://www.html5rocks.com/en/tutorials/workers/basics/"
}, {
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers"
}],
"polyfills": ["fakeworker", "html5shims"]
}
!*/
/*!
{
"name": "Transferables Objects",
"property": "transferables",
"tags": ["performance", "workers"],
"builderAliases": ["transferables"],
"notes": [{
"name": "Transferable Objects: Lightning Fast!",
"href": "https://developers.google.com/web/updates/2011/12/Transferable-Objects-Lightning-Fast"
}],
"async": true
}
!*/
/*!
{
"name": "XDomainRequest",
"property": "xdomainrequest",
"tags": ["cors", "xdomainrequest", "ie9", "ie8"],
"authors": ["Ivan Pan (@hypotenuse)"],
"notes": [{
"name": "MDN Docs",
"href": "https://developer.mozilla.org/en-US/docs/Web/API/XDomainRequest"
}]
}
!*/