webshims-rails 1.14.4 → 1.14.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Rakefile +58 -0
- data/lib/webshims-rails/version.rb +2 -2
- data/vendor/assets/javascripts/webshims/polyfiller.js +45 -26
- data/vendor/assets/javascripts/webshims/shims/combos/1.js +18 -5
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +26 -22
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +24 -21
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +4 -0
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +4 -0
- data/vendor/assets/javascripts/webshims/shims/combos/14.js +0 -1
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +17 -7
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +21 -7
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +24 -22
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +122 -97
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +20 -6
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +4 -3
- data/vendor/assets/javascripts/webshims/shims/combos/23.js +4 -0
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +7 -5
- data/vendor/assets/javascripts/webshims/shims/combos/26.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/combos/27.js +29 -9
- data/vendor/assets/javascripts/webshims/shims/combos/28.js +1 -2
- data/vendor/assets/javascripts/webshims/shims/combos/29.js +0 -1
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +16 -6
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +16 -6
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +16 -6
- data/vendor/assets/javascripts/webshims/shims/combos/33.js +0 -1
- data/vendor/assets/javascripts/webshims/shims/combos/34.js +2 -1
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +2 -1
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +24 -22
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +24 -22
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +20 -6
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +20 -6
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +26 -22
- data/vendor/assets/javascripts/webshims/shims/combos/97.js +0 -24
- data/vendor/assets/javascripts/webshims/shims/combos/98.js +22 -25
- data/vendor/assets/javascripts/webshims/shims/combos/99.js +22 -25
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +2 -1
- data/vendor/assets/javascripts/webshims/shims/filereader.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/form-core.js +14 -5
- data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +8 -4
- data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +0 -1
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +24 -21
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +28 -8
- data/vendor/assets/javascripts/webshims/shims/form-validation.js +17 -20
- data/vendor/assets/javascripts/webshims/shims/form-validators.js +17 -10
- data/vendor/assets/javascripts/webshims/shims/forms-picker.js +3 -3
- data/vendor/assets/javascripts/webshims/shims/jme/base.js +0 -24
- data/vendor/assets/javascripts/webshims/shims/jme/controls.css +23 -9
- data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +21 -3
- data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +13 -4
- data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols.js +22 -1
- data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +4 -0
- data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +4 -3
- data/vendor/assets/javascripts/webshims/shims/picture.js +122 -97
- data/vendor/assets/javascripts/webshims/shims/plugins/jquery.ui.position.js +470 -452
- data/vendor/assets/javascripts/webshims/shims/sizzle.js +35 -27
- data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +10 -2
- data/vendor/assets/javascripts/webshims/shims/styles/forms-picker.css +1 -1
- data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-forms-ext.scss +10 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +4 -2
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-picker.scss +1 -1
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +6 -24
- data/vendor/assets/javascripts/webshims/shims/styles/shim-ext.css +15 -21
- data/vendor/assets/javascripts/webshims/shims/styles/shim.css +5 -19
- data/vendor/assets/javascripts/webshims/shims/track-ui.js +2 -2
- metadata +2 -3
- data/vendor/assets/javascripts/webshims/shims/promise.js +0 -684
@@ -111,7 +111,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
|
|
111
111
|
shadowType = shadowElem.prop('type');
|
112
112
|
}
|
113
113
|
if(
|
114
|
-
(chromeBugs && (e.type == 'change' || webkitVersion < 537.36) && noFocusWidgets[shadowType] &&
|
114
|
+
(chromeBugs && (e.type == 'change' || webkitVersion < 537.36) && noFocusWidgets[shadowType] && $.find.matchesSelector(e.target, ':focus')) ||
|
115
115
|
(e.type == 'focusout' && elem.type == 'radio' && isInGroup(elem.name))
|
116
116
|
){
|
117
117
|
return;
|
@@ -438,9 +438,9 @@ webshims.register('form-validation', function($, webshims, window, document, und
|
|
438
438
|
this.lastElement = $(element).getShadowFocusElement();
|
439
439
|
if(!this.prepared || !this.options.prepareFor){
|
440
440
|
if(opts.appendTo == 'element' || (opts.inline && opts.appendTo == 'auto')){
|
441
|
-
parentElem =
|
441
|
+
parentElem = visual.parent();
|
442
442
|
} else if(opts.appendTo == 'auto'){
|
443
|
-
parentElem = this._getAutoAppendElement(
|
443
|
+
parentElem = this._getAutoAppendElement(visual);
|
444
444
|
} else {
|
445
445
|
parentElem = $(opts.appendTo);
|
446
446
|
}
|
@@ -679,7 +679,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
|
|
679
679
|
var ret = $(elem).data('errortype');
|
680
680
|
if(!ret){
|
681
681
|
$.each(fields, function(errorName, cNames){
|
682
|
-
if(
|
682
|
+
if($.find.matchesSelector(elem, cNames)){
|
683
683
|
ret = errorName;
|
684
684
|
return false;
|
685
685
|
}
|
@@ -724,7 +724,8 @@ webshims.register('form-validation', function($, webshims, window, document, und
|
|
724
724
|
};
|
725
725
|
})(),
|
726
726
|
initIvalContentMessage: function(elem){
|
727
|
-
|
727
|
+
var form;
|
728
|
+
if(iVal.sel && (form = $.prop(elem, 'form')) && $.find.matchesSelector(form, iVal.sel)){
|
728
729
|
this.get(elem);
|
729
730
|
}
|
730
731
|
},
|
@@ -794,7 +795,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
|
|
794
795
|
switchValidityClass({type: 'input', target: input});
|
795
796
|
};
|
796
797
|
$(input)
|
797
|
-
.filter('input:not([type="checkbox"]):not([type="radio"])')
|
798
|
+
.filter('input:not([type="checkbox"]):not([type="radio"]), textarea')
|
798
799
|
.off('.recheckinvalid')
|
799
800
|
.on('input.recheckinvalid', function(){
|
800
801
|
clearTimeout(timer);
|
@@ -840,7 +841,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
|
|
840
841
|
this.hideError(elem, true).removeClass(successWrapperClass);
|
841
842
|
},
|
842
843
|
toggle: function(elem){
|
843
|
-
if(
|
844
|
+
if($.find.matchesSelector(elem, ':invalid')){
|
844
845
|
this.showError(elem);
|
845
846
|
} else {
|
846
847
|
this.hideError(elem);
|
@@ -851,25 +852,21 @@ webshims.register('form-validation', function($, webshims, window, document, und
|
|
851
852
|
$(document.body)
|
852
853
|
.on({
|
853
854
|
'changedvaliditystate': function(e){
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
webshims.errorbox.toggle(e.target);
|
858
|
-
}
|
855
|
+
var form;
|
856
|
+
if(iVal.sel && (form = $.prop(e.target, 'form')) && $.find.matchesSelector(form, iVal.sel)){
|
857
|
+
webshims.errorbox.toggle(e.target);
|
859
858
|
}
|
860
859
|
},
|
861
860
|
'resetvalidityui.webshims': function(e){
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
webshims.errorbox.reset(e.target);
|
866
|
-
}
|
861
|
+
var form;
|
862
|
+
if(iVal.sel && (form = $.prop(e.target, 'form')) && $.find.matchesSelector(form, iVal.sel)){
|
863
|
+
webshims.errorbox.reset(e.target);
|
867
864
|
}
|
868
865
|
},
|
869
866
|
firstinvalid: function(e){
|
867
|
+
var form;
|
870
868
|
if(iVal.sel && iVal.handleBubble){
|
871
|
-
|
872
|
-
if(form.is(iVal.sel)){
|
869
|
+
if(iVal.sel && (form = $.prop(e.target, 'form')) && $.find.matchesSelector(form, iVal.sel)){
|
873
870
|
e.preventDefault();
|
874
871
|
if(iVal.handleBubble != 'none'){
|
875
872
|
webshims.validityAlert.showFor( e.target, false, false, iVal.handleBubble == 'hide' );
|
@@ -878,7 +875,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
|
|
878
875
|
}
|
879
876
|
},
|
880
877
|
submit: function(e){
|
881
|
-
if(iVal.sel && iVal.submitCheck &&
|
878
|
+
if(iVal.sel && iVal.submitCheck && $.find.matchesSelector(e.target, iVal.sel) && $.prop(e.target, 'noValidate') && !$(e.target).checkValidity()){
|
882
879
|
e.stopImmediatePropagation();
|
883
880
|
return false;
|
884
881
|
}
|
@@ -1,6 +1,11 @@
|
|
1
1
|
webshims.register('form-validators', function($, webshims, window, document, undefined, options){
|
2
2
|
"use strict";
|
3
|
-
|
3
|
+
|
4
|
+
var iValClasses;
|
5
|
+
webshims.ready('form-validation', function(){
|
6
|
+
iValClasses = '.'+ options.iVal.errorClass +', .'+options.iVal.successClass;
|
7
|
+
});
|
8
|
+
|
4
9
|
(function(){
|
5
10
|
if(webshims.refreshCustomValidityRules){
|
6
11
|
webshims.error("form-validators already included. please remove custom-validity.js");
|
@@ -30,7 +35,7 @@ var iValClasses = '.'+ options.iVal.errorClass +', .'+options.iVal.successClass;
|
|
30
35
|
elem = elements[id].elem;
|
31
36
|
if(elem != noTest && elements[id].val != (val = elem.value)){
|
32
37
|
elements[id].val = val;
|
33
|
-
if(
|
38
|
+
if(iValClasses && $.find.matchesSelector(elem, iValClasses)){
|
34
39
|
$(elem).trigger('updatevalidation.webshims');
|
35
40
|
} else {
|
36
41
|
testValidityRules(elem);
|
@@ -337,7 +342,7 @@ var iValClasses = '.'+ options.iVal.errorClass +', .'+options.iVal.successClass;
|
|
337
342
|
val = !val;
|
338
343
|
}
|
339
344
|
$.prop( elem, data.prop, val);
|
340
|
-
if(e){
|
345
|
+
if(iValClasses && e){
|
341
346
|
$(elem).getShadowElement().filter(iValClasses).trigger('updatevalidation.webshims');
|
342
347
|
}
|
343
348
|
};
|
@@ -377,11 +382,13 @@ var iValClasses = '.'+ options.iVal.errorClass +', .'+options.iVal.successClass;
|
|
377
382
|
} else {
|
378
383
|
$(data.masterElement).on('change', function(){
|
379
384
|
webshims.refreshCustomValidityRules(elem);
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
+
if(iValClasses){
|
386
|
+
$(elem)
|
387
|
+
.getShadowElement()
|
388
|
+
.filter(iValClasses)
|
389
|
+
.trigger('updatevalidation.webshims')
|
390
|
+
;
|
391
|
+
}
|
385
392
|
});
|
386
393
|
}
|
387
394
|
}
|
@@ -416,7 +423,7 @@ var iValClasses = '.'+ options.iVal.errorClass +', .'+options.iVal.successClass;
|
|
416
423
|
}
|
417
424
|
|
418
425
|
data.ajaxvalidate.depends.on('change', function(){
|
419
|
-
if(
|
426
|
+
if($.find.matchesSelector(this, ':valid')){
|
420
427
|
webshims.refreshCustomValidityRules(elem);
|
421
428
|
}
|
422
429
|
});
|
@@ -479,7 +486,7 @@ var iValClasses = '.'+ options.iVal.errorClass +', .'+options.iVal.successClass;
|
|
479
486
|
data = {};
|
480
487
|
data[$.prop(elem, 'name') || $.prop(elem, 'id')] = $(elem).val();
|
481
488
|
opts.depends.each(function(){
|
482
|
-
if(
|
489
|
+
if($.find.matchesSelector(this, ':invalid')){
|
483
490
|
data = false;
|
484
491
|
return false;
|
485
492
|
}
|
@@ -1495,7 +1495,7 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
|
|
1495
1495
|
data._commonDateInit = true;
|
1496
1496
|
var o = data.options;
|
1497
1497
|
var actionfn = function(e){
|
1498
|
-
if(!$(this).
|
1498
|
+
if(!$(this).hasClass('othermonth') || $(this).css('cursor') == 'pointer'){
|
1499
1499
|
popover.actionFn({
|
1500
1500
|
'data-action': $.attr(this, 'data-action'),
|
1501
1501
|
value: $(this).val() || $.attr(this, 'value')
|
@@ -1550,13 +1550,13 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
|
|
1550
1550
|
|
1551
1551
|
$('button', popover.buttonRow).each(function(){
|
1552
1552
|
var text;
|
1553
|
-
if($(this).
|
1553
|
+
if($(this).hasClass('ws-empty')){
|
1554
1554
|
text = curCfg.date.clear;
|
1555
1555
|
if(!text){
|
1556
1556
|
text = formcfg[''].date.clear || 'clear';
|
1557
1557
|
webshims.warn("could not get clear text from form cfg");
|
1558
1558
|
}
|
1559
|
-
} else if($(this).
|
1559
|
+
} else if($(this).hasClass('ws-current')){
|
1560
1560
|
text = (curCfg[data.type] || {}).currentText;
|
1561
1561
|
if(!text){
|
1562
1562
|
text = (formcfg[''][[data.type]] || {}).currentText || (curCfg.date || {}).currentText || 'current';
|
@@ -276,30 +276,6 @@ webshims.register('jmebase', function($, webshims, window, doc, undefined){
|
|
276
276
|
jmeData.media = media;
|
277
277
|
jmeData.player = base;
|
278
278
|
media
|
279
|
-
.on('ended emptied play', (function(){
|
280
|
-
var timer;
|
281
|
-
var releaseEmptied = function(){
|
282
|
-
stopEmptiedEvent = false;
|
283
|
-
};
|
284
|
-
var ended = function(){
|
285
|
-
removeCanPlay();
|
286
|
-
media.jmeFn('pause');
|
287
|
-
if(!options.noReload && media.prop('ended') && media.prop('paused') && !media.prop('autoplay') && !media.prop('loop') && !media.hasClass('no-reload')){
|
288
|
-
stopEmptiedEvent = true;
|
289
|
-
media.jmeFn('load');
|
290
|
-
base.attr('data-state', 'ended');
|
291
|
-
setTimeout(releaseEmptied);
|
292
|
-
|
293
|
-
}
|
294
|
-
};
|
295
|
-
return function(e){
|
296
|
-
|
297
|
-
clearTimeout(timer);
|
298
|
-
if(e.type == 'ended' && !options.noReload && !media.prop('autoplay') && !media.prop('loop') && !media.hasClass('no-reload')){
|
299
|
-
timer = setTimeout(ended);
|
300
|
-
}
|
301
|
-
};
|
302
|
-
})())
|
303
279
|
.on('emptied waiting canplay canplaythrough playing ended pause mediaerror', mediaUpdateFn)
|
304
280
|
.on('volumechange updateJMEState', function(){
|
305
281
|
var volume = $.prop(this, 'volume');
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/* thx to http://icomoon.io */
|
2
|
-
.mediaplayer[data-state="waiting"] > .jme-media-overlay, .mediaplayer .fullscreen, .mediaplayer .fullscreen.state-exitfullscreen, .mediaplayer .mediaconfigmenu, .mediaplayer
|
2
|
+
.mediaplayer[data-state="waiting"] > .jme-media-overlay, .mediaplayer .fullscreen, .mediaplayer .fullscreen.state-exitfullscreen, .mediaplayer .mediaconfigmenu, .mediaplayer.initial-state > .jme-media-overlay, .mediaplayer button.play-pause, .mediaplayer button.play-pause.state-playing, .mediaplayer .mute-unmute, .mediaplayer[data-volume="medium"] .mute-unmute, .mediaplayer[data-volume="low"] .mute-unmute, .mediaplayer[data-volume="no"] .mute-unmute, .mediaplayer .state-unmute.mute-unmute, .mediaplayer .captions, .mediaplayer .subtitle-menu button[aria-checked="true"], .mediaplayer .subtitle-menu button, .mediaplayer .playlist-next, .mediaplayer .playlist-prev, .mediaplayer .chapters, .mediaplayer.ended-state > .jme-media-overlay {
|
3
3
|
font-family: 'jme';
|
4
4
|
speak: none;
|
5
5
|
font-style: normal;
|
@@ -29,7 +29,7 @@
|
|
29
29
|
content: "\e606";
|
30
30
|
}
|
31
31
|
|
32
|
-
.mediaplayer
|
32
|
+
.mediaplayer.initial-state > .jme-media-overlay:before {
|
33
33
|
content: "\e608";
|
34
34
|
}
|
35
35
|
|
@@ -85,7 +85,7 @@
|
|
85
85
|
content: "\e615";
|
86
86
|
}
|
87
87
|
|
88
|
-
.mediaplayer
|
88
|
+
.mediaplayer.ended-state > .jme-media-overlay:before {
|
89
89
|
content: "\e601";
|
90
90
|
}
|
91
91
|
|
@@ -99,6 +99,15 @@
|
|
99
99
|
font-weight: normal;
|
100
100
|
font-style: normal;
|
101
101
|
}
|
102
|
+
@-webkit-keyframes jmespin {
|
103
|
+
0% {
|
104
|
+
-webkit-transform: rotate(0deg);
|
105
|
+
}
|
106
|
+
|
107
|
+
100% {
|
108
|
+
-webkit-transform: rotate(360deg);
|
109
|
+
}
|
110
|
+
}
|
102
111
|
@keyframes jmespin {
|
103
112
|
0% {
|
104
113
|
-webkit-transform: rotate(0deg);
|
@@ -264,17 +273,17 @@
|
|
264
273
|
.mediaplayer[data-state="idle"] {
|
265
274
|
cursor: pointer;
|
266
275
|
}
|
267
|
-
.mediaplayer
|
276
|
+
.mediaplayer.initial-state > .jme-media-overlay {
|
268
277
|
background-position: 1px 1px;
|
269
278
|
}
|
270
|
-
.mediaplayer
|
279
|
+
.mediaplayer.initial-state.has-ytposter.no-backgroundsize > .jme-media-overlay:before {
|
271
280
|
content: "";
|
272
281
|
background-position: 2px 2px;
|
273
282
|
}
|
274
|
-
.mediaplayer
|
283
|
+
.mediaplayer.ended-state {
|
275
284
|
cursor: pointer;
|
276
285
|
}
|
277
|
-
.mediaplayer
|
286
|
+
.mediaplayer.ended-state > .jme-media-overlay {
|
278
287
|
background-position: 3px 3px;
|
279
288
|
}
|
280
289
|
.mediaplayer[data-state="waiting"] {
|
@@ -284,6 +293,10 @@
|
|
284
293
|
background-position: 4px 4px;
|
285
294
|
}
|
286
295
|
.mediaplayer[data-state="waiting"] > .jme-media-overlay:before {
|
296
|
+
-webkit-animation-name: jmespin;
|
297
|
+
-webkit-animation-iteration-count: infinite;
|
298
|
+
-webkit-animation-duration: 1100ms;
|
299
|
+
-webkit-animation-timing-function: linear;
|
287
300
|
animation-name: jmespin;
|
288
301
|
animation-iteration-count: infinite;
|
289
302
|
animation-duration: 1100ms;
|
@@ -308,9 +321,10 @@
|
|
308
321
|
left: 0;
|
309
322
|
right: 0;
|
310
323
|
bottom: 0;
|
311
|
-
background: #000 no-repeat center
|
324
|
+
background: #000 no-repeat center;
|
325
|
+
background-size: contain;
|
312
326
|
}
|
313
|
-
.mediaplayer.initial-state .ws-poster {
|
327
|
+
.mediaplayer.initial-state .ws-poster, .mediaplayer.ended-state .ws-poster {
|
314
328
|
display: block;
|
315
329
|
}
|
316
330
|
.mediaplayer.no-poster .ws-poster, .mediaplayer.no-backgroundsize div.ws-poster {
|
@@ -30,6 +30,15 @@ $browser-context: 16; // Default
|
|
30
30
|
@return #{$pixels/$context}em
|
31
31
|
}
|
32
32
|
|
33
|
+
@-webkit-keyframes jmespin {
|
34
|
+
0% {
|
35
|
+
-webkit-transform: rotate(0deg);
|
36
|
+
}
|
37
|
+
|
38
|
+
100% {
|
39
|
+
-webkit-transform: rotate(360deg);
|
40
|
+
}
|
41
|
+
}
|
33
42
|
|
34
43
|
@keyframes jmespin {
|
35
44
|
0% {
|
@@ -186,7 +195,9 @@ $browser-context: 16; // Default
|
|
186
195
|
|
187
196
|
&[data-state="idle"] {
|
188
197
|
cursor: pointer;
|
198
|
+
}
|
189
199
|
|
200
|
+
&.initial-state {
|
190
201
|
> .jme-media-overlay {
|
191
202
|
@extend %icon-play-circle;
|
192
203
|
background-position: 1px 1px;
|
@@ -198,7 +209,7 @@ $browser-context: 16; // Default
|
|
198
209
|
}
|
199
210
|
}
|
200
211
|
|
201
|
-
|
212
|
+
&.ended-state {
|
202
213
|
cursor: pointer;
|
203
214
|
> .jme-media-overlay {
|
204
215
|
@extend %icon-loop;
|
@@ -213,6 +224,11 @@ $browser-context: 16; // Default
|
|
213
224
|
background-position: 4px 4px;
|
214
225
|
|
215
226
|
&:before {
|
227
|
+
-webkit-animation-name: jmespin;
|
228
|
+
-webkit-animation-iteration-count: infinite;
|
229
|
+
-webkit-animation-duration: 1100ms;
|
230
|
+
-webkit-animation-timing-function: linear;
|
231
|
+
|
216
232
|
animation-name: jmespin;
|
217
233
|
animation-iteration-count: infinite;
|
218
234
|
animation-duration: 1100ms;
|
@@ -243,10 +259,12 @@ $browser-context: 16; // Default
|
|
243
259
|
left: 0;
|
244
260
|
right: 0;
|
245
261
|
bottom: 0;
|
246
|
-
background: #000 no-repeat center
|
262
|
+
background: #000 no-repeat center;
|
263
|
+
background-size: contain;
|
247
264
|
}
|
248
265
|
|
249
|
-
&.initial-state .ws-poster
|
266
|
+
&.initial-state .ws-poster,
|
267
|
+
&.ended-state .ws-poster {
|
250
268
|
display: block;
|
251
269
|
}
|
252
270
|
|
@@ -353,6 +353,7 @@ webshims.register('mediacontrols-lazy', function($, webshims, window, doc, undef
|
|
353
353
|
delete base._seekpause;
|
354
354
|
}
|
355
355
|
wasPaused = null;
|
356
|
+
media.triggerHandler('updateprogress');
|
356
357
|
}
|
357
358
|
});
|
358
359
|
|
@@ -1316,10 +1317,11 @@ webshims.register('mediacontrols-lazy', function($, webshims, window, doc, undef
|
|
1316
1317
|
|
1317
1318
|
$.jme.registerPlugin('buffer-progress', {
|
1318
1319
|
_create: function(control, media, base, options){
|
1320
|
+
var progressTimer;
|
1319
1321
|
var indicator = $('<div class="buffer-progress-indicator" />').appendTo(control);
|
1320
1322
|
var drawBufferProgress = function(){
|
1321
1323
|
var progress = media.jmeProp('progress');
|
1322
|
-
|
1324
|
+
clearTimeout(progressTimer);
|
1323
1325
|
|
1324
1326
|
if(options.progress !== progress){
|
1325
1327
|
options.progress = progress;
|
@@ -1332,7 +1334,14 @@ webshims.register('mediacontrols-lazy', function($, webshims, window, doc, undef
|
|
1332
1334
|
indicator.css('width', 0);
|
1333
1335
|
options.progress = 0;
|
1334
1336
|
},
|
1335
|
-
playing: drawBufferProgress
|
1337
|
+
playing: drawBufferProgress,
|
1338
|
+
'seeked seeking updateprogress': function(e){
|
1339
|
+
clearTimeout(progressTimer);
|
1340
|
+
if(e.type != 'seeking'){
|
1341
|
+
progressTimer = setTimeout(drawBufferProgress, 100);
|
1342
|
+
}
|
1343
|
+
}
|
1344
|
+
|
1336
1345
|
});
|
1337
1346
|
drawBufferProgress();
|
1338
1347
|
}
|
@@ -1418,8 +1427,8 @@ webshims.register('mediacontrols-lazy', function($, webshims, window, doc, undef
|
|
1418
1427
|
var buttons = this.buttons.not(':disabled');
|
1419
1428
|
var activeButton = buttons.filter(':focus');
|
1420
1429
|
|
1421
|
-
activeButton = buttons[buttons.index(activeButton) + dir] || buttons
|
1422
|
-
activeButton.trigger('focus');
|
1430
|
+
activeButton = (activeButton[0] && buttons[buttons.index(activeButton) + dir]) || buttons[dir > 0 ? 'first' : 'last']();
|
1431
|
+
$(activeButton).trigger('focus');
|
1423
1432
|
e.preventDefault();
|
1424
1433
|
}
|
1425
1434
|
},
|
@@ -151,17 +151,33 @@ webshims.register('mediacontrols', function($, webshims, window){
|
|
151
151
|
var regYt = /youtube\.com\/[watch\?|v\/]+/i;
|
152
152
|
|
153
153
|
var isInitial = data.media.prop('paused');
|
154
|
+
var isEnded = data.media.prop('ended');
|
154
155
|
if(isInitial){
|
155
156
|
data.player.addClass('initial-state');
|
156
157
|
}
|
158
|
+
if(isEnded){
|
159
|
+
data.player.addClass('ended-state');
|
160
|
+
}
|
157
161
|
if(!('backgroundSize' in $poster[0].style)){
|
158
162
|
data.player.addClass('no-backgroundsize');
|
159
163
|
}
|
160
|
-
data.media.on('playing waiting seeked seeking', function(){
|
164
|
+
data.media.on('play playing waiting seeked seeking', function(e){
|
165
|
+
|
161
166
|
if(isInitial){
|
162
167
|
isInitial = false;
|
163
168
|
data.player.removeClass('initial-state');
|
164
169
|
}
|
170
|
+
|
171
|
+
if(isEnded){
|
172
|
+
isEnded = false;
|
173
|
+
data.player.removeClass('ended-state');
|
174
|
+
}
|
175
|
+
});
|
176
|
+
data.media.on('ended', function(){
|
177
|
+
if(!isEnded && !data.media.prop('loop') && data.media.prop('ended')){
|
178
|
+
isEnded = true;
|
179
|
+
data.player.addClass('ended-state');
|
180
|
+
}
|
165
181
|
});
|
166
182
|
return function(){
|
167
183
|
var poster = data.media.attr('poster');
|
@@ -193,6 +209,11 @@ webshims.register('mediacontrols', function($, webshims, window){
|
|
193
209
|
isInitial = true;
|
194
210
|
}
|
195
211
|
|
212
|
+
if(isEnded){
|
213
|
+
isEnded = false;
|
214
|
+
data.player.removeClass('ended-state');
|
215
|
+
}
|
216
|
+
|
196
217
|
if(lastYoutubeState !== hasYt){
|
197
218
|
lastYoutubeState = hasYt;
|
198
219
|
data.player[hasYt ? 'addClass' : 'removeClass']('has-ytposter');
|