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
@@ -5,9 +5,9 @@ webshims.register('mediacontrols', function($, webshims, window){
5
5
  var options = webshims.cfg.mediaelement.jme;
6
6
  var baseSelector = options.selector;
7
7
  var jme = $.jme;
8
- var unknowStructure = '<div class="{%class%}"></div>'
8
+ var unknownStructure = '<div class="{%class%}"></div>';
9
9
  var btnStructure = '<button class="{%class%}" type="button" aria-label="{%text%}"></button>';
10
- var slideStructure = '<div class="{%class%} media-range"></div>';
10
+ var slideStructure = '<div class="{%class%} media-range" aria-label="{%text%}"></div>';
11
11
  var timeStructure = '<div class="{%class%}">00:00</div>';
12
12
 
13
13
  var noVolumeClass = (function(){
@@ -39,7 +39,7 @@ webshims.register('mediacontrols', function($, webshims, window){
39
39
  if(plugin){
40
40
  if(!plugin.structure){
41
41
  webshims.warn('no structure option provided for plugin: '+ matchName +'. Fallback to standard div');
42
- plugin.structure = unknowStructure;
42
+ plugin.structure = unknownStructure;
43
43
  }
44
44
  return plugin.structure.replace('{%class%}', matchName).replace('{%text%}', plugin.text || '');
45
45
  }
@@ -144,18 +144,55 @@ webshims.register('mediacontrols', function($, webshims, window){
144
144
  }
145
145
  };
146
146
  })();
147
+ var $poster = $('<div class="ws-poster" />').insertAfter(data.media);
147
148
  var posterState = (function(){
148
- var lastPosterState, lastYoutubeState;
149
+ var lastPosterState, lastYoutubeState, lastPoster;
149
150
  var hasFlash = window.swfmini && swfmini.hasFlashPlayerVersion('10.0.3');
150
151
  var regYt = /youtube\.com\/[watch\?|v\/]+/i;
152
+
153
+ var isInitial = data.media.prop('paused');
154
+ if(isInitial){
155
+ data.player.addClass('initial-state');
156
+ }
157
+ if(!('backgroundSize' in $poster[0].style)){
158
+ data.player.addClass('no-backgroundsize');
159
+ }
160
+ data.media.on('playing waiting seeked seeking', function(){
161
+ if(isInitial){
162
+ isInitial = false;
163
+ data.player.removeClass('initial-state');
164
+ }
165
+ });
151
166
  return function(){
152
- var hasPoster = !!data.media.attr('poster');
153
- var hasYt = (hasFlash && hasPoster) ? false : regYt.test(data.media.prop('currentSrc') || '');
167
+ var poster = data.media.attr('poster');
168
+ var hasPoster = !!poster;
169
+ var currentSrc = data.media.prop('currentSrc') || '';
170
+ var isYt = regYt.test(currentSrc);
171
+ var hasYt = (hasFlash && hasPoster) ? false : isYt;
172
+
173
+ if(!hasPoster && isYt){
174
+ poster = currentSrc.match(/(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/ ]{11})/i) || '';
175
+ if(poster){
176
+ poster = 'https://img.youtube.com/vi/'+ poster[1] +'/0.jpg';
177
+ hasPoster = !!poster;
178
+ }
179
+ }
180
+
181
+ if(lastPoster !== poster){
182
+ lastPoster = poster;
183
+ $poster[0].style.backgroundImage = poster ? 'url('+poster+')' : '';
184
+ }
185
+
154
186
  if(lastPosterState !== hasPoster){
155
187
  lastPosterState = hasPoster;
156
188
  data.player[hasPoster ? 'removeClass' : 'addClass']('no-poster');
157
189
  }
158
190
 
191
+ if(data.media.prop('paused')){
192
+ data.player.addClass('initial-state');
193
+ isInitial = true;
194
+ }
195
+
159
196
  if(lastYoutubeState !== hasYt){
160
197
  lastYoutubeState = hasYt;
161
198
  data.player[hasYt ? 'addClass' : 'removeClass']('has-ytposter');
@@ -166,13 +203,15 @@ webshims.register('mediacontrols', function($, webshims, window){
166
203
 
167
204
  userActivity._create(data.player, data.media, data.player);
168
205
 
169
- data.media.on('emptied', posterState);
206
+ data.media.on('emptied loadstart', function(){
207
+ setTimeout(posterState);
208
+ });
170
209
 
171
210
  playerSize();
172
211
  posterState();
173
212
  webshims.ready('dom-support', function(){
174
213
  data.player.onWSOff('updateshadowdom', playerSize);
175
- controls.add(data._controlbar).addClass(webshims.shadowClass);
214
+ controls.add(data._controlbar).add($poster).addClass(webshims.shadowClass);
176
215
  webshims.addShadowDom();
177
216
  });
178
217
  }
@@ -205,7 +244,7 @@ webshims.register('mediacontrols', function($, webshims, window){
205
244
 
206
245
  jme.registerPlugin('volume-slider', {
207
246
  structure: slideStructure,
208
-
247
+ text: 'volume level',
209
248
  _create: lazyLoadPlugin()
210
249
  });
211
250
 
@@ -215,6 +254,7 @@ webshims.register('mediacontrols', function($, webshims, window){
215
254
  options: {
216
255
  format: ['mm', 'ss']
217
256
  },
257
+ text: 'time position',
218
258
  _create: lazyLoadPlugin()
219
259
  });
220
260
 
@@ -289,12 +329,18 @@ webshims.register('mediacontrols', function($, webshims, window){
289
329
  _create: lazyLoadPlugin()
290
330
  });
291
331
 
332
+ jme.registerPlugin('mediaconfigmenu', {
333
+ structure: btnStructure,
334
+ text: 'configuration',
335
+ _create: lazyLoadPlugin()
336
+ });
337
+
292
338
 
293
339
  jme.registerPlugin('captions', {
294
340
  structure: btnStructure,
295
341
  text: 'subtitles',
296
342
  _create: function(control, media, base){
297
- var trackElems = media.find('track');
343
+ var trackElems = media.find('track').filter(':not([kind]), [kind="subtitles"], [data-kind="subtitles"], [kind="captions"], [data-kind="captions"]');
298
344
  control.wsclonedcheckbox = $(control).clone().attr({role: 'checkbox'}).insertBefore(control);
299
345
  base.attr('data-tracks', trackElems.length > 1 ? 'many' : trackElems.length);
300
346
  control.attr('aria-haspopup', 'true');
@@ -302,9 +348,26 @@ webshims.register('mediacontrols', function($, webshims, window){
302
348
  }
303
349
  });
304
350
 
351
+
352
+ jme.registerPlugin('chapters', {
353
+ structure: btnStructure,
354
+ text: 'chapters',
355
+ _create: function(control, media, base){
356
+ var trackElems = media.find('track').filter('[kind="chapters"], [data-kind="chapters"]');
357
+ control.attr('aria-haspopup', 'true');
358
+ if(trackElems.length){
359
+ webshims._polyfill(['track']);
360
+ base.addClass('has-chapter-tracks');
361
+ }
362
+ lazyLoadPlugin().apply(this, arguments);
363
+ }
364
+ });
365
+
366
+
367
+
305
368
  webshims.ready(webshims.cfg.mediaelement.plugins.concat(['mediaelement', 'jme-base']), function(){
306
369
  if(!options.barTemplate){
307
- options.barTemplate = '<div class="play-pause-container">{{play-pause}}</div><div class="playlist-container"><div class="playlist-box">{{playlist-prev}}{{playlist-next}}</div></div><div class="currenttime-container">{{currenttime-display}}</div><div class="progress-container">{{time-slider}}</div><div class="duration-container">{{duration-display}}</div><div class="mute-container">{{mute-unmute}}</div><div class="volume-container">{{volume-slider}}</div><div class="subtitle-container"><div class="subtitle-controls">{{captions}}</div></div><div class="fullscreen-container">{{fullscreen}}</div>';
370
+ options.barTemplate = '<div class="play-pause-container">{{play-pause}}</div><div class="playlist-container"><div class="playlist-box"><div class="playlist-button-container">{{playlist-prev}}</div><div class="playlist-button-container">{{playlist-next}}</div></div></div><div class="currenttime-container">{{currenttime-display}}</div><div class="progress-container">{{time-slider}}</div><div class="duration-container">{{duration-display}}</div><div class="mute-container">{{mute-unmute}}</div><div class="volume-container">{{volume-slider}}</div><div class="chapters-container"><div class="chapters-controls mediamenu-wrapper">{{chapters}}</div></div><div class="subtitle-container mediamenu-wrapper"><div class="subtitle-controls">{{captions}}</div></div><div class="mediaconfig-container"><div class="mediaconfig-controls mediamenu-wrapper">{{mediaconfigmenu}}</div></div><div class="fullscreen-container">{{fullscreen}}</div>';
308
371
  }
309
372
  if(!options.barStructure){
310
373
  options.barStructure = '<div class="jme-media-overlay"></div><div class="jme-controlbar'+ noVolumeClass +'" tabindex="-1"><div class="jme-cb-box"></div></div>';
@@ -1,4 +1,4 @@
1
- webshims.ready('jme DOM', function(){
1
+ webshims.ready('jme-base DOM', function(){
2
2
  "use strict";
3
3
  var webshims = window.webshims;
4
4
  var $ = webshims.$;
@@ -385,7 +385,9 @@ webshims.ready('jme DOM', function(){
385
385
  $.each(item.tracks || [], function(i, track){
386
386
  $('<track />').attr(track).appendTo(media);
387
387
  });
388
-
388
+ if(!item.srces){
389
+ item.srces = item;
390
+ }
389
391
  media.jmeProp('srces', item.srces);
390
392
  },
391
393
  _getItem: function(item){
@@ -0,0 +1,122 @@
1
+ /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license */
2
+
3
+ window.matchMedia || (window.matchMedia = function() {
4
+ "use strict";
5
+
6
+ // For browsers that support matchMedium api such as IE 9 and webkit
7
+ var styleMedia = (window.styleMedia || window.media);
8
+
9
+ // For those that don't support matchMedium
10
+ if (!styleMedia) {
11
+ var style = document.createElement('style'),
12
+ script = document.getElementsByTagName('script')[0],
13
+ info = null;
14
+
15
+ style.type = 'text/css';
16
+ style.id = 'matchmediajs-test';
17
+
18
+ script.parentNode.insertBefore(style, script);
19
+
20
+ // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers
21
+ info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle;
22
+
23
+ styleMedia = {
24
+ matchMedium: function(media) {
25
+ var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';
26
+
27
+ // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers
28
+ if (style.styleSheet) {
29
+ style.styleSheet.cssText = text;
30
+ } else {
31
+ style.textContent = text;
32
+ }
33
+
34
+ // Test if media query is true or false
35
+ return info.width === '1px';
36
+ }
37
+ };
38
+ }
39
+
40
+ return function(media) {
41
+ return {
42
+ matches: styleMedia.matchMedium(media || 'all'),
43
+ media: media || 'all'
44
+ };
45
+ };
46
+ }());
47
+ /*! matchMedia() polyfill addListener/removeListener extension. Author & copyright (c) 2012: Scott Jehl. Dual MIT/BSD license */
48
+ (function(){
49
+ // Bail out for browsers that have addListener support
50
+ if (window.matchMedia && window.matchMedia('all').addListener) {
51
+ return false;
52
+ }
53
+
54
+ var localMatchMedia = window.matchMedia,
55
+ hasMediaQueries = localMatchMedia('only all').matches,
56
+ isListening = false,
57
+ timeoutID = 0, // setTimeout for debouncing 'handleChange'
58
+ queries = [], // Contains each 'mql' and associated 'listeners' if 'addListener' is used
59
+ handleChange = function(evt) {
60
+ // Debounce
61
+ clearTimeout(timeoutID);
62
+
63
+ timeoutID = setTimeout(function() {
64
+ for (var i = 0, il = queries.length; i < il; i++) {
65
+ var mql = queries[i].mql,
66
+ listeners = queries[i].listeners || [],
67
+ matches = localMatchMedia(mql.media).matches;
68
+
69
+ // Update mql.matches value and call listeners
70
+ // Fire listeners only if transitioning to or from matched state
71
+ if (matches !== mql.matches) {
72
+ mql.matches = matches;
73
+
74
+ for (var j = 0, jl = listeners.length; j < jl; j++) {
75
+ listeners[j].call(window, mql);
76
+ }
77
+ }
78
+ }
79
+ }, 30);
80
+ };
81
+
82
+ window.matchMedia = function(media) {
83
+ var mql = localMatchMedia(media),
84
+ listeners = [],
85
+ index = 0;
86
+
87
+ mql.addListener = function(listener) {
88
+ // Changes would not occur to css media type so return now (Affects IE <= 8)
89
+ if (!hasMediaQueries) {
90
+ return;
91
+ }
92
+
93
+ // Set up 'resize' listener for browsers that support CSS3 media queries (Not for IE <= 8)
94
+ // There should only ever be 1 resize listener running for performance
95
+ if (!isListening) {
96
+ isListening = true;
97
+ window.addEventListener('resize', handleChange, true);
98
+ }
99
+
100
+ // Push object only if it has not been pushed already
101
+ if (index === 0) {
102
+ index = queries.push({
103
+ mql : mql,
104
+ listeners : listeners
105
+ });
106
+ }
107
+
108
+ listeners.push(listener);
109
+ };
110
+
111
+ mql.removeListener = function(listener) {
112
+ for (var i = 0, il = listeners.length; i < il; i++){
113
+ if (listeners[i] === listener){
114
+ listeners.splice(i, 1);
115
+ }
116
+ }
117
+ };
118
+
119
+ return mql;
120
+ };
121
+ }());
122
+ webshim.isReady('matchMedia', true);
@@ -1,6 +1,7 @@
1
- (function(Modernizr, webshims){
1
+ (function(webshims){
2
2
  "use strict";
3
- var hasNative = Modernizr.audio && Modernizr.video;
3
+ var support = webshims.support;
4
+ var hasNative = support.mediaelement;
4
5
  var supportsLoop = false;
5
6
  var bugs = webshims.bugs;
6
7
  var swfType = 'mediaelement-jaris';
@@ -23,14 +24,14 @@
23
24
 
24
25
  if(hasNative){
25
26
  var videoElem = document.createElement('video');
26
- Modernizr.videoBuffered = ('buffered' in videoElem);
27
- Modernizr.mediaDefaultMuted = ('defaultMuted' in videoElem);
27
+ support.videoBuffered = ('buffered' in videoElem);
28
+ support.mediaDefaultMuted = ('defaultMuted' in videoElem);
28
29
  supportsLoop = ('loop' in videoElem);
29
- Modernizr.mediaLoop = supportsLoop;
30
+ support.mediaLoop = supportsLoop;
30
31
 
31
32
  webshims.capturingEvents(['play', 'playing', 'waiting', 'paused', 'ended', 'durationchange', 'loadedmetadata', 'canplay', 'volumechange']);
32
33
 
33
- if( !Modernizr.videoBuffered || !supportsLoop || (!Modernizr.mediaDefaultMuted && isIE && 'ActiveXObject' in window) ){
34
+ if( !support.videoBuffered || !supportsLoop || (!support.mediaDefaultMuted && isIE && 'ActiveXObject' in window) ){
34
35
  webshims.addPolyfill('mediaelement-native-fix', {
35
36
  d: ['dom-support']
36
37
  });
@@ -38,7 +39,7 @@
38
39
  }
39
40
  }
40
41
 
41
- if(Modernizr.track && !bugs.track){
42
+ if(support.track && !bugs.track){
42
43
  (function(){
43
44
  if(!bugs.track){
44
45
 
@@ -370,19 +371,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
370
371
  }
371
372
  }
372
373
  };
373
- var allowedPreload = {'metadata': 1, 'auto': 1, '': 1};
374
- var fixPreload = function(elem){
375
- var preload, img;
376
- if(elem.getAttribute('preload') == 'none'){
377
- if(allowedPreload[(preload = $.attr(elem, 'data-preload'))]){
378
- $.attr(elem, 'preload', preload);
379
- } else if(hasNative && (preload = elem.getAttribute('poster'))){
380
- img = document.createElement('img');
381
- img.src = preload;
382
- }
383
- }
384
- };
385
- var stopParent = /^(?:embed|object|datalist)$/i;
374
+ var stopParent = /^(?:embed|object|datalist|picture)$/i;
386
375
  var selectSource = function(elem, data){
387
376
  var baseData = webshims.data(elem, 'mediaelementBase') || webshims.data(elem, 'mediaelementBase', {});
388
377
  var _srces = mediaelement.srces(elem);
@@ -397,7 +386,6 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
397
386
  if(mediaelement.sortMedia){
398
387
  _srces.sort(mediaelement.sortMedia);
399
388
  }
400
- fixPreload(elem);
401
389
  stepSources(elem, data, _srces);
402
390
 
403
391
  };
@@ -421,7 +409,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
421
409
 
422
410
  if(webshims.implement(this, 'mediaelement')){
423
411
  selectSource(this);
424
- if(!Modernizr.mediaDefaultMuted && $.attr(this, 'muted') != null){
412
+ if(!support.mediaDefaultMuted && $.attr(this, 'muted') != null){
425
413
  $.prop(this, 'muted', true);
426
414
  }
427
415
 
@@ -446,7 +434,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
446
434
  if(hasNative && (!data || data.isActive == 'html5') && supLoad.prop._supvalue){
447
435
  supLoad.prop._supvalue.apply(this, arguments);
448
436
  }
449
- if(!loadTrackUi.loaded && $('track', this).length){
437
+ if(!loadTrackUi.loaded && this.querySelector('track')){
450
438
  loadTrackUi();
451
439
  }
452
440
  $(this).triggerHandler('wsmediareload');
@@ -545,4 +533,4 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
545
533
  webshims.ready('track', loadTrackUi);
546
534
  });
547
535
 
548
- })(Modernizr, webshims);
536
+ })(webshims);
@@ -3,7 +3,7 @@
3
3
  if(!window.console){return;}
4
4
  var mediaelement = webshim.mediaelement;
5
5
  var hasFlash = swfmini.hasFlashPlayerVersion('10.0.3');
6
- var hasNative = Modernizr.video;
6
+ var hasNative = webshim.support.mediaelement;
7
7
  var url = location.protocol+'//'+location.hostname;
8
8
  var tests = {
9
9
  urlInValid: {
@@ -3,7 +3,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
3
3
 
4
4
  var mediaelement = webshims.mediaelement;
5
5
  var swfmini = window.swfmini;
6
- var hasNative = Modernizr.audio && Modernizr.video;
6
+ var support = webshims.support;
7
+ var hasNative = support.mediaelement;
7
8
  var hasFlash = swfmini.hasFlashPlayerVersion('9.0.115');
8
9
  var loadedSwf = 0;
9
10
  var needsLoadPreload = 'ActiveXObject' in window && hasNative;
@@ -52,9 +53,11 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
52
53
  _bufferedEnd: 0,
53
54
  _bufferedStart: 0,
54
55
  currentTime: 0,
56
+ lastCalledTime: -500,
55
57
  _ppFlag: undefined,
56
58
  _calledMeta: false,
57
- lastDuration: 0
59
+ lastDuration: 0,
60
+ _timeDif: 0.3
58
61
  }, getProps, getSetProps);
59
62
 
60
63
 
@@ -65,7 +68,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
65
68
  return null;
66
69
  }
67
70
  var data = webshims.data(elem, 'mediaelement');
68
- return (data && data.isActive== 'third') ? data : null;
71
+ return (data && data.isActive == 'third') ? data : null;
69
72
  };
70
73
 
71
74
  var trigger = function(elem, evt){
@@ -196,6 +199,14 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
196
199
  if(!data._calledMeta){
197
200
  trigger(data._elem, 'loadedmetadata');
198
201
  }
202
+
203
+ if(data.duration > 1 && data.duration < 140){
204
+ data._timeDif = 0.2;
205
+ } else if(data.duration < 600) {
206
+ data._timeDif = 0.25;
207
+ } else {
208
+ data._timeDif = 0.30;
209
+ }
199
210
  }
200
211
  data._calledMeta = true;
201
212
  },
@@ -207,6 +218,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
207
218
  trigger(data._elem, 'waiting');
208
219
  },
209
220
  onTimeUpdate: function(jaris, data){
221
+ var timeDif = data.currentTime - data.lastCalledTime;
210
222
  if(data.ended){
211
223
  data.ended = false;
212
224
  }
@@ -217,7 +229,12 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
217
229
  if(data.seeking){
218
230
  callSeeked(data);
219
231
  }
220
- trigger(data._elem, 'timeupdate');
232
+
233
+ if(timeDif > data._timeDif || timeDif < -0.3){
234
+ data.lastCalledTime = data.currentTime;
235
+ $.event.trigger('timeupdate', undefined, data._elem, true);
236
+ }
237
+
221
238
  },
222
239
  onProgress: function(jaris, data){
223
240
  if(data.ended){
@@ -227,10 +244,12 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
227
244
  return;
228
245
  }
229
246
  var percentage = jaris.loaded / jaris.total;
247
+
230
248
  if(percentage > 0.02 && percentage < 0.2){
231
249
  setReadyState(3, data);
232
250
  } else if(percentage > 0.2){
233
- if(percentage > 0.99){
251
+ if(percentage > 0.95){
252
+ percentage = 1;
234
253
  data.networkState = 1;
235
254
  }
236
255
  setReadyState(4, data);
@@ -372,7 +391,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
372
391
  play: 1,
373
392
  playing: 1
374
393
  };
375
- var hideEvtArray = ['play', 'pause', 'playing', 'canplay', 'progress', 'waiting', 'ended', 'loadedmetadata', 'durationchange', 'emptied'];
394
+ var hideEvtArray = ['play', 'pause', 'playing', 'loadstart', 'canplay', 'progress', 'waiting', 'ended', 'loadedmetadata', 'durationchange', 'emptied'];
376
395
  var hidevents = hideEvtArray.map(function(evt){
377
396
  return evt +'.webshimspolyfill';
378
397
  }).join(' ');
@@ -432,7 +451,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
432
451
 
433
452
 
434
453
  var resetSwfProps = (function(){
435
- var resetProtoProps = ['_calledMeta', 'lastDuration', '_bufferedEnd', '_bufferedStart', '_ppFlag', 'currentSrc', 'currentTime', 'duration', 'ended', 'networkState', 'paused', 'seeking', 'videoHeight', 'videoWidth'];
454
+ var resetProtoProps = ['_calledMeta', 'lastDuration', '_bufferedEnd', 'lastCalledTime', '_bufferedStart', '_ppFlag', 'currentSrc', 'currentTime', 'duration', 'ended', 'networkState', 'paused', 'seeking', 'videoHeight', 'videoWidth'];
436
455
  var len = resetProtoProps.length;
437
456
  return function(data){
438
457
 
@@ -552,7 +571,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
552
571
  ret.height = ret.width / ratio;
553
572
 
554
573
  }
555
- if(!Modernizr.video){
574
+ if(!webshims.support.mediaelement){
556
575
  ret.width = data.shadowElem.width();
557
576
  ret.height = data.shadowElem.height();
558
577
  }
@@ -691,7 +710,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
691
710
  if(data && data.swfCreated){
692
711
  mediaelement.setActive(elem, 'third', data);
693
712
 
694
- data.currentSrc = canPlaySrc.srcProp;
713
+ data.currentSrc = '';
695
714
 
696
715
  data.shadowElem.html('<div id="'+ elemId +'">');
697
716
 
@@ -699,6 +718,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
699
718
  data.actionQueue = [];
700
719
  box = data.shadowElem;
701
720
  resetSwfProps(data);
721
+ data.currentSrc = canPlaySrc.srcProp;
722
+
702
723
  } else {
703
724
  $(document.getElementById('wrapper-'+ elemId )).remove();
704
725
  box = $('<div class="polyfill-'+ (elemNodeName) +' polyfill-mediaelement '+ webshims.shadowClass +'" id="wrapper-'+ elemId +'"><div id="'+ elemId +'"></div>')
@@ -809,7 +830,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
809
830
  }
810
831
  } else {
811
832
  data.currentTime = jaris.position;
812
-
833
+
813
834
  if(data.api){
814
835
  if(!data._calledMeta && isNaN(jaris.duration) && data.duration != jaris.duration && isNaN(data.duration)){
815
836
  onEvent.onDataInitialized(jaris, data);
@@ -884,7 +905,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
884
905
  }
885
906
  }
886
907
  });
887
-
908
+
909
+ trigger(data._elem, 'loadstart');
888
910
  };
889
911
 
890
912
 
@@ -1052,7 +1074,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
1052
1074
 
1053
1075
  mediaSup = webshims.defineNodeNameProperties(nodeName, descs, 'prop');
1054
1076
 
1055
- if(!Modernizr.mediaDefaultMuted){
1077
+ if(!support.mediaDefaultMuted){
1056
1078
  webshims.defineNodeNameProperties(nodeName, {
1057
1079
  defaultMuted: {
1058
1080
  get: function(){
@@ -1091,10 +1113,10 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
1091
1113
  if(elems && (len = elems.length) && loadedSwf){
1092
1114
 
1093
1115
  for(i = 0; i < len; i++){
1094
- if(flashNames[elems[i].nodeName] && 'api_pause' in elems[i]){
1116
+ if(flashNames[elems[i].nodeName] && 'api_destroy' in elems[i]){
1095
1117
  loadedSwf--;
1096
1118
  try {
1097
- elems[i].api_pause();
1119
+ elems[i].api_destroy();
1098
1120
  if(elems[i].readyState == 4){
1099
1121
  for (prop in elems[i]) {
1100
1122
  if (!noRemove[prop] && !objElem[prop] && typeof elems[i][prop] == "function") {
@@ -1102,7 +1124,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
1102
1124
  }
1103
1125
  }
1104
1126
  }
1105
- } catch(er){}
1127
+ } catch(er){console.log(er);}
1106
1128
  }
1107
1129
  }
1108
1130
 
@@ -1,8 +1,8 @@
1
1
  webshims.register('mediaelement-native-fix', function($, webshims, window, document, undefined){
2
2
 
3
-
3
+ var support = webshims.support;
4
4
  var fixBuffered = (function(){
5
- if(Modernizr.videoBuffered){return $.noop;}
5
+ if(support.videoBuffered){return $.noop;}
6
6
 
7
7
  var getBufferedData = function(elem){
8
8
  var data = webshims.data(elem, 'mediaelementBuffered');
@@ -102,7 +102,7 @@ webshims.register('mediaelement-native-fix', function($, webshims, window, docum
102
102
  })();
103
103
 
104
104
  var fixProgressEvent = (function(){
105
- if(Modernizr.mediaDefaultMuted){return $.noop;}
105
+ if(support.mediaDefaultMuted){return $.noop;}
106
106
 
107
107
 
108
108
  return function(){
@@ -183,10 +183,6 @@ var getComputedDimension = (function(){
183
183
  ret.height = ret.width / ratio;
184
184
 
185
185
  }
186
- if(!Modernizr.video){
187
- ret.width = data.shadowElem.width();
188
- ret.height = data.shadowElem.height();
189
- }
190
186
  }
191
187
  }
192
188
  return ret;
@@ -277,7 +273,7 @@ var addMediaToStopEvents = $.noop;
277
273
  play: 1,
278
274
  playing: 1
279
275
  };
280
- var hideEvtArray = ['play', 'pause', 'playing', 'canplay', 'progress', 'waiting', 'ended', 'loadedmetadata', 'durationchange', 'emptied'];
276
+ var hideEvtArray = ['play', 'pause', 'playing', 'canplay', 'progress', 'waiting', 'ended', 'loadedmetadata', 'loadstart', 'durationchange', 'emptied'];
281
277
  var hidevents = hideEvtArray.map(function(evt){
282
278
  return evt +'.webshimspolyfill';
283
279
  }).join(' ');
@@ -581,6 +577,7 @@ mediaelement.createSWF = function(mediaElem, src, data){
581
577
 
582
578
  if(data){
583
579
  mediaelement.setActive(mediaElem, 'third', data);
580
+ data.currentSrc = '';
584
581
  resetSwfProps(data);
585
582
  data.currentSrc = src.srcProp;
586
583
  if(hasControls != data._hasControls){
@@ -594,6 +591,7 @@ mediaelement.createSWF = function(mediaElem, src, data){
594
591
  });
595
592
  }
596
593
  data._hasControls = hasControls;
594
+ trigger(data._elem, 'loadstart');
597
595
  return;
598
596
  }
599
597
 
@@ -658,6 +656,7 @@ mediaelement.createSWF = function(mediaElem, src, data){
658
656
  .on('updatemediaelementdimensions loadedmetadata emptied', setDimension)
659
657
  .onWSOff('updateshadowdom', setDimension)
660
658
  ;
659
+ trigger(data._elem, 'loadstart');
661
660
  };
662
661
 
663
662
  (function(){