From: hakimel Date: Mon, 21 Jan 2013 17:45:52 +0000 (-0500) Subject: add overviewshown and overviewhidden events (closes #298) X-Git-Tag: 2.2.0~13 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=d489ec2f9ddddb9e502c3cccbfe277f84c22963b;p=reveal.js.git add overviewshown and overviewhidden events (closes #298) --- diff --git a/README.md b/README.md index d7bf4c8..b5f374f 100644 --- a/README.md +++ b/README.md @@ -256,7 +256,15 @@ Reveal.addEventListener( 'fragmenthidden', function( event ) { ### Overview mode Press "Esc" key to toggle the overview mode on and off. While you're in this mode, you can still navigate between slides, -as if you were at 1,000 feet above your presentation. +as if you were at 1,000 feet above your presentation. The overview mode comes with a few API hooks: + +```javascript +Reveal.addEventListener( 'overviewshown', function( event ) { /* ... */ } ); +Reveal.addEventListener( 'overviewhidden', function( event ) { /* ... */ } ); + +// Toggle the overview mode programmatically +Reveal.toggleOverview(); +``` ### Fullscreen mode Just press »F« on your keyboard to show your presentation in fullscreen mode. Press the »ESC« key to exit fullscreen mode. diff --git a/js/reveal.js b/js/reveal.js index 93b14f7..b3d1d7f 100644 --- a/js/reveal.js +++ b/js/reveal.js @@ -622,14 +622,16 @@ var Reveal = (function(){ // Only proceed if enabled in config if( config.overview ) { + var wasActive = dom.wrapper.classList.contains( 'overview' ); + dom.wrapper.classList.add( 'overview' ); dom.wrapper.classList.remove( 'exit-overview' ); clearTimeout( activateOverviewTimeout ); clearTimeout( deactivateOverviewTimeout ); - // Not the pretties solution, but need to let the overview - // class apply first so that slides are measured accurately + // Not the pretties solution, but need to let the overview + // class apply first so that slides are measured accurately // before we can position them activateOverviewTimeout = setTimeout( function(){ @@ -681,6 +683,15 @@ var Reveal = (function(){ layout(); + if( !wasActive ) { + // Notify observers of the overview showing + dispatchEvent( 'overviewshown', { + 'indexh': indexh, + 'indexv': indexv, + 'currentSlide': currentSlide + } ); + } + }, 10 ); } @@ -730,6 +741,13 @@ var Reveal = (function(){ slide( indexh, indexv ); + // Notify observers of the overview hiding + dispatchEvent( 'overviewhidden', { + 'indexh': indexh, + 'indexv': indexv, + 'currentSlide': currentSlide + } ); + } } diff --git a/js/reveal.min.js b/js/reveal.min.js index 8a6bec8..d3b2a1a 100644 --- a/js/reveal.min.js +++ b/js/reveal.min.js @@ -1,8 +1,8 @@ /*! - * reveal.js 2.2 (2013-01-21, 12:28) + * reveal.js 2.2 (2013-01-21, 12:41) * http://lab.hakim.se/reveal-js * MIT licensed * * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se */ -var Reveal=function(){"use strict";function u(a){return n||m?(window.addEventListener("load",J,!1),C(e,a),w(),x(),void 0):(document.body.setAttribute("class","no-transforms"),void 0)}function v(){if(l.theme=document.querySelector("#theme"),l.wrapper=document.querySelector(".reveal"),l.slides=document.querySelector(".reveal .slides"),!l.wrapper.querySelector(".progress")&&e.progress){var a=document.createElement("div");a.classList.add("progress"),a.innerHTML="",l.wrapper.appendChild(a)}if(!l.wrapper.querySelector(".controls")&&e.controls){var b=document.createElement("aside");b.classList.add("controls"),b.innerHTML='',l.wrapper.appendChild(b)}if(!l.wrapper.querySelector(".state-background")){var c=document.createElement("div");c.classList.add("state-background"),l.wrapper.appendChild(c)}if(!l.wrapper.querySelector(".pause-overlay")){var d=document.createElement("div");d.classList.add("pause-overlay"),l.wrapper.appendChild(d)}l.progress=document.querySelector(".reveal .progress"),l.progressbar=document.querySelector(".reveal .progress span"),e.controls&&(l.controls=document.querySelector(".reveal .controls"),l.controlsLeft=D(document.querySelectorAll(".navigate-left")),l.controlsRight=D(document.querySelectorAll(".navigate-right")),l.controlsUp=D(document.querySelectorAll(".navigate-up")),l.controlsDown=D(document.querySelectorAll(".navigate-down")),l.controlsPrev=D(document.querySelectorAll(".navigate-prev")),l.controlsNext=D(document.querySelectorAll(".navigate-next")))}function w(){navigator.userAgent.match(/(iphone|ipod)/i)&&(document.documentElement.style.overflow="scroll",document.body.style.height="120%",window.addEventListener("load",G,!1),window.addEventListener("orientationchange",G,!1))}function x(){function g(){b.length&&head.js.apply(null,b),y()}for(var a=[],b=[],c=0,d=e.dependencies.length;d>c;c++){var f=e.dependencies[c];(!f.condition||f.condition())&&(f.async?b.push(f.src):a.push(f.src),"function"==typeof f.callback&&head.ready(f.src.match(/([\w\d_\-]*)\.?js$|[^\\\/]*$/i)[0],f.callback))}a.length?(head.ready(g),head.js.apply(null,a)):g()}function y(){v(),A(),z(),J(),$(),db(),setTimeout(function(){H("ready",{indexh:g,indexv:h,currentSlide:j})},1)}function z(){if(m===!1&&(e.transition="linear"),e.controls&&l.controls&&(l.controls.style.display="block"),e.progress&&l.progress&&(l.progress.style.display="block"),"default"!==e.transition&&l.wrapper.classList.add(e.transition),e.rtl&&l.wrapper.classList.add("rtl"),e.center&&l.wrapper.classList.add("center"),e.mouseWheel&&(document.addEventListener("DOMMouseScroll",ob,!1),document.addEventListener("mousewheel",ob,!1)),e.rollingLinks&&I(),e.theme&&l.theme){var a=l.theme.getAttribute("href"),b=/[^\/]*?(?=\.css)/,c=a.match(b)[0];e.theme!==c&&(a=a.replace(b,e.theme),l.theme.setAttribute("href",a))}}function A(){if(window.addEventListener("hashchange",qb,!1),window.addEventListener("resize",rb,!1),e.touch&&(document.addEventListener("touchstart",lb,!1),document.addEventListener("touchmove",mb,!1),document.addEventListener("touchend",nb,!1)),e.keyboard&&document.addEventListener("keydown",kb,!1),e.progress&&l.progress&&l.progress.addEventListener("click",F(pb),!1),e.controls&&l.controls){var a="ontouchstart"in window?"touchstart":"click";l.controlsLeft.forEach(function(b){b.addEventListener(a,F(eb),!1)}),l.controlsRight.forEach(function(b){b.addEventListener(a,F(fb),!1)}),l.controlsUp.forEach(function(b){b.addEventListener(a,F(gb),!1)}),l.controlsDown.forEach(function(b){b.addEventListener(a,F(hb),!1)}),l.controlsPrev.forEach(function(b){b.addEventListener(a,F(ib),!1)}),l.controlsNext.forEach(function(b){b.addEventListener(a,F(jb),!1)})}}function B(){if(document.removeEventListener("keydown",kb,!1),window.removeEventListener("hashchange",qb,!1),window.removeEventListener("resize",rb,!1),e.touch&&(document.removeEventListener("touchstart",lb,!1),document.removeEventListener("touchmove",mb,!1),document.removeEventListener("touchend",nb,!1)),e.progress&&l.progress&&l.progress.removeEventListener("click",F(pb),!1),e.controls&&l.controls){var a="ontouchstart"in window?"touchstart":"click";l.controlsLeft.forEach(function(b){b.removeEventListener(a,F(eb),!1)}),l.controlsRight.forEach(function(b){b.removeEventListener(a,F(fb),!1)}),l.controlsUp.forEach(function(b){b.removeEventListener(a,F(gb),!1)}),l.controlsDown.forEach(function(b){b.removeEventListener(a,F(hb),!1)}),l.controlsPrev.forEach(function(b){b.removeEventListener(a,F(ib),!1)}),l.controlsNext.forEach(function(b){b.removeEventListener(a,F(jb),!1)})}}function C(a,b){for(var c in b)a[c]=b[c]}function D(a){return Array.prototype.slice.call(a)}function E(a,b){var c=a.x-b.x,d=a.y-b.y;return Math.sqrt(c*c+d*d)}function F(a){return function(b){b.preventDefault(),a.call(null,b)}}function G(){setTimeout(function(){window.scrollTo(0,1)},0)}function H(a,b){var c=document.createEvent("HTMLEvents",1,2);c.initEvent(a,!0,!0),C(c,b),l.wrapper.dispatchEvent(c)}function I(){if(m&&!("msPerspective"in document.body.style))for(var b=document.querySelectorAll(a+" a:not(.image)"),c=0,d=b.length;d>c;c++){var e=b[c];if(!(!e.textContent||e.querySelector("img")||e.className&&e.classList.contains(e,"roll"))){var f=document.createElement("span");f.setAttribute("data-title",e.text),f.innerHTML=e.innerHTML,e.classList.add("roll"),e.innerHTML="",e.appendChild(f)}}}function J(){if(e.center)for(var b=D(document.querySelectorAll(a)),c=-l.wrapper.offsetHeight/2,d=0,f=b.length;f>d;d++){var g=b[d];"none"!==g.style.display&&(g.style.top=g.classList.contains("stack")?0:Math.max(-(g.offsetHeight/2)-20,c)+"px")}}function K(a,b){a&&a.setAttribute("data-previous-indexv",b||0)}function L(a){return a&&a.classList.contains("stack")?parseInt(a.getAttribute("data-previous-indexv")||0,10):0}function M(){e.overview&&(l.wrapper.classList.add("overview"),l.wrapper.classList.remove("exit-overview"),clearTimeout(r),clearTimeout(s),r=setTimeout(function(){for(var a=document.querySelectorAll(b),c=0,d=a.length;d>c;c++){var e=a[c],f="translateZ(-2500px) translate("+105*(c-g)+"%, 0%)";if(e.setAttribute("data-index-h",c),e.style.display="block",e.style.WebkitTransform=f,e.style.MozTransform=f,e.style.msTransform=f,e.style.OTransform=f,e.style.transform=f,e.classList.contains("stack"))for(var i=e.querySelectorAll("section"),j=0,k=i.length;k>j;j++){var l=c===g?h:L(e),m=i[j],n="translate(0%, "+105*(j-l)+"%)";m.setAttribute("data-index-h",c),m.setAttribute("data-index-v",j),m.style.display="block",m.style.WebkitTransform=n,m.style.MozTransform=n,m.style.msTransform=n,m.style.OTransform=n,m.style.transform=n,m.addEventListener("click",sb,!0)}else e.addEventListener("click",sb,!0)}J()},10))}function N(){if(e.overview){clearTimeout(r),clearTimeout(s),l.wrapper.classList.remove("overview"),l.wrapper.classList.add("exit-overview"),s=setTimeout(function(){l.wrapper.classList.remove("exit-overview")},10);for(var b=D(document.querySelectorAll(a)),c=0,d=b.length;d>c;c++){var f=b[c];f.style.display="",f.style.WebkitTransform="",f.style.MozTransform="",f.style.msTransform="",f.style.OTransform="",f.style.transform="",f.removeEventListener("click",sb,!0)}V(g,h)}}function O(a){"boolean"==typeof a?a?M():N():P()?N():M()}function P(){return l.wrapper.classList.contains("overview")}function Q(){var a=document.body,b=a.requestFullScreen||a.webkitRequestFullScreen||a.mozRequestFullScreen||a.msRequestFullScreen;b&&b.apply(a)}function R(){l.wrapper.classList.add("paused")}function S(){l.wrapper.classList.remove("paused")}function T(){U()?S():R()}function U(){return l.wrapper.classList.contains("paused")}function V(a,e,f){i=j;var l=document.querySelectorAll(b);void 0===e&&(e=L(l[a])),i&&i.parentNode&&i.parentNode.classList.contains("stack")&&K(i.parentNode,h);var m=k.concat();k.length=0;var n=g,o=h;g=W(b,void 0===a?g:a),h=W(c,void 0===e?h:e),J();a:for(var p=0,q=k.length;q>p;p++){for(var r=0;m.length>r;r++)if(m[r]===k[p]){m.splice(r,1);continue a}document.documentElement.classList.add(k[p]),H(k[p])}for(;m.length;)document.documentElement.classList.remove(m.pop());P()&&M(),_(1500);var s=l[g],t=s.querySelectorAll("section");if(j=t[h]||s,f!==void 0){var u=j.querySelectorAll(".fragment");D(u).forEach(function(a,b){f>b?a.classList.add("visible"):a.classList.remove("visible")})}g!==n||h!==o?H("slidechanged",{indexh:g,indexv:h,previousSlide:i,currentSlide:j}):i=null,i&&(i.classList.remove("present"),document.querySelector(d).classList.contains("present")&&setTimeout(function(){var c,a=D(document.querySelectorAll(b+".stack"));for(c in a)a[c]&&K(a[c],0)},0)),Y(),X()}function W(a,b){var c=D(document.querySelectorAll(a)),d=c.length;if(d){e.loop&&(b%=d,0>b&&(b=d+b)),b=Math.max(Math.min(b,d-1),0);for(var g=0;d>g;g++){var h=c[g];if(P()===!1){var i=Math.abs((b-g)%(d-3))||0;h.style.display=i>3?"none":"block"}c[g].classList.remove("past"),c[g].classList.remove("present"),c[g].classList.remove("future"),b>g?c[g].classList.add("past"):g>b&&c[g].classList.add("future"),h.querySelector("section")&&c[g].classList.add("stack")}c[b].classList.add("present");var j=c[b].getAttribute("data-state");j&&(k=k.concat(j.split(" ")));var l=c[b].getAttribute("data-autoslide");f=l?parseInt(l,10):e.autoSlide}else b=0;return b}function X(){if(e.progress&&l.progress){var c=D(document.querySelectorAll(b)),d=document.querySelectorAll(a+":not(.stack)").length,f=0;a:for(var g=0;c.length>g;g++){for(var h=c[g],i=D(h.querySelectorAll("section")),j=0;i.length>j;j++){if(i[j].classList.contains("present"))break a;f++}if(h.classList.contains("present"))break;h.classList.contains("stack")===!1&&f++}l.progressbar.style.width=f/(d-1)*window.innerWidth+"px"}}function Y(){if(e.controls&&l.controls){var a=Z();l.controlsLeft.concat(l.controlsRight).concat(l.controlsUp).concat(l.controlsDown).concat(l.controlsPrev).concat(l.controlsNext).forEach(function(a){a.classList.remove("enabled")}),a.left&&l.controlsLeft.forEach(function(a){a.classList.add("enabled")}),a.right&&l.controlsRight.forEach(function(a){a.classList.add("enabled")}),a.up&&l.controlsUp.forEach(function(a){a.classList.add("enabled")}),a.down&&l.controlsDown.forEach(function(a){a.classList.add("enabled")}),(a.left||a.up)&&l.controlsPrev.forEach(function(a){a.classList.add("enabled")}),(a.right||a.down)&&l.controlsNext.forEach(function(a){a.classList.add("enabled")})}}function Z(){var a=document.querySelectorAll(b),d=document.querySelectorAll(c);return{left:g>0,right:a.length-1>g,up:h>0,down:d.length-1>h}}function $(){var a=window.location.hash,b=a.slice(2).split("/"),c=a.replace(/#|\//gi,"");if(isNaN(parseInt(b[0],10))&&c.length){var d=document.querySelector("#"+c);if(d){var e=Reveal.getIndices(d);V(e.h,e.v)}else V(g,h)}else{var f=parseInt(b[0],10)||0,i=parseInt(b[1],10)||0;V(f,i)}}function _(a){if(e.history)if(clearTimeout(q),"number"==typeof a)q=setTimeout(_,a);else{var b="/";j&&"string"==typeof j.getAttribute("id")?b="/"+j.getAttribute("id"):((g>0||h>0)&&(b+=g),h>0&&(b+="/"+h)),window.location.hash=b}}function ab(a){var c=g,d=h;if(a){var e=!!a.parentNode.nodeName.match(/section/gi),f=e?a.parentNode:a,i=D(document.querySelectorAll(b));c=Math.max(i.indexOf(f),0),e&&(d=Math.max(D(a.parentNode.querySelectorAll("section")).indexOf(a),0))}return{h:c,v:d}}function bb(){if(document.querySelector(c+".present")){var a=document.querySelectorAll(c+".present .fragment:not(.visible)");if(a.length)return a[0].classList.add("visible"),H("fragmentshown",{fragment:a[0]}),!0}else{var d=document.querySelectorAll(b+".present .fragment:not(.visible)");if(d.length)return d[0].classList.add("visible"),H("fragmentshown",{fragment:d[0]}),!0}return!1}function cb(){if(document.querySelector(c+".present")){var a=document.querySelectorAll(c+".present .fragment.visible");if(a.length)return a[a.length-1].classList.remove("visible"),H("fragmenthidden",{fragment:a[a.length-1]}),!0}else{var d=document.querySelectorAll(b+".present .fragment.visible");if(d.length)return d[d.length-1].classList.remove("visible"),H("fragmenthidden",{fragment:d[d.length-1]}),!0}return!1}function db(){clearTimeout(p),f&&(p=setTimeout(jb,f))}function eb(){(Z().left&&P()||cb()===!1)&&V(g-1)}function fb(){(Z().right&&P()||bb()===!1)&&V(g+1)}function gb(){(Z().up&&P()||cb()===!1)&&V(g,h-1)}function hb(){(Z().down&&P()||bb()===!1)&&V(g,h+1)}function ib(){if(cb()===!1)if(Z().up)gb();else{var a=document.querySelector(b+".past:nth-child("+g+")");a&&(h=a.querySelectorAll("section").length+1||void 0,g--,V())}}function jb(){bb()===!1&&(Z().down?hb():fb()),db()}function kb(a){document.activeElement;var c=!(!document.activeElement||!document.activeElement.type&&!document.activeElement.href&&"inherit"===document.activeElement.contentEditable);if(!(c||a.shiftKey||a.altKey||a.ctrlKey||a.metaKey)){var d=!0;switch(a.keyCode){case 80:case 33:ib();break;case 78:case 34:jb();break;case 72:case 37:eb();break;case 76:case 39:fb();break;case 75:case 38:gb();break;case 74:case 40:hb();break;case 36:V(0);break;case 35:V(Number.MAX_VALUE);break;case 32:P()?N():jb();break;case 13:P()?N():d=!1;break;case 66:case 190:case 191:T();break;case 70:Q();break;default:d=!1}d?a.preventDefault():27===a.keyCode&&m&&(O(),a.preventDefault()),db()}}function lb(a){t.startX=a.touches[0].clientX,t.startY=a.touches[0].clientY,t.startCount=a.touches.length,2===a.touches.length&&e.overview&&(t.startSpan=E({x:a.touches[1].clientX,y:a.touches[1].clientY},{x:t.startX,y:t.startY}))}function mb(a){if(t.handled)navigator.userAgent.match(/android/gi)&&a.preventDefault();else{var b=a.touches[0].clientX,c=a.touches[0].clientY;if(2===a.touches.length&&2===t.startCount&&e.overview){var d=E({x:a.touches[1].clientX,y:a.touches[1].clientY},{x:t.startX,y:t.startY});Math.abs(t.startSpan-d)>t.threshold&&(t.handled=!0,t.startSpan>d?M():N()),a.preventDefault()}else if(1===a.touches.length&&2!==t.startCount){var f=b-t.startX,g=c-t.startY;f>t.threshold&&Math.abs(f)>Math.abs(g)?(t.handled=!0,eb()):-t.threshold>f&&Math.abs(f)>Math.abs(g)?(t.handled=!0,fb()):g>t.threshold?(t.handled=!0,gb()):-t.threshold>g&&(t.handled=!0,hb()),a.preventDefault()}}}function nb(){t.handled=!1}function ob(a){clearTimeout(o),o=setTimeout(function(){var b=a.detail||-a.wheelDelta;b>0?jb():ib()},100)}function pb(a){var c=D(document.querySelectorAll(b)).length,d=Math.floor(a.clientX/l.wrapper.offsetWidth*c);V(d)}function qb(){$()}function rb(){J()}function sb(a){if(P()){a.preventDefault(),N();for(var b=a.target;b&&!b.nodeName.match(/section/gi);)b=b.parentNode;if(b.nodeName.match(/section/gi)){var c=parseInt(b.getAttribute("data-index-h"),10),d=parseInt(b.getAttribute("data-index-v"),10);V(c,d)}}}var i,j,a=".reveal .slides section",b=".reveal .slides>section",c=".reveal .slides>section.present>section",d=".reveal .slides>section:first-child",e={controls:!0,progress:!0,history:!1,keyboard:!0,overview:!0,center:!0,touch:!0,loop:!1,rtl:!1,autoSlide:0,mouseWheel:!1,rollingLinks:!0,theme:null,transition:"default",dependencies:[]},f=e.autoSlide,g=0,h=0,k=[],l={},m="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,n="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,o=0,p=0,q=0,r=0,s=0,t={startX:0,startY:0,startSpan:0,startCount:0,handled:!1,threshold:80};return{initialize:u,slide:V,left:eb,right:fb,up:gb,down:hb,prev:ib,next:jb,prevFragment:cb,nextFragment:bb,navigateTo:V,navigateLeft:eb,navigateRight:fb,navigateUp:gb,navigateDown:hb,navigatePrev:ib,navigateNext:jb,layout:J,toggleOverview:O,togglePause:T,addEventListeners:A,removeEventListeners:B,getIndices:ab,getPreviousSlide:function(){return i},getCurrentSlide:function(){return j},getQueryHash:function(){var a={};return location.search.replace(/[A-Z0-9]+?=(\w*)/gi,function(b){a[b.split("=").shift()]=b.split("=").pop()}),a},addEventListener:function(a,b,c){"addEventListener"in window&&(l.wrapper||document.querySelector(".reveal")).addEventListener(a,b,c)},removeEventListener:function(a,b,c){"addEventListener"in window&&(l.wrapper||document.querySelector(".reveal")).removeEventListener(a,b,c)}}}(); \ No newline at end of file +var Reveal=function(){"use strict";function u(a){return n||m?(window.addEventListener("load",J,!1),C(e,a),w(),x(),void 0):(document.body.setAttribute("class","no-transforms"),void 0)}function v(){if(l.theme=document.querySelector("#theme"),l.wrapper=document.querySelector(".reveal"),l.slides=document.querySelector(".reveal .slides"),!l.wrapper.querySelector(".progress")&&e.progress){var a=document.createElement("div");a.classList.add("progress"),a.innerHTML="",l.wrapper.appendChild(a)}if(!l.wrapper.querySelector(".controls")&&e.controls){var b=document.createElement("aside");b.classList.add("controls"),b.innerHTML='',l.wrapper.appendChild(b)}if(!l.wrapper.querySelector(".state-background")){var c=document.createElement("div");c.classList.add("state-background"),l.wrapper.appendChild(c)}if(!l.wrapper.querySelector(".pause-overlay")){var d=document.createElement("div");d.classList.add("pause-overlay"),l.wrapper.appendChild(d)}l.progress=document.querySelector(".reveal .progress"),l.progressbar=document.querySelector(".reveal .progress span"),e.controls&&(l.controls=document.querySelector(".reveal .controls"),l.controlsLeft=D(document.querySelectorAll(".navigate-left")),l.controlsRight=D(document.querySelectorAll(".navigate-right")),l.controlsUp=D(document.querySelectorAll(".navigate-up")),l.controlsDown=D(document.querySelectorAll(".navigate-down")),l.controlsPrev=D(document.querySelectorAll(".navigate-prev")),l.controlsNext=D(document.querySelectorAll(".navigate-next")))}function w(){navigator.userAgent.match(/(iphone|ipod)/i)&&(document.documentElement.style.overflow="scroll",document.body.style.height="120%",window.addEventListener("load",G,!1),window.addEventListener("orientationchange",G,!1))}function x(){function g(){b.length&&head.js.apply(null,b),y()}for(var a=[],b=[],c=0,d=e.dependencies.length;d>c;c++){var f=e.dependencies[c];(!f.condition||f.condition())&&(f.async?b.push(f.src):a.push(f.src),"function"==typeof f.callback&&head.ready(f.src.match(/([\w\d_\-]*)\.?js$|[^\\\/]*$/i)[0],f.callback))}a.length?(head.ready(g),head.js.apply(null,a)):g()}function y(){v(),A(),z(),J(),$(),db(),setTimeout(function(){H("ready",{indexh:g,indexv:h,currentSlide:j})},1)}function z(){if(m===!1&&(e.transition="linear"),e.controls&&l.controls&&(l.controls.style.display="block"),e.progress&&l.progress&&(l.progress.style.display="block"),"default"!==e.transition&&l.wrapper.classList.add(e.transition),e.rtl&&l.wrapper.classList.add("rtl"),e.center&&l.wrapper.classList.add("center"),e.mouseWheel&&(document.addEventListener("DOMMouseScroll",ob,!1),document.addEventListener("mousewheel",ob,!1)),e.rollingLinks&&I(),e.theme&&l.theme){var a=l.theme.getAttribute("href"),b=/[^\/]*?(?=\.css)/,c=a.match(b)[0];e.theme!==c&&(a=a.replace(b,e.theme),l.theme.setAttribute("href",a))}}function A(){if(window.addEventListener("hashchange",qb,!1),window.addEventListener("resize",rb,!1),e.touch&&(document.addEventListener("touchstart",lb,!1),document.addEventListener("touchmove",mb,!1),document.addEventListener("touchend",nb,!1)),e.keyboard&&document.addEventListener("keydown",kb,!1),e.progress&&l.progress&&l.progress.addEventListener("click",F(pb),!1),e.controls&&l.controls){var a="ontouchstart"in window?"touchstart":"click";l.controlsLeft.forEach(function(b){b.addEventListener(a,F(eb),!1)}),l.controlsRight.forEach(function(b){b.addEventListener(a,F(fb),!1)}),l.controlsUp.forEach(function(b){b.addEventListener(a,F(gb),!1)}),l.controlsDown.forEach(function(b){b.addEventListener(a,F(hb),!1)}),l.controlsPrev.forEach(function(b){b.addEventListener(a,F(ib),!1)}),l.controlsNext.forEach(function(b){b.addEventListener(a,F(jb),!1)})}}function B(){if(document.removeEventListener("keydown",kb,!1),window.removeEventListener("hashchange",qb,!1),window.removeEventListener("resize",rb,!1),e.touch&&(document.removeEventListener("touchstart",lb,!1),document.removeEventListener("touchmove",mb,!1),document.removeEventListener("touchend",nb,!1)),e.progress&&l.progress&&l.progress.removeEventListener("click",F(pb),!1),e.controls&&l.controls){var a="ontouchstart"in window?"touchstart":"click";l.controlsLeft.forEach(function(b){b.removeEventListener(a,F(eb),!1)}),l.controlsRight.forEach(function(b){b.removeEventListener(a,F(fb),!1)}),l.controlsUp.forEach(function(b){b.removeEventListener(a,F(gb),!1)}),l.controlsDown.forEach(function(b){b.removeEventListener(a,F(hb),!1)}),l.controlsPrev.forEach(function(b){b.removeEventListener(a,F(ib),!1)}),l.controlsNext.forEach(function(b){b.removeEventListener(a,F(jb),!1)})}}function C(a,b){for(var c in b)a[c]=b[c]}function D(a){return Array.prototype.slice.call(a)}function E(a,b){var c=a.x-b.x,d=a.y-b.y;return Math.sqrt(c*c+d*d)}function F(a){return function(b){b.preventDefault(),a.call(null,b)}}function G(){setTimeout(function(){window.scrollTo(0,1)},0)}function H(a,b){var c=document.createEvent("HTMLEvents",1,2);c.initEvent(a,!0,!0),C(c,b),l.wrapper.dispatchEvent(c)}function I(){if(m&&!("msPerspective"in document.body.style))for(var b=document.querySelectorAll(a+" a:not(.image)"),c=0,d=b.length;d>c;c++){var e=b[c];if(!(!e.textContent||e.querySelector("img")||e.className&&e.classList.contains(e,"roll"))){var f=document.createElement("span");f.setAttribute("data-title",e.text),f.innerHTML=e.innerHTML,e.classList.add("roll"),e.innerHTML="",e.appendChild(f)}}}function J(){if(e.center)for(var b=D(document.querySelectorAll(a)),c=-l.wrapper.offsetHeight/2,d=0,f=b.length;f>d;d++){var g=b[d];"none"!==g.style.display&&(g.style.top=g.classList.contains("stack")?0:Math.max(-(g.offsetHeight/2)-20,c)+"px")}}function K(a,b){a&&a.setAttribute("data-previous-indexv",b||0)}function L(a){return a&&a.classList.contains("stack")?parseInt(a.getAttribute("data-previous-indexv")||0,10):0}function M(){if(e.overview){var a=l.wrapper.classList.contains("overview");l.wrapper.classList.add("overview"),l.wrapper.classList.remove("exit-overview"),clearTimeout(r),clearTimeout(s),r=setTimeout(function(){for(var c=document.querySelectorAll(b),d=0,e=c.length;e>d;d++){var f=c[d],i="translateZ(-2500px) translate("+105*(d-g)+"%, 0%)";if(f.setAttribute("data-index-h",d),f.style.display="block",f.style.WebkitTransform=i,f.style.MozTransform=i,f.style.msTransform=i,f.style.OTransform=i,f.style.transform=i,f.classList.contains("stack"))for(var k=f.querySelectorAll("section"),l=0,m=k.length;m>l;l++){var n=d===g?h:L(f),o=k[l],p="translate(0%, "+105*(l-n)+"%)";o.setAttribute("data-index-h",d),o.setAttribute("data-index-v",l),o.style.display="block",o.style.WebkitTransform=p,o.style.MozTransform=p,o.style.msTransform=p,o.style.OTransform=p,o.style.transform=p,o.addEventListener("click",sb,!0)}else f.addEventListener("click",sb,!0)}J(),a||H("overviewshown",{indexh:g,indexv:h,currentSlide:j})},10)}}function N(){if(e.overview){clearTimeout(r),clearTimeout(s),l.wrapper.classList.remove("overview"),l.wrapper.classList.add("exit-overview"),s=setTimeout(function(){l.wrapper.classList.remove("exit-overview")},10);for(var b=D(document.querySelectorAll(a)),c=0,d=b.length;d>c;c++){var f=b[c];f.style.display="",f.style.WebkitTransform="",f.style.MozTransform="",f.style.msTransform="",f.style.OTransform="",f.style.transform="",f.removeEventListener("click",sb,!0)}V(g,h),H("overviewhidden",{indexh:g,indexv:h,currentSlide:j})}}function O(a){"boolean"==typeof a?a?M():N():P()?N():M()}function P(){return l.wrapper.classList.contains("overview")}function Q(){var a=document.body,b=a.requestFullScreen||a.webkitRequestFullScreen||a.mozRequestFullScreen||a.msRequestFullScreen;b&&b.apply(a)}function R(){l.wrapper.classList.add("paused")}function S(){l.wrapper.classList.remove("paused")}function T(){U()?S():R()}function U(){return l.wrapper.classList.contains("paused")}function V(a,e,f){i=j;var l=document.querySelectorAll(b);void 0===e&&(e=L(l[a])),i&&i.parentNode&&i.parentNode.classList.contains("stack")&&K(i.parentNode,h);var m=k.concat();k.length=0;var n=g,o=h;g=W(b,void 0===a?g:a),h=W(c,void 0===e?h:e),J();a:for(var p=0,q=k.length;q>p;p++){for(var r=0;m.length>r;r++)if(m[r]===k[p]){m.splice(r,1);continue a}document.documentElement.classList.add(k[p]),H(k[p])}for(;m.length;)document.documentElement.classList.remove(m.pop());P()&&M(),_(1500);var s=l[g],t=s.querySelectorAll("section");if(j=t[h]||s,f!==void 0){var u=j.querySelectorAll(".fragment");D(u).forEach(function(a,b){f>b?a.classList.add("visible"):a.classList.remove("visible")})}g!==n||h!==o?H("slidechanged",{indexh:g,indexv:h,previousSlide:i,currentSlide:j}):i=null,i&&(i.classList.remove("present"),document.querySelector(d).classList.contains("present")&&setTimeout(function(){var c,a=D(document.querySelectorAll(b+".stack"));for(c in a)a[c]&&K(a[c],0)},0)),Y(),X()}function W(a,b){var c=D(document.querySelectorAll(a)),d=c.length;if(d){e.loop&&(b%=d,0>b&&(b=d+b)),b=Math.max(Math.min(b,d-1),0);for(var g=0;d>g;g++){var h=c[g];if(P()===!1){var i=Math.abs((b-g)%(d-3))||0;h.style.display=i>3?"none":"block"}c[g].classList.remove("past"),c[g].classList.remove("present"),c[g].classList.remove("future"),b>g?c[g].classList.add("past"):g>b&&c[g].classList.add("future"),h.querySelector("section")&&c[g].classList.add("stack")}c[b].classList.add("present");var j=c[b].getAttribute("data-state");j&&(k=k.concat(j.split(" ")));var l=c[b].getAttribute("data-autoslide");f=l?parseInt(l,10):e.autoSlide}else b=0;return b}function X(){if(e.progress&&l.progress){var c=D(document.querySelectorAll(b)),d=document.querySelectorAll(a+":not(.stack)").length,f=0;a:for(var g=0;c.length>g;g++){for(var h=c[g],i=D(h.querySelectorAll("section")),j=0;i.length>j;j++){if(i[j].classList.contains("present"))break a;f++}if(h.classList.contains("present"))break;h.classList.contains("stack")===!1&&f++}l.progressbar.style.width=f/(d-1)*window.innerWidth+"px"}}function Y(){if(e.controls&&l.controls){var a=Z();l.controlsLeft.concat(l.controlsRight).concat(l.controlsUp).concat(l.controlsDown).concat(l.controlsPrev).concat(l.controlsNext).forEach(function(a){a.classList.remove("enabled")}),a.left&&l.controlsLeft.forEach(function(a){a.classList.add("enabled")}),a.right&&l.controlsRight.forEach(function(a){a.classList.add("enabled")}),a.up&&l.controlsUp.forEach(function(a){a.classList.add("enabled")}),a.down&&l.controlsDown.forEach(function(a){a.classList.add("enabled")}),(a.left||a.up)&&l.controlsPrev.forEach(function(a){a.classList.add("enabled")}),(a.right||a.down)&&l.controlsNext.forEach(function(a){a.classList.add("enabled")})}}function Z(){var a=document.querySelectorAll(b),d=document.querySelectorAll(c);return{left:g>0,right:a.length-1>g,up:h>0,down:d.length-1>h}}function $(){var a=window.location.hash,b=a.slice(2).split("/"),c=a.replace(/#|\//gi,"");if(isNaN(parseInt(b[0],10))&&c.length){var d=document.querySelector("#"+c);if(d){var e=Reveal.getIndices(d);V(e.h,e.v)}else V(g,h)}else{var f=parseInt(b[0],10)||0,i=parseInt(b[1],10)||0;V(f,i)}}function _(a){if(e.history)if(clearTimeout(q),"number"==typeof a)q=setTimeout(_,a);else{var b="/";j&&"string"==typeof j.getAttribute("id")?b="/"+j.getAttribute("id"):((g>0||h>0)&&(b+=g),h>0&&(b+="/"+h)),window.location.hash=b}}function ab(a){var c=g,d=h;if(a){var e=!!a.parentNode.nodeName.match(/section/gi),f=e?a.parentNode:a,i=D(document.querySelectorAll(b));c=Math.max(i.indexOf(f),0),e&&(d=Math.max(D(a.parentNode.querySelectorAll("section")).indexOf(a),0))}return{h:c,v:d}}function bb(){if(document.querySelector(c+".present")){var a=document.querySelectorAll(c+".present .fragment:not(.visible)");if(a.length)return a[0].classList.add("visible"),H("fragmentshown",{fragment:a[0]}),!0}else{var d=document.querySelectorAll(b+".present .fragment:not(.visible)");if(d.length)return d[0].classList.add("visible"),H("fragmentshown",{fragment:d[0]}),!0}return!1}function cb(){if(document.querySelector(c+".present")){var a=document.querySelectorAll(c+".present .fragment.visible");if(a.length)return a[a.length-1].classList.remove("visible"),H("fragmenthidden",{fragment:a[a.length-1]}),!0}else{var d=document.querySelectorAll(b+".present .fragment.visible");if(d.length)return d[d.length-1].classList.remove("visible"),H("fragmenthidden",{fragment:d[d.length-1]}),!0}return!1}function db(){clearTimeout(p),f&&(p=setTimeout(jb,f))}function eb(){(Z().left&&P()||cb()===!1)&&V(g-1)}function fb(){(Z().right&&P()||bb()===!1)&&V(g+1)}function gb(){(Z().up&&P()||cb()===!1)&&V(g,h-1)}function hb(){(Z().down&&P()||bb()===!1)&&V(g,h+1)}function ib(){if(cb()===!1)if(Z().up)gb();else{var a=document.querySelector(b+".past:nth-child("+g+")");a&&(h=a.querySelectorAll("section").length+1||void 0,g--,V())}}function jb(){bb()===!1&&(Z().down?hb():fb()),db()}function kb(a){document.activeElement;var c=!(!document.activeElement||!document.activeElement.type&&!document.activeElement.href&&"inherit"===document.activeElement.contentEditable);if(!(c||a.shiftKey||a.altKey||a.ctrlKey||a.metaKey)){var d=!0;switch(a.keyCode){case 80:case 33:ib();break;case 78:case 34:jb();break;case 72:case 37:eb();break;case 76:case 39:fb();break;case 75:case 38:gb();break;case 74:case 40:hb();break;case 36:V(0);break;case 35:V(Number.MAX_VALUE);break;case 32:P()?N():jb();break;case 13:P()?N():d=!1;break;case 66:case 190:case 191:T();break;case 70:Q();break;default:d=!1}d?a.preventDefault():27===a.keyCode&&m&&(O(),a.preventDefault()),db()}}function lb(a){t.startX=a.touches[0].clientX,t.startY=a.touches[0].clientY,t.startCount=a.touches.length,2===a.touches.length&&e.overview&&(t.startSpan=E({x:a.touches[1].clientX,y:a.touches[1].clientY},{x:t.startX,y:t.startY}))}function mb(a){if(t.handled)navigator.userAgent.match(/android/gi)&&a.preventDefault();else{var b=a.touches[0].clientX,c=a.touches[0].clientY;if(2===a.touches.length&&2===t.startCount&&e.overview){var d=E({x:a.touches[1].clientX,y:a.touches[1].clientY},{x:t.startX,y:t.startY});Math.abs(t.startSpan-d)>t.threshold&&(t.handled=!0,t.startSpan>d?M():N()),a.preventDefault()}else if(1===a.touches.length&&2!==t.startCount){var f=b-t.startX,g=c-t.startY;f>t.threshold&&Math.abs(f)>Math.abs(g)?(t.handled=!0,eb()):-t.threshold>f&&Math.abs(f)>Math.abs(g)?(t.handled=!0,fb()):g>t.threshold?(t.handled=!0,gb()):-t.threshold>g&&(t.handled=!0,hb()),a.preventDefault()}}}function nb(){t.handled=!1}function ob(a){clearTimeout(o),o=setTimeout(function(){var b=a.detail||-a.wheelDelta;b>0?jb():ib()},100)}function pb(a){var c=D(document.querySelectorAll(b)).length,d=Math.floor(a.clientX/l.wrapper.offsetWidth*c);V(d)}function qb(){$()}function rb(){J()}function sb(a){if(P()){a.preventDefault(),N();for(var b=a.target;b&&!b.nodeName.match(/section/gi);)b=b.parentNode;if(b.nodeName.match(/section/gi)){var c=parseInt(b.getAttribute("data-index-h"),10),d=parseInt(b.getAttribute("data-index-v"),10);V(c,d)}}}var i,j,a=".reveal .slides section",b=".reveal .slides>section",c=".reveal .slides>section.present>section",d=".reveal .slides>section:first-child",e={controls:!0,progress:!0,history:!1,keyboard:!0,overview:!0,center:!0,touch:!0,loop:!1,rtl:!1,autoSlide:0,mouseWheel:!1,rollingLinks:!0,theme:null,transition:"default",dependencies:[]},f=e.autoSlide,g=0,h=0,k=[],l={},m="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,n="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,o=0,p=0,q=0,r=0,s=0,t={startX:0,startY:0,startSpan:0,startCount:0,handled:!1,threshold:80};return{initialize:u,slide:V,left:eb,right:fb,up:gb,down:hb,prev:ib,next:jb,prevFragment:cb,nextFragment:bb,navigateTo:V,navigateLeft:eb,navigateRight:fb,navigateUp:gb,navigateDown:hb,navigatePrev:ib,navigateNext:jb,layout:J,toggleOverview:O,togglePause:T,addEventListeners:A,removeEventListeners:B,getIndices:ab,getPreviousSlide:function(){return i},getCurrentSlide:function(){return j},getQueryHash:function(){var a={};return location.search.replace(/[A-Z0-9]+?=(\w*)/gi,function(b){a[b.split("=").shift()]=b.split("=").pop()}),a},addEventListener:function(a,b,c){"addEventListener"in window&&(l.wrapper||document.querySelector(".reveal")).addEventListener(a,b,c)},removeEventListener:function(a,b,c){"addEventListener"in window&&(l.wrapper||document.querySelector(".reveal")).removeEventListener(a,b,c)}}}(); \ No newline at end of file