vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js in webshims-rails-1.14.1 vs vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js in webshims-rails-1.14.3
- old
+ new
@@ -22,11 +22,11 @@
var getTrackMenu = function(tracks){
var items = $.map(tracks, function(track){
var className = (track.kind == 'caption') ? 'caption-type' : 'subtitle-type';
var lang = track.language;
lang = (lang) ? ' <span class="track-lang">'+ lang +'</span>' : '';
- return '<li class="'+ className +'" role="presentation"><button role="menuitemcheckbox">'+ track.label + lang +'</button></li>';
+ return '<li class="'+ className +'" role="presentation"><button role="menuitemcheckbox" type="button">'+ track.label + lang +'</button></li>';
})
;
return '<div><ul>' + items.join('') +'</ul></div>';
};
@@ -47,11 +47,11 @@
if(e.type == 'touchcancel' || !touchData || !changedTouches || changedTouches.length != 1){
return;
}
touch = changedTouches[0];
- if(Math.abs(touchData.x - touch.pageX) > 40 || Math.abs(touchData.y - touch.pageY) > 40 || Date.now() - touchData.now > 600){
+ if(Math.abs(touchData.x - touch.pageX) > 40 || Math.abs(touchData.y - touch.pageY) > 40 || Date.now() - touchData.now > 300){
return;
}
e.preventDefault();
ret = handler.apply(this, arguments);
@@ -205,10 +205,53 @@
e.stopPropagation();
});
}
},
+ 'jme-media-overlay': {
+ _create: function(control, media, base){
+ var stopFocus, focusTimer, markedFocus;
+ var specialUnStop = {
+ touchend: 1,
+ click: 1
+ };
+ var unStop = function(){
+ stopFocus = false;
+ };
+ control.wsTouchClick(function(e){
+ if(media.jmeProp('isPlaying') && base.attr('data-useractivity') != 'false'){
+ media.pause();
+ } else {
+ media.play();
+ }
+ });
+
+ base.on({
+ 'touchstart touchend mousedown click mouseover': function(e){
+ var delay = 500;
+ stopFocus = true;
+ clearTimeout(focusTimer);
+ if(markedFocus && specialUnStop[e.type] && e.target.className.indexOf('ws-a11y-focus') != -1){
+ delay = 0;
+ }
+ focusTimer = setTimeout(unStop, delay);
+ },
+ focusin: function(e){
+ if(!stopFocus && e.originalEvent){
+ markedFocus = true;
+ $(e.target).addClass('ws-a11y-focus');
+ }
+ },
+ focusout: function(e){
+ if(markedFocus){
+ markedFocus = false;
+ $(e.target).removeClass('ws-a11y-focus');
+ }
+ }
+ });
+ }
+ },
'volume-slider': {
_create: function(control, media){
var createFn = function(){
var api, volume;
@@ -254,11 +297,11 @@
_create: function(control, media, base){
var module = this;
var createFn = function(){
- var time, durationChange, api, timeShow, wasPaused;
+ var time, durationChange, api, timeShow, wasPaused, hideTime;
var hasDuration = 'has-duration';
var duration = media.prop('duration');
time = createGetSetHandler({
get: function(){
@@ -310,11 +353,19 @@
api.disabled(true);
api.max(Number.MAX_VALUE);
base.addClass(module[pseudoClasses].no);
}
};
-
+ hideTime = function(){
+ setTimeout(function(){
+ timeShow.removeClass('show-time-select');
+ control.off('.jmetimeselect');
+ if(document.removeEventListener){
+ document.removeEventListener('touchend', hideTime, true);
+ }
+ });
+ };
api = control
.rangeUI({
min: 0,
value: media.prop('currentTime') || 0,
step: 'any',
@@ -330,40 +381,41 @@
timeShow = $('<span class="time-select" />').appendTo(control);
control
.on({
- 'mouseenter': function(e){
- if(hasDuration){
+ 'mouseenter touchstart': function(e){
+ if(hasDuration && e.type != 'touchstart' || (e.originalEvent && e.originalEvent.touches && e.originalEvent.touches.length == 1)){
+
var widgetLeft = (control.offset() || {left: 0}).left;
var widgetWidth = control.innerWidth();
var posLeft = function(x){
var perc = (x - widgetLeft) / widgetWidth * 100;
timeShow
.html(media.jmeFn('formatTime', duration * perc / 100))
.css({left: perc+'%'})
;
};
+ $.fn.rangeUI.normalizeTouch(e);
setTimeout(function(){
posLeft(e.pageX);
timeShow.addClass('show-time-select');
});
+ if(document.addEventListener){
+ document.addEventListener('touchend', hideTime, true);
+ }
control
.off('.jmetimeselect')
- .on('mousemove.jmetimeselect', function(e){
+ .on('mousemove.jmetimeselect touchmove.jmetimeselect', function(e){
+ $.fn.rangeUI.normalizeTouch(e);
posLeft(e.pageX);
})
;
}
},
- mouseleave: function(){
- setTimeout(function(){
- timeShow.removeClass('show-time-select');
- control.off('.jmetimeselect');
- });
- }
+ 'mouseleave touchend': hideTime
})
;
media.on({
@@ -1084,10 +1136,10 @@
data.trigger[name] = true;
if(!data.bound){
jElm
.on('mouseleave.jmeuseractivity', setInactive)
- .on('mousemove.jmeuseractivity focusin.jmeuseractivity mouseenter.jmeuseractivity keydown.jmeuseractivity keyup.jmeuseractivity mousedown.jmeuseractivity', setActive)
+ .on('touchend.jmeuseractivity setuseractive.jmeuseractivity mousemove.jmeuseractivity focusin.jmeuseractivity mouseenter.jmeuseractivity keydown.jmeuseractivity keyup.jmeuseractivity mousedown.jmeuseractivity', setActive)
;
data.bound = true;
}
if(!data.idle){
setActive({type: 'initunidled'});