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.
- checksums.yaml +4 -4
- data/lib/webshims-rails/version.rb +2 -2
- data/vendor/assets/javascripts/webshims/extras/modernizr-custom.js +4 -0
- data/vendor/assets/javascripts/webshims/polyfiller.js +141 -139
- data/vendor/assets/javascripts/webshims/shims/color-picker.js +1 -3
- data/vendor/assets/javascripts/webshims/shims/combos/1.js +22 -33
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +76 -73
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +73 -61
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +37 -41
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +36 -40
- data/vendor/assets/javascripts/webshims/shims/combos/14.js +7 -7
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +23 -32
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +36 -57
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +73 -61
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +611 -4604
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +27 -47
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +61 -31
- data/vendor/assets/javascripts/webshims/shims/combos/22.js +24 -16
- data/vendor/assets/javascripts/webshims/shims/combos/23.js +13 -25
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +40 -27
- data/vendor/assets/javascripts/webshims/shims/combos/27.js +167 -166
- data/vendor/assets/javascripts/webshims/shims/combos/28.js +11 -12
- data/vendor/assets/javascripts/webshims/shims/combos/29.js +5 -5
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +14 -22
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +16 -24
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +14 -22
- data/vendor/assets/javascripts/webshims/shims/combos/33.js +2 -2
- data/vendor/assets/javascripts/webshims/shims/combos/34.js +27 -28
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +5 -14
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +78 -66
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +80 -68
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +29 -49
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +27 -47
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +78 -75
- data/vendor/assets/javascripts/webshims/shims/combos/97.js +42 -29
- data/vendor/assets/javascripts/webshims/shims/combos/98.js +116 -40
- data/vendor/assets/javascripts/webshims/shims/combos/99.js +112 -38
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +3 -12
- data/vendor/assets/javascripts/webshims/shims/es5.js +4 -4
- data/vendor/assets/javascripts/webshims/shims/es6.js +1887 -0
- data/vendor/assets/javascripts/webshims/shims/form-core.js +9 -8
- data/vendor/assets/javascripts/webshims/shims/form-datalist.js +2 -2
- data/vendor/assets/javascripts/webshims/shims/form-inputmode.js +52 -0
- data/vendor/assets/javascripts/webshims/shims/form-message.js +2 -2
- data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +4 -5
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +73 -61
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +7 -8
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +164 -163
- data/vendor/assets/javascripts/webshims/shims/form-validation.js +121 -144
- data/vendor/assets/javascripts/webshims/shims/jme/_icons.scss +3 -0
- data/vendor/assets/javascripts/webshims/shims/jme/alternate-media.js +184 -0
- data/vendor/assets/javascripts/webshims/shims/jme/{b.js → base.js} +38 -27
- data/vendor/assets/javascripts/webshims/shims/jme/controls.css +129 -39
- data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +145 -44
- data/vendor/assets/javascripts/webshims/shims/jme/jme.eot +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/jme.svg +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/jme.ttf +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/jme.woff +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +448 -90
- data/vendor/assets/javascripts/webshims/shims/jme/{c.js → mediacontrols.js} +74 -11
- data/vendor/assets/javascripts/webshims/shims/jme/{p.js → playlist.js} +4 -2
- data/vendor/assets/javascripts/webshims/shims/matchMedia.js +122 -0
- data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +12 -24
- data/vendor/assets/javascripts/webshims/shims/mediaelement-debug.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +37 -15
- data/vendor/assets/javascripts/webshims/shims/mediaelement-native-fix.js +3 -3
- data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +4 -5
- data/vendor/assets/javascripts/webshims/shims/picture.js +13 -54
- data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +13 -20
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +24 -18
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +32 -10
- data/vendor/assets/javascripts/webshims/shims/styles/shim-ext.css +43 -47
- data/vendor/assets/javascripts/webshims/shims/styles/shim.css +30 -18
- data/vendor/assets/javascripts/webshims/shims/styles/transparent.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/widget.eot +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/widget.svg +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/widget.ttf +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/widget.woff +0 -0
- data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/swfmini.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/track-ui.js +4 -5
- data/vendor/assets/javascripts/webshims/shims/track.js +24 -16
- metadata +9 -8
- data/vendor/assets/javascripts/webshims/shims/combos/19.js +0 -4745
- data/vendor/assets/javascripts/webshims/shims/combos/20.js +0 -4522
- data/vendor/assets/javascripts/webshims/shims/combos/32.js +0 -2443
- 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
|
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 =
|
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
|
153
|
-
var
|
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',
|
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(
|
1
|
+
(function(webshims){
|
2
2
|
"use strict";
|
3
|
-
var
|
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
|
-
|
27
|
-
|
27
|
+
support.videoBuffered = ('buffered' in videoElem);
|
28
|
+
support.mediaDefaultMuted = ('defaultMuted' in videoElem);
|
28
29
|
supportsLoop = ('loop' in videoElem);
|
29
|
-
|
30
|
+
support.mediaLoop = supportsLoop;
|
30
31
|
|
31
32
|
webshims.capturingEvents(['play', 'playing', 'waiting', 'paused', 'ended', 'durationchange', 'loadedmetadata', 'canplay', 'volumechange']);
|
32
33
|
|
33
|
-
if( !
|
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(
|
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
|
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(!
|
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 &&
|
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
|
-
})(
|
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 =
|
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
|
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
|
-
|
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.
|
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(!
|
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 =
|
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(!
|
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] && '
|
1116
|
+
if(flashNames[elems[i].nodeName] && 'api_destroy' in elems[i]){
|
1095
1117
|
loadedSwf--;
|
1096
1118
|
try {
|
1097
|
-
elems[i].
|
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(
|
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(
|
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(){
|