webshims-rails 1.10.6 → 1.10.9

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 (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
  },