webshims-rails 1.14.3 → 1.14.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) 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 +4 -0
  4. data/vendor/assets/javascripts/webshims/polyfiller.js +141 -139
  5. data/vendor/assets/javascripts/webshims/shims/color-picker.js +1 -3
  6. data/vendor/assets/javascripts/webshims/shims/combos/1.js +22 -33
  7. data/vendor/assets/javascripts/webshims/shims/combos/10.js +76 -73
  8. data/vendor/assets/javascripts/webshims/shims/combos/11.js +73 -61
  9. data/vendor/assets/javascripts/webshims/shims/combos/12.js +37 -41
  10. data/vendor/assets/javascripts/webshims/shims/combos/13.js +36 -40
  11. data/vendor/assets/javascripts/webshims/shims/combos/14.js +7 -7
  12. data/vendor/assets/javascripts/webshims/shims/combos/15.js +23 -32
  13. data/vendor/assets/javascripts/webshims/shims/combos/16.js +36 -57
  14. data/vendor/assets/javascripts/webshims/shims/combos/17.js +73 -61
  15. data/vendor/assets/javascripts/webshims/shims/combos/18.js +611 -4604
  16. data/vendor/assets/javascripts/webshims/shims/combos/2.js +27 -47
  17. data/vendor/assets/javascripts/webshims/shims/combos/21.js +61 -31
  18. data/vendor/assets/javascripts/webshims/shims/combos/22.js +24 -16
  19. data/vendor/assets/javascripts/webshims/shims/combos/23.js +13 -25
  20. data/vendor/assets/javascripts/webshims/shims/combos/25.js +40 -27
  21. data/vendor/assets/javascripts/webshims/shims/combos/27.js +167 -166
  22. data/vendor/assets/javascripts/webshims/shims/combos/28.js +11 -12
  23. data/vendor/assets/javascripts/webshims/shims/combos/29.js +5 -5
  24. data/vendor/assets/javascripts/webshims/shims/combos/3.js +14 -22
  25. data/vendor/assets/javascripts/webshims/shims/combos/30.js +16 -24
  26. data/vendor/assets/javascripts/webshims/shims/combos/31.js +14 -22
  27. data/vendor/assets/javascripts/webshims/shims/combos/33.js +2 -2
  28. data/vendor/assets/javascripts/webshims/shims/combos/34.js +27 -28
  29. data/vendor/assets/javascripts/webshims/shims/combos/4.js +5 -14
  30. data/vendor/assets/javascripts/webshims/shims/combos/5.js +78 -66
  31. data/vendor/assets/javascripts/webshims/shims/combos/6.js +80 -68
  32. data/vendor/assets/javascripts/webshims/shims/combos/7.js +29 -49
  33. data/vendor/assets/javascripts/webshims/shims/combos/8.js +27 -47
  34. data/vendor/assets/javascripts/webshims/shims/combos/9.js +78 -75
  35. data/vendor/assets/javascripts/webshims/shims/combos/97.js +42 -29
  36. data/vendor/assets/javascripts/webshims/shims/combos/98.js +116 -40
  37. data/vendor/assets/javascripts/webshims/shims/combos/99.js +112 -38
  38. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +3 -12
  39. data/vendor/assets/javascripts/webshims/shims/es5.js +4 -4
  40. data/vendor/assets/javascripts/webshims/shims/es6.js +1887 -0
  41. data/vendor/assets/javascripts/webshims/shims/form-core.js +9 -8
  42. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +2 -2
  43. data/vendor/assets/javascripts/webshims/shims/form-inputmode.js +52 -0
  44. data/vendor/assets/javascripts/webshims/shims/form-message.js +2 -2
  45. data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +4 -5
  46. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +73 -61
  47. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +7 -8
  48. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +164 -163
  49. data/vendor/assets/javascripts/webshims/shims/form-validation.js +121 -144
  50. data/vendor/assets/javascripts/webshims/shims/jme/_icons.scss +3 -0
  51. data/vendor/assets/javascripts/webshims/shims/jme/alternate-media.js +184 -0
  52. data/vendor/assets/javascripts/webshims/shims/jme/{b.js → base.js} +38 -27
  53. data/vendor/assets/javascripts/webshims/shims/jme/controls.css +129 -39
  54. data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +145 -44
  55. data/vendor/assets/javascripts/webshims/shims/jme/jme.eot +0 -0
  56. data/vendor/assets/javascripts/webshims/shims/jme/jme.svg +0 -0
  57. data/vendor/assets/javascripts/webshims/shims/jme/jme.ttf +0 -0
  58. data/vendor/assets/javascripts/webshims/shims/jme/jme.woff +0 -0
  59. data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +448 -90
  60. data/vendor/assets/javascripts/webshims/shims/jme/{c.js → mediacontrols.js} +74 -11
  61. data/vendor/assets/javascripts/webshims/shims/jme/{p.js → playlist.js} +4 -2
  62. data/vendor/assets/javascripts/webshims/shims/matchMedia.js +122 -0
  63. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +12 -24
  64. data/vendor/assets/javascripts/webshims/shims/mediaelement-debug.js +1 -1
  65. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +37 -15
  66. data/vendor/assets/javascripts/webshims/shims/mediaelement-native-fix.js +3 -3
  67. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +4 -5
  68. data/vendor/assets/javascripts/webshims/shims/picture.js +13 -54
  69. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +13 -20
  70. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +24 -18
  71. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +32 -10
  72. data/vendor/assets/javascripts/webshims/shims/styles/shim-ext.css +43 -47
  73. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +30 -18
  74. data/vendor/assets/javascripts/webshims/shims/styles/transparent.png +0 -0
  75. data/vendor/assets/javascripts/webshims/shims/styles/widget.eot +0 -0
  76. data/vendor/assets/javascripts/webshims/shims/styles/widget.svg +0 -0
  77. data/vendor/assets/javascripts/webshims/shims/styles/widget.ttf +0 -0
  78. data/vendor/assets/javascripts/webshims/shims/styles/widget.woff +0 -0
  79. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  80. data/vendor/assets/javascripts/webshims/shims/swfmini.js +1 -1
  81. data/vendor/assets/javascripts/webshims/shims/track-ui.js +4 -5
  82. data/vendor/assets/javascripts/webshims/shims/track.js +24 -16
  83. metadata +9 -8
  84. data/vendor/assets/javascripts/webshims/shims/combos/19.js +0 -4745
  85. data/vendor/assets/javascripts/webshims/shims/combos/20.js +0 -4522
  86. data/vendor/assets/javascripts/webshims/shims/combos/32.js +0 -2443
  87. data/vendor/assets/javascripts/webshims/shims/combos/comboinfo.json +0 -1
@@ -158,7 +158,7 @@ var swfmini = function() {
158
158
  webshims.$.noop
159
159
  ;
160
160
 
161
- if(!Modernizr.video){
161
+ if(!webshims.support.mediaelement){
162
162
  loadEmbed();
163
163
  } else {
164
164
  webshims.ready('WINDOWLOAD', loadEmbed);
@@ -221,9 +221,10 @@ var swfmini = function() {
221
221
  }();
222
222
 
223
223
  webshims.isReady('swfmini', true);
224
- ;(function(Modernizr, webshims){
224
+ ;(function(webshims){
225
225
  "use strict";
226
- var hasNative = Modernizr.audio && Modernizr.video;
226
+ var support = webshims.support;
227
+ var hasNative = support.mediaelement;
227
228
  var supportsLoop = false;
228
229
  var bugs = webshims.bugs;
229
230
  var swfType = 'mediaelement-jaris';
@@ -246,14 +247,14 @@ webshims.isReady('swfmini', true);
246
247
 
247
248
  if(hasNative){
248
249
  var videoElem = document.createElement('video');
249
- Modernizr.videoBuffered = ('buffered' in videoElem);
250
- Modernizr.mediaDefaultMuted = ('defaultMuted' in videoElem);
250
+ support.videoBuffered = ('buffered' in videoElem);
251
+ support.mediaDefaultMuted = ('defaultMuted' in videoElem);
251
252
  supportsLoop = ('loop' in videoElem);
252
- Modernizr.mediaLoop = supportsLoop;
253
+ support.mediaLoop = supportsLoop;
253
254
 
254
255
  webshims.capturingEvents(['play', 'playing', 'waiting', 'paused', 'ended', 'durationchange', 'loadedmetadata', 'canplay', 'volumechange']);
255
256
 
256
- if( !Modernizr.videoBuffered || !supportsLoop || (!Modernizr.mediaDefaultMuted && isIE && 'ActiveXObject' in window) ){
257
+ if( !support.videoBuffered || !supportsLoop || (!support.mediaDefaultMuted && isIE && 'ActiveXObject' in window) ){
257
258
  webshims.addPolyfill('mediaelement-native-fix', {
258
259
  d: ['dom-support']
259
260
  });
@@ -261,7 +262,7 @@ webshims.isReady('swfmini', true);
261
262
  }
262
263
  }
263
264
 
264
- if(Modernizr.track && !bugs.track){
265
+ if(support.track && !bugs.track){
265
266
  (function(){
266
267
  if(!bugs.track){
267
268
 
@@ -593,19 +594,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
593
594
  }
594
595
  }
595
596
  };
596
- var allowedPreload = {'metadata': 1, 'auto': 1, '': 1};
597
- var fixPreload = function(elem){
598
- var preload, img;
599
- if(elem.getAttribute('preload') == 'none'){
600
- if(allowedPreload[(preload = $.attr(elem, 'data-preload'))]){
601
- $.attr(elem, 'preload', preload);
602
- } else if(hasNative && (preload = elem.getAttribute('poster'))){
603
- img = document.createElement('img');
604
- img.src = preload;
605
- }
606
- }
607
- };
608
- var stopParent = /^(?:embed|object|datalist)$/i;
597
+ var stopParent = /^(?:embed|object|datalist|picture)$/i;
609
598
  var selectSource = function(elem, data){
610
599
  var baseData = webshims.data(elem, 'mediaelementBase') || webshims.data(elem, 'mediaelementBase', {});
611
600
  var _srces = mediaelement.srces(elem);
@@ -620,7 +609,6 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
620
609
  if(mediaelement.sortMedia){
621
610
  _srces.sort(mediaelement.sortMedia);
622
611
  }
623
- fixPreload(elem);
624
612
  stepSources(elem, data, _srces);
625
613
 
626
614
  };
@@ -644,7 +632,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
644
632
 
645
633
  if(webshims.implement(this, 'mediaelement')){
646
634
  selectSource(this);
647
- if(!Modernizr.mediaDefaultMuted && $.attr(this, 'muted') != null){
635
+ if(!support.mediaDefaultMuted && $.attr(this, 'muted') != null){
648
636
  $.prop(this, 'muted', true);
649
637
  }
650
638
 
@@ -669,7 +657,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
669
657
  if(hasNative && (!data || data.isActive == 'html5') && supLoad.prop._supvalue){
670
658
  supLoad.prop._supvalue.apply(this, arguments);
671
659
  }
672
- if(!loadTrackUi.loaded && $('track', this).length){
660
+ if(!loadTrackUi.loaded && this.querySelector('track')){
673
661
  loadTrackUi();
674
662
  }
675
663
  $(this).triggerHandler('wsmediareload');
@@ -768,7 +756,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
768
756
  webshims.ready('track', loadTrackUi);
769
757
  });
770
758
 
771
- })(Modernizr, webshims);
759
+ })(webshims);
772
760
  ;webshims.register('track', function($, webshims, window, document, undefined){
773
761
  "use strict";
774
762
  var mediaelement = webshims.mediaelement;
@@ -776,7 +764,8 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
776
764
  //descriptions are not really shown, but they are inserted into the dom
777
765
  var showTracks = {subtitles: 1, captions: 1, descriptions: 1};
778
766
  var dummyTrack = $('<track />');
779
- var supportTrackMod = Modernizr.ES5 && Modernizr.objectAccessor;
767
+ var support = webshims.support;
768
+ var supportTrackMod = support.ES5 && support.objectAccessor;
780
769
  var createEventTarget = function(obj){
781
770
  var eventList = {};
782
771
  obj.addEventListener = function(name, fn){
@@ -1085,19 +1074,23 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1085
1074
  ttml = $.parseXML(ttml) || [];
1086
1075
  return $(ttml).find('[begin][end]').map(mapTtmlToVtt).get().join('\n\n') || '';
1087
1076
  };
1088
-
1077
+ var loadingTracks = 0;
1078
+
1089
1079
  mediaelement.loadTextTrack = function(mediaelem, track, trackData, _default){
1090
- var loadEvents = 'play playing';
1080
+ var loadEvents = 'play playing loadedmetadata loadstart';
1091
1081
  var obj = trackData.track;
1092
1082
  var load = function(){
1093
1083
  var error, ajax, createAjax;
1094
- var src = obj.mode != 'disabled' && ($.attr(track, 'src') && $.prop(track, 'src'));
1084
+ var isDisabled = obj.mode == 'disabled';
1085
+ var videoState = !!($.prop(mediaelem, 'readyState') > 0 || $.prop(mediaelem, 'networkState') == 2 || !$.prop(mediaelem, 'paused'));
1086
+ var src = (!isDisabled || videoState) && ($.attr(track, 'src') && $.prop(track, 'src'));
1095
1087
 
1096
1088
  if(src){
1097
1089
  $(mediaelem).off(loadEvents, load).off('updatetrackdisplay', load);
1098
1090
 
1099
1091
  if(!trackData.readyState){
1100
1092
  error = function(){
1093
+ loadingTracks--;
1101
1094
  trackData.readyState = 3;
1102
1095
  obj.cues = null;
1103
1096
  obj.activeCues = obj.shimActiveCues = obj._shimActiveCues = null;
@@ -1107,12 +1100,14 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1107
1100
  try {
1108
1101
  obj.cues = mediaelement.createCueList();
1109
1102
  obj.activeCues = obj.shimActiveCues = obj._shimActiveCues = mediaelement.createCueList();
1103
+ loadingTracks++;
1110
1104
  createAjax = function(){
1111
1105
  ajax = $.ajax({
1112
1106
  dataType: 'text',
1113
1107
  url: src,
1114
1108
  success: function(text){
1115
- var contentType = ajax.getResponseHeader('content-type');
1109
+ loadingTracks--;
1110
+ var contentType = ajax.getResponseHeader('content-type') || '';
1116
1111
 
1117
1112
  if(!contentType.indexOf('application/xml')){
1118
1113
  text = ttmlTextToVTT(text);
@@ -1128,13 +1123,16 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1128
1123
  error();
1129
1124
  }
1130
1125
  });
1131
-
1132
1126
  },
1133
1127
  error: error
1134
1128
  });
1135
1129
  };
1136
1130
  if($.ajax && $.ajaxSettings.xhr){
1137
- createAjax();
1131
+ if(isDisabled){
1132
+ setTimeout(createAjax, loadingTracks * 2);
1133
+ } else {
1134
+ createAjax();
1135
+ }
1138
1136
  } else {
1139
1137
  webshims.ready('jajax', createAjax);
1140
1138
  webshims.loader.loadList(['jajax']);
@@ -1153,13 +1151,12 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1153
1151
  obj.cues = null;
1154
1152
 
1155
1153
  $(mediaelem).on(loadEvents, load);
1154
+
1156
1155
  if(_default){
1157
1156
  obj.mode = showTracks[obj.kind] ? 'showing' : 'hidden';
1158
- webshims.ready('WINDOWLOAD', load);
1157
+ load();
1159
1158
  } else {
1160
- webshims.ready('WINDOWLOAD', function(){
1161
- $(mediaelem).on('updatetrackdisplay', load);
1162
- });
1159
+ $(mediaelem).on('updatetrackdisplay', load);
1163
1160
  }
1164
1161
  };
1165
1162
 
@@ -1431,7 +1428,7 @@ modified for webshims
1431
1428
  return baseData.textTracks;
1432
1429
  };
1433
1430
 
1434
- if(!Modernizr.track){
1431
+ if(!support.track){
1435
1432
  webshims.defineNodeNamesBooleanProperty(['track'], 'default');
1436
1433
  webshims.reflectProperties(['track'], ['srclang', 'label']);
1437
1434
 
@@ -1446,7 +1443,7 @@ modified for webshims
1446
1443
 
1447
1444
  webshims.defineNodeNameProperties('track', {
1448
1445
  kind: {
1449
- attr: Modernizr.track ? {
1446
+ attr: support.track ? {
1450
1447
  set: function(value){
1451
1448
  var trackData = webshims.data(this, 'trackData');
1452
1449
  this.setAttribute('data-kind', value);
@@ -1501,7 +1498,6 @@ modified for webshims
1501
1498
  });
1502
1499
 
1503
1500
  //
1504
-
1505
1501
  webshims.defineNodeNamesProperties(['track'], {
1506
1502
  ERROR: {
1507
1503
  value: 3
@@ -1611,7 +1607,7 @@ modified for webshims
1611
1607
  })
1612
1608
  .on('emptied updatetracklist wsmediareload', thUpdateList)
1613
1609
  .each(function(){
1614
- if(Modernizr.track){
1610
+ if(support.track){
1615
1611
  var shimedTextTracks = $.prop(this, 'textTracks');
1616
1612
  var origTextTracks = this.textTracks;
1617
1613
 
@@ -1636,7 +1632,7 @@ modified for webshims
1636
1632
  });
1637
1633
  });
1638
1634
 
1639
- if(Modernizr.texttrackapi){
1635
+ if(support.texttrackapi){
1640
1636
  $('video, audio').trigger('trackapichange');
1641
1637
  }
1642
1638
  });
@@ -1,6 +1,7 @@
1
- (function(Modernizr, webshims){
1
+ (function(webshims){
2
2
  "use strict";
3
- var hasNative = Modernizr.audio && Modernizr.video;
3
+ var support = webshims.support;
4
+ var hasNative = support.mediaelement;
4
5
  var supportsLoop = false;
5
6
  var bugs = webshims.bugs;
6
7
  var swfType = 'mediaelement-jaris';
@@ -23,14 +24,14 @@
23
24
 
24
25
  if(hasNative){
25
26
  var videoElem = document.createElement('video');
26
- Modernizr.videoBuffered = ('buffered' in videoElem);
27
- Modernizr.mediaDefaultMuted = ('defaultMuted' in videoElem);
27
+ support.videoBuffered = ('buffered' in videoElem);
28
+ support.mediaDefaultMuted = ('defaultMuted' in videoElem);
28
29
  supportsLoop = ('loop' in videoElem);
29
- Modernizr.mediaLoop = supportsLoop;
30
+ support.mediaLoop = supportsLoop;
30
31
 
31
32
  webshims.capturingEvents(['play', 'playing', 'waiting', 'paused', 'ended', 'durationchange', 'loadedmetadata', 'canplay', 'volumechange']);
32
33
 
33
- if( !Modernizr.videoBuffered || !supportsLoop || (!Modernizr.mediaDefaultMuted && isIE && 'ActiveXObject' in window) ){
34
+ if( !support.videoBuffered || !supportsLoop || (!support.mediaDefaultMuted && isIE && 'ActiveXObject' in window) ){
34
35
  webshims.addPolyfill('mediaelement-native-fix', {
35
36
  d: ['dom-support']
36
37
  });
@@ -38,7 +39,7 @@
38
39
  }
39
40
  }
40
41
 
41
- if(Modernizr.track && !bugs.track){
42
+ if(support.track && !bugs.track){
42
43
  (function(){
43
44
  if(!bugs.track){
44
45
 
@@ -370,19 +371,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
370
371
  }
371
372
  }
372
373
  };
373
- var allowedPreload = {'metadata': 1, 'auto': 1, '': 1};
374
- var fixPreload = function(elem){
375
- var preload, img;
376
- if(elem.getAttribute('preload') == 'none'){
377
- if(allowedPreload[(preload = $.attr(elem, 'data-preload'))]){
378
- $.attr(elem, 'preload', preload);
379
- } else if(hasNative && (preload = elem.getAttribute('poster'))){
380
- img = document.createElement('img');
381
- img.src = preload;
382
- }
383
- }
384
- };
385
- var stopParent = /^(?:embed|object|datalist)$/i;
374
+ var stopParent = /^(?:embed|object|datalist|picture)$/i;
386
375
  var selectSource = function(elem, data){
387
376
  var baseData = webshims.data(elem, 'mediaelementBase') || webshims.data(elem, 'mediaelementBase', {});
388
377
  var _srces = mediaelement.srces(elem);
@@ -397,7 +386,6 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
397
386
  if(mediaelement.sortMedia){
398
387
  _srces.sort(mediaelement.sortMedia);
399
388
  }
400
- fixPreload(elem);
401
389
  stepSources(elem, data, _srces);
402
390
 
403
391
  };
@@ -421,7 +409,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
421
409
 
422
410
  if(webshims.implement(this, 'mediaelement')){
423
411
  selectSource(this);
424
- if(!Modernizr.mediaDefaultMuted && $.attr(this, 'muted') != null){
412
+ if(!support.mediaDefaultMuted && $.attr(this, 'muted') != null){
425
413
  $.prop(this, 'muted', true);
426
414
  }
427
415
 
@@ -446,7 +434,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
446
434
  if(hasNative && (!data || data.isActive == 'html5') && supLoad.prop._supvalue){
447
435
  supLoad.prop._supvalue.apply(this, arguments);
448
436
  }
449
- if(!loadTrackUi.loaded && $('track', this).length){
437
+ if(!loadTrackUi.loaded && this.querySelector('track')){
450
438
  loadTrackUi();
451
439
  }
452
440
  $(this).triggerHandler('wsmediareload');
@@ -545,7 +533,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
545
533
  webshims.ready('track', loadTrackUi);
546
534
  });
547
535
 
548
- })(Modernizr, webshims);
536
+ })(webshims);
549
537
  ;webshims.register('track', function($, webshims, window, document, undefined){
550
538
  "use strict";
551
539
  var mediaelement = webshims.mediaelement;
@@ -553,7 +541,8 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
553
541
  //descriptions are not really shown, but they are inserted into the dom
554
542
  var showTracks = {subtitles: 1, captions: 1, descriptions: 1};
555
543
  var dummyTrack = $('<track />');
556
- var supportTrackMod = Modernizr.ES5 && Modernizr.objectAccessor;
544
+ var support = webshims.support;
545
+ var supportTrackMod = support.ES5 && support.objectAccessor;
557
546
  var createEventTarget = function(obj){
558
547
  var eventList = {};
559
548
  obj.addEventListener = function(name, fn){
@@ -862,19 +851,23 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
862
851
  ttml = $.parseXML(ttml) || [];
863
852
  return $(ttml).find('[begin][end]').map(mapTtmlToVtt).get().join('\n\n') || '';
864
853
  };
865
-
854
+ var loadingTracks = 0;
855
+
866
856
  mediaelement.loadTextTrack = function(mediaelem, track, trackData, _default){
867
- var loadEvents = 'play playing';
857
+ var loadEvents = 'play playing loadedmetadata loadstart';
868
858
  var obj = trackData.track;
869
859
  var load = function(){
870
860
  var error, ajax, createAjax;
871
- var src = obj.mode != 'disabled' && ($.attr(track, 'src') && $.prop(track, 'src'));
861
+ var isDisabled = obj.mode == 'disabled';
862
+ var videoState = !!($.prop(mediaelem, 'readyState') > 0 || $.prop(mediaelem, 'networkState') == 2 || !$.prop(mediaelem, 'paused'));
863
+ var src = (!isDisabled || videoState) && ($.attr(track, 'src') && $.prop(track, 'src'));
872
864
 
873
865
  if(src){
874
866
  $(mediaelem).off(loadEvents, load).off('updatetrackdisplay', load);
875
867
 
876
868
  if(!trackData.readyState){
877
869
  error = function(){
870
+ loadingTracks--;
878
871
  trackData.readyState = 3;
879
872
  obj.cues = null;
880
873
  obj.activeCues = obj.shimActiveCues = obj._shimActiveCues = null;
@@ -884,12 +877,14 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
884
877
  try {
885
878
  obj.cues = mediaelement.createCueList();
886
879
  obj.activeCues = obj.shimActiveCues = obj._shimActiveCues = mediaelement.createCueList();
880
+ loadingTracks++;
887
881
  createAjax = function(){
888
882
  ajax = $.ajax({
889
883
  dataType: 'text',
890
884
  url: src,
891
885
  success: function(text){
892
- var contentType = ajax.getResponseHeader('content-type');
886
+ loadingTracks--;
887
+ var contentType = ajax.getResponseHeader('content-type') || '';
893
888
 
894
889
  if(!contentType.indexOf('application/xml')){
895
890
  text = ttmlTextToVTT(text);
@@ -905,13 +900,16 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
905
900
  error();
906
901
  }
907
902
  });
908
-
909
903
  },
910
904
  error: error
911
905
  });
912
906
  };
913
907
  if($.ajax && $.ajaxSettings.xhr){
914
- createAjax();
908
+ if(isDisabled){
909
+ setTimeout(createAjax, loadingTracks * 2);
910
+ } else {
911
+ createAjax();
912
+ }
915
913
  } else {
916
914
  webshims.ready('jajax', createAjax);
917
915
  webshims.loader.loadList(['jajax']);
@@ -930,13 +928,12 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
930
928
  obj.cues = null;
931
929
 
932
930
  $(mediaelem).on(loadEvents, load);
931
+
933
932
  if(_default){
934
933
  obj.mode = showTracks[obj.kind] ? 'showing' : 'hidden';
935
- webshims.ready('WINDOWLOAD', load);
934
+ load();
936
935
  } else {
937
- webshims.ready('WINDOWLOAD', function(){
938
- $(mediaelem).on('updatetrackdisplay', load);
939
- });
936
+ $(mediaelem).on('updatetrackdisplay', load);
940
937
  }
941
938
  };
942
939
 
@@ -1208,7 +1205,7 @@ modified for webshims
1208
1205
  return baseData.textTracks;
1209
1206
  };
1210
1207
 
1211
- if(!Modernizr.track){
1208
+ if(!support.track){
1212
1209
  webshims.defineNodeNamesBooleanProperty(['track'], 'default');
1213
1210
  webshims.reflectProperties(['track'], ['srclang', 'label']);
1214
1211
 
@@ -1223,7 +1220,7 @@ modified for webshims
1223
1220
 
1224
1221
  webshims.defineNodeNameProperties('track', {
1225
1222
  kind: {
1226
- attr: Modernizr.track ? {
1223
+ attr: support.track ? {
1227
1224
  set: function(value){
1228
1225
  var trackData = webshims.data(this, 'trackData');
1229
1226
  this.setAttribute('data-kind', value);
@@ -1278,7 +1275,6 @@ modified for webshims
1278
1275
  });
1279
1276
 
1280
1277
  //
1281
-
1282
1278
  webshims.defineNodeNamesProperties(['track'], {
1283
1279
  ERROR: {
1284
1280
  value: 3
@@ -1388,7 +1384,7 @@ modified for webshims
1388
1384
  })
1389
1385
  .on('emptied updatetracklist wsmediareload', thUpdateList)
1390
1386
  .each(function(){
1391
- if(Modernizr.track){
1387
+ if(support.track){
1392
1388
  var shimedTextTracks = $.prop(this, 'textTracks');
1393
1389
  var origTextTracks = this.textTracks;
1394
1390
 
@@ -1413,7 +1409,7 @@ modified for webshims
1413
1409
  });
1414
1410
  });
1415
1411
 
1416
- if(Modernizr.texttrackapi){
1412
+ if(support.texttrackapi){
1417
1413
  $('video, audio').trigger('trackapichange');
1418
1414
  }
1419
1415
  });
@@ -1,8 +1,7 @@
1
1
  webshims.register('form-native-extend', function($, webshims, window, doc, undefined, options){
2
2
  "use strict";
3
- var Modernizr = window.Modernizr;
4
- var modernizrInputTypes = Modernizr.inputtypes;
5
- if(!Modernizr.formvalidation || webshims.bugs.bustedValidity){return;}
3
+ var support = webshims.support;
4
+ if(!support.formvalidation || webshims.bugs.bustedValidity){return;}
6
5
  var typeModels = webshims.inputTypes;
7
6
  var runTest = false;
8
7
  var validityRules = {};
@@ -23,7 +22,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
23
22
  typeModels[type] = obj;
24
23
  runTest = true;
25
24
  //update validity of all implemented input types
26
- if($.isDOMReady && Modernizr.formvalidation && !webshims.bugs.bustedValidity){
25
+ if($.isDOMReady && support.formvalidation && !webshims.bugs.bustedValidity){
27
26
  updateValidity();
28
27
  }
29
28
  };
@@ -209,7 +208,8 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
209
208
  });
210
209
 
211
210
 
212
- });;webshims.register('form-message', function($, webshims, window, document, undefined, options){
211
+ });
212
+ ;webshims.register('form-message', function($, webshims, window, document, undefined, options){
213
213
  "use strict";
214
214
  if(options.lazyCustomMessages){
215
215
  options.customMessages = true;
@@ -464,7 +464,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
464
464
  };
465
465
 
466
466
 
467
- if(!Modernizr.formvalidation || webshims.bugs.bustedValidity){
467
+ if(!webshims.support.formvalidation || webshims.bugs.bustedValidity){
468
468
  implementProperties.push('validationMessage');
469
469
  }
470
470
 
@@ -500,7 +500,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
500
500
  if(message){return message;}
501
501
 
502
502
  if(validity.customError && elem.nodeName){
503
- message = (Modernizr.formvalidation && !webshims.bugs.bustedValidity && desc.prop._supget) ? desc.prop._supget.call(elem) : webshims.data(elem, 'customvalidationMessage');
503
+ message = (webshims.support.formvalidation && !webshims.bugs.bustedValidity && desc.prop._supget) ? desc.prop._supget.call(elem) : webshims.data(elem, 'customvalidationMessage');
504
504
  if(message){return message;}
505
505
  }
506
506
  $.each(validity, function(name, prop){
@@ -62,7 +62,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
62
62
  var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
63
63
  var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
64
64
  var has = Object.prototype.hasOwnProperty;
65
- webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
65
+ webshims.assumeARIA = true;
66
66
 
67
67
  if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
68
68
  webshims.error("IE browser modes are busted in IE10+. Please test your HTML/CSS/JS with a real IE version or at least IETester or similiar tools");
@@ -81,15 +81,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
81
81
  }
82
82
  window.jQuery = webshims.$;
83
83
  }
84
- if(webshims.M != Modernizr){
85
- webshims.error("Modernizr was included more than once. Make sure to include it only once! Webshims and other scripts might not work properly.");
86
- for(var i in Modernizr){
87
- if(!(i in webshims.M)){
88
- webshims.M[i] = Modernizr[i];
89
- }
90
- }
91
- Modernizr = webshims.M;
92
- }
93
84
  };
94
85
  switch$();
95
86
  setTimeout(switch$, 90);
@@ -418,7 +409,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
418
409
  var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
419
410
 
420
411
  //see also: https://github.com/lojjic/PIE/issues/40 | https://prototype.lighthouseapp.com/projects/8886/tickets/1107-ie8-fatal-crash-when-prototypejs-is-loaded-with-rounded-cornershtc
421
- var isExtendNativeSave = Modernizr.advancedObjectProperties && Modernizr.objectAccessor;
412
+ var isExtendNativeSave = webshims.support.advancedObjectProperties && webshims.support.objectAccessor;
422
413
  return function(nodeName, prop, desc){
423
414
  var elem , elemProto;
424
415
  if( isExtendNativeSave && (elem = document.createElement(nodeName)) && (elemProto = webshims.getPrototypeOf(elem)) && UNKNOWN !== elemProto && ( !elem[prop] || !has.call(elem, prop) ) ){
@@ -729,7 +720,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
729
720
  });
730
721
  }
731
722
  webshims.ready('WINDOWLOAD', this.test);
732
- $(document).on('updatelayout.webshim pageinit popupafteropen panelbeforeopen tabsactivate collapsibleexpand shown.bs.modal shown.bs.collapse slid.bs.carousel', this.handler);
723
+ $(document).on('updatelayout.webshim pageinit popupafteropen panelbeforeopen tabsactivate collapsibleexpand shown.bs.modal shown.bs.collapse slid.bs.carousel playerdimensionchange', this.handler);
733
724
  $(window).on('resize', this.handler);
734
725
  }
735
726
  }
@@ -1239,13 +1230,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1239
1230
  e._isPolyfilled = true;
1240
1231
  }
1241
1232
  };
1242
-
1243
- if(Modernizr.formvalidation && !webshims.bugs.bustedValidity){
1244
- //create delegatable events
1245
- webshims.capturingEvents(['invalid'], true);
1246
- }
1233
+
1247
1234
 
1248
1235
  var modules = webshims.modules;
1236
+ var support = webshims.support;
1249
1237
  var isValid = function(elem){
1250
1238
  return ($.prop(elem, 'validity') || {valid: 1}).valid;
1251
1239
  };
@@ -1299,7 +1287,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1299
1287
  return !!($.prop(elem, 'willValidate') && $.prop(elem, 'required'));
1300
1288
  },
1301
1289
  "user-error": function(elem){
1302
- return ($.prop(elem, 'willValidate') && $(elem).hasClass('user-error'));
1290
+ return ($.prop(elem, 'willValidate') && $(elem).getShadowElement().hasClass((options.iVal.errorClass || 'user-error')));
1303
1291
  },
1304
1292
  "optional-element": function(elem){
1305
1293
  return !!($.prop(elem, 'willValidate') && $.prop(elem, 'required') === false);
@@ -1311,7 +1299,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1311
1299
  });
1312
1300
 
1313
1301
  // sizzle/jQuery has a bug with :disabled/:enabled selectors
1314
- if(Modernizr.fieldsetdisabled && !$('<fieldset disabled=""><input /><input /></fieldset>').find(':disabled').filter(':disabled').is(':disabled')){
1302
+ if(support.fieldsetdisabled && !$('<fieldset disabled=""><input /><input /></fieldset>').find(':disabled').filter(':disabled').is(':disabled')){
1315
1303
  matches = $.find.matches;
1316
1304
  matchesOverride = {':disabled': 1, ':enabled': 1};
1317
1305
  $.find.matches = function(expr, elements){
@@ -1365,6 +1353,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1365
1353
  addModule('form-validators', $.extend({}, formExtras));
1366
1354
 
1367
1355
 
1356
+ if(support.formvalidation && !webshims.bugs.bustedValidity){
1357
+ //create delegatable events
1358
+ webshims.capturingEvents(['invalid'], true);
1359
+ }
1368
1360
 
1369
1361
  if($.expr.filters){
1370
1362
  extendSels();
@@ -1510,7 +1502,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1510
1502
 
1511
1503
  webshims.ready('WINDOWLOAD', lazyLoad);
1512
1504
 
1513
- if(modules['form-number-date-ui'].loaded && !options.customMessages && (modules['form-number-date-api'].test() || (Modernizr.inputtypes.range && Modernizr.inputtypes.color))){
1505
+ if(modules['form-number-date-ui'].loaded && !options.customMessages && (modules['form-number-date-api'].test() || (support.inputtypes.range && support.inputtypes.color))){
1514
1506
  webshims.isReady('form-number-date-ui', true);
1515
1507
  }
1516
1508
 
@@ -1591,12 +1583,11 @@ var typeModels = webshims.inputTypes,
1591
1583
  }
1592
1584
  return fn;
1593
1585
  })();
1594
- if(!Modernizr.prefixed || Modernizr.prefixed("matchesSelector", document.documentElement)){
1595
- $.find.matchesSelector = function(node, expr){
1596
- expr = expr.replace(regExp, regFn);
1597
- return matchesSelector.call(this, node, expr);
1598
- };
1599
- }
1586
+
1587
+ $.find.matchesSelector = function(node, expr){
1588
+ expr = expr.replace(regExp, regFn);
1589
+ return matchesSelector.call(this, node, expr);
1590
+ };
1600
1591
 
1601
1592
  })();
1602
1593
  }
@@ -2051,7 +2042,7 @@ webshims.defineNodeNameProperty('form', 'noValidate', {
2051
2042
  });
2052
2043
  });
2053
2044
 
2054
- if(Modernizr.inputtypes.date && /webkit/i.test(navigator.userAgent)){
2045
+ if(webshims.support.inputtypes.date && /webkit/i.test(navigator.userAgent)){
2055
2046
  (function(){
2056
2047
 
2057
2048
  var noInputTriggerEvts = {updateInput: 1, input: 1},
@@ -2163,7 +2154,7 @@ webshims.addReady(function(context, contextElem){
2163
2154
 
2164
2155
  });
2165
2156
 
2166
- if(!Modernizr.input.list){
2157
+ if(!webshims.support.datalist){
2167
2158
  webshims.defineNodeNameProperty('datalist', 'options', {
2168
2159
  prop: {
2169
2160
  writeable: false,
@@ -2597,7 +2588,7 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
2597
2588
  };
2598
2589
 
2599
2590
 
2600
- if(!Modernizr.formvalidation || webshims.bugs.bustedValidity){
2591
+ if(!webshims.support.formvalidation || webshims.bugs.bustedValidity){
2601
2592
  implementProperties.push('validationMessage');
2602
2593
  }
2603
2594
 
@@ -2633,7 +2624,7 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
2633
2624
  if(message){return message;}
2634
2625
 
2635
2626
  if(validity.customError && elem.nodeName){
2636
- message = (Modernizr.formvalidation && !webshims.bugs.bustedValidity && desc.prop._supget) ? desc.prop._supget.call(elem) : webshims.data(elem, 'customvalidationMessage');
2627
+ message = (webshims.support.formvalidation && !webshims.bugs.bustedValidity && desc.prop._supget) ? desc.prop._supget.call(elem) : webshims.data(elem, 'customvalidationMessage');
2637
2628
  if(message){return message;}
2638
2629
  }
2639
2630
  $.each(validity, function(name, prop){
@@ -2712,8 +2703,8 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
2712
2703
  */
2713
2704
 
2714
2705
  (function(){
2715
- var formsCFG = $.webshims.cfg.forms;
2716
- var listSupport = Modernizr.input.list;
2706
+ var formsCFG = webshims.cfg.forms;
2707
+ var listSupport = webshims.support.datalist;
2717
2708
  if(listSupport && !formsCFG.customDatalist){return;}
2718
2709
 
2719
2710
  var initializeDatalist = function(){