aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--README.md36
-rw-r--r--css/reveal.css30
-rw-r--r--css/reveal.min.css2
-rw-r--r--css/theme/README.md22
-rw-r--r--index.html3
-rw-r--r--js/reveal.js234
-rw-r--r--js/reveal.min.js4
-rw-r--r--plugin/notes/notes.html10
-rw-r--r--plugin/print-pdf/print-pdf.js39
-rw-r--r--plugin/remotes/remotes.js35
10 files changed, 356 insertions, 59 deletions
diff --git a/README.md b/README.md
index ac0ab22..5109ab0 100644
--- a/README.md
+++ b/README.md
@@ -92,7 +92,7 @@ Reveal.initialize({
rollingLinks: true,
// Transition style
- transition: 'default' // default/cube/page/concave/zoom/linear/none
+ transition: 'default' // default/cube/page/concave/zoom/linear/fade/none
});
```
@@ -234,7 +234,7 @@ Multiple fragments can be applied to the same element sequentially by wrapping i
```html
<section>
- <span class="fragment fade-out">
+ <span class="fragment fade-in">
<span class="fragment fade-out">I'll fade in, then out</span>
</span>
</section>
@@ -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.
@@ -309,6 +317,26 @@ Then:
3. Run ```node plugin/notes-server```
+## Theming
+
+The framework comes with a few different themes included:
+
+- default: Gray background, white text, blue links
+- beige: Beige background, dark text, brown links
+- sky: Blue background, thin white text, blue links
+- night: Black background, thick white text, orange links
+- serif: Cappuccino background, gray text, brown links
+- simple: White background, black text, blue links
+
+Each theme is available as a separate stylesheet. To change theme you will need to replace **default** below with your desired theme name in index.html:
+
+```html
+<link rel="stylesheet" href="css/theme/default.css" id="theme">
+```
+
+If you want to add a theme of your own see the instructions here: [/css/theme/README.md](https://github.com/hakimel/reveal.js/blob/master/css/theme/README.md).
+
+
## Development Environment
reveal.js is built using the task-based command line build tool [grunt.js](http://gruntjs.com) ([installation instructions](https://github.com/gruntjs/grunt#installing-grunt)). With Node.js and grunt.js installed, you need to start by running ```npm install``` in the reveal.js root. When the dependencies have been installed you should run ```grunt watch``` to start monitoring files for changes.
@@ -326,5 +354,5 @@ If you want to customise reveal.js without running grunt.js you can alter the HT
MIT licensed
-Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+Copyright (C) 2011-2013 Hakim El Hattab, http://hakim.se
diff --git a/css/reveal.css b/css/reveal.css
index 1e7ab65..0680fa5 100644
--- a/css/reveal.css
+++ b/css/reveal.css
@@ -1046,6 +1046,36 @@ body {
);
}
+/*********************************************
+ * FADE TRANSITION
+ *********************************************/
+
+.reveal.fade .slides section,
+.reveal.fade .slides>section>section {
+ -webkit-transform: none;
+ -moz-transform: none;
+ -ms-transform: none;
+ -o-transform: none;
+ transform: none;
+
+ -webkit-transition: opacity 0.5s;
+ -moz-transition: opacity 0.5s;
+ -ms-transition: opacity 0.5s;
+ -o-transition: opacity 0.5s;
+ transition: opacity 0.5s;
+}
+
+
+.reveal.fade.overview .slides section,
+.reveal.fade.overview .slides>section>section,
+.reveal.fade.exit-overview .slides section,
+.reveal.fade.exit-overview .slides>section>section {
+ -webkit-transition: none;
+ -moz-transition: none;
+ -ms-transition: none;
+ -o-transition: none;
+ transition: none;
+}
/*********************************************
* NO TRANSITION
diff --git a/css/reveal.min.css b/css/reveal.min.css
index 2d32d19..1a33ccd 100644
--- a/css/reveal.min.css
+++ b/css/reveal.min.css
@@ -4,4 +4,4 @@
* MIT licensed
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
- */html,body,.reveal div,.reveal span,.reveal applet,.reveal object,.reveal iframe,.reveal h1,.reveal h2,.reveal h3,.reveal h4,.reveal h5,.reveal h6,.reveal p,.reveal blockquote,.reveal pre,.reveal a,.reveal abbr,.reveal acronym,.reveal address,.reveal big,.reveal cite,.reveal code,.reveal del,.reveal dfn,.reveal em,.reveal img,.reveal ins,.reveal kbd,.reveal q,.reveal s,.reveal samp,.reveal small,.reveal strike,.reveal strong,.reveal sub,.reveal sup,.reveal tt,.reveal var,.reveal b,.reveal u,.reveal i,.reveal center,.reveal dl,.reveal dt,.reveal dd,.reveal ol,.reveal ul,.reveal li,.reveal fieldset,.reveal form,.reveal label,.reveal legend,.reveal table,.reveal caption,.reveal tbody,.reveal tfoot,.reveal thead,.reveal tr,.reveal th,.reveal td,.reveal article,.reveal aside,.reveal canvas,.reveal details,.reveal embed,.reveal figure,.reveal figcaption,.reveal footer,.reveal header,.reveal hgroup,.reveal menu,.reveal nav,.reveal output,.reveal ruby,.reveal section,.reveal summary,.reveal time,.reveal mark,.reveal audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}.reveal article,.reveal aside,.reveal details,.reveal figcaption,.reveal figure,.reveal footer,.reveal header,.reveal hgroup,.reveal menu,.reveal nav,.reveal section{display:block}html,body{width:100%;height:100%;overflow:hidden}body{position:relative;line-height:1}::selection{background:#FF5E99;color:#fff;text-shadow:none}@media screen and (max-width: 900px),(max-height: 600px){.reveal .slides{ font-size:.82em}}@media screen and (max-width: 700px),(max-height: 400px){.reveal .slides{ font-size:.66em}}.reveal h1,.reveal h2,.reveal h3,.reveal h4,.reveal h5,.reveal h6{-webkit-hyphens:auto;-moz-hyphens:auto;hyphens:auto;word-break:break-all;word-break:break-word}.reveal h1{font-size:3.77em}.reveal h2{font-size:2.11em}.reveal h3{font-size:1.55em}.reveal h4{font-size:1em}.reveal .slides section .fragment{opacity:0;-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.reveal .slides section .fragment.visible{opacity:1}.reveal .slides section .fragment.grow{opacity:1}.reveal .slides section .fragment.grow.visible{-webkit-transform:scale( 1.3 );-moz-transform:scale( 1.3 );-ms-transform:scale( 1.3 );-o-transform:scale( 1.3 );transform:scale( 1.3 )}.reveal .slides section .fragment.shrink{opacity:1}.reveal .slides section .fragment.shrink.visible{-webkit-transform:scale( .7 );-moz-transform:scale( .7 );-ms-transform:scale( .7 );-o-transform:scale( .7 );transform:scale( .7 )}.reveal .slides section .fragment.roll-in{opacity:0;-webkit-transform:rotateX( 90deg );-moz-transform:rotateX( 90deg );-ms-transform:rotateX( 90deg );-o-transform:rotateX( 90deg );transform:rotateX( 90deg )}.reveal .slides section .fragment.roll-in.visible{opacity:1;-webkit-transform:rotateX( 0 );-moz-transform:rotateX( 0 );-ms-transform:rotateX( 0 );-o-transform:rotateX( 0 );transform:rotateX( 0 )}.reveal .slides section .fragment.fade-out{opacity:1}.reveal .slides section .fragment.fade-out.visible{opacity:0}.reveal .slides section .fragment.highlight-red,.reveal .slides section .fragment.highlight-green,.reveal .slides section .fragment.highlight-blue{opacity:1}.reveal .slides section .fragment.highlight-red.visible{color:#ff2c2d}.reveal .slides section .fragment.highlight-green.visible{color:#17ff2e}.reveal .slides section .fragment.highlight-blue.visible{color:#1b91ff}.reveal:after{content:'';font-style:italic}.reveal img,.reveal iframe{max-width:100%;max-height:100%}.reveal strong,.reveal b{font-weight:700}.reveal em,.reveal i{font-style:italic}.reveal ol,.reveal ul{display:inline-block;text-align:left;margin:0 0 0 1em}.reveal ol{list-style-type:decimal}.reveal ul{list-style-type:disc}.reveal ul ul{list-style-type:square}.reveal ul ul ul{list-style-type:circle}.reveal ul ul,.reveal ul ol,.reveal ol ol,.reveal ol ul{display:block;margin-left:40px}.reveal p{margin-bottom:10px;line-height:1.2em}.reveal q,.reveal blockquote{quotes:none}.reveal blockquote{display:block;position:relative;width:70%;margin:5px auto;padding:5px;font-style:italic;background:rgba(255,255,255,.05);box-shadow:0 0 2px rgba(0,0,0,.2)}.reveal blockquote p:first-child,.reveal blockquote p:last-child{display:inline-block}.reveal blockquote:before{content:'\201C'}.reveal blockquote:after{content:'\201D'}.reveal q{font-style:italic}.reveal q:before{content:'\201C'}.reveal q:after{content:'\201D'}.reveal pre{display:block;position:relative;width:90%;margin:15px auto;text-align:left;font-size:.55em;font-family:monospace;line-height:1.2em;word-wrap:break-word;box-shadow:0 0 6px rgba(0,0,0,.3)}.reveal pre code{padding:5px}.reveal code{font-family:monospace;overflow:auto;max-height:400px}.reveal table th,.reveal table td{text-align:left;padding-right:.3em}.reveal table th{text-shadow:#fff 1px 1px 2px}.reveal sup{vertical-align:super}.reveal sub{vertical-align:sub}.reveal small{display:inline-block;font-size:.6em;line-height:1.2em;vertical-align:top}.reveal small *{vertical-align:top}.reveal .controls{display:none;position:fixed;width:110px;height:110px;z-index:30;right:10px;bottom:10px}.reveal .controls div{position:absolute;opacity:.1;width:0;height:0;border:12px solid transparent;-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;-ms-transition:opacity .2s ease;-o-transition:opacity .2s ease;transition:opacity .2s ease}.reveal .controls div.enabled{opacity:.6;cursor:pointer}.reveal .controls div.enabled:active{margin-top:1px}.reveal .controls div.navigate-left{top:42px;border-right-width:22px;border-right-color:#eee}.reveal .controls div.navigate-right{left:74px;top:42px;border-left-width:22px;border-left-color:#eee}.reveal .controls div.navigate-up{left:42px;border-bottom-width:22px;border-bottom-color:#eee}.reveal .controls div.navigate-down{left:42px;top:74px;border-top-width:22px;border-top-color:#eee}.reveal .progress{position:fixed;display:none;height:3px;width:100%;bottom:0;left:0;z-index:10}.reveal .progress:after{content:'';display:'block';position:absolute;height:20px;width:100%;top:-20px}.reveal .progress span{display:block;height:100%;width:0;-webkit-transition:width 800ms cubic-bezier(0.260,.860,.440,.985);-moz-transition:width 800ms cubic-bezier(0.260,.860,.440,.985);-ms-transition:width 800ms cubic-bezier(0.260,.860,.440,.985);-o-transition:width 800ms cubic-bezier(0.260,.860,.440,.985);transition:width 800ms cubic-bezier(0.260,.860,.440,.985)}.reveal .roll{display:inline-block;line-height:1.2;overflow:hidden;vertical-align:top;-webkit-perspective:400px;-moz-perspective:400px;-ms-perspective:400px;perspective:400px;-webkit-perspective-origin:50% 50%;-moz-perspective-origin:50% 50%;-ms-perspective-origin:50% 50%;perspective-origin:50% 50%}.reveal .roll:hover{background:0;text-shadow:none}.reveal .roll span{display:block;position:relative;padding:0 2px;pointer-events:none;-webkit-transition:all 400ms ease;-moz-transition:all 400ms ease;-ms-transition:all 400ms ease;transition:all 400ms ease;-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.reveal .roll:hover span{background:rgba(0,0,0,.5);-webkit-transform:translate3d( 0,0,-45px ) rotateX( 90deg );-moz-transform:translate3d( 0,0,-45px ) rotateX( 90deg );-ms-transform:translate3d( 0,0,-45px ) rotateX( 90deg );transform:translate3d( 0,0,-45px ) rotateX( 90deg )}.reveal .roll span:after{content:attr(data-title);display:block;position:absolute;left:0;top:0;padding:0 2px;-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:translate3d( 0,110%,0 ) rotateX( -90deg );-moz-transform:translate3d( 0,110%,0 ) rotateX( -90deg );-ms-transform:translate3d( 0,110%,0 ) rotateX( -90deg );transform:translate3d( 0,110%,0 ) rotateX( -90deg )}.reveal{position:relative;width:100%;height:100%;min-height:640px}.reveal .slides{position:absolute;max-width:900px;min-height:600px;width:80%;left:50%;top:50%;overflow:visible;z-index:1;text-align:center;-webkit-transition:-webkit-perspective .4s ease;-moz-transition:-moz-perspective .4s ease;-ms-transition:-ms-perspective .4s ease;-o-transition:-o-perspective .4s ease;transition:perspective .4s ease;-webkit-perspective:600px;-moz-perspective:600px;-ms-perspective:600px;perspective:600px;-webkit-perspective-origin:0 -100px;-moz-perspective-origin:0 -100px;-ms-perspective-origin:0 -100px;perspective-origin:0 -100px}.reveal .slides>section,.reveal .slides>section>section{display:none;position:absolute;width:100%;padding:20px 0;z-index:10;line-height:1.2em;font-weight:400;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transition:-webkit-transform-origin 800ms cubic-bezier(0.260,.860,.440,.985),-webkit-transform 800ms cubic-bezier(0.260,.860,.440,.985),visibility 800ms cubic-bezier(0.260,.860,.440,.985),opacity 800ms cubic-bezier(0.260,.860,.440,.985);-moz-transition:-moz-transform-origin 800ms cubic-bezier(0.260,.860,.440,.985),-moz-transform 800ms cubic-bezier(0.260,.860,.440,.985),visibility 800ms cubic-bezier(0.260,.860,.440,.985),opacity 800ms cubic-bezier(0.260,.860,.440,.985);-ms-transition:-ms-transform-origin 800ms cubic-bezier(0.260,.860,.440,.985),-ms-transform 800ms cubic-bezier(0.260,.860,.440,.985),visibility 800ms cubic-bezier(0.260,.860,.440,.985),opacity 800ms cubic-bezier(0.260,.860,.440,.985);-o-transition:-o-transform-origin 800ms cubic-bezier(0.260,.860,.440,.985),-o-transform 800ms cubic-bezier(0.260,.860,.440,.985),visibility 800ms cubic-bezier(0.260,.860,.440,.985),opacity 800ms cubic-bezier(0.260,.860,.440,.985);transition:transform-origin 800ms cubic-bezier(0.260,.860,.440,.985),transform 800ms cubic-bezier(0.260,.860,.440,.985),visibility 800ms cubic-bezier(0.260,.860,.440,.985),opacity 800ms cubic-bezier(0.260,.860,.440,.985)}.reveal .slides>section{left:-50%;top:-50%}.reveal .slides>section.present,.reveal .slides>section>section.present{display:block;z-index:11;opacity:1}.reveal.center,.reveal.center .slides,.reveal.center .slides section{min-height:auto!important}.reveal .slides>section.past{display:block;opacity:0;-webkit-transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0);-moz-transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0);transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal .slides>section.future{display:block;opacity:0;-webkit-transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0);-moz-transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0);transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal .slides>section>section.past{display:block;opacity:0;-webkit-transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0);-moz-transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0);-ms-transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0);transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0)}.reveal .slides>section>section.future{display:block;opacity:0;-webkit-transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0);-moz-transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0);-ms-transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0);transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0)}.reveal.concave .slides>section.past{-webkit-transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0);-moz-transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0);transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0)}.reveal.concave .slides>section.future{-webkit-transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0);-moz-transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0);transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0)}.reveal.concave .slides>section>section.past{-webkit-transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0);-moz-transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0);-ms-transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0);transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0)}.reveal.concave .slides>section>section.future{-webkit-transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0);-moz-transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0);-ms-transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0);transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0)}.reveal.zoom .slides>section.past{opacity:0;visibility:hidden;-webkit-transform:scale(16);-moz-transform:scale(16);-ms-transform:scale(16);-o-transform:scale(16);transform:scale(16)}.reveal.zoom .slides>section.future{opacity:0;visibility:hidden;-webkit-transform:scale(0.2);-moz-transform:scale(0.2);-ms-transform:scale(0.2);-o-transform:scale(0.2);transform:scale(0.2)}.reveal.zoom .slides>section>section.past{-webkit-transform:translate(0,-150%);-moz-transform:translate(0,-150%);-ms-transform:translate(0,-150%);-o-transform:translate(0,-150%);transform:translate(0,-150%)}.reveal.zoom .slides>section>section.future{-webkit-transform:translate(0,150%);-moz-transform:translate(0,150%);-ms-transform:translate(0,150%);-o-transform:translate(0,150%);transform:translate(0,150%)}.reveal.linear .slides>section.past{-webkit-transform:translate(-150%,0);-moz-transform:translate(-150%,0);-ms-transform:translate(-150%,0);-o-transform:translate(-150%,0);transform:translate(-150%,0)}.reveal.linear .slides>section.future{-webkit-transform:translate(150%,0);-moz-transform:translate(150%,0);-ms-transform:translate(150%,0);-o-transform:translate(150%,0);transform:translate(150%,0)}.reveal.linear .slides>section>section.past{-webkit-transform:translate(0,-150%);-moz-transform:translate(0,-150%);-ms-transform:translate(0,-150%);-o-transform:translate(0,-150%);transform:translate(0,-150%)}.reveal.linear .slides>section>section.future{-webkit-transform:translate(0,150%);-moz-transform:translate(0,150%);-ms-transform:translate(0,150%);-o-transform:translate(0,150%);transform:translate(0,150%)}.reveal.cube .slides{-webkit-perspective:1300px;-moz-perspective:1300px;-ms-perspective:1300px;perspective:1300px}.reveal.cube .slides section{padding:30px;min-height:600px;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.reveal.center.cube .slides section{min-height:auto}.reveal.cube .slides section:not(.stack):before{content:'';position:absolute;display:block;width:100%;height:100%;left:0;top:0;background:rgba(0,0,0,.1);border-radius:4px;-webkit-transform:translateZ( -20px );-moz-transform:translateZ( -20px );-ms-transform:translateZ( -20px );-o-transform:translateZ( -20px );transform:translateZ( -20px )}.reveal.cube .slides section:not(.stack):after{content:'';position:absolute;display:block;width:90%;height:30px;left:5%;bottom:0;background:0;z-index:1;border-radius:4px;box-shadow:0 95px 25px rgba(0,0,0,.2);-webkit-transform:translateZ(-90px) rotateX( 65deg );-moz-transform:translateZ(-90px) rotateX( 65deg );-ms-transform:translateZ(-90px) rotateX( 65deg );-o-transform:translateZ(-90px) rotateX( 65deg );transform:translateZ(-90px) rotateX( 65deg )}.reveal.cube .slides>section.stack{padding:0;background:0}.reveal.cube .slides>section.past{-webkit-transform-origin:100% 0;-moz-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:translate3d(-100%,0,0) rotateY(-90deg);-moz-transform:translate3d(-100%,0,0) rotateY(-90deg);-ms-transform:translate3d(-100%,0,0) rotateY(-90deg);transform:translate3d(-100%,0,0) rotateY(-90deg)}.reveal.cube .slides>section.future{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translate3d(100%,0,0) rotateY(90deg);-moz-transform:translate3d(100%,0,0) rotateY(90deg);-ms-transform:translate3d(100%,0,0) rotateY(90deg);transform:translate3d(100%,0,0) rotateY(90deg)}.reveal.cube .slides>section>section.past{-webkit-transform-origin:0 100%;-moz-transform-origin:0 100%;-ms-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translate3d(0,-100%,0) rotateX(90deg);-moz-transform:translate3d(0,-100%,0) rotateX(90deg);-ms-transform:translate3d(0,-100%,0) rotateX(90deg);transform:translate3d(0,-100%,0) rotateX(90deg)}.reveal.cube .slides>section>section.future{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translate3d(0,100%,0) rotateX(-90deg);-moz-transform:translate3d(0,100%,0) rotateX(-90deg);-ms-transform:translate3d(0,100%,0) rotateX(-90deg);transform:translate3d(0,100%,0) rotateX(-90deg)}.reveal.page .slides{-webkit-perspective-origin:0 50%;-moz-perspective-origin:0 50%;-ms-perspective-origin:0 50%;perspective-origin:0 50%;-webkit-perspective:3000px;-moz-perspective:3000px;-ms-perspective:3000px;perspective:3000px}.reveal.page .slides section{padding:30px;min-height:600px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.reveal.page .slides section.past{z-index:12}.reveal.page .slides section:not(.stack):before{content:'';position:absolute;display:block;width:100%;height:100%;left:0;top:0;background:rgba(0,0,0,.1);-webkit-transform:translateZ( -20px );-moz-transform:translateZ( -20px );-ms-transform:translateZ( -20px );-o-transform:translateZ( -20px );transform:translateZ( -20px )}.reveal.page .slides section:not(.stack):after{content:'';position:absolute;display:block;width:90%;height:30px;left:5%;bottom:0;background:0;z-index:1;border-radius:4px;box-shadow:0 95px 25px rgba(0,0,0,.2);-webkit-transform:translateZ(-90px) rotateX( 65deg )}.reveal.page .slides>section.stack{padding:0;background:0}.reveal.page .slides>section.past{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translate3d(-40%,0,0) rotateY(-80deg);-moz-transform:translate3d(-40%,0,0) rotateY(-80deg);-ms-transform:translate3d(-40%,0,0) rotateY(-80deg);transform:translate3d(-40%,0,0) rotateY(-80deg)}.reveal.page .slides>section.future{-webkit-transform-origin:100% 0;-moz-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.reveal.page .slides>section>section.past{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translate3d(0,-40%,0) rotateX(80deg);-moz-transform:translate3d(0,-40%,0) rotateX(80deg);-ms-transform:translate3d(0,-40%,0) rotateX(80deg);transform:translate3d(0,-40%,0) rotateX(80deg)}.reveal.page .slides>section>section.future{-webkit-transform-origin:0 100%;-moz-transform-origin:0 100%;-ms-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.reveal.tileflip .slides section.present{-webkit-transform:none;-webkit-transition-duration:800ms;-webkit-filter:custom( url(shaders/tile-flip.vs) mix(url(shaders/tile-flip.fs) multiply source-atop),10 10 border-box detached,transform perspective(1000) scale(1) rotateX(0deg) rotateY(0deg) rotateZ(0deg),amount 0,randomness 0,flipAxis 0 1 0,tileOutline 1 )}.reveal.tileflip .slides section.past{-webkit-transform:none;-webkit-transition-duration:800ms;-webkit-filter:custom( url(shaders/tile-flip.vs) mix(url(shaders/tile-flip.fs) multiply source-atop),10 10 border-box detached,transform perspective(1000) scale(1) rotateX(0deg) rotateY(0deg) rotateZ(0deg),amount 1,randomness 0,flipAxis 0 1 0,tileOutline 1 )}.reveal.tileflip .slides section.future{-webkit-transform:none;-webkit-transition-duration:800ms;-webkit-filter:custom( url(shaders/tile-flip.vs) mix(url(shaders/tile-flip.fs) multiply source-atop),10 10 border-box detached,transform perspective(1000) scale(1) rotateX(0deg) rotateY(0deg) rotateZ(0deg),amount 1,randomness 0,flipAxis 0 1 0,tileOutline 1 )}.reveal.tileflip .slides>section>section.present{-webkit-filter:custom( url(shaders/tile-flip.vs) mix(url(shaders/tile-flip.fs) multiply source-atop),10 10 border-box detached,transform perspective(1000) scale(1) rotateX(0deg) rotateY(0deg) rotateZ(0deg),amount 0,randomness 2,flipAxis 1 0 0,tileOutline 1 )}.reveal.tileflip .slides>section>section.past{-webkit-filter:custom( url(shaders/tile-flip.vs) mix(url(shaders/tile-flip.fs) multiply source-atop),10 10 border-box detached,transform perspective(1000) scale(1) rotateX(0deg) rotateY(0deg) rotateZ(0deg),amount 1,randomness 2,flipAxis 1 0 0,tileOutline 1 )}.reveal.tileflip .slides>section>section.future{-webkit-filter:custom( url(shaders/tile-flip.vs) mix(url(shaders/tile-flip.fs) multiply source-atop),10 10 border-box detached,transform perspective(1000) scale(1) rotateX(0deg) rotateY(0deg) rotateZ(0deg),amount 1,randomness 2,flipAxis 1 0 0,tileOutline 1 )}.reveal.none .slides section{-webkit-transform:none;-moz-transform:none;-ms-transform:none;-o-transform:none;transform:none;-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.reveal.overview .slides{-webkit-perspective-origin:0 0;-moz-perspective-origin:0 0;-ms-perspective-origin:0 0;perspective-origin:0 0;-webkit-perspective:700px;-moz-perspective:700px;-ms-perspective:700px;perspective:700px}.reveal.overview .slides section{height:600px;overflow:hidden;opacity:1!important;visibility:visible!important;cursor:pointer;background:rgba(0,0,0,.1)}.reveal.overview .slides section .fragment{opacity:1}.reveal.overview .slides section:after,.reveal.overview .slides section:before{display:none!important}.reveal.overview .slides section>section{opacity:1;cursor:pointer}.reveal.overview .slides section:hover{background:rgba(0,0,0,.3)}.reveal.overview .slides section.present{background:rgba(0,0,0,.3)}.reveal.overview .slides>section.stack{padding:0;background:0;overflow:visible}.reveal .pause-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#000;visibility:hidden;opacity:0;z-index:100;-webkit-transition:all 1s ease;-moz-transition:all 1s ease;-ms-transition:all 1s ease;-o-transition:all 1s ease;transition:all 1s ease}.reveal.paused .pause-overlay{visibility:visible;opacity:1}.no-transforms{overflow-y:auto}.no-transforms .slides{top:0;left:50%;margin:0;text-align:center}.no-transforms .slides section{display:block!important;opacity:1!important;position:relative!important;height:auto;min-height:auto;top:0;left:-50%;margin:70px 0;-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none}.no-transforms .slides section section{left:0}.no-transition{-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.reveal .state-background{position:absolute;width:100%;height:100%;background:rgba( 0,0,0,0 );-webkit-transition:background 800ms ease;-moz-transition:background 800ms ease;-ms-transition:background 800ms ease;-o-transition:background 800ms ease;transition:background 800ms ease}.alert .reveal .state-background{background:rgba( 200,50,30,.6 )}.soothe .reveal .state-background{background:rgba( 50,200,90,.4 )}.blackout .reveal .state-background{background:rgba( 0,0,0,.6 )}.reveal.rtl .slides,.reveal.rtl .slides h1,.reveal.rtl .slides h2,.reveal.rtl .slides h3,.reveal.rtl .slides h4,.reveal.rtl .slides h5,.reveal.rtl .slides h6{direction:rtl;font-family:sans-serif}.reveal.rtl pre,.reveal.rtl code{direction:ltr}.reveal.rtl ol,.reveal.rtl ul{text-align:right}.reveal aside.notes{display:none}.zoomed .reveal *,.zoomed .reveal :before,.zoomed .reveal :after{-webkit-transform:none!important;-moz-transform:none!important;-ms-transform:none!important;transform:none!important;-webkit-backface-visibility:visible!important;-moz-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}.zoomed .reveal .progress,.zoomed .reveal .controls{opacity:0}.zoomed .reveal .roll span{background:0}.zoomed .reveal .roll span:after{visibility:hidden} \ No newline at end of file
+ */html,body,.reveal div,.reveal span,.reveal applet,.reveal object,.reveal iframe,.reveal h1,.reveal h2,.reveal h3,.reveal h4,.reveal h5,.reveal h6,.reveal p,.reveal blockquote,.reveal pre,.reveal a,.reveal abbr,.reveal acronym,.reveal address,.reveal big,.reveal cite,.reveal code,.reveal del,.reveal dfn,.reveal em,.reveal img,.reveal ins,.reveal kbd,.reveal q,.reveal s,.reveal samp,.reveal small,.reveal strike,.reveal strong,.reveal sub,.reveal sup,.reveal tt,.reveal var,.reveal b,.reveal u,.reveal i,.reveal center,.reveal dl,.reveal dt,.reveal dd,.reveal ol,.reveal ul,.reveal li,.reveal fieldset,.reveal form,.reveal label,.reveal legend,.reveal table,.reveal caption,.reveal tbody,.reveal tfoot,.reveal thead,.reveal tr,.reveal th,.reveal td,.reveal article,.reveal aside,.reveal canvas,.reveal details,.reveal embed,.reveal figure,.reveal figcaption,.reveal footer,.reveal header,.reveal hgroup,.reveal menu,.reveal nav,.reveal output,.reveal ruby,.reveal section,.reveal summary,.reveal time,.reveal mark,.reveal audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}.reveal article,.reveal aside,.reveal details,.reveal figcaption,.reveal figure,.reveal footer,.reveal header,.reveal hgroup,.reveal menu,.reveal nav,.reveal section{display:block}html,body{width:100%;height:100%;overflow:hidden}body{position:relative;line-height:1}::selection{background:#FF5E99;color:#fff;text-shadow:none}@media screen and (max-width: 900px),(max-height: 600px){.reveal .slides{ font-size:.82em}}@media screen and (max-width: 700px),(max-height: 400px){.reveal .slides{ font-size:.66em}}.reveal h1,.reveal h2,.reveal h3,.reveal h4,.reveal h5,.reveal h6{-webkit-hyphens:auto;-moz-hyphens:auto;hyphens:auto;word-break:break-all;word-break:break-word}.reveal h1{font-size:3.77em}.reveal h2{font-size:2.11em}.reveal h3{font-size:1.55em}.reveal h4{font-size:1em}.reveal .slides section .fragment{opacity:0;-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.reveal .slides section .fragment.visible{opacity:1}.reveal .slides section .fragment.grow{opacity:1}.reveal .slides section .fragment.grow.visible{-webkit-transform:scale( 1.3 );-moz-transform:scale( 1.3 );-ms-transform:scale( 1.3 );-o-transform:scale( 1.3 );transform:scale( 1.3 )}.reveal .slides section .fragment.shrink{opacity:1}.reveal .slides section .fragment.shrink.visible{-webkit-transform:scale( .7 );-moz-transform:scale( .7 );-ms-transform:scale( .7 );-o-transform:scale( .7 );transform:scale( .7 )}.reveal .slides section .fragment.roll-in{opacity:0;-webkit-transform:rotateX( 90deg );-moz-transform:rotateX( 90deg );-ms-transform:rotateX( 90deg );-o-transform:rotateX( 90deg );transform:rotateX( 90deg )}.reveal .slides section .fragment.roll-in.visible{opacity:1;-webkit-transform:rotateX( 0 );-moz-transform:rotateX( 0 );-ms-transform:rotateX( 0 );-o-transform:rotateX( 0 );transform:rotateX( 0 )}.reveal .slides section .fragment.fade-out{opacity:1}.reveal .slides section .fragment.fade-out.visible{opacity:0}.reveal .slides section .fragment.highlight-red,.reveal .slides section .fragment.highlight-green,.reveal .slides section .fragment.highlight-blue{opacity:1}.reveal .slides section .fragment.highlight-red.visible{color:#ff2c2d}.reveal .slides section .fragment.highlight-green.visible{color:#17ff2e}.reveal .slides section .fragment.highlight-blue.visible{color:#1b91ff}.reveal:after{content:'';font-style:italic}.reveal img,.reveal iframe{max-width:100%;max-height:100%}.reveal strong,.reveal b{font-weight:700}.reveal em,.reveal i{font-style:italic}.reveal ol,.reveal ul{display:inline-block;text-align:left;margin:0 0 0 1em}.reveal ol{list-style-type:decimal}.reveal ul{list-style-type:disc}.reveal ul ul{list-style-type:square}.reveal ul ul ul{list-style-type:circle}.reveal ul ul,.reveal ul ol,.reveal ol ol,.reveal ol ul{display:block;margin-left:40px}.reveal p{margin-bottom:10px;line-height:1.2em}.reveal q,.reveal blockquote{quotes:none}.reveal blockquote{display:block;position:relative;width:70%;margin:5px auto;padding:5px;font-style:italic;background:rgba(255,255,255,.05);box-shadow:0 0 2px rgba(0,0,0,.2)}.reveal blockquote p:first-child,.reveal blockquote p:last-child{display:inline-block}.reveal blockquote:before{content:'\201C'}.reveal blockquote:after{content:'\201D'}.reveal q{font-style:italic}.reveal q:before{content:'\201C'}.reveal q:after{content:'\201D'}.reveal pre{display:block;position:relative;width:90%;margin:15px auto;text-align:left;font-size:.55em;font-family:monospace;line-height:1.2em;word-wrap:break-word;box-shadow:0 0 6px rgba(0,0,0,.3)}.reveal pre code{padding:5px}.reveal code{font-family:monospace;overflow:auto;max-height:400px}.reveal table th,.reveal table td{text-align:left;padding-right:.3em}.reveal table th{text-shadow:#fff 1px 1px 2px}.reveal sup{vertical-align:super}.reveal sub{vertical-align:sub}.reveal small{display:inline-block;font-size:.6em;line-height:1.2em;vertical-align:top}.reveal small *{vertical-align:top}.reveal .controls{display:none;position:fixed;width:110px;height:110px;z-index:30;right:10px;bottom:10px}.reveal .controls div{position:absolute;opacity:.1;width:0;height:0;border:12px solid transparent;-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;-ms-transition:opacity .2s ease;-o-transition:opacity .2s ease;transition:opacity .2s ease}.reveal .controls div.enabled{opacity:.6;cursor:pointer}.reveal .controls div.enabled:active{margin-top:1px}.reveal .controls div.navigate-left{top:42px;border-right-width:22px;border-right-color:#eee}.reveal .controls div.navigate-right{left:74px;top:42px;border-left-width:22px;border-left-color:#eee}.reveal .controls div.navigate-up{left:42px;border-bottom-width:22px;border-bottom-color:#eee}.reveal .controls div.navigate-down{left:42px;top:74px;border-top-width:22px;border-top-color:#eee}.reveal .progress{position:fixed;display:none;height:3px;width:100%;bottom:0;left:0;z-index:10}.reveal .progress:after{content:'';display:'block';position:absolute;height:20px;width:100%;top:-20px}.reveal .progress span{display:block;height:100%;width:0;-webkit-transition:width 800ms cubic-bezier(0.260,.860,.440,.985);-moz-transition:width 800ms cubic-bezier(0.260,.860,.440,.985);-ms-transition:width 800ms cubic-bezier(0.260,.860,.440,.985);-o-transition:width 800ms cubic-bezier(0.260,.860,.440,.985);transition:width 800ms cubic-bezier(0.260,.860,.440,.985)}.reveal .roll{display:inline-block;line-height:1.2;overflow:hidden;vertical-align:top;-webkit-perspective:400px;-moz-perspective:400px;-ms-perspective:400px;perspective:400px;-webkit-perspective-origin:50% 50%;-moz-perspective-origin:50% 50%;-ms-perspective-origin:50% 50%;perspective-origin:50% 50%}.reveal .roll:hover{background:0;text-shadow:none}.reveal .roll span{display:block;position:relative;padding:0 2px;pointer-events:none;-webkit-transition:all 400ms ease;-moz-transition:all 400ms ease;-ms-transition:all 400ms ease;transition:all 400ms ease;-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.reveal .roll:hover span{background:rgba(0,0,0,.5);-webkit-transform:translate3d( 0,0,-45px ) rotateX( 90deg );-moz-transform:translate3d( 0,0,-45px ) rotateX( 90deg );-ms-transform:translate3d( 0,0,-45px ) rotateX( 90deg );transform:translate3d( 0,0,-45px ) rotateX( 90deg )}.reveal .roll span:after{content:attr(data-title);display:block;position:absolute;left:0;top:0;padding:0 2px;-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:translate3d( 0,110%,0 ) rotateX( -90deg );-moz-transform:translate3d( 0,110%,0 ) rotateX( -90deg );-ms-transform:translate3d( 0,110%,0 ) rotateX( -90deg );transform:translate3d( 0,110%,0 ) rotateX( -90deg )}.reveal{position:relative;width:100%;height:100%;min-height:640px}.reveal .slides{position:absolute;max-width:900px;min-height:600px;width:80%;left:50%;top:50%;overflow:visible;z-index:1;text-align:center;-webkit-transition:-webkit-perspective .4s ease;-moz-transition:-moz-perspective .4s ease;-ms-transition:-ms-perspective .4s ease;-o-transition:-o-perspective .4s ease;transition:perspective .4s ease;-webkit-perspective:600px;-moz-perspective:600px;-ms-perspective:600px;perspective:600px;-webkit-perspective-origin:0 -100px;-moz-perspective-origin:0 -100px;-ms-perspective-origin:0 -100px;perspective-origin:0 -100px}.reveal .slides>section,.reveal .slides>section>section{display:none;position:absolute;width:100%;padding:20px 0;z-index:10;line-height:1.2em;font-weight:400;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transition:-webkit-transform-origin 800ms cubic-bezier(0.260,.860,.440,.985),-webkit-transform 800ms cubic-bezier(0.260,.860,.440,.985),visibility 800ms cubic-bezier(0.260,.860,.440,.985),opacity 800ms cubic-bezier(0.260,.860,.440,.985);-moz-transition:-moz-transform-origin 800ms cubic-bezier(0.260,.860,.440,.985),-moz-transform 800ms cubic-bezier(0.260,.860,.440,.985),visibility 800ms cubic-bezier(0.260,.860,.440,.985),opacity 800ms cubic-bezier(0.260,.860,.440,.985);-ms-transition:-ms-transform-origin 800ms cubic-bezier(0.260,.860,.440,.985),-ms-transform 800ms cubic-bezier(0.260,.860,.440,.985),visibility 800ms cubic-bezier(0.260,.860,.440,.985),opacity 800ms cubic-bezier(0.260,.860,.440,.985);-o-transition:-o-transform-origin 800ms cubic-bezier(0.260,.860,.440,.985),-o-transform 800ms cubic-bezier(0.260,.860,.440,.985),visibility 800ms cubic-bezier(0.260,.860,.440,.985),opacity 800ms cubic-bezier(0.260,.860,.440,.985);transition:transform-origin 800ms cubic-bezier(0.260,.860,.440,.985),transform 800ms cubic-bezier(0.260,.860,.440,.985),visibility 800ms cubic-bezier(0.260,.860,.440,.985),opacity 800ms cubic-bezier(0.260,.860,.440,.985)}.reveal .slides>section{left:-50%;top:-50%}.reveal .slides>section.present,.reveal .slides>section>section.present{display:block;z-index:11;opacity:1}.reveal.center,.reveal.center .slides,.reveal.center .slides section{min-height:auto!important}.reveal .slides>section.past{display:block;opacity:0;-webkit-transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0);-moz-transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0);transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal .slides>section.future{display:block;opacity:0;-webkit-transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0);-moz-transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0);transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal .slides>section>section.past{display:block;opacity:0;-webkit-transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0);-moz-transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0);-ms-transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0);transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0)}.reveal .slides>section>section.future{display:block;opacity:0;-webkit-transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0);-moz-transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0);-ms-transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0);transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0)}.reveal.concave .slides>section.past{-webkit-transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0);-moz-transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0);transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0)}.reveal.concave .slides>section.future{-webkit-transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0);-moz-transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0);transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0)}.reveal.concave .slides>section>section.past{-webkit-transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0);-moz-transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0);-ms-transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0);transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0)}.reveal.concave .slides>section>section.future{-webkit-transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0);-moz-transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0);-ms-transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0);transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0)}.reveal.zoom .slides>section.past{opacity:0;visibility:hidden;-webkit-transform:scale(16);-moz-transform:scale(16);-ms-transform:scale(16);-o-transform:scale(16);transform:scale(16)}.reveal.zoom .slides>section.future{opacity:0;visibility:hidden;-webkit-transform:scale(0.2);-moz-transform:scale(0.2);-ms-transform:scale(0.2);-o-transform:scale(0.2);transform:scale(0.2)}.reveal.zoom .slides>section>section.past{-webkit-transform:translate(0,-150%);-moz-transform:translate(0,-150%);-ms-transform:translate(0,-150%);-o-transform:translate(0,-150%);transform:translate(0,-150%)}.reveal.zoom .slides>section>section.future{-webkit-transform:translate(0,150%);-moz-transform:translate(0,150%);-ms-transform:translate(0,150%);-o-transform:translate(0,150%);transform:translate(0,150%)}.reveal.linear .slides>section.past{-webkit-transform:translate(-150%,0);-moz-transform:translate(-150%,0);-ms-transform:translate(-150%,0);-o-transform:translate(-150%,0);transform:translate(-150%,0)}.reveal.linear .slides>section.future{-webkit-transform:translate(150%,0);-moz-transform:translate(150%,0);-ms-transform:translate(150%,0);-o-transform:translate(150%,0);transform:translate(150%,0)}.reveal.linear .slides>section>section.past{-webkit-transform:translate(0,-150%);-moz-transform:translate(0,-150%);-ms-transform:translate(0,-150%);-o-transform:translate(0,-150%);transform:translate(0,-150%)}.reveal.linear .slides>section>section.future{-webkit-transform:translate(0,150%);-moz-transform:translate(0,150%);-ms-transform:translate(0,150%);-o-transform:translate(0,150%);transform:translate(0,150%)}.reveal.cube .slides{-webkit-perspective:1300px;-moz-perspective:1300px;-ms-perspective:1300px;perspective:1300px}.reveal.cube .slides section{padding:30px;min-height:600px;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.reveal.center.cube .slides section{min-height:auto}.reveal.cube .slides section:not(.stack):before{content:'';position:absolute;display:block;width:100%;height:100%;left:0;top:0;background:rgba(0,0,0,.1);border-radius:4px;-webkit-transform:translateZ( -20px );-moz-transform:translateZ( -20px );-ms-transform:translateZ( -20px );-o-transform:translateZ( -20px );transform:translateZ( -20px )}.reveal.cube .slides section:not(.stack):after{content:'';position:absolute;display:block;width:90%;height:30px;left:5%;bottom:0;background:0;z-index:1;border-radius:4px;box-shadow:0 95px 25px rgba(0,0,0,.2);-webkit-transform:translateZ(-90px) rotateX( 65deg );-moz-transform:translateZ(-90px) rotateX( 65deg );-ms-transform:translateZ(-90px) rotateX( 65deg );-o-transform:translateZ(-90px) rotateX( 65deg );transform:translateZ(-90px) rotateX( 65deg )}.reveal.cube .slides>section.stack{padding:0;background:0}.reveal.cube .slides>section.past{-webkit-transform-origin:100% 0;-moz-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:translate3d(-100%,0,0) rotateY(-90deg);-moz-transform:translate3d(-100%,0,0) rotateY(-90deg);-ms-transform:translate3d(-100%,0,0) rotateY(-90deg);transform:translate3d(-100%,0,0) rotateY(-90deg)}.reveal.cube .slides>section.future{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translate3d(100%,0,0) rotateY(90deg);-moz-transform:translate3d(100%,0,0) rotateY(90deg);-ms-transform:translate3d(100%,0,0) rotateY(90deg);transform:translate3d(100%,0,0) rotateY(90deg)}.reveal.cube .slides>section>section.past{-webkit-transform-origin:0 100%;-moz-transform-origin:0 100%;-ms-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translate3d(0,-100%,0) rotateX(90deg);-moz-transform:translate3d(0,-100%,0) rotateX(90deg);-ms-transform:translate3d(0,-100%,0) rotateX(90deg);transform:translate3d(0,-100%,0) rotateX(90deg)}.reveal.cube .slides>section>section.future{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translate3d(0,100%,0) rotateX(-90deg);-moz-transform:translate3d(0,100%,0) rotateX(-90deg);-ms-transform:translate3d(0,100%,0) rotateX(-90deg);transform:translate3d(0,100%,0) rotateX(-90deg)}.reveal.page .slides{-webkit-perspective-origin:0 50%;-moz-perspective-origin:0 50%;-ms-perspective-origin:0 50%;perspective-origin:0 50%;-webkit-perspective:3000px;-moz-perspective:3000px;-ms-perspective:3000px;perspective:3000px}.reveal.page .slides section{padding:30px;min-height:600px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.reveal.page .slides section.past{z-index:12}.reveal.page .slides section:not(.stack):before{content:'';position:absolute;display:block;width:100%;height:100%;left:0;top:0;background:rgba(0,0,0,.1);-webkit-transform:translateZ( -20px );-moz-transform:translateZ( -20px );-ms-transform:translateZ( -20px );-o-transform:translateZ( -20px );transform:translateZ( -20px )}.reveal.page .slides section:not(.stack):after{content:'';position:absolute;display:block;width:90%;height:30px;left:5%;bottom:0;background:0;z-index:1;border-radius:4px;box-shadow:0 95px 25px rgba(0,0,0,.2);-webkit-transform:translateZ(-90px) rotateX( 65deg )}.reveal.page .slides>section.stack{padding:0;background:0}.reveal.page .slides>section.past{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translate3d(-40%,0,0) rotateY(-80deg);-moz-transform:translate3d(-40%,0,0) rotateY(-80deg);-ms-transform:translate3d(-40%,0,0) rotateY(-80deg);transform:translate3d(-40%,0,0) rotateY(-80deg)}.reveal.page .slides>section.future{-webkit-transform-origin:100% 0;-moz-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.reveal.page .slides>section>section.past{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translate3d(0,-40%,0) rotateX(80deg);-moz-transform:translate3d(0,-40%,0) rotateX(80deg);-ms-transform:translate3d(0,-40%,0) rotateX(80deg);transform:translate3d(0,-40%,0) rotateX(80deg)}.reveal.page .slides>section>section.future{-webkit-transform-origin:0 100%;-moz-transform-origin:0 100%;-ms-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.reveal.tileflip .slides section.present{-webkit-transform:none;-webkit-transition-duration:800ms;-webkit-filter:custom( url(shaders/tile-flip.vs) mix(url(shaders/tile-flip.fs) multiply source-atop),10 10 border-box detached,transform perspective(1000) scale(1) rotateX(0deg) rotateY(0deg) rotateZ(0deg),amount 0,randomness 0,flipAxis 0 1 0,tileOutline 1 )}.reveal.tileflip .slides section.past{-webkit-transform:none;-webkit-transition-duration:800ms;-webkit-filter:custom( url(shaders/tile-flip.vs) mix(url(shaders/tile-flip.fs) multiply source-atop),10 10 border-box detached,transform perspective(1000) scale(1) rotateX(0deg) rotateY(0deg) rotateZ(0deg),amount 1,randomness 0,flipAxis 0 1 0,tileOutline 1 )}.reveal.tileflip .slides section.future{-webkit-transform:none;-webkit-transition-duration:800ms;-webkit-filter:custom( url(shaders/tile-flip.vs) mix(url(shaders/tile-flip.fs) multiply source-atop),10 10 border-box detached,transform perspective(1000) scale(1) rotateX(0deg) rotateY(0deg) rotateZ(0deg),amount 1,randomness 0,flipAxis 0 1 0,tileOutline 1 )}.reveal.tileflip .slides>section>section.present{-webkit-filter:custom( url(shaders/tile-flip.vs) mix(url(shaders/tile-flip.fs) multiply source-atop),10 10 border-box detached,transform perspective(1000) scale(1) rotateX(0deg) rotateY(0deg) rotateZ(0deg),amount 0,randomness 2,flipAxis 1 0 0,tileOutline 1 )}.reveal.tileflip .slides>section>section.past{-webkit-filter:custom( url(shaders/tile-flip.vs) mix(url(shaders/tile-flip.fs) multiply source-atop),10 10 border-box detached,transform perspective(1000) scale(1) rotateX(0deg) rotateY(0deg) rotateZ(0deg),amount 1,randomness 2,flipAxis 1 0 0,tileOutline 1 )}.reveal.tileflip .slides>section>section.future{-webkit-filter:custom( url(shaders/tile-flip.vs) mix(url(shaders/tile-flip.fs) multiply source-atop),10 10 border-box detached,transform perspective(1000) scale(1) rotateX(0deg) rotateY(0deg) rotateZ(0deg),amount 1,randomness 2,flipAxis 1 0 0,tileOutline 1 )}.reveal.fade .slides section,.reveal.fade .slides>section>section{-webkit-transform:none;-moz-transform:none;-ms-transform:none;-o-transform:none;transform:none;-webkit-transition:opacity .5s;-moz-transition:opacity .5s;-ms-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s}.reveal.fade.overview .slides section,.reveal.fade.overview .slides>section>section,.reveal.fade.exit-overview .slides section,.reveal.fade.exit-overview .slides>section>section{-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.reveal.none .slides section{-webkit-transform:none;-moz-transform:none;-ms-transform:none;-o-transform:none;transform:none;-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.reveal.overview .slides{-webkit-perspective-origin:0 0;-moz-perspective-origin:0 0;-ms-perspective-origin:0 0;perspective-origin:0 0;-webkit-perspective:700px;-moz-perspective:700px;-ms-perspective:700px;perspective:700px}.reveal.overview .slides section{height:600px;overflow:hidden;opacity:1!important;visibility:visible!important;cursor:pointer;background:rgba(0,0,0,.1)}.reveal.overview .slides section .fragment{opacity:1}.reveal.overview .slides section:after,.reveal.overview .slides section:before{display:none!important}.reveal.overview .slides section>section{opacity:1;cursor:pointer}.reveal.overview .slides section:hover{background:rgba(0,0,0,.3)}.reveal.overview .slides section.present{background:rgba(0,0,0,.3)}.reveal.overview .slides>section.stack{padding:0;background:0;overflow:visible}.reveal .pause-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#000;visibility:hidden;opacity:0;z-index:100;-webkit-transition:all 1s ease;-moz-transition:all 1s ease;-ms-transition:all 1s ease;-o-transition:all 1s ease;transition:all 1s ease}.reveal.paused .pause-overlay{visibility:visible;opacity:1}.no-transforms{overflow-y:auto}.no-transforms .slides{top:0;left:50%;margin:0;text-align:center}.no-transforms .slides section{display:block!important;opacity:1!important;position:relative!important;height:auto;min-height:auto;top:0;left:-50%;margin:70px 0;-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none}.no-transforms .slides section section{left:0}.no-transition{-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.reveal .state-background{position:absolute;width:100%;height:100%;background:rgba( 0,0,0,0 );-webkit-transition:background 800ms ease;-moz-transition:background 800ms ease;-ms-transition:background 800ms ease;-o-transition:background 800ms ease;transition:background 800ms ease}.alert .reveal .state-background{background:rgba( 200,50,30,.6 )}.soothe .reveal .state-background{background:rgba( 50,200,90,.4 )}.blackout .reveal .state-background{background:rgba( 0,0,0,.6 )}.reveal.rtl .slides,.reveal.rtl .slides h1,.reveal.rtl .slides h2,.reveal.rtl .slides h3,.reveal.rtl .slides h4,.reveal.rtl .slides h5,.reveal.rtl .slides h6{direction:rtl;font-family:sans-serif}.reveal.rtl pre,.reveal.rtl code{direction:ltr}.reveal.rtl ol,.reveal.rtl ul{text-align:right}.reveal aside.notes{display:none}.zoomed .reveal *,.zoomed .reveal :before,.zoomed .reveal :after{-webkit-transform:none!important;-moz-transform:none!important;-ms-transform:none!important;transform:none!important;-webkit-backface-visibility:visible!important;-moz-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}.zoomed .reveal .progress,.zoomed .reveal .controls{opacity:0}.zoomed .reveal .roll span{background:0}.zoomed .reveal .roll span:after{visibility:hidden} \ No newline at end of file
diff --git a/css/theme/README.md b/css/theme/README.md
index 137bdf2..f3a2a2b 100644
--- a/css/theme/README.md
+++ b/css/theme/README.md
@@ -1,5 +1,25 @@
+## Dependencies
+
Themes are written using Sass to keep things modular and reduce the need for repeated selectors across files. Find out how to install Sass here http://sass-lang.com/, once Sass is installed run the follwing command to start monitoring the source files for changes.
```
sass --watch css/theme/source/:css/theme --style expanded
-``` \ No newline at end of file
+```
+
+
+
+## Creating a Theme
+
+To create your own theme, start by duplicating any ```.scss``` file in [/css/theme/source](https://github.com/hakimel/reveal.js/blob/master/css/theme/source). Each theme does four things in the following order:
+
+1. **Include [/css/theme/template/mixins.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/mixins.scss)**
+Shared utility functions.
+
+2. **Include [/css/theme/template/settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss)**
+Declares a set of custom variables that the template file (step 4) expects. Can be overridden in step 3.
+
+3. **Override**
+This is where you override the default theme. Either by specifying variables (see [settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss) for reference) or by adding full selectors with hardcoded styles.
+
+4. **Include [/css/theme/template/theme.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/theme.scss)**
+The template theme file which will generate final CSS output based on the currently defined variables.
diff --git a/index.html b/index.html
index ea2d7d6..24afca1 100644
--- a/index.html
+++ b/index.html
@@ -151,6 +151,7 @@
<a href="?transition=concave#/transitions">Concave</a> -
<a href="?transition=zoom#/transitions">Zoom</a> -
<a href="?transition=linear#/transitions">Linear</a> -
+ <a href="?transition=fade#/transitions">Fade</a> -
<a href="?transition=none#/transitions">None</a> -
<a href="?#/transitions">Default</a>
</p>
@@ -354,7 +355,7 @@ function linkify( selector ) {
center: true,
theme: Reveal.getQueryHash().theme, // available themes are in /css/theme
- transition: Reveal.getQueryHash().transition || 'default', // default/cube/page/concave/zoom/linear/none
+ transition: Reveal.getQueryHash().transition || 'default', // default/cube/page/concave/zoom/linear/fade/none
// Optional libraries used to extend on reveal.js
dependencies: [
diff --git a/js/reveal.js b/js/reveal.js
index 70e2539..542edc2 100644
--- a/js/reveal.js
+++ b/js/reveal.js
@@ -12,6 +12,7 @@ var Reveal = (function(){
var SLIDES_SELECTOR = '.reveal .slides section',
HORIZONTAL_SLIDES_SELECTOR = '.reveal .slides>section',
VERTICAL_SLIDES_SELECTOR = '.reveal .slides>section.present>section',
+ HOME_SLIDE_SELECTOR = '.reveal .slides>section:first-child',
// Configurations defaults, can be overridden at initialization time
config = {
@@ -33,6 +34,9 @@ var Reveal = (function(){
// Vertical centering of slides
center: true,
+ // Enables touch navigation on devices with touch input
+ touch: true,
+
// Loop the presentation
loop: false,
@@ -50,11 +54,11 @@ var Reveal = (function(){
// Apply a 3D roll to links on hover
rollingLinks: true,
- // Transition style (see /css/theme)
+ // Theme (see /css/theme)
theme: null,
// Transition style
- transition: 'default', // default/cube/page/concave/zoom/linear/none
+ transition: 'default', // default/cube/page/concave/zoom/linear/fade/none
// Script dependencies to load
dependencies: []
@@ -87,6 +91,7 @@ var Reveal = (function(){
'OPerspective' in document.body.style ||
'perspective' in document.body.style,
+ // Detect support for CSS 2D transforms
supports2DTransforms = 'WebkitTransform' in document.body.style ||
'MozTransform' in document.body.style ||
'msTransform' in document.body.style ||
@@ -102,9 +107,12 @@ var Reveal = (function(){
// Delays updates to the URL due to a Chrome thumbnailer bug
writeURLTimeout = 0,
- // A delay used to ativate the overview mode
+ // A delay used to activate the overview mode
activateOverviewTimeout = 0,
+ // A delay used to deactivate the overview mode
+ deactivateOverviewTimeout = 0,
+
// Holds information about the currently ongoing touch input
touch = {
startX: 0,
@@ -119,6 +127,7 @@ var Reveal = (function(){
* Starts up the presentation if the client is capable.
*/
function initialize( options ) {
+
if( ( !supports2DTransforms && !supports3DTransforms ) ) {
document.body.setAttribute( 'class', 'no-transforms' );
@@ -147,6 +156,7 @@ var Reveal = (function(){
* not found, it is created.
*/
function setupDOM() {
+
// Cache references to key DOM elements
dom.theme = document.querySelector( '#theme' );
dom.wrapper = document.querySelector( '.reveal' );
@@ -200,12 +210,14 @@ var Reveal = (function(){
dom.controlsPrev = toArray( document.querySelectorAll( '.navigate-prev' ) );
dom.controlsNext = toArray( document.querySelectorAll( '.navigate-next' ) );
}
+
}
/**
* Hides the address bar if we're on a mobile device.
*/
function hideAddressBar() {
+
if( navigator.userAgent.match( /(iphone|ipod)/i ) ) {
// Give the page some scrollable overflow
document.documentElement.style.overflow = 'scroll';
@@ -215,6 +227,7 @@ var Reveal = (function(){
window.addEventListener( 'load', removeAddressBar, false );
window.addEventListener( 'orientationchange', removeAddressBar, false );
}
+
}
/**
@@ -225,6 +238,7 @@ var Reveal = (function(){
* will load after reveal.js has been started up.
*/
function load() {
+
var scripts = [],
scriptsAsync = [];
@@ -266,6 +280,7 @@ var Reveal = (function(){
else {
proceed();
}
+
}
/**
@@ -273,6 +288,7 @@ var Reveal = (function(){
* to the current URL deeplink if there is one.
*/
function start() {
+
// Make sure we've got all the DOM elements we need
setupDOM();
@@ -301,12 +317,14 @@ var Reveal = (function(){
'currentSlide': currentSlide
} );
}, 1 );
+
}
/**
* Applies the configuration settings from the config object.
*/
function configure() {
+
if( supports3DTransforms === false ) {
config.transition = 'linear';
}
@@ -352,18 +370,23 @@ var Reveal = (function(){
dom.theme.setAttribute( 'href', themeURL );
}
}
+
}
/**
* Binds all event listeners.
*/
function addEventListeners() {
- document.addEventListener( 'touchstart', onDocumentTouchStart, false );
- document.addEventListener( 'touchmove', onDocumentTouchMove, false );
- document.addEventListener( 'touchend', onDocumentTouchEnd, false );
+
window.addEventListener( 'hashchange', onWindowHashChange, false );
window.addEventListener( 'resize', onWindowResize, false );
+ if( config.touch ) {
+ document.addEventListener( 'touchstart', onDocumentTouchStart, false );
+ document.addEventListener( 'touchmove', onDocumentTouchMove, false );
+ document.addEventListener( 'touchend', onDocumentTouchEnd, false );
+ }
+
if( config.keyboard ) {
document.addEventListener( 'keydown', onDocumentKeyDown, false );
}
@@ -381,19 +404,24 @@ var Reveal = (function(){
dom.controlsPrev.forEach( function( el ) { el.addEventListener( actionEvent, preventAndForward( navigatePrev ), false ); } );
dom.controlsNext.forEach( function( el ) { el.addEventListener( actionEvent, preventAndForward( navigateNext ), false ); } );
}
+
}
/**
* Unbinds all event listeners.
*/
function removeEventListeners() {
+
document.removeEventListener( 'keydown', onDocumentKeyDown, false );
- document.removeEventListener( 'touchstart', onDocumentTouchStart, false );
- document.removeEventListener( 'touchmove', onDocumentTouchMove, false );
- document.removeEventListener( 'touchend', onDocumentTouchEnd, false );
window.removeEventListener( 'hashchange', onWindowHashChange, false );
window.removeEventListener( 'resize', onWindowResize, false );
+ if( config.touch ) {
+ document.removeEventListener( 'touchstart', onDocumentTouchStart, false );
+ document.removeEventListener( 'touchmove', onDocumentTouchMove, false );
+ document.removeEventListener( 'touchend', onDocumentTouchEnd, false );
+ }
+
if ( config.progress && dom.progress ) {
dom.progress.removeEventListener( 'click', preventAndForward( onProgressClick ), false );
}
@@ -407,6 +435,7 @@ var Reveal = (function(){
dom.controlsPrev.forEach( function( el ) { el.removeEventListener( actionEvent, preventAndForward( navigatePrev ), false ); } );
dom.controlsNext.forEach( function( el ) { el.removeEventListener( actionEvent, preventAndForward( navigateNext ), false ); } );
}
+
}
/**
@@ -414,22 +443,20 @@ var Reveal = (function(){
* If there's a conflict, object b takes precedence.
*/
function extend( a, b ) {
+
for( var i in b ) {
a[ i ] = b[ i ];
}
+
}
/**
* Converts the target object to an array.
*/
function toArray( o ) {
+
return Array.prototype.slice.call( o );
- }
- function each( targets, method, args ) {
- targets.forEach( function( el ) {
- el[method].apply( el, args );
- } );
}
/**
@@ -440,10 +467,12 @@ var Reveal = (function(){
* @param {Object} b point with x/y properties
*/
function distanceBetween( a, b ) {
+
var dx = a.x - b.x,
dy = a.y - b.y;
return Math.sqrt( dx*dx + dy*dy );
+
}
/**
@@ -454,10 +483,12 @@ var Reveal = (function(){
* after the wrapper has been executed
*/
function preventAndForward( delegate ) {
+
return function( event ) {
event.preventDefault();
delegate.call( null, event );
};
+
}
/**
@@ -465,9 +496,11 @@ var Reveal = (function(){
* more vertical space ftw.
*/
function removeAddressBar() {
+
setTimeout( function() {
window.scrollTo( 0, 1 );
}, 0 );
+
}
/**
@@ -475,28 +508,37 @@ var Reveal = (function(){
* reveal DOM element.
*/
function dispatchEvent( type, properties ) {
+
var event = document.createEvent( "HTMLEvents", 1, 2 );
event.initEvent( type, true, true );
extend( event, properties );
dom.wrapper.dispatchEvent( event );
+
}
/**
* Wrap all links in 3D goodness.
*/
function linkify() {
+
if( supports3DTransforms && !( 'msPerspective' in document.body.style ) ) {
var nodes = document.querySelectorAll( SLIDES_SELECTOR + ' a:not(.image)' );
for( var i = 0, len = nodes.length; i < len; i++ ) {
var node = nodes[i];
- if( node.textContent && !node.querySelector( 'img' ) && ( !node.className || !node.classList.contains( node, 'roll' ) ) ) {
+ if( node.textContent && !node.querySelector( '*' ) && ( !node.className || !node.classList.contains( node, 'roll' ) ) ) {
+ var span = document.createElement('span');
+ span.setAttribute('data-title', node.text);
+ span.innerHTML = node.innerHTML;
+
node.classList.add( 'roll' );
- node.innerHTML = '<span data-title="'+ node.text +'">' + node.innerHTML + '</span>';
+ node.innerHTML = '';
+ node.appendChild(span);
}
}
}
+
}
/**
@@ -516,7 +558,7 @@ var Reveal = (function(){
for( var i = 0, len = slides.length; i < len; i++ ) {
var slide = slides[ i ];
- // Don't bother update invisible slides
+ // Don't bother updating invisible slides
if( slide.style.display === 'none' ) {
continue;
}
@@ -536,17 +578,19 @@ var Reveal = (function(){
}
/**
- * Stores the vertical index of a stack so that the same
- * vertical slide can be selected when navigating to and
+ * Stores the vertical index of a stack so that the same
+ * vertical slide can be selected when navigating to and
* from the stack.
- *
+ *
* @param {HTMLElement} stack The vertical stack element
* @param {int} v Index to memorize
*/
function setPreviousVerticalIndex( stack, v ) {
+
if( stack ) {
stack.setAttribute( 'data-previous-indexv', v || 0 );
}
+
}
/**
@@ -557,11 +601,13 @@ var Reveal = (function(){
* @param {HTMLElement} stack The vertical stack element
*/
function getPreviousVerticalIndex( stack ) {
+
if( stack && stack.classList.contains( 'stack' ) ) {
return parseInt( stack.getAttribute( 'data-previous-indexv' ) || 0, 10 );
}
return 0;
+
}
/**
@@ -576,13 +622,17 @@ 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
- // before we can positon them
+ // 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(){
var horizontalSlides = document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR );
@@ -633,6 +683,15 @@ var Reveal = (function(){
layout();
+ if( !wasActive ) {
+ // Notify observers of the overview showing
+ dispatchEvent( 'overviewshown', {
+ 'indexh': indexh,
+ 'indexv': indexv,
+ 'currentSlide': currentSlide
+ } );
+ }
+
}, 10 );
}
@@ -649,9 +708,19 @@ var Reveal = (function(){
if( config.overview ) {
clearTimeout( activateOverviewTimeout );
+ clearTimeout( deactivateOverviewTimeout );
dom.wrapper.classList.remove( 'overview' );
+ // Temporarily add a class so that transitions can do different things
+ // depending on whether they are exiting/entering overview, or just
+ // moving from slide to slide
+ dom.wrapper.classList.add( 'exit-overview' );
+
+ deactivateOverviewTimeout = setTimeout( function () {
+ dom.wrapper.classList.remove( 'exit-overview' );
+ }, 10);
+
// Select all slides
var slides = toArray( document.querySelectorAll( SLIDES_SELECTOR ) );
@@ -672,6 +741,13 @@ var Reveal = (function(){
slide( indexh, indexv );
+ // Notify observers of the overview hiding
+ dispatchEvent( 'overviewhidden', {
+ 'indexh': indexh,
+ 'indexv': indexv,
+ 'currentSlide': currentSlide
+ } );
+
}
}
@@ -683,12 +759,14 @@ var Reveal = (function(){
* overview is open, false means it's closed.
*/
function toggleOverview( override ) {
+
if( typeof override === 'boolean' ) {
override ? activateOverview() : deactivateOverview();
}
else {
isOverviewActive() ? deactivateOverview() : activateOverview();
}
+
}
/**
@@ -698,7 +776,9 @@ var Reveal = (function(){
* false otherwise
*/
function isOverviewActive() {
+
return dom.wrapper.classList.contains( 'overview' );
+
}
/**
@@ -708,6 +788,7 @@ var Reveal = (function(){
* @see https://developer.mozilla.org/en-US/docs/DOM/Using_fullscreen_mode
*/
function enterFullscreen() {
+
var element = document.body;
// Check which implementation is available
@@ -719,6 +800,7 @@ var Reveal = (function(){
if( requestMethod ) {
requestMethod.apply( element );
}
+
}
/**
@@ -726,33 +808,41 @@ var Reveal = (function(){
* black.
*/
function pause() {
+
dom.wrapper.classList.add( 'paused' );
+
}
/**
* Exits from the paused mode.
*/
function resume() {
+
dom.wrapper.classList.remove( 'paused' );
+
}
/**
* Toggles the paused mode on and off.
*/
function togglePause() {
+
if( isPaused() ) {
resume();
}
else {
pause();
}
+
}
/**
* Checks if we are currently in the paused mode.
*/
function isPaused() {
+
return dom.wrapper.classList.contains( 'paused' );
+
}
/**
@@ -762,23 +852,24 @@ 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
+ * @param {int} f Optional index of a fragment within the
* target slide to activate
*/
function slide( h, v, f ) {
+
// Remember where we were at before
previousSlide = currentSlide;
// Query all horizontal slides in the deck
var horizontalSlides = document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR );
- // If no vertical index is specified and the upcoming slide is a
+ // If no vertical index is specified and the upcoming slide is a
// stack, resume at its previous vertical index
if( v === undefined ) {
v = getPreviousVerticalIndex( horizontalSlides[ h ] );
}
- // If we were on a vertical stack, remember what vertical index
+ // If we were on a vertical stack, remember what vertical index
// it was on so we can resume at the same position when returning
if( previousSlide && previousSlide.parentNode && previousSlide.parentNode.classList.contains( 'stack' ) ) {
setPreviousVerticalIndex( previousSlide.parentNode, indexv );
@@ -816,7 +907,7 @@ var Reveal = (function(){
dispatchEvent( state[i] );
}
- // Clean up the remaints of the previous state
+ // Clean up the remains of the previous state
while( stateBefore.length ) {
document.documentElement.classList.remove( stateBefore.pop() );
}
@@ -840,7 +931,7 @@ var Reveal = (function(){
// Show fragment, if specified
- if( ( indexh !== indexhBefore || indexv !== indexvBefore ) && f ) {
+ if( typeof f !== 'undefined' ) {
var fragments = currentSlide.querySelectorAll( '.fragment' );
toArray( fragments ).forEach( function( fragment, indexf ) {
@@ -872,10 +963,26 @@ var Reveal = (function(){
// stacks
if( previousSlide ) {
previousSlide.classList.remove( 'present' );
+
+ // Reset all slides upon navigate to home
+ // Issue: #285
+ if ( document.querySelector( HOME_SLIDE_SELECTOR ).classList.contains( 'present' ) ) {
+ // Launch async task
+ setTimeout( function () {
+ var slides = toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR + '.stack') ), i;
+ for( i in slides ) {
+ if( slides[i] ) {
+ // Reset stack
+ setPreviousVerticalIndex( slides[i], 0 );
+ }
+ }
+ }, 0 );
+ }
}
updateControls();
updateProgress();
+
}
/**
@@ -892,6 +999,7 @@ var Reveal = (function(){
* bounds.
*/
function updateSlides( selector, index ) {
+
// Select all slides and convert the NodeList result to
// an array
var slides = toArray( document.querySelectorAll( selector ) ),
@@ -958,7 +1066,8 @@ var Reveal = (function(){
var slideAutoSlide = slides[index].getAttribute( 'data-autoslide' );
if( slideAutoSlide ) {
autoSlide = parseInt( slideAutoSlide, 10 );
- } else {
+ }
+ else {
autoSlide = config.autoSlide;
}
@@ -977,6 +1086,7 @@ var Reveal = (function(){
* Updates the progress bar to reflect the current slide.
*/
function updateProgress() {
+
// Update progress if enabled
if( config.progress && dom.progress ) {
@@ -1018,12 +1128,14 @@ var Reveal = (function(){
dom.progressbar.style.width = ( pastCount / ( totalCount - 1 ) ) * window.innerWidth + 'px';
}
+
}
/**
* Updates the state of all control/navigation arrows.
*/
function updateControls() {
+
if ( config.controls && dom.controls ) {
var routes = availableRoutes();
@@ -1048,6 +1160,7 @@ var Reveal = (function(){
if( routes.right || routes.down ) dom.controlsNext.forEach( function( el ) { el.classList.add( 'enabled' ); } );
}
+
}
/**
@@ -1056,6 +1169,7 @@ var Reveal = (function(){
* @return {Object} containing four booleans: left/right/up/down
*/
function availableRoutes() {
+
var horizontalSlides = document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ),
verticalSlides = document.querySelectorAll( VERTICAL_SLIDES_SELECTOR );
@@ -1065,12 +1179,14 @@ var Reveal = (function(){
up: indexv > 0,
down: indexv < verticalSlides.length - 1
};
+
}
/**
* Reads the current URL (hash) and navigates accordingly.
*/
function readURL() {
+
var hash = window.location.hash;
// Attempt to parse the hash as either an index or name
@@ -1100,16 +1216,18 @@ var Reveal = (function(){
slide( h, v );
}
+
}
/**
* Updates the page URL (hash) to reflect the current
* state.
*
- * @param {Number} delay The time in ms to wait before
+ * @param {Number} delay The time in ms to wait before
* writing the hash
*/
function writeURL( delay ) {
+
if( config.history ) {
// Make sure there's never more than one timeout running
@@ -1135,6 +1253,7 @@ var Reveal = (function(){
window.location.hash = url;
}
}
+
}
/**
@@ -1148,6 +1267,7 @@ var Reveal = (function(){
* @return {Object} { h: <int>, v: <int> }
*/
function getIndices( slide ) {
+
// By default, return the current indices
var h = indexh,
v = indexv;
@@ -1165,11 +1285,12 @@ var Reveal = (function(){
// If this is a vertical slide, grab the vertical index
if( isVertical ) {
- v = Math.max( toArray( slide.parentNode.children ).indexOf( slide ), 0 );
+ v = Math.max( toArray( slide.parentNode.querySelectorAll( 'section' ) ).indexOf( slide ), 0 );
}
}
return { h: h, v: v };
+
}
/**
@@ -1179,6 +1300,7 @@ var Reveal = (function(){
* false otherwise
*/
function nextFragment() {
+
// Vertical slides:
if( document.querySelector( VERTICAL_SLIDES_SELECTOR + '.present' ) ) {
var verticalFragments = document.querySelectorAll( VERTICAL_SLIDES_SELECTOR + '.present .fragment:not(.visible)' );
@@ -1203,6 +1325,7 @@ var Reveal = (function(){
}
return false;
+
}
/**
@@ -1212,6 +1335,7 @@ var Reveal = (function(){
* false otherwise
*/
function previousFragment() {
+
// Vertical slides:
if( document.querySelector( VERTICAL_SLIDES_SELECTOR + '.present' ) ) {
var verticalFragments = document.querySelectorAll( VERTICAL_SLIDES_SELECTOR + '.present .fragment.visible' );
@@ -1236,46 +1360,57 @@ var Reveal = (function(){
}
return false;
+
}
/**
* Cues a new automated slide if enabled in the config.
*/
function cueAutoSlide() {
+
clearTimeout( autoSlideTimeout );
// Cue the next auto-slide if enabled
if( autoSlide ) {
autoSlideTimeout = setTimeout( navigateNext, autoSlide );
}
+
}
function navigateLeft() {
+
// Prioritize hiding fragments
if( availableRoutes().left && isOverviewActive() || previousFragment() === false ) {
slide( indexh - 1 );
}
+
}
function navigateRight() {
+
// Prioritize revealing fragments
if( availableRoutes().right && isOverviewActive() || nextFragment() === false ) {
slide( indexh + 1 );
}
+
}
function navigateUp() {
+
// Prioritize hiding fragments
if( availableRoutes().up && isOverviewActive() || previousFragment() === false ) {
slide( indexh, indexv - 1 );
}
+
}
function navigateDown() {
+
// Prioritize revealing fragments
if( availableRoutes().down && isOverviewActive() || nextFragment() === false ) {
slide( indexh, indexv + 1 );
}
+
}
/**
@@ -1285,6 +1420,7 @@ var Reveal = (function(){
* 3) Previous horizontal slide
*/
function navigatePrev() {
+
// Prioritize revealing fragments
if( previousFragment() === false ) {
if( availableRoutes().up ) {
@@ -1301,12 +1437,14 @@ var Reveal = (function(){
}
}
}
+
}
/**
* Same as #navigatePrev() but navigates forwards.
*/
function navigateNext() {
+
// Prioritize revealing fragments
if( nextFragment() === false ) {
availableRoutes().down ? navigateDown() : navigateRight();
@@ -1315,6 +1453,7 @@ var Reveal = (function(){
// If auto-sliding is enabled we need to cue up
// another timeout
cueAutoSlide();
+
}
@@ -1329,12 +1468,13 @@ var Reveal = (function(){
* @param {Object} event
*/
function onDocumentKeyDown( event ) {
- // Check if there's a focused element that could be using
+
+ // Check if there's a focused element that could be using
// the keyboard
var activeElement = document.activeElement;
var hasFocus = !!( document.activeElement && ( document.activeElement.type || document.activeElement.href || document.activeElement.contentEditable !== 'inherit' ) );
- // Disregard the event if there's a focused element or a
+ // Disregard the event if there's a focused element or a
// keyboard modifier key is present
if ( hasFocus || event.shiftKey || event.altKey || event.ctrlKey || event.metaKey ) return;
@@ -1361,8 +1501,8 @@ var Reveal = (function(){
case 32: isOverviewActive() ? deactivateOverview() : navigateNext(); break;
// return
case 13: isOverviewActive() ? deactivateOverview() : triggered = false; break;
- // b, period
- case 66: case 190: togglePause(); break;
+ // b, period, Logitech presenter tools "black screen" button
+ case 66: case 190: case 191: togglePause(); break;
// f
case 70: enterFullscreen(); break;
default:
@@ -1391,6 +1531,7 @@ var Reveal = (function(){
* enables support for swipe and pinch gestures.
*/
function onDocumentTouchStart( event ) {
+
touch.startX = event.touches[0].clientX;
touch.startY = event.touches[0].clientY;
touch.startCount = event.touches.length;
@@ -1406,12 +1547,14 @@ var Reveal = (function(){
y: touch.startY
} );
}
+
}
/**
* Handler for the document level 'touchmove' event.
*/
function onDocumentTouchMove( event ) {
+
// Each touch should only trigger one action
if( !touch.handled ) {
var currentX = event.touches[0].clientX;
@@ -1478,20 +1621,24 @@ var Reveal = (function(){
else if( navigator.userAgent.match( /android/gi ) ) {
event.preventDefault();
}
+
}
/**
* Handler for the document level 'touchend' event.
*/
function onDocumentTouchEnd( event ) {
+
touch.handled = false;
+
}
/**
* Handles mouse wheel scrolling, throttled to avoid skipping
* multiple slides.
*/
- function onDocumentMouseScroll( event ){
+ function onDocumentMouseScroll( event ) {
+
clearTimeout( mouseWheelTimeout );
mouseWheelTimeout = setTimeout( function() {
@@ -1503,6 +1650,7 @@ var Reveal = (function(){
navigatePrev();
}
}, 100 );
+
}
/**
@@ -1512,30 +1660,37 @@ var Reveal = (function(){
* ( clickX / presentationWidth ) * numberOfSlides
*/
function onProgressClick( event ) {
+
var slidesTotal = toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ).length;
var slideIndex = Math.floor( ( event.clientX / dom.wrapper.offsetWidth ) * slidesTotal );
slide( slideIndex );
+
}
/**
* Handler for the window level 'hashchange' event.
*/
function onWindowHashChange( event ) {
+
readURL();
+
}
/**
* Handler for the window level 'resize' event.
*/
function onWindowResize( event ) {
+
layout();
+
}
/**
* Invoked when a slide is and we're in the overview.
*/
function onOverviewSlideClicked( event ) {
+
// TODO There's a bug here where the event listeners are not
// removed after deactivating the overview.
if( isOverviewActive() ) {
@@ -1556,6 +1711,7 @@ var Reveal = (function(){
slide( h, v );
}
}
+
}
@@ -1587,9 +1743,15 @@ var Reveal = (function(){
navigatePrev: navigatePrev,
navigateNext: navigateNext,
+ // Forces an update in slide layout
+ layout: layout,
+
// Toggles the overview mode on/off
toggleOverview: toggleOverview,
+ // Toggles the "black screen" mode on/off
+ togglePause: togglePause,
+
// Adds or removes all internal event listeners (such as keyboard)
addEventListeners: addEventListeners,
removeEventListeners: removeEventListeners,
diff --git a/js/reveal.min.js b/js/reveal.min.js
index 0b81b8f..46a765e 100644
--- a/js/reveal.min.js
+++ b/js/reveal.min.js
@@ -1,8 +1,8 @@
/*!
- * reveal.js 2.2 (2012-11-27, 08:44)
+ * reveal.js 2.2 (2013-01-21, 14:54)
* http://lab.hakim.se/reveal-js
* MIT licensed
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
-var Reveal=function(){"use strict";function y(e){if(!h&&!c){document.body.setAttribute("class","no-transforms");return}window.addEventListener("load",P,!1),C(r,e),w(),E()}function b(){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=k(document.querySelectorAll(".navigate-left")),l.controlsRight=k(document.querySelectorAll(".navigate-right")),l.controlsUp=k(document.querySelectorAll(".navigate-up")),l.controlsDown=k(document.querySelectorAll(".navigate-down")),l.controlsPrev=k(document.querySelectorAll(".navigate-prev")),l.controlsNext=k(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",M,!1),window.addEventListener("orientationchange",M,!1))}function E(){function o(){t.length&&head.js.apply(null,t),S()}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 S(){b(),T(),x(),P(),G(),nt(),setTimeout(function(){_("ready",{indexh:s,indexv:o,currentSlide:a})},1)}function x(){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",pt,!1),document.addEventListener("mousewheel",pt,!1)),r.rollingLinks&&D();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 T(){document.addEventListener("touchstart",lt,!1),document.addEventListener("touchmove",ct,!1),document.addEventListener("touchend",ht,!1),window.addEventListener("hashchange",vt,!1),window.addEventListener("resize",mt,!1),r.keyboard&&document.addEventListener("keydown",ft,!1),r.progress&&l.progress&&l.progress.addEventListener("click",O(dt),!1);if(r.controls&&l.controls){var e="ontouchstart"in window?"touchstart":"click";l.controlsLeft.forEach(function(t){t.addEventListener(e,O(rt),!1)}),l.controlsRight.forEach(function(t){t.addEventListener(e,O(it),!1)}),l.controlsUp.forEach(function(t){t.addEventListener(e,O(st),!1)}),l.controlsDown.forEach(function(t){t.addEventListener(e,O(ot),!1)}),l.controlsPrev.forEach(function(t){t.addEventListener(e,O(ut),!1)}),l.controlsNext.forEach(function(t){t.addEventListener(e,O(at),!1)})}}function N(){document.removeEventListener("keydown",ft,!1),document.removeEventListener("touchstart",lt,!1),document.removeEventListener("touchmove",ct,!1),document.removeEventListener("touchend",ht,!1),window.removeEventListener("hashchange",vt,!1),window.removeEventListener("resize",mt,!1),r.progress&&l.progress&&l.progress.removeEventListener("click",O(dt),!1);if(r.controls&&l.controls){var e="ontouchstart"in window?"touchstart":"click";l.controlsLeft.forEach(function(t){t.removeEventListener(e,O(rt),!1)}),l.controlsRight.forEach(function(t){t.removeEventListener(e,O(it),!1)}),l.controlsUp.forEach(function(t){t.removeEventListener(e,O(st),!1)}),l.controlsDown.forEach(function(t){t.removeEventListener(e,O(ot),!1)}),l.controlsPrev.forEach(function(t){t.removeEventListener(e,O(ut),!1)}),l.controlsNext.forEach(function(t){t.removeEventListener(e,O(at),!1)})}}function C(e,t){for(var n in t)e[n]=t[n]}function k(e){return Array.prototype.slice.call(e)}function L(e,t,n){e.forEach(function(e){e[t].apply(e,n)})}function A(e,t){var n=e.x-t.x,r=e.y-t.y;return Math.sqrt(n*n+r*r)}function O(e){return function(t){t.preventDefault(),e.call(null,t)}}function M(){setTimeout(function(){window.scrollTo(0,1)},0)}function _(e,t){var n=document.createEvent("HTMLEvents",1,2);n.initEvent(e,!0,!0),C(n,t),l.wrapper.dispatchEvent(n)}function D(){if(c&&!("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];i.textContent&&!i.querySelector("img")&&(!i.className||!i.classList.contains(i,"roll"))&&(i.classList.add("roll"),i.innerHTML='<span data-title="'+i.text+'">'+i.innerHTML+"</span>")}}}function P(){if(r.center){var t=k(document.querySelectorAll(e)),n=-l.wrapper.offsetHeight/2;for(var i=0,s=t.length;i<s;i++){var o=t[i];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 H(e,t){e&&e.setAttribute("data-previous-indexv",t||0)}function B(e){return e&&e.classList.contains("stack")?parseInt(e.getAttribute("data-previous-indexv")||0,10):0}function j(){r.overview&&(l.wrapper.classList.add("overview"),clearTimeout(m),m=setTimeout(function(){var e=document.querySelectorAll(t);for(var n=0,r=e.length;n<r;n++){var i=e[n],u="translateZ(-2500px) translate("+(n-s)*105+"%, 0%)";i.setAttribute("data-index-h",n),i.style.display="block",i.style.WebkitTransform=u,i.style.MozTransform=u,i.style.msTransform=u,i.style.OTransform=u,i.style.transform=u;if(i.classList.contains("stack")){var a=i.querySelectorAll("section");for(var f=0,l=a.length;f<l;f++){var c=n===s?o:B(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",gt,!0)}}else i.addEventListener("click",gt,!0)}P()},10))}function F(){if(r.overview){clearTimeout(m),l.wrapper.classList.remove("overview");var t=k(document.querySelectorAll(e));for(var n=0,i=t.length;n<i;n++){var u=t[n];u.style.display="",u.style.WebkitTransform="",u.style.MozTransform="",u.style.msTransform="",u.style.OTransform="",u.style.transform="",u.removeEventListener("click",gt,!0)}V(s,o)}}function I(e){typeof e=="boolean"?e?j():F():q()?F():j()}function q(){return l.wrapper.classList.contains("overview")}function R(){var e=document.body,t=e.requestFullScreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullScreen;t&&t.apply(e)}function U(){l.wrapper.classList.add("paused")}function z(){l.wrapper.classList.remove("paused")}function W(){X()?z():U()}function X(){return l.wrapper.classList.contains("paused")}function V(e,r,i){u=a;var l=document.querySelectorAll(t);r===undefined&&(r=B(l[e])),u&&u.parentNode&&u.parentNode.classList.contains("stack")&&H(u.parentNode,o);var c=f.concat();f.length=0;var h=s,p=o;s=$(t,e===undefined?s:e),o=$(n,r===undefined?o:r),P();e:for(var d=0,v=f.length;d<v;d++){for(var m=0;m<c.length;m++)if(c[m]===f[d]){c.splice(m,1);continue e}document.documentElement.classList.add(f[d]),_(f[d])}while(c.length)document.documentElement.classList.remove(c.pop());q()&&j(),Y(1500);var g=l[s],y=g.querySelectorAll("section");a=y[o]||g;if((s!==h||o!==p)&&i){var b=a.querySelectorAll(".fragment");k(b).forEach(function(e,t){t<i?e.classList.add("visible"):e.classList.remove("visible")})}s!==h||o!==p?_("slidechanged",{indexh:s,indexv:o,previousSlide:u,currentSlide:a}):u=null,u&&u.classList.remove("present"),K(),J()}function $(e,t){var n=k(document.querySelectorAll(e)),s=n.length;if(s){r.loop&&(t%=s,t<0&&(t=s+t)),t=Math.max(Math.min(t,s-1),0);for(var o=0;o<s;o++){var u=n[o];if(q()===!1){var a=Math.abs((t-o)%(s-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 l=n[t].getAttribute("data-state");l&&(f=f.concat(l.split(" ")));var c=n[t].getAttribute("data-autoslide");c?i=parseInt(c,10):i=r.autoSlide}else t=0;return t}function J(){if(r.progress&&l.progress){var n=k(document.querySelectorAll(t)),i=document.querySelectorAll(e+":not(.stack)").length,s=0;e:for(var o=0;o<n.length;o++){var u=n[o],a=k(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++}l.progressbar.style.width=s/(i-1)*window.innerWidth+"px"}}function K(){if(r.controls&&l.controls){var e=Q();l.controlsLeft.concat(l.controlsRight).concat(l.controlsUp).concat(l.controlsDown).concat(l.controlsPrev).concat(l.controlsNext).forEach(function(e){e.classList.remove("enabled")}),e.left&&l.controlsLeft.forEach(function(e){e.classList.add("enabled")}),e.right&&l.controlsRight.forEach(function(e){e.classList.add("enabled")}),e.up&&l.controlsUp.forEach(function(e){e.classList.add("enabled")}),e.down&&l.controlsDown.forEach(function(e){e.classList.add("enabled")}),(e.left||e.up)&&l.controlsPrev.forEach(function(e){e.classList.add("enabled")}),(e.right||e.down)&&l.controlsNext.forEach(function(e){e.classList.add("enabled")})}}function Q(){var e=document.querySelectorAll(t),r=document.querySelectorAll(n);return{left:s>0,right:s<e.length-1,up:o>0,down:o<r.length-1}}function G(){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);V(i.h,i.v)}else V(s,o)}else{var u=parseInt(t[0],10)||0,a=parseInt(t[1],10)||0;V(u,a)}}function Y(e){if(r.history){clearTimeout(v);if(typeof e=="number")v=setTimeout(Y,e);else{var t="/";if(a&&typeof a.getAttribute("id")=="string")t="/"+a.getAttribute("id");else{if(s>0||o>0)t+=s;o>0&&(t+="/"+o)}window.location.hash=t}}}function Z(e){var n=s,r=o;if(e){var i=!!e.parentNode.nodeName.match(/section/gi),u=i?e.parentNode:e,a=k(document.querySelectorAll(t));n=Math.max(a.indexOf(u),0),i&&(r=Math.max(k(e.parentNode.children).indexOf(e),0))}return{h:n,v:r}}function et(){if(document.querySelector(n+".present")){var e=document.querySelectorAll(n+".present .fragment:not(.visible)");if(e.length)return e[0].classList.add("visible"),_("fragmentshown",{fragment:e[0]}),!0}else{var r=document.querySelectorAll(t+".present .fragment:not(.visible)");if(r.length)return r[0].classList.add("visible"),_("fragmentshown",{fragment:r[0]}),!0}return!1}function tt(){if(document.querySelector(n+".present")){var e=document.querySelectorAll(n+".present .fragment.visible");if(e.length)return e[e.length-1].classList.remove("visible"),_("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"),_("fragmenthidden",{fragment:r[r.length-1]}),!0}return!1}function nt(){clearTimeout(d),i&&(d=setTimeout(at,i))}function rt(){(Q().left&&q()||tt()===!1)&&V(s-1)}function it(){(Q().right&&q()||et()===!1)&&V(s+1)}function st(){(Q().up&&q()||tt()===!1)&&V(s,o-1)}function ot(){(Q().down&&q()||et()===!1)&&V(s,o+1)}function ut(){if(tt()===!1)if(Q().up)st();else{var e=document.querySelector(t+".past:nth-child("+s+")");e&&(o=e.querySelectorAll("section").length+1||undefined,s--,V())}}function at(){et()===!1&&(Q().down?ot():it()),nt()}function ft(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:ut();break;case 78:case 34:at();break;case 72:case 37:rt();break;case 76:case 39:it();break;case 75:case 38:st();break;case 74:case 40:ot();break;case 36:V(0);break;case 35:V(Number.MAX_VALUE);break;case 32:q()?F():at();break;case 13:q()?F():r=!1;break;case 66:case 190:W();break;case 70:R();break;default:r=!1}r?e.preventDefault():e.keyCode===27&&c&&(I(),e.preventDefault()),nt()}function lt(e){g.startX=e.touches[0].clientX,g.startY=e.touches[0].clientY,g.startCount=e.touches.length,e.touches.length===2&&r.overview&&(g.startSpan=A({x:e.touches[1].clientX,y:e.touches[1].clientY},{x:g.startX,y:g.startY}))}function ct(e){if(!g.handled){var t=e.touches[0].clientX,n=e.touches[0].clientY;if(e.touches.length===2&&g.startCount===2&&r.overview){var i=A({x:e.touches[1].clientX,y:e.touches[1].clientY},{x:g.startX,y:g.startY});Math.abs(g.startSpan-i)>g.threshold&&(g.handled=!0,i<g.startSpan?j():F()),e.preventDefault()}else if(e.touches.length===1&&g.startCount!==2){var s=t-g.startX,o=n-g.startY;s>g.threshold&&Math.abs(s)>Math.abs(o)?(g.handled=!0,rt()):s<-g.threshold&&Math.abs(s)>Math.abs(o)?(g.handled=!0,it()):o>g.threshold?(g.handled=!0,st()):o<-g.threshold&&(g.handled=!0,ot()),e.preventDefault()}}else navigator.userAgent.match(/android/gi)&&e.preventDefault()}function ht(e){g.handled=!1}function pt(e){clearTimeout(p),p=setTimeout(function(){var t=e.detail||-e.wheelDelta;t>0?at():ut()},100)}function dt(e){var n=k(document.querySelectorAll(t)).length,r=Math.floor(e.clientX/l.wrapper.offsetWidth*n);V(r)}function vt(e){G()}function mt(e){P()}function gt(e){if(q()){e.preventDefault(),F();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);V(n,r)}}}var e=".reveal .slides section",t=".reveal .slides>section",n=".reveal .slides>section.present>section",r={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:[]},i=r.autoSlide,s=0,o=0,u,a,f=[],l={},c="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,h="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,p=0,d=0,v=0,m=0,g={startX:0,startY:0,startSpan:0,startCount:0,handled:!1,threshold:80};return{initialize:y,slide:V,left:rt,right:it,up:st,down:ot,prev:ut,next:at,prevFragment:tt,nextFragment:et,navigateTo:V,navigateLeft:rt,navigateRight:it,navigateUp:st,navigateDown:ot,navigatePrev:ut,navigateNext:at,toggleOverview:I,addEventListeners:T,removeEventListeners:N,getIndices:Z,getPreviousSlide:function(){return u},getCurrentSlide:function(){return a},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&&(l.wrapper||document.querySelector(".reveal")).addEventListener(e,t,n)},removeEventListener:function(e,t,n){"addEventListener"in window&&(l.wrapper||document.querySelector(".reveal")).removeEventListener(e,t,n)}}}(); \ 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="<span></span>",l.wrapper.appendChild(a)}if(!l.wrapper.querySelector(".controls")&&e.controls){var b=document.createElement("aside");b.classList.add("controls"),b.innerHTML='<div class="navigate-left"></div><div class="navigate-right"></div><div class="navigate-up"></div><div class="navigate-down"></div>',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("*")||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
diff --git a/plugin/notes/notes.html b/plugin/notes/notes.html
index 64b921c..ed2a415 100644
--- a/plugin/notes/notes.html
+++ b/plugin/notes/notes.html
@@ -89,11 +89,11 @@
<body>
<div id="wrap-current-slide" class="slides">
- <iframe src="../../index.html" width="1280" height="1024" id="current-slide"></iframe>
+ <iframe width="1280" height="1024" id="current-slide"></iframe>
</div>
<div id="wrap-next-slide" class="slides">
- <iframe src="../../index.html" width="640" height="512" id="next-slide"></iframe>
+ <iframe width="640" height="512" id="next-slide"></iframe>
<span>UPCOMING:</span>
</div>
<div id="notes"></div>
@@ -102,6 +102,12 @@
<script>
window.addEventListener( 'load', function() {
+ // ASEEMK: fix for calling talk may not be at index.html.
+ var iframes = document.querySelectorAll( '.slides iframe' );
+ [].slice.call(iframes).forEach(function (iframe) {
+ iframe.src = window.opener ? window.opener.location.href : '/';
+ });
+
(function( window, undefined ) {
var notes = document.getElementById( 'notes' ),
currentSlide = document.getElementById( 'current-slide' ),
diff --git a/plugin/print-pdf/print-pdf.js b/plugin/print-pdf/print-pdf.js
new file mode 100644
index 0000000..2b1d691
--- /dev/null
+++ b/plugin/print-pdf/print-pdf.js
@@ -0,0 +1,39 @@
+/**
+ * phantomjs script for printing presentations to PDF.
+ *
+ * Example:
+ * phantomjs print-pdf.js "http://lab.hakim.se/reveal-js?print-pdf" reveal-demo.pdf
+ *
+ * By Manuel Bieh (https://github.com/manuelbieh)
+ */
+
+// html2pdf.js
+var page = new WebPage();
+var system = require( 'system' );
+
+page.paperSize = {
+ format: 'A4',
+ orientation: 'landscape',
+ margin: {
+ left: '0',
+ right: '0',
+ top: '0',
+ bottom: '0'
+ }
+};
+page.zoomFactor = 1.5;
+
+var revealFile = system.args[1] || 'index.html?print-pdf';
+var slideFile = system.args[2] || 'slides.pdf';
+
+if( slideFile.match( /\.pdf$/gi ) === null ) {
+ slideFile += '.pdf';
+}
+
+console.log( 'Printing PDF...' );
+
+page.open( revealFile, function( status ) {
+ console.log( 'Printed succesfully' );
+ page.render( slideFile );
+ phantom.exit();
+} ); \ No newline at end of file
diff --git a/plugin/remotes/remotes.js b/plugin/remotes/remotes.js
index a739bb2..a1f10b8 100644
--- a/plugin/remotes/remotes.js
+++ b/plugin/remotes/remotes.js
@@ -3,17 +3,28 @@
* of the folks at http://remotes.io
*/
-head.ready( 'remotes.ne.min.js', function() {
-
- new Remotes("preview")
- .on("swipe-left", function(e){ Reveal.right(); })
- .on("swipe-right", function(e){ Reveal.left(); })
- .on("swipe-up", function(e){ Reveal.down(); })
- .on("swipe-down", function(e){ Reveal.up(); })
- .on("tap", function(e){
- Reveal.toggleOverview();
- });
+(function(window){
-} );
+ /**
+ * Detects if we are dealing with a touch enabled device (with some false positives)
+ * Borrowed from modernizr: https://github.com/Modernizr/Modernizr/blob/master/feature-detects/touch.js
+ */
+ var hasTouch = (function(){
+ return ('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch;
+ })();
-head.js( 'https://raw.github.com/Remotes/Remotes/master/dist/remotes.ne.min.js' ); \ No newline at end of file
+ if(!hasTouch){
+ head.ready( 'remotes.ne.min.js', function() {
+ new Remotes("preview")
+ .on("swipe-left", function(e){ Reveal.right(); })
+ .on("swipe-right", function(e){ Reveal.left(); })
+ .on("swipe-up", function(e){ Reveal.down(); })
+ .on("swipe-down", function(e){ Reveal.up(); })
+ .on("tap", function(e){
+ Reveal.toggleOverview();
+ });
+ } );
+
+ head.js('https://raw.github.com/Remotes/Remotes/master/dist/remotes.ne.min.js');
+ }
+})(window); \ No newline at end of file