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
@@ -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
  }
@@ -1843,7 +1834,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1843
1834
  "use strict";
1844
1835
  var curCfg;
1845
1836
  var formcfg = webshims.formcfg;
1846
- var hasFormValidation = Modernizr.formvalidation && !webshims.bugs.bustedValidity;
1837
+ var hasFormValidation = webshims.support.formvalidation && !webshims.bugs.bustedValidity;
1847
1838
  var monthDigits = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
1848
1839
  var stopPropagation = function(e){
1849
1840
  e.stopImmediatePropagation();
@@ -1896,7 +1887,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1896
1887
  ;
1897
1888
  }
1898
1889
  };
1899
- var numericType = Modernizr.inputtypes.tel && navigator.userAgent.indexOf('Mobile') != -1 && !('inputMode' in document.createElement('input') && !('inputmode' in document.createElement('input'))) ?
1890
+ var numericType = webshims.support.inputtypes.tel && navigator.userAgent.indexOf('Mobile') != -1 && !('inputMode' in document.createElement('input') && !('inputmode' in document.createElement('input'))) ?
1900
1891
  'tel' : 'text';
1901
1892
  var splitInputs = {
1902
1893
  date: {
@@ -2937,74 +2928,86 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2937
2928
  })();
2938
2929
 
2939
2930
 
2940
- $.fn.wsTouchClick = (function(){
2941
- var supportsTouchaction = ('touchAction' in document.documentElement.style);
2942
- var addTouch = !supportsTouchaction && ('ontouchstart' in window) && document.addEventListener;
2943
- return function(target, handler){
2944
- var touchData, touchEnd, touchStart;
2945
2931
 
2946
- if(addTouch){
2932
+ if(!$.fn.wsTouchClick){
2947
2933
 
2948
- touchEnd = function(e){
2949
- var ret, touch;
2950
- e = e.originalEvent || {};
2951
- $(this).off('touchend touchcancel', touchEnd);
2952
- var changedTouches = e.changedTouches || e.touches;
2953
- if(e.type == 'touchcancel' || !touchData || !changedTouches || changedTouches.length != 1){
2954
- return;
2934
+ $.fn.wsTouchClick = (function(){
2935
+ var supportsTouchaction = ('touchAction' in document.documentElement.style);
2936
+ var addTouch = !supportsTouchaction && ('ontouchstart' in window) && document.addEventListener;
2937
+ return function(target, handler){
2938
+ var touchData, touchEnd, touchStart, stopClick, allowClick;
2939
+ var runHandler = function(){
2940
+ if(!stopClick){
2941
+ return handler.apply(this, arguments);
2955
2942
  }
2943
+ };
2944
+ if(addTouch){
2945
+ allowClick = function(){
2946
+ stopClick = false;
2947
+ };
2948
+ touchEnd = function(e){
2949
+ var ret, touch;
2950
+ e = e.originalEvent || {};
2951
+ $(this).off('touchend touchcancel', touchEnd);
2952
+ var changedTouches = e.changedTouches || e.touches;
2953
+ if(e.type == 'touchcancel' || !touchData || !changedTouches || changedTouches.length != 1){
2954
+ return;
2955
+ }
2956
2956
 
2957
- touch = changedTouches[0];
2958
- if(Math.abs(touchData.x - touch.pageX) > 40 || Math.abs(touchData.y - touch.pageY) > 40 || Date.now() - touchData.now > 300){
2959
- return;
2960
- }
2961
- e.preventDefault();
2962
- ret = handler.apply(this, arguments);
2957
+ touch = changedTouches[0];
2958
+ if(Math.abs(touchData.x - touch.pageX) > 40 || Math.abs(touchData.y - touch.pageY) > 40 || Date.now() - touchData.now > 300){
2959
+ return;
2960
+ }
2963
2961
 
2964
- return ret;
2965
- };
2962
+ e.preventDefault();
2963
+ stopClick = true;
2964
+ setTimeout(allowClick, 400);
2966
2965
 
2967
- touchStart = function(e){
2968
- var touch, elemTarget;
2966
+ ret = handler.apply(this, arguments);
2969
2967
 
2968
+ return ret;
2969
+ };
2970
2970
 
2971
- if((!e || e.touches.length != 1)){
2972
- return;
2973
- }
2974
- touch = e.touches[0];
2975
- elemTarget = target ? $(touch.target).closest(target) : $(this);
2976
- if(!elemTarget.length){
2977
- return;
2978
- }
2979
- touchData = {
2980
- x: touch.pageX,
2981
- y: touch.pageY,
2982
- now: Date.now()
2971
+ touchStart = function(e){
2972
+ var touch, elemTarget;
2973
+ if((!e || e.touches.length != 1)){
2974
+ return;
2975
+ }
2976
+ touch = e.touches[0];
2977
+ elemTarget = target ? $(touch.target).closest(target) : $(this);
2978
+ if(!elemTarget.length){
2979
+ return;
2980
+ }
2981
+ touchData = {
2982
+ x: touch.pageX,
2983
+ y: touch.pageY,
2984
+ now: Date.now()
2985
+ };
2986
+ elemTarget.on('touchend touchcancel', touchEnd);
2983
2987
  };
2984
- elemTarget.on('touchend touchcancel', touchEnd);
2985
- };
2986
2988
 
2987
- this.each(function(){
2988
- this.addEventListener('touchstart', touchStart, true);
2989
- });
2990
- } else if(supportsTouchaction){
2991
- this.css('touch-action', 'manipulation');
2992
- }
2989
+ this.each(function(){
2990
+ this.addEventListener('touchstart', touchStart, true);
2991
+ });
2992
+ } else if(supportsTouchaction){
2993
+ this.css('touch-action', 'manipulation');
2994
+ }
2993
2995
 
2994
- if($.isFunction(target)){
2995
- handler = target;
2996
- target = false;
2997
- this.on('click', handler);
2998
- } else {
2999
- this.on('click', target, handler);
3000
- }
3001
- return this;
3002
- };
3003
- })();
2996
+ if($.isFunction(target)){
2997
+ handler = target;
2998
+ target = false;
2999
+ this.on('click', runHandler);
3000
+ } else {
3001
+ this.on('click', target, runHandler);
3002
+ }
3003
+ return this;
3004
+ };
3005
+ })();
3006
+ }
3004
3007
 
3005
3008
  (function(){
3006
3009
  var picker = {};
3007
- var assumeVirtualKeyBoard = Modernizr.touchevents || Modernizr.touch || (/android|iphone|ipad|ipod|blackberry|iemobile/i.test(navigator.userAgent.toLowerCase()));
3010
+ var assumeVirtualKeyBoard = (window.Modernizr && (Modernizr.touchevents || Modernizr.touch)) || (/android|iphone|ipad|ipod|blackberry|iemobile/i.test(navigator.userAgent.toLowerCase()));
3008
3011
  webshims.inlinePopover = {
3009
3012
  _create: function(){
3010
3013
  this.element = $('<div class="ws-inline-picker"><div class="ws-po-box" /></div>').data('wspopover', this);
@@ -3394,7 +3397,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
3394
3397
 
3395
3398
  var stopCircular, isCheckValidity;
3396
3399
 
3397
- var modernizrInputTypes = Modernizr.inputtypes;
3400
+ var supportInputTypes = webshims.support.inputtypes;
3398
3401
  var inputTypes = {
3399
3402
 
3400
3403
  };
@@ -3548,7 +3551,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
3548
3551
  var type = $.prop(this, 'type');
3549
3552
  var i, opts, data, optsName, labels, cNames, hasInitialFocus;
3550
3553
 
3551
- if(inputTypes[type] && webshims.implement(this, 'inputwidgets') && (!modernizrInputTypes[type] || !$(this).hasClass('ws-noreplace'))){
3554
+ if(inputTypes[type] && webshims.implement(this, 'inputwidgets') && (!supportInputTypes[type] || !$(this).hasClass('ws-noreplace'))){
3552
3555
  data = {};
3553
3556
  optsName = type;
3554
3557
  hasInitialFocus = $(this).is(':focus');
@@ -3719,11 +3722,11 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
3719
3722
  });
3720
3723
  }
3721
3724
  }
3722
- if(modernizrInputTypes.number && navigator.userAgent.indexOf('Touch') == -1 && ((/MSIE 1[0|1]\.\d/.test(navigator.userAgent)) || (/Trident\/7\.0/.test(navigator.userAgent)))){
3725
+ if(supportInputTypes.number && navigator.userAgent.indexOf('Touch') == -1 && ((/MSIE 1[0|1]\.\d/.test(navigator.userAgent)) || (/Trident\/7\.0/.test(navigator.userAgent)))){
3723
3726
  replace.number = 1;
3724
3727
  }
3725
3728
 
3726
- if(!modernizrInputTypes.range || replace.range){
3729
+ if(!supportInputTypes.range || replace.range){
3727
3730
  extendType('range', {
3728
3731
  _create: function(opts, set){
3729
3732
  var data = $('<span />').insertAfter(opts.orig).rangeUI(opts).data('rangeUi');
@@ -3734,7 +3737,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
3734
3737
 
3735
3738
 
3736
3739
  ['number', 'time', 'month', 'date', 'color', 'datetime-local'].forEach(function(name){
3737
- if(!modernizrInputTypes[name] || replace[name]){
3740
+ if(!supportInputTypes[name] || replace[name]){
3738
3741
  extendType(name, {
3739
3742
  _create: function(opts, set){
3740
3743
  if(opts.monthSelect || opts.daySelect || opts.yearSelect){
@@ -3863,8 +3866,8 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
3863
3866
  */
3864
3867
 
3865
3868
  (function(){
3866
- var formsCFG = $.webshims.cfg.forms;
3867
- var listSupport = Modernizr.input.list;
3869
+ var formsCFG = webshims.cfg.forms;
3870
+ var listSupport = webshims.support.datalist;
3868
3871
  if(listSupport && !formsCFG.customDatalist){return;}
3869
3872
 
3870
3873
  var initializeDatalist = function(){
@@ -1,4 +1,4 @@
1
- webshims.register('jme', function($, webshims, window, doc, undefined){
1
+ webshims.register('jmebase', function($, webshims, window, doc, undefined){
2
2
  "use strict";
3
3
  var props = {};
4
4
  var fns = {};
@@ -9,8 +9,11 @@ webshims.register('jme', function($, webshims, window, doc, undefined){
9
9
 
10
10
  webshims.cfg.mediaelement.jme = options;
11
11
 
12
+ if(!$.jme){
13
+ $.jme = {};
14
+ }
12
15
 
13
- $.jme = {
16
+ $.extend($.jme, {
14
17
  pluginsClasses: [],
15
18
  pluginsSel: '',
16
19
  plugins: {},
@@ -56,6 +59,10 @@ webshims.register('jme', function($, webshims, window, doc, undefined){
56
59
  }
57
60
  this.runPlugin('.'+plugin.className);
58
61
  },
62
+ configmenuPlugins: {},
63
+ addToConfigmenu: function(name, create){
64
+ this.configmenuPlugins[name] = create;
65
+ },
59
66
  defineMethod: function(name, fn){
60
67
  fns[name] = fn;
61
68
  },
@@ -95,7 +102,7 @@ webshims.register('jme', function($, webshims, window, doc, undefined){
95
102
  }
96
103
  }
97
104
  }
98
- };
105
+ });
99
106
 
100
107
  $.fn.jmeProp = function(name, value){
101
108
  return $.access( this, $.jme.prop, name, value, arguments.length > 1 );
@@ -105,6 +112,10 @@ webshims.register('jme', function($, webshims, window, doc, undefined){
105
112
  var args = slice.call( arguments, 1 );
106
113
  var ret;
107
114
  this.each(function(){
115
+ if(!$.jme.data(this).media){
116
+ $(this).closest(baseSelector).jmePlayer();
117
+ webshims.warn('jmeFn called to early or on wrong element!');
118
+ }
108
119
  ret = (fns[fn] || $.prop(this, fn)).apply(this, args);
109
120
  if(ret !== undefined){
110
121
  return false;
@@ -182,11 +193,9 @@ webshims.register('jme', function($, webshims, window, doc, undefined){
182
193
  $.fn.jmePlayer = function(opts){
183
194
 
184
195
  return this.each(function(){
185
- if(opts){
186
- $.jme.data(this, $.extend(true, {}, opts));
187
- }
188
196
 
189
- var mediaUpdateFn, canPlay, removeCanPlay, canplayTimer, lastState, stopEmptiedEvent;
197
+
198
+ var mediaUpdateFn, canPlay, removeCanPlay, canplayTimer, lastState, stopEmptiedEvent, forceRender;
190
199
  var media = $('audio, video', this).eq(0);
191
200
  var base = $(this);
192
201
 
@@ -198,7 +207,9 @@ webshims.register('jme', function($, webshims, window, doc, undefined){
198
207
  mediaData.player = base;
199
208
  mediaData.media = media;
200
209
  if(!jmeData.media){
201
-
210
+ forceRender = function(){
211
+ base[0].className = base[0].className;
212
+ };
202
213
  removeCanPlay = function(){
203
214
  media.off('canplay', canPlay);
204
215
  clearTimeout(canplayTimer);
@@ -257,6 +268,7 @@ webshims.register('jme', function($, webshims, window, doc, undefined){
257
268
  if(state){
258
269
  lastState = state;
259
270
  base.attr('data-state', state);
271
+ setTimeout(forceRender);
260
272
  }
261
273
  };
262
274
 
@@ -340,16 +352,16 @@ webshims.register('jme', function($, webshims, window, doc, undefined){
340
352
  return [{src: src}];
341
353
  }
342
354
  srces = $.map($('source', data.media).get(), function(source){
355
+ var i, len;
343
356
  var src = {
344
357
  src: $.prop(source, 'src')
345
358
  };
346
- var tmp = $.attr(source, 'media');
347
- if(tmp){
348
- src.media = tmp;
349
- }
350
- tmp = $.attr(source, 'type');
351
- if(tmp){
352
- src.type = tmp;
359
+ var attributes = source.attributes;
360
+
361
+ for(i = 0, len = attributes.length; i < len; i++){
362
+ if(!('specified' in attributes[i]) || attributes[i].specified){
363
+ src[attributes[i].nodeName] = attributes[i].nodeValue;
364
+ }
353
365
  }
354
366
  return src;
355
367
  });
@@ -421,20 +433,19 @@ webshims.register('jme', function($, webshims, window, doc, undefined){
421
433
  data.player.triggerHandler('controlsadded');
422
434
  }
423
435
  });
424
- webshims.isReady('jme', true);
425
- webshims.addReady($.jme.initJME);
426
- webshims._polyfill(['mediaelement']);
427
- webshims.isReady('jme-base', true);
428
-
429
- if(webshims.cfg.debug !== false){
430
- $(function(){
431
- if(document.getElementsByTagName('video').length && !document.querySelector(baseSelector)){
432
- webshims.warn("found video element but video wasn't wrapped inside a ."+ baseSelector +" element. Will not add control UI");
433
- }
434
- });
435
- }
436
+
437
+ webshims.ready('DOM mediaelement', function(){
438
+ webshims.isReady('jme', true);
439
+ webshims.addReady($.jme.initJME);
440
+ webshims.isReady('jme-base', true);
441
+
442
+ if(webshims.cfg.debug !== false && document.getElementsByTagName('video').length && !document.querySelector(baseSelector)){
443
+ webshims.warn("found video element but video wasn't wrapped inside a ."+ baseSelector +" element. Will not add control UI");
444
+ }
445
+ });
446
+
436
447
  });
437
- ;webshims.ready('jme DOM', function(){
448
+ ;webshims.ready('jme-base DOM', function(){
438
449
  "use strict";
439
450
  var webshims = window.webshims;
440
451
  var $ = webshims.$;
@@ -821,7 +832,9 @@ webshims.register('jme', function($, webshims, window, doc, undefined){
821
832
  $.each(item.tracks || [], function(i, track){
822
833
  $('<track />').attr(track).appendTo(media);
823
834
  });
824
-
835
+ if(!item.srces){
836
+ item.srces = item;
837
+ }
825
838
  media.jmeProp('srces', item.srces);
826
839
  },
827
840
  _getItem: function(item){