Update sources
parent
1c152f6cad
commit
56b0952cd1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,413 +0,0 @@
|
|||||||
/*
|
|
||||||
* Video.js Hotkeys
|
|
||||||
* https://github.com/ctd1500/videojs-hotkeys
|
|
||||||
*
|
|
||||||
* Copyright (c) 2015 Chris Dougherty
|
|
||||||
* Licensed under the Apache-2.0 license.
|
|
||||||
*/
|
|
||||||
|
|
||||||
;(function(root, factory) {
|
|
||||||
if (typeof window !== 'undefined' && window.videojs) {
|
|
||||||
factory(window.videojs);
|
|
||||||
} else if (typeof define === 'function' && define.amd) {
|
|
||||||
define('videojs-hotkeys', ['video.js'], function (module) {
|
|
||||||
return factory(module.default || module);
|
|
||||||
});
|
|
||||||
} else if (typeof module !== 'undefined' && module.exports) {
|
|
||||||
module.exports = factory(require('video.js'));
|
|
||||||
}
|
|
||||||
}(this, function (videojs) {
|
|
||||||
"use strict";
|
|
||||||
if (typeof window !== 'undefined') {
|
|
||||||
window['videojs_hotkeys'] = { version: "0.2.22" };
|
|
||||||
}
|
|
||||||
|
|
||||||
var hotkeys = function(options) {
|
|
||||||
var player = this;
|
|
||||||
var pEl = player.el();
|
|
||||||
var doc = document;
|
|
||||||
var def_options = {
|
|
||||||
volumeStep: 0.1,
|
|
||||||
seekStep: 5,
|
|
||||||
enableMute: true,
|
|
||||||
enableVolumeScroll: true,
|
|
||||||
enableHoverScroll: true,
|
|
||||||
enableFullscreen: true,
|
|
||||||
enableNumbers: true,
|
|
||||||
enableJogStyle: false,
|
|
||||||
alwaysCaptureHotkeys: false,
|
|
||||||
enableModifiersForNumbers: true,
|
|
||||||
enableInactiveFocus: true,
|
|
||||||
skipInitialFocus: false,
|
|
||||||
playPauseKey: playPauseKey,
|
|
||||||
rewindKey: rewindKey,
|
|
||||||
forwardKey: forwardKey,
|
|
||||||
volumeUpKey: volumeUpKey,
|
|
||||||
volumeDownKey: volumeDownKey,
|
|
||||||
muteKey: muteKey,
|
|
||||||
fullscreenKey: fullscreenKey,
|
|
||||||
customKeys: {}
|
|
||||||
};
|
|
||||||
|
|
||||||
var cPlay = 1,
|
|
||||||
cRewind = 2,
|
|
||||||
cForward = 3,
|
|
||||||
cVolumeUp = 4,
|
|
||||||
cVolumeDown = 5,
|
|
||||||
cMute = 6,
|
|
||||||
cFullscreen = 7;
|
|
||||||
|
|
||||||
// Use built-in merge function from Video.js v5.0+ or v4.4.0+
|
|
||||||
var mergeOptions = videojs.mergeOptions || videojs.util.mergeOptions;
|
|
||||||
options = mergeOptions(def_options, options || {});
|
|
||||||
|
|
||||||
var volumeStep = options.volumeStep,
|
|
||||||
seekStep = options.seekStep,
|
|
||||||
enableMute = options.enableMute,
|
|
||||||
enableVolumeScroll = options.enableVolumeScroll,
|
|
||||||
enableHoverScroll = options.enableHoverScroll,
|
|
||||||
enableFull = options.enableFullscreen,
|
|
||||||
enableNumbers = options.enableNumbers,
|
|
||||||
enableJogStyle = options.enableJogStyle,
|
|
||||||
alwaysCaptureHotkeys = options.alwaysCaptureHotkeys,
|
|
||||||
enableModifiersForNumbers = options.enableModifiersForNumbers,
|
|
||||||
enableInactiveFocus = options.enableInactiveFocus,
|
|
||||||
skipInitialFocus = options.skipInitialFocus;
|
|
||||||
|
|
||||||
// Set default player tabindex to handle keydown and doubleclick events
|
|
||||||
if (!pEl.hasAttribute('tabIndex')) {
|
|
||||||
pEl.setAttribute('tabIndex', '-1');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove player outline to fix video performance issue
|
|
||||||
pEl.style.outline = "none";
|
|
||||||
|
|
||||||
if (alwaysCaptureHotkeys || !player.autoplay()) {
|
|
||||||
if (!skipInitialFocus) {
|
|
||||||
player.one('play', function() {
|
|
||||||
pEl.focus(); // Fixes the .vjs-big-play-button handing focus back to body instead of the player
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (enableInactiveFocus) {
|
|
||||||
player.on('userinactive', function() {
|
|
||||||
// When the control bar fades, re-apply focus to the player if last focus was a control button
|
|
||||||
var cancelFocusingPlayer = function() {
|
|
||||||
clearTimeout(focusingPlayerTimeout);
|
|
||||||
};
|
|
||||||
var focusingPlayerTimeout = setTimeout(function() {
|
|
||||||
player.off('useractive', cancelFocusingPlayer);
|
|
||||||
var activeElement = doc.activeElement;
|
|
||||||
var controlBar = pEl.querySelector('.vjs-control-bar');
|
|
||||||
if (activeElement && activeElement.parentElement == controlBar) {
|
|
||||||
pEl.focus();
|
|
||||||
}
|
|
||||||
}, 10);
|
|
||||||
|
|
||||||
player.one('useractive', cancelFocusingPlayer);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
player.on('play', function() {
|
|
||||||
// Fix allowing the YouTube plugin to have hotkey support.
|
|
||||||
var ifblocker = pEl.querySelector('.iframeblocker');
|
|
||||||
if (ifblocker && ifblocker.style.display === '') {
|
|
||||||
ifblocker.style.display = "block";
|
|
||||||
ifblocker.style.bottom = "39px";
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
var keyDown = function keyDown(event) {
|
|
||||||
var ewhich = event.which, wasPlaying, seekTime;
|
|
||||||
var ePreventDefault = event.preventDefault;
|
|
||||||
var duration = player.duration();
|
|
||||||
// When controls are disabled, hotkeys will be disabled as well
|
|
||||||
if (player.controls()) {
|
|
||||||
|
|
||||||
// Don't catch keys if any control buttons are focused, unless alwaysCaptureHotkeys is true
|
|
||||||
var activeEl = doc.activeElement;
|
|
||||||
if (alwaysCaptureHotkeys ||
|
|
||||||
activeEl == pEl ||
|
|
||||||
activeEl == pEl.querySelector('.vjs-tech') ||
|
|
||||||
activeEl == pEl.querySelector('.vjs-control-bar') ||
|
|
||||||
activeEl == pEl.querySelector('.iframeblocker')) {
|
|
||||||
|
|
||||||
switch (checkKeys(event, player)) {
|
|
||||||
// Spacebar toggles play/pause
|
|
||||||
case cPlay:
|
|
||||||
ePreventDefault();
|
|
||||||
if (alwaysCaptureHotkeys) {
|
|
||||||
// Prevent control activation with space
|
|
||||||
event.stopPropagation();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (player.paused()) {
|
|
||||||
player.play();
|
|
||||||
} else {
|
|
||||||
player.pause();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
// Seeking with the left/right arrow keys
|
|
||||||
case cRewind: // Seek Backward
|
|
||||||
wasPlaying = !player.paused();
|
|
||||||
ePreventDefault();
|
|
||||||
if (wasPlaying) {
|
|
||||||
player.pause();
|
|
||||||
}
|
|
||||||
seekTime = player.currentTime() - seekStepD(event);
|
|
||||||
// The flash player tech will allow you to seek into negative
|
|
||||||
// numbers and break the seekbar, so try to prevent that.
|
|
||||||
if (seekTime <= 0) {
|
|
||||||
seekTime = 0;
|
|
||||||
}
|
|
||||||
player.currentTime(seekTime);
|
|
||||||
if (wasPlaying) {
|
|
||||||
player.play();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case cForward: // Seek Forward
|
|
||||||
wasPlaying = !player.paused();
|
|
||||||
ePreventDefault();
|
|
||||||
if (wasPlaying) {
|
|
||||||
player.pause();
|
|
||||||
}
|
|
||||||
seekTime = player.currentTime() + seekStepD(event);
|
|
||||||
// Fixes the player not sending the end event if you
|
|
||||||
// try to seek past the duration on the seekbar.
|
|
||||||
if (seekTime >= duration) {
|
|
||||||
seekTime = wasPlaying ? duration - .001 : duration;
|
|
||||||
}
|
|
||||||
player.currentTime(seekTime);
|
|
||||||
if (wasPlaying) {
|
|
||||||
player.play();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
// Volume control with the up/down arrow keys
|
|
||||||
case cVolumeDown:
|
|
||||||
ePreventDefault();
|
|
||||||
if (!enableJogStyle) {
|
|
||||||
player.volume(player.volume() - volumeStep);
|
|
||||||
} else {
|
|
||||||
seekTime = player.currentTime() - 1;
|
|
||||||
if (player.currentTime() <= 1) {
|
|
||||||
seekTime = 0;
|
|
||||||
}
|
|
||||||
player.currentTime(seekTime);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case cVolumeUp:
|
|
||||||
ePreventDefault();
|
|
||||||
if (!enableJogStyle) {
|
|
||||||
player.volume(player.volume() + volumeStep);
|
|
||||||
} else {
|
|
||||||
seekTime = player.currentTime() + 1;
|
|
||||||
if (seekTime >= duration) {
|
|
||||||
seekTime = duration;
|
|
||||||
}
|
|
||||||
player.currentTime(seekTime);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
// Toggle Mute with the M key
|
|
||||||
case cMute:
|
|
||||||
if (enableMute) {
|
|
||||||
player.muted(!player.muted());
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
// Toggle Fullscreen with the F key
|
|
||||||
case cFullscreen:
|
|
||||||
if (enableFull) {
|
|
||||||
if (player.isFullscreen()) {
|
|
||||||
player.exitFullscreen();
|
|
||||||
} else {
|
|
||||||
player.requestFullscreen();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
// Number keys from 0-9 skip to a percentage of the video. 0 is 0% and 9 is 90%
|
|
||||||
if ((ewhich > 47 && ewhich < 59) || (ewhich > 95 && ewhich < 106)) {
|
|
||||||
// Do not handle if enableModifiersForNumbers set to false and keys are Ctrl, Cmd or Alt
|
|
||||||
if (enableModifiersForNumbers || !(event.metaKey || event.ctrlKey || event.altKey)) {
|
|
||||||
if (enableNumbers) {
|
|
||||||
var sub = 48;
|
|
||||||
if (ewhich > 95) {
|
|
||||||
sub = 96;
|
|
||||||
}
|
|
||||||
var number = ewhich - sub;
|
|
||||||
ePreventDefault();
|
|
||||||
player.currentTime(player.duration() * number * 0.1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle any custom hotkeys
|
|
||||||
for (var customKey in options.customKeys) {
|
|
||||||
var customHotkey = options.customKeys[customKey];
|
|
||||||
// Check for well formed custom keys
|
|
||||||
if (customHotkey && customHotkey.key && customHotkey.handler) {
|
|
||||||
// Check if the custom key's condition matches
|
|
||||||
if (customHotkey.key(event)) {
|
|
||||||
ePreventDefault();
|
|
||||||
customHotkey.handler(player, options, event);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var doubleClick = function doubleClick(event) {
|
|
||||||
// When controls are disabled, hotkeys will be disabled as well
|
|
||||||
if (player.controls()) {
|
|
||||||
|
|
||||||
// Don't catch clicks if any control buttons are focused
|
|
||||||
var activeEl = event.relatedTarget || event.toElement || doc.activeElement;
|
|
||||||
if (activeEl == pEl ||
|
|
||||||
activeEl == pEl.querySelector('.vjs-tech') ||
|
|
||||||
activeEl == pEl.querySelector('.iframeblocker')) {
|
|
||||||
|
|
||||||
if (enableFull) {
|
|
||||||
if (player.isFullscreen()) {
|
|
||||||
player.exitFullscreen();
|
|
||||||
} else {
|
|
||||||
player.requestFullscreen();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var volumeHover = false;
|
|
||||||
var volumeSelector = pEl.querySelector('.vjs-volume-menu-button') || pEl.querySelector('.vjs-volume-panel');
|
|
||||||
volumeSelector.onmouseover = function() { volumeHover = true; }
|
|
||||||
volumeSelector.onmouseout = function() { volumeHover = false; }
|
|
||||||
|
|
||||||
var mouseScroll = function mouseScroll(event) {
|
|
||||||
if (enableHoverScroll) {
|
|
||||||
// If we leave this undefined then it can match non-existent elements below
|
|
||||||
var activeEl = 0;
|
|
||||||
} else {
|
|
||||||
var activeEl = doc.activeElement;
|
|
||||||
}
|
|
||||||
|
|
||||||
// When controls are disabled, hotkeys will be disabled as well
|
|
||||||
if (player.controls()) {
|
|
||||||
if (alwaysCaptureHotkeys ||
|
|
||||||
activeEl == pEl ||
|
|
||||||
activeEl == pEl.querySelector('.vjs-tech') ||
|
|
||||||
activeEl == pEl.querySelector('.iframeblocker') ||
|
|
||||||
activeEl == pEl.querySelector('.vjs-control-bar') ||
|
|
||||||
volumeHover) {
|
|
||||||
|
|
||||||
if (enableVolumeScroll) {
|
|
||||||
event = window.event || event;
|
|
||||||
var delta = Math.max(-1, Math.min(1, (event.wheelDelta || -event.detail)));
|
|
||||||
event.preventDefault();
|
|
||||||
|
|
||||||
if (delta == 1) {
|
|
||||||
player.volume(player.volume() + volumeStep);
|
|
||||||
} else if (delta == -1) {
|
|
||||||
player.volume(player.volume() - volumeStep);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var checkKeys = function checkKeys(e, player) {
|
|
||||||
// Allow some modularity in defining custom hotkeys
|
|
||||||
|
|
||||||
// Play/Pause check
|
|
||||||
if (options.playPauseKey(e, player)) {
|
|
||||||
return cPlay;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Seek Backward check
|
|
||||||
if (options.rewindKey(e, player)) {
|
|
||||||
return cRewind;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Seek Forward check
|
|
||||||
if (options.forwardKey(e, player)) {
|
|
||||||
return cForward;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Volume Up check
|
|
||||||
if (options.volumeUpKey(e, player)) {
|
|
||||||
return cVolumeUp;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Volume Down check
|
|
||||||
if (options.volumeDownKey(e, player)) {
|
|
||||||
return cVolumeDown;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mute check
|
|
||||||
if (options.muteKey(e, player)) {
|
|
||||||
return cMute;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fullscreen check
|
|
||||||
if (options.fullscreenKey(e, player)) {
|
|
||||||
return cFullscreen;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
function playPauseKey(e) {
|
|
||||||
// Space bar or MediaPlayPause
|
|
||||||
return (e.which === 32 || e.which === 179);
|
|
||||||
}
|
|
||||||
|
|
||||||
function rewindKey(e) {
|
|
||||||
// Left Arrow or MediaRewind
|
|
||||||
return (e.which === 37 || e.which === 177);
|
|
||||||
}
|
|
||||||
|
|
||||||
function forwardKey(e) {
|
|
||||||
// Right Arrow or MediaForward
|
|
||||||
return (e.which === 39 || e.which === 176);
|
|
||||||
}
|
|
||||||
|
|
||||||
function volumeUpKey(e) {
|
|
||||||
// Up Arrow
|
|
||||||
return (e.which === 38);
|
|
||||||
}
|
|
||||||
|
|
||||||
function volumeDownKey(e) {
|
|
||||||
// Down Arrow
|
|
||||||
return (e.which === 40);
|
|
||||||
}
|
|
||||||
|
|
||||||
function muteKey(e) {
|
|
||||||
// M key
|
|
||||||
return (e.which === 77);
|
|
||||||
}
|
|
||||||
|
|
||||||
function fullscreenKey(e) {
|
|
||||||
// F key
|
|
||||||
return (e.which === 70);
|
|
||||||
}
|
|
||||||
|
|
||||||
function seekStepD(e) {
|
|
||||||
// SeekStep caller, returns an int, or a function returning an int
|
|
||||||
return (typeof seekStep === "function" ? seekStep(e) : seekStep);
|
|
||||||
}
|
|
||||||
|
|
||||||
player.on('keydown', keyDown);
|
|
||||||
player.on('dblclick', doubleClick);
|
|
||||||
player.on('mousewheel', mouseScroll);
|
|
||||||
player.on("DOMMouseScroll", mouseScroll);
|
|
||||||
|
|
||||||
return this;
|
|
||||||
};
|
|
||||||
|
|
||||||
var registerPlugin = videojs.registerPlugin || videojs.plugin;
|
|
||||||
registerPlugin('hotkeys', hotkeys);
|
|
||||||
}));
|
|
@ -1,2 +1,3 @@
|
|||||||
/* videojs-hotkeys v0.2.22 - https://github.com/ctd1500/videojs-hotkeys */
|
/* videojs-hotkeys v0.2.25 - https://github.com/ctd1500/videojs-hotkeys */
|
||||||
!function(e,t){"undefined"!=typeof window&&window.videojs?t(window.videojs):"function"==typeof define&&define.amd?define("videojs-hotkeys",["video.js"],function(e){return t(e.default||e)}):"undefined"!=typeof module&&module.exports&&(module.exports=t(require("video.js")))}(0,function(s){"use strict";"undefined"!=typeof window&&(window.videojs_hotkeys={version:"0.2.22"});(s.registerPlugin||s.plugin)("hotkeys",function(m){var y=this,v=y.el(),f=document,e={volumeStep:.1,seekStep:5,enableMute:!0,enableVolumeScroll:!0,enableHoverScroll:!0,enableFullscreen:!0,enableNumbers:!0,enableJogStyle:!1,alwaysCaptureHotkeys:!1,enableModifiersForNumbers:!0,enableInactiveFocus:!0,skipInitialFocus:!1,playPauseKey:function(e){return 32===e.which||179===e.which},rewindKey:function(e){return 37===e.which||177===e.which},forwardKey:function(e){return 39===e.which||176===e.which},volumeUpKey:function(e){return 38===e.which},volumeDownKey:function(e){return 40===e.which},muteKey:function(e){return 77===e.which},fullscreenKey:function(e){return 70===e.which},customKeys:{}},t=s.mergeOptions||s.util.mergeOptions,d=(m=t(e,m||{})).volumeStep,n=m.seekStep,p=m.enableMute,r=m.enableVolumeScroll,o=m.enableHoverScroll,b=m.enableFullscreen,h=m.enableNumbers,w=m.enableJogStyle,k=m.alwaysCaptureHotkeys,S=m.enableModifiersForNumbers,u=m.enableInactiveFocus,l=m.skipInitialFocus;v.hasAttribute("tabIndex")||v.setAttribute("tabIndex","-1"),v.style.outline="none",!k&&y.autoplay()||l||y.one("play",function(){v.focus()}),u&&y.on("userinactive",function(){var n=function(){clearTimeout(e)},e=setTimeout(function(){y.off("useractive",n);var e=f.activeElement,t=v.querySelector(".vjs-control-bar");e&&e.parentElement==t&&v.focus()},10);y.one("useractive",n)}),y.on("play",function(){var e=v.querySelector(".iframeblocker");e&&""===e.style.display&&(e.style.display="block",e.style.bottom="39px")});var i=!1,c=v.querySelector(".vjs-volume-menu-button")||v.querySelector(".vjs-volume-panel");c.onmouseover=function(){i=!0},c.onmouseout=function(){i=!1};var a=function(e){if(o)var t=0;else t=f.activeElement;if(y.controls()&&(k||t==v||t==v.querySelector(".vjs-tech")||t==v.querySelector(".iframeblocker")||t==v.querySelector(".vjs-control-bar")||i)&&r){e=window.event||e;var n=Math.max(-1,Math.min(1,e.wheelDelta||-e.detail));e.preventDefault(),1==n?y.volume(y.volume()+d):-1==n&&y.volume(y.volume()-d)}},K=function(e,t){return m.playPauseKey(e,t)?1:m.rewindKey(e,t)?2:m.forwardKey(e,t)?3:m.volumeUpKey(e,t)?4:m.volumeDownKey(e,t)?5:m.muteKey(e,t)?6:m.fullscreenKey(e,t)?7:void 0};function q(e){return"function"==typeof n?n(e):n}return y.on("keydown",function(e){var t,n,r=e.which,o=e.preventDefault,u=y.duration();if(y.controls()){var l=f.activeElement;if(k||l==v||l==v.querySelector(".vjs-tech")||l==v.querySelector(".vjs-control-bar")||l==v.querySelector(".iframeblocker"))switch(K(e,y)){case 1:o(),k&&e.stopPropagation(),y.paused()?y.play():y.pause();break;case 2:t=!y.paused(),o(),t&&y.pause(),(n=y.currentTime()-q(e))<=0&&(n=0),y.currentTime(n),t&&y.play();break;case 3:t=!y.paused(),o(),t&&y.pause(),u<=(n=y.currentTime()+q(e))&&(n=t?u-.001:u),y.currentTime(n),t&&y.play();break;case 5:o(),w?(n=y.currentTime()-1,y.currentTime()<=1&&(n=0),y.currentTime(n)):y.volume(y.volume()-d);break;case 4:o(),w?(u<=(n=y.currentTime()+1)&&(n=u),y.currentTime(n)):y.volume(y.volume()+d);break;case 6:p&&y.muted(!y.muted());break;case 7:b&&(y.isFullscreen()?y.exitFullscreen():y.requestFullscreen());break;default:if((47<r&&r<59||95<r&&r<106)&&(S||!(e.metaKey||e.ctrlKey||e.altKey))&&h){var i=48;95<r&&(i=96);var c=r-i;o(),y.currentTime(y.duration()*c*.1)}for(var a in m.customKeys){var s=m.customKeys[a];s&&s.key&&s.handler&&s.key(e)&&(o(),s.handler(y,m,e))}}}}),y.on("dblclick",function(e){if(y.controls()){var t=e.relatedTarget||e.toElement||f.activeElement;t!=v&&t!=v.querySelector(".vjs-tech")&&t!=v.querySelector(".iframeblocker")||b&&(y.isFullscreen()?y.exitFullscreen():y.requestFullscreen())}}),y.on("mousewheel",a),y.on("DOMMouseScroll",a),this})});
|
!function(e,n){"undefined"!=typeof window&&window.videojs?n(window.videojs):"function"==typeof define&&define.amd?define("videojs-hotkeys",["video.js"],function(e){return n(e.default||e)}):"undefined"!=typeof module&&module.exports&&(module.exports=n(require("video.js")))}(0,function(e){"use strict";"undefined"!=typeof window&&(window.videojs_hotkeys={version:"0.2.25"});(e.registerPlugin||e.plugin)("hotkeys",function(n){function t(e){return"function"==typeof s?s(e):s}function r(e){null!=e&&"function"==typeof e.then&&e.then(null,function(e){})}var o=this,u=o.el(),l=document,i={volumeStep:.1,seekStep:5,enableMute:!0,enableVolumeScroll:!0,enableHoverScroll:!1,enableFullscreen:!0,enableNumbers:!0,enableJogStyle:!1,alwaysCaptureHotkeys:!1,enableModifiersForNumbers:!0,enableInactiveFocus:!0,skipInitialFocus:!1,playPauseKey:function(e){return 32===e.which||179===e.which},rewindKey:function(e){return 37===e.which||177===e.which},forwardKey:function(e){return 39===e.which||176===e.which},volumeUpKey:function(e){return 38===e.which},volumeDownKey:function(e){return 40===e.which},muteKey:function(e){return 77===e.which},fullscreenKey:function(e){return 70===e.which},customKeys:{}},c=e.mergeOptions||e.util.mergeOptions,a=(n=c(i,n||{})).volumeStep,s=n.seekStep,m=n.enableMute,f=n.enableVolumeScroll,y=n.enableHoverScroll,v=n.enableFullscreen,d=n.enableNumbers,p=n.enableJogStyle,b=n.alwaysCaptureHotkeys,h=n.enableModifiersForNumbers,w=n.enableInactiveFocus,k=n.skipInitialFocus,S=e.VERSION;u.hasAttribute("tabIndex")||u.setAttribute("tabIndex","-1"),u.style.outline="none",!b&&o.autoplay()||k||o.one("play",function(){u.focus()}),w&&o.on("userinactive",function(){var e=function(){clearTimeout(n)},n=setTimeout(function(){o.off("useractive",e);var n=l.activeElement,t=u.querySelector(".vjs-control-bar");n&&n.parentElement==t&&u.focus()},10);o.one("useractive",e)}),o.on("play",function(){var e=u.querySelector(".iframeblocker");e&&""===e.style.display&&(e.style.display="block",e.style.bottom="39px")});var K=!1,q=u.querySelector(".vjs-volume-menu-button")||u.querySelector(".vjs-volume-panel");null!=q&&(q.onmouseover=function(){K=!0},q.onmouseout=function(){K=!1});var j=function(e){if(y)n=0;else var n=l.activeElement;if(o.controls()&&(b||n==u||n==u.querySelector(".vjs-tech")||n==u.querySelector(".iframeblocker")||n==u.querySelector(".vjs-control-bar")||K)&&f){e=window.event||e;var t=Math.max(-1,Math.min(1,e.wheelDelta||-e.detail));e.preventDefault(),1==t?o.volume(o.volume()+a):-1==t&&o.volume(o.volume()-a)}},F=function(e,t){return n.playPauseKey(e,t)?1:n.rewindKey(e,t)?2:n.forwardKey(e,t)?3:n.volumeUpKey(e,t)?4:n.volumeDownKey(e,t)?5:n.muteKey(e,t)?6:n.fullscreenKey(e,t)?7:void 0};return o.on("keydown",function(e){var i,c,s=e.which,f=e.preventDefault,y=o.duration();if(o.controls()){var w=l.activeElement;if(b||w==u||w==u.querySelector(".vjs-tech")||w==u.querySelector(".vjs-control-bar")||w==u.querySelector(".iframeblocker"))switch(F(e,o)){case 1:f(),b&&e.stopPropagation(),o.paused()?r(o.play()):o.pause();break;case 2:i=!o.paused(),f(),i&&o.pause(),(c=o.currentTime()-t(e))<=0&&(c=0),o.currentTime(c),i&&r(o.play());break;case 3:i=!o.paused(),f(),i&&o.pause(),(c=o.currentTime()+t(e))>=y&&(c=i?y-.001:y),o.currentTime(c),i&&r(o.play());break;case 5:f(),p?(c=o.currentTime()-1,o.currentTime()<=1&&(c=0),o.currentTime(c)):o.volume(o.volume()-a);break;case 4:f(),p?((c=o.currentTime()+1)>=y&&(c=y),o.currentTime(c)):o.volume(o.volume()+a);break;case 6:m&&o.muted(!o.muted());break;case 7:v&&(o.isFullscreen()?o.exitFullscreen():o.requestFullscreen());break;default:if((s>47&&s<59||s>95&&s<106)&&(h||!(e.metaKey||e.ctrlKey||e.altKey))&&d){var k=48;s>95&&(k=96);var S=s-k;f(),o.currentTime(o.duration()*S*.1)}for(var K in n.customKeys){var q=n.customKeys[K];q&&q.key&&q.handler&&q.key(e)&&(f(),q.handler(o,n,e))}}}}),o.on("dblclick",function(e){if(null!=S&&S<="7.1.0"&&o.controls()){var n=e.relatedTarget||e.toElement||l.activeElement;n!=u&&n!=u.querySelector(".vjs-tech")&&n!=u.querySelector(".iframeblocker")||v&&(o.isFullscreen()?o.exitFullscreen():o.requestFullscreen())}}),o.on("mousewheel",j),o.on("DOMMouseScroll",j),this})});
|
||||||
|
//# sourceMappingURL=videojs.hotkeys.min.js.map
|
Loading…
Reference in New Issue