webshims-rails 1.10.6 → 1.10.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +8 -8
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/polyfiller.js +14 -7
  4. data/vendor/assets/javascripts/webshims/shims/color-picker.js +1 -0
  5. data/vendor/assets/javascripts/webshims/shims/combos/1.js +153 -155
  6. data/vendor/assets/javascripts/webshims/shims/combos/10.js +168 -136
  7. data/vendor/assets/javascripts/webshims/shims/combos/11.js +116 -44
  8. data/vendor/assets/javascripts/webshims/shims/combos/12.js +100 -95
  9. data/vendor/assets/javascripts/webshims/shims/combos/13.js +100 -95
  10. data/vendor/assets/javascripts/webshims/shims/combos/14.js +51 -91
  11. data/vendor/assets/javascripts/webshims/shims/combos/15.js +129 -232
  12. data/vendor/assets/javascripts/webshims/shims/combos/16.js +228 -326
  13. data/vendor/assets/javascripts/webshims/shims/combos/17.js +116 -44
  14. data/vendor/assets/javascripts/webshims/shims/combos/18.js +116 -44
  15. data/vendor/assets/javascripts/webshims/shims/combos/19.js +210 -214
  16. data/vendor/assets/javascripts/webshims/shims/combos/2.js +204 -246
  17. data/vendor/assets/javascripts/webshims/shims/combos/20.js +210 -214
  18. data/vendor/assets/javascripts/webshims/shims/combos/21.js +59 -28
  19. data/vendor/assets/javascripts/webshims/shims/combos/23.js +100 -95
  20. data/vendor/assets/javascripts/webshims/shims/combos/24.js +2 -2
  21. data/vendor/assets/javascripts/webshims/shims/combos/25.js +210 -214
  22. data/vendor/assets/javascripts/webshims/shims/combos/26.js +51 -91
  23. data/vendor/assets/javascripts/webshims/shims/combos/28.js +110 -119
  24. data/vendor/assets/javascripts/webshims/shims/combos/29.js +6 -0
  25. data/vendor/assets/javascripts/webshims/shims/combos/3.js +126 -156
  26. data/vendor/assets/javascripts/webshims/shims/combos/30.js +126 -155
  27. data/vendor/assets/javascripts/webshims/shims/combos/31.js +104 -151
  28. data/vendor/assets/javascripts/webshims/shims/combos/4.js +73 -96
  29. data/vendor/assets/javascripts/webshims/shims/combos/5.js +116 -44
  30. data/vendor/assets/javascripts/webshims/shims/combos/6.js +116 -44
  31. data/vendor/assets/javascripts/webshims/shims/combos/7.js +226 -250
  32. data/vendor/assets/javascripts/webshims/shims/combos/8.js +226 -250
  33. data/vendor/assets/javascripts/webshims/shims/combos/9.js +168 -136
  34. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +51 -91
  35. data/vendor/assets/javascripts/webshims/shims/form-core.js +53 -60
  36. data/vendor/assets/javascripts/webshims/shims/form-message.js +22 -5
  37. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +87 -30
  38. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +2 -76
  39. data/vendor/assets/javascripts/webshims/shims/form-validation.js +2 -2
  40. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +1 -1
  41. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-fr.js +18 -8
  42. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +100 -95
  43. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +59 -28
  44. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +9 -2
  45. data/vendor/assets/javascripts/webshims/shims/range-ui.js +29 -14
  46. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +21 -7
  47. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +30 -15
  48. data/vendor/assets/javascripts/webshims/shims/track-ui.js +6 -0
  49. metadata +2 -2
@@ -324,6 +324,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
324
324
  var hasNative = Modernizr.audio && Modernizr.video;
325
325
  var hasFlash = swfmini.hasFlashPlayerVersion('9.0.115');
326
326
  var loadedSwf = 0;
327
+ var needsLoadPreload = 'ActiveXObject' in window && hasNative;
327
328
  var getProps = {
328
329
  paused: true,
329
330
  ended: false,
@@ -437,12 +438,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
437
438
  data.readyState = readyState;
438
439
  };
439
440
 
440
- $.extend($.event.customEvent, {
441
- updatemediaelementdimensions: true,
442
- flashblocker: true,
443
- swfstageresize: true,
444
- mediaelementapichange: true
445
- });
441
+
446
442
 
447
443
  mediaelement.jarisEvent = {};
448
444
  var localConnectionTimer;
@@ -691,8 +687,13 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
691
687
  var isNativeHTML5 = ( event.originalEvent && event.originalEvent.type === event.type );
692
688
  if( isNativeHTML5 == (data.activating == 'third') ){
693
689
  event.stopImmediatePropagation();
694
- if(stopEvents[event.type] && data.isActive != data.activating){
695
- $(event.target).pause();
690
+
691
+ if(stopEvents[event.type]){
692
+ if(data.isActive != data.activating){
693
+ $(event.target).pause();
694
+ } else if(isNativeHTML5){
695
+ ($.prop(event.target, 'pause')._supvalue || $.noop).apply(event.target);
696
+ }
696
697
  }
697
698
  }
698
699
  };
@@ -756,15 +757,18 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
756
757
  })();
757
758
 
758
759
  var setElementDimension = function(data, hasControls){
760
+ var cAttr;
759
761
  var elem = data._elem;
760
762
  var box = data.shadowElem;
763
+
761
764
  $(elem)[hasControls ? 'addClass' : 'removeClass']('webshims-controls');
762
765
  if(data._elemNodeName == 'audio' && !hasControls){
763
766
  box.css({width: 0, height: 0});
764
767
  } else {
768
+
765
769
  box.css({
766
- width: elem.style.width || $(elem).width(),
767
- height: elem.style.height || $(elem).height()
770
+ width: elem.style.width || ((cAttr = $(elem).attr('width')) && cAttr+'px') || $(elem).width(),
771
+ height: elem.style.height|| ((cAttr = $(elem).attr('height')) && cAttr+'px') || $(elem).height()
768
772
  });
769
773
  }
770
774
  };
@@ -793,7 +797,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
793
797
  replaceVar = function(val){
794
798
  return (val.replace) ? val.replace(regs.A, '%26').replace(regs.a, '%26').replace(regs.e, '%3D').replace(regs.q, '%3F') : val;
795
799
  };
796
-
800
+
797
801
  mediaelement.createSWF = function( elem, canPlaySrc, data ){
798
802
  if(!hasFlash){
799
803
  setTimeout(function(){
@@ -801,7 +805,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
801
805
  }, 1);
802
806
  return;
803
807
  }
804
-
808
+
805
809
  if(loadedSwf < 1){
806
810
  loadedSwf = 1;
807
811
  } else {
@@ -812,7 +816,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
812
816
  }
813
817
 
814
818
  if($.attr(elem, 'height') || $.attr(elem, 'width')){
815
- webshims.warn("width or height content attributes used. Webshims only uses CSS (computed styles or inline styles) to detect size of a video/audio");
819
+ webshims.warn("width or height content attributes used. Webshims prefers the usage of CSS (computed styles or inline styles) to detect size of a video/audio. It's really more powerfull.");
816
820
  }
817
821
 
818
822
  var isRtmp = canPlaySrc.type == 'audio/rtmp' || canPlaySrc.type == 'video/rtmp';
@@ -909,6 +913,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
909
913
  }
910
914
  }
911
915
  }));
916
+
912
917
  setElementDimension(data, hasControls);
913
918
 
914
919
  box.insertBefore(elem);
@@ -918,16 +923,31 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
918
923
  }
919
924
 
920
925
  webshims.addShadowDom(elem, box);
926
+ if(!webshims.data(elem, 'mediaelement')){
927
+ webshims.data(elem, 'mediaelement', data);
928
+ }
921
929
  addMediaToStopEvents(elem);
930
+
922
931
  mediaelement.setActive(elem, 'third', data);
932
+
923
933
  $(elem)
924
934
  .on({'updatemediaelementdimensions': setDimension})
925
935
  .onWSOff('updateshadowdom', setDimension)
936
+ .on('remove', function(e){
937
+ if(!e.originalEvent && mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem == elem){
938
+ delete mediaelement.jarisEvent[data.id];
939
+ clearTimeout(localConnectionTimer);
940
+ clearTimeout(data.flashBlock);
941
+ }
942
+ box.remove();
943
+ })
926
944
  ;
927
945
  }
928
946
 
929
- if(!mediaelement.jarisEvent[data.id]){
947
+
948
+ if(!mediaelement.jarisEvent[data.id] || mediaelement.jarisEvent[data.id].elem != elem){
930
949
  mediaelement.jarisEvent[data.id] = function(jaris){
950
+
931
951
  if(jaris.type == 'ready'){
932
952
  var onReady = function(){
933
953
  if(data.api){
@@ -960,8 +980,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
960
980
  }
961
981
  data.duration = jaris.duration;
962
982
  }
963
-
964
983
  };
984
+ mediaelement.jarisEvent[data.id].elem = elem;
965
985
  }
966
986
 
967
987
  $.extend(vars,
@@ -987,27 +1007,27 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
987
1007
  clearTimeout(data.flashBlock);
988
1008
 
989
1009
  swfmini.embedSWF(playerSwfPath, elemId, "100%", "100%", "9.0.115", false, vars, params, attrs, function(swfData){
990
-
991
1010
  if(swfData.success){
992
-
993
- data.api = swfData.ref;
994
-
995
- if(!hasControls){
996
- $(swfData.ref).attr('tabindex', '-1').css('outline', 'none');
997
- }
998
-
999
- data.flashBlock = setTimeout(function(){
1011
+ var fBlocker = function(){
1000
1012
  if((!swfData.ref.parentNode && box[0].parentNode) || swfData.ref.style.display == "none"){
1001
1013
  box.addClass('flashblocker-assumed');
1002
1014
  $(elem).trigger('flashblocker');
1003
1015
  webshims.warn("flashblocker assumed");
1004
1016
  }
1005
1017
  $(swfData.ref).css({'minHeight': '2px', 'minWidth': '2px', display: 'block'});
1006
- }, 9);
1018
+ };
1019
+ data.api = swfData.ref;
1020
+
1021
+ if(!hasControls){
1022
+ $(swfData.ref).attr('tabindex', '-1').css('outline', 'none');
1023
+ }
1024
+
1025
+ data.flashBlock = setTimeout(fBlocker, 99);
1007
1026
 
1008
1027
  if(!localConnectionTimer){
1009
1028
  clearTimeout(localConnectionTimer);
1010
1029
  localConnectionTimer = setTimeout(function(){
1030
+ fBlocker();
1011
1031
  var flash = $(swfData.ref);
1012
1032
  if(flash[0].offsetWidth > 1 && flash[0].offsetHeight > 1 && location.protocol.indexOf('file:') === 0){
1013
1033
  webshims.error("Add your local development-directory to the local-trusted security sandbox: http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html");
@@ -1161,12 +1181,23 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
1161
1181
  }
1162
1182
  });
1163
1183
 
1184
+
1164
1185
  webshims.onNodeNamesPropertyModify(nodeName, 'preload', function(val){
1165
- var data = getSwfDataFromElem(this);
1186
+ var data, baseData, elem;
1166
1187
 
1167
1188
 
1168
- if(data && bufferSrc(this)){
1169
- queueSwfMethod(this, 'api_preload', [], data);
1189
+ if(bufferSrc(this)){
1190
+ data = getSwfDataFromElem(this);
1191
+ if(data){
1192
+ queueSwfMethod(this, 'api_preload', [], data);
1193
+ } else if(needsLoadPreload && this.paused && !this.error && !$.data(this, 'mediaerror') && !this.readyState && !this.networkState && !this.autoplay && $(this).is(':not(.nonnative-api-active)')){
1194
+ elem = this;
1195
+ baseData = webshims.data(elem, 'mediaelementBase') || webshims.data(elem, 'mediaelementBase', {});
1196
+ clearTimeout(baseData.loadTimer);
1197
+ baseData.loadTimer = setTimeout(function(){
1198
+ $(elem).mediaLoad();
1199
+ }, 9);
1200
+ }
1170
1201
  }
1171
1202
  });
1172
1203
 
@@ -530,52 +530,55 @@ var swfmini = function() {
530
530
  });
531
531
  webshims.loader.loadList(['mediaelement-native-fix']);
532
532
  }
533
- }
534
-
535
- if(hasNative && !options.preferFlash){
536
- var noSwitch = {
537
- 1: 1,
538
- 2: 1
539
- };
540
- var switchOptions = function(e){
541
- var media;
542
- var parent;
543
- if(!options.preferFlash &&
533
+
534
+ if(!options.preferFlash){
535
+ var noSwitch = {
536
+ 1: 1,
537
+ 2: 1
538
+ };
539
+ var switchOptions = function(e){
540
+ var media, error, parent;
541
+ if(!options.preferFlash &&
544
542
  ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source:last', parent)[0] == e.target)) &&
545
- (media = $(e.target).closest('audio, video')) && !noSwitch[media.prop('error')]
543
+ (media = $(e.target).closest('audio, video')) && !noSwitch[(error = media.prop('error'))]
546
544
  ){
547
- $(function(){
548
- if(hasSwf && !options.preferFlash){
549
- loadSwf();
550
- webshims.ready('WINDOWLOAD '+swfType, function(){
551
- setTimeout(function(){
552
- if(!options.preferFlash && webshims.mediaelement.createSWF && !media.is('.nonnative-api-active')){
553
- options.preferFlash = true;
554
- document.removeEventListener('error', switchOptions, true);
555
- $('audio, video').each(function(){
556
- webshims.mediaelement.selectSource(this);
557
- });
558
- webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error'));
559
- }
560
- }, 9);
561
- });
562
- } else{
563
- document.removeEventListener('error', switchOptions, true);
545
+ if(error == null){
546
+ webshims.warn("There was an unspecified error on a mediaelement");
547
+ return;
548
+
564
549
  }
565
- });
566
- }
567
- };
568
- document.addEventListener('error', switchOptions, true);
569
- $('audio, video').each(function(){
570
- var error = $.prop(this, 'error');
571
- if(error && !noSwitch[error]){
572
- switchOptions({target: this});
573
- return false;
574
- }
575
- });
550
+ $(function(){
551
+ if(hasSwf && !options.preferFlash){
552
+ loadSwf();
553
+ webshims.ready('WINDOWLOAD '+swfType, function(){
554
+ setTimeout(function(){
555
+ if(!options.preferFlash && webshims.mediaelement.createSWF && !media.is('.nonnative-api-active')){
556
+ options.preferFlash = true;
557
+ document.removeEventListener('error', switchOptions, true);
558
+ $('audio, video').each(function(){
559
+ webshims.mediaelement.selectSource(this);
560
+ });
561
+ webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error'));
562
+ }
563
+ }, 9);
564
+ });
565
+ } else{
566
+ document.removeEventListener('error', switchOptions, true);
567
+ }
568
+ });
569
+ }
570
+ };
571
+ document.addEventListener('error', switchOptions, true);
572
+ $('audio, video').each(function(){
573
+ var error = $.prop(this, 'error');
574
+ if(error && !noSwitch[error]){
575
+ switchOptions({target: this});
576
+ return false;
577
+ }
578
+ });
579
+ }
576
580
  }
577
581
 
578
-
579
582
  if(Modernizr.track && !bugs.track){
580
583
  (function(){
581
584
 
@@ -956,63 +959,14 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
956
959
 
957
960
  });
958
961
 
959
- webshims.ready('dom-support', function(){
960
- if(!supportsLoop){
961
- webshims.defineNodeNamesBooleanProperty(['audio', 'video'], 'loop');
962
- }
963
-
964
- ['audio', 'video'].forEach(function(nodeName){
965
- var supLoad = webshims.defineNodeNameProperty(nodeName, 'load', {
966
- prop: {
967
- value: function(){
968
- var data = webshims.data(this, 'mediaelement');
969
- selectSource(this, data);
970
- if(hasNative && (!data || data.isActive == 'html5') && supLoad.prop._supvalue){
971
- supLoad.prop._supvalue.apply(this, arguments);
972
- }
973
- }
974
- }
975
- });
976
- nativeCanPlayType[nodeName] = webshims.defineNodeNameProperty(nodeName, 'canPlayType', {
977
- prop: {
978
- value: function(type){
979
- var ret = '';
980
- if(hasNative && nativeCanPlayType[nodeName].prop._supvalue){
981
- ret = nativeCanPlayType[nodeName].prop._supvalue.call(this, type);
982
- if(ret == 'no'){
983
- ret = '';
984
- }
985
- }
986
- if(!ret && hasSwf){
987
- type = $.trim((type || '').split(';')[0]);
988
- if(mediaelement.swfMimeTypes.indexOf(type) != -1){
989
- ret = 'maybe';
990
- }
991
- }
992
- return ret;
993
- }
994
- }
995
- });
996
- });
997
- webshims.onNodeNamesPropertyModify(['audio', 'video'], ['src', 'poster'], {
998
- set: function(){
999
- var elem = this;
1000
- var baseData = webshims.data(elem, 'mediaelementBase') || webshims.data(elem, 'mediaelementBase', {});
1001
- clearTimeout(baseData.loadTimer);
1002
- baseData.loadTimer = setTimeout(function(){
1003
- selectSource(elem);
1004
- elem = null;
1005
- }, 9);
1006
- }
1007
- });
1008
- });
1009
-
962
+ var handleMedia = false;
1010
963
  var initMediaElements = function(){
1011
964
  var testFixMedia = function(){
1012
965
  if(webshims.implement(this, 'mediaelement')){
1013
966
  selectSource(this);
1014
967
 
1015
- if(hasNative){
968
+ //fixes for FF 12 and IE9/10 || does not hurt, if run in other browsers
969
+ if(hasNative && (!supportsLoop || ('ActiveXObject' in window))){
1016
970
  var bufferTimer;
1017
971
  var lastBuffered;
1018
972
  var elem = this;
@@ -1041,7 +995,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1041
995
  lastBuffered = getBufferedString();
1042
996
  }
1043
997
  clearTimeout(bufferTimer);
1044
- bufferTimer = setTimeout(testBuffer, 999);
998
+ bufferTimer = setTimeout(testBuffer, 400);
1045
999
  },
1046
1000
  'emptied stalled mediaerror abort suspend': function(e){
1047
1001
  if(e.type == 'emptied'){
@@ -1058,11 +1012,62 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1058
1012
  }
1059
1013
 
1060
1014
  };
1061
- var handleMedia = false;
1015
+
1062
1016
 
1063
1017
 
1064
1018
  webshims.ready('dom-support', function(){
1065
1019
  handleMedia = true;
1020
+
1021
+ if(!supportsLoop){
1022
+ webshims.defineNodeNamesBooleanProperty(['audio', 'video'], 'loop');
1023
+ }
1024
+
1025
+ ['audio', 'video'].forEach(function(nodeName){
1026
+ var supLoad = webshims.defineNodeNameProperty(nodeName, 'load', {
1027
+ prop: {
1028
+ value: function(){
1029
+ var data = webshims.data(this, 'mediaelement');
1030
+ selectSource(this, data);
1031
+ if(hasNative && (!data || data.isActive == 'html5') && supLoad.prop._supvalue){
1032
+ supLoad.prop._supvalue.apply(this, arguments);
1033
+ }
1034
+ }
1035
+ }
1036
+ });
1037
+ nativeCanPlayType[nodeName] = webshims.defineNodeNameProperty(nodeName, 'canPlayType', {
1038
+ prop: {
1039
+ value: function(type){
1040
+ var ret = '';
1041
+ if(hasNative && nativeCanPlayType[nodeName].prop._supvalue){
1042
+ ret = nativeCanPlayType[nodeName].prop._supvalue.call(this, type);
1043
+ if(ret == 'no'){
1044
+ ret = '';
1045
+ }
1046
+ }
1047
+ if(!ret && hasSwf){
1048
+ type = $.trim((type || '').split(';')[0]);
1049
+ if(mediaelement.swfMimeTypes.indexOf(type) != -1){
1050
+ ret = 'maybe';
1051
+ }
1052
+ }
1053
+ return ret;
1054
+ }
1055
+ }
1056
+ });
1057
+ });
1058
+ webshims.onNodeNamesPropertyModify(['audio', 'video'], ['src', 'poster'], {
1059
+ set: function(){
1060
+ var elem = this;
1061
+ var baseData = webshims.data(elem, 'mediaelementBase') || webshims.data(elem, 'mediaelementBase', {});
1062
+ clearTimeout(baseData.loadTimer);
1063
+ baseData.loadTimer = setTimeout(function(){
1064
+ selectSource(elem);
1065
+ elem = null;
1066
+ }, 9);
1067
+ }
1068
+ });
1069
+
1070
+
1066
1071
  webshims.addReady(function(context, insertedElement){
1067
1072
  var media = $('video, audio', context)
1068
1073
  .add(insertedElement.filter('video, audio'))
@@ -244,7 +244,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
244
244
  clearTimeout(that.timers.repos);
245
245
  that.timers.repos = setTimeout(function(){
246
246
  that.position(visual);
247
- }, 900);
247
+ }, 400);
248
248
  });
249
249
  },
250
250
  prepareFor: function(element, visual){
@@ -455,7 +455,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
455
455
  errorBox = this.create(elem, fieldWrapper);
456
456
  } else if(typeof errorBox == 'string'){
457
457
  errorBox = $('#'+errorBox);
458
- $.data(elem, 'errorbox', errorBox);
458
+ fieldWrapper.data('errorbox', errorBox);
459
459
  }
460
460
  return errorBox;
461
461
  },