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'});