webshims-rails 1.14.1 → 1.14.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/webshims-rails/version.rb +2 -2
- data/vendor/assets/javascripts/webshims/extras/modernizr-custom.js +0 -0
- data/vendor/assets/javascripts/webshims/polyfiller.js +3 -8
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/canvas2png.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/proxy.php +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/save.php +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/canvas2png.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flash10canvas.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flash9canvas.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flashcanvas.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/proxy.php +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/save.php +0 -0
- data/vendor/assets/javascripts/webshims/shims/color-picker.js +2 -2
- data/vendor/assets/javascripts/webshims/shims/combos/1.js +66 -43
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +66 -31
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +66 -31
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +96 -59
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +96 -59
- data/vendor/assets/javascripts/webshims/shims/combos/14.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +4 -1
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +70 -44
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +66 -31
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +1241 -1126
- data/vendor/assets/javascripts/webshims/shims/combos/19.js +1272 -1214
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +66 -43
- data/vendor/assets/javascripts/webshims/shims/combos/20.js +1272 -1214
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +61 -92
- data/vendor/assets/javascripts/webshims/shims/combos/22.js +30 -16
- data/vendor/assets/javascripts/webshims/shims/combos/23.js +66 -43
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +41 -85
- data/vendor/assets/javascripts/webshims/shims/combos/26.js +1556 -2316
- data/vendor/assets/javascripts/webshims/shims/combos/27.js +12 -10
- data/vendor/assets/javascripts/webshims/shims/combos/28.js +4 -1
- data/vendor/assets/javascripts/webshims/shims/combos/29.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/32.js +1175 -1095
- data/vendor/assets/javascripts/webshims/shims/combos/33.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/34.js +30 -16
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +66 -31
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +66 -31
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +66 -43
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +66 -43
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +66 -31
- data/vendor/assets/javascripts/webshims/shims/combos/97.js +63 -28
- data/vendor/assets/javascripts/webshims/shims/combos/98.js +149 -74
- data/vendor/assets/javascripts/webshims/shims/combos/99.js +149 -74
- data/vendor/assets/javascripts/webshims/shims/combos/comboinfo.json +1 -1
- data/vendor/assets/javascripts/webshims/shims/details.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/es5.js +1175 -1095
- data/vendor/assets/javascripts/webshims/shims/excanvas.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/filereader.js +10 -9
- data/vendor/assets/javascripts/webshims/shims/form-combat.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-core.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-datalist.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-fixrangechange.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-message.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +40 -11
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +4 -1
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +2 -1
- data/vendor/assets/javascripts/webshims/shims/form-validation.js +80 -47
- data/vendor/assets/javascripts/webshims/shims/form-validators.js +19 -8
- data/vendor/assets/javascripts/webshims/shims/forms-picker.js +21 -1
- data/vendor/assets/javascripts/webshims/shims/geolocation.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ar.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ch-CN.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-cs.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-de.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-el.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-en.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-es.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-fa.js +130 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-fr.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-he.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-hi.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-hu.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-it.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ja.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-lt.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-nl.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pl.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt-BR.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt-PT.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ru.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-sv.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-zh-CN.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-zh-TW.js +130 -0
- data/vendor/assets/javascripts/webshims/shims/jajax.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/_icons.scss +186 -0
- data/vendor/assets/javascripts/webshims/shims/jme/b.js +63 -28
- data/vendor/assets/javascripts/webshims/shims/jme/c.js +86 -46
- data/vendor/assets/javascripts/webshims/shims/jme/controls.css +317 -211
- data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +59 -223
- data/vendor/assets/javascripts/webshims/shims/jme/jme.eot +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/jme.svg +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/jme.ttf +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/jme.woff +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +66 -14
- data/vendor/assets/javascripts/webshims/shims/jme/p.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/ChangeLog.txt +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/ReadMe.txt +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/AlphaBar.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/Bars.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/Maps.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/NoColor.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/bar-opacity.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/map-opacity.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/mappoint.gif +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/picker.gif +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/preview-opacity.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/rangearrows.gif +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/jpicker.css +55 -48
- data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +66 -43
- data/vendor/assets/javascripts/webshims/shims/mediaelement-debug.js +833 -0
- data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +31 -76
- data/vendor/assets/javascripts/webshims/shims/mediaelement-native-fix.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/moxie/flash/Moxie.cdn.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/moxie/flash/Moxie.min.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/moxie/js/moxie.js +1542 -2303
- data/vendor/assets/javascripts/webshims/shims/moxie/silverlight/Moxie.cdn.xap +0 -0
- data/vendor/assets/javascripts/webshims/shims/moxie/silverlight/Moxie.min.xap +0 -0
- data/vendor/assets/javascripts/webshims/shims/picture.js +160 -79
- data/vendor/assets/javascripts/webshims/shims/plugins/jquery.ui.position.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/promise.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/range-ui.js +26 -20
- data/vendor/assets/javascripts/webshims/shims/sizzle.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/color-picker.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +444 -326
- data/vendor/assets/javascripts/webshims/shims/styles/forms-picker.css +379 -300
- data/vendor/assets/javascripts/webshims/shims/styles/progress.gif +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/progress.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-forms-ext.scss +8 -8
- data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-shim.scss +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/_extends.scss +0 -14
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +104 -85
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-picker.scss +20 -32
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim-ext.scss +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +14 -34
- data/vendor/assets/javascripts/webshims/shims/styles/shim-ext.css +920 -728
- data/vendor/assets/javascripts/webshims/shims/styles/shim.css +471 -391
- data/vendor/assets/javascripts/webshims/shims/styles/widget.eot +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/widget.svg +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/widget.ttf +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/widget.woff +0 -0
- data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/swfmini-embed.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/swfmini.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/track-ui.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/track.js +30 -16
- metadata +8 -4
- data/vendor/assets/javascripts/webshims/shims/styles/config.rb +0 -12
- data/vendor/assets/javascripts/webshims/shims/swf/filereader.swf +0 -0
File without changes
|
@@ -19,7 +19,7 @@
|
|
19
19
|
});
|
20
20
|
})();
|
21
21
|
|
22
|
-
/*! Picturefill - v2.
|
22
|
+
/*! Picturefill - v2.1.0-beta - 2014-06-03
|
23
23
|
* http://scottjehl.github.io/picturefill
|
24
24
|
* Copyright (c) 2014 https://github.com/scottjehl/picturefill/blob/master/Authors.txt; Licensed MIT */
|
25
25
|
/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license */
|
@@ -78,7 +78,7 @@ window.matchMedia || (window.matchMedia = function() {
|
|
78
78
|
"use strict";
|
79
79
|
|
80
80
|
// If picture is supported, well, that's awesome. Let's get outta here...
|
81
|
-
if( w.HTMLPictureElement ){
|
81
|
+
if ( w.HTMLPictureElement ) {
|
82
82
|
return;
|
83
83
|
}
|
84
84
|
|
@@ -95,12 +95,12 @@ window.matchMedia || (window.matchMedia = function() {
|
|
95
95
|
pf.srcsetSupported = new w.Image().srcset !== undefined;
|
96
96
|
|
97
97
|
// just a string trim workaround
|
98
|
-
pf.trim = function( str ){
|
98
|
+
pf.trim = function( str ) {
|
99
99
|
return str.trim ? str.trim() : str.replace( /^\s+|\s+$/g, "" );
|
100
100
|
};
|
101
101
|
|
102
102
|
// just a string endsWith workaround
|
103
|
-
pf.endsWith = function( str, suffix ){
|
103
|
+
pf.endsWith = function( str, suffix ) {
|
104
104
|
return str.endsWith ? str.endsWith( suffix ) : str.indexOf( suffix, str.length - suffix.length ) !== -1;
|
105
105
|
};
|
106
106
|
|
@@ -135,7 +135,7 @@ window.matchMedia || (window.matchMedia = function() {
|
|
135
135
|
length = length.replace( "vw", "%" );
|
136
136
|
|
137
137
|
// Create a cached element for getting length value widths
|
138
|
-
if( !pf.lengthEl ){
|
138
|
+
if ( !pf.lengthEl ) {
|
139
139
|
pf.lengthEl = doc.createElement( "div" );
|
140
140
|
doc.documentElement.insertBefore( pf.lengthEl, doc.documentElement.firstChild );
|
141
141
|
}
|
@@ -155,24 +155,24 @@ window.matchMedia || (window.matchMedia = function() {
|
|
155
155
|
pf.types["image/png"] = true;
|
156
156
|
|
157
157
|
// test svg support
|
158
|
-
pf.types[ "image/svg+xml" ] = doc.implementation.hasFeature(
|
158
|
+
pf.types[ "image/svg+xml" ] = doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image", "1.1");
|
159
159
|
|
160
160
|
// test webp support, only when the markup calls for it
|
161
|
-
pf.types[ "image/webp" ] = function(){
|
161
|
+
pf.types[ "image/webp" ] = function() {
|
162
162
|
// based on Modernizr's lossless img-webp test
|
163
163
|
// note: asynchronous
|
164
164
|
var img = new w.Image(),
|
165
165
|
type = "image/webp";
|
166
166
|
|
167
|
-
img.onerror = function(){
|
167
|
+
img.onerror = function() {
|
168
168
|
pf.types[ type ] = false;
|
169
169
|
picturefill();
|
170
170
|
};
|
171
|
-
img.onload = function(){
|
171
|
+
img.onload = function() {
|
172
172
|
pf.types[ type ] = img.width === 1;
|
173
173
|
picturefill();
|
174
174
|
};
|
175
|
-
img.src =
|
175
|
+
img.src = "data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=";
|
176
176
|
};
|
177
177
|
|
178
178
|
/**
|
@@ -181,19 +181,17 @@ window.matchMedia || (window.matchMedia = function() {
|
|
181
181
|
* you can define them as a function that'll run only if that type needs to be tested. Just make the test function call picturefill again when it is complete.
|
182
182
|
* see the async webp test above for example
|
183
183
|
*/
|
184
|
-
pf.verifyTypeSupport = function( source ){
|
184
|
+
pf.verifyTypeSupport = function( source ) {
|
185
185
|
var type = source.getAttribute( "type" );
|
186
186
|
// if type attribute exists, return test result, otherwise return true
|
187
|
-
if( type === null || type === "" ){
|
187
|
+
if ( type === null || type === "" ) {
|
188
188
|
return true;
|
189
|
-
}
|
190
|
-
else {
|
189
|
+
} else {
|
191
190
|
// if the type test is a function, run it and return "pending" status. The function will rerun picturefill on pending elements once finished.
|
192
|
-
if( typeof( pf.types[ type ] ) === "function" ){
|
191
|
+
if ( typeof( pf.types[ type ] ) === "function" ) {
|
193
192
|
pf.types[ type ]();
|
194
193
|
return "pending";
|
195
|
-
}
|
196
|
-
else {
|
194
|
+
} else {
|
197
195
|
return pf.types[ type ];
|
198
196
|
}
|
199
197
|
}
|
@@ -219,7 +217,7 @@ window.matchMedia || (window.matchMedia = function() {
|
|
219
217
|
var sourceSizeList = pf.trim( sourceSizeListStr ).split( /\s*,\s*/ ),
|
220
218
|
winningLength;
|
221
219
|
|
222
|
-
for ( var i=0, len=sourceSizeList.length; i < len; i++ ) {
|
220
|
+
for ( var i = 0, len = sourceSizeList.length; i < len; i++ ) {
|
223
221
|
// Match <media-condition>? length, ie ( min-width: 50em ) 100%
|
224
222
|
var sourceSize = sourceSizeList[ i ],
|
225
223
|
// Split "( min-width: 50em ) 100%" into separate strings
|
@@ -243,6 +241,103 @@ window.matchMedia || (window.matchMedia = function() {
|
|
243
241
|
return pf.getWidthFromLength( winningLength );
|
244
242
|
};
|
245
243
|
|
244
|
+
pf.parseSrcset = function( srcset ) {
|
245
|
+
/**
|
246
|
+
* A lot of this was pulled from Boris Smus’ parser for the now-defunct WHATWG `srcset`
|
247
|
+
* https://github.com/borismus/srcset-polyfill/blob/master/js/srcset-info.js
|
248
|
+
*
|
249
|
+
* 1. Let input (`srcset`) be the value passed to this algorithm.
|
250
|
+
* 2. Let position be a pointer into input, initially pointing at the start of the string.
|
251
|
+
* 3. Let raw candidates be an initially empty ordered list of URLs with associated
|
252
|
+
* unparsed descriptors. The order of entries in the list is the order in which entries
|
253
|
+
* are added to the list.
|
254
|
+
*/
|
255
|
+
var candidates = [];
|
256
|
+
|
257
|
+
while ( srcset !== "" ) {
|
258
|
+
srcset = srcset.replace(/^\s+/g,"");
|
259
|
+
|
260
|
+
// 5. Collect a sequence of characters that are not space characters, and let that be url.
|
261
|
+
var pos = srcset.search(/\s/g),
|
262
|
+
url, descriptor = null;
|
263
|
+
|
264
|
+
if ( pos !== -1 ) {
|
265
|
+
url = srcset.slice( 0, pos );
|
266
|
+
|
267
|
+
var last = url[ url.length - 1 ];
|
268
|
+
|
269
|
+
// 6. If url ends with a U+002C COMMA character (,), remove that character from url
|
270
|
+
// and let descriptors be the empty string. Otherwise, follow these substeps
|
271
|
+
// 6.1. If url is empty, then jump to the step labeled descriptor parser.
|
272
|
+
|
273
|
+
if ( last === "," || url === "" ) {
|
274
|
+
url = url.replace(/,+$/, "");
|
275
|
+
descriptor = "";
|
276
|
+
}
|
277
|
+
srcset = srcset.slice( pos + 1 );
|
278
|
+
|
279
|
+
// 6.2. Collect a sequence of characters that are not U+002C COMMA characters (,), and
|
280
|
+
// let that be descriptors.
|
281
|
+
if ( descriptor === null ) {
|
282
|
+
var descpos = srcset.indexOf(",");
|
283
|
+
if ( descpos !== -1 ) {
|
284
|
+
descriptor = srcset.slice( 0, descpos );
|
285
|
+
srcset = srcset.slice( descpos + 1 );
|
286
|
+
} else {
|
287
|
+
descriptor = srcset;
|
288
|
+
srcset = "";
|
289
|
+
}
|
290
|
+
}
|
291
|
+
} else {
|
292
|
+
url = srcset;
|
293
|
+
srcset = "";
|
294
|
+
}
|
295
|
+
|
296
|
+
// 7. Add url to raw candidates, associated with descriptors.
|
297
|
+
if ( url || descriptor ) {
|
298
|
+
candidates.push({
|
299
|
+
url: url,
|
300
|
+
descriptor: descriptor
|
301
|
+
});
|
302
|
+
}
|
303
|
+
}
|
304
|
+
return candidates;
|
305
|
+
};
|
306
|
+
|
307
|
+
pf.parseDescriptor = function( descriptor, sizes ) {
|
308
|
+
// 11. Descriptor parser: Let candidates be an initially empty source set. The order of entries in the list
|
309
|
+
// is the order in which entries are added to the list.
|
310
|
+
var sizeDescriptor = descriptor && descriptor.replace(/(^\s+|\s+$)/g, ""),
|
311
|
+
widthInCssPixels = sizes ? pf.findWidthFromSourceSize( sizes ) : "100%",
|
312
|
+
resCandidate;
|
313
|
+
|
314
|
+
if ( sizeDescriptor ) {
|
315
|
+
var splitDescriptor = sizeDescriptor.split(" ");
|
316
|
+
|
317
|
+
for (var i = splitDescriptor.length + 1; i >= 0; i--) {
|
318
|
+
|
319
|
+
var curr = splitDescriptor[ i ],
|
320
|
+
lastchar = curr && curr.slice( curr.length - 1 );
|
321
|
+
|
322
|
+
if ( lastchar === "w" || lastchar === "x" ) {
|
323
|
+
resCandidate = curr;
|
324
|
+
}
|
325
|
+
if ( sizes && resCandidate ) {
|
326
|
+
// get the dpr by taking the length / width in css pixels
|
327
|
+
resCandidate = parseFloat( ( parseInt( curr, 10 ) / widthInCssPixels ) );
|
328
|
+
} else {
|
329
|
+
// get the dpr by grabbing the value of Nx
|
330
|
+
var res = curr && parseFloat( curr, 10 );
|
331
|
+
|
332
|
+
resCandidate = res && !isNaN( res ) && lastchar === "x" || lastchar === "w" ? res : 1;
|
333
|
+
}
|
334
|
+
}
|
335
|
+
} else {
|
336
|
+
resCandidate = 1;
|
337
|
+
}
|
338
|
+
return resCandidate;
|
339
|
+
};
|
340
|
+
|
246
341
|
/**
|
247
342
|
* Takes a srcset in the form of url/
|
248
343
|
* ex. "images/pic-medium.png 1x, images/pic-medium-2x.png 2x" or
|
@@ -254,31 +349,16 @@ window.matchMedia || (window.matchMedia = function() {
|
|
254
349
|
* If sizes is specified, resolution is calculated
|
255
350
|
*/
|
256
351
|
pf.getCandidatesFromSourceSet = function( srcset, sizes ) {
|
257
|
-
var candidates = pf.
|
258
|
-
widthInCssPixels = sizes ? pf.findWidthFromSourceSize( sizes ) : "100%",
|
352
|
+
var candidates = pf.parseSrcset( srcset ),
|
259
353
|
formattedCandidates = [];
|
260
354
|
|
261
355
|
for ( var i = 0, len = candidates.length; i < len; i++ ) {
|
262
|
-
var candidate = candidates[ i ]
|
263
|
-
candidateArr = candidate.split( /\s+/ ),
|
264
|
-
sizeDescriptor = candidateArr[ 1 ],
|
265
|
-
resolution;
|
266
|
-
if ( sizeDescriptor && ( sizeDescriptor.slice( -1 ) === "w" || sizeDescriptor.slice( -1 ) === "x" ) ) {
|
267
|
-
sizeDescriptor = sizeDescriptor.slice( 0, -1 );
|
268
|
-
}
|
269
|
-
if ( sizes ) {
|
270
|
-
// get the dpr by taking the length / width in css pixels
|
271
|
-
resolution = parseFloat( ( parseInt( sizeDescriptor, 10 ) / widthInCssPixels ) );
|
272
|
-
} else {
|
273
|
-
// get the dpr by grabbing the value of Nx
|
274
|
-
resolution = sizeDescriptor ? parseFloat( sizeDescriptor, 10 ) : 1;
|
275
|
-
}
|
356
|
+
var candidate = candidates[ i ];
|
276
357
|
|
277
|
-
|
278
|
-
url:
|
279
|
-
resolution:
|
280
|
-
};
|
281
|
-
formattedCandidates.push( formattedCandidate );
|
358
|
+
formattedCandidates.push({
|
359
|
+
url: candidate.url,
|
360
|
+
resolution: pf.parseDescriptor( candidate.descriptor, sizes )
|
361
|
+
});
|
282
362
|
}
|
283
363
|
return formattedCandidates;
|
284
364
|
};
|
@@ -289,8 +369,8 @@ window.matchMedia || (window.matchMedia = function() {
|
|
289
369
|
* (the property's existence infers native srcset support, and a srcset-supporting browser will prioritize srcset's value over our winning picture candidate)
|
290
370
|
* this moves srcset's value to memory for later use and removes the attr
|
291
371
|
*/
|
292
|
-
pf.dodgeSrcset = function( img ){
|
293
|
-
if( img.srcset ){
|
372
|
+
pf.dodgeSrcset = function( img ) {
|
373
|
+
if ( img.srcset ) {
|
294
374
|
img[ pf.ns ].srcset = img.srcset;
|
295
375
|
img.removeAttribute( "srcset" );
|
296
376
|
}
|
@@ -305,11 +385,11 @@ window.matchMedia || (window.matchMedia = function() {
|
|
305
385
|
candidates = [];
|
306
386
|
|
307
387
|
// if it's an img element, use the cached srcset property (defined or not)
|
308
|
-
if( el.nodeName.toUpperCase() === "IMG" && el[ pf.ns ] && el[ pf.ns ].srcset ){
|
388
|
+
if ( el.nodeName.toUpperCase() === "IMG" && el[ pf.ns ] && el[ pf.ns ].srcset ) {
|
309
389
|
srcset = el[ pf.ns ].srcset;
|
310
390
|
}
|
311
391
|
|
312
|
-
if( srcset ) {
|
392
|
+
if ( srcset ) {
|
313
393
|
candidates = pf.getCandidatesFromSourceSet( srcset, sizes );
|
314
394
|
}
|
315
395
|
return candidates;
|
@@ -325,8 +405,8 @@ window.matchMedia || (window.matchMedia = function() {
|
|
325
405
|
length = candidates.length;
|
326
406
|
bestCandidate = candidates[ length - 1 ];
|
327
407
|
|
328
|
-
for ( var
|
329
|
-
candidate = candidates[
|
408
|
+
for ( var i = 0; i < length; i++ ) {
|
409
|
+
candidate = candidates[ i ];
|
330
410
|
if ( candidate.resolution >= pf.getDpr() ) {
|
331
411
|
bestCandidate = candidate;
|
332
412
|
break;
|
@@ -346,13 +426,13 @@ window.matchMedia || (window.matchMedia = function() {
|
|
346
426
|
};
|
347
427
|
|
348
428
|
/*
|
349
|
-
* In IE9, <source> elements get removed if they aren
|
429
|
+
* In IE9, <source> elements get removed if they aren't children of
|
350
430
|
* video elements. Thus, we conditionally wrap source elements
|
351
431
|
* using <!--[if IE 9]><video style="display: none;"><![endif]-->
|
352
432
|
* and must account for that here by moving those source elements
|
353
433
|
* back into the picture element.
|
354
434
|
*/
|
355
|
-
pf.removeVideoShim = function( picture ){
|
435
|
+
pf.removeVideoShim = function( picture ) {
|
356
436
|
var videos = picture.getElementsByTagName( "video" );
|
357
437
|
if ( videos.length ) {
|
358
438
|
var video = videos[ 0 ],
|
@@ -376,10 +456,9 @@ window.matchMedia || (window.matchMedia = function() {
|
|
376
456
|
imgs = doc.getElementsByTagName( "img" );
|
377
457
|
|
378
458
|
for ( var h = 0, len = pictures.length + imgs.length; h < len; h++ ) {
|
379
|
-
if ( h < pictures.length ){
|
459
|
+
if ( h < pictures.length ) {
|
380
460
|
elems[ h ] = pictures[ h ];
|
381
|
-
}
|
382
|
-
else {
|
461
|
+
} else {
|
383
462
|
var currImg = imgs[ h - pictures.length ];
|
384
463
|
|
385
464
|
if ( currImg.parentNode.nodeName.toUpperCase() !== "PICTURE" &&
|
@@ -397,22 +476,22 @@ window.matchMedia || (window.matchMedia = function() {
|
|
397
476
|
match;
|
398
477
|
|
399
478
|
// Go through each child, and if they have media queries, evaluate them
|
400
|
-
for ( var j=0, slen = sources.length; j < slen; j++ ) {
|
479
|
+
for ( var j = 0, slen = sources.length; j < slen; j++ ) {
|
401
480
|
var source = sources[ j ];
|
402
481
|
|
403
482
|
// ignore non-element nodes
|
404
|
-
if( source.nodeType !== 1 ){
|
483
|
+
if ( source.nodeType !== 1 ) {
|
405
484
|
continue;
|
406
485
|
}
|
407
486
|
|
408
487
|
// Hitting an `img` element stops the search for `sources`.
|
409
488
|
// If no previous `source` matches, the `img` itself is evaluated later.
|
410
|
-
if( source.nodeName.toUpperCase() === "IMG" ) {
|
489
|
+
if ( source.nodeName.toUpperCase() === "IMG" ) {
|
411
490
|
return match;
|
412
491
|
}
|
413
492
|
|
414
493
|
// ignore non-`source` nodes
|
415
|
-
if( source.nodeName.toUpperCase() !== "SOURCE" ){
|
494
|
+
if ( source.nodeName.toUpperCase() !== "SOURCE" ) {
|
416
495
|
continue;
|
417
496
|
}
|
418
497
|
|
@@ -423,14 +502,14 @@ window.matchMedia || (window.matchMedia = function() {
|
|
423
502
|
continue;
|
424
503
|
}
|
425
504
|
|
426
|
-
// if there
|
427
|
-
if( ( !media || pf.matchesMedia( media ) ) ){
|
505
|
+
// if there's no media specified, OR w.matchMedia is supported
|
506
|
+
if ( ( !media || pf.matchesMedia( media ) ) ) {
|
428
507
|
var typeSupported = pf.verifyTypeSupport( source );
|
429
508
|
|
430
|
-
if( typeSupported === true ){
|
509
|
+
if ( typeSupported === true ) {
|
431
510
|
match = source;
|
432
511
|
break;
|
433
|
-
} else if( typeSupported === "pending" ){
|
512
|
+
} else if ( typeSupported === "pending" ) {
|
434
513
|
return false;
|
435
514
|
}
|
436
515
|
}
|
@@ -451,7 +530,7 @@ window.matchMedia || (window.matchMedia = function() {
|
|
451
530
|
elements = options.elements || pf.getAllElements();
|
452
531
|
|
453
532
|
// Loop through all elements
|
454
|
-
for ( var i=0, plen = elements.length; i < plen; i++ ) {
|
533
|
+
for ( var i = 0, plen = elements.length; i < plen; i++ ) {
|
455
534
|
element = elements[ i ];
|
456
535
|
elemType = element.nodeName.toUpperCase();
|
457
536
|
firstMatch = undefined;
|
@@ -459,7 +538,7 @@ window.matchMedia || (window.matchMedia = function() {
|
|
459
538
|
picImg = undefined;
|
460
539
|
|
461
540
|
// expando for caching data on the img
|
462
|
-
if( !element[ pf.ns ] ){
|
541
|
+
if ( !element[ pf.ns ] ) {
|
463
542
|
element[ pf.ns ] = {};
|
464
543
|
}
|
465
544
|
|
@@ -471,7 +550,7 @@ window.matchMedia || (window.matchMedia = function() {
|
|
471
550
|
}
|
472
551
|
|
473
552
|
// if element is a picture element
|
474
|
-
if( elemType === "PICTURE" ){
|
553
|
+
if ( elemType === "PICTURE" ) {
|
475
554
|
|
476
555
|
// IE9 video workaround
|
477
556
|
pf.removeVideoShim( element );
|
@@ -484,7 +563,7 @@ window.matchMedia || (window.matchMedia = function() {
|
|
484
563
|
// if any sources are pending in this picture due to async type test(s)
|
485
564
|
// remove the evaluated attr and skip for now ( the pending test will
|
486
565
|
// rerun picturefill on this element when complete)
|
487
|
-
if( firstMatch === false ) {
|
566
|
+
if ( firstMatch === false ) {
|
488
567
|
continue;
|
489
568
|
}
|
490
569
|
|
@@ -496,15 +575,15 @@ window.matchMedia || (window.matchMedia = function() {
|
|
496
575
|
picImg = element;
|
497
576
|
}
|
498
577
|
|
499
|
-
if( picImg ) {
|
578
|
+
if ( picImg ) {
|
500
579
|
|
501
580
|
// expando for caching data on the img
|
502
|
-
if( !picImg[ pf.ns ] ){
|
581
|
+
if ( !picImg[ pf.ns ] ) {
|
503
582
|
picImg[ pf.ns ] = {};
|
504
583
|
}
|
505
584
|
|
506
585
|
// Cache and remove `srcset` if present and we’re going to be doing `sizes`/`picture` polyfilling to it.
|
507
|
-
if( picImg.srcset && ( elemType === "PICTURE" || picImg.getAttribute( "sizes" ) ) ){
|
586
|
+
if ( picImg.srcset && ( elemType === "PICTURE" || picImg.getAttribute( "sizes" ) ) ) {
|
508
587
|
pf.dodgeSrcset( picImg );
|
509
588
|
}
|
510
589
|
|
@@ -515,7 +594,7 @@ window.matchMedia || (window.matchMedia = function() {
|
|
515
594
|
// No sources matched, so we’re down to processing the inner `img` as a source.
|
516
595
|
candidates = pf.processSourceSet( picImg );
|
517
596
|
|
518
|
-
if( picImg.srcset === undefined ||
|
597
|
+
if ( picImg.srcset === undefined || picImg[ pf.ns ].srcset ) {
|
519
598
|
// Either `srcset` is completely unsupported, or we need to polyfill `sizes` functionality.
|
520
599
|
pf.applyBestCandidate( candidates, picImg );
|
521
600
|
} // Else, resolution-only `srcset` is supported natively.
|
@@ -534,22 +613,26 @@ window.matchMedia || (window.matchMedia = function() {
|
|
534
613
|
*/
|
535
614
|
function runPicturefill() {
|
536
615
|
picturefill();
|
537
|
-
var intervalId = setInterval( function(){
|
616
|
+
var intervalId = setInterval( function() {
|
538
617
|
// When the document has finished loading, stop checking for new images
|
539
618
|
// https://github.com/ded/domready/blob/master/ready.js#L15
|
540
|
-
|
619
|
+
picturefill();
|
541
620
|
if ( /^loaded|^i|^c/.test( doc.readyState ) ) {
|
542
621
|
clearInterval( intervalId );
|
543
622
|
return;
|
544
623
|
}
|
545
624
|
}, 250 );
|
546
|
-
if( w.addEventListener ){
|
625
|
+
if ( w.addEventListener ) {
|
547
626
|
var resizeThrottle;
|
548
627
|
w.addEventListener( "resize", function() {
|
549
|
-
w.
|
550
|
-
|
551
|
-
|
552
|
-
|
628
|
+
if (!w._picturefillWorking) {
|
629
|
+
w._picturefillWorking = true;
|
630
|
+
w.clearTimeout( resizeThrottle );
|
631
|
+
resizeThrottle = w.setTimeout( function() {
|
632
|
+
picturefill({ reevaluate: true });
|
633
|
+
w._picturefillWorking = false;
|
634
|
+
}, 60 );
|
635
|
+
}
|
553
636
|
}, false );
|
554
637
|
}
|
555
638
|
}
|
@@ -560,15 +643,13 @@ window.matchMedia || (window.matchMedia = function() {
|
|
560
643
|
picturefill._ = pf;
|
561
644
|
|
562
645
|
/* expose picturefill */
|
563
|
-
if ( typeof module === "object" && typeof module.exports === "object" ){
|
646
|
+
if ( typeof module === "object" && typeof module.exports === "object" ) {
|
564
647
|
// CommonJS, just export
|
565
648
|
module.exports = picturefill;
|
566
|
-
}
|
567
|
-
else if( typeof define === "object" && define.amd ){
|
649
|
+
} else if ( typeof define === "function" && define.amd ){
|
568
650
|
// AMD support
|
569
|
-
define( function(){ return picturefill; } );
|
570
|
-
}
|
571
|
-
else if( typeof w === "object" ){
|
651
|
+
define( function() { return picturefill; } );
|
652
|
+
} else if ( typeof w === "object" ) {
|
572
653
|
// If no AMD and we are in the browser, attach to window
|
573
654
|
w.picturefill = picturefill;
|
574
655
|
}
|