webshims-rails 1.12.0 → 1.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/extras/modernizr-custom.js +440 -440
  4. data/vendor/assets/javascripts/webshims/polyfiller.js +132 -91
  5. data/vendor/assets/javascripts/webshims/shims/combos/10.js +248 -91
  6. data/vendor/assets/javascripts/webshims/shims/combos/11.js +237 -84
  7. data/vendor/assets/javascripts/webshims/shims/combos/15.js +21 -8
  8. data/vendor/assets/javascripts/webshims/shims/combos/16.js +21 -8
  9. data/vendor/assets/javascripts/webshims/shims/combos/17.js +237 -84
  10. data/vendor/assets/javascripts/webshims/shims/combos/18.js +237 -84
  11. data/vendor/assets/javascripts/webshims/shims/combos/19.js +11 -7
  12. data/vendor/assets/javascripts/webshims/shims/combos/2.js +18 -8
  13. data/vendor/assets/javascripts/webshims/shims/combos/20.js +11 -7
  14. data/vendor/assets/javascripts/webshims/shims/combos/21.js +1 -1
  15. data/vendor/assets/javascripts/webshims/shims/combos/22.js +1 -1
  16. data/vendor/assets/javascripts/webshims/shims/combos/24.js +9 -6
  17. data/vendor/assets/javascripts/webshims/shims/combos/25.js +11 -7
  18. data/vendor/assets/javascripts/webshims/shims/combos/26.js +11 -7
  19. data/vendor/assets/javascripts/webshims/shims/combos/28.js +10 -1
  20. data/vendor/assets/javascripts/webshims/shims/combos/3.js +11 -7
  21. data/vendor/assets/javascripts/webshims/shims/combos/30.js +18 -8
  22. data/vendor/assets/javascripts/webshims/shims/combos/31.js +18 -8
  23. data/vendor/assets/javascripts/webshims/shims/combos/32.js +7 -1
  24. data/vendor/assets/javascripts/webshims/shims/combos/33.js +7 -1
  25. data/vendor/assets/javascripts/webshims/shims/combos/4.js +11 -7
  26. data/vendor/assets/javascripts/webshims/shims/combos/5.js +237 -84
  27. data/vendor/assets/javascripts/webshims/shims/combos/6.js +244 -85
  28. data/vendor/assets/javascripts/webshims/shims/combos/7.js +18 -8
  29. data/vendor/assets/javascripts/webshims/shims/combos/8.js +11 -7
  30. data/vendor/assets/javascripts/webshims/shims/combos/9.js +255 -92
  31. data/vendor/assets/javascripts/webshims/shims/details.js +1 -1
  32. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +10 -7
  33. data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +53 -56
  34. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +7 -1
  35. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +175 -60
  36. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +3 -0
  37. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +6 -6
  38. data/vendor/assets/javascripts/webshims/shims/form-validation.js +77 -28
  39. data/vendor/assets/javascripts/webshims/shims/form-validators.js +24 -16
  40. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +40 -68
  41. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pl.js +4 -4
  42. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-sv.js +13 -6
  43. data/vendor/assets/javascripts/webshims/shims/range-ui.js +61 -24
  44. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +278 -95
  45. data/vendor/assets/javascripts/webshims/shims/styles/progress.gif +0 -0
  46. data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-forms-ext.scss +203 -0
  47. data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-shim.scss +115 -0
  48. data/vendor/assets/javascripts/webshims/shims/styles/scss/_extends.scss +18 -2
  49. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +227 -113
  50. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +168 -159
  51. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +106 -69
  52. metadata +4 -7
  53. data/vendor/assets/javascripts/webshims/shims/styles/details-arrows.png +0 -0
  54. data/vendor/assets/javascripts/webshims/shims/styles/polyfill-loader.gif +0 -0
  55. data/vendor/assets/javascripts/webshims/shims/styles/range-track.png +0 -0
  56. data/vendor/assets/javascripts/webshims/shims/styles/vertical-range.png +0 -0
  57. data/vendor/assets/javascripts/webshims/shims/swf/localStorage.swf +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 12271af5bfd9854dca82fe6a908b601a868e34c4
4
- data.tar.gz: e7b960a94efab5c9f1bb5bb938fcfadc25bdb3f1
3
+ metadata.gz: 64dc8a60020703d0b864c0f4f7ab4b8f39f0f63a
4
+ data.tar.gz: b1ce0d9be3b195be8381b475f3298ceee290b134
5
5
  SHA512:
6
- metadata.gz: 594d98543dfbf31bdc6833188172486e427e7517f1501117015b4bc4177a4dc84902baffa7896d008a689513d8360656bb2249197fc1a3c6e8ee9b9152473e6e
7
- data.tar.gz: 31328922dcf77b9b72439395874c99715804044993e34fe2b8239c6e4f95ac8b33e1611a31b1ba3242ea66c341db5b9b2ec034a502f57e88bcc2dc6cebd08f50
6
+ metadata.gz: b77af804aa74df4ef6593b8aba59d7e8e8ee8deba60b34797abc81af83429b24be969e88d90cbce9762ff5085ec6715e7e06aaaaa9de84c8163a988c26a1e5f1
7
+ data.tar.gz: 979c651edd8c44edba2cb9d8703538019d7fbfe4b2b5d61bae490d71cd86ab65b1cc7f252922153677bb723b2d41c9fee2541280dfb65208054c049e9c22428c
@@ -1,6 +1,6 @@
1
1
  module Webshims
2
2
  module Rails
3
- VERSION = "1.12.0"
4
- WEBSHIMS_VERSION = "1.12.0"
3
+ VERSION = "1.12.2"
4
+ WEBSHIMS_VERSION = "1.12.2"
5
5
  end
6
6
  end
@@ -1,4 +1,4 @@
1
- /* Modernizr 2.7.0 (Custom Build) | MIT & BSD
1
+ /* Modernizr 2.7.1 (Custom Build) | MIT & BSD
2
2
  * Build: http://modernizr.com/download/#-canvas-audio-video-input-inputtypes-localstorage-sessionstorage-geolocation-shiv-cssclasses-addtest-prefixed-testprop-testallprops-prefixes-domprefixes-elem_track
3
3
  */
4
4
  ;
@@ -7,528 +7,528 @@
7
7
 
8
8
  window.Modernizr = (function( window, document, undefined ) {
9
9
 
10
- var version = '2.7.0',
10
+ var version = '2.7.1',
11
11
 
12
- Modernizr = {},
12
+ Modernizr = {},
13
13
 
14
- enableClasses = true,
14
+ enableClasses = true,
15
15
 
16
- docElement = document.documentElement,
16
+ docElement = document.documentElement,
17
17
 
18
- mod = 'modernizr',
19
- modElem = document.createElement(mod),
20
- mStyle = modElem.style,
18
+ mod = 'modernizr',
19
+ modElem = document.createElement(mod),
20
+ mStyle = modElem.style,
21
21
 
22
- inputElem = document.createElement('input') ,
22
+ inputElem = document.createElement('input') ,
23
23
 
24
- smile = ':)',
24
+ smile = ':)',
25
25
 
26
- toString = {}.toString,
26
+ toString = {}.toString,
27
27
 
28
- prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),
28
+ prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),
29
29
 
30
30
 
31
31
 
32
- omPrefixes = 'Webkit Moz O ms',
32
+ omPrefixes = 'Webkit Moz O ms',
33
33
 
34
- cssomPrefixes = omPrefixes.split(' '),
34
+ cssomPrefixes = omPrefixes.split(' '),
35
35
 
36
- domPrefixes = omPrefixes.toLowerCase().split(' '),
36
+ domPrefixes = omPrefixes.toLowerCase().split(' '),
37
37
 
38
38
 
39
- tests = {},
40
- inputs = {},
41
- attrs = {},
39
+ tests = {},
40
+ inputs = {},
41
+ attrs = {},
42
42
 
43
- classes = [],
43
+ classes = [],
44
44
 
45
- slice = classes.slice,
45
+ slice = classes.slice,
46
46
 
47
- featureName,
47
+ featureName,
48
48
 
49
49
 
50
50
 
51
- _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;
51
+ _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;
52
52
 
53
- if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {
54
- hasOwnProp = function (object, property) {
55
- return _hasOwnProperty.call(object, property);
56
- };
57
- }
58
- else {
59
- hasOwnProp = function (object, property) {
60
- return ((property in object) && is(object.constructor.prototype[property], 'undefined'));
61
- };
62
- }
53
+ if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {
54
+ hasOwnProp = function (object, property) {
55
+ return _hasOwnProperty.call(object, property);
56
+ };
57
+ }
58
+ else {
59
+ hasOwnProp = function (object, property) {
60
+ return ((property in object) && is(object.constructor.prototype[property], 'undefined'));
61
+ };
62
+ }
63
63
 
64
64
 
65
- if (!Function.prototype.bind) {
66
- Function.prototype.bind = function bind(that) {
65
+ if (!Function.prototype.bind) {
66
+ Function.prototype.bind = function bind(that) {
67
67
 
68
- var target = this;
68
+ var target = this;
69
69
 
70
- if (typeof target != "function") {
71
- throw new TypeError();
72
- }
70
+ if (typeof target != "function") {
71
+ throw new TypeError();
72
+ }
73
73
 
74
- var args = slice.call(arguments, 1),
75
- bound = function () {
74
+ var args = slice.call(arguments, 1),
75
+ bound = function () {
76
76
 
77
- if (this instanceof bound) {
77
+ if (this instanceof bound) {
78
78
 
79
- var F = function(){};
80
- F.prototype = target.prototype;
81
- var self = new F();
79
+ var F = function(){};
80
+ F.prototype = target.prototype;
81
+ var self = new F();
82
82
 
83
- var result = target.apply(
84
- self,
85
- args.concat(slice.call(arguments))
86
- );
87
- if (Object(result) === result) {
88
- return result;
89
- }
90
- return self;
83
+ var result = target.apply(
84
+ self,
85
+ args.concat(slice.call(arguments))
86
+ );
87
+ if (Object(result) === result) {
88
+ return result;
89
+ }
90
+ return self;
91
91
 
92
- } else {
92
+ } else {
93
93
 
94
- return target.apply(
95
- that,
96
- args.concat(slice.call(arguments))
97
- );
94
+ return target.apply(
95
+ that,
96
+ args.concat(slice.call(arguments))
97
+ );
98
98
 
99
- }
99
+ }
100
100
 
101
- };
101
+ };
102
102
 
103
- return bound;
104
- };
105
- }
103
+ return bound;
104
+ };
105
+ }
106
106
 
107
- function setCss( str ) {
108
- mStyle.cssText = str;
109
- }
107
+ function setCss( str ) {
108
+ mStyle.cssText = str;
109
+ }
110
110
 
111
- function setCssAll( str1, str2 ) {
112
- return setCss(prefixes.join(str1 + ';') + ( str2 || '' ));
113
- }
111
+ function setCssAll( str1, str2 ) {
112
+ return setCss(prefixes.join(str1 + ';') + ( str2 || '' ));
113
+ }
114
114
 
115
- function is( obj, type ) {
116
- return typeof obj === type;
117
- }
115
+ function is( obj, type ) {
116
+ return typeof obj === type;
117
+ }
118
118
 
119
- function contains( str, substr ) {
120
- return !!~('' + str).indexOf(substr);
121
- }
119
+ function contains( str, substr ) {
120
+ return !!~('' + str).indexOf(substr);
121
+ }
122
122
 
123
- function testProps( props, prefixed ) {
124
- for ( var i in props ) {
125
- var prop = props[i];
126
- if ( !contains(prop, "-") && mStyle[prop] !== undefined ) {
127
- return prefixed == 'pfx' ? prop : true;
128
- }
129
- }
130
- return false;
131
- }
123
+ function testProps( props, prefixed ) {
124
+ for ( var i in props ) {
125
+ var prop = props[i];
126
+ if ( !contains(prop, "-") && mStyle[prop] !== undefined ) {
127
+ return prefixed == 'pfx' ? prop : true;
128
+ }
129
+ }
130
+ return false;
131
+ }
132
132
 
133
- function testDOMProps( props, obj, elem ) {
134
- for ( var i in props ) {
135
- var item = obj[props[i]];
136
- if ( item !== undefined) {
133
+ function testDOMProps( props, obj, elem ) {
134
+ for ( var i in props ) {
135
+ var item = obj[props[i]];
136
+ if ( item !== undefined) {
137
137
 
138
- if (elem === false) return props[i];
138
+ if (elem === false) return props[i];
139
139
 
140
- if (is(item, 'function')){
141
- return item.bind(elem || obj);
142
- }
140
+ if (is(item, 'function')){
141
+ return item.bind(elem || obj);
142
+ }
143
143
 
144
- return item;
145
- }
146
- }
147
- return false;
148
- }
144
+ return item;
145
+ }
146
+ }
147
+ return false;
148
+ }
149
149
 
150
- function testPropsAll( prop, prefixed, elem ) {
151
-
152
- var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),
153
- props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');
154
-
155
- if(is(prefixed, "string") || is(prefixed, "undefined")) {
156
- return testProps(props, prefixed);
150
+ function testPropsAll( prop, prefixed, elem ) {
151
+
152
+ var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),
153
+ props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');
154
+
155
+ if(is(prefixed, "string") || is(prefixed, "undefined")) {
156
+ return testProps(props, prefixed);
157
157
 
158
- } else {
159
- props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');
160
- return testDOMProps(props, prefixed, elem);
161
- }
162
- }
158
+ } else {
159
+ props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');
160
+ return testDOMProps(props, prefixed, elem);
161
+ }
162
+ }
163
163
 
164
164
 
165
165
 
166
- tests['canvas'] = function() {
167
- var elem = document.createElement('canvas');
168
- return !!(elem.getContext && elem.getContext('2d'));
169
- }; tests['geolocation'] = function() {
170
- return 'geolocation' in navigator;
171
- };
166
+ tests['canvas'] = function() {
167
+ var elem = document.createElement('canvas');
168
+ return !!(elem.getContext && elem.getContext('2d'));
169
+ }; tests['geolocation'] = function() {
170
+ return 'geolocation' in navigator;
171
+ };
172
172
 
173
173
 
174
- tests['video'] = function() {
175
- var elem = document.createElement('video'),
176
- bool = false;
177
-
178
- try {
179
- if ( bool = !!elem.canPlayType ) {
180
- bool = new Boolean(bool);
181
- bool.ogg = elem.canPlayType('video/ogg; codecs="theora"') .replace(/^no$/,'');
182
-
183
- bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,'');
184
-
185
- bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,'');
186
- }
187
-
188
- } catch(e) { }
189
-
190
- return bool;
191
- };
174
+ tests['video'] = function() {
175
+ var elem = document.createElement('video'),
176
+ bool = false;
177
+
178
+ try {
179
+ if ( bool = !!elem.canPlayType ) {
180
+ bool = new Boolean(bool);
181
+ bool.ogg = elem.canPlayType('video/ogg; codecs="theora"') .replace(/^no$/,'');
182
+
183
+ bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,'');
184
+
185
+ bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,'');
186
+ }
187
+
188
+ } catch(e) { }
189
+
190
+ return bool;
191
+ };
192
192
 
193
- tests['audio'] = function() {
194
- var elem = document.createElement('audio'),
195
- bool = false;
196
-
197
- try {
198
- if ( bool = !!elem.canPlayType ) {
199
- bool = new Boolean(bool);
200
- bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,'');
201
- bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,'');
202
-
203
- bool.wav = elem.canPlayType('audio/wav; codecs="1"') .replace(/^no$/,'');
204
- bool.m4a = ( elem.canPlayType('audio/x-m4a;') ||
205
- elem.canPlayType('audio/aac;')) .replace(/^no$/,'');
206
- }
207
- } catch(e) { }
208
-
209
- return bool;
210
- };
211
-
212
-
213
- tests['localstorage'] = function() {
214
- try {
215
- localStorage.setItem(mod, mod);
216
- localStorage.removeItem(mod);
217
- return true;
218
- } catch(e) {
219
- return false;
220
- }
221
- };
193
+ tests['audio'] = function() {
194
+ var elem = document.createElement('audio'),
195
+ bool = false;
196
+
197
+ try {
198
+ if ( bool = !!elem.canPlayType ) {
199
+ bool = new Boolean(bool);
200
+ bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,'');
201
+ bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,'');
202
+
203
+ bool.wav = elem.canPlayType('audio/wav; codecs="1"') .replace(/^no$/,'');
204
+ bool.m4a = ( elem.canPlayType('audio/x-m4a;') ||
205
+ elem.canPlayType('audio/aac;')) .replace(/^no$/,'');
206
+ }
207
+ } catch(e) { }
208
+
209
+ return bool;
210
+ };
211
+
212
+
213
+ tests['localstorage'] = function() {
214
+ try {
215
+ localStorage.setItem(mod, mod);
216
+ localStorage.removeItem(mod);
217
+ return true;
218
+ } catch(e) {
219
+ return false;
220
+ }
221
+ };
222
222
 
223
- tests['sessionstorage'] = function() {
224
- try {
225
- sessionStorage.setItem(mod, mod);
226
- sessionStorage.removeItem(mod);
227
- return true;
228
- } catch(e) {
229
- return false;
230
- }
231
- };
223
+ tests['sessionstorage'] = function() {
224
+ try {
225
+ sessionStorage.setItem(mod, mod);
226
+ sessionStorage.removeItem(mod);
227
+ return true;
228
+ } catch(e) {
229
+ return false;
230
+ }
231
+ };
232
232
 
233
- function webforms() {
234
- Modernizr['input'] = (function( props ) {
235
- for ( var i = 0, len = props.length; i < len; i++ ) {
236
- attrs[ props[i] ] = !!(props[i] in inputElem);
237
- }
238
- if (attrs.list){
239
- attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);
240
- }
241
- return attrs;
242
- })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));
243
- Modernizr['inputtypes'] = (function(props) {
233
+ function webforms() {
234
+ Modernizr['input'] = (function( props ) {
235
+ for ( var i = 0, len = props.length; i < len; i++ ) {
236
+ attrs[ props[i] ] = !!(props[i] in inputElem);
237
+ }
238
+ if (attrs.list){
239
+ attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);
240
+ }
241
+ return attrs;
242
+ })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));
243
+ Modernizr['inputtypes'] = (function(props) {
244
244
 
245
- for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) {
245
+ for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) {
246
246
 
247
- inputElem.setAttribute('type', inputElemType = props[i]);
248
- bool = inputElem.type !== 'text';
247
+ inputElem.setAttribute('type', inputElemType = props[i]);
248
+ bool = inputElem.type !== 'text';
249
249
 
250
- if ( bool ) {
250
+ if ( bool ) {
251
251
 
252
- inputElem.value = smile;
253
- inputElem.style.cssText = 'position:absolute;visibility:hidden;';
252
+ inputElem.value = smile;
253
+ inputElem.style.cssText = 'position:absolute;visibility:hidden;';
254
254
 
255
- if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) {
255
+ if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) {
256
256
 
257
- docElement.appendChild(inputElem);
258
- defaultView = document.defaultView;
257
+ docElement.appendChild(inputElem);
258
+ defaultView = document.defaultView;
259
259
 
260
- bool = defaultView.getComputedStyle &&
261
- defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&
262
- (inputElem.offsetHeight !== 0);
260
+ bool = defaultView.getComputedStyle &&
261
+ defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&
262
+ (inputElem.offsetHeight !== 0);
263
263
 
264
- docElement.removeChild(inputElem);
264
+ docElement.removeChild(inputElem);
265
265
 
266
- } else if ( /^(search|tel)$/.test(inputElemType) ){
267
- } else if ( /^(url|email)$/.test(inputElemType) ) {
268
- bool = inputElem.checkValidity && inputElem.checkValidity() === false;
266
+ } else if ( /^(search|tel)$/.test(inputElemType) ){
267
+ } else if ( /^(url|email)$/.test(inputElemType) ) {
268
+ bool = inputElem.checkValidity && inputElem.checkValidity() === false;
269
269
 
270
- } else {
271
- bool = inputElem.value != smile;
272
- }
273
- }
270
+ } else {
271
+ bool = inputElem.value != smile;
272
+ }
273
+ }
274
274
 
275
- inputs[ props[i] ] = !!bool;
276
- }
277
- return inputs;
278
- })('search tel url email datetime date month week time datetime-local number range color'.split(' '));
279
- }
280
- for ( var feature in tests ) {
281
- if ( hasOwnProp(tests, feature) ) {
282
- featureName = feature.toLowerCase();
283
- Modernizr[featureName] = tests[feature]();
275
+ inputs[ props[i] ] = !!bool;
276
+ }
277
+ return inputs;
278
+ })('search tel url email datetime date month week time datetime-local number range color'.split(' '));
279
+ }
280
+ for ( var feature in tests ) {
281
+ if ( hasOwnProp(tests, feature) ) {
282
+ featureName = feature.toLowerCase();
283
+ Modernizr[featureName] = tests[feature]();
284
284
 
285
- classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);
286
- }
287
- }
288
-
289
- Modernizr.input || webforms();
290
-
291
-
292
- Modernizr.addTest = function ( feature, test ) {
293
- if ( typeof feature == 'object' ) {
294
- for ( var key in feature ) {
295
- if ( hasOwnProp( feature, key ) ) {
296
- Modernizr.addTest( key, feature[ key ] );
297
- }
298
- }
299
- } else {
300
-
301
- feature = feature.toLowerCase();
302
-
303
- if ( Modernizr[feature] !== undefined ) {
304
- return Modernizr;
305
- }
306
-
307
- test = typeof test == 'function' ? test() : test;
308
-
309
- if (typeof enableClasses !== "undefined" && enableClasses) {
310
- docElement.className += ' ' + (test ? '' : 'no-') + feature;
311
- }
312
- Modernizr[feature] = test;
313
-
314
- }
315
-
316
- return Modernizr;
317
- };
318
-
319
-
320
- setCss('');
321
- modElem = inputElem = null;
322
-
323
- ;(function(window, document) {
324
- var version = '3.7.0';
325
-
326
- var options = window.html5 || {};
327
-
328
- var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
329
-
330
- var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
331
-
332
- var supportsHtml5Styles;
333
-
334
- var expando = '_html5shiv';
335
-
336
- var expanID = 0;
337
-
338
- var expandoData = {};
339
-
340
- var supportsUnknownElements;
341
-
342
- (function() {
343
- try {
344
- var a = document.createElement('a');
345
- a.innerHTML = '<xyz></xyz>';
346
- supportsHtml5Styles = ('hidden' in a);
347
-
348
- supportsUnknownElements = a.childNodes.length == 1 || (function() {
349
- (document.createElement)('a');
350
- var frag = document.createDocumentFragment();
351
- return (
352
- typeof frag.cloneNode == 'undefined' ||
353
- typeof frag.createDocumentFragment == 'undefined' ||
354
- typeof frag.createElement == 'undefined'
355
- );
356
- }());
357
- } catch(e) {
358
- supportsHtml5Styles = true;
359
- supportsUnknownElements = true;
360
- }
361
-
362
- }());
363
-
364
- function addStyleSheet(ownerDocument, cssText) {
365
- var p = ownerDocument.createElement('p'),
366
- parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
367
-
368
- p.innerHTML = 'x<style>' + cssText + '</style>';
369
- return parent.insertBefore(p.lastChild, parent.firstChild);
370
- }
371
-
372
- function getElements() {
373
- var elements = html5.elements;
374
- return typeof elements == 'string' ? elements.split(' ') : elements;
375
- }
376
-
377
- function getExpandoData(ownerDocument) {
378
- var data = expandoData[ownerDocument[expando]];
379
- if (!data) {
380
- data = {};
381
- expanID++;
382
- ownerDocument[expando] = expanID;
383
- expandoData[expanID] = data;
384
- }
385
- return data;
386
- }
387
-
388
- function createElement(nodeName, ownerDocument, data){
389
- if (!ownerDocument) {
390
- ownerDocument = document;
391
- }
392
- if(supportsUnknownElements){
393
- return ownerDocument.createElement(nodeName);
394
- }
395
- if (!data) {
396
- data = getExpandoData(ownerDocument);
397
- }
398
- var node;
399
-
400
- if (data.cache[nodeName]) {
401
- node = data.cache[nodeName].cloneNode();
402
- } else if (saveClones.test(nodeName)) {
403
- node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
404
- } else {
405
- node = data.createElem(nodeName);
406
- }
407
-
408
- return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
409
- }
410
-
411
- function createDocumentFragment(ownerDocument, data){
412
- if (!ownerDocument) {
413
- ownerDocument = document;
414
- }
415
- if(supportsUnknownElements){
416
- return ownerDocument.createDocumentFragment();
417
- }
418
- data = data || getExpandoData(ownerDocument);
419
- var clone = data.frag.cloneNode(),
420
- i = 0,
421
- elems = getElements(),
422
- l = elems.length;
423
- for(;i<l;i++){
424
- clone.createElement(elems[i]);
425
- }
426
- return clone;
427
- }
428
-
429
- function shivMethods(ownerDocument, data) {
430
- if (!data.cache) {
431
- data.cache = {};
432
- data.createElem = ownerDocument.createElement;
433
- data.createFrag = ownerDocument.createDocumentFragment;
434
- data.frag = data.createFrag();
435
- }
436
-
437
-
438
- ownerDocument.createElement = function(nodeName) {
439
- if (!html5.shivMethods) {
440
- return data.createElem(nodeName);
441
- }
442
- return createElement(nodeName, ownerDocument, data);
443
- };
444
-
445
- ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
446
- 'var n=f.cloneNode(),c=n.createElement;' +
447
- 'h.shivMethods&&(' +
448
- getElements().join().replace(/[\w\-]+/g, function(nodeName) {
449
- data.createElem(nodeName);
450
- data.frag.createElement(nodeName);
451
- return 'c("' + nodeName + '")';
452
- }) +
453
- ');return n}'
454
- )(html5, data.frag);
455
- }
456
-
457
- function shivDocument(ownerDocument) {
458
- if (!ownerDocument) {
459
- ownerDocument = document;
460
- }
461
- var data = getExpandoData(ownerDocument);
462
-
463
- if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
464
- data.hasCSS = !!addStyleSheet(ownerDocument,
465
- 'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
466
- 'mark{background:#FF0;color:#000}' +
467
- 'template{display:none}'
468
- );
469
- }
470
- if (!supportsUnknownElements) {
471
- shivMethods(ownerDocument, data);
472
- }
473
- return ownerDocument;
474
- }
475
-
476
- var html5 = {
477
-
478
- 'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video',
479
-
480
- 'version': version,
481
-
482
- 'shivCSS': (options.shivCSS !== false),
483
-
484
- 'supportsUnknownElements': supportsUnknownElements,
485
-
486
- 'shivMethods': (options.shivMethods !== false),
285
+ classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);
286
+ }
287
+ }
288
+
289
+ Modernizr.input || webforms();
290
+
291
+
292
+ Modernizr.addTest = function ( feature, test ) {
293
+ if ( typeof feature == 'object' ) {
294
+ for ( var key in feature ) {
295
+ if ( hasOwnProp( feature, key ) ) {
296
+ Modernizr.addTest( key, feature[ key ] );
297
+ }
298
+ }
299
+ } else {
300
+
301
+ feature = feature.toLowerCase();
302
+
303
+ if ( Modernizr[feature] !== undefined ) {
304
+ return Modernizr;
305
+ }
306
+
307
+ test = typeof test == 'function' ? test() : test;
308
+
309
+ if (typeof enableClasses !== "undefined" && enableClasses) {
310
+ docElement.className += ' ' + (test ? '' : 'no-') + feature;
311
+ }
312
+ Modernizr[feature] = test;
313
+
314
+ }
315
+
316
+ return Modernizr;
317
+ };
318
+
319
+
320
+ setCss('');
321
+ modElem = inputElem = null;
322
+
323
+ ;(function(window, document) {
324
+ var version = '3.7.0';
325
+
326
+ var options = window.html5 || {};
327
+
328
+ var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
329
+
330
+ var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
331
+
332
+ var supportsHtml5Styles;
333
+
334
+ var expando = '_html5shiv';
335
+
336
+ var expanID = 0;
337
+
338
+ var expandoData = {};
339
+
340
+ var supportsUnknownElements;
341
+
342
+ (function() {
343
+ try {
344
+ var a = document.createElement('a');
345
+ a.innerHTML = '<xyz></xyz>';
346
+ supportsHtml5Styles = ('hidden' in a);
347
+
348
+ supportsUnknownElements = a.childNodes.length == 1 || (function() {
349
+ (document.createElement)('a');
350
+ var frag = document.createDocumentFragment();
351
+ return (
352
+ typeof frag.cloneNode == 'undefined' ||
353
+ typeof frag.createDocumentFragment == 'undefined' ||
354
+ typeof frag.createElement == 'undefined'
355
+ );
356
+ }());
357
+ } catch(e) {
358
+ supportsHtml5Styles = true;
359
+ supportsUnknownElements = true;
360
+ }
361
+
362
+ }());
363
+
364
+ function addStyleSheet(ownerDocument, cssText) {
365
+ var p = ownerDocument.createElement('p'),
366
+ parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
367
+
368
+ p.innerHTML = 'x<style>' + cssText + '</style>';
369
+ return parent.insertBefore(p.lastChild, parent.firstChild);
370
+ }
371
+
372
+ function getElements() {
373
+ var elements = html5.elements;
374
+ return typeof elements == 'string' ? elements.split(' ') : elements;
375
+ }
376
+
377
+ function getExpandoData(ownerDocument) {
378
+ var data = expandoData[ownerDocument[expando]];
379
+ if (!data) {
380
+ data = {};
381
+ expanID++;
382
+ ownerDocument[expando] = expanID;
383
+ expandoData[expanID] = data;
384
+ }
385
+ return data;
386
+ }
387
+
388
+ function createElement(nodeName, ownerDocument, data){
389
+ if (!ownerDocument) {
390
+ ownerDocument = document;
391
+ }
392
+ if(supportsUnknownElements){
393
+ return ownerDocument.createElement(nodeName);
394
+ }
395
+ if (!data) {
396
+ data = getExpandoData(ownerDocument);
397
+ }
398
+ var node;
399
+
400
+ if (data.cache[nodeName]) {
401
+ node = data.cache[nodeName].cloneNode();
402
+ } else if (saveClones.test(nodeName)) {
403
+ node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
404
+ } else {
405
+ node = data.createElem(nodeName);
406
+ }
407
+
408
+ return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
409
+ }
410
+
411
+ function createDocumentFragment(ownerDocument, data){
412
+ if (!ownerDocument) {
413
+ ownerDocument = document;
414
+ }
415
+ if(supportsUnknownElements){
416
+ return ownerDocument.createDocumentFragment();
417
+ }
418
+ data = data || getExpandoData(ownerDocument);
419
+ var clone = data.frag.cloneNode(),
420
+ i = 0,
421
+ elems = getElements(),
422
+ l = elems.length;
423
+ for(;i<l;i++){
424
+ clone.createElement(elems[i]);
425
+ }
426
+ return clone;
427
+ }
428
+
429
+ function shivMethods(ownerDocument, data) {
430
+ if (!data.cache) {
431
+ data.cache = {};
432
+ data.createElem = ownerDocument.createElement;
433
+ data.createFrag = ownerDocument.createDocumentFragment;
434
+ data.frag = data.createFrag();
435
+ }
436
+
437
+
438
+ ownerDocument.createElement = function(nodeName) {
439
+ if (!html5.shivMethods) {
440
+ return data.createElem(nodeName);
441
+ }
442
+ return createElement(nodeName, ownerDocument, data);
443
+ };
444
+
445
+ ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
446
+ 'var n=f.cloneNode(),c=n.createElement;' +
447
+ 'h.shivMethods&&(' +
448
+ getElements().join().replace(/[\w\-]+/g, function(nodeName) {
449
+ data.createElem(nodeName);
450
+ data.frag.createElement(nodeName);
451
+ return 'c("' + nodeName + '")';
452
+ }) +
453
+ ');return n}'
454
+ )(html5, data.frag);
455
+ }
456
+
457
+ function shivDocument(ownerDocument) {
458
+ if (!ownerDocument) {
459
+ ownerDocument = document;
460
+ }
461
+ var data = getExpandoData(ownerDocument);
462
+
463
+ if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
464
+ data.hasCSS = !!addStyleSheet(ownerDocument,
465
+ 'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
466
+ 'mark{background:#FF0;color:#000}' +
467
+ 'template{display:none}'
468
+ );
469
+ }
470
+ if (!supportsUnknownElements) {
471
+ shivMethods(ownerDocument, data);
472
+ }
473
+ return ownerDocument;
474
+ }
475
+
476
+ var html5 = {
477
+
478
+ 'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video',
479
+
480
+ 'version': version,
481
+
482
+ 'shivCSS': (options.shivCSS !== false),
483
+
484
+ 'supportsUnknownElements': supportsUnknownElements,
485
+
486
+ 'shivMethods': (options.shivMethods !== false),
487
487
 
488
- 'type': 'default',
489
-
490
- 'shivDocument': shivDocument,
488
+ 'type': 'default',
489
+
490
+ 'shivDocument': shivDocument,
491
491
 
492
- createElement: createElement,
492
+ createElement: createElement,
493
493
 
494
- createDocumentFragment: createDocumentFragment
495
- };
494
+ createDocumentFragment: createDocumentFragment
495
+ };
496
496
 
497
- window.html5 = html5;
497
+ window.html5 = html5;
498
498
 
499
- shivDocument(document);
499
+ shivDocument(document);
500
500
 
501
- }(this, document));
501
+ }(this, document));
502
502
 
503
- Modernizr._version = version;
503
+ Modernizr._version = version;
504
504
 
505
- Modernizr._prefixes = prefixes;
506
- Modernizr._domPrefixes = domPrefixes;
507
- Modernizr._cssomPrefixes = cssomPrefixes;
505
+ Modernizr._prefixes = prefixes;
506
+ Modernizr._domPrefixes = domPrefixes;
507
+ Modernizr._cssomPrefixes = cssomPrefixes;
508
508
 
509
509
 
510
510
 
511
- Modernizr.testProp = function(prop){
512
- return testProps([prop]);
513
- };
511
+ Modernizr.testProp = function(prop){
512
+ return testProps([prop]);
513
+ };
514
514
 
515
- Modernizr.testAllProps = testPropsAll;
515
+ Modernizr.testAllProps = testPropsAll;
516
516
 
517
517
 
518
- Modernizr.prefixed = function(prop, obj, elem){
519
- if(!obj) {
520
- return testPropsAll(prop, 'pfx');
521
- } else {
522
- return testPropsAll(prop, obj, elem);
523
- }
524
- };
518
+ Modernizr.prefixed = function(prop, obj, elem){
519
+ if(!obj) {
520
+ return testPropsAll(prop, 'pfx');
521
+ } else {
522
+ return testPropsAll(prop, obj, elem);
523
+ }
524
+ };
525
525
 
526
526
 
527
- docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') +
527
+ docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') +
528
528
 
529
- (enableClasses ? ' js ' + classes.join(' ') : '');
529
+ (enableClasses ? ' js ' + classes.join(' ') : '');
530
530
 
531
- return Modernizr;
531
+ return Modernizr;
532
532
 
533
533
  })(this, this.document);
534
534
  // Track element + Timed Text Track API
@@ -542,4 +542,4 @@ Modernizr.addTest({
542
542
  // a more strict test for track including UI support: document.createElement('track').kind === 'subtitles'
543
543
  track: ('kind' in document.createElement('track'))
544
544
  });
545
- ;
545
+ ;