videojs-playlist
Version:
Playlist plugin for Video.js
133 lines (104 loc) • 3.8 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: auto-advance.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: auto-advance.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>import window from 'global/window';
/**
* Validates a number of seconds to use as the auto-advance delay.
*
* @private
* @param {number} s
* The number to check
*
* @return {boolean}
* Whether this is a valid second or not
*/
const validSeconds = s =>
typeof s === 'number' && !isNaN(s) && s >= 0 && s < Infinity;
/**
* Resets the auto-advance behavior of a player.
*
* @param {Player} player
* The player to reset the behavior on
*/
let reset = (player) => {
if (player.playlist.autoadvance_.timeout) {
window.clearTimeout(player.playlist.autoadvance_.timeout);
}
if (player.playlist.autoadvance_.trigger) {
player.off('ended', player.playlist.autoadvance_.trigger);
}
player.playlist.autoadvance_.timeout = null;
player.playlist.autoadvance_.trigger = null;
};
/**
* Sets up auto-advance behavior on a player.
*
* @param {Player} player
* the current player
*
* @param {number} delay
* The number of seconds to wait before each auto-advance.
*
* @return {undefined}
* Used to short circuit function logic
*/
const setup = (player, delay) => {
reset(player);
// Before queuing up new auto-advance behavior, check if `seconds` was
// called with a valid value.
if (!validSeconds(delay)) {
return;
}
player.playlist.autoadvance_.trigger = function() {
player.playlist.autoadvance_.timeout = window.setTimeout(() => {
reset(player);
player.playlist.next();
}, delay * 1000);
};
player.one('ended', player.playlist.autoadvance_.trigger);
};
/**
* Used to change the reset function in this module at runtime
* This should only be used in tests.
*
* @param {Function} fn
* The function to se the reset to
*/
const setReset_ = (fn) => {
reset = fn;
};
export {
setReset_,
reset,
setup
};
</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#autoadvance">autoadvance</a></li><li><a href="global.html#clearTracks">clearTracks</a></li><li><a href="global.html#contains">contains</a></li><li><a href="global.html#currentItem">currentItem</a></li><li><a href="global.html#factory">factory</a></li><li><a href="global.html#first">first</a></li><li><a href="global.html#indexOf">indexOf</a></li><li><a href="global.html#last">last</a></li><li><a href="global.html#next">next</a></li><li><a href="global.html#playItem">playItem</a></li><li><a href="global.html#plugin">plugin</a></li><li><a href="global.html#previous">previous</a></li><li><a href="global.html#repeat">repeat</a></li><li><a href="global.html#reset">reset</a></li><li><a href="global.html#setReset_">setReset_</a></li><li><a href="global.html#setup">setup</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Mon Nov 13 2017 16:41:55 GMT-0500 (EST)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>