reveal-js-base-theme/js/reveal.min.js
2013-01-16 12:49:10 -08:00

8 lines
16 KiB
JavaScript

/*!
* reveal.js 2.2 (2013-01-16, 12:46)
* http://lab.hakim.se/reveal-js
* MIT licensed
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
var Reveal=function(){"use strict";function w(e){if(!p&&!h){document.body.setAttribute("class","no-transforms");return}window.addEventListener("load",B,!1),L(i,e),S(),x()}function E(){c.theme=document.querySelector("#theme"),c.wrapper=document.querySelector(".reveal"),c.slides=document.querySelector(".reveal .slides");if(!c.wrapper.querySelector(".progress")&&i.progress){var e=document.createElement("div");e.classList.add("progress"),e.innerHTML="<span></span>",c.wrapper.appendChild(e)}if(!c.wrapper.querySelector(".controls")&&i.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>',c.wrapper.appendChild(t)}if(!c.wrapper.querySelector(".state-background")){var n=document.createElement("div");n.classList.add("state-background"),c.wrapper.appendChild(n)}if(!c.wrapper.querySelector(".pause-overlay")){var r=document.createElement("div");r.classList.add("pause-overlay"),c.wrapper.appendChild(r)}c.progress=document.querySelector(".reveal .progress"),c.progressbar=document.querySelector(".reveal .progress span"),i.controls&&(c.controls=document.querySelector(".reveal .controls"),c.controlsLeft=A(document.querySelectorAll(".navigate-left")),c.controlsRight=A(document.querySelectorAll(".navigate-right")),c.controlsUp=A(document.querySelectorAll(".navigate-up")),c.controlsDown=A(document.querySelectorAll(".navigate-down")),c.controlsPrev=A(document.querySelectorAll(".navigate-prev")),c.controlsNext=A(document.querySelectorAll(".navigate-next")))}function S(){navigator.userAgent.match(/(iphone|ipod)/i)&&(document.documentElement.style.overflow="scroll",document.body.style.height="120%",window.addEventListener("load",D,!1),window.addEventListener("orientationchange",D,!1))}function x(){function o(){t.length&&head.js.apply(null,t),T()}var e=[],t=[];for(var n=0,r=i.dependencies.length;n<r;n++){var s=i.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 T(){E(),C(),N(),B(),Z(),it(),setTimeout(function(){P("ready",{indexh:o,indexv:u,currentSlide:f})},1)}function N(){h===!1&&(i.transition="linear"),i.controls&&c.controls&&(c.controls.style.display="block"),i.progress&&c.progress&&(c.progress.style.display="block"),i.transition!=="default"&&c.wrapper.classList.add(i.transition),i.rtl&&c.wrapper.classList.add("rtl"),i.center&&c.wrapper.classList.add("center"),i.mouseWheel&&(document.addEventListener("DOMMouseScroll",vt,!1),document.addEventListener("mousewheel",vt,!1)),i.rollingLinks&&H();if(i.theme&&c.theme){var e=c.theme.getAttribute("href"),t=/[^\/]*?(?=\.css)/,n=e.match(t)[0];i.theme!==n&&(e=e.replace(t,i.theme),c.theme.setAttribute("href",e))}}function C(){document.addEventListener("touchstart",ht,!1),document.addEventListener("touchmove",pt,!1),document.addEventListener("touchend",dt,!1),window.addEventListener("hashchange",gt,!1),window.addEventListener("resize",yt,!1),i.keyboard&&document.addEventListener("keydown",ct,!1),i.progress&&c.progress&&c.progress.addEventListener("click",_(mt),!1);if(i.controls&&c.controls){var e="ontouchstart"in window?"touchstart":"click";c.controlsLeft.forEach(function(t){t.addEventListener(e,_(st),!1)}),c.controlsRight.forEach(function(t){t.addEventListener(e,_(ot),!1)}),c.controlsUp.forEach(function(t){t.addEventListener(e,_(ut),!1)}),c.controlsDown.forEach(function(t){t.addEventListener(e,_(at),!1)}),c.controlsPrev.forEach(function(t){t.addEventListener(e,_(ft),!1)}),c.controlsNext.forEach(function(t){t.addEventListener(e,_(lt),!1)})}}function k(){document.removeEventListener("keydown",ct,!1),document.removeEventListener("touchstart",ht,!1),document.removeEventListener("touchmove",pt,!1),document.removeEventListener("touchend",dt,!1),window.removeEventListener("hashchange",gt,!1),window.removeEventListener("resize",yt,!1),i.progress&&c.progress&&c.progress.removeEventListener("click",_(mt),!1);if(i.controls&&c.controls){var e="ontouchstart"in window?"touchstart":"click";c.controlsLeft.forEach(function(t){t.removeEventListener(e,_(st),!1)}),c.controlsRight.forEach(function(t){t.removeEventListener(e,_(ot),!1)}),c.controlsUp.forEach(function(t){t.removeEventListener(e,_(ut),!1)}),c.controlsDown.forEach(function(t){t.removeEventListener(e,_(at),!1)}),c.controlsPrev.forEach(function(t){t.removeEventListener(e,_(ft),!1)}),c.controlsNext.forEach(function(t){t.removeEventListener(e,_(lt),!1)})}}function L(e,t){for(var n in t)e[n]=t[n]}function A(e){return Array.prototype.slice.call(e)}function O(e,t,n){e.forEach(function(e){e[t].apply(e,n)})}function M(e,t){var n=e.x-t.x,r=e.y-t.y;return Math.sqrt(n*n+r*r)}function _(e){return function(t){t.preventDefault(),e.call(null,t)}}function D(){setTimeout(function(){window.scrollTo(0,1)},0)}function P(e,t){var n=document.createEvent("HTMLEvents",1,2);n.initEvent(e,!0,!0),L(n,t),c.wrapper.dispatchEvent(n)}function H(){if(h&&!("msPerspective"in document.body.style)){var t=document.querySelectorAll(e+" a:not(.image)");for(var n=0,r=t.length;n<r;n++){var i=t[n];if(i.textContent&&!i.querySelector("img")&&(!i.className||!i.classList.contains(i,"roll"))){var s=document.createElement("span");s.setAttribute("data-title",i.text),s.innerHTML=i.innerHTML,i.classList.add("roll"),i.innerHTML="",i.appendChild(s)}}}}function B(){if(i.center){var t=A(document.querySelectorAll(e)),n=-c.wrapper.offsetHeight/2;for(var r=0,s=t.length;r<s;r++){var o=t[r];if(o.style.display==="none")continue;o.classList.contains("stack")?o.style.top=0:o.style.top=Math.max(-(o.offsetHeight/2)-20,n)+"px"}}}function j(e,t){e&&e.setAttribute("data-previous-indexv",t||0)}function F(e){return e&&e.classList.contains("stack")?parseInt(e.getAttribute("data-previous-indexv")||0,10):0}function I(){i.overview&&(c.wrapper.classList.add("overview"),c.wrapper.classList.remove("exit-overview"),clearTimeout(g),clearTimeout(y),g=setTimeout(function(){var e=document.querySelectorAll(t);for(var n=0,r=e.length;n<r;n++){var i=e[n],s="translateZ(-2500px) translate("+(n-o)*105+"%, 0%)";i.setAttribute("data-index-h",n),i.style.display="block",i.style.WebkitTransform=s,i.style.MozTransform=s,i.style.msTransform=s,i.style.OTransform=s,i.style.transform=s;if(i.classList.contains("stack")){var a=i.querySelectorAll("section");for(var f=0,l=a.length;f<l;f++){var c=n===o?u:F(i),h=a[f],p="translate(0%, "+(f-c)*105+"%)";h.setAttribute("data-index-h",n),h.setAttribute("data-index-v",f),h.style.display="block",h.style.WebkitTransform=p,h.style.MozTransform=p,h.style.msTransform=p,h.style.OTransform=p,h.style.transform=p,h.addEventListener("click",bt,!0)}}else i.addEventListener("click",bt,!0)}B()},10))}function q(){if(i.overview){clearTimeout(g),clearTimeout(y),c.wrapper.classList.remove("overview"),c.wrapper.classList.add("exit-overview"),y=setTimeout(function(){c.wrapper.classList.remove("exit-overview")},10);var t=A(document.querySelectorAll(e));for(var n=0,r=t.length;n<r;n++){var s=t[n];s.style.display="",s.style.WebkitTransform="",s.style.MozTransform="",s.style.msTransform="",s.style.OTransform="",s.style.transform="",s.removeEventListener("click",bt,!0)}J(o,u)}}function R(e){typeof e=="boolean"?e?I():q():U()?q():I()}function U(){return c.wrapper.classList.contains("overview")}function z(){var e=document.body,t=e.requestFullScreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullScreen;t&&t.apply(e)}function W(){c.wrapper.classList.add("paused")}function X(){c.wrapper.classList.remove("paused")}function V(){$()?X():W()}function $(){return c.wrapper.classList.contains("paused")}function J(e,i,s){a=f;var c=document.querySelectorAll(t);i===undefined&&(i=F(c[e])),a&&a.parentNode&&a.parentNode.classList.contains("stack")&&j(a.parentNode,u);var h=l.concat();l.length=0;var p=o,d=u;o=K(t,e===undefined?o:e),u=K(n,i===undefined?u:i),B();e:for(var v=0,m=l.length;v<m;v++){for(var g=0;g<h.length;g++)if(h[g]===l[v]){h.splice(g,1);continue e}document.documentElement.classList.add(l[v]),P(l[v])}while(h.length)document.documentElement.classList.remove(h.pop());U()&&I(),et(1500);var y=c[o],b=y.querySelectorAll("section");f=b[u]||y;if(typeof s!="undefined"){var w=f.querySelectorAll(".fragment");A(w).forEach(function(e,t){t<s?e.classList.add("visible"):e.classList.remove("visible")})}o!==p||u!==d?P("slidechanged",{indexh:o,indexv:u,previousSlide:a,currentSlide:f}):a=null,a&&(a.classList.remove("present"),document.querySelector(r).classList.contains("present")&&setTimeout(function(){var e=A(document.querySelectorAll(t+".stack")),n;for(n in e)e[n]&&j(e[n],0)},0)),G(),Q()}function K(e,t){var n=A(document.querySelectorAll(e)),r=n.length;if(r){i.loop&&(t%=r,t<0&&(t=r+t)),t=Math.max(Math.min(t,r-1),0);for(var o=0;o<r;o++){var u=n[o];if(U()===!1){var a=Math.abs((t-o)%(r-3))||0;u.style.display=a>3?"none":"block"}n[o].classList.remove("past"),n[o].classList.remove("present"),n[o].classList.remove("future"),o<t?n[o].classList.add("past"):o>t&&n[o].classList.add("future"),u.querySelector("section")&&n[o].classList.add("stack")}n[t].classList.add("present");var f=n[t].getAttribute("data-state");f&&(l=l.concat(f.split(" ")));var c=n[t].getAttribute("data-autoslide");c?s=parseInt(c,10):s=i.autoSlide}else t=0;return t}function Q(){if(i.progress&&c.progress){var n=A(document.querySelectorAll(t)),r=document.querySelectorAll(e+":not(.stack)").length,s=0;e:for(var o=0;o<n.length;o++){var u=n[o],a=A(u.querySelectorAll("section"));for(var f=0;f<a.length;f++){if(a[f].classList.contains("present"))break e;s++}if(u.classList.contains("present"))break;u.classList.contains("stack")===!1&&s++}c.progressbar.style.width=s/(r-1)*window.innerWidth+"px"}}function G(){if(i.controls&&c.controls){var e=Y();c.controlsLeft.concat(c.controlsRight).concat(c.controlsUp).concat(c.controlsDown).concat(c.controlsPrev).concat(c.controlsNext).forEach(function(e){e.classList.remove("enabled")}),e.left&&c.controlsLeft.forEach(function(e){e.classList.add("enabled")}),e.right&&c.controlsRight.forEach(function(e){e.classList.add("enabled")}),e.up&&c.controlsUp.forEach(function(e){e.classList.add("enabled")}),e.down&&c.controlsDown.forEach(function(e){e.classList.add("enabled")}),(e.left||e.up)&&c.controlsPrev.forEach(function(e){e.classList.add("enabled")}),(e.right||e.down)&&c.controlsNext.forEach(function(e){e.classList.add("enabled")})}}function Y(){var e=document.querySelectorAll(t),r=document.querySelectorAll(n);return{left:o>0,right:o<e.length-1,up:u>0,down:u<r.length-1}}function Z(){var e=window.location.hash,t=e.slice(2).split("/"),n=e.replace(/#|\//gi,"");if(isNaN(parseInt(t[0],10))&&n.length){var r=document.querySelector("#"+n);if(r){var i=Reveal.getIndices(r);J(i.h,i.v)}else J(o,u)}else{var s=parseInt(t[0],10)||0,a=parseInt(t[1],10)||0;J(s,a)}}function et(e){if(i.history){clearTimeout(m);if(typeof e=="number")m=setTimeout(et,e);else{var t="/";if(f&&typeof f.getAttribute("id")=="string")t="/"+f.getAttribute("id");else{if(o>0||u>0)t+=o;u>0&&(t+="/"+u)}window.location.hash=t}}}function tt(e){var n=o,r=u;if(e){var i=!!e.parentNode.nodeName.match(/section/gi),s=i?e.parentNode:e,a=A(document.querySelectorAll(t));n=Math.max(a.indexOf(s),0),i&&(r=Math.max(A(e.parentNode.querySelectorAll("section")).indexOf(e),0))}return{h:n,v:r}}function nt(){if(document.querySelector(n+".present")){var e=document.querySelectorAll(n+".present .fragment:not(.visible)");if(e.length)return e[0].classList.add("visible"),P("fragmentshown",{fragment:e[0]}),!0}else{var r=document.querySelectorAll(t+".present .fragment:not(.visible)");if(r.length)return r[0].classList.add("visible"),P("fragmentshown",{fragment:r[0]}),!0}return!1}function rt(){if(document.querySelector(n+".present")){var e=document.querySelectorAll(n+".present .fragment.visible");if(e.length)return e[e.length-1].classList.remove("visible"),P("fragmenthidden",{fragment:e[e.length-1]}),!0}else{var r=document.querySelectorAll(t+".present .fragment.visible");if(r.length)return r[r.length-1].classList.remove("visible"),P("fragmenthidden",{fragment:r[r.length-1]}),!0}return!1}function it(){clearTimeout(v),s&&(v=setTimeout(lt,s))}function st(){(Y().left&&U()||rt()===!1)&&J(o-1)}function ot(){(Y().right&&U()||nt()===!1)&&J(o+1)}function ut(){(Y().up&&U()||rt()===!1)&&J(o,u-1)}function at(){(Y().down&&U()||nt()===!1)&&J(o,u+1)}function ft(){if(rt()===!1)if(Y().up)ut();else{var e=document.querySelector(t+".past:nth-child("+o+")");e&&(u=e.querySelectorAll("section").length+1||undefined,o--,J())}}function lt(){nt()===!1&&(Y().down?at():ot()),it()}function ct(e){var t=document.activeElement,n=!(!document.activeElement||!document.activeElement.type&&!document.activeElement.href&&document.activeElement.contentEditable==="inherit");if(n||e.shiftKey||e.altKey||e.ctrlKey||e.metaKey)return;var r=!0;switch(e.keyCode){case 80:case 33:ft();break;case 78:case 34:lt();break;case 72:case 37:st();break;case 76:case 39:ot();break;case 75:case 38:ut();break;case 74:case 40:at();break;case 36:J(0);break;case 35:J(Number.MAX_VALUE);break;case 32:U()?q():lt();break;case 13:U()?q():r=!1;break;case 66:case 190:V();break;case 70:z();break;default:r=!1}r?e.preventDefault():e.keyCode===27&&h&&(R(),e.preventDefault()),it()}function ht(e){b.startX=e.touches[0].clientX,b.startY=e.touches[0].clientY,b.startCount=e.touches.length,e.touches.length===2&&i.overview&&(b.startSpan=M({x:e.touches[1].clientX,y:e.touches[1].clientY},{x:b.startX,y:b.startY}))}function pt(e){if(!b.handled){var t=e.touches[0].clientX,n=e.touches[0].clientY;if(e.touches.length===2&&b.startCount===2&&i.overview){var r=M({x:e.touches[1].clientX,y:e.touches[1].clientY},{x:b.startX,y:b.startY});Math.abs(b.startSpan-r)>b.threshold&&(b.handled=!0,r<b.startSpan?I():q()),e.preventDefault()}else if(e.touches.length===1&&b.startCount!==2){var s=t-b.startX,o=n-b.startY;s>b.threshold&&Math.abs(s)>Math.abs(o)?(b.handled=!0,st()):s<-b.threshold&&Math.abs(s)>Math.abs(o)?(b.handled=!0,ot()):o>b.threshold?(b.handled=!0,ut()):o<-b.threshold&&(b.handled=!0,at()),e.preventDefault()}}else navigator.userAgent.match(/android/gi)&&e.preventDefault()}function dt(e){b.handled=!1}function vt(e){clearTimeout(d),d=setTimeout(function(){var t=e.detail||-e.wheelDelta;t>0?lt():ft()},100)}function mt(e){var n=A(document.querySelectorAll(t)).length,r=Math.floor(e.clientX/c.wrapper.offsetWidth*n);J(r)}function gt(e){Z()}function yt(e){B()}function bt(e){if(U()){e.preventDefault(),q();var t=e.target;while(t&&!t.nodeName.match(/section/gi))t=t.parentNode;if(t.nodeName.match(/section/gi)){var n=parseInt(t.getAttribute("data-index-h"),10),r=parseInt(t.getAttribute("data-index-v"),10);J(n,r)}}}var e=".reveal .slides section",t=".reveal .slides>section",n=".reveal .slides>section.present>section",r=".reveal .slides>section:first-child",i={controls:!0,progress:!0,history:!1,keyboard:!0,overview:!0,center:!0,loop:!1,rtl:!1,autoSlide:0,mouseWheel:!1,rollingLinks:!0,theme:null,transition:"default",dependencies:[]},s=i.autoSlide,o=0,u=0,a,f,l=[],c={},h="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,p="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,d=0,v=0,m=0,g=0,y=0,b={startX:0,startY:0,startSpan:0,startCount:0,handled:!1,threshold:80};return{initialize:w,slide:J,left:st,right:ot,up:ut,down:at,prev:ft,next:lt,prevFragment:rt,nextFragment:nt,navigateTo:J,navigateLeft:st,navigateRight:ot,navigateUp:ut,navigateDown:at,navigatePrev:ft,navigateNext:lt,toggleOverview:R,addEventListeners:C,removeEventListeners:k,getIndices:tt,getPreviousSlide:function(){return a},getCurrentSlide:function(){return f},getQueryHash:function(){var e={};return location.search.replace(/[A-Z0-9]+?=(\w*)/gi,function(t){e[t.split("=").shift()]=t.split("=").pop()}),e},addEventListener:function(e,t,n){"addEventListener"in window&&(c.wrapper||document.querySelector(".reveal")).addEventListener(e,t,n)},removeEventListener:function(e,t,n){"addEventListener"in window&&(c.wrapper||document.querySelector(".reveal")).removeEventListener(e,t,n)}}}();