add get/setState methods for persisting and restoring presentation state

This commit is contained in:
Hakim El Hattab committed 2014-03-02 12:30:55 +01:00
1 parent 4cd1dd1a1f
commit 714102c3f8
2 files changed
+45 -7

No files matched your search

+42 -4
View File
@@ -1430,13 +1430,13 @@ var Reveal = (function(){
/**
* Toggles the paused mode on and off.
*/
function togglePause() {
function togglePause( override ) {
if( isPaused() ) {
resume();
if( typeof override === 'boolean' ) {
override ? pause() : resume();
}
else {
pause();
isPaused() ? resume() : pause();
}
}
@@ -2325,6 +2325,40 @@ var Reveal = (function(){
}
/**
* Retrieves the current state of the presentation as
* an object. This state can then be restored at any
* time.
*/
function getState() {
var indices = getIndices();
return {
indexh: indices.h,
indexv: indices.v,
indexf: indices.f,
paused: isPaused(),
overview: isOverview()
};
}
/**
* Restores the presentation to the given state.
*
* @param {Object} state As generated by getState()
*/
function setState( state ) {
if( typeof state === 'object' ) {
slide( state.indexh, state.indexv, state.indexf );
togglePause( state.paused );
toggleOverview( state.overview );
}
}
/**
* Return a sorted fragments list, ordered by an increasing
* "data-fragment-index" attribute.
@@ -3345,6 +3379,10 @@ var Reveal = (function(){
addEventListeners: addEventListeners,
removeEventListeners: removeEventListeners,
// Facility for persisting and restoring the presentation state
getState: getState,
setState: setState,
// Returns the indices of the current, or specified, slide
getIndices: getIndices,
+3 -3
View File
@@ -1,9 +1,9 @@
/*!
* reveal.js 2.7.0-dev (2014-02-28, 12:12)
* reveal.js 2.7.0-dev (2014-03-02, 12:29)
* http://lab.hakim.se/reveal-js
* MIT licensed
*
* Copyright (C) 2014 Hakim El Hattab, http://hakim.se
*/
var Reveal=function(){"use strict";function a(a){if(b(),!gc.transforms2d&&!gc.transforms3d)return document.body.setAttribute("class","no-transforms"),void 0;window.addEventListener("load",A,!1);var d=Reveal.getQueryHash();"undefined"!=typeof d.dependencies&&delete d.dependencies,k(bc,a),k(bc,d),r(),c()}function b(){gc.transforms3d="WebkitPerspective"in document.body.style||"MozPerspective"in document.body.style||"msPerspective"in document.body.style||"OPerspective"in document.body.style||"perspective"in document.body.style,gc.transforms2d="WebkitTransform"in document.body.style||"MozTransform"in document.body.style||"msTransform"in document.body.style||"OTransform"in document.body.style||"transform"in document.body.style,gc.requestAnimationFrameMethod=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame,gc.requestAnimationFrame="function"==typeof gc.requestAnimationFrameMethod,gc.canvas=!!document.createElement("canvas").getContext,Xb=navigator.userAgent.match(/(iphone|ipod|android)/gi)}function c(){function a(){e.length&&head.js.apply(null,e),d()}function b(b){head.ready(b.src.match(/([\w\d_\-]*)\.?js$|[^\\\/]*$/i)[0],function(){"function"==typeof b.callback&&b.callback.apply(this),0===--f&&a()})}for(var c=[],e=[],f=0,g=0,h=bc.dependencies.length;h>g;g++){var i=bc.dependencies[g];(!i.condition||i.condition())&&(i.async?e.push(i.src):c.push(i.src),b(i))}c.length?(f=c.length,head.js.apply(null,c)):a()}function d(){e(),S(),h(),eb(),Z(!0),setTimeout(function(){fc.slides.classList.remove("no-transition"),cc=!0,t("ready",{indexh:Sb,indexv:Tb,currentSlide:Vb})},1)}function e(){fc.theme=document.querySelector("#theme"),fc.wrapper=document.querySelector(".reveal"),fc.slides=document.querySelector(".reveal .slides"),fc.slides.classList.add("no-transition"),fc.background=f(fc.wrapper,"div","backgrounds",null),fc.progress=f(fc.wrapper,"div","progress","<span></span>"),fc.progressbar=fc.progress.querySelector("span"),f(fc.wrapper,"aside","controls",'<div class="navigate-left"></div><div class="navigate-right"></div><div class="navigate-up"></div><div class="navigate-down"></div>'),fc.slideNumber=f(fc.wrapper,"div","slide-number",""),f(fc.wrapper,"div","state-background",null),f(fc.wrapper,"div","pause-overlay",null),fc.controls=document.querySelector(".reveal .controls"),fc.controlsLeft=l(document.querySelectorAll(".navigate-left")),fc.controlsRight=l(document.querySelectorAll(".navigate-right")),fc.controlsUp=l(document.querySelectorAll(".navigate-up")),fc.controlsDown=l(document.querySelectorAll(".navigate-down")),fc.controlsPrev=l(document.querySelectorAll(".navigate-prev")),fc.controlsNext=l(document.querySelectorAll(".navigate-next"))}function f(a,b,c,d){var e=a.querySelector("."+c);return e||(e=document.createElement(b),e.classList.add(c),null!==d&&(e.innerHTML=d),a.appendChild(e)),e}function g(){function a(a,b){var c={background:a.getAttribute("data-background"),backgroundSize:a.getAttribute("data-background-size"),backgroundImage:a.getAttribute("data-background-image"),backgroundColor:a.getAttribute("data-background-color"),backgroundRepeat:a.getAttribute("data-background-repeat"),backgroundPosition:a.getAttribute("data-background-position"),backgroundTransition:a.getAttribute("data-background-transition")},d=document.createElement("div");return d.className="slide-background",c.background&&(/^(http|file|\/\/)/gi.test(c.background)||/\.(svg|png|jpg|jpeg|gif|bmp)$/gi.test(c.background)?d.style.backgroundImage="url("+c.background+")":d.style.background=c.background),(c.background||c.backgroundColor||c.backgroundImage)&&d.setAttribute("data-background-hash",c.background+c.backgroundSize+c.backgroundImage+c.backgroundColor+c.backgroundRepeat+c.backgroundPosition+c.backgroundTransition),c.backgroundSize&&(d.style.backgroundSize=c.backgroundSize),c.backgroundImage&&(d.style.backgroundImage='url("'+c.backgroundImage+'")'),c.backgroundColor&&(d.style.backgroundColor=c.backgroundColor),c.backgroundRepeat&&(d.style.backgroundRepeat=c.backgroundRepeat),c.backgroundPosition&&(d.style.backgroundPosition=c.backgroundPosition),c.backgroundTransition&&d.setAttribute("data-background-transition",c.backgroundTransition),b.appendChild(d),d}q()&&document.body.classList.add("print-pdf"),fc.background.innerHTML="",fc.background.classList.add("no-transition"),l(document.querySelectorAll($b)).forEach(function(b){var c;c=q()?a(b,b):a(b,fc.background),l(b.querySelectorAll("section")).forEach(function(b){q()?a(b,b):a(b,c)})}),bc.parallaxBackgroundImage?(fc.background.style.backgroundImage='url("'+bc.parallaxBackgroundImage+'")',fc.background.style.backgroundSize=bc.parallaxBackgroundSize,setTimeout(function(){fc.wrapper.classList.add("has-parallax-background")},1)):(fc.background.style.backgroundImage="",fc.wrapper.classList.remove("has-parallax-background"))}function h(a){var b=document.querySelectorAll(Zb).length;if(fc.wrapper.classList.remove(bc.transition),"object"==typeof a&&k(bc,a),gc.trLine truncated
},Rb.prototype.on=function(a,b){this.canvas.addEventListener(a,b,!1)},Rb.prototype.off=function(a,b){this.canvas.removeEventListener(a,b,!1)},Rb.prototype.destroy=function(){this.playing=!1,this.canvas.parentNode&&this.container.removeChild(this.canvas)},{initialize:a,configure:h,sync:R,slide:Q,left:pb,right:qb,up:rb,down:sb,prev:tb,next:ub,navigateFragment:ib,prevFragment:kb,nextFragment:jb,navigateTo:Q,navigateLeft:pb,navigateRight:qb,navigateUp:rb,navigateDown:sb,navigatePrev:tb,navigateNext:ub,layout:A,availableRoutes:_,availableFragments:ab,toggleOverview:G,togglePause:M,toggleAutoSlide:O,isOverview:H,isPaused:N,isAutoSliding:P,addEventListeners:i,removeEventListeners:j,getIndices:gb,getSlide:function(a,b){var c=document.querySelectorAll($b)[a],d=c&&c.querySelectorAll("section");return"undefined"!=typeof b?d?d[b]:void 0:c},getPreviousSlide:function(){return Ub},getCurrentSlide:function(){return Vb},getScale:function(){return ec},getConfig:function(){return bc},getQueryHash:function(){var a={};location.search.replace(/[A-Z0-9]+?=([\w\.%-]*)/gi,function(b){a[b.split("=").shift()]=b.split("=").pop()});for(var b in a){var c=a[b];a[b]=unescape(c),"null"===c?a[b]=null:"true"===c?a[b]=!0:"false"===c?a[b]=!1:c.match(/^\d+$/)&&(a[b]=parseFloat(c))}return a},isFirstSlide:function(){return null==document.querySelector(Zb+".past")?!0:!1},isLastSlide:function(){return Vb?Vb.nextElementSibling?!1:I(Vb)&&Vb.parentNode.nextElementSibling?!1:!0:!1},isReady:function(){return cc},addEventListener:function(a,b,c){"addEventListener"in window&&(fc.wrapper||document.querySelector(".reveal")).addEventListener(a,b,c)},removeEventListener:function(a,b,c){"addEventListener"in window&&(fc.wrapper||document.querySelector(".reveal")).removeEventListener(a,b,c)}}}();
var Reveal=function(){"use strict";function a(a){if(b(),!ic.transforms2d&&!ic.transforms3d)return document.body.setAttribute("class","no-transforms"),void 0;window.addEventListener("load",A,!1);var d=Reveal.getQueryHash();"undefined"!=typeof d.dependencies&&delete d.dependencies,k(dc,a),k(dc,d),r(),c()}function b(){ic.transforms3d="WebkitPerspective"in document.body.style||"MozPerspective"in document.body.style||"msPerspective"in document.body.style||"OPerspective"in document.body.style||"perspective"in document.body.style,ic.transforms2d="WebkitTransform"in document.body.style||"MozTransform"in document.body.style||"msTransform"in document.body.style||"OTransform"in document.body.style||"transform"in document.body.style,ic.requestAnimationFrameMethod=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame,ic.requestAnimationFrame="function"==typeof ic.requestAnimationFrameMethod,ic.canvas=!!document.createElement("canvas").getContext,Zb=navigator.userAgent.match(/(iphone|ipod|android)/gi)}function c(){function a(){e.length&&head.js.apply(null,e),d()}function b(b){head.ready(b.src.match(/([\w\d_\-]*)\.?js$|[^\\\/]*$/i)[0],function(){"function"==typeof b.callback&&b.callback.apply(this),0===--f&&a()})}for(var c=[],e=[],f=0,g=0,h=dc.dependencies.length;h>g;g++){var i=dc.dependencies[g];(!i.condition||i.condition())&&(i.async?e.push(i.src):c.push(i.src),b(i))}c.length?(f=c.length,head.js.apply(null,c)):a()}function d(){e(),S(),h(),eb(),Z(!0),setTimeout(function(){hc.slides.classList.remove("no-transition"),ec=!0,t("ready",{indexh:Ub,indexv:Vb,currentSlide:Xb})},1)}function e(){hc.theme=document.querySelector("#theme"),hc.wrapper=document.querySelector(".reveal"),hc.slides=document.querySelector(".reveal .slides"),hc.slides.classList.add("no-transition"),hc.background=f(hc.wrapper,"div","backgrounds",null),hc.progress=f(hc.wrapper,"div","progress","<span></span>"),hc.progressbar=hc.progress.querySelector("span"),f(hc.wrapper,"aside","controls",'<div class="navigate-left"></div><div class="navigate-right"></div><div class="navigate-up"></div><div class="navigate-down"></div>'),hc.slideNumber=f(hc.wrapper,"div","slide-number",""),f(hc.wrapper,"div","state-background",null),f(hc.wrapper,"div","pause-overlay",null),hc.controls=document.querySelector(".reveal .controls"),hc.controlsLeft=l(document.querySelectorAll(".navigate-left")),hc.controlsRight=l(document.querySelectorAll(".navigate-right")),hc.controlsUp=l(document.querySelectorAll(".navigate-up")),hc.controlsDown=l(document.querySelectorAll(".navigate-down")),hc.controlsPrev=l(document.querySelectorAll(".navigate-prev")),hc.controlsNext=l(document.querySelectorAll(".navigate-next"))}function f(a,b,c,d){var e=a.querySelector("."+c);return e||(e=document.createElement(b),e.classList.add(c),null!==d&&(e.innerHTML=d),a.appendChild(e)),e}function g(){function a(a,b){var c={background:a.getAttribute("data-background"),backgroundSize:a.getAttribute("data-background-size"),backgroundImage:a.getAttribute("data-background-image"),backgroundColor:a.getAttribute("data-background-color"),backgroundRepeat:a.getAttribute("data-background-repeat"),backgroundPosition:a.getAttribute("data-background-position"),backgroundTransition:a.getAttribute("data-background-transition")},d=document.createElement("div");return d.className="slide-background",c.background&&(/^(http|file|\/\/)/gi.test(c.background)||/\.(svg|png|jpg|jpeg|gif|bmp)$/gi.test(c.background)?d.style.backgroundImage="url("+c.background+")":d.style.background=c.background),(c.background||c.backgroundColor||c.backgroundImage)&&d.setAttribute("data-background-hash",c.background+c.backgroundSize+c.backgroundImage+c.backgroundColor+c.backgroundRepeat+c.backgroundPosition+c.backgroundTransition),c.backgroundSize&&(d.style.backgroundSize=c.backgroundSize),c.backgroundImage&&(d.style.backgroundImage='url("'+c.backgroundImage+'")'),c.backgroundColor&&(d.style.backgroundColor=c.backgroundColor),c.backgroundRepeat&&(d.style.backgroundRepeat=c.backgroundRepeat),c.backgroundPosition&&(d.style.backgroundPosition=c.backgroundPosition),c.backgroundTransition&&d.setAttribute("data-background-transition",c.backgroundTransition),b.appendChild(d),d}q()&&document.body.classList.add("print-pdf"),hc.background.innerHTML="",hc.background.classList.add("no-transition"),l(document.querySelectorAll(ac)).forEach(function(b){var c;c=q()?a(b,b):a(b,hc.background),l(b.querySelectorAll("section")).forEach(function(b){q()?a(b,b):a(b,c)})}),dc.parallaxBackgroundImage?(hc.background.style.backgroundImage='url("'+dc.parallaxBackgroundImage+'")',hc.background.style.backgroundSize=dc.parallaxBackgroundSize,setTimeout(function(){hc.wrapper.classList.add("has-parallax-background")},1)):(hc.background.style.backgroundImage="",hc.wrapper.classList.remove("has-parallax-background"))}function h(a){var b=document.querySelectorAll(_b).length;if(hc.wrapper.classList.remove(dc.transition),"object"==typeof a&&k(dc,a),ic.trLine truncated
},Tb.prototype.on=function(a,b){this.canvas.addEventListener(a,b,!1)},Tb.prototype.off=function(a,b){this.canvas.removeEventListener(a,b,!1)},Tb.prototype.destroy=function(){this.playing=!1,this.canvas.parentNode&&this.container.removeChild(this.canvas)},{initialize:a,configure:h,sync:R,slide:Q,left:rb,right:sb,up:tb,down:ub,prev:vb,next:wb,navigateFragment:kb,prevFragment:mb,nextFragment:lb,navigateTo:Q,navigateLeft:rb,navigateRight:sb,navigateUp:tb,navigateDown:ub,navigatePrev:vb,navigateNext:wb,layout:A,availableRoutes:_,availableFragments:ab,toggleOverview:G,togglePause:M,toggleAutoSlide:O,isOverview:H,isPaused:N,isAutoSliding:P,addEventListeners:i,removeEventListeners:j,getState:hb,setState:ib,getIndices:gb,getSlide:function(a,b){var c=document.querySelectorAll(ac)[a],d=c&&c.querySelectorAll("section");return"undefined"!=typeof b?d?d[b]:void 0:c},getPreviousSlide:function(){return Wb},getCurrentSlide:function(){return Xb},getScale:function(){return gc},getConfig:function(){return dc},getQueryHash:function(){var a={};location.search.replace(/[A-Z0-9]+?=([\w\.%-]*)/gi,function(b){a[b.split("=").shift()]=b.split("=").pop()});for(var b in a){var c=a[b];a[b]=unescape(c),"null"===c?a[b]=null:"true"===c?a[b]=!0:"false"===c?a[b]=!1:c.match(/^\d+$/)&&(a[b]=parseFloat(c))}return a},isFirstSlide:function(){return null==document.querySelector(_b+".past")?!0:!1},isLastSlide:function(){return Xb?Xb.nextElementSibling?!1:I(Xb)&&Xb.parentNode.nextElementSibling?!1:!0:!1},isReady:function(){return ec},addEventListener:function(a,b,c){"addEventListener"in window&&(hc.wrapper||document.querySelector(".reveal")).addEventListener(a,b,c)},removeEventListener:function(a,b,c){"addEventListener"in window&&(hc.wrapper||document.querySelector(".reveal")).removeEventListener(a,b,c)}}}();