|
|
@ -14,6 +14,8 @@ var Reveal = (function(){ |
|
|
|
VERTICAL_SLIDES_SELECTOR = '.reveal .slides>section.present>section', |
|
|
|
HOME_SLIDE_SELECTOR = '.reveal .slides>section:first-child', |
|
|
|
|
|
|
|
IS_MOBILE = navigator.userAgent.match( /(iphone|ipod|android)/gi ), |
|
|
|
|
|
|
|
// Configurations defaults, can be overridden at initialization time
|
|
|
|
config = { |
|
|
|
|
|
|
@ -1029,7 +1031,6 @@ var Reveal = (function(){ |
|
|
|
htransform = 'translateZ(-2500px) translate(' + ( ( i - indexh ) * hoffset ) + '%, 0%)'; |
|
|
|
|
|
|
|
hslide.setAttribute( 'data-index-h', i ); |
|
|
|
hslide.style.display = 'block'; |
|
|
|
hslide.style.WebkitTransform = htransform; |
|
|
|
hslide.style.MozTransform = htransform; |
|
|
|
hslide.style.msTransform = htransform; |
|
|
@ -1048,7 +1049,6 @@ var Reveal = (function(){ |
|
|
|
|
|
|
|
vslide.setAttribute( 'data-index-h', i ); |
|
|
|
vslide.setAttribute( 'data-index-v', j ); |
|
|
|
vslide.style.display = 'block'; |
|
|
|
vslide.style.WebkitTransform = vtransform; |
|
|
|
vslide.style.MozTransform = vtransform; |
|
|
|
vslide.style.msTransform = vtransform; |
|
|
@ -1068,6 +1068,8 @@ var Reveal = (function(){ |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
updateSlidesVisibility(); |
|
|
|
|
|
|
|
layout(); |
|
|
|
|
|
|
|
if( !wasActive ) { |
|
|
@ -1309,6 +1311,9 @@ var Reveal = (function(){ |
|
|
|
indexh = updateSlides( HORIZONTAL_SLIDES_SELECTOR, h === undefined ? indexh : h ); |
|
|
|
indexv = updateSlides( VERTICAL_SLIDES_SELECTOR, v === undefined ? indexv : v ); |
|
|
|
|
|
|
|
// Update the visibility of slides now that the indices have changed
|
|
|
|
updateSlidesVisibility(); |
|
|
|
|
|
|
|
layout(); |
|
|
|
|
|
|
|
// Apply the new state
|
|
|
@ -1480,16 +1485,6 @@ var Reveal = (function(){ |
|
|
|
for( var i = 0; i < slidesLength; i++ ) { |
|
|
|
var element = slides[i]; |
|
|
|
|
|
|
|
// Optimization; hide all slides that are three or more steps
|
|
|
|
// away from the present slide
|
|
|
|
if( isOverview() === false ) { |
|
|
|
// The distance loops so that it measures 1 between the first
|
|
|
|
// and last slides
|
|
|
|
var distance = Math.abs( ( index - i ) % ( slidesLength - 3 ) ) || 0; |
|
|
|
|
|
|
|
element.style.display = distance > 3 ? 'none' : 'block'; |
|
|
|
} |
|
|
|
|
|
|
|
var reverse = config.rtl && !isVerticalSlide( element ); |
|
|
|
|
|
|
|
element.classList.remove( 'past' ); |
|
|
@ -1555,6 +1550,71 @@ var Reveal = (function(){ |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Optimization method; hide all slides that are far away |
|
|
|
* from the present slide. |
|
|
|
*/ |
|
|
|
function updateSlidesVisibility() { |
|
|
|
|
|
|
|
// Select all slides and convert the NodeList result to
|
|
|
|
// an array
|
|
|
|
var horizontalSlides = toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ), |
|
|
|
horizontalSlidesLength = horizontalSlides.length, |
|
|
|
distance; |
|
|
|
|
|
|
|
if( horizontalSlidesLength ) { |
|
|
|
|
|
|
|
// The number of steps away from the present slide that will
|
|
|
|
// be visible
|
|
|
|
var threshold = 3; |
|
|
|
|
|
|
|
// Heavily limited on weaker devices
|
|
|
|
if( IS_MOBILE ) { |
|
|
|
threshold = 1; |
|
|
|
} |
|
|
|
|
|
|
|
if( isOverview() ) { |
|
|
|
threshold = 6; |
|
|
|
} |
|
|
|
|
|
|
|
for( var x = 0; x < horizontalSlidesLength; x++ ) { |
|
|
|
var horizontalSlide = horizontalSlides[x]; |
|
|
|
|
|
|
|
var verticalSlides = toArray( horizontalSlide.querySelectorAll( 'section' ) ), |
|
|
|
verticalSlidesLength = verticalSlides.length; |
|
|
|
|
|
|
|
if( verticalSlidesLength ) { |
|
|
|
|
|
|
|
// Always show the vertical stack itself, even if its child
|
|
|
|
// slides are invisible
|
|
|
|
horizontalSlide.style.display = 'block'; |
|
|
|
|
|
|
|
for( var y = 0; y < verticalSlidesLength; y++ ) { |
|
|
|
var verticalSlide = verticalSlides[y]; |
|
|
|
|
|
|
|
var dx = x - indexh, |
|
|
|
dy = y - indexv; |
|
|
|
|
|
|
|
distance = Math.sqrt( dx*dx + dy*dy ); |
|
|
|
|
|
|
|
verticalSlide.style.display = distance > threshold ? 'none' : 'block'; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
else { |
|
|
|
|
|
|
|
// Loops so that it measures 1 between the first and last slides
|
|
|
|
distance = Math.abs( ( indexh - x ) % ( horizontalSlidesLength - threshold ) ) || 0; |
|
|
|
|
|
|
|
horizontalSlide.style.display = distance > threshold ? 'none' : 'block'; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Updates the progress bar to reflect the current slide. |
|
|
|
*/ |
|
|
|