|
@ -29,6 +29,8 @@ var Reveal = (function(){ |
|
|
// Enable the slide overview mode
|
|
|
// Enable the slide overview mode
|
|
|
overview: true, |
|
|
overview: true, |
|
|
|
|
|
|
|
|
|
|
|
center: false, |
|
|
|
|
|
|
|
|
// Loop the presentation
|
|
|
// Loop the presentation
|
|
|
loop: false, |
|
|
loop: false, |
|
|
|
|
|
|
|
@ -264,6 +266,10 @@ var Reveal = (function(){ |
|
|
// Updates the presentation to match the current configuration values
|
|
|
// Updates the presentation to match the current configuration values
|
|
|
configure(); |
|
|
configure(); |
|
|
|
|
|
|
|
|
|
|
|
// Force an initial layout, will thereafter be invoked as the window
|
|
|
|
|
|
// is resized
|
|
|
|
|
|
layout(); |
|
|
|
|
|
|
|
|
// Read the initial hash
|
|
|
// Read the initial hash
|
|
|
readURL(); |
|
|
readURL(); |
|
|
|
|
|
|
|
@ -301,6 +307,10 @@ var Reveal = (function(){ |
|
|
dom.wrapper.classList.add( config.transition ); |
|
|
dom.wrapper.classList.add( config.transition ); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if( config.center ) { |
|
|
|
|
|
dom.wrapper.classList.add( 'center' ); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
if( config.mouseWheel ) { |
|
|
if( config.mouseWheel ) { |
|
|
document.addEventListener( 'DOMMouseScroll', onDocumentMouseScroll, false ); // FF
|
|
|
document.addEventListener( 'DOMMouseScroll', onDocumentMouseScroll, false ); // FF
|
|
|
document.addEventListener( 'mousewheel', onDocumentMouseScroll, false ); |
|
|
document.addEventListener( 'mousewheel', onDocumentMouseScroll, false ); |
|
@ -332,6 +342,7 @@ var Reveal = (function(){ |
|
|
document.addEventListener( 'touchmove', onDocumentTouchMove, false ); |
|
|
document.addEventListener( 'touchmove', onDocumentTouchMove, false ); |
|
|
document.addEventListener( 'touchend', onDocumentTouchEnd, false ); |
|
|
document.addEventListener( 'touchend', onDocumentTouchEnd, false ); |
|
|
window.addEventListener( 'hashchange', onWindowHashChange, false ); |
|
|
window.addEventListener( 'hashchange', onWindowHashChange, false ); |
|
|
|
|
|
window.addEventListener( 'resize', onWindowResize, false ); |
|
|
|
|
|
|
|
|
if( config.keyboard ) { |
|
|
if( config.keyboard ) { |
|
|
document.addEventListener( 'keydown', onDocumentKeyDown, false ); |
|
|
document.addEventListener( 'keydown', onDocumentKeyDown, false ); |
|
@ -358,6 +369,7 @@ var Reveal = (function(){ |
|
|
document.removeEventListener( 'touchmove', onDocumentTouchMove, false ); |
|
|
document.removeEventListener( 'touchmove', onDocumentTouchMove, false ); |
|
|
document.removeEventListener( 'touchend', onDocumentTouchEnd, false ); |
|
|
document.removeEventListener( 'touchend', onDocumentTouchEnd, false ); |
|
|
window.removeEventListener( 'hashchange', onWindowHashChange, false ); |
|
|
window.removeEventListener( 'hashchange', onWindowHashChange, false ); |
|
|
|
|
|
window.removeEventListener( 'resize', onWindowResize, false ); |
|
|
|
|
|
|
|
|
if ( config.progress && dom.progress ) { |
|
|
if ( config.progress && dom.progress ) { |
|
|
dom.progress.removeEventListener( 'click', preventAndForward( onProgressClick ), false ); |
|
|
dom.progress.removeEventListener( 'click', preventAndForward( onProgressClick ), false ); |
|
@ -448,6 +460,33 @@ var Reveal = (function(){ |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* Applies JavaScript-controlled layout rules to the |
|
|
|
|
|
* presentation. |
|
|
|
|
|
*/ |
|
|
|
|
|
function layout() { |
|
|
|
|
|
if( config.center ) { |
|
|
|
|
|
|
|
|
|
|
|
// Select all slides, vertical and horizontal
|
|
|
|
|
|
var slides = Array.prototype.slice.call( document.querySelectorAll( '.reveal .slides section' ) ); |
|
|
|
|
|
|
|
|
|
|
|
// Determine the minimum top offset for slides
|
|
|
|
|
|
var minTop = -dom.wrapper.offsetHeight / 2; |
|
|
|
|
|
|
|
|
|
|
|
for( var i = 0, len = slides.length; i < len; i++ ) { |
|
|
|
|
|
var slide = slides[ i ]; |
|
|
|
|
|
|
|
|
|
|
|
if( slide.classList.contains( 'stack' ) ) { |
|
|
|
|
|
slide.style.marginTop = 0; |
|
|
|
|
|
} |
|
|
|
|
|
else { |
|
|
|
|
|
slide.style.marginTop = Math.max( - ( slide.offsetHeight / 2 ) - 20, minTop ) + 'px'; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 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. |
|
@ -643,6 +682,8 @@ var Reveal = (function(){ |
|
|
indexh = updateSlides( HORIZONTAL_SLIDES_SELECTOR, h === undefined ? indexh : h ); |
|
|
indexh = updateSlides( HORIZONTAL_SLIDES_SELECTOR, h === undefined ? indexh : h ); |
|
|
indexv = updateSlides( VERTICAL_SLIDES_SELECTOR, v === undefined ? indexv : v ); |
|
|
indexv = updateSlides( VERTICAL_SLIDES_SELECTOR, v === undefined ? indexv : v ); |
|
|
|
|
|
|
|
|
|
|
|
layout(); |
|
|
|
|
|
|
|
|
// 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
|
|
@ -1284,13 +1325,18 @@ var Reveal = (function(){ |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* Handler for the window level 'hashchange' event. |
|
|
* Handler for the window level 'hashchange' event. |
|
|
* |
|
|
|
|
|
* @param {Object} event |
|
|
|
|
|
*/ |
|
|
*/ |
|
|
function onWindowHashChange( event ) { |
|
|
function onWindowHashChange( event ) { |
|
|
readURL(); |
|
|
readURL(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* Handler for the window level 'resize' event. |
|
|
|
|
|
*/ |
|
|
|
|
|
function onWindowResize( event ) { |
|
|
|
|
|
layout(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* Invoked when a slide is and we're in the overview. |
|
|
* Invoked when a slide is and we're in the overview. |
|
|
*/ |
|
|
*/ |
|
|