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);
@@ -285,7 +285,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
285
285
  var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
286
286
  var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
287
287
  var has = Object.prototype.hasOwnProperty;
288
- webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
288
+ webshims.assumeARIA = true;
289
289
 
290
290
  if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
291
291
  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");
@@ -304,15 +304,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
304
304
  }
305
305
  window.jQuery = webshims.$;
306
306
  }
307
- if(webshims.M != Modernizr){
308
- webshims.error("Modernizr was included more than once. Make sure to include it only once! Webshims and other scripts might not work properly.");
309
- for(var i in Modernizr){
310
- if(!(i in webshims.M)){
311
- webshims.M[i] = Modernizr[i];
312
- }
313
- }
314
- Modernizr = webshims.M;
315
- }
316
307
  };
317
308
  switch$();
318
309
  setTimeout(switch$, 90);
@@ -641,7 +632,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
641
632
  var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
642
633
 
643
634
  //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
644
- var isExtendNativeSave = Modernizr.advancedObjectProperties && Modernizr.objectAccessor;
635
+ var isExtendNativeSave = webshims.support.advancedObjectProperties && webshims.support.objectAccessor;
645
636
  return function(nodeName, prop, desc){
646
637
  var elem , elemProto;
647
638
  if( isExtendNativeSave && (elem = document.createElement(nodeName)) && (elemProto = webshims.getPrototypeOf(elem)) && UNKNOWN !== elemProto && ( !elem[prop] || !has.call(elem, prop) ) ){
@@ -952,7 +943,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
952
943
  });
953
944
  }
954
945
  webshims.ready('WINDOWLOAD', this.test);
955
- $(document).on('updatelayout.webshim pageinit popupafteropen panelbeforeopen tabsactivate collapsibleexpand shown.bs.modal shown.bs.collapse slid.bs.carousel', this.handler);
946
+ $(document).on('updatelayout.webshim pageinit popupafteropen panelbeforeopen tabsactivate collapsibleexpand shown.bs.modal shown.bs.collapse slid.bs.carousel playerdimensionchange', this.handler);
956
947
  $(window).on('resize', this.handler);
957
948
  }
958
949
  }
@@ -1462,13 +1453,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1462
1453
  e._isPolyfilled = true;
1463
1454
  }
1464
1455
  };
1465
-
1466
- if(Modernizr.formvalidation && !webshims.bugs.bustedValidity){
1467
- //create delegatable events
1468
- webshims.capturingEvents(['invalid'], true);
1469
- }
1456
+
1470
1457
 
1471
1458
  var modules = webshims.modules;
1459
+ var support = webshims.support;
1472
1460
  var isValid = function(elem){
1473
1461
  return ($.prop(elem, 'validity') || {valid: 1}).valid;
1474
1462
  };
@@ -1522,7 +1510,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1522
1510
  return !!($.prop(elem, 'willValidate') && $.prop(elem, 'required'));
1523
1511
  },
1524
1512
  "user-error": function(elem){
1525
- return ($.prop(elem, 'willValidate') && $(elem).hasClass('user-error'));
1513
+ return ($.prop(elem, 'willValidate') && $(elem).getShadowElement().hasClass((options.iVal.errorClass || 'user-error')));
1526
1514
  },
1527
1515
  "optional-element": function(elem){
1528
1516
  return !!($.prop(elem, 'willValidate') && $.prop(elem, 'required') === false);
@@ -1534,7 +1522,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1534
1522
  });
1535
1523
 
1536
1524
  // sizzle/jQuery has a bug with :disabled/:enabled selectors
1537
- if(Modernizr.fieldsetdisabled && !$('<fieldset disabled=""><input /><input /></fieldset>').find(':disabled').filter(':disabled').is(':disabled')){
1525
+ if(support.fieldsetdisabled && !$('<fieldset disabled=""><input /><input /></fieldset>').find(':disabled').filter(':disabled').is(':disabled')){
1538
1526
  matches = $.find.matches;
1539
1527
  matchesOverride = {':disabled': 1, ':enabled': 1};
1540
1528
  $.find.matches = function(expr, elements){
@@ -1588,6 +1576,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1588
1576
  addModule('form-validators', $.extend({}, formExtras));
1589
1577
 
1590
1578
 
1579
+ if(support.formvalidation && !webshims.bugs.bustedValidity){
1580
+ //create delegatable events
1581
+ webshims.capturingEvents(['invalid'], true);
1582
+ }
1591
1583
 
1592
1584
  if($.expr.filters){
1593
1585
  extendSels();
@@ -1733,7 +1725,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1733
1725
 
1734
1726
  webshims.ready('WINDOWLOAD', lazyLoad);
1735
1727
 
1736
- if(modules['form-number-date-ui'].loaded && !options.customMessages && (modules['form-number-date-api'].test() || (Modernizr.inputtypes.range && Modernizr.inputtypes.color))){
1728
+ if(modules['form-number-date-ui'].loaded && !options.customMessages && (modules['form-number-date-api'].test() || (support.inputtypes.range && support.inputtypes.color))){
1737
1729
  webshims.isReady('form-number-date-ui', true);
1738
1730
  }
1739
1731
 
@@ -1815,8 +1807,8 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1815
1807
  */
1816
1808
 
1817
1809
  (function(){
1818
- var formsCFG = $.webshims.cfg.forms;
1819
- var listSupport = Modernizr.input.list;
1810
+ var formsCFG = webshims.cfg.forms;
1811
+ var listSupport = webshims.support.datalist;
1820
1812
  if(listSupport && !formsCFG.customDatalist){return;}
1821
1813
 
1822
1814
  var initializeDatalist = function(){
@@ -2054,9 +2046,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2054
2046
  })();
2055
2047
 
2056
2048
  });
2057
- ;(function(Modernizr, webshims){
2049
+ ;(function(webshims){
2058
2050
  "use strict";
2059
- var hasNative = Modernizr.audio && Modernizr.video;
2051
+ var support = webshims.support;
2052
+ var hasNative = support.mediaelement;
2060
2053
  var supportsLoop = false;
2061
2054
  var bugs = webshims.bugs;
2062
2055
  var swfType = 'mediaelement-jaris';
@@ -2079,14 +2072,14 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2079
2072
 
2080
2073
  if(hasNative){
2081
2074
  var videoElem = document.createElement('video');
2082
- Modernizr.videoBuffered = ('buffered' in videoElem);
2083
- Modernizr.mediaDefaultMuted = ('defaultMuted' in videoElem);
2075
+ support.videoBuffered = ('buffered' in videoElem);
2076
+ support.mediaDefaultMuted = ('defaultMuted' in videoElem);
2084
2077
  supportsLoop = ('loop' in videoElem);
2085
- Modernizr.mediaLoop = supportsLoop;
2078
+ support.mediaLoop = supportsLoop;
2086
2079
 
2087
2080
  webshims.capturingEvents(['play', 'playing', 'waiting', 'paused', 'ended', 'durationchange', 'loadedmetadata', 'canplay', 'volumechange']);
2088
2081
 
2089
- if( !Modernizr.videoBuffered || !supportsLoop || (!Modernizr.mediaDefaultMuted && isIE && 'ActiveXObject' in window) ){
2082
+ if( !support.videoBuffered || !supportsLoop || (!support.mediaDefaultMuted && isIE && 'ActiveXObject' in window) ){
2090
2083
  webshims.addPolyfill('mediaelement-native-fix', {
2091
2084
  d: ['dom-support']
2092
2085
  });
@@ -2094,7 +2087,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2094
2087
  }
2095
2088
  }
2096
2089
 
2097
- if(Modernizr.track && !bugs.track){
2090
+ if(support.track && !bugs.track){
2098
2091
  (function(){
2099
2092
  if(!bugs.track){
2100
2093
 
@@ -2426,19 +2419,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2426
2419
  }
2427
2420
  }
2428
2421
  };
2429
- var allowedPreload = {'metadata': 1, 'auto': 1, '': 1};
2430
- var fixPreload = function(elem){
2431
- var preload, img;
2432
- if(elem.getAttribute('preload') == 'none'){
2433
- if(allowedPreload[(preload = $.attr(elem, 'data-preload'))]){
2434
- $.attr(elem, 'preload', preload);
2435
- } else if(hasNative && (preload = elem.getAttribute('poster'))){
2436
- img = document.createElement('img');
2437
- img.src = preload;
2438
- }
2439
- }
2440
- };
2441
- var stopParent = /^(?:embed|object|datalist)$/i;
2422
+ var stopParent = /^(?:embed|object|datalist|picture)$/i;
2442
2423
  var selectSource = function(elem, data){
2443
2424
  var baseData = webshims.data(elem, 'mediaelementBase') || webshims.data(elem, 'mediaelementBase', {});
2444
2425
  var _srces = mediaelement.srces(elem);
@@ -2453,7 +2434,6 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2453
2434
  if(mediaelement.sortMedia){
2454
2435
  _srces.sort(mediaelement.sortMedia);
2455
2436
  }
2456
- fixPreload(elem);
2457
2437
  stepSources(elem, data, _srces);
2458
2438
 
2459
2439
  };
@@ -2477,7 +2457,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2477
2457
 
2478
2458
  if(webshims.implement(this, 'mediaelement')){
2479
2459
  selectSource(this);
2480
- if(!Modernizr.mediaDefaultMuted && $.attr(this, 'muted') != null){
2460
+ if(!support.mediaDefaultMuted && $.attr(this, 'muted') != null){
2481
2461
  $.prop(this, 'muted', true);
2482
2462
  }
2483
2463
 
@@ -2502,7 +2482,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2502
2482
  if(hasNative && (!data || data.isActive == 'html5') && supLoad.prop._supvalue){
2503
2483
  supLoad.prop._supvalue.apply(this, arguments);
2504
2484
  }
2505
- if(!loadTrackUi.loaded && $('track', this).length){
2485
+ if(!loadTrackUi.loaded && this.querySelector('track')){
2506
2486
  loadTrackUi();
2507
2487
  }
2508
2488
  $(this).triggerHandler('wsmediareload');
@@ -2601,4 +2581,4 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2601
2581
  webshims.ready('track', loadTrackUi);
2602
2582
  });
2603
2583
 
2604
- })(Modernizr, webshims);
2584
+ })(webshims);
@@ -338,7 +338,8 @@
338
338
 
339
339
  var mediaelement = webshims.mediaelement;
340
340
  var swfmini = window.swfmini;
341
- var hasNative = Modernizr.audio && Modernizr.video;
341
+ var support = webshims.support;
342
+ var hasNative = support.mediaelement;
342
343
  var hasFlash = swfmini.hasFlashPlayerVersion('9.0.115');
343
344
  var loadedSwf = 0;
344
345
  var needsLoadPreload = 'ActiveXObject' in window && hasNative;
@@ -387,9 +388,11 @@
387
388
  _bufferedEnd: 0,
388
389
  _bufferedStart: 0,
389
390
  currentTime: 0,
391
+ lastCalledTime: -500,
390
392
  _ppFlag: undefined,
391
393
  _calledMeta: false,
392
- lastDuration: 0
394
+ lastDuration: 0,
395
+ _timeDif: 0.3
393
396
  }, getProps, getSetProps);
394
397
 
395
398
 
@@ -400,7 +403,7 @@
400
403
  return null;
401
404
  }
402
405
  var data = webshims.data(elem, 'mediaelement');
403
- return (data && data.isActive== 'third') ? data : null;
406
+ return (data && data.isActive == 'third') ? data : null;
404
407
  };
405
408
 
406
409
  var trigger = function(elem, evt){
@@ -531,6 +534,14 @@
531
534
  if(!data._calledMeta){
532
535
  trigger(data._elem, 'loadedmetadata');
533
536
  }
537
+
538
+ if(data.duration > 1 && data.duration < 140){
539
+ data._timeDif = 0.2;
540
+ } else if(data.duration < 600) {
541
+ data._timeDif = 0.25;
542
+ } else {
543
+ data._timeDif = 0.30;
544
+ }
534
545
  }
535
546
  data._calledMeta = true;
536
547
  },
@@ -542,6 +553,7 @@
542
553
  trigger(data._elem, 'waiting');
543
554
  },
544
555
  onTimeUpdate: function(jaris, data){
556
+ var timeDif = data.currentTime - data.lastCalledTime;
545
557
  if(data.ended){
546
558
  data.ended = false;
547
559
  }
@@ -552,7 +564,12 @@
552
564
  if(data.seeking){
553
565
  callSeeked(data);
554
566
  }
555
- trigger(data._elem, 'timeupdate');
567
+
568
+ if(timeDif > data._timeDif || timeDif < -0.3){
569
+ data.lastCalledTime = data.currentTime;
570
+ $.event.trigger('timeupdate', undefined, data._elem, true);
571
+ }
572
+
556
573
  },
557
574
  onProgress: function(jaris, data){
558
575
  if(data.ended){
@@ -562,10 +579,12 @@
562
579
  return;
563
580
  }
564
581
  var percentage = jaris.loaded / jaris.total;
582
+
565
583
  if(percentage > 0.02 && percentage < 0.2){
566
584
  setReadyState(3, data);
567
585
  } else if(percentage > 0.2){
568
- if(percentage > 0.99){
586
+ if(percentage > 0.95){
587
+ percentage = 1;
569
588
  data.networkState = 1;
570
589
  }
571
590
  setReadyState(4, data);
@@ -707,7 +726,7 @@
707
726
  play: 1,
708
727
  playing: 1
709
728
  };
710
- var hideEvtArray = ['play', 'pause', 'playing', 'canplay', 'progress', 'waiting', 'ended', 'loadedmetadata', 'durationchange', 'emptied'];
729
+ var hideEvtArray = ['play', 'pause', 'playing', 'loadstart', 'canplay', 'progress', 'waiting', 'ended', 'loadedmetadata', 'durationchange', 'emptied'];
711
730
  var hidevents = hideEvtArray.map(function(evt){
712
731
  return evt +'.webshimspolyfill';
713
732
  }).join(' ');
@@ -767,7 +786,7 @@
767
786
 
768
787
 
769
788
  var resetSwfProps = (function(){
770
- var resetProtoProps = ['_calledMeta', 'lastDuration', '_bufferedEnd', '_bufferedStart', '_ppFlag', 'currentSrc', 'currentTime', 'duration', 'ended', 'networkState', 'paused', 'seeking', 'videoHeight', 'videoWidth'];
789
+ var resetProtoProps = ['_calledMeta', 'lastDuration', '_bufferedEnd', 'lastCalledTime', '_bufferedStart', '_ppFlag', 'currentSrc', 'currentTime', 'duration', 'ended', 'networkState', 'paused', 'seeking', 'videoHeight', 'videoWidth'];
771
790
  var len = resetProtoProps.length;
772
791
  return function(data){
773
792
 
@@ -887,7 +906,7 @@
887
906
  ret.height = ret.width / ratio;
888
907
 
889
908
  }
890
- if(!Modernizr.video){
909
+ if(!webshims.support.mediaelement){
891
910
  ret.width = data.shadowElem.width();
892
911
  ret.height = data.shadowElem.height();
893
912
  }
@@ -1026,7 +1045,7 @@
1026
1045
  if(data && data.swfCreated){
1027
1046
  mediaelement.setActive(elem, 'third', data);
1028
1047
 
1029
- data.currentSrc = canPlaySrc.srcProp;
1048
+ data.currentSrc = '';
1030
1049
 
1031
1050
  data.shadowElem.html('<div id="'+ elemId +'">');
1032
1051
 
@@ -1034,6 +1053,8 @@
1034
1053
  data.actionQueue = [];
1035
1054
  box = data.shadowElem;
1036
1055
  resetSwfProps(data);
1056
+ data.currentSrc = canPlaySrc.srcProp;
1057
+
1037
1058
  } else {
1038
1059
  $(document.getElementById('wrapper-'+ elemId )).remove();
1039
1060
  box = $('<div class="polyfill-'+ (elemNodeName) +' polyfill-mediaelement '+ webshims.shadowClass +'" id="wrapper-'+ elemId +'"><div id="'+ elemId +'"></div>')
@@ -1144,7 +1165,7 @@
1144
1165
  }
1145
1166
  } else {
1146
1167
  data.currentTime = jaris.position;
1147
-
1168
+
1148
1169
  if(data.api){
1149
1170
  if(!data._calledMeta && isNaN(jaris.duration) && data.duration != jaris.duration && isNaN(data.duration)){
1150
1171
  onEvent.onDataInitialized(jaris, data);
@@ -1219,7 +1240,8 @@
1219
1240
  }
1220
1241
  }
1221
1242
  });
1222
-
1243
+
1244
+ trigger(data._elem, 'loadstart');
1223
1245
  };
1224
1246
 
1225
1247
 
@@ -1387,7 +1409,7 @@
1387
1409
 
1388
1410
  mediaSup = webshims.defineNodeNameProperties(nodeName, descs, 'prop');
1389
1411
 
1390
- if(!Modernizr.mediaDefaultMuted){
1412
+ if(!support.mediaDefaultMuted){
1391
1413
  webshims.defineNodeNameProperties(nodeName, {
1392
1414
  defaultMuted: {
1393
1415
  get: function(){
@@ -1426,10 +1448,10 @@
1426
1448
  if(elems && (len = elems.length) && loadedSwf){
1427
1449
 
1428
1450
  for(i = 0; i < len; i++){
1429
- if(flashNames[elems[i].nodeName] && 'api_pause' in elems[i]){
1451
+ if(flashNames[elems[i].nodeName] && 'api_destroy' in elems[i]){
1430
1452
  loadedSwf--;
1431
1453
  try {
1432
- elems[i].api_pause();
1454
+ elems[i].api_destroy();
1433
1455
  if(elems[i].readyState == 4){
1434
1456
  for (prop in elems[i]) {
1435
1457
  if (!noRemove[prop] && !objElem[prop] && typeof elems[i][prop] == "function") {
@@ -1437,7 +1459,7 @@
1437
1459
  }
1438
1460
  }
1439
1461
  }
1440
- } catch(er){}
1462
+ } catch(er){console.log(er);}
1441
1463
  }
1442
1464
  }
1443
1465
 
@@ -1564,7 +1586,8 @@
1564
1586
  //descriptions are not really shown, but they are inserted into the dom
1565
1587
  var showTracks = {subtitles: 1, captions: 1, descriptions: 1};
1566
1588
  var dummyTrack = $('<track />');
1567
- var supportTrackMod = Modernizr.ES5 && Modernizr.objectAccessor;
1589
+ var support = webshims.support;
1590
+ var supportTrackMod = support.ES5 && support.objectAccessor;
1568
1591
  var createEventTarget = function(obj){
1569
1592
  var eventList = {};
1570
1593
  obj.addEventListener = function(name, fn){
@@ -1873,19 +1896,23 @@
1873
1896
  ttml = $.parseXML(ttml) || [];
1874
1897
  return $(ttml).find('[begin][end]').map(mapTtmlToVtt).get().join('\n\n') || '';
1875
1898
  };
1876
-
1899
+ var loadingTracks = 0;
1900
+
1877
1901
  mediaelement.loadTextTrack = function(mediaelem, track, trackData, _default){
1878
- var loadEvents = 'play playing';
1902
+ var loadEvents = 'play playing loadedmetadata loadstart';
1879
1903
  var obj = trackData.track;
1880
1904
  var load = function(){
1881
1905
  var error, ajax, createAjax;
1882
- var src = obj.mode != 'disabled' && ($.attr(track, 'src') && $.prop(track, 'src'));
1906
+ var isDisabled = obj.mode == 'disabled';
1907
+ var videoState = !!($.prop(mediaelem, 'readyState') > 0 || $.prop(mediaelem, 'networkState') == 2 || !$.prop(mediaelem, 'paused'));
1908
+ var src = (!isDisabled || videoState) && ($.attr(track, 'src') && $.prop(track, 'src'));
1883
1909
 
1884
1910
  if(src){
1885
1911
  $(mediaelem).off(loadEvents, load).off('updatetrackdisplay', load);
1886
1912
 
1887
1913
  if(!trackData.readyState){
1888
1914
  error = function(){
1915
+ loadingTracks--;
1889
1916
  trackData.readyState = 3;
1890
1917
  obj.cues = null;
1891
1918
  obj.activeCues = obj.shimActiveCues = obj._shimActiveCues = null;
@@ -1895,12 +1922,14 @@
1895
1922
  try {
1896
1923
  obj.cues = mediaelement.createCueList();
1897
1924
  obj.activeCues = obj.shimActiveCues = obj._shimActiveCues = mediaelement.createCueList();
1925
+ loadingTracks++;
1898
1926
  createAjax = function(){
1899
1927
  ajax = $.ajax({
1900
1928
  dataType: 'text',
1901
1929
  url: src,
1902
1930
  success: function(text){
1903
- var contentType = ajax.getResponseHeader('content-type');
1931
+ loadingTracks--;
1932
+ var contentType = ajax.getResponseHeader('content-type') || '';
1904
1933
 
1905
1934
  if(!contentType.indexOf('application/xml')){
1906
1935
  text = ttmlTextToVTT(text);
@@ -1916,13 +1945,16 @@
1916
1945
  error();
1917
1946
  }
1918
1947
  });
1919
-
1920
1948
  },
1921
1949
  error: error
1922
1950
  });
1923
1951
  };
1924
1952
  if($.ajax && $.ajaxSettings.xhr){
1925
- createAjax();
1953
+ if(isDisabled){
1954
+ setTimeout(createAjax, loadingTracks * 2);
1955
+ } else {
1956
+ createAjax();
1957
+ }
1926
1958
  } else {
1927
1959
  webshims.ready('jajax', createAjax);
1928
1960
  webshims.loader.loadList(['jajax']);
@@ -1941,13 +1973,12 @@
1941
1973
  obj.cues = null;
1942
1974
 
1943
1975
  $(mediaelem).on(loadEvents, load);
1976
+
1944
1977
  if(_default){
1945
1978
  obj.mode = showTracks[obj.kind] ? 'showing' : 'hidden';
1946
- webshims.ready('WINDOWLOAD', load);
1979
+ load();
1947
1980
  } else {
1948
- webshims.ready('WINDOWLOAD', function(){
1949
- $(mediaelem).on('updatetrackdisplay', load);
1950
- });
1981
+ $(mediaelem).on('updatetrackdisplay', load);
1951
1982
  }
1952
1983
  };
1953
1984
 
@@ -2219,7 +2250,7 @@ modified for webshims
2219
2250
  return baseData.textTracks;
2220
2251
  };
2221
2252
 
2222
- if(!Modernizr.track){
2253
+ if(!support.track){
2223
2254
  webshims.defineNodeNamesBooleanProperty(['track'], 'default');
2224
2255
  webshims.reflectProperties(['track'], ['srclang', 'label']);
2225
2256
 
@@ -2234,7 +2265,7 @@ modified for webshims
2234
2265
 
2235
2266
  webshims.defineNodeNameProperties('track', {
2236
2267
  kind: {
2237
- attr: Modernizr.track ? {
2268
+ attr: support.track ? {
2238
2269
  set: function(value){
2239
2270
  var trackData = webshims.data(this, 'trackData');
2240
2271
  this.setAttribute('data-kind', value);
@@ -2289,7 +2320,6 @@ modified for webshims
2289
2320
  });
2290
2321
 
2291
2322
  //
2292
-
2293
2323
  webshims.defineNodeNamesProperties(['track'], {
2294
2324
  ERROR: {
2295
2325
  value: 3
@@ -2399,7 +2429,7 @@ modified for webshims
2399
2429
  })
2400
2430
  .on('emptied updatetracklist wsmediareload', thUpdateList)
2401
2431
  .each(function(){
2402
- if(Modernizr.track){
2432
+ if(support.track){
2403
2433
  var shimedTextTracks = $.prop(this, 'textTracks');
2404
2434
  var origTextTracks = this.textTracks;
2405
2435
 
@@ -2424,7 +2454,7 @@ modified for webshims
2424
2454
  });
2425
2455
  });
2426
2456
 
2427
- if(Modernizr.texttrackapi){
2457
+ if(support.texttrackapi){
2428
2458
  $('video, audio').trigger('trackapichange');
2429
2459
  }
2430
2460
  });
@@ -153,7 +153,8 @@ webshims.register('details', function($, webshims, window, doc, undefined, optio
153
153
  //descriptions are not really shown, but they are inserted into the dom
154
154
  var showTracks = {subtitles: 1, captions: 1, descriptions: 1};
155
155
  var dummyTrack = $('<track />');
156
- var supportTrackMod = Modernizr.ES5 && Modernizr.objectAccessor;
156
+ var support = webshims.support;
157
+ var supportTrackMod = support.ES5 && support.objectAccessor;
157
158
  var createEventTarget = function(obj){
158
159
  var eventList = {};
159
160
  obj.addEventListener = function(name, fn){
@@ -462,19 +463,23 @@ webshims.register('details', function($, webshims, window, doc, undefined, optio
462
463
  ttml = $.parseXML(ttml) || [];
463
464
  return $(ttml).find('[begin][end]').map(mapTtmlToVtt).get().join('\n\n') || '';
464
465
  };
465
-
466
+ var loadingTracks = 0;
467
+
466
468
  mediaelement.loadTextTrack = function(mediaelem, track, trackData, _default){
467
- var loadEvents = 'play playing';
469
+ var loadEvents = 'play playing loadedmetadata loadstart';
468
470
  var obj = trackData.track;
469
471
  var load = function(){
470
472
  var error, ajax, createAjax;
471
- var src = obj.mode != 'disabled' && ($.attr(track, 'src') && $.prop(track, 'src'));
473
+ var isDisabled = obj.mode == 'disabled';
474
+ var videoState = !!($.prop(mediaelem, 'readyState') > 0 || $.prop(mediaelem, 'networkState') == 2 || !$.prop(mediaelem, 'paused'));
475
+ var src = (!isDisabled || videoState) && ($.attr(track, 'src') && $.prop(track, 'src'));
472
476
 
473
477
  if(src){
474
478
  $(mediaelem).off(loadEvents, load).off('updatetrackdisplay', load);
475
479
 
476
480
  if(!trackData.readyState){
477
481
  error = function(){
482
+ loadingTracks--;
478
483
  trackData.readyState = 3;
479
484
  obj.cues = null;
480
485
  obj.activeCues = obj.shimActiveCues = obj._shimActiveCues = null;
@@ -484,12 +489,14 @@ webshims.register('details', function($, webshims, window, doc, undefined, optio
484
489
  try {
485
490
  obj.cues = mediaelement.createCueList();
486
491
  obj.activeCues = obj.shimActiveCues = obj._shimActiveCues = mediaelement.createCueList();
492
+ loadingTracks++;
487
493
  createAjax = function(){
488
494
  ajax = $.ajax({
489
495
  dataType: 'text',
490
496
  url: src,
491
497
  success: function(text){
492
- var contentType = ajax.getResponseHeader('content-type');
498
+ loadingTracks--;
499
+ var contentType = ajax.getResponseHeader('content-type') || '';
493
500
 
494
501
  if(!contentType.indexOf('application/xml')){
495
502
  text = ttmlTextToVTT(text);
@@ -505,13 +512,16 @@ webshims.register('details', function($, webshims, window, doc, undefined, optio
505
512
  error();
506
513
  }
507
514
  });
508
-
509
515
  },
510
516
  error: error
511
517
  });
512
518
  };
513
519
  if($.ajax && $.ajaxSettings.xhr){
514
- createAjax();
520
+ if(isDisabled){
521
+ setTimeout(createAjax, loadingTracks * 2);
522
+ } else {
523
+ createAjax();
524
+ }
515
525
  } else {
516
526
  webshims.ready('jajax', createAjax);
517
527
  webshims.loader.loadList(['jajax']);
@@ -530,13 +540,12 @@ webshims.register('details', function($, webshims, window, doc, undefined, optio
530
540
  obj.cues = null;
531
541
 
532
542
  $(mediaelem).on(loadEvents, load);
543
+
533
544
  if(_default){
534
545
  obj.mode = showTracks[obj.kind] ? 'showing' : 'hidden';
535
- webshims.ready('WINDOWLOAD', load);
546
+ load();
536
547
  } else {
537
- webshims.ready('WINDOWLOAD', function(){
538
- $(mediaelem).on('updatetrackdisplay', load);
539
- });
548
+ $(mediaelem).on('updatetrackdisplay', load);
540
549
  }
541
550
  };
542
551
 
@@ -808,7 +817,7 @@ modified for webshims
808
817
  return baseData.textTracks;
809
818
  };
810
819
 
811
- if(!Modernizr.track){
820
+ if(!support.track){
812
821
  webshims.defineNodeNamesBooleanProperty(['track'], 'default');
813
822
  webshims.reflectProperties(['track'], ['srclang', 'label']);
814
823
 
@@ -823,7 +832,7 @@ modified for webshims
823
832
 
824
833
  webshims.defineNodeNameProperties('track', {
825
834
  kind: {
826
- attr: Modernizr.track ? {
835
+ attr: support.track ? {
827
836
  set: function(value){
828
837
  var trackData = webshims.data(this, 'trackData');
829
838
  this.setAttribute('data-kind', value);
@@ -878,7 +887,6 @@ modified for webshims
878
887
  });
879
888
 
880
889
  //
881
-
882
890
  webshims.defineNodeNamesProperties(['track'], {
883
891
  ERROR: {
884
892
  value: 3
@@ -988,7 +996,7 @@ modified for webshims
988
996
  })
989
997
  .on('emptied updatetracklist wsmediareload', thUpdateList)
990
998
  .each(function(){
991
- if(Modernizr.track){
999
+ if(support.track){
992
1000
  var shimedTextTracks = $.prop(this, 'textTracks');
993
1001
  var origTextTracks = this.textTracks;
994
1002
 
@@ -1013,7 +1021,7 @@ modified for webshims
1013
1021
  });
1014
1022
  });
1015
1023
 
1016
- if(Modernizr.texttrackapi){
1024
+ if(support.texttrackapi){
1017
1025
  $('video, audio').trigger('trackapichange');
1018
1026
  }
1019
1027
  });