slide method now accepts fragment index argument #228
This commit is contained in:
commit
34b36753f5
4 files changed
+53
-18
No files matched your search
+48
-14
@@ -741,8 +741,10 @@ var Reveal = (function(){
|
||||
*
|
||||
* @param {int} h Horizontal index of the target slide
|
||||
* @param {int} v Vertical index of the target slide
|
||||
* @param {int} f Optional index of a fragment within the
|
||||
* target slide to activate
|
||||
*/
|
||||
function slide( h, v ) {
|
||||
function slide( h, v, f ) {
|
||||
// Remember where we were at before
|
||||
previousSlide = currentSlide;
|
||||
|
||||
@@ -774,12 +776,18 @@ var Reveal = (function(){
|
||||
indexh = updateSlides( HORIZONTAL_SLIDES_SELECTOR, h === undefined ? indexh : h );
|
||||
indexv = updateSlides( VERTICAL_SLIDES_SELECTOR, v === undefined ? indexv : v );
|
||||
|
||||
// No need to proceed if we're navigating to the same slide as
|
||||
// we're already on, unless a fragment index is specified
|
||||
if( indexh === indexhBefore && indexv === indexvBefore && !f ) {
|
||||
return;
|
||||
}
|
||||
|
||||
layout();
|
||||
|
||||
// Apply the new state
|
||||
stateLoop: for( var i = 0, len = state.length; i < len; i++ ) {
|
||||
// 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++ ) {
|
||||
if( stateBefore[j] === state[i] ) {
|
||||
stateBefore.splice( j, 1 );
|
||||
@@ -805,8 +813,7 @@ var Reveal = (function(){
|
||||
|
||||
// Update the URL hash after a delay since updating it mid-transition
|
||||
// is likely to cause visual lag
|
||||
clearTimeout( writeURLTimeout );
|
||||
writeURLTimeout = setTimeout( writeURL, 1500 );
|
||||
writeURL( 1500 );
|
||||
|
||||
// Find the current horizontal slide and any possible vertical slides
|
||||
// within it
|
||||
@@ -816,6 +823,20 @@ var Reveal = (function(){
|
||||
// Store references to the previous and current slides
|
||||
currentSlide = currentVerticalSlides[ indexv ] || currentHorizontalSlide;
|
||||
|
||||
// Show fragment, if specified
|
||||
if ( typeof f !== undefined ) {
|
||||
var fragments = currentSlide.querySelectorAll( '.fragment' );
|
||||
|
||||
toArray( fragments ).forEach( function( fragment, indexf ) {
|
||||
if( indexf < f ) {
|
||||
fragment.classList.add( 'visible' );
|
||||
}
|
||||
else {
|
||||
fragment.classList.remove( 'visible' );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
// Dispatch an event if the slide changed
|
||||
if( indexh !== indexhBefore || indexv !== indexvBefore ) {
|
||||
dispatchEvent( 'slidechanged', {
|
||||
@@ -1068,22 +1089,35 @@ var Reveal = (function(){
|
||||
/**
|
||||
* Updates the page URL (hash) to reflect the current
|
||||
* state.
|
||||
*
|
||||
* @param {Number} delay The time in ms to wait before
|
||||
* writing the hash
|
||||
*/
|
||||
function writeURL() {
|
||||
function writeURL( delay ) {
|
||||
if( config.history ) {
|
||||
var url = '/';
|
||||
|
||||
// If the current slide has an ID, use that as a named link
|
||||
if( currentSlide && typeof currentSlide.getAttribute( 'id' ) === 'string' ) {
|
||||
url = '/' + currentSlide.getAttribute( 'id' );
|
||||
// Make sure there's never more than one timeout running
|
||||
clearTimeout( writeURLTimeout );
|
||||
|
||||
// If a delay is specified, timeout this call
|
||||
if( typeof delay === 'number' ) {
|
||||
writeURLTimeout = setTimeout( writeURL, delay );
|
||||
}
|
||||
// Otherwise use the /h/v index
|
||||
else {
|
||||
if( indexh > 0 || indexv > 0 ) url += indexh;
|
||||
if( indexv > 0 ) url += '/' + indexv;
|
||||
}
|
||||
var url = '/';
|
||||
|
||||
window.location.hash = url;
|
||||
// If the current slide has an ID, use that as a named link
|
||||
if( currentSlide && typeof currentSlide.getAttribute( 'id' ) === 'string' ) {
|
||||
url = '/' + currentSlide.getAttribute( 'id' );
|
||||
}
|
||||
// Otherwise use the /h/v index
|
||||
else {
|
||||
if( indexh > 0 || indexv > 0 ) url += indexh;
|
||||
if( indexv > 0 ) url += '/' + indexv;
|
||||
}
|
||||
|
||||
window.location.hash = url;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Vendored
+2
-2
@@ -1,8 +1,8 @@
|
||||
/*!
|
||||
* reveal.js 2.2 (2012-11-18, 12:09)
|
||||
* reveal.js 2.2 (2012-11-22, 09:09)
|
||||
* http://lab.hakim.se/reveal-js
|
||||
* MIT licensed
|
||||
*
|
||||
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
|
||||
*/
|
||||
var Reveal=function(){"use strict";function g(e){if(!h&&!c){document.body.setAttribute("class","no-transforms");return}N(r,e),b(),w()}function y(){l.theme=document.querySelector("#theme"),l.wrapper=document.querySelector(".reveal"),l.slides=document.querySelector(".reveal .slides");if(!l.wrapper.querySelector(".progress")&&r.progress){var e=document.createElement("div");e.classList.add("progress"),e.innerHTML="<span></span>",l.wrapper.appendChild(e)}if(!l.wrapper.querySelector(".controls")&&r.controls){var t=document.createElement("aside");t.classList.add("controls"),t.innerHTML='<div class="navigate-left"></div><div class="navigate-right"></div><div class="navigate-up"></div><div class="navigate-down"></div>',l.wrapper.appendChild(t)}if(!l.wrapper.querySelector(".state-background")){var n=document.createElement("div");n.classList.add("state-background"),l.wrapper.appendChild(n)}if(!l.wrapper.querySelector(".pause-overlay")){var i=document.createElement("div");i.classList.add("pause-overlay"),l.wrapper.appendChild(i)}l.progress=document.querySelector(".reveal .progress"),l.progressbar=document.querySelector(".reveal .progress span"),r.controls&&(l.controls=document.querySelector(".reveal .controls"),l.controlsLeft=C(document.querySelectorAll(".navigate-left")),l.controlsRight=C(document.querySelectorAll(".navigate-right")),l.controlsUp=C(document.querySelectorAll(".navigate-up")),l.controlsDown=C(document.querySelectorAll(".navigate-down")),l.controlsPrev=C(document.querySelectorAll(".navigate-prev")),l.controlsNext=C(document.querySelectorAll(".navigate-next")))}function b(){navigator.userAgent.match(/(iphone|ipod)/i)&&(document.documentElement.style.overflow="scroll",document.body.style.height="120%",window.addEventListener("load",O,!1),window.addEventListener("orientationchange",O,!1))}function w(){function o(){t.length&&head.js.apply(null,t),E()}var e=[],t=[];for(var n=0,i=r.dependencies.length;n<i;n++){var s=r.dependencies[n];if(!s.condition||s.condition())s.async?t.push(s.src):e.push(s.src),typeof s.callback=="function"&&head.ready(s.src.match(/([\w\d_\-]*)\.?js$|[^\\\/]*$/i)[0],s.callback)}e.length?(head.ready(o),head.js.apply(null,e)):o()}function E(){y(),x(),S(),D(),Q(),tt(),setTimeout(function(){M("ready",{indexh:s,indexv:o,currentSlide:a})},1)}function S(){c===!1&&(r.transition="linear"),r.controls&&l.controls&&(l.controls.style.display="block"),r.progress&&l.progress&&(l.progress.style.display="block"),r.transition!=="default"&&l.wrapper.classList.add(r.transition),r.rtl&&l.wrapper.classList.add("rtl"),r.center&&l.wrapper.classList.add("center"),r.mouseWheel&&(document.addEventListener("DOMMouseScroll",ht,!1),document.addEventListener("mousewheel",ht,!1)),r.rollingLinks&&_();if(r.theme&&l.theme){var e=l.theme.getAttribute("href"),t=/[^\/]*?(?=\.css)/,n=e.match(t)[0];r.theme!==n&&(e=e.replace(t,r.theme),l.theme.setAttribute("href",e))}}function x(){document.addEventListener("touchstart",ft,!1),document.addEventListener("touchmove",lt,!1),document.addEventListener("touchend",ct,!1),window.addEventListener("hashchange",dt,!1),window.addEventListener("resize",vt,!1),r.keyboard&&document.addEventListener("keydown",at,!1),r.progress&&l.progress&&l.progress.addEventListener("click",A(pt),!1),r.controls&&l.controls&&(l.controlsLeft.forEach(function(e){e.addEventListener("click",A(nt),!1)}),l.controlsRight.forEach(function(e){e.addEventListener("click",A(rt),!1)}),l.controlsUp.forEach(function(e){e.addEventListener("click",A(it),!1)}),l.controlsDown.forEach(function(e){e.addEventListener("click",A(st),!1)}),l.controlsPrev.forEach(function(e){e.addEventListener("click",A(ot),!1)}),l.controlsNext.forEach(function(e){e.addEventListener("click",A(ut),!1)}))}function T(){document.removeEventListener("keydown",at,!1),document.removeEventListener("touchstart",ft,!1),document.removeEventListener("touchmove",lt,!1),document.removeEventListener("touchend",ct,!1),window.removeEventListener("hashchange",dt,!1),window.removeEventListener("resize",vt,!1),r.progress&&l.progress&&l.progress.removeEventListener("click",A(pt),!1),r.controls&&l.controls&&(l.controlsLeft.forEach(function(e){e.removeEventListener("click",A(nt),!1)}),l.controlsRight.forEach(function(e){e.removeEventListener("click",A(rt),!1)}),l.controlsUp.forEach(function(e){e.removeEventListener("click",A(it),!1)}),l.controlsDown.forEach(function(e){e.removeEventListener("click",A(st),!1)}),l.controlsPrev.forEach(function(e){e.removeEventListener("click",A(ot),!1)}),l.controlsNext.forEach(function(e){e.removeEventListener("click",A(ut),!1)}))}function N(e,t){for(var n in t)e[n]=t[n]}function C(e){return Array.prototype.slice.call(e)}function k(e,t,n){e.forEach(function(e){e[t].apply(e,n)})}function L(e,t){var n=e.x-t.x,r=e.y-t.y;return Math.sqrt(n*n+r*r)}function A(e){return function(t){t.preventDefault(),e.call(null,t)}}function O(){setTimeout(function(){window.scrollTo(0,1)},0)}function M(e,t){var n=document.createEvent("HTMLEvents",1,2);n.initEvent(e,!0Line truncated
|
||||
var Reveal=function(){"use strict";function g(e){if(!h&&!c){document.body.setAttribute("class","no-transforms");return}N(r,e),b(),w()}function y(){l.theme=document.querySelector("#theme"),l.wrapper=document.querySelector(".reveal"),l.slides=document.querySelector(".reveal .slides");if(!l.wrapper.querySelector(".progress")&&r.progress){var e=document.createElement("div");e.classList.add("progress"),e.innerHTML="<span></span>",l.wrapper.appendChild(e)}if(!l.wrapper.querySelector(".controls")&&r.controls){var t=document.createElement("aside");t.classList.add("controls"),t.innerHTML='<div class="navigate-left"></div><div class="navigate-right"></div><div class="navigate-up"></div><div class="navigate-down"></div>',l.wrapper.appendChild(t)}if(!l.wrapper.querySelector(".state-background")){var n=document.createElement("div");n.classList.add("state-background"),l.wrapper.appendChild(n)}if(!l.wrapper.querySelector(".pause-overlay")){var i=document.createElement("div");i.classList.add("pause-overlay"),l.wrapper.appendChild(i)}l.progress=document.querySelector(".reveal .progress"),l.progressbar=document.querySelector(".reveal .progress span"),r.controls&&(l.controls=document.querySelector(".reveal .controls"),l.controlsLeft=C(document.querySelectorAll(".navigate-left")),l.controlsRight=C(document.querySelectorAll(".navigate-right")),l.controlsUp=C(document.querySelectorAll(".navigate-up")),l.controlsDown=C(document.querySelectorAll(".navigate-down")),l.controlsPrev=C(document.querySelectorAll(".navigate-prev")),l.controlsNext=C(document.querySelectorAll(".navigate-next")))}function b(){navigator.userAgent.match(/(iphone|ipod)/i)&&(document.documentElement.style.overflow="scroll",document.body.style.height="120%",window.addEventListener("load",O,!1),window.addEventListener("orientationchange",O,!1))}function w(){function o(){t.length&&head.js.apply(null,t),E()}var e=[],t=[];for(var n=0,i=r.dependencies.length;n<i;n++){var s=r.dependencies[n];if(!s.condition||s.condition())s.async?t.push(s.src):e.push(s.src),typeof s.callback=="function"&&head.ready(s.src.match(/([\w\d_\-]*)\.?js$|[^\\\/]*$/i)[0],s.callback)}e.length?(head.ready(o),head.js.apply(null,e)):o()}function E(){y(),x(),S(),D(),Q(),tt(),setTimeout(function(){M("ready",{indexh:s,indexv:o,currentSlide:a})},1)}function S(){c===!1&&(r.transition="linear"),r.controls&&l.controls&&(l.controls.style.display="block"),r.progress&&l.progress&&(l.progress.style.display="block"),r.transition!=="default"&&l.wrapper.classList.add(r.transition),r.rtl&&l.wrapper.classList.add("rtl"),r.center&&l.wrapper.classList.add("center"),r.mouseWheel&&(document.addEventListener("DOMMouseScroll",ht,!1),document.addEventListener("mousewheel",ht,!1)),r.rollingLinks&&_();if(r.theme&&l.theme){var e=l.theme.getAttribute("href"),t=/[^\/]*?(?=\.css)/,n=e.match(t)[0];r.theme!==n&&(e=e.replace(t,r.theme),l.theme.setAttribute("href",e))}}function x(){document.addEventListener("touchstart",ft,!1),document.addEventListener("touchmove",lt,!1),document.addEventListener("touchend",ct,!1),window.addEventListener("hashchange",dt,!1),window.addEventListener("resize",vt,!1),r.keyboard&&document.addEventListener("keydown",at,!1),r.progress&&l.progress&&l.progress.addEventListener("click",A(pt),!1),r.controls&&l.controls&&(l.controlsLeft.forEach(function(e){e.addEventListener("click",A(nt),!1)}),l.controlsRight.forEach(function(e){e.addEventListener("click",A(rt),!1)}),l.controlsUp.forEach(function(e){e.addEventListener("click",A(it),!1)}),l.controlsDown.forEach(function(e){e.addEventListener("click",A(st),!1)}),l.controlsPrev.forEach(function(e){e.addEventListener("click",A(ot),!1)}),l.controlsNext.forEach(function(e){e.addEventListener("click",A(ut),!1)}))}function T(){document.removeEventListener("keydown",at,!1),document.removeEventListener("touchstart",ft,!1),document.removeEventListener("touchmove",lt,!1),document.removeEventListener("touchend",ct,!1),window.removeEventListener("hashchange",dt,!1),window.removeEventListener("resize",vt,!1),r.progress&&l.progress&&l.progress.removeEventListener("click",A(pt),!1),r.controls&&l.controls&&(l.controlsLeft.forEach(function(e){e.removeEventListener("click",A(nt),!1)}),l.controlsRight.forEach(function(e){e.removeEventListener("click",A(rt),!1)}),l.controlsUp.forEach(function(e){e.removeEventListener("click",A(it),!1)}),l.controlsDown.forEach(function(e){e.removeEventListener("click",A(st),!1)}),l.controlsPrev.forEach(function(e){e.removeEventListener("click",A(ot),!1)}),l.controlsNext.forEach(function(e){e.removeEventListener("click",A(ut),!1)}))}function N(e,t){for(var n in t)e[n]=t[n]}function C(e){return Array.prototype.slice.call(e)}function k(e,t,n){e.forEach(function(e){e[t].apply(e,n)})}function L(e,t){var n=e.x-t.x,r=e.y-t.y;return Math.sqrt(n*n+r*r)}function A(e){return function(t){t.preventDefault(),e.call(null,t)}}function O(){setTimeout(function(){window.scrollTo(0,1)},0)}function M(e,t){var n=document.createEvent("HTMLEvents",1,2);n.initEvent(e,!0Line truncated
|
||||
Reference in new issue
Block a user