added support for looped presentations

This commit is contained in:
Hakim El Hattab
2012-04-28 12:16:56 -04:00
parent eee6e5f964
commit cde5362db3
4 changed files with 35 additions and 12 deletions

View File

@@ -19,10 +19,11 @@ var Reveal = (function(){
controls: false,
progress: false,
history: false,
transition: 'default',
theme: 'default',
loop: false,
mouseWheel: true,
rollingLinks: true
rollingLinks: true,
transition: 'default',
theme: 'default'
},
// Slides may hold a data-state attribute which we pick up and apply
@@ -406,19 +407,34 @@ var Reveal = (function(){
// Select all slides and convert the NodeList result to
// an array
var slides = Array.prototype.slice.call( document.querySelectorAll( selector ) );
var slides = Array.prototype.slice.call( document.querySelectorAll( selector ) ),
slidesLength = slides.length;
if( slides.length ) {
// Enforce max and minimum index bounds
index = Math.max(Math.min(index, slides.length - 1), 0);
if( slidesLength ) {
for( var i = 0; i < slides.length; i++ ) {
// Should the index loop?
if( config.loop ) {
index %= slidesLength;
if( index < 0 ) {
index = slidesLength + index;
}
}
// Enforce max and minimum index bounds
index = Math.max( Math.min( index, slidesLength - 1 ), 0 );
for( var i = 0; i < slidesLength; i++ ) {
var slide = slides[i];
// Optimization; hide all slides that are three or more steps
// away from the present slide
if( overviewIsActive() === false ) {
slide.style.display = Math.abs( index - i ) > 3 ? 'none' : 'block';
// The distance loops so that it measures 1 between the first
// and last slides
var distance = Math.abs( ( index - i ) % ( slidesLength - 3 ) ) || 0;
slide.style.display = distance > 3 ? 'none' : 'block';
}
slides[i].classList.remove( 'past' );