summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--README.md34
-rw-r--r--css/reveal.css81
-rw-r--r--css/theme/README.md5
-rw-r--r--css/theme/beige.css205
-rw-r--r--css/theme/default.css199
-rw-r--r--css/theme/serif.css180
-rw-r--r--css/theme/simple.css173
-rw-r--r--css/theme/sky.css194
-rw-r--r--css/theme/source/beige.scss50
-rw-r--r--css/theme/source/default.scss42
-rw-r--r--css/theme/source/serif.scss33
-rw-r--r--css/theme/source/simple.scss38
-rw-r--r--css/theme/source/sky.scss41
-rw-r--r--css/theme/template/mixins.scss29
-rw-r--r--css/theme/template/settings.scss33
-rw-r--r--css/theme/template/theme.scss135
-rw-r--r--index.html10
-rw-r--r--js/reveal.js816
-rw-r--r--js/reveal.min.js78
-rw-r--r--plugin/speakernotes/index.js6
-rw-r--r--plugin/speakernotes/notes.html4
22 files changed, 1409 insertions, 978 deletions
diff --git a/.gitignore b/.gitignore
index 34058c4..9ffdbc7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
log/*.log
tmp/**
node_modules/
+.sass-cache \ No newline at end of file
diff --git a/README.md b/README.md
index b0ed98d..533148c 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@ reveal.js comes with a broad range of features including [nested slides](https:/
#### More reading in the Wiki:
- [Changelog](https://github.com/hakimel/reveal.js/wiki/Changelog): Up-to-date version history.
- [Examples](https://github.com/hakimel/reveal.js/wiki/Example-Presentations): Presentations created with reveal.js, add your own!
-- [Browser Support](https://github.com/hakimel/reveal.js/wiki/Changelog): Explanation of browser support and fallbacks.
+- [Browser Support](https://github.com/hakimel/reveal.js/wiki/Browser-Support): Explanation of browser support and fallbacks.
## rvl.io
@@ -75,7 +75,8 @@ Reveal.initialize({
loop: false,
// Number of milliseconds between automatically proceeding to the
- // next slide, disabled when set to 0
+ // next slide, disabled when set to 0, this value can be overwritten
+ // by using a data-autoslide attribute on your slides
autoSlide: 0,
// Enable slide navigation via mouse wheel
@@ -85,7 +86,7 @@ Reveal.initialize({
rollingLinks: true,
// Transition style
- transition: 'default' // default/cube/page/concave/linear(2d)
+ transition: 'default' // default/cube/page/concave/zoom/linear/none
});
```
@@ -103,6 +104,8 @@ Reveal.initialize({
// Interpret Markdown in <section> elements
{ src: 'lib/js/data-markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'lib/js/showdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
+ // Zoom in and out with Alt+click
+ { src: 'plugin/zoom-js/zoom.js', condition: function() { return !!document.body.classList; } },
// Speaker notes support
{ src: 'plugin/speakernotes/client.js', async: true, condition: function() { return window.location.host === 'localhost:1947'; } },
{ src: '/socket.io/socket.io.js', async: true, condition: function() { return window.location.host === 'localhost:1947'; } },
@@ -123,13 +126,13 @@ The Reveal class provides a minimal JavaScript API for controlling navigation an
```javascript
// Navigation
-Reveal.navigateTo( indexh, indexv );
-Reveal.navigateLeft();
-Reveal.navigateRight();
-Reveal.navigateUp();
-Reveal.navigateDown();
-Reveal.navigatePrev();
-Reveal.navigateNext();
+Reveal.slide( indexh, indexv );
+Reveal.left();
+Reveal.right();
+Reveal.up();
+Reveal.down();
+Reveal.prev();
+Reveal.next();
Reveal.toggleOverview();
// Retrieves the previous and current slide elements
@@ -151,6 +154,16 @@ Reveal.addEventListener( 'somestate', function() {
}, false );
```
+### Ready event
+
+The 'ready' event is fired when reveal.js has loaded all (synchronous) dependencies and is ready to start navigating.
+
+```javascript
+Reveal.addEventListener( 'ready', function( event ) {
+ // event.currentSlide, event.indexh, event.indexv
+} );
+```
+
### Slide change event
An 'slidechanged' event is fired each time the slide is changed (regardless of state). The event object holds the index values of the current slide as well as a reference to the previous and current slide HTML nodes.
@@ -232,3 +245,4 @@ You can change the appearance of the speaker notes by editing the file at `plugi
MIT licensed
Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+
diff --git a/css/reveal.css b/css/reveal.css
index d493b22..9831255 100644
--- a/css/reveal.css
+++ b/css/reveal.css
@@ -1,6 +1,6 @@
@charset "UTF-8";
-/**
+/*!
* reveal.js
* http://lab.hakim.se/reveal-js
* MIT licensed
@@ -196,7 +196,7 @@ body {
display: block;
position: relative;
width: 90%;
- margin: 10px auto;
+ margin: 15px auto;
text-align: left;
font-size: 0.55em;
@@ -207,6 +207,9 @@ body {
box-shadow: 0px 0px 6px rgba(0,0,0,0.3);
}
+.reveal pre code {
+ padding: 5px;
+}
.reveal code {
font-family: monospace;
@@ -538,6 +541,56 @@ body {
/*********************************************
+ * ZOOM TRANSITION
+ *********************************************/
+
+.reveal.zoom .slides>section,
+.reveal.zoom .slides>section>section {
+ -webkit-transition: all 600ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
+ -moz-transition: all 600ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
+ -ms-transition: all 600ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
+ -o-transition: all 600ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
+ transition: all 600ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
+}
+
+.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%);
+}
+
+
+/*********************************************
* LINEAR TRANSITION
*********************************************/
@@ -577,12 +630,10 @@ body {
*********************************************/
.reveal.cube .slides {
- margin-top: -350px;
-
- -webkit-perspective-origin: 50% 25%;
- -moz-perspective-origin: 50% 25%;
- -ms-perspective-origin: 50% 25%;
- perspective-origin: 50% 25%;
+ -webkit-perspective-origin: 0% 25%;
+ -moz-perspective-origin: 0% 25%;
+ -ms-perspective-origin: 0% 25%;
+ perspective-origin: 0% 25%;
-webkit-perspective: 1300px;
-moz-perspective: 1300px;
@@ -610,7 +661,7 @@ body {
height: 100%;
left: 0;
top: 0;
- background: #232628;
+ background: rgba(0,0,0,0.1);
border-radius: 4px;
-webkit-transform: translateZ( -20px );
@@ -699,12 +750,10 @@ body {
*********************************************/
.reveal.page .slides {
- margin-top: -350px;
-
- -webkit-perspective-origin: 50% 50%;
- -moz-perspective-origin: 50% 50%;
- -ms-perspective-origin: 50% 50%;
- perspective-origin: 50% 50%;
+ -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;
@@ -730,7 +779,7 @@ body {
height: 100%;
left: 0;
top: 0;
- background: rgba(0,0,0,0.2);
+ background: rgba(0,0,0,0.1);
-webkit-transform: translateZ( -20px );
-moz-transform: translateZ( -20px );
diff --git a/css/theme/README.md b/css/theme/README.md
new file mode 100644
index 0000000..137bdf2
--- /dev/null
+++ b/css/theme/README.md
@@ -0,0 +1,5 @@
+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
diff --git a/css/theme/beige.css b/css/theme/beige.css
index 684f842..6b887f3 100644
--- a/css/theme/beige.css
+++ b/css/theme/beige.css
@@ -1,179 +1,136 @@
-/**
- * A beige theme for reveal.js presentations, similar
- * to the default theme.
+@import url(http://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+/*
+ * Beige theme for reveal.js.
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
-
-/*********************************************
- * FONT-FACE DEFINITIONS
- *********************************************/
-
@font-face {
- font-family: 'League Gothic';
- src: url('../../lib/font/league_gothic-webfont.eot');
- src: url('../../lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'),
- url('../../lib/font/league_gothic-webfont.woff') format('woff'),
- url('../../lib/font/league_gothic-webfont.ttf') format('truetype'),
- url('../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg');
-
- font-weight: normal;
- font-style: normal;
+ font-family: 'League Gothic';
+ src: url("../../lib/font/league_gothic-webfont.eot");
+ src: url("../../lib/font/league_gothic-webfont.eot?#iefix") format("embedded-opentype"), url("../../lib/font/league_gothic-webfont.woff") format("woff"), url("../../lib/font/league_gothic-webfont.ttf") format("truetype"), url("../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular") format("svg");
+ font-weight: normal;
+ font-style: normal;
}
-
/*********************************************
* GLOBAL STYLES
*********************************************/
-
body {
- font-family: 'Lato', Times, 'Times New Roman', serif;
- font-size: 36px;
- font-weight: 200;
- letter-spacing: -0.02em;
- color: #333;
-
- background: #f7f3de;
- background: -moz-radial-gradient(center, ellipse cover, rgba(255,255,255,1) 0%, rgba(247,242,211,1) 100%);
- background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,rgba(255,255,255,1)), color-stop(100%,rgba(247,242,211,1)));
- background: -webkit-radial-gradient(center, ellipse cover, rgba(255,255,255,1) 0%,rgba(247,242,211,1) 100%);
- background: -o-radial-gradient(center, ellipse cover, rgba(255,255,255,1) 0%,rgba(247,242,211,1) 100%);
- background: -ms-radial-gradient(center, ellipse cover, rgba(255,255,255,1) 0%,rgba(247,242,211,1) 100%);
- background: radial-gradient(center, ellipse cover, rgba(255,255,255,1) 0%,rgba(247,242,211,1) 100%);
+ background: white;
+ background: -moz-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
+ background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, white), color-stop(100%, #f7f2d3));
+ background: -webkit-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
+ background: -o-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
+ background: -ms-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
+ background: radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
}
-::-moz-selection {
- background:rgba(79, 64, 28, 0.99);
- color: white;
-}
-::-webkit-selection {
- background:rgba(79, 64, 28, 0.99);
- color: white;
+.reveal {
+ font-family: "Lato", Times, "Times New Roman", serif;
+ font-size: 36px;
+ font-weight: 200;
+ letter-spacing: -0.02em;
+ color: #333333;
}
+
::selection {
- background:rgba(79, 64, 28, 0.99);
- color: white;
+ color: white;
+ background: rgba(79, 64, 28, 0.99);
+ text-shadow: none;
}
-
/*********************************************
* HEADERS
*********************************************/
-
-.reveal h1,
-.reveal h2,
-.reveal h3,
-.reveal h4,
-.reveal h5,
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
.reveal h6 {
- margin: 0 0 20px 0;
- color: #333;
- font-family: 'League Gothic', Impact, sans-serif;
- line-height: 0.9em;
- letter-spacing: 0.02em;
-
- text-transform: uppercase;
+ margin: 0 0 20px 0;
+ color: #333333;
+ font-family: "League Gothic", Impact, sans-serif;
+ line-height: 0.9em;
+ letter-spacing: 0.02em;
+ text-transform: uppercase;
+ text-shadow: none;
}
.reveal h1 {
- text-shadow: 0 1px 0 #ccc,
- 0 2px 0 #c9c9c9,
- 0 3px 0 #bbb,
- 0 4px 0 #b9b9b9,
- 0 5px 0 #aaa,
- 0 6px 1px rgba(0,0,0,.1),
- 0 0 5px rgba(0,0,0,.1),
- 0 1px 3px rgba(0,0,0,.3),
- 0 3px 5px rgba(0,0,0,.2),
- 0 5px 10px rgba(0,0,0,.25),
- 0 20px 20px rgba(0,0,0,.15);
+ text-shadow: 0 1px 0 #cccccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbbbbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaaaaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15);
}
-
/*********************************************
* LINKS
*********************************************/
-
.reveal a:not(.image) {
- color: #8b743d;
- text-decoration: none;
+ color: #8b743d;
+ text-decoration: none;
+ -webkit-transition: color .15s ease;
+ -moz-transition: color .15s ease;
+ -ms-transition: color .15s ease;
+ -o-transition: color .15s ease;
+ transition: color .15s ease;
+}
- -webkit-transition: color .15s ease;
- -moz-transition: color .15s ease;
- -ms-transition: color .15s ease;
- -o-transition: color .15s ease;
- transition: color .15s ease;
+.reveal a:not(.image):hover {
+ color: #c0a86e;
+ text-shadow: none;
+ border: none;
+ border-radius: 2px;
}
- .reveal a:not(.image):hover {
- text-shadow: none;
- border: none;
- border-radius: 2px;
- }
.reveal .roll span:after {
- color: #fff;
- background: #8b743d;
+ color: #fff;
+ background: #564826;
}
-
/*********************************************
* IMAGES
*********************************************/
-
.reveal section img {
- margin: 30px 0 0 0;
- background: rgba(255,255,255,0.12);
- border: 4px solid #eee;
-
- -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
- -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
-
- -webkit-transition: all .2s linear;
- -moz-transition: all .2s linear;
- -ms-transition: all .2s linear;
- -o-transition: all .2s linear;
- transition: all .2s linear;
+ margin: 15px;
+ background: rgba(255, 255, 255, 0.12);
+ border: 4px solid #333333;
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+ -webkit-transition: all .2s linear;
+ -moz-transition: all .2s linear;
+ -ms-transition: all .2s linear;
+ -o-transition: all .2s linear;
+ transition: all .2s linear;
}
- .reveal a:hover img {
- background: rgba(255,255,255,0.2);
- border-color: #8b743d;
-
- -webkit-box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
- -moz-box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
- box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
- }
-
+.reveal a:hover img {
+ background: rgba(255, 255, 255, 0.2);
+ border-color: #8b743d;
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
-
.reveal .controls a {
- color: #fff;
+ color: #333333;
}
- .reveal .controls a.enabled {
- color: #8b743d;
- text-shadow: 0px 0px 2px hsla(185, 45%, 70%, 0.3);
- }
+.reveal .controls a.enabled {
+ color: #c0a86e;
+ text-shadow: 0px 0px 2px rgba(144, 207, 213, 0.3);
+}
/*********************************************
* PROGRESS BAR
*********************************************/
-
.reveal .progress {
- background: rgba(0,0,0,0.2);
+ background: rgba(0, 0, 0, 0.2);
}
- .reveal .progress span {
- background: #8b743d;
-
- -webkit-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- -moz-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- -ms-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- -o-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- }
-
+.reveal .progress span {
+ background: #8b743d;
+ -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ -ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+}
diff --git a/css/theme/default.css b/css/theme/default.css
index bd7caa7..d8f9299 100644
--- a/css/theme/default.css
+++ b/css/theme/default.css
@@ -1,169 +1,136 @@
-/**
- * The default theme for reveal.js presentations.
+@import url(http://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+/*
+ * Default theme for reveal.js.
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
-
-/*********************************************
- * FONT-FACE DEFINITIONS
- *********************************************/
-
@font-face {
- font-family: 'League Gothic';
- src: url('../../lib/font/league_gothic-webfont.eot');
- src: url('../../lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'),
- url('../../lib/font/league_gothic-webfont.woff') format('woff'),
- url('../../lib/font/league_gothic-webfont.ttf') format('truetype'),
- url('../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg');
-
- font-weight: normal;
- font-style: normal;
+ font-family: 'League Gothic';
+ src: url("../../lib/font/league_gothic-webfont.eot");
+ src: url("../../lib/font/league_gothic-webfont.eot?#iefix") format("embedded-opentype"), url("../../lib/font/league_gothic-webfont.woff") format("woff"), url("../../lib/font/league_gothic-webfont.ttf") format("truetype"), url("../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular") format("svg");
+ font-weight: normal;
+ font-style: normal;
}
-
/*********************************************
* GLOBAL STYLES
*********************************************/
-
body {
- font-family: 'Lato', Times, 'Times New Roman', serif;
- font-size: 36px;
- font-weight: 200;
- letter-spacing: -0.02em;
- color: #eee;
+ background: #555a5f;
+ background: -moz-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
+ background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #555a5f), color-stop(100%, #1c1e20));
+ background: -webkit-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
+ background: -o-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
+ background: -ms-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
+ background: radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
+}
- background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPHJhZGlhbEdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iNzUlIj4KICAgIDxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiM1NTVhNWYiIHN0b3Atb3BhY2l0eT0iMSIvPgogICAgPHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjMWMxZTIwIiBzdG9wLW9wYWNpdHk9IjEiLz4KICA8L3JhZGlhbEdyYWRpZW50PgogIDxyZWN0IHg9Ii01MCIgeT0iLTUwIiB3aWR0aD0iMTAxIiBoZWlnaHQ9IjEwMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
- background-color: #2b2b2b;
- background: -moz-radial-gradient(center, ellipse cover, rgba(85,90,95,1) 0%, rgba(28,30,32,1) 100%);
- background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,rgba(85,90,95,1)), color-stop(100%,rgba(28,30,32,1)));
- background: -webkit-radial-gradient(center, ellipse cover, rgba(85,90,95,1) 0%,rgba(28,30,32,1) 100%);
- background: -o-radial-gradient(center, ellipse cover, rgba(85,90,95,1) 0%,rgba(28,30,32,1) 100%);
- background: -ms-radial-gradient(center, ellipse cover, rgba(85,90,95,1) 0%,rgba(28,30,32,1) 100%);
- background: radial-gradient(center, ellipse cover, rgba(85,90,95,1) 0%,rgba(28,30,32,1) 100%);
+.reveal {
+ font-family: "Lato", Times, "Times New Roman", serif;
+ font-size: 36px;
+ font-weight: 200;
+ letter-spacing: -0.02em;
+ color: #eeeeee;
}
+::selection {
+ color: white;
+ background: #ff5e99;
+ text-shadow: none;
+}
/*********************************************
* HEADERS
*********************************************/
-
-.reveal h1,
-.reveal h2,
-.reveal h3,
-.reveal h4,
-.reveal h5,
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
.reveal h6 {
- margin: 0 0 20px 0;
- color: #eee;
- font-family: 'League Gothic', Impact, sans-serif;
- line-height: 0.9em;
- letter-spacing: 0.02em;
-
- text-transform: uppercase;
- text-shadow: 0px 0px 6px rgba(0,0,0,0.2);
+ margin: 0 0 20px 0;
+ color: #eeeeee;
+ font-family: "League Gothic", Impact, sans-serif;
+ line-height: 0.9em;
+ letter-spacing: 0.02em;
+ text-transform: uppercase;
+ text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2);
}
.reveal h1 {
- text-shadow: 0 1px 0 #ccc,
- 0 2px 0 #c9c9c9,
- 0 3px 0 #bbb,
- 0 4px 0 #b9b9b9,
- 0 5px 0 #aaa,
- 0 6px 1px rgba(0,0,0,.1),
- 0 0 5px rgba(0,0,0,.1),
- 0 1px 3px rgba(0,0,0,.3),
- 0 3px 5px rgba(0,0,0,.2),
- 0 5px 10px rgba(0,0,0,.25),
- 0 20px 20px rgba(0,0,0,.15);
+ text-shadow: 0 1px 0 #cccccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbbbbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaaaaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15);
}
-
/*********************************************
* LINKS
*********************************************/
-
.reveal a:not(.image) {
- color: hsl(185, 85%, 50%);
- text-decoration: none;
+ color: #13daec;
+ text-decoration: none;
+ -webkit-transition: color .15s ease;
+ -moz-transition: color .15s ease;
+ -ms-transition: color .15s ease;
+ -o-transition: color .15s ease;
+ transition: color .15s ease;
+}
- -webkit-transition: color .15s ease;
- -moz-transition: color .15s ease;
- -ms-transition: color .15s ease;
- -o-transition: color .15s ease;
- transition: color .15s ease;
+.reveal a:not(.image):hover {
+ color: #71e9f4;
+ text-shadow: none;
+ border: none;
+ border-radius: 2px;
}
- .reveal a:not(.image):hover {
- color: hsl(185, 85%, 70%);
-
- text-shadow: none;
- border: none;
- border-radius: 2px;
- }
.reveal .roll span:after {
- color: #fff;
- background: hsl(185, 60%, 35%);
+ color: #fff;
+ background: #0d99a5;
}
-
/*********************************************
* IMAGES
*********************************************/
-
.reveal section img {
- margin: 30px 0 0 0;
- background: rgba(255,255,255,0.12);
- border: 4px solid #eee;
-
- -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
- -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
-
- -webkit-transition: all .2s linear;
- -moz-transition: all .2s linear;
- -ms-transition: all .2s linear;
- -o-transition: all .2s linear;
- transition: all .2s linear;
+ margin: 15px;
+ background: rgba(255, 255, 255, 0.12);
+ border: 4px solid #eeeeee;
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+ -webkit-transition: all .2s linear;
+ -moz-transition: all .2s linear;
+ -ms-transition: all .2s linear;
+ -o-transition: all .2s linear;
+ transition: all .2s linear;
}
- .reveal a:hover img {
- background: rgba(255,255,255,0.2);
- border-color: #13DAEC;
-
- -webkit-box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
- -moz-box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
- box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
- }
-
+.reveal a:hover img {
+ background: rgba(255, 255, 255, 0.2);
+ border-color: #13daec;
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
-
.reveal .controls a {
- color: #fff;
+ color: #eeeeee;
}
- .reveal .controls a.enabled {
- color: hsl(185, 85%, 70%);
- text-shadow: 0px 0px 2px hsla(185, 45%, 70%, 0.3);
- }
+.reveal .controls a.enabled {
+ color: #71e9f4;
+ text-shadow: 0px 0px 2px rgba(144, 207, 213, 0.3);
+}
/*********************************************
* PROGRESS BAR
*********************************************/
-
.reveal .progress {
- background: rgba(0,0,0,0.2);
+ background: rgba(0, 0, 0, 0.2);
}
- .reveal .progress span {
- background: hsl(185, 85%, 50%);
-
- -webkit-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- -moz-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- -ms-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- -o-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- }
-
+.reveal .progress span {
+ background: #13daec;
+ -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ -ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+}
diff --git a/css/theme/serif.css b/css/theme/serif.css
index 47512fe..b9f2406 100644
--- a/css/theme/serif.css
+++ b/css/theme/serif.css
@@ -1,159 +1,123 @@
-/**
+/*
* A simple theme for reveal.js presentations, similar
- * to the default theme. The accent color is darkblue;
- * do a find-replace to change it.
+ * to the default theme. The accent color is darkblue.
*
* This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed.
* reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se; so is the theme - beige.css - that this is based off of.
*/
-
-/*********************************************
- * FONT-FACE DEFINITIONS
- *********************************************/
-
-
/*********************************************
* GLOBAL STYLES
*********************************************/
-
body {
- font-family: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
- font-size: 36px;
- font-weight: 200;
- letter-spacing: -0.02em;
- color: black !important;
-
- background: #F0F1EB;
+ background: #f0f1eb;
}
-::-moz-selection {
- background: #26351C;
- color: rgba(255,255,255, 0.8);
-}
-::-webkit-selection {
- background: #26351C;
- color: rgba(255,255,255, 0.8);
+.reveal {
+ font-family: "Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif;
+ font-size: 36px;
+ font-weight: 200;
+ letter-spacing: -0.02em;
+ color: black;
}
+
::selection {
- background: #26351C;
- color: rgba(255,255,255, 0.8);
+ color: white;
+ background: #26351c;
+ text-shadow: none;
}
/*********************************************
* HEADERS
*********************************************/
-
-.reveal h1,
-.reveal h2,
-.reveal h3,
-.reveal h4,
-.reveal h5,
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
.reveal h6 {
- margin: 0 0 40px 0;
- color: #383D3D;
- font-family: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
- line-height: 0.9em;
+ margin: 0 0 20px 0;
+ color: #383d3d;
+ font-family: "Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif;
+ line-height: 0.9em;
+ letter-spacing: 0.02em;
+ text-transform: none;
+ text-shadow: none;
+}
+
+.reveal h1 {
+ text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2);
}
/*********************************************
* LINKS
*********************************************/
-
.reveal a:not(.image) {
- color: #51483D;
- text-decoration: none;
- font-weight: bold;
- line-height: 1.4em;
- -webkit-transition: color .15s ease;
- -moz-transition: color .15s ease;
- -ms-transition: color .15s ease;
- -o-transition: color .15s ease;
- transition: color .15s ease;
+ color: #51483d;
+ text-decoration: none;
+ -webkit-transition: color .15s ease;
+ -moz-transition: color .15s ease;
+ -ms-transition: color .15s ease;
+ -o-transition: color .15s ease;
+ transition: color .15s ease;
}
- .reveal a:not(.image):hover {
- text-shadow: none;
- border: none;
- border-radius: 2px;
- }
-.reveal .roll span:after {
- color: #fff;
- background: #51483D;
+.reveal a:not(.image):hover {
+ color: #8b7c69;
+ text-shadow: none;
+ border: none;
+ border-radius: 2px;
}
-/*********************************************
- * MISC
- *********************************************/
-
-.reveal p {
- line-height: 1.4em;
- font-size: 1.15em;
- color: #111;
-}
-
-.reveal .subtitle {
- font-style: italic;
+.reveal .roll span:after {
+ color: #fff;
+ background: #25211c;
}
/*********************************************
* IMAGES
*********************************************/
-
.reveal section img {
- margin: 30px 0 0 0;
- background: rgba(255,255,255,0.12);
- border: 4px solid #eee;
-
- -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
- -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
-
- -webkit-transition: all .2s linear;
- -moz-transition: all .2s linear;
- -ms-transition: all .2s linear;
- -o-transition: all .2s linear;
- transition: all .2s linear;
+ margin: 15px;
+ background: rgba(255, 255, 255, 0.12);
+ border: 4px solid black;
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+ -webkit-transition: all .2s linear;
+ -moz-transition: all .2s linear;
+ -ms-transition: all .2s linear;
+ -o-transition: all .2s linear;
+ transition: all .2s linear;
}
- .reveal a:hover img {
- background: rgba(255,255,255,0.2);
- border-color: darkblue;
-
- -webkit-box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
- -moz-box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
- box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
- }
-
+.reveal a:hover img {
+ background: rgba(255, 255, 255, 0.2);
+ border-color: #51483d;
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
-
.reveal .controls a {
- color: black;
+ color: black;
}
- .reveal .controls a.enabled {
- color: #26351C;
- opacity: 1;
- text-shadow: 0px 0px 2px hsla(185, 45%, 70%, 0.3);
- }
+.reveal .controls a.enabled {
+ color: #8b7c69;
+ text-shadow: 0px 0px 2px rgba(144, 207, 213, 0.3);
+}
/*********************************************
* PROGRESS BAR
*********************************************/
-
.reveal .progress {
- background: rgba(0,0,0,0.2);
+ background: rgba(0, 0, 0, 0.2);
}
- .reveal .progress span {
- background: #26351C;
-
- -webkit-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- -moz-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- -ms-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- -o-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- }
-
+.reveal .progress span {
+ background: #51483d;
+ -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ -ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+}
diff --git a/css/theme/simple.css b/css/theme/simple.css
index 16853be..53d665f 100644
--- a/css/theme/simple.css
+++ b/css/theme/simple.css
@@ -1,150 +1,125 @@
-/**
+@import url(http://fonts.googleapis.com/css?family=News+Cycle:400,700);
+@import url(http://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+/*
* A simple theme for reveal.js presentations, similar
- * to the default theme. The accent color is darkblue;
- * do a find-replace to change it.
+ * to the default theme. The accent color is darkblue.
*
* This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed.
- * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se; so is the theme - beige.css - that this is based off of.
+ * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
-
-/*********************************************
- * FONT-FACE DEFINITIONS
- *********************************************/
-
-@import url(http://fonts.googleapis.com/css?family=News+Cycle:400,700);
-
-
/*********************************************
* GLOBAL STYLES
*********************************************/
-
body {
- font-family: 'Lato', Times, 'Times New Roman', serif;
- font-size: 36px;
- font-weight: 200;
- letter-spacing: -0.02em;
- color: black !important;
-
- background: white;
+ background: white;
}
-::-moz-selection {
- background:rgba(0, 0, 0, 0.99);
- color: white;
-}
-::-webkit-selection {
- background:rgba(0, 0, 0, 0.99);
- color: white;
+.reveal {
+ font-family: "Lato", Times, "Times New Roman", serif;
+ font-size: 36px;
+ font-weight: 200;
+ letter-spacing: -0.02em;
+ color: black;
}
+
::selection {
- background:rgba(0, 0, 0, 0.99);
- color: white;
+ color: white;
+ background: rgba(0, 0, 0, 0.99);
+ text-shadow: none;
}
/*********************************************
* HEADERS
*********************************************/
-
-.reveal h1,
-.reveal h2,
-.reveal h3,
-.reveal h4,
-.reveal h5,
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
.reveal h6 {
- margin: 0 0 20px 0;
- color: black;
- font-family: 'News Cycle', Impact, sans-serif;
- line-height: 0.9em;
-
- text-transform: uppercase;
+ margin: 0 0 20px 0;
+ color: black;
+ font-family: "News Cycle", Impact, sans-serif;
+ line-height: 0.9em;
+ letter-spacing: 0.02em;
+ text-transform: none;
+ text-shadow: none;
}
+.reveal h1 {
+ text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2);
+}
/*********************************************
* LINKS
*********************************************/
-
.reveal a:not(.image) {
- color: darkblue;
- text-decoration: none;
+ color: darkblue;
+ text-decoration: none;
+ -webkit-transition: color .15s ease;
+ -moz-transition: color .15s ease;
+ -ms-transition: color .15s ease;
+ -o-transition: color .15s ease;
+ transition: color .15s ease;
+}
- -webkit-transition: color .15s ease;
- -moz-transition: color .15s ease;
- -ms-transition: color .15s ease;
- -o-transition: color .15s ease;
- transition: color .15s ease;
+.reveal a:not(.image):hover {
+ color: #0000f1;
+ text-shadow: none;
+ border: none;
+ border-radius: 2px;
}
- .reveal a:not(.image):hover {
- text-shadow: none;
- border: none;
- border-radius: 2px;
- }
.reveal .roll span:after {
- color: #fff;
- background: darkblue;
+ color: #fff;
+ background: #00003f;
}
-
/*********************************************
* IMAGES
*********************************************/
-
.reveal section img {
- margin: 30px 0 0 0;
- background: rgba(255,255,255,0.12);
- border: 4px solid #eee;
-
- -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
- -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
-
- -webkit-transition: all .2s linear;
- -moz-transition: all .2s linear;
- -ms-transition: all .2s linear;
- -o-transition: all .2s linear;
- transition: all .2s linear;
+ margin: 15px;
+ background: rgba(255, 255, 255, 0.12);
+ border: 4px solid black;
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+ -webkit-transition: all .2s linear;
+ -moz-transition: all .2s linear;
+ -ms-transition: all .2s linear;
+ -o-transition: all .2s linear;
+ transition: all .2s linear;
}
- .reveal a:hover img {
- background: rgba(255,255,255,0.2);
- border-color: darkblue;
-
- -webkit-box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
- -moz-box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
- box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
- }
-
+.reveal a:hover img {
+ background: rgba(255, 255, 255, 0.2);
+ border-color: darkblue;
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
-
.reveal .controls a {
- color: black;
+ color: black;
}
- .reveal .controls a.enabled {
- color: darkblue;
- opacity: 1;
- text-shadow: 0px 0px 2px hsla(185, 45%, 70%, 0.3);
- }
+.reveal .controls a.enabled {
+ color: #0000f1;
+ text-shadow: 0px 0px 2px rgba(144, 207, 213, 0.3);
+}
/*********************************************
* PROGRESS BAR
*********************************************/
-
.reveal .progress {
- background: rgba(0,0,0,0.2);
+ background: rgba(0, 0, 0, 0.2);
}
- .reveal .progress span {
- background: darkblue;
-
- -webkit-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- -moz-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- -ms-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- -o-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- }
-
+.reveal .progress span {
+ background: darkblue;
+ -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ -ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+}
diff --git a/css/theme/sky.css b/css/theme/sky.css
index 2f2bee2..f3fb04f 100644
--- a/css/theme/sky.css
+++ b/css/theme/sky.css
@@ -1,165 +1,129 @@
-/**
- * Sky theme for reveal.js presentations.
+@import url(http://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic);
+@import url(http://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700);
+/*
+ * Sky theme for reveal.js.
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
-
-/*********************************************
- * FONT-FACE DEFINITIONS
- *********************************************/
-
-@import url(http://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic);
-@import url(http://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700);
-
-
-
/*********************************************
* GLOBAL STYLES
*********************************************/
-
body {
- font-family: 'Open Sans', sans-serif;
- font-size: 36px;
- font-weight: 200;
- letter-spacing: -0.02em;
- color: #333;
-
- background: #f7fbfc;
- background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPHJhZGlhbEdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iNzUlIj4KICAgIDxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiNmN2ZiZmMiIHN0b3Atb3BhY2l0eT0iMSIvPgogICAgPHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWRkOWU0IiBzdG9wLW9wYWNpdHk9IjEiLz4KICA8L3JhZGlhbEdyYWRpZW50PgogIDxyZWN0IHg9Ii01MCIgeT0iLTUwIiB3aWR0aD0iMTAxIiBoZWlnaHQ9IjEwMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
- background: -moz-radial-gradient(center, ellipse cover, #f7fbfc 0%, #add9e4 100%);
- background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,#f7fbfc), color-stop(100%,#add9e4));
- background: -webkit-radial-gradient(center, ellipse cover, #f7fbfc 0%,#add9e4 100%);
- background: -o-radial-gradient(center, ellipse cover, #f7fbfc 0%,#add9e4 100%);
- background: -ms-radial-gradient(center, ellipse cover, #f7fbfc 0%,#add9e4 100%);
- background: radial-gradient(ellipse at center, #f7fbfc 0%,#add9e4 100%);
+ background: #f7fbfc;
+ background: -moz-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%);
+ background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #f7fbfc), color-stop(100%, #add9e4));
+ background: -webkit-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%);
+ background: -o-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%);
+ background: -ms-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%);
+ background: radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%);
}
-::-moz-selection {
- background:rgba(79, 64, 28, 0.99);
- color: white;
-}
-::-webkit-selection {
- background:rgba(79, 64, 28, 0.99);
- color: white;
+.reveal {
+ font-family: "Open Sans", sans-serif;
+ font-size: 36px;
+ font-weight: 200;
+ letter-spacing: -0.02em;
+ color: #333333;
}
+
::selection {
- background:rgba(79, 64, 28, 0.99);
- color: white;
+ color: white;
+ background: #134674;
+ text-shadow: none;
}
-
/*********************************************
* HEADERS
*********************************************/
-
-.reveal h1,
-.reveal h2,
-.reveal h3,
-.reveal h4,
-.reveal h5,
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
.reveal h6 {
- margin: 0 0 20px 0;
- color: #333;
- font-family: 'Quicksand', sans-serif;
- line-height: 0.9em;
- letter-spacing: -0.08em;
-
- text-transform: uppercase;
+ margin: 0 0 20px 0;
+ color: #333333;
+ font-family: "Quicksand", sans-serif;
+ line-height: 0.9em;
+ letter-spacing: -0.08em;
+ text-transform: uppercase;
+ text-shadow: none;
}
+.reveal h1 {
+ text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2);
+}
/*********************************************
* LINKS
*********************************************/
-
.reveal a:not(.image) {
- color: #3b759e;
- text-decoration: none;
+ color: #3b759e;
+ text-decoration: none;
+ -webkit-transition: color .15s ease;
+ -moz-transition: color .15s ease;
+ -ms-transition: color .15s ease;
+ -o-transition: color .15s ease;
+ transition: color .15s ease;
+}
- -webkit-transition: color .15s ease;
- -moz-transition: color .15s ease;
- -ms-transition: color .15s ease;
- -o-transition: color .15s ease;
- transition: color .15s ease;
+.reveal a:not(.image):hover {
+ color: #74a7cb;
+ text-shadow: none;
+ border: none;
+ border-radius: 2px;
}
- .reveal a:not(.image):hover {
- text-shadow: none;
- border: none;
- border-radius: 2px;
- }
.reveal .roll span:after {
- color: #fff;
- background: #3b759e;
+ color: #fff;
+ background: #264c66;
}
-
/*********************************************
- * MISC
+ * IMAGES
*********************************************/
-
.reveal section img {
- margin: 30px 0 0 0;
- background: rgba(255,255,255,0.12);
- border: 1px solid #ddd;
-
- -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
- -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
-
- -webkit-transition: all .2s linear;
- -moz-transition: all .2s linear;
- -ms-transition: all .2s linear;
- -o-transition: all .2s linear;
- transition: all .2s linear;
-}
-
- .reveal a:hover img {
- background: rgba(255,255,255,0.2);
- border-color: #3b759e;
-
- -webkit-box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
- -moz-box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
- box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
- }
-
-.reveal blockquote {
- background: rgba(255, 255, 255, 0.4);
+ margin: 15px;
+ background: rgba(255, 255, 255, 0.12);
+ border: 4px solid #333333;
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+ -webkit-transition: all .2s linear;
+ -moz-transition: all .2s linear;
+ -ms-transition: all .2s linear;
+ -o-transition: all .2s linear;
+ transition: all .2s linear;
}
-.reveal p {
- margin-bottom: 20px;
+.reveal a:hover img {
+ background: rgba(255, 255, 255, 0.2);
+ border-color: #3b759e;
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
}
-
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
-
.reveal .controls a {
- color: #fff;
+ color: #333333;
}
- .reveal .controls a.enabled {
- color: #3b759e;
- text-shadow: 0px 0px 2px hsla(185, 45%, 70%, 0.3);
- }
+.reveal .controls a.enabled {
+ color: #74a7cb;
+ text-shadow: 0px 0px 2px rgba(144, 207, 213, 0.3);
+}
/*********************************************
* PROGRESS BAR
*********************************************/
-
.reveal .progress {
- background: rgba(0,0,0,0.2);
+ background: rgba(0, 0, 0, 0.2);
}
- .reveal .progress span {
- background: #3b759e;
-
- -webkit-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- -moz-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- -ms-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- -o-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
- }
-
+.reveal .progress span {
+ background: #3b759e;
+ -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ -ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+ transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+}
diff --git a/css/theme/source/beige.scss b/css/theme/source/beige.scss
new file mode 100644
index 0000000..177216f
--- /dev/null
+++ b/css/theme/source/beige.scss
@@ -0,0 +1,50 @@
+/**
+ * Beige theme for reveal.js.
+ *
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+
+
+// Default mixins and settings -----------------
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+
+// Include theme-specific fonts
+@font-face {
+ font-family: 'League Gothic';
+ src: url('../../lib/font/league_gothic-webfont.eot');
+ src: url('../../lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'),
+ url('../../lib/font/league_gothic-webfont.woff') format('woff'),
+ url('../../lib/font/league_gothic-webfont.ttf') format('truetype'),
+ url('../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg');
+
+ font-weight: normal;
+ font-style: normal;
+}
+
+@import url(http://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+
+
+// Override theme settings (see ../template/settings.scss)
+$mainColor: #333;
+$headingColor: #333;
+$headingTextShadow: none;
+$backgroundColor: #f7f3de;
+$linkColor: #8b743d;
+$linkColorHover: lighten( $linkColor, 20% );
+$selectionBackgroundColor: rgba(79, 64, 28, 0.99);
+$heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15);
+
+// Background generator
+@mixin bodyBackground() {
+ @include radial-gradient( rgba(247,242,211,1), rgba(255,255,255,1) );
+}
+
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// --------------------------------------------- \ No newline at end of file
diff --git a/css/theme/source/default.scss b/css/theme/source/default.scss
new file mode 100644
index 0000000..da9b268
--- /dev/null
+++ b/css/theme/source/default.scss
@@ -0,0 +1,42 @@
+/**
+ * Default theme for reveal.js.
+ *
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+
+
+// Default mixins and settings -----------------
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+
+// Include theme-specific fonts
+@font-face {
+ font-family: 'League Gothic';
+ src: url('../../lib/font/league_gothic-webfont.eot');
+ src: url('../../lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'),
+ url('../../lib/font/league_gothic-webfont.woff') format('woff'),
+ url('../../lib/font/league_gothic-webfont.ttf') format('truetype'),
+ url('../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg');
+
+ font-weight: normal;
+ font-style: normal;
+}
+
+@import url(http://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+
+// Override theme settings (see ../template/settings.scss)
+$heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15);
+
+// Background generator
+@mixin bodyBackground() {
+ @include radial-gradient( rgba(28,30,32,1), rgba(85,90,95,1) );
+}
+
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// --------------------------------------------- \ No newline at end of file
diff --git a/css/theme/source/serif.scss b/css/theme/source/serif.scss
new file mode 100644
index 0000000..dc0935f
--- /dev/null
+++ b/css/theme/source/serif.scss
@@ -0,0 +1,33 @@
+/**
+ * A simple theme for reveal.js presentations, similar
+ * to the default theme. The accent color is darkblue.
+ *
+ * This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed.
+ * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se; so is the theme - beige.css - that this is based off of.
+ */
+
+
+// Default mixins and settings -----------------
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+
+// Override theme settings (see ../template/settings.scss)
+$mainFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
+$mainColor: #000;
+$headingFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
+$headingColor: #383D3D;
+$headingTextShadow: none;
+$headingTextTransform: none;
+$backgroundColor: #F0F1EB;
+$linkColor: #51483D;
+$linkColorHover: lighten( $linkColor, 20% );
+$selectionBackgroundColor: #26351C;
+
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// --------------------------------------------- \ No newline at end of file
diff --git a/css/theme/source/simple.scss b/css/theme/source/simple.scss
new file mode 100644
index 0000000..713ab44
--- /dev/null
+++ b/css/theme/source/simple.scss
@@ -0,0 +1,38 @@
+/**
+ * A simple theme for reveal.js presentations, similar
+ * to the default theme. The accent color is darkblue.
+ *
+ * This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed.
+ * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+
+
+// Default mixins and settings -----------------
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+
+// Include theme-specific fonts
+@import url(http://fonts.googleapis.com/css?family=News+Cycle:400,700);
+@import url(http://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+
+
+// Override theme settings (see ../template/settings.scss)
+$mainFont: 'Lato', Times, 'Times New Roman', serif;
+$mainColor: #000;
+$headingFont: 'News Cycle', Impact, sans-serif;
+$headingColor: #000;
+$headingTextShadow: none;
+$headingTextTransform: none;
+$backgroundColor: #fff;
+$linkColor: #00008B;
+$linkColorHover: lighten( $linkColor, 20% );
+$selectionBackgroundColor: rgba(0, 0, 0, 0.99);
+
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// --------------------------------------------- \ No newline at end of file
diff --git a/css/theme/source/sky.scss b/css/theme/source/sky.scss
new file mode 100644
index 0000000..77fd230
--- /dev/null
+++ b/css/theme/source/sky.scss
@@ -0,0 +1,41 @@
+/**
+ * Sky theme for reveal.js.
+ *
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+
+
+// Default mixins and settings -----------------
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+
+// Include theme-specific fonts
+@import url(http://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic);
+@import url(http://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700);
+
+
+// Override theme settings (see ../template/settings.scss)
+$mainFont: 'Open Sans', sans-serif;
+$mainColor: #333;
+$headingFont: 'Quicksand', sans-serif;
+$headingColor: #333;
+$headingLetterSpacing: -0.08em;
+$headingTextShadow: none;
+$backgroundColor: #f7fbfc;
+$linkColor: #3b759e;
+$linkColorHover: lighten( $linkColor, 20% );
+$selectionBackgroundColor: #134674;
+
+// Background generator
+@mixin bodyBackground() {
+ @include radial-gradient( #add9e4, #f7fbfc );
+}
+
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// --------------------------------------------- \ No newline at end of file
diff --git a/css/theme/template/mixins.scss b/css/theme/template/mixins.scss
new file mode 100644
index 0000000..bc82419
--- /dev/null
+++ b/css/theme/template/mixins.scss
@@ -0,0 +1,29 @@
+@mixin vertical-gradient( $top, $bottom ) {
+ background: $top;
+ background: -moz-linear-gradient( top, $top 0%, $bottom 100% );
+ background: -webkit-gradient( linear, left top, left bottom, color-stop(0%,$top), color-stop(100%,$bottom) );
+ background: -webkit-linear-gradient( top, $top 0%, $bottom 100% );
+ background: -o-linear-gradient( top, $top 0%, $bottom 100% );
+ background: -ms-linear-gradient( top, $top 0%, $bottom 100% );
+ background: linear-gradient( top, $top 0%, $bottom 100% );
+}
+
+@mixin horizontal-gradient( $top, $bottom ) {
+ background: $top;
+ background: -moz-linear-gradient( left, $top 0%, $bottom 100% );
+ background: -webkit-gradient( linear, left top, right top, color-stop(0%,$top), color-stop(100%,$bottom) );
+ background: -webkit-linear-gradient( left, $top 0%, $bottom 100% );
+ background: -o-linear-gradient( left, $top 0%, $bottom 100% );
+ background: -ms-linear-gradient( left, $top 0%, $bottom 100% );
+ background: linear-gradient( left, $top 0%, $bottom 100% );
+}
+
+@mixin radial-gradient( $outer, $inner, $type: circle ) {
+ background: $inner;
+ background: -moz-radial-gradient( center, $type cover, $inner 0%, $outer 100% );
+ background: -webkit-gradient( radial, center center, 0px, center center, 100%, color-stop(0%,$inner), color-stop(100%,$outer) );
+ background: -webkit-radial-gradient( center, $type cover, $inner 0%, $outer 100% );
+ background: -o-radial-gradient( center, $type cover, $inner 0%, $outer 100% );
+ background: -ms-radial-gradient( center, $type cover, $inner 0%, $outer 100% );
+ background: radial-gradient( center, $type cover, $inner 0%, $outer 100% );
+} \ No newline at end of file
diff --git a/css/theme/template/settings.scss b/css/theme/template/settings.scss
new file mode 100644
index 0000000..bc9f138
--- /dev/null
+++ b/css/theme/template/settings.scss
@@ -0,0 +1,33 @@
+// Base settings for all themes that can optionally be
+// overridden by the super-theme
+
+// Background of the presentation
+$backgroundColor: #2b2b2b;
+
+// Primary/body text
+$mainFont: 'Lato', Times, 'Times New Roman', serif;
+$mainFontSize: 36px;
+$mainColor: #eee;
+
+// Headings
+$headingFont: 'League Gothic', Impact, sans-serif;
+$headingColor: #eee;
+$headingLineHeight: 0.9em;
+$headingLetterSpacing: 0.02em;
+$headingTextTransform: uppercase;
+$headingTextShadow: 0px 0px 6px rgba(0,0,0,0.2);
+$heading1TextShadow: $headingTextShadow;
+
+// Links and actions
+$linkColor: #13DAEC;
+$linkColorHover: lighten( $linkColor, 20% );
+
+// Text selection
+$selectionBackgroundColor: #FF5E99;
+$selectionColor: #fff;
+
+// Generates the presentation background, can be overridden
+// to return a background image or gradient
+@mixin bodyBackground() {
+ background: $backgroundColor;
+} \ No newline at end of file
diff --git a/css/theme/template/theme.scss b/css/theme/template/theme.scss
new file mode 100644
index 0000000..353a98c
--- /dev/null
+++ b/css/theme/template/theme.scss
@@ -0,0 +1,135 @@
+// Base theme template for reveal.js
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+
+body {
+ @include bodyBackground();
+}
+
+.reveal {
+ font-family: $mainFont;
+ font-size: $mainFontSize;
+ font-weight: 200;
+ letter-spacing: -0.02em;
+ color: $mainColor;
+}
+
+::selection {
+ color: $selectionColor;
+ background: $selectionBackgroundColor;
+ text-shadow: none;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+ margin: 0 0 20px 0;
+ color: $headingColor;
+
+ font-family: $headingFont;
+ line-height: $headingLineHeight;
+ letter-spacing: $headingLetterSpacing;
+
+ text-transform: $headingTextTransform;
+ text-shadow: $headingTextShadow;
+}
+
+.reveal h1 {
+ text-shadow: $heading1TextShadow;
+}
+
+
+/*********************************************
+ * LINKS
+ *********************************************/
+
+.reveal a:not(.image) {
+ color: $linkColor;
+ text-decoration: none;
+
+ -webkit-transition: color .15s ease;
+ -moz-transition: color .15s ease;
+ -ms-transition: color .15s ease;
+ -o-transition: color .15s ease;
+ transition: color .15s ease;
+}
+ .reveal a:not(.image):hover {
+ color: $linkColorHover;
+
+ text-shadow: none;
+ border: none;
+ border-radius: 2px;
+ }
+
+.reveal .roll span:after {
+ color: #fff;
+ background: darken( $linkColor, 15% );
+}
+
+
+/*********************************************
+ * IMAGES
+ *********************************************/
+
+.reveal section img {
+ margin: 15px;
+ background: rgba(255,255,255,0.12);
+ border: 4px solid $mainColor;
+
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+
+ -webkit-transition: all .2s linear;
+ -moz-transition: all .2s linear;
+ -ms-transition: all .2s linear;
+ -o-transition: all .2s linear;
+ transition: all .2s linear;
+}
+
+ .reveal a:hover img {
+ background: rgba(255,255,255,0.2);
+ border-color: $linkColor;
+
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+ }
+
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+
+.reveal .controls a {
+ color: $mainColor;
+}
+ .reveal .controls a.enabled {
+ color: $linkColorHover;
+ text-shadow: 0px 0px 2px hsla(185, 45%, 70%, 0.3);
+ }
+
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+
+.reveal .progress {
+ background: rgba(0,0,0,0.2);
+}
+ .reveal .progress span {
+ background: $linkColor;
+
+ -webkit-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
+ -moz-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
+ -ms-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
+ -o-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
+ transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
+ }
+
+
diff --git a/index.html b/index.html
index 5dba9a4..2becf4f 100644
--- a/index.html
+++ b/index.html
@@ -12,8 +12,6 @@
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
- <link href='http://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
-
<link rel="stylesheet" href="css/reveal.css">
<link rel="stylesheet" href="css/theme/default.css" id="theme">
@@ -151,7 +149,9 @@
<a href="?transition=cube#/transitions">Cube</a> -
<a href="?transition=page#/transitions">Page</a> -
<a href="?transition=concave#/transitions">Concave</a> -
+ <a href="?transition=zoom#/transitions">Zoom</a> -
<a href="?transition=linear#/transitions">Linear</a> -
+ <a href="?transition=none#/transitions">None</a> -
<a href="?#/transitions">Default</a>
</p>
</section>
@@ -326,7 +326,7 @@ function linkify( selector ) {
<script src="js/reveal.min.js"></script>
<script>
-
+
// Full list of configuration options available here:
// https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
@@ -335,7 +335,7 @@ function linkify( selector ) {
history: true,
theme: Reveal.getQueryHash().theme, // available themes are in /css/theme
- transition: Reveal.getQueryHash().transition || 'default', // default/cube/page/concave/linear(2d)
+ transition: Reveal.getQueryHash().transition || 'default', // default/cube/page/concave/zoom/linear/none
// Optional libraries used to extend on reveal.js
dependencies: [
@@ -348,7 +348,7 @@ function linkify( selector ) {
{ src: 'plugin/speakernotes/client.js', async: true, condition: function() { return window.location.host === 'localhost:1947'; } }
]
});
-
+
</script>
</body>
diff --git a/js/reveal.js b/js/reveal.js
index e95092e..b08580b 100644
--- a/js/reveal.js
+++ b/js/reveal.js
@@ -1,5 +1,5 @@
/*!
- * reveal.js 2.1 r30
+ * reveal.js 2.1 r34
* http://lab.hakim.se/reveal-js
* MIT licensed
*
@@ -33,7 +33,8 @@ var Reveal = (function(){
loop: false,
// Number of milliseconds between automatically proceeding to the
- // next slide, disabled when set to 0
+ // next slide, disabled when set to 0, this value can be overwritten
+ // by using a data-autoslide attribute on your slides
autoSlide: 0,
// Enable slide navigation via mouse wheel
@@ -46,12 +47,16 @@ var Reveal = (function(){
theme: null,
// Transition style
- transition: 'default', // default/cube/page/concave/linear(2d),
+ transition: 'default', // default/cube/page/concave/zoom/linear/none
// Script dependencies to load
dependencies: []
},
+ // Stores if the next slide should be shown automatically
+ // after n milliseconds
+ autoSlide = config.autoSlide,
+
// The horizontal and verical index of the currently active slide
indexh = 0,
indexv = 0,
@@ -97,10 +102,9 @@ var Reveal = (function(){
startSpan: 0,
startCount: 0,
handled: false,
- threshold: 40
+ threshold: 80
};
-
/**
* Starts up the presentation if the client is capable.
*/
@@ -116,9 +120,6 @@ var Reveal = (function(){
// Copy options over to our config object
extend( config, options );
- // Make sure we've got all the DOM elements we need
- setupDOM();
-
// Hide the address bar in mobile browsers
hideAddressBar();
@@ -252,6 +253,9 @@ 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();
+
// Subscribe to input
addEventListeners();
@@ -263,6 +267,13 @@ var Reveal = (function(){
// Start auto-sliding if it's enabled
cueAutoSlide();
+
+ // Notify listeners that the presentation is ready
+ dispatchEvent( 'ready', {
+ 'indexh': indexh,
+ 'indexv': indexv,
+ 'currentSlide': currentSlide
+ } );
}
/**
@@ -281,18 +292,6 @@ var Reveal = (function(){
dom.progress.style.display = 'block';
}
- // Load the theme in the config, if it's not already loaded
- if( config.theme && dom.theme ) {
- var themeURL = dom.theme.getAttribute( 'href' );
- var themeFinder = /[^\/]*?(?=\.css)/;
- var themeName = themeURL.match(themeFinder)[0];
-
- if( config.theme !== themeName ) {
- themeURL = themeURL.replace(themeFinder, config.theme);
- dom.theme.setAttribute( 'href', themeURL );
- }
- }
-
if( config.transition !== 'default' ) {
dom.wrapper.classList.add( config.transition );
}
@@ -302,12 +301,27 @@ var Reveal = (function(){
document.addEventListener( 'mousewheel', onDocumentMouseScroll, false );
}
+ // 3D links
if( config.rollingLinks ) {
- // Add some 3D magic to our anchors
linkify();
}
+
+ // Load the theme in the config, if it's not already loaded
+ if( config.theme && dom.theme ) {
+ var themeURL = dom.theme.getAttribute( 'href' );
+ var themeFinder = /[^\/]*?(?=\.css)/;
+ var themeName = themeURL.match(themeFinder)[0];
+
+ if( config.theme !== themeName ) {
+ themeURL = themeURL.replace(themeFinder, config.theme);
+ dom.theme.setAttribute( 'href', themeURL );
+ }
+ }
}
+ /**
+ * Binds all event listeners.
+ */
function addEventListeners() {
document.addEventListener( 'touchstart', onDocumentTouchStart, false );
document.addEventListener( 'touchmove', onDocumentTouchMove, false );
@@ -326,6 +340,9 @@ var Reveal = (function(){
}
}
+ /**
+ * Unbinds all event listeners.
+ */
function removeEventListeners() {
document.removeEventListener( 'keydown', onDocumentKeyDown, false );
document.removeEventListener( 'touchstart', onDocumentTouchStart, false );
@@ -399,206 +416,6 @@ var Reveal = (function(){
extend( event, properties );
dom.wrapper.dispatchEvent( event );
}
-
- /**
- * Handler for the document level 'keydown' event.
- *
- * @param {Object} event
- */
- function onDocumentKeyDown( event ) {
- // Disregard the event if the target is editable or a
- // modifier is present
- if ( document.querySelector( ':focus' ) !== null || event.shiftKey || event.altKey || event.ctrlKey || event.metaKey ) return;
-
- var triggered = true;
-
- switch( event.keyCode ) {
- // p, page up
- case 80: case 33: navigatePrev(); break;
- // n, page down
- case 78: case 34: navigateNext(); break;
- // h, left
- case 72: case 37: navigateLeft(); break;
- // l, right
- case 76: case 39: navigateRight(); break;
- // k, up
- case 75: case 38: navigateUp(); break;
- // j, down
- case 74: case 40: navigateDown(); break;
- // home
- case 36: navigateTo( 0 ); break;
- // end
- case 35: navigateTo( Number.MAX_VALUE ); break;
- // space
- case 32: isOverviewActive() ? deactivateOverview() : navigateNext(); break;
- // return
- case 13: isOverviewActive() ? deactivateOverview() : triggered = false; break;
- // b, period
- case 66: case 190: togglePause(); break;
- // f
- case 70: enterFullscreen(); break;
- default:
- triggered = false;
- }
-
- // If the input resulted in a triggered action we should prevent
- // the browsers default behavior
- if( triggered ) {
- event.preventDefault();
- }
- else if ( event.keyCode === 27 && supports3DTransforms ) {
- toggleOverview();
-
- event.preventDefault();
- }
-
- // If auto-sliding is enabled we need to cue up
- // another timeout
- cueAutoSlide();
-
- }
-
- /**
- * Handler for the document level 'touchstart' event,
- * 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;
-
- // If there's two touches we need to memorize the distance
- // between those two points to detect pinching
- if( event.touches.length === 2 ) {
- touch.startSpan = distanceBetween( {
- x: event.touches[1].clientX,
- y: event.touches[1].clientY
- }, {
- x: touch.startX,
- 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;
- var currentY = event.touches[0].clientY;
-
- // If the touch started off with two points and still has
- // two active touches; test for the pinch gesture
- if( event.touches.length === 2 && touch.startCount === 2 ) {
-
- // The current distance in pixels between the two touch points
- var currentSpan = distanceBetween( {
- x: event.touches[1].clientX,
- y: event.touches[1].clientY
- }, {
- x: touch.startX,
- y: touch.startY
- } );
-
- // If the span is larger than the desire amount we've got
- // ourselves a pinch
- if( Math.abs( touch.startSpan - currentSpan ) > touch.threshold ) {
- touch.handled = true;
-
- if( currentSpan < touch.startSpan ) {
- activateOverview();
- }
- else {
- deactivateOverview();
- }
- }
-
- }
- // There was only one touch point, look for a swipe
- else if( event.touches.length === 1 ) {
- var deltaX = currentX - touch.startX,
- deltaY = currentY - touch.startY;
-
- if( deltaX > touch.threshold && Math.abs( deltaX ) > Math.abs( deltaY ) ) {
- touch.handled = true;
- navigateLeft();
- }
- else if( deltaX < -touch.threshold && Math.abs( deltaX ) > Math.abs( deltaY ) ) {
- touch.handled = true;
- navigateRight();
- }
- else if( deltaY > touch.threshold ) {
- touch.handled = true;
- navigateUp();
- }
- else if( deltaY < -touch.threshold ) {
- touch.handled = true;
- navigateDown();
- }
- }
-
- event.preventDefault();
- }
- // There's a bug with swiping on some Android devices unless
- // the default action is always prevented
- 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 ){
- clearTimeout( mouseWheelTimeout );
-
- mouseWheelTimeout = setTimeout( function() {
- var delta = event.detail || -event.wheelDelta;
- if( delta > 0 ) {
- navigateNext();
- }
- else {
- navigatePrev();
- }
- }, 100 );
- }
-
- /**
- * Handler for the window level 'hashchange' event.
- *
- * @param {Object} event
- */
- function onWindowHashChange( event ) {
- readURL();
- }
-
- /**
- * 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() ) {
- event.preventDefault();
-
- deactivateOverview();
-
- indexh = this.getAttribute( 'data-index-h' );
- indexv = this.getAttribute( 'data-index-v' );
-
- slide();
- }
- }
/**
* Wrap all links in 3D goodness.
@@ -735,6 +552,26 @@ var Reveal = (function(){
}
/**
+ * Handling the fullscreen functionality via the fullscreen API
+ *
+ * @see http://fullscreen.spec.whatwg.org/
+ * @see https://developer.mozilla.org/en-US/docs/DOM/Using_fullscreen_mode
+ */
+ function enterFullscreen() {
+ var element = document.body;
+
+ // Check which implementation is available
+ var requestMethod = element.requestFullScreen ||
+ element.webkitRequestFullScreen ||
+ element.mozRequestFullScreen ||
+ element.msRequestFullScreen;
+
+ if( requestMethod ) {
+ requestMethod.apply( element );
+ }
+ }
+
+ /**
* Enters the paused mode which fades everything on screen to
* black.
*/
@@ -767,92 +604,6 @@ var Reveal = (function(){
function isPaused() {
return dom.wrapper.classList.contains( 'paused' );
}
-
- /**
- * Updates one dimension of slides by showing the slide
- * with the specified index.
- *
- * @param {String} selector A CSS selector that will fetch
- * the group of slides we are working with
- * @param {Number} index The index of the slide that should be
- * shown
- *
- * @return {Number} The index of the slide that is now shown,
- * might differ from the passed in index if it was out of
- * bounds.
- */
- function updateSlides( selector, index ) {
-
- // Select all slides and convert the NodeList result to
- // an array
- var slides = Array.prototype.slice.call( document.querySelectorAll( selector ) ),
- slidesLength = slides.length;
-
- if( slidesLength ) {
-
- // Should the index loop?
- if( config.loop ) {
- index %= slidesLength;
-
- if( index < 0 ) {
- index = slidesLength + index;
- }
- }
-
- // Enforce max and minimum index bounds
- index = Math.max( Math.min( index, slidesLength - 1 ), 0 );
-
- for( var i = 0; i < slidesLength; i++ ) {
- var slide = slides[i];
-
- // Optimization; hide all slides that are three or more steps
- // away from the present slide
- if( isOverviewActive() === false ) {
- // The distance loops so that it measures 1 between the first
- // and last slides
- var distance = Math.abs( ( index - i ) % ( slidesLength - 3 ) ) || 0;
-
- slide.style.display = distance > 3 ? 'none' : 'block';
- }
-
- slides[i].classList.remove( 'past' );
- slides[i].classList.remove( 'present' );
- slides[i].classList.remove( 'future' );
-
- if( i < index ) {
- // Any element previous to index is given the 'past' class
- slides[i].classList.add( 'past' );
- }
- else if( i > index ) {
- // Any element subsequent to index is given the 'future' class
- slides[i].classList.add( 'future' );
- }
-
- // If this element contains vertical slides
- if( slide.querySelector( 'section' ) ) {
- slides[i].classList.add( 'stack' );
- }
- }
-
- // Mark the current slide as present
- slides[index].classList.add( 'present' );
-
- // If this slide has a state associated with it, add it
- // onto the current state of the deck
- var slideState = slides[index].getAttribute( 'data-state' );
- if( slideState ) {
- state = state.concat( slideState.split( ' ' ) );
- }
- }
- else {
- // Since there are no slides we can't be anywhere beyond the
- // zeroth index
- index = 0;
- }
-
- return index;
-
- }
/**
* Steps from the current point in the presentation to the
@@ -913,6 +664,8 @@ var Reveal = (function(){
updateControls();
+ // Update the URL hash after a delay since updating it mid-transition
+ // is likely to cause visual lag
clearTimeout( writeURLTimeout );
writeURLTimeout = setTimeout( writeURL, 1500 );
@@ -950,25 +703,120 @@ var Reveal = (function(){
}
/**
- * Updates the state and link pointers of the controls.
+ * Updates one dimension of slides by showing the slide
+ * with the specified index.
+ *
+ * @param {String} selector A CSS selector that will fetch
+ * the group of slides we are working with
+ * @param {Number} index The index of the slide that should be
+ * shown
+ *
+ * @return {Number} The index of the slide that is now shown,
+ * might differ from the passed in index if it was out of
+ * bounds.
*/
- function updateControls() {
- if ( !config.controls || !dom.controls ) {
- return;
+ function updateSlides( selector, index ) {
+ // Select all slides and convert the NodeList result to
+ // an array
+ var slides = Array.prototype.slice.call( document.querySelectorAll( selector ) ),
+ slidesLength = slides.length;
+
+ if( slidesLength ) {
+
+ // Should the index loop?
+ if( config.loop ) {
+ index %= slidesLength;
+
+ if( index < 0 ) {
+ index = slidesLength + index;
+ }
+ }
+
+ // Enforce max and minimum index bounds
+ index = Math.max( Math.min( index, slidesLength - 1 ), 0 );
+
+ for( var i = 0; i < slidesLength; i++ ) {
+ var element = slides[i];
+
+ // Optimization; hide all slides that are three or more steps
+ // away from the present slide
+ if( isOverviewActive() === false ) {
+ // The distance loops so that it measures 1 between the first
+ // and last slides
+ var distance = Math.abs( ( index - i ) % ( slidesLength - 3 ) ) || 0;
+
+ element.style.display = distance > 3 ? 'none' : 'block';
+ }
+
+ slides[i].classList.remove( 'past' );
+ slides[i].classList.remove( 'present' );
+ slides[i].classList.remove( 'future' );
+
+ if( i < index ) {
+ // Any element previous to index is given the 'past' class
+ slides[i].classList.add( 'past' );
+ }
+ else if( i > index ) {
+ // Any element subsequent to index is given the 'future' class
+ slides[i].classList.add( 'future' );
+ }
+
+ // If this element contains vertical slides
+ if( element.querySelector( 'section' ) ) {
+ slides[i].classList.add( 'stack' );
+ }
+ }
+
+ // Mark the current slide as present
+ slides[index].classList.add( 'present' );
+
+ // If this slide has a state associated with it, add it
+ // onto the current state of the deck
+ var slideState = slides[index].getAttribute( 'data-state' );
+ if( slideState ) {
+ state = state.concat( slideState.split( ' ' ) );
+ }
+
+ // If this slide has a data-autoslide attribtue associated use this as
+ // autoSlide value otherwise use the global configured time
+ var slideAutoSlide = slides[index].getAttribute( 'data-autoslide' );
+ if( slideAutoSlide ) {
+ autoSlide = parseInt( slideAutoSlide );
+ } else {
+ autoSlide = config.autoSlide
+ }
+
+ }
+ else {
+ // Since there are no slides we can't be anywhere beyond the
+ // zeroth index
+ index = 0;
}
- var routes = availableRoutes();
+ return index;
+
+ }
- // Remove the 'enabled' class from all directions
- [ dom.controlsLeft, dom.controlsRight, dom.controlsUp, dom.controlsDown ].forEach( function( node ) {
- node.classList.remove( 'enabled' );
- } );
+ /**
+ * Updates the state and link pointers of the controls.
+ */
+ function updateControls() {
+ if ( config.controls && dom.controls ) {
+
+ var routes = availableRoutes();
+
+ // Remove the 'enabled' class from all directions
+ [ dom.controlsLeft, dom.controlsRight, dom.controlsUp, dom.controlsDown ].forEach( function( node ) {
+ node.classList.remove( 'enabled' );
+ } );
+
+ // Add the 'enabled' class to the available routes
+ if( routes.left ) dom.controlsLeft.classList.add( 'enabled' );
+ if( routes.right ) dom.controlsRight.classList.add( 'enabled' );
+ if( routes.up ) dom.controlsUp.classList.add( 'enabled' );
+ if( routes.down ) dom.controlsDown.classList.add( 'enabled' );
- // Add the 'enabled' class to the available routes
- if( routes.left ) dom.controlsLeft.classList.add( 'enabled' );
- if( routes.right ) dom.controlsRight.classList.add( 'enabled' );
- if( routes.up ) dom.controlsUp.classList.add( 'enabled' );
- if( routes.down ) dom.controlsDown.classList.add( 'enabled' );
+ }
}
/**
@@ -1002,16 +850,16 @@ var Reveal = (function(){
// assume that this is a named link
if( isNaN( parseInt( bits[0], 10 ) ) && name.length ) {
// Find the slide with the specified name
- var slide = document.querySelector( '#' + name );
+ var element = document.querySelector( '#' + name );
- if( slide ) {
+ if( element ) {
// Find the position of the named slide and navigate to it
- var indices = Reveal.getIndices( slide );
- navigateTo( indices.h, indices.v );
+ var indices = Reveal.getIndices( element );
+ slide( indices.h, indices.v );
}
// If the slide doesn't exist, navigate to the current slide
else {
- navigateTo( indexh, indexv );
+ slide( indexh, indexv );
}
}
else {
@@ -1019,7 +867,7 @@ var Reveal = (function(){
var h = parseInt( bits[0], 10 ) || 0,
v = parseInt( bits[1], 10 ) || 0;
- navigateTo( h, v );
+ slide( h, v );
}
}
@@ -1041,6 +889,41 @@ var Reveal = (function(){
}
/**
+ * Retrieves the h/v location of the current, or specified,
+ * slide.
+ *
+ * @param {HTMLElement} slide If specified, the returned
+ * index will be for this slide rather than the currently
+ * active one
+ *
+ * @return {Object} { h: <int>, v: <int> }
+ */
+ function getIndices( slide ) {
+ // By default, return the current indices
+ var h = indexh,
+ v = indexv;
+
+ // If a slide is specified, return the indices of that slide
+ if( slide ) {
+ var isVertical = !!slide.parentNode.nodeName.match( /section/gi );
+ var slideh = isVertical ? slide.parentNode : slide;
+
+ // Select all horizontal slides
+ var horizontalSlides = Array.prototype.slice.call( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) );
+
+ // Now that we know which the horizontal slide is, get its index
+ h = Math.max( horizontalSlides.indexOf( slideh ), 0 );
+
+ // If this is a vertical slide, grab the vertical index
+ if( isVertical ) {
+ v = Math.max( Array.prototype.slice.call( slide.parentNode.children ).indexOf( slide ), 0 );
+ }
+ }
+
+ return { h: h, v: v };
+ }
+
+ /**
* Navigate to the next slide fragment.
*
* @return {Boolean} true if there was a next fragment,
@@ -1113,21 +996,11 @@ var Reveal = (function(){
clearTimeout( autoSlideTimeout );
// Cue the next auto-slide if enabled
- if( config.autoSlide ) {
- autoSlideTimeout = setTimeout( navigateNext, config.autoSlide );
+ if( autoSlide ) {
+ autoSlideTimeout = setTimeout( navigateNext, autoSlide );
}
}
- /**
- * Triggers a navigation to the specified indices.
- *
- * @param {Number} h The horizontal index of the slide to show
- * @param {Number} v The vertical index of the slide to show
- */
- function navigateTo( h, v ) {
- slide( h, v );
- }
-
function navigateLeft() {
// Prioritize hiding fragments
if( isOverviewActive() || previousFragment() === false ) {
@@ -1195,34 +1068,244 @@ var Reveal = (function(){
cueAutoSlide();
}
+
+ // --------------------------------------------------------------------//
+ // ----------------------------- EVENTS -------------------------------//
+ // --------------------------------------------------------------------//
+
+
/**
- * Handling the fullscreen functionality via the fullscreen API
- * @see http://fullscreen.spec.whatwg.org/
- * @see https://developer.mozilla.org/en-US/docs/DOM/Using_fullscreen_mode
+ * Handler for the document level 'keydown' event.
+ *
+ * @param {Object} event
*/
- function enterFullscreen() {
- var element = document.body;
-
- // Check which implementation is available
- var requestMethod = element.requestFullScreen ||
- element.webkitRequestFullScreen ||
- element.mozRequestFullScreen ||
- element.msRequestFullScreen;
- if (requestMethod) {
- requestMethod.apply(element);
+ function onDocumentKeyDown( event ) {
+ // Disregard the event if the target is editable or a
+ // modifier is present
+ if ( document.querySelector( ':focus' ) !== null || event.shiftKey || event.altKey || event.ctrlKey || event.metaKey ) return;
+
+ var triggered = true;
+
+ switch( event.keyCode ) {
+ // p, page up
+ case 80: case 33: navigatePrev(); break;
+ // n, page down
+ case 78: case 34: navigateNext(); break;
+ // h, left
+ case 72: case 37: navigateLeft(); break;
+ // l, right
+ case 76: case 39: navigateRight(); break;
+ // k, up
+ case 75: case 38: navigateUp(); break;
+ // j, down
+ case 74: case 40: navigateDown(); break;
+ // home
+ case 36: slide( 0 ); break;
+ // end
+ case 35: slide( Number.MAX_VALUE ); break;
+ // space
+ case 32: isOverviewActive() ? deactivateOverview() : navigateNext(); break;
+ // return
+ case 13: isOverviewActive() ? deactivateOverview() : triggered = false; break;
+ // b, period
+ case 66: case 190: togglePause(); break;
+ // f
+ case 70: enterFullscreen(); break;
+ default:
+ triggered = false;
}
+
+ // If the input resulted in a triggered action we should prevent
+ // the browsers default behavior
+ if( triggered ) {
+ event.preventDefault();
+ }
+ else if ( event.keyCode === 27 && supports3DTransforms ) {
+ toggleOverview();
+
+ event.preventDefault();
+ }
+
+ // If auto-sliding is enabled we need to cue up
+ // another timeout
+ cueAutoSlide();
+
+ }
+
+ /**
+ * Handler for the document level 'touchstart' event,
+ * 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;
+
+ // If there's two touches we need to memorize the distance
+ // between those two points to detect pinching
+ if( event.touches.length === 2 && config.overview ) {
+ touch.startSpan = distanceBetween( {
+ x: event.touches[1].clientX,
+ y: event.touches[1].clientY
+ }, {
+ x: touch.startX,
+ 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;
+ var currentY = event.touches[0].clientY;
+
+ // If the touch started off with two points and still has
+ // two active touches; test for the pinch gesture
+ if( event.touches.length === 2 && touch.startCount === 2 && config.overview ) {
+
+ // The current distance in pixels between the two touch points
+ var currentSpan = distanceBetween( {
+ x: event.touches[1].clientX,
+ y: event.touches[1].clientY
+ }, {
+ x: touch.startX,
+ y: touch.startY
+ } );
+
+ // If the span is larger than the desire amount we've got
+ // ourselves a pinch
+ if( Math.abs( touch.startSpan - currentSpan ) > touch.threshold ) {
+ touch.handled = true;
+
+ if( currentSpan < touch.startSpan ) {
+ activateOverview();
+ }
+ else {
+ deactivateOverview();
+ }
+ }
+
+ event.preventDefault();
+
+ }
+ // There was only one touch point, look for a swipe
+ else if( event.touches.length === 1 && touch.startCount !== 2 ) {
+
+ var deltaX = currentX - touch.startX,
+ deltaY = currentY - touch.startY;
+
+ if( deltaX > touch.threshold && Math.abs( deltaX ) > Math.abs( deltaY ) ) {
+ touch.handled = true;
+ navigateLeft();
+ }
+ else if( deltaX < -touch.threshold && Math.abs( deltaX ) > Math.abs( deltaY ) ) {
+ touch.handled = true;
+ navigateRight();
+ }
+ else if( deltaY > touch.threshold ) {
+ touch.handled = true;
+ navigateUp();
+ }
+ else if( deltaY < -touch.threshold ) {
+ touch.handled = true;
+ navigateDown();
+ }
+
+ event.preventDefault();
+
+ }
+ }
+ // There's a bug with swiping on some Android devices unless
+ // the default action is always prevented
+ else if( navigator.userAgent.match( /android/gi ) ) {
+ event.preventDefault();
+ }
+ }
+
+ /**
+ * Handler for the document level 'touchend' event.
+ */
+ function onDocumentTouchEnd( event ) {
+ touch.handled = false;
}
- // Expose some methods publicly
+ /**
+ * Handles mouse wheel scrolling, throttled to avoid
+ * skipping multiple slides.
+ */
+ function onDocumentMouseScroll( event ){
+ clearTimeout( mouseWheelTimeout );
+
+ mouseWheelTimeout = setTimeout( function() {
+ var delta = event.detail || -event.wheelDelta;
+ if( delta > 0 ) {
+ navigateNext();
+ }
+ else {
+ navigatePrev();
+ }
+ }, 100 );
+ }
+
+ /**
+ * Handler for the window level 'hashchange' event.
+ *
+ * @param {Object} event
+ */
+ function onWindowHashChange( event ) {
+ readURL();
+ }
+
+ /**
+ * 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() ) {
+ event.preventDefault();
+
+ deactivateOverview();
+
+ indexh = this.getAttribute( 'data-index-h' );
+ indexv = this.getAttribute( 'data-index-v' );
+
+ slide();
+ }
+ }
+
+
+ // --------------------------------------------------------------------//
+ // ------------------------------- API --------------------------------//
+ // --------------------------------------------------------------------//
+
+
return {
initialize: initialize,
- navigateTo: navigateTo,
+
+ // Navigation methods
+ slide: slide,
+ left: navigateLeft,
+ right: navigateRight,
+ up: navigateUp,
+ down: navigateDown,
+ prev: navigatePrev,
+ next: navigateNext,
+
+ // Deprecated aliases
+ navigateTo: slide,
navigateLeft: navigateLeft,
navigateRight: navigateRight,
navigateUp: navigateUp,
navigateDown: navigateDown,
navigatePrev: navigatePrev,
navigateNext: navigateNext,
+
+ // Toggles the overview mode on/off
toggleOverview: toggleOverview,
// Adds or removes all internal event listeners (such as keyboard)
@@ -1230,30 +1313,7 @@ var Reveal = (function(){
removeEventListeners: removeEventListeners,
// Returns the indices of the current, or specified, slide
- getIndices: function( slide ) {
- // By default, return the current indices
- var h = indexh,
- v = indexv;
-
- // If a slide is specified, return the indices of that slide
- if( slide ) {
- var isVertical = !!slide.parentNode.nodeName.match( /section/gi );
- var slideh = isVertical ? slide.parentNode : slide;
-
- // Select all horizontal slides
- var horizontalSlides = Array.prototype.slice.call( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) );
-
- // Now that we know which the horizontal slide is, get its index
- h = Math.max( horizontalSlides.indexOf( slideh ), 0 );
-
- // If this is a vertical slide, grab the vertical index
- if( isVertical ) {
- v = Math.max( Array.prototype.slice.call( slide.parentNode.children ).indexOf( slide ), 0 );
- }
- }
-
- return { h: h, v: v };
- },
+ getIndices: getIndices,
// Returns the previous slide element, may be null
getPreviousSlide: function() {
diff --git a/js/reveal.min.js b/js/reveal.min.js
index 3338ba3..73053d3 100644
--- a/js/reveal.min.js
+++ b/js/reveal.min.js
@@ -1,7 +1,81 @@
/*!
- * reveal.js 2.1 r30
+ * reveal.js 2.1 r34
* http://lab.hakim.se/reveal-js
* MIT licensed
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
- */var Reveal=function(){"use strict";function v(e){if(!l&&!f){document.body.setAttribute("class","no-transforms");return}x(n,e);m();g();y()}function m(){a.theme=document.querySelector("#theme");a.wrapper=document.querySelector(".reveal");if(!a.wrapper.querySelector(".progress")&&n.progress){var e=document.createElement("div");e.classList.add("progress");e.innerHTML="<span></span>";a.wrapper.appendChild(e)}if(!a.wrapper.querySelector(".controls")&&n.controls){var t=document.createElement("aside");t.classList.add("controls");t.innerHTML='<a class="left" href="#">&#x25C4;</a><a class="right" href="#">&#x25BA;</a><a class="up" href="#">&#x25B2;</a><a class="down" href="#">&#x25BC;</a>';a.wrapper.appendChild(t)}if(!a.wrapper.querySelector(".state-background")){var r=document.createElement("div");r.classList.add("state-background");a.wrapper.appendChild(r)}if(!a.wrapper.querySelector(".pause-overlay")){var i=document.createElement("div");i.classList.add("pause-overlay");a.wrapper.appendChild(i)}a.progress=document.querySelector(".reveal .progress");a.progressbar=document.querySelector(".reveal .progress span");if(n.controls){a.controls=document.querySelector(".reveal .controls");a.controlsLeft=document.querySelector(".reveal .controls .left");a.controlsRight=document.querySelector(".reveal .controls .right");a.controlsUp=document.querySelector(".reveal .controls .up");a.controlsDown=document.querySelector(".reveal .controls .down")}}function g(){if(navigator.userAgent.match(/(iphone|ipod|android)/i)){document.documentElement.style.overflow="scroll";document.body.style.height="120%";window.addEventListener("load",C,!1);window.addEventListener("orientationchange",C,!1)}}function y(){function o(){head.js.apply(null,t);b()}var e=[],t=[];for(var r=0,i=n.dependencies.length;r<i;r++){var s=n.dependencies[r];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_\-]*)\.?[^\\\/]*$/i)[0],s.callback)}}if(e.length){head.ready(o);head.js.apply(null,e)}else o()}function b(){E();w();J();Y()}function w(){f===!1&&(n.transition="linear");n.controls&&a.controls&&(a.controls.style.display="block");n.progress&&a.progress&&(a.progress.style.display="block");if(n.theme&&a.theme){var e=a.theme.getAttribute("href"),t=/[^\/]*?(?=\.css)/,r=e.match(t)[0];if(n.theme!==r){e=e.replace(t,n.theme);a.theme.setAttribute("href",e)}}n.transition!=="default"&&a.wrapper.classList.add(n.transition);if(n.mouseWheel){document.addEventListener("DOMMouseScroll",_,!1);document.addEventListener("mousewheel",_,!1)}n.rollingLinks&&H()}function E(){document.addEventListener("touchstart",A,!1);document.addEventListener("touchmove",O,!1);document.addEventListener("touchend",M,!1);window.addEventListener("hashchange",D,!1);n.keyboard&&document.addEventListener("keydown",L,!1);if(n.controls&&a.controls){a.controlsLeft.addEventListener("click",N(et),!1);a.controlsRight.addEventListener("click",N(tt),!1);a.controlsUp.addEventListener("click",N(nt),!1);a.controlsDown.addEventListener("click",N(rt),!1)}}function S(){document.removeEventListener("keydown",L,!1);document.removeEventListener("touchstart",A,!1);document.removeEventListener("touchmove",O,!1);document.removeEventListener("touchend",M,!1);window.removeEventListener("hashchange",D,!1);if(n.controls&&a.controls){a.controlsLeft.removeEventListener("click",N(et),!1);a.controlsRight.removeEventListener("click",N(tt),!1);a.controlsUp.removeEventListener("click",N(nt),!1);a.controlsDown.removeEventListener("click",N(rt),!1)}}function x(e,t){for(var n in t)e[n]=t[n]}function T(e,t){var n=e.x-t.x,r=e.y-t.y;return Math.sqrt(n*n+r*r)}function N(e){return function(t){t.preventDefault();e.call()}}function C(){setTimeout(function(){window.scrollTo(0,1)},0)}function k(e,t){var n=document.createEvent("HTMLEvents",1,2);n.initEvent(e,!0,!0);x(n,t);a.wrapper.dispatchEvent(n)}function L(e){if(document.querySelector(":focus")!==null||e.shiftKey||e.altKey||e.ctrlKey||e.metaKey)return;var t=!0;switch(e.keyCode){case 80:case 33:it();break;case 78:case 34:st();break;case 72:case 37:et();break;case 76:case 39:tt();break;case 75:case 38:nt();break;case 74:case 40:rt();break;case 36:Z(0);break;case 35:Z(Number.MAX_VALUE);break;case 32:I()?j():st();break;case 13:I()?j():t=!1;break;case 66:case 190:U();break;case 70:ot();break;default:t=!1}if(t)e.preventDefault();else if(e.keyCode===27&&f){F();e.preventDefault()}Y()}function A(e){d.startX=e.touches[0].clientX;d.startY=e.touches[0].clientY;d.startCount=e.touches.length;e.touches.length===2&&(d.startSpan=T({x:e.touches[1].clientX,y:e.touches[1].clientY},{x:d.startX,y:d.startY}))}function O(e){if(!d.handled){var t=e.touches[0].clientX,n=e.touches[0].clientY;if(e.touches.length===2&&d.startCount===2){var r=T({x:e.touches[1].clientX,y:e.touches[1].clientY},{x:d.startX,y:d.startY});if(Math.abs(d.startSpan-r)>d.threshold){d.handled=!0;r<d.startSpan?B():j()}}else if(e.touches.length===1){var i=t-d.startX,s=n-d.startY;if(i>d.threshold&&Math.abs(i)>Math.abs(s)){d.handled=!0;et()}else if(i<-d.threshold&&Math.abs(i)>Math.abs(s)){d.handled=!0;tt()}else if(s>d.threshold){d.handled=!0;nt()}else if(s<-d.threshold){d.handled=!0;rt()}}e.preventDefault()}else navigator.userAgent.match(/android/gi)&&e.preventDefault()}function M(e){d.handled=!1}function _(e){clearTimeout(c);c=setTimeout(function(){var t=e.detail||-e.wheelDelta;t>0?st():it()},100)}function D(e){J()}function P(e){if(I()){e.preventDefault();j();r=this.getAttribute("data-index-h");i=this.getAttribute("data-index-v");X()}}function H(){if(f&&!("msPerspective"in document.body.style)){var e=document.querySelectorAll(".reveal .slides section a:not(.image)");for(var t=0,n=e.length;t<n;t++){var r=e[t];if(r.textContent&&!r.querySelector("img")&&(!r.className||!r.classList.contains(r,"roll"))){r.classList.add("roll");r.innerHTML='<span data-title="'+r.text+'">'+r.innerHTML+"</span>"}}}}function B(){if(n.overview){a.wrapper.classList.add("overview");var t=document.querySelectorAll(e);for(var s=0,o=t.length;s<o;s++){var u=t[s],f="translateZ(-2500px) translate("+(s-r)*105+"%, 0%)";u.setAttribute("data-index-h",s);u.style.display="block";u.style.WebkitTransform=f;u.style.MozTransform=f;u.style.msTransform=f;u.style.OTransform=f;u.style.transform=f;u.classList.contains("stack")||u.addEventListener("click",P,!0);var l=u.querySelectorAll("section");for(var c=0,h=l.length;c<h;c++){var p=l[c],d="translate(0%, "+(c-(s===r?i:0))*105+"%)";p.setAttribute("data-index-h",s);p.setAttribute("data-index-v",c);p.style.display="block";p.style.WebkitTransform=d;p.style.MozTransform=d;p.style.msTransform=d;p.style.OTransform=d;p.style.transform=d;p.addEventListener("click",P,!0)}}}}function j(){if(n.overview){a.wrapper.classList.remove("overview");var e=Array.prototype.slice.call(document.querySelectorAll(".reveal .slides section"));for(var t=0,r=e.length;t<r;t++){var i=e[t];i.style.WebkitTransform="";i.style.MozTransform="";i.style.msTransform="";i.style.OTransform="";i.style.transform="";i.removeEventListener("click",P)}X()}}function F(e){typeof e=="boolean"?e?B():j():I()?j():B()}function I(){return a.wrapper.classList.contains("overview")}function q(){a.wrapper.classList.add("paused")}function R(){a.wrapper.classList.remove("paused")}function U(){z()?R():q()}function z(){return a.wrapper.classList.contains("paused")}function W(e,t){var r=Array.prototype.slice.call(document.querySelectorAll(e)),i=r.length;if(i){if(n.loop){t%=i;t<0&&(t=i+t)}t=Math.max(Math.min(t,i-1),0);for(var s=0;s<i;s++){var o=r[s];if(I()===!1){var a=Math.abs((t-s)%(i-3))||0;o.style.display=a>3?"none":"block"}r[s].classList.remove("past");r[s].classList.remove("present");r[s].classList.remove("future");s<t?r[s].classList.add("past"):s>t&&r[s].classList.add("future");o.querySelector("section")&&r[s].classList.add("stack")}r[t].classList.add("present");var f=r[t].getAttribute("data-state");f&&(u=u.concat(f.split(" ")))}else t=0;return t}function X(f,l){s=o;var c=u.concat();u.length=0;var h=r,d=i;r=W(e,f===undefined?r:f);i=W(t,l===undefined?i:l);e:for(var v=0,m=u.length;v<m;v++){for(var g=0;g<c.length;g++)if(c[g]===u[v]){c.splice(g,1);continue e}document.documentElement.classList.add(u[v]);k(u[v])}while(c.length)document.documentElement.classList.remove(c.pop());n.progress&&a.progress&&(a.progressbar.style.width=r/(document.querySelectorAll(e).length-1)*window.innerWidth+"px");I()&&B();V();clearTimeout(p);p=setTimeout(K,1500);var y=document.querySelectorAll(e),b=y[r],w=b.querySelectorAll("section");o=w[i]||b;r!==h||i!==d?k("slidechanged",{indexh:r,indexv:i,previousSlide:s,currentSlide:o}):s=null;s&&s.classList.remove("present")}function V(){if(!n.controls||!a.controls)return;var e=$();[a.controlsLeft,a.controlsRight,a.controlsUp,a.controlsDown].forEach(function(e){e.classList.remove("enabled")});e.left&&a.controlsLeft.classList.add("enabled");e.right&&a.controlsRight.classList.add("enabled");e.up&&a.controlsUp.classList.add("enabled");e.down&&a.controlsDown.classList.add("enabled")}function $(){var n=document.querySelectorAll(e),s=document.querySelectorAll(t);return{left:r>0,right:r<n.length-1,up:i>0,down:i<s.length-1}}function J(){var e=window.location.hash,t=e.slice(2).split("/"),n=e.replace(/#|\//gi,"");if(isNaN(parseInt(t[0],10))&&n.length){var s=document.querySelector("#"+n);if(s){var o=Reveal.getIndices(s);Z(o.h,o.v)}else Z(r,i)}else{var u=parseInt(t[0],10)||0,a=parseInt(t[1],10)||0;Z(u,a)}}function K(){if(n.history){var e="/";if(r>0||i>0)e+=r;i>0&&(e+="/"+i);window.location.hash=e}}function Q(){if(document.querySelector(t+".present")){var n=document.querySelectorAll(t+".present .fragment:not(.visible)");if(n.length){n[0].classList.add("visible");k("fragmentshown",{fragment:n[0]});return!0}}else{var r=document.querySelectorAll(e+".present .fragment:not(.visible)");if(r.length){r[0].classList.add("visible");k("fragmentshown",{fragment:r[0]});return!0}}return!1}function G(){if(document.querySelector(t+".present")){var n=document.querySelectorAll(t+".present .fragment.visible");if(n.length){n[n.length-1].classList.remove("visible");k("fragmenthidden",{fragment:n[n.length-1]});return!0}}else{var r=document.querySelectorAll(e+".present .fragment.visible");if(r.length){r[r.length-1].classList.remove("visible");k("fragmenthidden",{fragment:r[r.length-1]});return!0}}return!1}function Y(){clearTimeout(h);n.autoSlide&&(h=setTimeout(st,n.autoSlide))}function Z(e,t){X(e,t)}function et(){(I()||G()===!1)&&X(r-1,0)}function tt(){(I()||Q()===!1)&&X(r+1,0)}function nt(){(I()||G()===!1)&&X(r,i-1)}function rt(){(I()||Q()===!1)&&X(r,i+1)}function it(){if(G()===!1)if($().up)nt();else{var e=document.querySelector(".reveal .slides>section.past:nth-child("+r+")");if(e){i=e.querySelectorAll("section").length+1||0;r--;X()}}}function st(){Q()===!1&&($().down?rt():tt());Y()}function ot(){var e=document.body,t=e.requestFullScreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullScreen;t&&t.apply(e)}var e=".reveal .slides>section",t=".reveal .slides>section.present>section",n={controls:!0,progress:!0,history:!1,keyboard:!0,overview:!0,loop:!1,autoSlide:0,mouseWheel:!0,rollingLinks:!0,theme:null,transition:"default",dependencies:[]},r=0,i=0,s,o,u=[],a={},f="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,l="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,c=0,h=0,p=0,d={startX:0,startY:0,startSpan:0,startCount:0,handled:!1,threshold:40};return{initialize:v,navigateTo:Z,navigateLeft:et,navigateRight:tt,navigateUp:nt,navigateDown:rt,navigatePrev:it,navigateNext:st,toggleOverview:F,addEventListeners:E,removeEventListeners:S,getIndices:function(t){var n=r,s=i;if(t){var o=!!t.parentNode.nodeName.match(/section/gi),u=o?t.parentNode:t,a=Array.prototype.slice.call(document.querySelectorAll(e));n=Math.max(a.indexOf(u),0);o&&(s=Math.max(Array.prototype.slice.call(t.parentNode.children).indexOf(t),0))}return{h:n,v:s}},getPreviousSlide:function(){return s},getCurrentSlide:function(){return o},getQueryHash:function(){var e={};location.search.replace(/[A-Z0-9]+?=(\w*)/gi,function(t){e[t.split("=").shift()]=t.split("=").pop()});return e},addEventListener:function(e,t,n){"addEventListener"in window&&(a.wrapper||document.querySelector(".reveal")).addEventListener(e,t,n)},removeEventListener:function(e,t,n){"addEventListener"in window&&(a.wrapper||document.querySelector(".reveal")).removeEventListener(e,t,n)}}}(); \ No newline at end of file
+ */
+var Reveal=(function(){var l=".reveal .slides>section",b=".reveal .slides>section.present>section",R={controls:true,progress:true,history:false,keyboard:true,overview:true,loop:false,autoSlide:0,mouseWheel:true,rollingLinks:true,theme:null,transition:"default",dependencies:[]},Y=R.autoSlide,m=0,e=0,y,G,aj=[],f={},T="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,z=0,k=0,D=0,ac={startX:0,startY:0,startSpan:0,startCount:0,handled:false,threshold:80};
+function i(ak){if((!n&&!T)){document.body.setAttribute("class","no-transforms");return;}t(R,ak);d();V();}function P(){f.theme=document.querySelector("#theme");
+f.wrapper=document.querySelector(".reveal");if(!f.wrapper.querySelector(".progress")&&R.progress){var an=document.createElement("div");an.classList.add("progress");
+an.innerHTML="<span></span>";f.wrapper.appendChild(an);}if(!f.wrapper.querySelector(".controls")&&R.controls){var am=document.createElement("aside");am.classList.add("controls");
+am.innerHTML='<a class="left" href="#">&#x25C4;</a><a class="right" href="#">&#x25BA;</a><a class="up" href="#">&#x25B2;</a><a class="down" href="#">&#x25BC;</a>';
+f.wrapper.appendChild(am);}if(!f.wrapper.querySelector(".state-background")){var al=document.createElement("div");al.classList.add("state-background");
+f.wrapper.appendChild(al);}if(!f.wrapper.querySelector(".pause-overlay")){var ak=document.createElement("div");ak.classList.add("pause-overlay");f.wrapper.appendChild(ak);
+}f.progress=document.querySelector(".reveal .progress");f.progressbar=document.querySelector(".reveal .progress span");if(R.controls){f.controls=document.querySelector(".reveal .controls");
+f.controlsLeft=document.querySelector(".reveal .controls .left");f.controlsRight=document.querySelector(".reveal .controls .right");f.controlsUp=document.querySelector(".reveal .controls .up");
+f.controlsDown=document.querySelector(".reveal .controls .down");}}function d(){if(navigator.userAgent.match(/(iphone|ipod|android)/i)){document.documentElement.style.overflow="scroll";
+document.body.style.height="120%";window.addEventListener("load",ad,false);window.addEventListener("orientationchange",ad,false);}}function V(){var al=[],ap=[];
+for(var am=0,ak=R.dependencies.length;am<ak;am++){var an=R.dependencies[am];if(!an.condition||an.condition()){if(an.async){ap.push(an.src);}else{al.push(an.src);
+}if(typeof an.callback==="function"){head.ready(an.src.match(/([\w\d_\-]*)\.?[^\\\/]*$/i)[0],an.callback);}}}function ao(){head.js.apply(null,ap);H();}if(al.length){head.ready(ao);
+head.js.apply(null,al);}else{ao();}}function H(){P();E();K();J();O();r("ready",{indexh:m,indexv:e,currentSlide:G});}function K(){if(T===false){R.transition="linear";
+}if(R.controls&&f.controls){f.controls.style.display="block";}if(R.progress&&f.progress){f.progress.style.display="block";}if(R.transition!=="default"){f.wrapper.classList.add(R.transition);
+}if(R.mouseWheel){document.addEventListener("DOMMouseScroll",o,false);document.addEventListener("mousewheel",o,false);}if(R.rollingLinks){N();}if(R.theme&&f.theme){var am=f.theme.getAttribute("href");
+var ak=/[^\/]*?(?=\.css)/;var al=am.match(ak)[0];if(R.theme!==al){am=am.replace(ak,R.theme);f.theme.setAttribute("href",am);}}}function E(){document.addEventListener("touchstart",A,false);
+document.addEventListener("touchmove",af,false);document.addEventListener("touchend",W,false);window.addEventListener("hashchange",w,false);if(R.keyboard){document.addEventListener("keydown",ah,false);
+}if(R.controls&&f.controls){f.controlsLeft.addEventListener("click",q(B),false);f.controlsRight.addEventListener("click",q(j),false);f.controlsUp.addEventListener("click",q(u),false);
+f.controlsDown.addEventListener("click",q(F),false);}}function U(){document.removeEventListener("keydown",ah,false);document.removeEventListener("touchstart",A,false);
+document.removeEventListener("touchmove",af,false);document.removeEventListener("touchend",W,false);window.removeEventListener("hashchange",w,false);if(R.controls&&f.controls){f.controlsLeft.removeEventListener("click",q(B),false);
+f.controlsRight.removeEventListener("click",q(j),false);f.controlsUp.removeEventListener("click",q(u),false);f.controlsDown.removeEventListener("click",q(F),false);
+}}function t(al,ak){for(var am in ak){al[am]=ak[am];}}function S(am,ak){var an=am.x-ak.x,al=am.y-ak.y;return Math.sqrt(an*an+al*al);}function q(ak){return function(al){al.preventDefault();
+ak.call();};}function ad(){setTimeout(function(){window.scrollTo(0,1);},0);}function r(al,ak){var am=document.createEvent("HTMLEvents",1,2);am.initEvent(al,true,true);
+t(am,ak);f.wrapper.dispatchEvent(am);}function N(){if(T&&!("msPerspective" in document.body.style)){var al=document.querySelectorAll(".reveal .slides section a:not(.image)");
+for(var am=0,ak=al.length;am<ak;am++){var an=al[am];if(an.textContent&&!an.querySelector("img")&&(!an.className||!an.classList.contains(an,"roll"))){an.classList.add("roll");
+an.innerHTML='<span data-title="'+an.text+'">'+an.innerHTML+"</span>";}}}}function I(){if(R.overview){f.wrapper.classList.add("overview");var ak=document.querySelectorAll(l);
+for(var ap=0,an=ak.length;ap<an;ap++){var am=ak[ap],au="translateZ(-2500px) translate("+((ap-m)*105)+"%, 0%)";am.setAttribute("data-index-h",ap);am.style.display="block";
+am.style.WebkitTransform=au;am.style.MozTransform=au;am.style.msTransform=au;am.style.OTransform=au;am.style.transform=au;if(!am.classList.contains("stack")){am.addEventListener("click",C,true);
+}var at=am.querySelectorAll("section");for(var ao=0,al=at.length;ao<al;ao++){var ar=at[ao],aq="translate(0%, "+((ao-(ap===m?e:0))*105)+"%)";ar.setAttribute("data-index-h",ap);
+ar.setAttribute("data-index-v",ao);ar.style.display="block";ar.style.WebkitTransform=aq;ar.style.MozTransform=aq;ar.style.msTransform=aq;ar.style.OTransform=aq;
+ar.style.transform=aq;ar.addEventListener("click",C,true);}}}}function ae(){if(R.overview){f.wrapper.classList.remove("overview");var an=Array.prototype.slice.call(document.querySelectorAll(".reveal .slides section"));
+for(var am=0,ak=an.length;am<ak;am++){var al=an[am];al.style.WebkitTransform="";al.style.MozTransform="";al.style.msTransform="";al.style.OTransform="";
+al.style.transform="";al.removeEventListener("click",C);}a();}}function X(ak){if(typeof ak==="boolean"){ak?I():ae();}else{L()?ae():I();}}function L(){return f.wrapper.classList.contains("overview");
+}function ab(){var ak=document.body;var al=ak.requestFullScreen||ak.webkitRequestFullScreen||ak.mozRequestFullScreen||ak.msRequestFullScreen;if(al){al.apply(ak);
+}}function c(){f.wrapper.classList.add("paused");}function p(){f.wrapper.classList.remove("paused");}function aa(){if(ag()){p();}else{c();}}function ag(){return f.wrapper.classList.contains("paused");
+}function a(aq,av){y=G;var an=aj.concat();aj.length=0;var au=m,al=e;m=ai(l,aq===undefined?m:aq);e=ai(b,av===undefined?e:av);stateLoop:for(var ao=0,ar=aj.length;
+ao<ar;ao++){for(var am=0;am<an.length;am++){if(an[am]===aj[ao]){an.splice(am,1);continue stateLoop;}}document.documentElement.classList.add(aj[ao]);r(aj[ao]);
+}while(an.length){document.documentElement.classList.remove(an.pop());}if(R.progress&&f.progress){f.progressbar.style.width=(m/(document.querySelectorAll(l).length-1))*window.innerWidth+"px";
+}if(L()){I();}s();clearTimeout(D);D=setTimeout(h,1500);var ak=document.querySelectorAll(l);var at=ak[m],ap=at.querySelectorAll("section");G=ap[e]||at;if(m!==au||e!==al){r("slidechanged",{indexh:m,indexv:e,previousSlide:y,currentSlide:G});
+}else{y=null;}if(y){y.classList.remove("present");}}function ai(an,at){var al=Array.prototype.slice.call(document.querySelectorAll(an)),ar=al.length;if(ar){if(R.loop){at%=ar;
+if(at<0){at=ar+at;}}at=Math.max(Math.min(at,ar-1),0);for(var ap=0;ap<ar;ap++){var aq=al[ap];if(L()===false){var ak=Math.abs((at-ap)%(ar-3))||0;aq.style.display=ak>3?"none":"block";
+}al[ap].classList.remove("past");al[ap].classList.remove("present");al[ap].classList.remove("future");if(ap<at){al[ap].classList.add("past");}else{if(ap>at){al[ap].classList.add("future");
+}}if(aq.querySelector("section")){al[ap].classList.add("stack");}}al[at].classList.add("present");var am=al[at].getAttribute("data-state");if(am){aj=aj.concat(am.split(" "));
+}var ao=al[at].getAttribute("data-autoslide");if(ao){Y=parseInt(ao);}else{Y=R.autoSlide;}}else{at=0;}return at;}function s(){if(R.controls&&f.controls){var ak=g();
+[f.controlsLeft,f.controlsRight,f.controlsUp,f.controlsDown].forEach(function(al){al.classList.remove("enabled");});if(ak.left){f.controlsLeft.classList.add("enabled");
+}if(ak.right){f.controlsRight.classList.add("enabled");}if(ak.up){f.controlsUp.classList.add("enabled");}if(ak.down){f.controlsDown.classList.add("enabled");
+}}}function g(){var ak=document.querySelectorAll(l),al=document.querySelectorAll(b);return{left:m>0,right:m<ak.length-1,up:e>0,down:e<al.length-1};}function J(){var ap=window.location.hash;
+var ao=ap.slice(2).split("/"),al=ap.replace(/#|\//gi,"");if(isNaN(parseInt(ao[0],10))&&al.length){var am=document.querySelector("#"+al);if(am){var aq=Reveal.getIndices(am);
+a(aq.h,aq.v);}else{a(m,e);}}else{var an=parseInt(ao[0],10)||0,ak=parseInt(ao[1],10)||0;a(an,ak);}}function h(){if(R.history){var ak="/";if(m>0||e>0){ak+=m;
+}if(e>0){ak+="/"+e;}window.location.hash=ak;}}function M(ak){var ao=m,am=e;if(ak){var ap=!!ak.parentNode.nodeName.match(/section/gi);var an=ap?ak.parentNode:ak;
+var al=Array.prototype.slice.call(document.querySelectorAll(l));ao=Math.max(al.indexOf(an),0);if(ap){am=Math.max(Array.prototype.slice.call(ak.parentNode.children).indexOf(ak),0);
+}}return{h:ao,v:am};}function v(){if(document.querySelector(b+".present")){var al=document.querySelectorAll(b+".present .fragment:not(.visible)");if(al.length){al[0].classList.add("visible");
+r("fragmentshown",{fragment:al[0]});return true;}}else{var ak=document.querySelectorAll(l+".present .fragment:not(.visible)");if(ak.length){ak[0].classList.add("visible");
+r("fragmentshown",{fragment:ak[0]});return true;}}return false;}function Q(){if(document.querySelector(b+".present")){var al=document.querySelectorAll(b+".present .fragment.visible");
+if(al.length){al[al.length-1].classList.remove("visible");r("fragmenthidden",{fragment:al[al.length-1]});return true;}}else{var ak=document.querySelectorAll(l+".present .fragment.visible");
+if(ak.length){ak[ak.length-1].classList.remove("visible");r("fragmenthidden",{fragment:ak[ak.length-1]});return true;}}return false;}function O(){clearTimeout(k);
+if(Y){k=setTimeout(x,Y);}}function B(){if(L()||Q()===false){a(m-1,0);}}function j(){if(L()||v()===false){a(m+1,0);}}function u(){if(L()||Q()===false){a(m,e-1);
+}}function F(){if(L()||v()===false){a(m,e+1);}}function Z(){if(Q()===false){if(g().up){u();}else{var ak=document.querySelector(".reveal .slides>section.past:nth-child("+m+")");
+if(ak){e=(ak.querySelectorAll("section").length+1)||0;m--;a();}}}}function x(){if(v()===false){g().down?F():j();}O();}function ah(al){if(document.querySelector(":focus")!==null||al.shiftKey||al.altKey||al.ctrlKey||al.metaKey){return;
+}var ak=true;switch(al.keyCode){case 80:case 33:Z();break;case 78:case 34:x();break;case 72:case 37:B();break;case 76:case 39:j();break;case 75:case 38:u();
+break;case 74:case 40:F();break;case 36:a(0);break;case 35:a(Number.MAX_VALUE);break;case 32:L()?ae():x();break;case 13:L()?ae():ak=false;break;case 66:case 190:aa();
+break;case 70:ab();break;default:ak=false;}if(ak){al.preventDefault();}else{if(al.keyCode===27&&T){X();al.preventDefault();}}O();}function A(ak){ac.startX=ak.touches[0].clientX;
+ac.startY=ak.touches[0].clientY;ac.startCount=ak.touches.length;if(ak.touches.length===2&&R.overview){ac.startSpan=S({x:ak.touches[1].clientX,y:ak.touches[1].clientY},{x:ac.startX,y:ac.startY});
+}}function af(ap){if(!ac.handled){var an=ap.touches[0].clientX;var am=ap.touches[0].clientY;if(ap.touches.length===2&&ac.startCount===2&&R.overview){var ao=S({x:ap.touches[1].clientX,y:ap.touches[1].clientY},{x:ac.startX,y:ac.startY});
+if(Math.abs(ac.startSpan-ao)>ac.threshold){ac.handled=true;if(ao<ac.startSpan){I();}else{ae();}}ap.preventDefault();}else{if(ap.touches.length===1&&ac.startCount!==2){var al=an-ac.startX,ak=am-ac.startY;
+if(al>ac.threshold&&Math.abs(al)>Math.abs(ak)){ac.handled=true;B();}else{if(al<-ac.threshold&&Math.abs(al)>Math.abs(ak)){ac.handled=true;j();}else{if(ak>ac.threshold){ac.handled=true;
+u();}else{if(ak<-ac.threshold){ac.handled=true;F();}}}}ap.preventDefault();}}}else{if(navigator.userAgent.match(/android/gi)){ap.preventDefault();}}}function W(ak){ac.handled=false;
+}function o(ak){clearTimeout(z);z=setTimeout(function(){var al=ak.detail||-ak.wheelDelta;if(al>0){x();}else{Z();}},100);}function w(ak){J();}function C(ak){if(L()){ak.preventDefault();
+ae();m=this.getAttribute("data-index-h");e=this.getAttribute("data-index-v");a();}}return{initialize:i,slide:a,left:B,right:j,up:u,down:F,prev:Z,next:x,navigateTo:a,navigateLeft:B,navigateRight:j,navigateUp:u,navigateDown:F,navigatePrev:Z,navigateNext:x,toggleOverview:X,addEventListeners:E,removeEventListeners:U,getIndices:M,getPreviousSlide:function(){return y;
+},getCurrentSlide:function(){return G;},getQueryHash:function(){var ak={};location.search.replace(/[A-Z0-9]+?=(\w*)/gi,function(al){ak[al.split("=").shift()]=al.split("=").pop();
+});return ak;},addEventListener:function(al,am,ak){if("addEventListener" in window){(f.wrapper||document.querySelector(".reveal")).addEventListener(al,am,ak);
+}},removeEventListener:function(al,am,ak){if("addEventListener" in window){(f.wrapper||document.querySelector(".reveal")).removeEventListener(al,am,ak);
+}}};})(); \ No newline at end of file
diff --git a/plugin/speakernotes/index.js b/plugin/speakernotes/index.js
index e8c8023..17314f3 100644
--- a/plugin/speakernotes/index.js
+++ b/plugin/speakernotes/index.js
@@ -21,7 +21,7 @@ io.sockets.on('connection', function(socket) {
});
app.configure(function() {
- [ 'css', 'js', 'plugin', 'lib' ].forEach(function(dir) {
+ [ 'css', 'js', 'images', 'plugin', 'lib' ].forEach(function(dir) {
app.use('/' + dir, staticDir(opts.baseDir + dir));
});
});
@@ -43,8 +43,8 @@ app.get("/notes/:socketId", function(req, res) {
// Actually listen
app.listen(opts.port || null);
-var brown = '\033[33m',
- green = '\033[32m',
+var brown = '\033[33m',
+ green = '\033[32m',
reset = '\033[0m';
var slidesLocation = "http://localhost" + ( opts.port ? ( ':' + opts.port ) : '' );
diff --git a/plugin/speakernotes/notes.html b/plugin/speakernotes/notes.html
index 1106233..13f043d 100644
--- a/plugin/speakernotes/notes.html
+++ b/plugin/speakernotes/notes.html
@@ -119,8 +119,8 @@
notes.innerHTML = data.notes;
}
- currentSlide.contentWindow.Reveal.navigateTo(data.indexh, data.indexv);
- nextSlide.contentWindow.Reveal.navigateTo(data.nextindexh, data.nextindexv);
+ currentSlide.contentWindow.Reveal.slide(data.indexh, data.indexv);
+ nextSlide.contentWindow.Reveal.slide(data.nextindexh, data.nextindexv);
});
</script>