clean up trailing whitespace (closes #197)
This commit is contained in:
parent
c6f8a44edf
commit
8bdeb360ce
224
js/reveal.js
224
js/reveal.js
|
@ -2,17 +2,17 @@
|
||||||
* reveal.js 2.1 r35
|
* reveal.js 2.1 r35
|
||||||
* http://lab.hakim.se/reveal-js
|
* http://lab.hakim.se/reveal-js
|
||||||
* MIT licensed
|
* MIT licensed
|
||||||
*
|
*
|
||||||
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
|
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
|
||||||
*/
|
*/
|
||||||
var Reveal = (function(){
|
var Reveal = (function(){
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var HORIZONTAL_SLIDES_SELECTOR = '.reveal .slides>section',
|
var HORIZONTAL_SLIDES_SELECTOR = '.reveal .slides>section',
|
||||||
VERTICAL_SLIDES_SELECTOR = '.reveal .slides>section.present>section',
|
VERTICAL_SLIDES_SELECTOR = '.reveal .slides>section.present>section',
|
||||||
|
|
||||||
// Configurations defaults, can be overridden at initialization time
|
// Configurations defaults, can be overridden at initialization time
|
||||||
config = {
|
config = {
|
||||||
// Display controls in the bottom right corner
|
// Display controls in the bottom right corner
|
||||||
controls: true,
|
controls: true,
|
||||||
|
@ -32,7 +32,7 @@ var Reveal = (function(){
|
||||||
// Loop the presentation
|
// Loop the presentation
|
||||||
loop: false,
|
loop: false,
|
||||||
|
|
||||||
// Number of milliseconds between automatically proceeding to the
|
// Number of milliseconds between automatically proceeding to the
|
||||||
// next slide, disabled when set to 0, this value can be overwritten
|
// next slide, disabled when set to 0, this value can be overwritten
|
||||||
// by using a data-autoslide attribute on your slides
|
// by using a data-autoslide attribute on your slides
|
||||||
autoSlide: 0,
|
autoSlide: 0,
|
||||||
|
@ -44,7 +44,7 @@ var Reveal = (function(){
|
||||||
rollingLinks: true,
|
rollingLinks: true,
|
||||||
|
|
||||||
// Transition style (see /css/theme)
|
// Transition style (see /css/theme)
|
||||||
theme: null,
|
theme: null,
|
||||||
|
|
||||||
// Transition style
|
// Transition style
|
||||||
transition: 'default', // default/cube/page/concave/zoom/linear/none
|
transition: 'default', // default/cube/page/concave/zoom/linear/none
|
||||||
|
@ -65,8 +65,8 @@ var Reveal = (function(){
|
||||||
previousSlide,
|
previousSlide,
|
||||||
currentSlide,
|
currentSlide,
|
||||||
|
|
||||||
// Slides may hold a data-state attribute which we pick up and apply
|
// Slides may hold a data-state attribute which we pick up and apply
|
||||||
// as a class to the body. This list contains the combined state of
|
// as a class to the body. This list contains the combined state of
|
||||||
// all current slides.
|
// all current slides.
|
||||||
state = [],
|
state = [],
|
||||||
|
|
||||||
|
@ -79,13 +79,13 @@ var Reveal = (function(){
|
||||||
'msPerspective' in document.body.style ||
|
'msPerspective' in document.body.style ||
|
||||||
'OPerspective' in document.body.style ||
|
'OPerspective' in document.body.style ||
|
||||||
'perspective' in document.body.style,
|
'perspective' in document.body.style,
|
||||||
|
|
||||||
supports2DTransforms = 'WebkitTransform' in document.body.style ||
|
supports2DTransforms = 'WebkitTransform' in document.body.style ||
|
||||||
'MozTransform' in document.body.style ||
|
'MozTransform' in document.body.style ||
|
||||||
'msTransform' in document.body.style ||
|
'msTransform' in document.body.style ||
|
||||||
'OTransform' in document.body.style ||
|
'OTransform' in document.body.style ||
|
||||||
'transform' in document.body.style,
|
'transform' in document.body.style,
|
||||||
|
|
||||||
// Throttles mouse wheel navigation
|
// Throttles mouse wheel navigation
|
||||||
mouseWheelTimeout = 0,
|
mouseWheelTimeout = 0,
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ var Reveal = (function(){
|
||||||
handled: false,
|
handled: false,
|
||||||
threshold: 80
|
threshold: 80
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts up the presentation if the client is capable.
|
* Starts up the presentation if the client is capable.
|
||||||
*/
|
*/
|
||||||
|
@ -112,7 +112,7 @@ var Reveal = (function(){
|
||||||
if( ( !supports2DTransforms && !supports3DTransforms ) ) {
|
if( ( !supports2DTransforms && !supports3DTransforms ) ) {
|
||||||
document.body.setAttribute( 'class', 'no-transforms' );
|
document.body.setAttribute( 'class', 'no-transforms' );
|
||||||
|
|
||||||
// If the browser doesn't support core features we won't be
|
// If the browser doesn't support core features we won't be
|
||||||
// using JavaScript to control the presentation
|
// using JavaScript to control the presentation
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -125,12 +125,12 @@ var Reveal = (function(){
|
||||||
|
|
||||||
// Loads the dependencies and continues to #start() once done
|
// Loads the dependencies and continues to #start() once done
|
||||||
load();
|
load();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds and stores references to DOM elements which are
|
* Finds and stores references to DOM elements which are
|
||||||
* required by the presentation. If a required element is
|
* required by the presentation. If a required element is
|
||||||
* not found, it is created.
|
* not found, it is created.
|
||||||
*/
|
*/
|
||||||
function setupDOM() {
|
function setupDOM() {
|
||||||
|
@ -200,10 +200,10 @@ var Reveal = (function(){
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the dependencies of reveal.js. Dependencies are
|
* Loads the dependencies of reveal.js. Dependencies are
|
||||||
* defined via the configuration option 'dependencies'
|
* defined via the configuration option 'dependencies'
|
||||||
* and will be loaded prior to starting/binding reveal.js.
|
* and will be loaded prior to starting/binding reveal.js.
|
||||||
* Some dependencies may have an 'async' flag, if so they
|
* Some dependencies may have an 'async' flag, if so they
|
||||||
* will load after reveal.js has been started up.
|
* will load after reveal.js has been started up.
|
||||||
*/
|
*/
|
||||||
function load() {
|
function load() {
|
||||||
|
@ -233,7 +233,7 @@ var Reveal = (function(){
|
||||||
function proceed() {
|
function proceed() {
|
||||||
// Load asynchronous scripts
|
// Load asynchronous scripts
|
||||||
head.js.apply( null, scriptsAsync );
|
head.js.apply( null, scriptsAsync );
|
||||||
|
|
||||||
start();
|
start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -249,13 +249,13 @@ var Reveal = (function(){
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts up reveal.js by binding input events and navigating
|
* Starts up reveal.js by binding input events and navigating
|
||||||
* to the current URL deeplink if there is one.
|
* to the current URL deeplink if there is one.
|
||||||
*/
|
*/
|
||||||
function start() {
|
function start() {
|
||||||
// Make sure we've got all the DOM elements we need
|
// Make sure we've got all the DOM elements we need
|
||||||
setupDOM();
|
setupDOM();
|
||||||
|
|
||||||
// Subscribe to input
|
// Subscribe to input
|
||||||
addEventListeners();
|
addEventListeners();
|
||||||
|
|
||||||
|
@ -340,7 +340,7 @@ var Reveal = (function(){
|
||||||
dom.controlsLeft.addEventListener( 'click', preventAndForward( navigateLeft ), false );
|
dom.controlsLeft.addEventListener( 'click', preventAndForward( navigateLeft ), false );
|
||||||
dom.controlsRight.addEventListener( 'click', preventAndForward( navigateRight ), false );
|
dom.controlsRight.addEventListener( 'click', preventAndForward( navigateRight ), false );
|
||||||
dom.controlsUp.addEventListener( 'click', preventAndForward( navigateUp ), false );
|
dom.controlsUp.addEventListener( 'click', preventAndForward( navigateUp ), false );
|
||||||
dom.controlsDown.addEventListener( 'click', preventAndForward( navigateDown ), false );
|
dom.controlsDown.addEventListener( 'click', preventAndForward( navigateDown ), false );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -357,7 +357,7 @@ var Reveal = (function(){
|
||||||
if ( config.progress && dom.progress ) {
|
if ( config.progress && dom.progress ) {
|
||||||
dom.progress.removeEventListener( 'click', preventAndForward( onProgressClick ), false );
|
dom.progress.removeEventListener( 'click', preventAndForward( onProgressClick ), false );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( config.controls && dom.controls ) {
|
if ( config.controls && dom.controls ) {
|
||||||
dom.controlsLeft.removeEventListener( 'click', preventAndForward( navigateLeft ), false );
|
dom.controlsLeft.removeEventListener( 'click', preventAndForward( navigateLeft ), false );
|
||||||
dom.controlsRight.removeEventListener( 'click', preventAndForward( navigateRight ), false );
|
dom.controlsRight.removeEventListener( 'click', preventAndForward( navigateRight ), false );
|
||||||
|
@ -367,7 +367,7 @@ var Reveal = (function(){
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extend object a with the properties of object b.
|
* Extend object a with the properties of object b.
|
||||||
* If there's a conflict, object b takes precedence.
|
* If there's a conflict, object b takes precedence.
|
||||||
*/
|
*/
|
||||||
function extend( a, b ) {
|
function extend( a, b ) {
|
||||||
|
@ -378,8 +378,8 @@ var Reveal = (function(){
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Measures the distance in pixels between point a
|
* Measures the distance in pixels between point a
|
||||||
* and point b.
|
* and point b.
|
||||||
*
|
*
|
||||||
* @param {Object} a point with x/y properties
|
* @param {Object} a point with x/y properties
|
||||||
* @param {Object} b point with x/y properties
|
* @param {Object} b point with x/y properties
|
||||||
*/
|
*/
|
||||||
|
@ -391,10 +391,10 @@ var Reveal = (function(){
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prevents an events defaults behavior calls the
|
* Prevents an events defaults behavior calls the
|
||||||
* specified delegate.
|
* specified delegate.
|
||||||
*
|
*
|
||||||
* @param {Function} delegate The method to call
|
* @param {Function} delegate The method to call
|
||||||
* after the wrapper has been executed
|
* after the wrapper has been executed
|
||||||
*/
|
*/
|
||||||
function preventAndForward( delegate ) {
|
function preventAndForward( delegate ) {
|
||||||
|
@ -405,7 +405,7 @@ var Reveal = (function(){
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Causes the address bar to hide on mobile devices,
|
* Causes the address bar to hide on mobile devices,
|
||||||
* more vertical space ftw.
|
* more vertical space ftw.
|
||||||
*/
|
*/
|
||||||
function removeAddressBar() {
|
function removeAddressBar() {
|
||||||
|
@ -415,7 +415,7 @@ var Reveal = (function(){
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dispatches an event of the specified type from the
|
* Dispatches an event of the specified type from the
|
||||||
* reveal DOM element.
|
* reveal DOM element.
|
||||||
*/
|
*/
|
||||||
function dispatchEvent( type, properties ) {
|
function dispatchEvent( type, properties ) {
|
||||||
|
@ -434,7 +434,7 @@ var Reveal = (function(){
|
||||||
|
|
||||||
for( var i = 0, len = nodes.length; i < len; i++ ) {
|
for( var i = 0, len = nodes.length; i < len; i++ ) {
|
||||||
var node = nodes[i];
|
var node = nodes[i];
|
||||||
|
|
||||||
if( node.textContent && !node.querySelector( 'img' ) && ( !node.className || !node.classList.contains( node, 'roll' ) ) ) {
|
if( node.textContent && !node.querySelector( 'img' ) && ( !node.className || !node.classList.contains( node, 'roll' ) ) ) {
|
||||||
node.classList.add( 'roll' );
|
node.classList.add( 'roll' );
|
||||||
node.innerHTML = '<span data-title="'+ node.text +'">' + node.innerHTML + '</span>';
|
node.innerHTML = '<span data-title="'+ node.text +'">' + node.innerHTML + '</span>';
|
||||||
|
@ -444,17 +444,17 @@ var Reveal = (function(){
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays the overview of slides (quick nav) by
|
* Displays the overview of slides (quick nav) by
|
||||||
* scaling down and arranging all slide elements.
|
* scaling down and arranging all slide elements.
|
||||||
*
|
*
|
||||||
* Experimental feature, might be dropped if perf
|
* Experimental feature, might be dropped if perf
|
||||||
* can't be improved.
|
* can't be improved.
|
||||||
*/
|
*/
|
||||||
function activateOverview() {
|
function activateOverview() {
|
||||||
|
|
||||||
// Only proceed if enabled in config
|
// Only proceed if enabled in config
|
||||||
if( config.overview ) {
|
if( config.overview ) {
|
||||||
|
|
||||||
dom.wrapper.classList.add( 'overview' );
|
dom.wrapper.classList.add( 'overview' );
|
||||||
|
|
||||||
var horizontalSlides = document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR );
|
var horizontalSlides = document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR );
|
||||||
|
@ -462,7 +462,7 @@ var Reveal = (function(){
|
||||||
for( var i = 0, len1 = horizontalSlides.length; i < len1; i++ ) {
|
for( var i = 0, len1 = horizontalSlides.length; i < len1; i++ ) {
|
||||||
var hslide = horizontalSlides[i],
|
var hslide = horizontalSlides[i],
|
||||||
htransform = 'translateZ(-2500px) translate(' + ( ( i - indexh ) * 105 ) + '%, 0%)';
|
htransform = 'translateZ(-2500px) translate(' + ( ( i - indexh ) * 105 ) + '%, 0%)';
|
||||||
|
|
||||||
hslide.setAttribute( 'data-index-h', i );
|
hslide.setAttribute( 'data-index-h', i );
|
||||||
hslide.style.display = 'block';
|
hslide.style.display = 'block';
|
||||||
hslide.style.WebkitTransform = htransform;
|
hslide.style.WebkitTransform = htransform;
|
||||||
|
@ -470,12 +470,12 @@ var Reveal = (function(){
|
||||||
hslide.style.msTransform = htransform;
|
hslide.style.msTransform = htransform;
|
||||||
hslide.style.OTransform = htransform;
|
hslide.style.OTransform = htransform;
|
||||||
hslide.style.transform = htransform;
|
hslide.style.transform = htransform;
|
||||||
|
|
||||||
if( !hslide.classList.contains( 'stack' ) ) {
|
if( !hslide.classList.contains( 'stack' ) ) {
|
||||||
// Navigate to this slide on click
|
// Navigate to this slide on click
|
||||||
hslide.addEventListener( 'click', onOverviewSlideClicked, true );
|
hslide.addEventListener( 'click', onOverviewSlideClicked, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
var verticalSlides = hslide.querySelectorAll( 'section' );
|
var verticalSlides = hslide.querySelectorAll( 'section' );
|
||||||
|
|
||||||
for( var j = 0, len2 = verticalSlides.length; j < len2; j++ ) {
|
for( var j = 0, len2 = verticalSlides.length; j < len2; j++ ) {
|
||||||
|
@ -494,19 +494,19 @@ var Reveal = (function(){
|
||||||
// Navigate to this slide on click
|
// Navigate to this slide on click
|
||||||
vslide.addEventListener( 'click', onOverviewSlideClicked, true );
|
vslide.addEventListener( 'click', onOverviewSlideClicked, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Exits the slide overview and enters the currently
|
* Exits the slide overview and enters the currently
|
||||||
* active slide.
|
* active slide.
|
||||||
*/
|
*/
|
||||||
function deactivateOverview() {
|
function deactivateOverview() {
|
||||||
|
|
||||||
// Only proceed if enabled in config
|
// Only proceed if enabled in config
|
||||||
if( config.overview ) {
|
if( config.overview ) {
|
||||||
|
|
||||||
|
@ -529,15 +529,15 @@ var Reveal = (function(){
|
||||||
}
|
}
|
||||||
|
|
||||||
slide();
|
slide();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Toggles the slide overview mode on and off.
|
* Toggles the slide overview mode on and off.
|
||||||
*
|
*
|
||||||
* @param {Boolean} override Optional flag which overrides the
|
* @param {Boolean} override Optional flag which overrides the
|
||||||
* toggle logic and forcibly sets the desired state. True means
|
* toggle logic and forcibly sets the desired state. True means
|
||||||
* overview is open, false means it's closed.
|
* overview is open, false means it's closed.
|
||||||
*/
|
*/
|
||||||
function toggleOverview( override ) {
|
function toggleOverview( override ) {
|
||||||
|
@ -551,7 +551,7 @@ var Reveal = (function(){
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if the overview is currently active.
|
* Checks if the overview is currently active.
|
||||||
*
|
*
|
||||||
* @return {Boolean} true if the overview is active,
|
* @return {Boolean} true if the overview is active,
|
||||||
* false otherwise
|
* false otherwise
|
||||||
*/
|
*/
|
||||||
|
@ -561,26 +561,26 @@ var Reveal = (function(){
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handling the fullscreen functionality via the fullscreen API
|
* Handling the fullscreen functionality via the fullscreen API
|
||||||
*
|
*
|
||||||
* @see http://fullscreen.spec.whatwg.org/
|
* @see http://fullscreen.spec.whatwg.org/
|
||||||
* @see https://developer.mozilla.org/en-US/docs/DOM/Using_fullscreen_mode
|
* @see https://developer.mozilla.org/en-US/docs/DOM/Using_fullscreen_mode
|
||||||
*/
|
*/
|
||||||
function enterFullscreen() {
|
function enterFullscreen() {
|
||||||
var element = document.body;
|
var element = document.body;
|
||||||
|
|
||||||
// Check which implementation is available
|
// Check which implementation is available
|
||||||
var requestMethod = element.requestFullScreen ||
|
var requestMethod = element.requestFullScreen ||
|
||||||
element.webkitRequestFullScreen ||
|
element.webkitRequestFullScreen ||
|
||||||
element.mozRequestFullScreen ||
|
element.mozRequestFullScreen ||
|
||||||
element.msRequestFullScreen;
|
element.msRequestFullScreen;
|
||||||
|
|
||||||
if( requestMethod ) {
|
if( requestMethod ) {
|
||||||
requestMethod.apply( element );
|
requestMethod.apply( element );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enters the paused mode which fades everything on screen to
|
* Enters the paused mode which fades everything on screen to
|
||||||
* black.
|
* black.
|
||||||
*/
|
*/
|
||||||
function pause() {
|
function pause() {
|
||||||
|
@ -612,11 +612,11 @@ var Reveal = (function(){
|
||||||
function isPaused() {
|
function isPaused() {
|
||||||
return dom.wrapper.classList.contains( 'paused' );
|
return dom.wrapper.classList.contains( 'paused' );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Steps from the current point in the presentation to the
|
* Steps from the current point in the presentation to the
|
||||||
* slide which matches the specified horizontal and vertical
|
* slide which matches the specified horizontal and vertical
|
||||||
* indices.
|
* indices.
|
||||||
*
|
*
|
||||||
* @param {int} h Horizontal index of the target slide
|
* @param {int} h Horizontal index of the target slide
|
||||||
* @param {int} v Vertical index of the target slide
|
* @param {int} v Vertical index of the target slide
|
||||||
|
@ -640,7 +640,7 @@ var Reveal = (function(){
|
||||||
|
|
||||||
// Apply the new state
|
// Apply the new state
|
||||||
stateLoop: for( var i = 0, len = state.length; i < len; i++ ) {
|
stateLoop: for( var i = 0, len = state.length; i < len; i++ ) {
|
||||||
// Check if this state existed on the previous slide. If it
|
// Check if this state existed on the previous slide. If it
|
||||||
// did, we will avoid adding it repeatedly.
|
// did, we will avoid adding it repeatedly.
|
||||||
for( var j = 0; j < stateBefore.length; j++ ) {
|
for( var j = 0; j < stateBefore.length; j++ ) {
|
||||||
if( stateBefore[j] === state[i] ) {
|
if( stateBefore[j] === state[i] ) {
|
||||||
|
@ -671,7 +671,7 @@ var Reveal = (function(){
|
||||||
}
|
}
|
||||||
|
|
||||||
updateControls();
|
updateControls();
|
||||||
|
|
||||||
// Update the URL hash after a delay since updating it mid-transition
|
// Update the URL hash after a delay since updating it mid-transition
|
||||||
// is likely to cause visual lag
|
// is likely to cause visual lag
|
||||||
clearTimeout( writeURLTimeout );
|
clearTimeout( writeURLTimeout );
|
||||||
|
@ -691,7 +691,7 @@ var Reveal = (function(){
|
||||||
// Dispatch an event if the slide changed
|
// Dispatch an event if the slide changed
|
||||||
if( indexh !== indexhBefore || indexv !== indexvBefore ) {
|
if( indexh !== indexhBefore || indexv !== indexvBefore ) {
|
||||||
dispatchEvent( 'slidechanged', {
|
dispatchEvent( 'slidechanged', {
|
||||||
'indexh': indexh,
|
'indexh': indexh,
|
||||||
'indexv': indexv,
|
'indexv': indexv,
|
||||||
'previousSlide': previousSlide,
|
'previousSlide': previousSlide,
|
||||||
'currentSlide': currentSlide
|
'currentSlide': currentSlide
|
||||||
|
@ -702,8 +702,8 @@ var Reveal = (function(){
|
||||||
previousSlide = null;
|
previousSlide = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Solves an edge case where the previous slide maintains the
|
// Solves an edge case where the previous slide maintains the
|
||||||
// 'present' class when navigating between adjacent vertical
|
// 'present' class when navigating between adjacent vertical
|
||||||
// stacks
|
// stacks
|
||||||
if( previousSlide ) {
|
if( previousSlide ) {
|
||||||
previousSlide.classList.remove( 'present' );
|
previousSlide.classList.remove( 'present' );
|
||||||
|
@ -713,14 +713,14 @@ var Reveal = (function(){
|
||||||
/**
|
/**
|
||||||
* Updates one dimension of slides by showing the slide
|
* Updates one dimension of slides by showing the slide
|
||||||
* with the specified index.
|
* with the specified index.
|
||||||
*
|
*
|
||||||
* @param {String} selector A CSS selector that will fetch
|
* @param {String} selector A CSS selector that will fetch
|
||||||
* the group of slides we are working with
|
* the group of slides we are working with
|
||||||
* @param {Number} index The index of the slide that should be
|
* @param {Number} index The index of the slide that should be
|
||||||
* shown
|
* shown
|
||||||
*
|
*
|
||||||
* @return {Number} The index of the slide that is now shown,
|
* @return {Number} The index of the slide that is now shown,
|
||||||
* might differ from the passed in index if it was out of
|
* might differ from the passed in index if it was out of
|
||||||
* bounds.
|
* bounds.
|
||||||
*/
|
*/
|
||||||
function updateSlides( selector, index ) {
|
function updateSlides( selector, index ) {
|
||||||
|
@ -728,7 +728,7 @@ var Reveal = (function(){
|
||||||
// an array
|
// an array
|
||||||
var slides = Array.prototype.slice.call( document.querySelectorAll( selector ) ),
|
var slides = Array.prototype.slice.call( document.querySelectorAll( selector ) ),
|
||||||
slidesLength = slides.length;
|
slidesLength = slides.length;
|
||||||
|
|
||||||
if( slidesLength ) {
|
if( slidesLength ) {
|
||||||
|
|
||||||
// Should the index loop?
|
// Should the index loop?
|
||||||
|
@ -739,14 +739,14 @@ var Reveal = (function(){
|
||||||
index = slidesLength + index;
|
index = slidesLength + index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enforce max and minimum index bounds
|
// Enforce max and minimum index bounds
|
||||||
index = Math.max( Math.min( index, slidesLength - 1 ), 0 );
|
index = Math.max( Math.min( index, slidesLength - 1 ), 0 );
|
||||||
|
|
||||||
for( var i = 0; i < slidesLength; i++ ) {
|
for( var i = 0; i < slidesLength; i++ ) {
|
||||||
var element = slides[i];
|
var element = slides[i];
|
||||||
|
|
||||||
// Optimization; hide all slides that are three or more steps
|
// Optimization; hide all slides that are three or more steps
|
||||||
// away from the present slide
|
// away from the present slide
|
||||||
if( isOverviewActive() === false ) {
|
if( isOverviewActive() === false ) {
|
||||||
// The distance loops so that it measures 1 between the first
|
// The distance loops so that it measures 1 between the first
|
||||||
|
@ -785,7 +785,7 @@ var Reveal = (function(){
|
||||||
state = state.concat( slideState.split( ' ' ) );
|
state = state.concat( slideState.split( ' ' ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// If this slide has a data-autoslide attribtue associated use this as
|
// If this slide has a data-autoslide attribtue associated use this as
|
||||||
// autoSlide value otherwise use the global configured time
|
// autoSlide value otherwise use the global configured time
|
||||||
var slideAutoSlide = slides[index].getAttribute( 'data-autoslide' );
|
var slideAutoSlide = slides[index].getAttribute( 'data-autoslide' );
|
||||||
if( slideAutoSlide ) {
|
if( slideAutoSlide ) {
|
||||||
|
@ -796,13 +796,13 @@ var Reveal = (function(){
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Since there are no slides we can't be anywhere beyond the
|
// Since there are no slides we can't be anywhere beyond the
|
||||||
// zeroth index
|
// zeroth index
|
||||||
index = 0;
|
index = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return index;
|
return index;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -810,7 +810,7 @@ var Reveal = (function(){
|
||||||
*/
|
*/
|
||||||
function updateControls() {
|
function updateControls() {
|
||||||
if ( config.controls && dom.controls ) {
|
if ( config.controls && dom.controls ) {
|
||||||
|
|
||||||
var routes = availableRoutes();
|
var routes = availableRoutes();
|
||||||
|
|
||||||
// Remove the 'enabled' class from all directions
|
// Remove the 'enabled' class from all directions
|
||||||
|
@ -829,7 +829,7 @@ var Reveal = (function(){
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine what available routes there are for navigation.
|
* Determine what available routes there are for navigation.
|
||||||
*
|
*
|
||||||
* @return {Object} containing four booleans: left/right/up/down
|
* @return {Object} containing four booleans: left/right/up/down
|
||||||
*/
|
*/
|
||||||
function availableRoutes() {
|
function availableRoutes() {
|
||||||
|
@ -843,7 +843,7 @@ var Reveal = (function(){
|
||||||
down: indexv < verticalSlides.length - 1
|
down: indexv < verticalSlides.length - 1
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads the current URL (hash) and navigates accordingly.
|
* Reads the current URL (hash) and navigates accordingly.
|
||||||
*/
|
*/
|
||||||
|
@ -854,7 +854,7 @@ var Reveal = (function(){
|
||||||
var bits = hash.slice( 2 ).split( '/' ),
|
var bits = hash.slice( 2 ).split( '/' ),
|
||||||
name = hash.replace( /#|\//gi, '' );
|
name = hash.replace( /#|\//gi, '' );
|
||||||
|
|
||||||
// If the first bit is invalid and there is a name we can
|
// If the first bit is invalid and there is a name we can
|
||||||
// assume that this is a named link
|
// assume that this is a named link
|
||||||
if( isNaN( parseInt( bits[0], 10 ) ) && name.length ) {
|
if( isNaN( parseInt( bits[0], 10 ) ) && name.length ) {
|
||||||
// Find the slide with the specified name
|
// Find the slide with the specified name
|
||||||
|
@ -878,32 +878,32 @@ var Reveal = (function(){
|
||||||
slide( h, v );
|
slide( h, v );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the page URL (hash) to reflect the current
|
* Updates the page URL (hash) to reflect the current
|
||||||
* state.
|
* state.
|
||||||
*/
|
*/
|
||||||
function writeURL() {
|
function writeURL() {
|
||||||
if( config.history ) {
|
if( config.history ) {
|
||||||
var url = '/';
|
var url = '/';
|
||||||
|
|
||||||
// Only include the minimum possible number of components in
|
// Only include the minimum possible number of components in
|
||||||
// the URL
|
// the URL
|
||||||
if( indexh > 0 || indexv > 0 ) url += indexh;
|
if( indexh > 0 || indexv > 0 ) url += indexh;
|
||||||
if( indexv > 0 ) url += '/' + indexv;
|
if( indexv > 0 ) url += '/' + indexv;
|
||||||
|
|
||||||
window.location.hash = url;
|
window.location.hash = url;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the h/v location of the current, or specified,
|
* Retrieves the h/v location of the current, or specified,
|
||||||
* slide.
|
* slide.
|
||||||
*
|
*
|
||||||
* @param {HTMLElement} slide If specified, the returned
|
* @param {HTMLElement} slide If specified, the returned
|
||||||
* index will be for this slide rather than the currently
|
* index will be for this slide rather than the currently
|
||||||
* active one
|
* active one
|
||||||
*
|
*
|
||||||
* @return {Object} { h: <int>, v: <int> }
|
* @return {Object} { h: <int>, v: <int> }
|
||||||
*/
|
*/
|
||||||
function getIndices( slide ) {
|
function getIndices( slide ) {
|
||||||
|
@ -933,7 +933,7 @@ var Reveal = (function(){
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Navigate to the next slide fragment.
|
* Navigate to the next slide fragment.
|
||||||
*
|
*
|
||||||
* @return {Boolean} true if there was a next fragment,
|
* @return {Boolean} true if there was a next fragment,
|
||||||
* false otherwise
|
* false otherwise
|
||||||
*/
|
*/
|
||||||
|
@ -966,7 +966,7 @@ var Reveal = (function(){
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Navigate to the previous slide fragment.
|
* Navigate to the previous slide fragment.
|
||||||
*
|
*
|
||||||
* @return {Boolean} true if there was a previous fragment,
|
* @return {Boolean} true if there was a previous fragment,
|
||||||
* false otherwise
|
* false otherwise
|
||||||
*/
|
*/
|
||||||
|
@ -993,7 +993,7 @@ var Reveal = (function(){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1008,7 +1008,7 @@ var Reveal = (function(){
|
||||||
autoSlideTimeout = setTimeout( navigateNext, autoSlide );
|
autoSlideTimeout = setTimeout( navigateNext, autoSlide );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function navigateLeft() {
|
function navigateLeft() {
|
||||||
// Prioritize hiding fragments
|
// Prioritize hiding fragments
|
||||||
if( isOverviewActive() || previousFragment() === false ) {
|
if( isOverviewActive() || previousFragment() === false ) {
|
||||||
|
@ -1071,7 +1071,7 @@ var Reveal = (function(){
|
||||||
availableRoutes().down ? navigateDown() : navigateRight();
|
availableRoutes().down ? navigateDown() : navigateRight();
|
||||||
}
|
}
|
||||||
|
|
||||||
// If auto-sliding is enabled we need to cue up
|
// If auto-sliding is enabled we need to cue up
|
||||||
// another timeout
|
// another timeout
|
||||||
cueAutoSlide();
|
cueAutoSlide();
|
||||||
}
|
}
|
||||||
|
@ -1084,11 +1084,11 @@ var Reveal = (function(){
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handler for the document level 'keydown' event.
|
* Handler for the document level 'keydown' event.
|
||||||
*
|
*
|
||||||
* @param {Object} event
|
* @param {Object} event
|
||||||
*/
|
*/
|
||||||
function onDocumentKeyDown( event ) {
|
function onDocumentKeyDown( event ) {
|
||||||
// Disregard the event if the target is editable or a
|
// Disregard the event if the target is editable or a
|
||||||
// modifier is present
|
// modifier is present
|
||||||
if ( document.querySelector( ':focus' ) !== null || event.shiftKey || event.altKey || event.ctrlKey || event.metaKey ) return;
|
if ( document.querySelector( ':focus' ) !== null || event.shiftKey || event.altKey || event.ctrlKey || event.metaKey ) return;
|
||||||
|
|
||||||
|
@ -1096,7 +1096,7 @@ var Reveal = (function(){
|
||||||
|
|
||||||
switch( event.keyCode ) {
|
switch( event.keyCode ) {
|
||||||
// p, page up
|
// p, page up
|
||||||
case 80: case 33: navigatePrev(); break;
|
case 80: case 33: navigatePrev(); break;
|
||||||
// n, page down
|
// n, page down
|
||||||
case 78: case 34: navigateNext(); break;
|
case 78: case 34: navigateNext(); break;
|
||||||
// h, left
|
// h, left
|
||||||
|
@ -1123,18 +1123,18 @@ var Reveal = (function(){
|
||||||
triggered = false;
|
triggered = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the input resulted in a triggered action we should prevent
|
// If the input resulted in a triggered action we should prevent
|
||||||
// the browsers default behavior
|
// the browsers default behavior
|
||||||
if( triggered ) {
|
if( triggered ) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
}
|
}
|
||||||
else if ( event.keyCode === 27 && supports3DTransforms ) {
|
else if ( event.keyCode === 27 && supports3DTransforms ) {
|
||||||
toggleOverview();
|
toggleOverview();
|
||||||
|
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
// If auto-sliding is enabled we need to cue up
|
// If auto-sliding is enabled we need to cue up
|
||||||
// another timeout
|
// another timeout
|
||||||
cueAutoSlide();
|
cueAutoSlide();
|
||||||
|
|
||||||
|
@ -1149,7 +1149,7 @@ var Reveal = (function(){
|
||||||
touch.startY = event.touches[0].clientY;
|
touch.startY = event.touches[0].clientY;
|
||||||
touch.startCount = event.touches.length;
|
touch.startCount = event.touches.length;
|
||||||
|
|
||||||
// If there's two touches we need to memorize the distance
|
// If there's two touches we need to memorize the distance
|
||||||
// between those two points to detect pinching
|
// between those two points to detect pinching
|
||||||
if( event.touches.length === 2 && config.overview ) {
|
if( event.touches.length === 2 && config.overview ) {
|
||||||
touch.startSpan = distanceBetween( {
|
touch.startSpan = distanceBetween( {
|
||||||
|
@ -1161,7 +1161,7 @@ var Reveal = (function(){
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handler for the document level 'touchmove' event.
|
* Handler for the document level 'touchmove' event.
|
||||||
*/
|
*/
|
||||||
|
@ -1171,7 +1171,7 @@ var Reveal = (function(){
|
||||||
var currentX = event.touches[0].clientX;
|
var currentX = event.touches[0].clientX;
|
||||||
var currentY = event.touches[0].clientY;
|
var currentY = event.touches[0].clientY;
|
||||||
|
|
||||||
// If the touch started off with two points and still has
|
// If the touch started off with two points and still has
|
||||||
// two active touches; test for the pinch gesture
|
// two active touches; test for the pinch gesture
|
||||||
if( event.touches.length === 2 && touch.startCount === 2 && config.overview ) {
|
if( event.touches.length === 2 && touch.startCount === 2 && config.overview ) {
|
||||||
|
|
||||||
|
@ -1184,7 +1184,7 @@ var Reveal = (function(){
|
||||||
y: touch.startY
|
y: touch.startY
|
||||||
} );
|
} );
|
||||||
|
|
||||||
// If the span is larger than the desire amount we've got
|
// If the span is larger than the desire amount we've got
|
||||||
// ourselves a pinch
|
// ourselves a pinch
|
||||||
if( Math.abs( touch.startSpan - currentSpan ) > touch.threshold ) {
|
if( Math.abs( touch.startSpan - currentSpan ) > touch.threshold ) {
|
||||||
touch.handled = true;
|
touch.handled = true;
|
||||||
|
@ -1209,15 +1209,15 @@ var Reveal = (function(){
|
||||||
if( deltaX > touch.threshold && Math.abs( deltaX ) > Math.abs( deltaY ) ) {
|
if( deltaX > touch.threshold && Math.abs( deltaX ) > Math.abs( deltaY ) ) {
|
||||||
touch.handled = true;
|
touch.handled = true;
|
||||||
navigateLeft();
|
navigateLeft();
|
||||||
}
|
}
|
||||||
else if( deltaX < -touch.threshold && Math.abs( deltaX ) > Math.abs( deltaY ) ) {
|
else if( deltaX < -touch.threshold && Math.abs( deltaX ) > Math.abs( deltaY ) ) {
|
||||||
touch.handled = true;
|
touch.handled = true;
|
||||||
navigateRight();
|
navigateRight();
|
||||||
}
|
}
|
||||||
else if( deltaY > touch.threshold ) {
|
else if( deltaY > touch.threshold ) {
|
||||||
touch.handled = true;
|
touch.handled = true;
|
||||||
navigateUp();
|
navigateUp();
|
||||||
}
|
}
|
||||||
else if( deltaY < -touch.threshold ) {
|
else if( deltaY < -touch.threshold ) {
|
||||||
touch.handled = true;
|
touch.handled = true;
|
||||||
navigateDown();
|
navigateDown();
|
||||||
|
@ -1227,7 +1227,7 @@ var Reveal = (function(){
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// There's a bug with swiping on some Android devices unless
|
// There's a bug with swiping on some Android devices unless
|
||||||
// the default action is always prevented
|
// the default action is always prevented
|
||||||
else if( navigator.userAgent.match( /android/gi ) ) {
|
else if( navigator.userAgent.match( /android/gi ) ) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
@ -1242,7 +1242,7 @@ var Reveal = (function(){
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles mouse wheel scrolling, throttled to avoid skipping
|
* Handles mouse wheel scrolling, throttled to avoid skipping
|
||||||
* multiple slides.
|
* multiple slides.
|
||||||
*/
|
*/
|
||||||
function onDocumentMouseScroll( event ){
|
function onDocumentMouseScroll( event ){
|
||||||
|
@ -1260,7 +1260,7 @@ var Reveal = (function(){
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clicking on the progress bar results in a navigation to the
|
* Clicking on the progress bar results in a navigation to the
|
||||||
* closest approximate horizontal slide using this equation:
|
* closest approximate horizontal slide using this equation:
|
||||||
*
|
*
|
||||||
* ( clickX / presentationWidth ) * numberOfSlides
|
* ( clickX / presentationWidth ) * numberOfSlides
|
||||||
|
@ -1271,10 +1271,10 @@ var Reveal = (function(){
|
||||||
|
|
||||||
slide( slideIndex );
|
slide( slideIndex );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handler for the window level 'hashchange' event.
|
* Handler for the window level 'hashchange' event.
|
||||||
*
|
*
|
||||||
* @param {Object} event
|
* @param {Object} event
|
||||||
*/
|
*/
|
||||||
function onWindowHashChange( event ) {
|
function onWindowHashChange( event ) {
|
||||||
|
@ -1285,7 +1285,7 @@ var Reveal = (function(){
|
||||||
* Invoked when a slide is and we're in the overview.
|
* Invoked when a slide is and we're in the overview.
|
||||||
*/
|
*/
|
||||||
function onOverviewSlideClicked( event ) {
|
function onOverviewSlideClicked( event ) {
|
||||||
// TODO There's a bug here where the event listeners are not
|
// TODO There's a bug here where the event listeners are not
|
||||||
// removed after deactivating the overview.
|
// removed after deactivating the overview.
|
||||||
if( isOverviewActive() ) {
|
if( isOverviewActive() ) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
@ -1299,7 +1299,7 @@ var Reveal = (function(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// --------------------------------------------------------------------//
|
// --------------------------------------------------------------------//
|
||||||
// ------------------------------- API --------------------------------//
|
// ------------------------------- API --------------------------------//
|
||||||
// --------------------------------------------------------------------//
|
// --------------------------------------------------------------------//
|
||||||
|
@ -1307,7 +1307,7 @@ var Reveal = (function(){
|
||||||
|
|
||||||
return {
|
return {
|
||||||
initialize: initialize,
|
initialize: initialize,
|
||||||
|
|
||||||
// Navigation methods
|
// Navigation methods
|
||||||
slide: slide,
|
slide: slide,
|
||||||
left: navigateLeft,
|
left: navigateLeft,
|
||||||
|
@ -1369,5 +1369,5 @@ var Reveal = (function(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
})();
|
})();
|
2
js/reveal.min.js
vendored
2
js/reveal.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -39,7 +39,7 @@ var RevealNotes = (function() {
|
||||||
notesPopup.postMessage( JSON.stringify( slideData ), '*' );
|
notesPopup.postMessage( JSON.stringify( slideData ), '*' );
|
||||||
}
|
}
|
||||||
|
|
||||||
// The main presentation is kept in sync when navigating the
|
// The main presentation is kept in sync when navigating the
|
||||||
// note slides so that the popup may be used as a remote
|
// note slides so that the popup may be used as a remote
|
||||||
window.addEventListener( 'message', function( event ) {
|
window.addEventListener( 'message', function( event ) {
|
||||||
var data = JSON.parse( event.data );
|
var data = JSON.parse( event.data );
|
||||||
|
@ -60,7 +60,7 @@ var RevealNotes = (function() {
|
||||||
|
|
||||||
// Open the notes when the 's' key is hit
|
// Open the notes when the 's' key is hit
|
||||||
document.addEventListener( 'keydown', function( event ) {
|
document.addEventListener( 'keydown', function( event ) {
|
||||||
// Disregard the event if the target is editable or a
|
// Disregard the event if the target is editable or a
|
||||||
// modifier is present
|
// modifier is present
|
||||||
if ( document.querySelector( ':focus' ) !== null || event.shiftKey || event.altKey || event.ctrlKey || event.metaKey ) return;
|
if ( document.querySelector( ':focus' ) !== null || event.shiftKey || event.altKey || event.ctrlKey || event.metaKey ) return;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user