summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Gruntfile.js29
-rw-r--r--README.md10
-rw-r--r--css/theme/README.md25
-rw-r--r--css/theme/beige.css81
-rw-r--r--css/theme/default.css81
-rw-r--r--css/theme/moon.css142
-rw-r--r--css/theme/night.css78
-rw-r--r--css/theme/serif.css80
-rw-r--r--css/theme/simple.css78
-rw-r--r--css/theme/sky.css76
-rw-r--r--css/theme/solarized.css142
-rw-r--r--css/theme/source/moon.scss68
-rw-r--r--css/theme/source/night.scss2
-rw-r--r--css/theme/source/serif.scss4
-rw-r--r--css/theme/source/simple.scss2
-rw-r--r--css/theme/source/solarized.scss74
-rw-r--r--css/theme/template/settings.scss4
-rw-r--r--index.html12
-rw-r--r--js/reveal.js135
-rw-r--r--js/reveal.min.js4
-rw-r--r--package.json1
-rw-r--r--plugin/markdown/markdown.js10
-rw-r--r--plugin/multiplex/index.js16
-rw-r--r--plugin/multiplex/master.js5
-rw-r--r--plugin/search/search.js192
25 files changed, 957 insertions, 394 deletions
diff --git a/Gruntfile.js b/Gruntfile.js
index 22502f6..bb3cc35 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -42,6 +42,21 @@ module.exports = function(grunt) {
}
},
+ sass: {
+ main: {
+ files: {
+ 'css/theme/default.css': 'css/theme/source/default.scss',
+ 'css/theme/beige.css': 'css/theme/source/beige.scss',
+ 'css/theme/night.css': 'css/theme/source/night.scss',
+ 'css/theme/serif.css': 'css/theme/source/serif.scss',
+ 'css/theme/simple.css': 'css/theme/source/simple.scss',
+ 'css/theme/sky.css': 'css/theme/source/sky.scss',
+ 'css/theme/moon.css': 'css/theme/source/moon.scss',
+ 'css/theme/solarized.css': 'css/theme/source/solarized.scss'
+ }
+ },
+ },
+
jshint: {
options: {
curly: false,
@@ -64,8 +79,14 @@ module.exports = function(grunt) {
},
watch: {
- files: [ 'Gruntfile.js', 'js/reveal.js', 'css/reveal.css' ],
- tasks: 'default'
+ main: {
+ files: [ 'Gruntfile.js', 'js/reveal.js', 'css/reveal.css' ],
+ tasks: 'default'
+ },
+ theme: {
+ files: [ 'css/theme/source/*.scss', 'css/theme/template/*.scss' ],
+ tasks: 'themes'
+ }
}
});
@@ -75,8 +96,12 @@ module.exports = function(grunt) {
grunt.loadNpmTasks( 'grunt-contrib-cssmin' );
grunt.loadNpmTasks( 'grunt-contrib-uglify' );
grunt.loadNpmTasks( 'grunt-contrib-watch' );
+ grunt.loadNpmTasks( 'grunt-contrib-sass' );
// Default task
grunt.registerTask( 'default', [ 'jshint', 'cssmin', 'uglify' ] );
+ // Theme task
+ grunt.registerTask( 'themes', [ 'sass' ] );
+
};
diff --git a/README.md b/README.md
index 2778015..f9acc25 100644
--- a/README.md
+++ b/README.md
@@ -107,6 +107,16 @@ Reveal.initialize({
Note that the new default vertical centering option will break compatibility with slides that were using transitions with backgrounds (`cube` and `page`). To restore the previous behavior, set `center` to `false`.
+The configuration can be update after initialization using the ```configure``` method:
+
+```javascript
+// Turn autoSlide off
+Reveal.configure({ autoSlide: 0 });
+
+// Start auto-sliding every 5s
+Reveal.configure({ autoSlide: 5000 });
+```
+
### Presentation Size
diff --git a/css/theme/README.md b/css/theme/README.md
deleted file mode 100644
index f3a2a2b..0000000
--- a/css/theme/README.md
+++ /dev/null
@@ -1,25 +0,0 @@
-## Dependencies
-
-Themes are written using Sass to keep things modular and reduce the need for repeated selectors across files. Find out how to install Sass here http://sass-lang.com/, once Sass is installed run the follwing command to start monitoring the source files for changes.
-
-```
-sass --watch css/theme/source/:css/theme --style expanded
-```
-
-
-
-## Creating a Theme
-
-To create your own theme, start by duplicating any ```.scss``` file in [/css/theme/source](https://github.com/hakimel/reveal.js/blob/master/css/theme/source). Each theme does four things in the following order:
-
-1. **Include [/css/theme/template/mixins.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/mixins.scss)**
-Shared utility functions.
-
-2. **Include [/css/theme/template/settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss)**
-Declares a set of custom variables that the template file (step 4) expects. Can be overridden in step 3.
-
-3. **Override**
-This is where you override the default theme. Either by specifying variables (see [settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss) for reference) or by adding full selectors with hardcoded styles.
-
-4. **Include [/css/theme/template/theme.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/theme.scss)**
-The template theme file which will generate final CSS output based on the currently defined variables.
diff --git a/css/theme/beige.css b/css/theme/beige.css
index d9f8501..b0610d4 100644
--- a/css/theme/beige.css
+++ b/css/theme/beige.css
@@ -9,8 +9,7 @@
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-style: normal; }
/*********************************************
* GLOBAL STYLES
@@ -23,22 +22,19 @@ body {
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%);
- background-color: #f7f3de;
-}
+ background-color: #f7f3de; }
.reveal {
- font-family: "Lato", Times, "Times New Roman", serif;
+ font-family: "Lato", sans-serif;
font-size: 36px;
font-weight: 200;
letter-spacing: -0.02em;
- color: #333333;
-}
+ color: #333333; }
::selection {
color: white;
background: rgba(79, 64, 28, 0.99);
- text-shadow: none;
-}
+ text-shadow: none; }
/*********************************************
* HEADERS
@@ -55,12 +51,10 @@ body {
line-height: 0.9em;
letter-spacing: 0.02em;
text-transform: uppercase;
- text-shadow: none;
-}
+ text-shadow: none; }
.reveal h1 {
- 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);
-}
+ 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
@@ -68,23 +62,20 @@ body {
.reveal a:not(.image) {
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 0.15s ease;
+ -moz-transition: color 0.15s ease;
+ -ms-transition: color 0.15s ease;
+ -o-transition: color 0.15s ease;
+ transition: color 0.15s ease; }
.reveal a:not(.image):hover {
color: #c0a86e;
text-shadow: none;
- border: none;
-}
+ border: none; }
.reveal .roll span:after {
color: #fff;
- background: #564826;
-}
+ background: #564826; }
/*********************************************
* IMAGES
@@ -94,64 +85,53 @@ body {
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;
-}
+ -webkit-transition: all 0.2s linear;
+ -moz-transition: all 0.2s linear;
+ -ms-transition: all 0.2s linear;
+ -o-transition: all 0.2s linear;
+ transition: all 0.2s linear; }
.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);
-}
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
- border-right-color: #8b743d;
-}
+ border-right-color: #8b743d; }
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
- border-left-color: #8b743d;
-}
+ border-left-color: #8b743d; }
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
- border-bottom-color: #8b743d;
-}
+ border-bottom-color: #8b743d; }
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
- border-top-color: #8b743d;
-}
+ border-top-color: #8b743d; }
.reveal .controls div.navigate-left.enabled:hover {
- border-right-color: #c0a86e;
-}
+ border-right-color: #c0a86e; }
.reveal .controls div.navigate-right.enabled:hover {
- border-left-color: #c0a86e;
-}
+ border-left-color: #c0a86e; }
.reveal .controls div.navigate-up.enabled:hover {
- border-bottom-color: #c0a86e;
-}
+ border-bottom-color: #c0a86e; }
.reveal .controls div.navigate-down.enabled:hover {
- border-top-color: #c0a86e;
-}
+ border-top-color: #c0a86e; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
- background: rgba(0, 0, 0, 0.2);
-}
+ background: rgba(0, 0, 0, 0.2); }
.reveal .progress span {
background: #8b743d;
@@ -159,5 +139,4 @@ body {
-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);
-}
+ 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 86e65ce..480ac69 100644
--- a/css/theme/default.css
+++ b/css/theme/default.css
@@ -9,8 +9,7 @@
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-style: normal; }
/*********************************************
* GLOBAL STYLES
@@ -23,22 +22,19 @@ body {
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-color: #2b2b2b;
-}
+ background-color: #2b2b2b; }
.reveal {
- font-family: "Lato", Times, "Times New Roman", serif;
+ font-family: "Lato", sans-serif;
font-size: 36px;
font-weight: 200;
letter-spacing: -0.02em;
- color: #eeeeee;
-}
+ color: #eeeeee; }
::selection {
color: white;
background: #ff5e99;
- text-shadow: none;
-}
+ text-shadow: none; }
/*********************************************
* HEADERS
@@ -55,12 +51,10 @@ body {
line-height: 0.9em;
letter-spacing: 0.02em;
text-transform: uppercase;
- text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2);
-}
+ text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
.reveal h1 {
- 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);
-}
+ 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
@@ -68,23 +62,20 @@ body {
.reveal a:not(.image) {
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 0.15s ease;
+ -moz-transition: color 0.15s ease;
+ -ms-transition: color 0.15s ease;
+ -o-transition: color 0.15s ease;
+ transition: color 0.15s ease; }
.reveal a:not(.image):hover {
color: #71e9f4;
text-shadow: none;
- border: none;
-}
+ border: none; }
.reveal .roll span:after {
color: #fff;
- background: #0d99a5;
-}
+ background: #0d99a5; }
/*********************************************
* IMAGES
@@ -94,64 +85,53 @@ body {
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;
-}
+ -webkit-transition: all 0.2s linear;
+ -moz-transition: all 0.2s linear;
+ -ms-transition: all 0.2s linear;
+ -o-transition: all 0.2s linear;
+ transition: all 0.2s linear; }
.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);
-}
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
- border-right-color: #13daec;
-}
+ border-right-color: #13daec; }
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
- border-left-color: #13daec;
-}
+ border-left-color: #13daec; }
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
- border-bottom-color: #13daec;
-}
+ border-bottom-color: #13daec; }
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
- border-top-color: #13daec;
-}
+ border-top-color: #13daec; }
.reveal .controls div.navigate-left.enabled:hover {
- border-right-color: #71e9f4;
-}
+ border-right-color: #71e9f4; }
.reveal .controls div.navigate-right.enabled:hover {
- border-left-color: #71e9f4;
-}
+ border-left-color: #71e9f4; }
.reveal .controls div.navigate-up.enabled:hover {
- border-bottom-color: #71e9f4;
-}
+ border-bottom-color: #71e9f4; }
.reveal .controls div.navigate-down.enabled:hover {
- border-top-color: #71e9f4;
-}
+ border-top-color: #71e9f4; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
- background: rgba(0, 0, 0, 0.2);
-}
+ background: rgba(0, 0, 0, 0.2); }
.reveal .progress span {
background: #13daec;
@@ -159,5 +139,4 @@ body {
-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);
-}
+ transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
diff --git a/css/theme/moon.css b/css/theme/moon.css
new file mode 100644
index 0000000..24c1d7b
--- /dev/null
+++ b/css/theme/moon.css
@@ -0,0 +1,142 @@
+@import url(http://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+/**
+ * Solarized Dark theme for reveal.js.
+ * Author: Achim Staebler
+ */
+@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; }
+
+/**
+ * Solarized colors by Ethan Schoonover
+ */
+html * {
+ color-profile: sRGB;
+ rendering-intent: auto; }
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+body {
+ background: #002b36;
+ background-color: #002b36; }
+
+.reveal {
+ font-family: "Lato", sans-serif;
+ font-size: 36px;
+ font-weight: 200;
+ letter-spacing: -0.02em;
+ color: #93a1a1; }
+
+::selection {
+ color: white;
+ background: #d33682;
+ text-shadow: none; }
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+ margin: 0 0 20px 0;
+ color: #eee8d5;
+ 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: 0px 0px 6px rgba(0, 0, 0, 0.2); }
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a:not(.image) {
+ color: #268bd2;
+ text-decoration: none;
+ -webkit-transition: color 0.15s ease;
+ -moz-transition: color 0.15s ease;
+ -ms-transition: color 0.15s ease;
+ -o-transition: color 0.15s ease;
+ transition: color 0.15s ease; }
+
+.reveal a:not(.image):hover {
+ color: #78b9e6;
+ text-shadow: none;
+ border: none; }
+
+.reveal .roll span:after {
+ color: #fff;
+ background: #1a6091; }
+
+/*********************************************
+ * IMAGES
+ *********************************************/
+.reveal section img {
+ margin: 15px 0px;
+ background: rgba(255, 255, 255, 0.12);
+ border: 4px solid #93a1a1;
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+ -webkit-transition: all 0.2s linear;
+ -moz-transition: all 0.2s linear;
+ -ms-transition: all 0.2s linear;
+ -o-transition: all 0.2s linear;
+ transition: all 0.2s linear; }
+
+.reveal a:hover img {
+ background: rgba(255, 255, 255, 0.2);
+ border-color: #268bd2;
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls div.navigate-left,
+.reveal .controls div.navigate-left.enabled {
+ border-right-color: #268bd2; }
+
+.reveal .controls div.navigate-right,
+.reveal .controls div.navigate-right.enabled {
+ border-left-color: #268bd2; }
+
+.reveal .controls div.navigate-up,
+.reveal .controls div.navigate-up.enabled {
+ border-bottom-color: #268bd2; }
+
+.reveal .controls div.navigate-down,
+.reveal .controls div.navigate-down.enabled {
+ border-top-color: #268bd2; }
+
+.reveal .controls div.navigate-left.enabled:hover {
+ border-right-color: #78b9e6; }
+
+.reveal .controls div.navigate-right.enabled:hover {
+ border-left-color: #78b9e6; }
+
+.reveal .controls div.navigate-up.enabled:hover {
+ border-bottom-color: #78b9e6; }
+
+.reveal .controls div.navigate-down.enabled:hover {
+ border-top-color: #78b9e6; }
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+ background: rgba(0, 0, 0, 0.2); }
+
+.reveal .progress span {
+ background: #268bd2;
+ -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/night.css b/css/theme/night.css
index f10598f..e2e9508 100644
--- a/css/theme/night.css
+++ b/css/theme/night.css
@@ -10,22 +10,19 @@
*********************************************/
body {
background: #111111;
- background-color: #111111;
-}
+ background-color: #111111; }
.reveal {
- font-family: "Open Sans", Times, "Times New Roman", serif;
+ font-family: "Open Sans", sans-serif;
font-size: 30px;
font-weight: 200;
letter-spacing: -0.02em;
- color: #eeeeee;
-}
+ color: #eeeeee; }
::selection {
color: white;
background: #e7ad52;
- text-shadow: none;
-}
+ text-shadow: none; }
/*********************************************
* HEADERS
@@ -42,12 +39,10 @@ body {
line-height: 0.9em;
letter-spacing: -0.03em;
text-transform: none;
- text-shadow: none;
-}
+ text-shadow: none; }
.reveal h1 {
- text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2);
-}
+ text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
/*********************************************
* LINKS
@@ -55,23 +50,20 @@ body {
.reveal a:not(.image) {
color: #e7ad52;
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 0.15s ease;
+ -moz-transition: color 0.15s ease;
+ -ms-transition: color 0.15s ease;
+ -o-transition: color 0.15s ease;
+ transition: color 0.15s ease; }
.reveal a:not(.image):hover {
color: #f3d7ac;
text-shadow: none;
- border: none;
-}
+ border: none; }
.reveal .roll span:after {
color: #fff;
- background: #d08a1d;
-}
+ background: #d08a1d; }
/*********************************************
* IMAGES
@@ -81,64 +73,53 @@ body {
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;
-}
+ -webkit-transition: all 0.2s linear;
+ -moz-transition: all 0.2s linear;
+ -ms-transition: all 0.2s linear;
+ -o-transition: all 0.2s linear;
+ transition: all 0.2s linear; }
.reveal a:hover img {
background: rgba(255, 255, 255, 0.2);
border-color: #e7ad52;
- box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
-}
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
- border-right-color: #e7ad52;
-}
+ border-right-color: #e7ad52; }
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
- border-left-color: #e7ad52;
-}
+ border-left-color: #e7ad52; }
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
- border-bottom-color: #e7ad52;
-}
+ border-bottom-color: #e7ad52; }
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
- border-top-color: #e7ad52;
-}
+ border-top-color: #e7ad52; }
.reveal .controls div.navigate-left.enabled:hover {
- border-right-color: #f3d7ac;
-}
+ border-right-color: #f3d7ac; }
.reveal .controls div.navigate-right.enabled:hover {
- border-left-color: #f3d7ac;
-}
+ border-left-color: #f3d7ac; }
.reveal .controls div.navigate-up.enabled:hover {
- border-bottom-color: #f3d7ac;
-}
+ border-bottom-color: #f3d7ac; }
.reveal .controls div.navigate-down.enabled:hover {
- border-top-color: #f3d7ac;
-}
+ border-top-color: #f3d7ac; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
- background: rgba(0, 0, 0, 0.2);
-}
+ background: rgba(0, 0, 0, 0.2); }
.reveal .progress span {
background: #e7ad52;
@@ -146,5 +127,4 @@ body {
-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);
-}
+ 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 aaabf47..2b1f4fd 100644
--- a/css/theme/serif.css
+++ b/css/theme/serif.css
@@ -1,7 +1,7 @@
/**
- * A simple theme for reveal.js presentations, similar
+ * 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.
*/
@@ -10,22 +10,19 @@
*********************************************/
body {
background: #f0f1eb;
- background-color: #f0f1eb;
-}
+ background-color: #f0f1eb; }
.reveal {
font-family: "Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif;
font-size: 36px;
font-weight: 200;
letter-spacing: -0.02em;
- color: black;
-}
+ color: black; }
::selection {
color: white;
background: #26351c;
- text-shadow: none;
-}
+ text-shadow: none; }
/*********************************************
* HEADERS
@@ -42,12 +39,10 @@ body {
line-height: 0.9em;
letter-spacing: 0.02em;
text-transform: none;
- text-shadow: none;
-}
+ text-shadow: none; }
.reveal h1 {
- text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2);
-}
+ text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
/*********************************************
* LINKS
@@ -55,23 +50,20 @@ body {
.reveal a:not(.image) {
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;
-}
+ -webkit-transition: color 0.15s ease;
+ -moz-transition: color 0.15s ease;
+ -ms-transition: color 0.15s ease;
+ -o-transition: color 0.15s ease;
+ transition: color 0.15s ease; }
.reveal a:not(.image):hover {
color: #8b7c69;
text-shadow: none;
- border: none;
-}
+ border: none; }
.reveal .roll span:after {
color: #fff;
- background: #25211c;
-}
+ background: #25211c; }
/*********************************************
* IMAGES
@@ -81,64 +73,53 @@ body {
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;
-}
+ -webkit-transition: all 0.2s linear;
+ -moz-transition: all 0.2s linear;
+ -ms-transition: all 0.2s linear;
+ -o-transition: all 0.2s linear;
+ transition: all 0.2s linear; }
.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);
-}
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
- border-right-color: #51483d;
-}
+ border-right-color: #51483d; }
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
- border-left-color: #51483d;
-}
+ border-left-color: #51483d; }
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
- border-bottom-color: #51483d;
-}
+ border-bottom-color: #51483d; }
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
- border-top-color: #51483d;
-}
+ border-top-color: #51483d; }
.reveal .controls div.navigate-left.enabled:hover {
- border-right-color: #8b7c69;
-}
+ border-right-color: #8b7c69; }
.reveal .controls div.navigate-right.enabled:hover {
- border-left-color: #8b7c69;
-}
+ border-left-color: #8b7c69; }
.reveal .controls div.navigate-up.enabled:hover {
- border-bottom-color: #8b7c69;
-}
+ border-bottom-color: #8b7c69; }
.reveal .controls div.navigate-down.enabled:hover {
- border-top-color: #8b7c69;
-}
+ border-top-color: #8b7c69; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
- background: rgba(0, 0, 0, 0.2);
-}
+ background: rgba(0, 0, 0, 0.2); }
.reveal .progress span {
background: #51483d;
@@ -146,5 +127,4 @@ body {
-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);
-}
+ 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 a68729f..0aef916 100644
--- a/css/theme/simple.css
+++ b/css/theme/simple.css
@@ -12,22 +12,19 @@
*********************************************/
body {
background: white;
- background-color: white;
-}
+ background-color: white; }
.reveal {
- font-family: "Lato", Times, "Times New Roman", serif;
+ font-family: "Lato", sans-serif;
font-size: 36px;
font-weight: 200;
letter-spacing: -0.02em;
- color: black;
-}
+ color: black; }
::selection {
color: white;
background: rgba(0, 0, 0, 0.99);
- text-shadow: none;
-}
+ text-shadow: none; }
/*********************************************
* HEADERS
@@ -44,12 +41,10 @@ body {
line-height: 0.9em;
letter-spacing: 0.02em;
text-transform: none;
- text-shadow: none;
-}
+ text-shadow: none; }
.reveal h1 {
- text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2);
-}
+ text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
/*********************************************
* LINKS
@@ -57,23 +52,20 @@ body {
.reveal a:not(.image) {
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 0.15s ease;
+ -moz-transition: color 0.15s ease;
+ -ms-transition: color 0.15s ease;
+ -o-transition: color 0.15s ease;
+ transition: color 0.15s ease; }
.reveal a:not(.image):hover {
color: #0000f1;
text-shadow: none;
- border: none;
-}
+ border: none; }
.reveal .roll span:after {
color: #fff;
- background: #00003f;
-}
+ background: #00003f; }
/*********************************************
* IMAGES
@@ -83,64 +75,53 @@ body {
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;
-}
+ -webkit-transition: all 0.2s linear;
+ -moz-transition: all 0.2s linear;
+ -ms-transition: all 0.2s linear;
+ -o-transition: all 0.2s linear;
+ transition: all 0.2s linear; }
.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);
-}
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
- border-right-color: darkblue;
-}
+ border-right-color: darkblue; }
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
- border-left-color: darkblue;
-}
+ border-left-color: darkblue; }
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
- border-bottom-color: darkblue;
-}
+ border-bottom-color: darkblue; }
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
- border-top-color: darkblue;
-}
+ border-top-color: darkblue; }
.reveal .controls div.navigate-left.enabled:hover {
- border-right-color: #0000f1;
-}
+ border-right-color: #0000f1; }
.reveal .controls div.navigate-right.enabled:hover {
- border-left-color: #0000f1;
-}
+ border-left-color: #0000f1; }
.reveal .controls div.navigate-up.enabled:hover {
- border-bottom-color: #0000f1;
-}
+ border-bottom-color: #0000f1; }
.reveal .controls div.navigate-down.enabled:hover {
- border-top-color: #0000f1;
-}
+ border-top-color: #0000f1; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
- background: rgba(0, 0, 0, 0.2);
-}
+ background: rgba(0, 0, 0, 0.2); }
.reveal .progress span {
background: darkblue;
@@ -148,5 +129,4 @@ body {
-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);
-}
+ 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 a1b3b96..c5cbbeb 100644
--- a/css/theme/sky.css
+++ b/css/theme/sky.css
@@ -16,22 +16,19 @@ body {
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%);
- background-color: #f7fbfc;
-}
+ background-color: #f7fbfc; }
.reveal {
font-family: "Open Sans", sans-serif;
font-size: 36px;
font-weight: 200;
letter-spacing: -0.02em;
- color: #333333;
-}
+ color: #333333; }
::selection {
color: white;
background: #134674;
- text-shadow: none;
-}
+ text-shadow: none; }
/*********************************************
* HEADERS
@@ -48,12 +45,10 @@ body {
line-height: 0.9em;
letter-spacing: -0.08em;
text-transform: uppercase;
- text-shadow: none;
-}
+ text-shadow: none; }
.reveal h1 {
- text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2);
-}
+ text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
/*********************************************
* LINKS
@@ -61,23 +56,20 @@ body {
.reveal a:not(.image) {
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 0.15s ease;
+ -moz-transition: color 0.15s ease;
+ -ms-transition: color 0.15s ease;
+ -o-transition: color 0.15s ease;
+ transition: color 0.15s ease; }
.reveal a:not(.image):hover {
color: #74a7cb;
text-shadow: none;
- border: none;
-}
+ border: none; }
.reveal .roll span:after {
color: #fff;
- background: #264c66;
-}
+ background: #264c66; }
/*********************************************
* IMAGES
@@ -87,64 +79,53 @@ body {
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;
-}
+ -webkit-transition: all 0.2s linear;
+ -moz-transition: all 0.2s linear;
+ -ms-transition: all 0.2s linear;
+ -o-transition: all 0.2s linear;
+ transition: all 0.2s linear; }
.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);
-}
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
- border-right-color: #3b759e;
-}
+ border-right-color: #3b759e; }
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
- border-left-color: #3b759e;
-}
+ border-left-color: #3b759e; }
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
- border-bottom-color: #3b759e;
-}
+ border-bottom-color: #3b759e; }
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
- border-top-color: #3b759e;
-}
+ border-top-color: #3b759e; }
.reveal .controls div.navigate-left.enabled:hover {
- border-right-color: #74a7cb;
-}
+ border-right-color: #74a7cb; }
.reveal .controls div.navigate-right.enabled:hover {
- border-left-color: #74a7cb;
-}
+ border-left-color: #74a7cb; }
.reveal .controls div.navigate-up.enabled:hover {
- border-bottom-color: #74a7cb;
-}
+ border-bottom-color: #74a7cb; }
.reveal .controls div.navigate-down.enabled:hover {
- border-top-color: #74a7cb;
-}
+ border-top-color: #74a7cb; }
/*********************************************
* PROGRESS BAR
*********************************************/
.reveal .progress {
- background: rgba(0, 0, 0, 0.2);
-}
+ background: rgba(0, 0, 0, 0.2); }
.reveal .progress span {
background: #3b759e;
@@ -152,5 +133,4 @@ body {
-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);
-}
+ transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
diff --git a/css/theme/solarized.css b/css/theme/solarized.css
new file mode 100644
index 0000000..a89fd09
--- /dev/null
+++ b/css/theme/solarized.css
@@ -0,0 +1,142 @@
+@import url(http://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+/**
+ * Solarized Light theme for reveal.js.
+ * Author: Achim Staebler
+ */
+@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; }
+
+/**
+ * Solarized colors by Ethan Schoonover
+ */
+html * {
+ color-profile: sRGB;
+ rendering-intent: auto; }
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+body {
+ background: #fdf6e3;
+ background-color: #fdf6e3; }
+
+.reveal {
+ font-family: "Lato", sans-serif;
+ font-size: 36px;
+ font-weight: 200;
+ letter-spacing: -0.02em;
+ color: #657b83; }
+
+::selection {
+ color: white;
+ background: #d33682;
+ text-shadow: none; }
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+ margin: 0 0 20px 0;
+ color: #586e75;
+ 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: 0px 0px 6px rgba(0, 0, 0, 0.2); }
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a:not(.image) {
+ color: #268bd2;
+ text-decoration: none;
+ -webkit-transition: color 0.15s ease;
+ -moz-transition: color 0.15s ease;
+ -ms-transition: color 0.15s ease;
+ -o-transition: color 0.15s ease;
+ transition: color 0.15s ease; }
+
+.reveal a:not(.image):hover {
+ color: #78b9e6;
+ text-shadow: none;
+ border: none; }
+
+.reveal .roll span:after {
+ color: #fff;
+ background: #1a6091; }
+
+/*********************************************
+ * IMAGES
+ *********************************************/
+.reveal section img {
+ margin: 15px 0px;
+ background: rgba(255, 255, 255, 0.12);
+ border: 4px solid #657b83;
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+ -webkit-transition: all 0.2s linear;
+ -moz-transition: all 0.2s linear;
+ -ms-transition: all 0.2s linear;
+ -o-transition: all 0.2s linear;
+ transition: all 0.2s linear; }
+
+.reveal a:hover img {
+ background: rgba(255, 255, 255, 0.2);
+ border-color: #268bd2;
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls div.navigate-left,
+.reveal .controls div.navigate-left.enabled {
+ border-right-color: #268bd2; }
+
+.reveal .controls div.navigate-right,
+.reveal .controls div.navigate-right.enabled {
+ border-left-color: #268bd2; }
+
+.reveal .controls div.navigate-up,
+.reveal .controls div.navigate-up.enabled {
+ border-bottom-color: #268bd2; }
+
+.reveal .controls div.navigate-down,
+.reveal .controls div.navigate-down.enabled {
+ border-top-color: #268bd2; }
+
+.reveal .controls div.navigate-left.enabled:hover {
+ border-right-color: #78b9e6; }
+
+.reveal .controls div.navigate-right.enabled:hover {
+ border-left-color: #78b9e6; }
+
+.reveal .controls div.navigate-up.enabled:hover {
+ border-bottom-color: #78b9e6; }
+
+.reveal .controls div.navigate-down.enabled:hover {
+ border-top-color: #78b9e6; }
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+ background: rgba(0, 0, 0, 0.2); }
+
+.reveal .progress span {
+ background: #268bd2;
+ -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/moon.scss b/css/theme/source/moon.scss
new file mode 100644
index 0000000..b120935
--- /dev/null
+++ b/css/theme/source/moon.scss
@@ -0,0 +1,68 @@
+/**
+ * Solarized Dark theme for reveal.js.
+ * Author: Achim Staebler
+ */
+
+
+// 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);
+
+/**
+ * Solarized colors by Ethan Schoonover
+ */
+html * {
+ color-profile: sRGB;
+ rendering-intent: auto;
+}
+
+// Solarized colors
+$base03: #002b36;
+$base02: #073642;
+$base01: #586e75;
+$base00: #657b83;
+$base0: #839496;
+$base1: #93a1a1;
+$base2: #eee8d5;
+$base3: #fdf6e3;
+$yellow: #b58900;
+$orange: #cb4b16;
+$red: #dc322f;
+$magenta: #d33682;
+$violet: #6c71c4;
+$blue: #268bd2;
+$cyan: #2aa198;
+$green: #859900;
+
+// Override theme settings (see ../template/settings.scss)
+$mainColor: $base1;
+$headingColor: $base2;
+$headingTextShadow: none;
+$backgroundColor: $base03;
+$linkColor: $blue;
+$linkColorHover: lighten( $linkColor, 20% );
+$selectionBackgroundColor: $magenta;
+
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
diff --git a/css/theme/source/night.scss b/css/theme/source/night.scss
index 6646857..4a1e3f5 100644
--- a/css/theme/source/night.scss
+++ b/css/theme/source/night.scss
@@ -19,7 +19,7 @@
// Override theme settings (see ../template/settings.scss)
$backgroundColor: #111;
-$mainFont: 'Open Sans', Times, 'Times New Roman', serif;
+$mainFont: 'Open Sans', sans-serif;
$linkColor: #e7ad52;
$linkColorHover: lighten( $linkColor, 20% );
$headingFont: 'Montserrat', Impact, sans-serif;
diff --git a/css/theme/source/serif.scss b/css/theme/source/serif.scss
index dc0935f..06eaca8 100644
--- a/css/theme/source/serif.scss
+++ b/css/theme/source/serif.scss
@@ -1,7 +1,7 @@
/**
- * A simple theme for reveal.js presentations, similar
+ * 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.
*/
diff --git a/css/theme/source/simple.scss b/css/theme/source/simple.scss
index 713ab44..a9c4000 100644
--- a/css/theme/source/simple.scss
+++ b/css/theme/source/simple.scss
@@ -20,7 +20,7 @@
// Override theme settings (see ../template/settings.scss)
-$mainFont: 'Lato', Times, 'Times New Roman', serif;
+$mainFont: 'Lato', sans-serif;
$mainColor: #000;
$headingFont: 'News Cycle', Impact, sans-serif;
$headingColor: #000;
diff --git a/css/theme/source/solarized.scss b/css/theme/source/solarized.scss
new file mode 100644
index 0000000..5e283ef
--- /dev/null
+++ b/css/theme/source/solarized.scss
@@ -0,0 +1,74 @@
+/**
+ * Solarized Light theme for reveal.js.
+ * Author: Achim Staebler
+ */
+
+
+// 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);
+
+
+/**
+ * Solarized colors by Ethan Schoonover
+ */
+html * {
+ color-profile: sRGB;
+ rendering-intent: auto;
+}
+
+// Solarized colors
+$base03: #002b36;
+$base02: #073642;
+$base01: #586e75;
+$base00: #657b83;
+$base0: #839496;
+$base1: #93a1a1;
+$base2: #eee8d5;
+$base3: #fdf6e3;
+$yellow: #b58900;
+$orange: #cb4b16;
+$red: #dc322f;
+$magenta: #d33682;
+$violet: #6c71c4;
+$blue: #268bd2;
+$cyan: #2aa198;
+$green: #859900;
+
+// Override theme settings (see ../template/settings.scss)
+$mainColor: $base00;
+$headingColor: $base01;
+$headingTextShadow: none;
+$backgroundColor: $base3;
+$linkColor: $blue;
+$linkColorHover: lighten( $linkColor, 20% );
+$selectionBackgroundColor: $magenta;
+
+// Background generator
+// @mixin bodyBackground() {
+// @include radial-gradient( rgba($base3,1), rgba(lighten($base3, 20%),1) );
+// }
+
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
diff --git a/css/theme/template/settings.scss b/css/theme/template/settings.scss
index bc9f138..7e9ffd8 100644
--- a/css/theme/template/settings.scss
+++ b/css/theme/template/settings.scss
@@ -1,11 +1,11 @@
-// Base settings for all themes that can optionally be
+// 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;
+$mainFont: 'Lato', sans-serif;
$mainFontSize: 36px;
$mainColor: #eee;
diff --git a/index.html b/index.html
index 5d69f8a..9c25caa 100644
--- a/index.html
+++ b/index.html
@@ -359,12 +359,12 @@ function linkify( selector ) {
theme: Reveal.getQueryHash().theme, // available themes are in /css/theme
transition: Reveal.getQueryHash().transition || 'default', // default/cube/page/concave/zoom/linear/fade/none
globals: {
- //multiplex: {
- //// Generate a unique id and secret at http://revealjs.jit.su/token
- // id: ''
- // , secret: ''
- // , url: 'revealjs.jit.su:80'
- //}
+ // Generate a unique id and secret at http://revealjs.jit.su/token
+ multiplex: {
+ id: '7d10234555b923e2',
+ secret: '13627859051503309760',
+ url: 'revealjs.jit.su:80'
+ }
},
// Optional libraries used to extend on reveal.js
diff --git a/js/reveal.js b/js/reveal.js
index 72f68cb..b767594 100644
--- a/js/reveal.js
+++ b/js/reveal.js
@@ -77,9 +77,8 @@ var Reveal = (function(){
dependencies: []
},
- // Stores if the next slide should be shown automatically
- // after n milliseconds
- autoSlide = config.autoSlide,
+ // The current auto-slide duration
+ autoSlide = 0,
// The horizontal and vertical index of the currently active slide
indexh = 0,
@@ -160,9 +159,9 @@ var Reveal = (function(){
// Copy options over to our config object
extend( config, options );
-
+
// Push up globals
- window.globals = config.globals
+ window.globals = config.globals;
// Hide the address bar in mobile browsers
hideAddressBar();
@@ -319,9 +318,6 @@ var Reveal = (function(){
// Read the initial hash
readURL();
- // Start auto-sliding if it's enabled
- cueAutoSlide();
-
// Notify listeners that the presentation is ready but use a 1ms
// timeout to ensure it's not fired synchronously after #initialize()
setTimeout( function() {
@@ -404,6 +400,12 @@ var Reveal = (function(){
// Force a layout to make sure the current config is accounted for
layout();
+ // Reflect the current autoSlide value
+ autoSlide = config.autoSlide;
+
+ // Start auto-sliding if it's enabled
+ cueAutoSlide();
+
}
/**
@@ -417,9 +419,16 @@ var Reveal = (function(){
window.addEventListener( 'resize', onWindowResize, false );
if( config.touch ) {
- document.addEventListener( 'touchstart', onDocumentTouchStart, false );
- document.addEventListener( 'touchmove', onDocumentTouchMove, false );
- document.addEventListener( 'touchend', onDocumentTouchEnd, false );
+ dom.wrapper.addEventListener( 'touchstart', onTouchStart, false );
+ dom.wrapper.addEventListener( 'touchmove', onTouchMove, false );
+ dom.wrapper.addEventListener( 'touchend', onTouchEnd, false );
+
+ // Support pointer-style touch interaction as well
+ if( window.navigator.msPointerEnabled ) {
+ dom.wrapper.addEventListener( 'MSPointerDown', onPointerDown, false );
+ dom.wrapper.addEventListener( 'MSPointerMove', onPointerMove, false );
+ dom.wrapper.addEventListener( 'MSPointerUp', onPointerUp, false );
+ }
}
if( config.keyboard ) {
@@ -431,13 +440,14 @@ var Reveal = (function(){
}
if ( config.controls && dom.controls ) {
- var actionEvent = 'ontouchstart' in window && window.ontouchstart != null ? 'touchstart' : 'click';
- dom.controlsLeft.forEach( function( el ) { el.addEventListener( actionEvent, onNavigateLeftClicked, false ); } );
- dom.controlsRight.forEach( function( el ) { el.addEventListener( actionEvent, onNavigateRightClicked, false ); } );
- dom.controlsUp.forEach( function( el ) { el.addEventListener( actionEvent, onNavigateUpClicked, false ); } );
- dom.controlsDown.forEach( function( el ) { el.addEventListener( actionEvent, onNavigateDownClicked, false ); } );
- dom.controlsPrev.forEach( function( el ) { el.addEventListener( actionEvent, onNavigatePrevClicked, false ); } );
- dom.controlsNext.forEach( function( el ) { el.addEventListener( actionEvent, onNavigateNextClicked, false ); } );
+ [ 'touchstart', 'click' ].forEach( function( eventName ) {
+ dom.controlsLeft.forEach( function( el ) { el.addEventListener( eventName, onNavigateLeftClicked, false ); } );
+ dom.controlsRight.forEach( function( el ) { el.addEventListener( eventName, onNavigateRightClicked, false ); } );
+ dom.controlsUp.forEach( function( el ) { el.addEventListener( eventName, onNavigateUpClicked, false ); } );
+ dom.controlsDown.forEach( function( el ) { el.addEventListener( eventName, onNavigateDownClicked, false ); } );
+ dom.controlsPrev.forEach( function( el ) { el.addEventListener( eventName, onNavigatePrevClicked, false ); } );
+ dom.controlsNext.forEach( function( el ) { el.addEventListener( eventName, onNavigateNextClicked, false ); } );
+ } );
}
}
@@ -454,9 +464,15 @@ var Reveal = (function(){
window.removeEventListener( 'resize', onWindowResize, false );
if( config.touch ) {
- document.removeEventListener( 'touchstart', onDocumentTouchStart, false );
- document.removeEventListener( 'touchmove', onDocumentTouchMove, false );
- document.removeEventListener( 'touchend', onDocumentTouchEnd, false );
+ dom.wrapper.removeEventListener( 'touchstart', onTouchStart, false );
+ dom.wrapper.removeEventListener( 'touchmove', onTouchMove, false );
+ dom.wrapper.removeEventListener( 'touchend', onTouchEnd, false );
+
+ if( window.navigator.msPointerEnabled ) {
+ dom.wrapper.removeEventListener( 'MSPointerDown', onPointerDown, false );
+ dom.wrapper.removeEventListener( 'MSPointerMove', onPointerMove, false );
+ dom.wrapper.removeEventListener( 'MSPointerUp', onPointerUp, false );
+ }
}
if ( config.progress && dom.progress ) {
@@ -464,13 +480,14 @@ var Reveal = (function(){
}
if ( config.controls && dom.controls ) {
- var actionEvent = 'ontouchstart' in window && window.ontouchstart != null ? 'touchstart' : 'click';
- dom.controlsLeft.forEach( function( el ) { el.removeEventListener( actionEvent, onNavigateLeftClicked, false ); } );
- dom.controlsRight.forEach( function( el ) { el.removeEventListener( actionEvent, onNavigateRightClicked, false ); } );
- dom.controlsUp.forEach( function( el ) { el.removeEventListener( actionEvent, onNavigateUpClicked, false ); } );
- dom.controlsDown.forEach( function( el ) { el.removeEventListener( actionEvent, onNavigateDownClicked, false ); } );
- dom.controlsPrev.forEach( function( el ) { el.removeEventListener( actionEvent, onNavigatePrevClicked, false ); } );
- dom.controlsNext.forEach( function( el ) { el.removeEventListener( actionEvent, onNavigateNextClicked, false ); } );
+ [ 'touchstart', 'click' ].forEach( function( eventName ) {
+ dom.controlsLeft.forEach( function( el ) { el.removeEventListener( eventName, onNavigateLeftClicked, false ); } );
+ dom.controlsRight.forEach( function( el ) { el.removeEventListener( eventName, onNavigateRightClicked, false ); } );
+ dom.controlsUp.forEach( function( el ) { el.removeEventListener( eventName, onNavigateUpClicked, false ); } );
+ dom.controlsDown.forEach( function( el ) { el.removeEventListener( eventName, onNavigateDownClicked, false ); } );
+ dom.controlsPrev.forEach( function( el ) { el.removeEventListener( eventName, onNavigatePrevClicked, false ); } );
+ dom.controlsNext.forEach( function( el ) { el.removeEventListener( eventName, onNavigateNextClicked, false ); } );
+ } );
}
}
@@ -719,7 +736,7 @@ var Reveal = (function(){
*/
function setPreviousVerticalIndex( stack, v ) {
- if( stack ) {
+ if( typeof stack === 'object' && typeof stack.setAttribute === 'function' ) {
stack.setAttribute( 'data-previous-indexv', v || 0 );
}
@@ -734,7 +751,7 @@ var Reveal = (function(){
*/
function getPreviousVerticalIndex( stack ) {
- if( stack && stack.classList.contains( 'stack' ) ) {
+ if( typeof stack === 'object' && typeof stack.setAttribute === 'function' && stack.classList.contains( 'stack' ) ) {
return parseInt( stack.getAttribute( 'data-previous-indexv' ) || 0, 10 );
}
@@ -1327,8 +1344,8 @@ var Reveal = (function(){
verticalSlides = document.querySelectorAll( VERTICAL_SLIDES_SELECTOR );
return {
- left: indexh > 0,
- right: indexh < horizontalSlides.length - 1,
+ left: indexh > 0 || config.loop,
+ right: indexh < horizontalSlides.length - 1 || config.loop,
up: indexv > 0,
down: indexv < verticalSlides.length - 1
};
@@ -1546,7 +1563,7 @@ var Reveal = (function(){
function navigateLeft() {
// Prioritize hiding fragments
- if( availableRoutes().left && isOverview() || previousFragment() === false ) {
+ if( availableRoutes().left && ( isOverview() || previousFragment() === false ) ) {
slide( indexh - 1 );
}
@@ -1555,7 +1572,7 @@ var Reveal = (function(){
function navigateRight() {
// Prioritize revealing fragments
- if( availableRoutes().right && isOverview() || nextFragment() === false ) {
+ if( availableRoutes().right && ( isOverview() || nextFragment() === false ) ) {
slide( indexh + 1 );
}
@@ -1698,10 +1715,10 @@ var Reveal = (function(){
}
/**
- * Handler for the document level 'touchstart' event,
- * enables support for swipe and pinch gestures.
+ * Handler for the 'touchstart' event, enables support for
+ * swipe and pinch gestures.
*/
- function onDocumentTouchStart( event ) {
+ function onTouchStart( event ) {
touch.startX = event.touches[0].clientX;
touch.startY = event.touches[0].clientY;
@@ -1722,9 +1739,9 @@ var Reveal = (function(){
}
/**
- * Handler for the document level 'touchmove' event.
+ * Handler for the 'touchmove' event.
*/
- function onDocumentTouchMove( event ) {
+ function onTouchMove( event ) {
// Each touch should only trigger one action
if( !touch.handled ) {
@@ -1796,15 +1813,51 @@ var Reveal = (function(){
}
/**
- * Handler for the document level 'touchend' event.
+ * Handler for the 'touchend' event.
*/
- function onDocumentTouchEnd( event ) {
+ function onTouchEnd( event ) {
touch.handled = false;
}
/**
+ * Convert pointer down to touch start.
+ */
+ function onPointerDown( event ) {
+
+ if( event.pointerType === event.MSPOINTER_TYPE_TOUCH ) {
+ event.touches = [{ clientX: event.clientX, clientY: event.clientY }];
+ onTouchStart( event );
+ }
+
+ }
+
+ /**
+ * Convert pointer move to touch move.
+ */
+ function onPointerMove( event ) {
+
+ if( event.pointerType === event.MSPOINTER_TYPE_TOUCH ) {
+ event.touches = [{ clientX: event.clientX, clientY: event.clientY }];
+ onTouchMove( event );
+ }
+
+ }
+
+ /**
+ * Convert pointer up to touch end.
+ */
+ function onPointerUp( event ) {
+
+ if( event.pointerType === event.MSPOINTER_TYPE_TOUCH ) {
+ event.touches = [{ clientX: event.clientX, clientY: event.clientY }];
+ onTouchEnd( event );
+ }
+
+ }
+
+ /**
* Handles mouse wheel scrolling, throttled to avoid skipping
* multiple slides.
*/
diff --git a/js/reveal.min.js b/js/reveal.min.js
index 15c758e..9ca8c72 100644
--- a/js/reveal.min.js
+++ b/js/reveal.min.js
@@ -1,8 +1,8 @@
/*!
- * reveal.js 2.3.0 (2013-03-08, 12:41)
+ * reveal.js 2.3.0 (2013-03-08, 18:36)
* http://lab.hakim.se/reveal-js
* MIT licensed
*
* Copyright (C) 2013 Hakim El Hattab, http://hakim.se
*/
-var Reveal=function(){"use strict";function e(e){return bt||Lt?(window.addEventListener("load",h,!1),c(ft,e),window.globals=ft.globals,n(),r(),void 0):(document.body.setAttribute("class","no-transforms"),void 0)}function t(){if(wt.theme=document.querySelector("#theme"),wt.wrapper=document.querySelector(".reveal"),wt.slides=document.querySelector(".reveal .slides"),!wt.wrapper.querySelector(".progress")&&ft.progress){var e=document.createElement("div");e.classList.add("progress"),e.innerHTML="<span></span>",wt.wrapper.appendChild(e)}if(!wt.wrapper.querySelector(".controls")&&ft.controls){var t=document.createElement("aside");t.classList.add("controls"),t.innerHTML='<div class="navigate-left"></div><div class="navigate-right"></div><div class="navigate-up"></div><div class="navigate-down"></div>',wt.wrapper.appendChild(t)}if(!wt.wrapper.querySelector(".state-background")){var n=document.createElement("div");n.classList.add("state-background"),wt.wrapper.appendChild(n)}if(!wt.wrapper.querySelector(".pause-overlay")){var r=document.createElement("div");r.classList.add("pause-overlay"),wt.wrapper.appendChild(r)}wt.progress=document.querySelector(".reveal .progress"),wt.progressbar=document.querySelector(".reveal .progress span"),ft.controls&&(wt.controls=document.querySelector(".reveal .controls"),wt.controlsLeft=l(document.querySelectorAll(".navigate-left")),wt.controlsRight=l(document.querySelectorAll(".navigate-right")),wt.controlsUp=l(document.querySelectorAll(".navigate-up")),wt.controlsDown=l(document.querySelectorAll(".navigate-down")),wt.controlsPrev=l(document.querySelectorAll(".navigate-prev")),wt.controlsNext=l(document.querySelectorAll(".navigate-next")))}function n(){/iphone|ipod|android/gi.test(navigator.userAgent)&&!/crios/gi.test(navigator.userAgent)&&(window.addEventListener("load",u,!1),window.addEventListener("orientationchange",u,!1))}function r(){function e(){n.length&&head.js.apply(null,n),o()}for(var t=[],n=[],r=0,s=ft.dependencies.length;s>r;r++){var a=ft.dependencies[r];(!a.condition||a.condition())&&(a.async?n.push(a.src):t.push(a.src),"function"==typeof a.callback&&head.ready(a.src.match(/([\w\d_\-]*)\.?js$|[^\\\/]*$/i)[0],a.callback))}t.length?(head.ready(e),head.js.apply(null,t)):e()}function o(){t(),a(),s(),P(),R(),setTimeout(function(){v("ready",{indexh:pt,indexv:ht,currentSlide:ct})},1)}function s(e){if(wt.wrapper.classList.remove(ft.transition),"object"==typeof e&&c(ft,e),Lt===!1&&(ft.transition="linear"),wt.wrapper.classList.add(ft.transition),wt.controls&&(wt.controls.style.display=ft.controls&&wt.controls?"block":"none"),wt.progress&&(wt.progress.style.display=ft.progress&&wt.progress?"block":"none"),ft.rtl?wt.wrapper.classList.add("rtl"):wt.wrapper.classList.remove("rtl"),ft.center?wt.wrapper.classList.add("center"):wt.wrapper.classList.remove("center"),ft.mouseWheel?(document.addEventListener("DOMMouseScroll",V,!1),document.addEventListener("mousewheel",V,!1)):(document.removeEventListener("DOMMouseScroll",V,!1),document.removeEventListener("mousewheel",V,!1)),ft.rollingLinks?f():m(),ft.theme&&wt.theme){var t=wt.theme.getAttribute("href"),n=/[^\/]*?(?=\.css)/,r=t.match(n)[0];ft.theme!==r&&(t=t.replace(n,ft.theme),wt.theme.setAttribute("href",t))}h()}function a(){if(xt=!0,window.addEventListener("hashchange",ot,!1),window.addEventListener("resize",st,!1),ft.touch&&(document.addEventListener("touchstart",Z,!1),document.addEventListener("touchmove",_,!1),document.addEventListener("touchend",Q,!1)),ft.keyboard&&document.addEventListener("keydown",$,!1),ft.progress&&wt.progress&&wt.progress.addEventListener("click",B,!1),ft.controls&&wt.controls){var e="ontouchstart"in window&&null!=window.ontouchstart?"touchstart":"click";wt.controlsLeft.forEach(function(t){t.addEventListener(e,G,!1)}),wt.controlsRight.forEach(function(t){t.addEventListener(e,J,!1)}),wt.controlsUp.forEach(function(t){t.addEventListener(e,et,!1)}),wt.controlsDown.forEach(function(t){t.addEventListener(e,tt,!1)}),wt.controlsPrev.forEach(function(t){t.addEventListener(e,nt,!1)}),wt.controlsNext.forEach(function(t){t.addEventListener(e,rt,!1)})}}function i(){if(xt=!1,document.removeEventListener("keydown",$,!1),window.removeEventListener("hashchange",ot,!1),window.removeEventListener("resize",st,!1),ft.touch&&(document.removeEventListener("touchstart",Z,!1),document.removeEventListener("touchmove",_,!1),document.removeEventListener("touchend",Q,!1)),ft.progress&&wt.progress&&wt.progress.removeEventListener("click",B,!1),ft.controls&&wt.controls){var e="ontouchstart"in window&&null!=window.ontouchstart?"touchstart":"click";wt.controlsLeft.forEach(function(t){t.removeEventListener(e,G,!1)}),wt.controlsRight.forEach(function(t){t.removeEventListener(e,J,!1)}),wt.controlsUp.forEach(function(t){t.removeEventListener(e,et,!1)}),wt.controlsDown.forEach(function(t){t.removeEventListener(e,tt,!1)}),wt.controlsPrev.forEach(function(t){t.removeEventListener(e,nt,!1)}),wt.controlsNext.forEach(function(t){t.removeEventListener(e,rt,!1)})}}function c(e,t){for(var n in t)e[n]=t[n]}function l(e){return Array.prototype.slice.call(e)}function d(e,t){var n=e.x-t.x,r=e.y-t.y;return Math.sqrt(n*n+r*r)}function u(){0===window.orientation?(document.documentElement.style.overflow="scroll",document.body.style.height="120%"):(document.documentElement.style.overflow="",document.body.style.height="100%"),setTimeout(function(){window.scrollTo(0,1)},10)}function v(e,t){var n=document.createEvent("HTMLEvents",1,2);n.initEvent(e,!0,!0),c(n,t),wt.wrapper.dispatchEvent(n)}function f(){if(Lt&&!("msPerspective"in document.body.style))for(var e=document.querySelectorAll(lt+" a:not(.image)"),t=0,n=e.length;n>t;t++){var r=e[t];if(!(!r.textContent||r.querySelector("*")||r.className&&r.classList.contains(r,"roll"))){var o=document.createElement("span");o.setAttribute("data-title",r.text),o.innerHTML=r.innerHTML,r.classList.add("roll"),r.innerHTML="",r.appendChild(o)}}}function m(){for(var e=document.querySelectorAll(lt+" a.roll"),t=0,n=e.length;n>t;t++){var r=e[t],o=r.querySelector("span");o&&(r.classList.remove("roll"),r.innerHTML=o.innerHTML)}}function p(e){var t=l(e);return t.forEach(function(e,t){e.hasAttribute("data-fragment-index")||e.setAttribute("data-fragment-index",t)}),t.sort(function(e,t){return e.getAttribute("data-fragment-index")-t.getAttribute("data-fragment-index")}),t}function h(){if(wt.wrapper){var e=wt.wrapper.offsetWidth,t=wt.wrapper.offsetHeight;e-=t*ft.margin,t-=t*ft.margin;var n=ft.width,r=ft.height;if("string"==typeof n&&/%$/.test(n)&&(n=parseInt(n,10)/100*e),"string"==typeof r&&/%$/.test(r)&&(r=parseInt(r,10)/100*t),wt.slides.style.width=n+"px",wt.slides.style.height=r+"px",yt=Math.min(e/n,t/r),yt=Math.max(yt,ft.minScale),yt=Math.min(yt,ft.maxScale),void 0===wt.slides.style.zoom||navigator.userAgent.match(/(iphone|ipod|ipad|android)/gi)){var o="translate(-50%, -50%) scale("+yt+") translate(50%, 50%)";wt.slides.style.WebkitTransform=o,wt.slides.style.MozTransform=o,wt.slides.style.msTransform=o,wt.slides.style.OTransform=o,wt.slides.style.transform=o}else wt.slides.style.zoom=yt;for(var s=l(document.querySelectorAll(lt)),a=0,i=s.length;i>a;a++){var c=s[a];"none"!==c.style.display&&(c.style.top=ft.center?c.classList.contains("stack")?0:Math.max(-(c.offsetHeight/2)-20,-r/2)+"px":"")}}}function g(e,t){e&&e.setAttribute("data-previous-indexv",t||0)}function y(e){return e&&e.classList.contains("stack")?parseInt(e.getAttribute("data-previous-indexv")||0,10):0}function w(){if(ft.overview){W();var e=wt.wrapper.classList.contains("overview");wt.wrapper.classList.add("overview"),wt.wrapper.classList.remove("exit-overview"),clearTimeout(At),clearTimeout(kt),At=setTimeout(function(){for(var t=document.querySelectorAll(dt),n=0,r=t.length;r>n;n++){var o=t[n],s="translateZ(-2500px) translate("+105*(n-pt)+"%, 0%)";if(o.setAttribute("data-index-h",n),o.style.display="block",o.style.WebkitTransform=s,o.style.MozTransform=s,o.style.msTransform=s,o.style.OTransform=s,o.style.transform=s,o.classList.contains("stack"))for(var a=o.querySelectorAll("section"),i=0,c=a.length;c>i;i++){var l=n===pt?ht:y(o),d=a[i],u="translate(0%, "+105*(i-l)+"%)";d.setAttribute("data-index-h",n),d.setAttribute("data-index-v",i),d.style.display="block",d.style.WebkitTransform=u,d.style.MozTransform=u,d.style.msTransform=u,d.style.OTransform=u,d.style.transform=u,d.addEventListener("click",at,!0)}else o.addEventListener("click",at,!0)}h(),e||v("overviewshown",{indexh:pt,indexv:ht,currentSlide:ct})},10)}}function L(){if(ft.overview){clearTimeout(At),clearTimeout(kt),wt.wrapper.classList.remove("overview"),wt.wrapper.classList.add("exit-overview"),kt=setTimeout(function(){wt.wrapper.classList.remove("exit-overview")},10);for(var e=l(document.querySelectorAll(lt)),t=0,n=e.length;n>t;t++){var r=e[t];r.style.display="",r.style.WebkitTransform="",r.style.MozTransform="",r.style.msTransform="",r.style.OTransform="",r.style.transform="",r.removeEventListener("click",at,!0)}T(pt,ht),R(),v("overviewhidden",{indexh:pt,indexv:ht,currentSlide:ct})}}function b(e){"boolean"==typeof e?e?w():L():E()?L():w()}function E(){return wt.wrapper.classList.contains("overview")}function S(){var e=document.body,t=e.requestFullScreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullScreen;t&&t.apply(e)}function q(){var e=wt.wrapper.classList.contains("paused");W(),wt.wrapper.classList.add("paused"),e===!1&&v("paused")}function A(){var e=wt.wrapper.classList.contains("paused");R(),wt.wrapper.classList.remove("paused"),e&&v("resumed")}function k(){x()?A():q()}function x(){return wt.wrapper.classList.contains("paused")}function T(e,t,n,r){it=ct;var o=document.querySelectorAll(dt);void 0===t&&(t=y(o[e])),it&&it.parentNode&&it.parentNode.classList.contains("stack")&&g(it.parentNode,ht);var s=gt.concat();gt.length=0;var a=pt,i=ht;pt=M(dt,void 0===e?pt:e),ht=M(ut,void 0===t?ht:t),h();e:for(var c=0,d=gt.length;d>c;c++){for(var u=0;s.length>u;u++)if(s[u]===gt[c]){s.splice(u,1);continue e}document.documentElement.classList.add(gt[c]),v(gt[c])}for(;s.length;)document.documentElement.classList.remove(s.pop());E()&&w(),O(1500);var f=o[pt],m=f.querySelectorAll("section");if(ct=m[ht]||f,n!==void 0){var L=p(ct.querySelectorAll(".fragment"));l(L).forEach(function(e,t){n>t?e.classList.add("visible"):e.classList.remove("visible")})}pt!==a||ht!==i?v("slidechanged",{indexh:pt,indexv:ht,previousSlide:it,currentSlide:ct,origin:r}):it=null,it&&(it.classList.remove("present"),document.querySelector(vt).classList.contains("present")&&setTimeout(function(){var e,t=l(document.querySelectorAll(dt+".stack"));for(e in t)t[e]&&g(t[e],0)},0)),N(),D()}function M(e,t){var n=l(document.querySelectorAll(e)),r=n.length;if(r){ft.loop&&(t%=r,0>t&&(t=r+t)),t=Math.max(Math.min(t,r-1),0);for(var o=0;r>o;o++){var s=n[o];if(E()===!1){var a=Math.abs((t-o)%(r-3))||0;s.style.display=a>3?"none":"block"}n[o].classList.remove("past"),n[o].classList.remove("present"),n[o].classList.remove("future"),t>o?n[o].classList.add("past"):o>t&&n[o].classList.add("future"),s.querySelector("section")&&n[o].classList.add("stack")}n[t].classList.add("present");var i=n[t].getAttribute("data-state");i&&(gt=gt.concat(i.split(" ")));var c=n[t].getAttribute("data-autoslide");mt=c?parseInt(c,10):ft.autoSlide}else t=0;return t}function D(){if(ft.progress&&wt.progress){var e=l(document.querySelectorAll(dt)),t=document.querySelectorAll(lt+":not(.stack)").length,n=0;e:for(var r=0;e.length>r;r++){for(var o=e[r],s=l(o.querySelectorAll("section")),a=0;s.length>a;a++){if(s[a].classList.contains("present"))break e;n++}if(o.classList.contains("present"))break;o.classList.contains("stack")===!1&&n++}wt.progressbar.style.width=n/(t-1)*window.innerWidth+"px"}}function N(){if(ft.controls&&wt.controls){var e=C();wt.controlsLeft.concat(wt.controlsRight).concat(wt.controlsUp).concat(wt.controlsDown).concat(wt.controlsPrev).concat(wt.controlsNext).forEach(function(e){e.classList.remove("enabled")}),e.left&&wt.controlsLeft.forEach(function(e){e.classList.add("enabled")}),e.right&&wt.controlsRight.forEach(function(e){e.classList.add("enabled")}),e.up&&wt.controlsUp.forEach(function(e){e.classList.add("enabled")}),e.down&&wt.controlsDown.forEach(function(e){e.classList.add("enabled")}),(e.left||e.up)&&wt.controlsPrev.forEach(function(e){e.classList.add("enabled")}),(e.right||e.down)&&wt.controlsNext.forEach(function(e){e.classList.add("enabled")})}}function C(){var e=document.querySelectorAll(dt),t=document.querySelectorAll(ut);return{left:pt>0,right:e.length-1>pt,up:ht>0,down:t.length-1>ht}}function P(){var e=window.location.hash,t=e.slice(2).split("/"),n=e.replace(/#|\//gi,"");if(isNaN(parseInt(t[0],10))&&n.length){var r=document.querySelector("#"+n);if(r){var o=Reveal.getIndices(r);T(o.h,o.v)}else T(pt,ht)}else{var s=parseInt(t[0],10)||0,a=parseInt(t[1],10)||0;T(s,a)}}function O(e){if(ft.history)if(clearTimeout(qt),"number"==typeof e)qt=setTimeout(O,e);else{var t="/";ct&&"string"==typeof ct.getAttribute("id")?t="/"+ct.getAttribute("id"):((pt>0||ht>0)&&(t+=pt),ht>0&&(t+="/"+ht)),window.location.hash=t}}function z(e){var t=pt,n=ht;if(e){var r=!!e.parentNode.nodeName.match(/section/gi),o=r?e.parentNode:e,s=l(document.querySelectorAll(dt));t=Math.max(s.indexOf(o),0),r&&(n=Math.max(l(e.parentNode.querySelectorAll("section")).indexOf(e),0))}return{h:t,v:n}}function H(){if(document.querySelector(ut+".present")){var e=p(document.querySelectorAll(ut+".present .fragment:not(.visible)"));if(e.length)return e[0].classList.add("visible"),v("fragmentshown",{fragment:e[0]}),!0}else{var t=p(document.querySelectorAll(dt+".present .fragment:not(.visible)"));if(t.length)return t[0].classList.add("visible"),v("fragmentshown",{fragment:t[0]}),!0}return!1}function I(){if(document.querySelector(ut+".present")){var e=p(document.querySelectorAll(ut+".present .fragment.visible"));if(e.length)return e[e.length-1].classList.remove("visible"),v("fragmenthidden",{fragment:e[e.length-1]}),!0}else{var t=p(document.querySelectorAll(dt+".present .fragment.visible"));if(t.length)return t[t.length-1].classList.remove("visible"),v("fragmenthidden",{fragment:t[t.length-1]}),!0}return!1}function R(){clearTimeout(St),!mt||x()||E()||(St=setTimeout(K,mt))}function W(){clearTimeout(St)}function X(){(C().left&&E()||I()===!1)&&T(pt-1)}function Y(){(C().right&&E()||H()===!1)&&T(pt+1)}function F(){(C().up&&E()||I()===!1)&&T(pt,ht-1)}function U(){(C().down&&E()||H()===!1)&&T(pt,ht+1)}function j(){if(I()===!1)if(C().up)F();else{var e=document.querySelector(dt+".past:nth-child("+pt+")");e&&(ht=e.querySelectorAll("section").length+1||void 0,pt--,T())}}function K(){H()===!1&&(C().down?U():Y()),R()}function $(e){document.activeElement;var t=!(!document.activeElement||!document.activeElement.type&&!document.activeElement.href&&"inherit"===document.activeElement.contentEditable);if(!(t||e.shiftKey||e.altKey||e.ctrlKey||e.metaKey)){var n=!0;if(x()&&-1===[66,190,191].indexOf(e.keyCode))return!1;switch(e.keyCode){case 80:case 33:j();break;case 78:case 34:K();break;case 72:case 37:X();break;case 76:case 39:Y();break;case 75:case 38:F();break;case 74:case 40:U();break;case 36:T(0);break;case 35:T(Number.MAX_VALUE);break;case 32:E()?L():K();break;case 13:E()?L():n=!1;break;case 66:case 190:case 191:k();break;case 70:S();break;default:n=!1}n?e.preventDefault():27===e.keyCode&&Lt&&(b(),e.preventDefault()),R()}}function Z(e){Tt.startX=e.touches[0].clientX,Tt.startY=e.touches[0].clientY,Tt.startCount=e.touches.length,2===e.touches.length&&ft.overview&&(Tt.startSpan=d({x:e.touches[1].clientX,y:e.touches[1].clientY},{x:Tt.startX,y:Tt.startY}))}function _(e){if(Tt.handled)navigator.userAgent.match(/android/gi)&&e.preventDefault();else{var t=e.touches[0].clientX,n=e.touches[0].clientY;if(2===e.touches.length&&2===Tt.startCount&&ft.overview){var r=d({x:e.touches[1].clientX,y:e.touches[1].clientY},{x:Tt.startX,y:Tt.startY});Math.abs(Tt.startSpan-r)>Tt.threshold&&(Tt.handled=!0,Tt.startSpan>r?w():L()),e.preventDefault()}else if(1===e.touches.length&&2!==Tt.startCount){var o=t-Tt.startX,s=n-Tt.startY;o>Tt.threshold&&Math.abs(o)>Math.abs(s)?(Tt.handled=!0,X()):-Tt.threshold>o&&Math.abs(o)>Math.abs(s)?(Tt.handled=!0,Y()):s>Tt.threshold?(Tt.handled=!0,F()):-Tt.threshold>s&&(Tt.handled=!0,U()),e.preventDefault()}}}function Q(){Tt.handled=!1}function V(e){clearTimeout(Et),Et=setTimeout(function(){var t=e.detail||-e.wheelDelta;t>0?K():j()},100)}function B(e){e.preventDefault();var t=l(document.querySelectorAll(dt)).length,n=Math.floor(e.clientX/wt.wrapper.offsetWidth*t);T(n)}function G(e){e.preventDefault(),X()}function J(e){e.preventDefault(),Y()}function et(e){e.preventDefault(),F()}function tt(e){e.preventDefault(),U()}function nt(e){e.preventDefault(),j()}function rt(e){e.preventDefault(),K()}function ot(){P()}function st(){h()}function at(e){if(xt&&E()){e.preventDefault();for(var t=e.target;t&&!t.nodeName.match(/section/gi);)t=t.parentNode;if(t&&!t.classList.contains("disabled")&&(L(),t.nodeName.match(/section/gi))){var n=parseInt(t.getAttribute("data-index-h"),10),r=parseInt(t.getAttribute("data-index-v"),10);T(n,r)}}}var it,ct,lt=".reveal .slides section",dt=".reveal .slides>section",ut=".reveal .slides>section.present>section",vt=".reveal .slides>section:first-child",ft={width:960,height:700,margin:.1,minScale:.2,maxScale:1,controls:!0,progress:!0,history:!1,keyboard:!0,overview:!0,center:!0,touch:!0,loop:!1,rtl:!1,autoSlide:0,mouseWheel:!1,rollingLinks:!0,theme:null,transition:"default",dependencies:[]},mt=ft.autoSlide,pt=0,ht=0,gt=[],yt=1,wt={},Lt="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,bt="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,Et=0,St=0,qt=0,At=0,kt=0,xt=!1,Tt={startX:0,startY:0,startSpan:0,startCount:0,handled:!1,threshold:80};return{initialize:e,configure:s,slide:T,left:X,right:Y,up:F,down:U,prev:j,next:K,prevFragment:I,nextFragment:H,navigateTo:T,navigateLeft:X,navigateRight:Y,navigateUp:F,navigateDown:U,navigatePrev:j,navigateNext:K,layout:h,toggleOverview:b,togglePause:k,isOverview:E,isPaused:x,addEventListeners:a,removeEventListeners:i,getIndices:z,getSlide:function(e,t){var n=document.querySelectorAll(dt)[e],r=n&&n.querySelectorAll("section");return t!==void 0?r?r[t]:void 0:n},getPreviousSlide:function(){return it},getCurrentSlide:function(){return ct},getScale:function(){return yt},getQueryHash:function(){var e={};return location.search.replace(/[A-Z0-9]+?=(\w*)/gi,function(t){e[t.split("=").shift()]=t.split("=").pop()}),e},isFirstSlide:function(){return null==document.querySelector(lt+".past")?!0:!1},isLastSlide:function(){return ct&&ct.classList.contains(".stack")?null==ct.querySelector(lt+".future")?!0:!1:null==document.querySelector(lt+".future")?!0:!1},addEventListener:function(e,t,n){"addEventListener"in window&&(wt.wrapper||document.querySelector(".reveal")).addEventListener(e,t,n)},removeEventListener:function(e,t,n){"addEventListener"in window&&(wt.wrapper||document.querySelector(".reveal")).removeEventListener(e,t,n)}}}(); \ No newline at end of file
+var Reveal=function(){"use strict";function e(e){return At||St?(window.addEventListener("load",h,!1),c(ht,e),window.globals=ht.globals,n(),r(),void 0):(document.body.setAttribute("class","no-transforms"),void 0)}function t(){if(Et.theme=document.querySelector("#theme"),Et.wrapper=document.querySelector(".reveal"),Et.slides=document.querySelector(".reveal .slides"),!Et.wrapper.querySelector(".progress")&&ht.progress){var e=document.createElement("div");e.classList.add("progress"),e.innerHTML="<span></span>",Et.wrapper.appendChild(e)}if(!Et.wrapper.querySelector(".controls")&&ht.controls){var t=document.createElement("aside");t.classList.add("controls"),t.innerHTML='<div class="navigate-left"></div><div class="navigate-right"></div><div class="navigate-up"></div><div class="navigate-down"></div>',Et.wrapper.appendChild(t)}if(!Et.wrapper.querySelector(".state-background")){var n=document.createElement("div");n.classList.add("state-background"),Et.wrapper.appendChild(n)}if(!Et.wrapper.querySelector(".pause-overlay")){var r=document.createElement("div");r.classList.add("pause-overlay"),Et.wrapper.appendChild(r)}Et.progress=document.querySelector(".reveal .progress"),Et.progressbar=document.querySelector(".reveal .progress span"),ht.controls&&(Et.controls=document.querySelector(".reveal .controls"),Et.controlsLeft=l(document.querySelectorAll(".navigate-left")),Et.controlsRight=l(document.querySelectorAll(".navigate-right")),Et.controlsUp=l(document.querySelectorAll(".navigate-up")),Et.controlsDown=l(document.querySelectorAll(".navigate-down")),Et.controlsPrev=l(document.querySelectorAll(".navigate-prev")),Et.controlsNext=l(document.querySelectorAll(".navigate-next")))}function n(){/iphone|ipod|android/gi.test(navigator.userAgent)&&!/crios/gi.test(navigator.userAgent)&&(window.addEventListener("load",u,!1),window.addEventListener("orientationchange",u,!1))}function r(){function e(){n.length&&head.js.apply(null,n),o()}for(var t=[],n=[],r=0,s=ht.dependencies.length;s>r;r++){var a=ht.dependencies[r];(!a.condition||a.condition())&&(a.async?n.push(a.src):t.push(a.src),"function"==typeof a.callback&&head.ready(a.src.match(/([\w\d_\-]*)\.?js$|[^\\\/]*$/i)[0],a.callback))}t.length?(head.ready(e),head.js.apply(null,t)):e()}function o(){t(),a(),s(),O(),setTimeout(function(){v("ready",{indexh:gt,indexv:wt,currentSlide:ut})},1)}function s(e){if(Et.wrapper.classList.remove(ht.transition),"object"==typeof e&&c(ht,e),St===!1&&(ht.transition="linear"),Et.wrapper.classList.add(ht.transition),Et.controls&&(Et.controls.style.display=ht.controls&&Et.controls?"block":"none"),Et.progress&&(Et.progress.style.display=ht.progress&&Et.progress?"block":"none"),ht.rtl?Et.wrapper.classList.add("rtl"):Et.wrapper.classList.remove("rtl"),ht.center?Et.wrapper.classList.add("center"):Et.wrapper.classList.remove("center"),ht.mouseWheel?(document.addEventListener("DOMMouseScroll",J,!1),document.addEventListener("mousewheel",J,!1)):(document.removeEventListener("DOMMouseScroll",J,!1),document.removeEventListener("mousewheel",J,!1)),ht.rollingLinks?f():p(),ht.theme&&Et.theme){var t=Et.theme.getAttribute("href"),n=/[^\/]*?(?=\.css)/,r=t.match(n)[0];ht.theme!==r&&(t=t.replace(n,ht.theme),Et.theme.setAttribute("href",t))}h(),yt=ht.autoSlide,I()}function a(){Pt=!0,window.addEventListener("hashchange",it,!1),window.addEventListener("resize",ct,!1),ht.touch&&(Et.wrapper.addEventListener("touchstart",$,!1),Et.wrapper.addEventListener("touchmove",Z,!1),Et.wrapper.addEventListener("touchend",Q,!1),window.navigator.msPointerEnabled&&(Et.wrapper.addEventListener("MSPointerDown",V,!1),Et.wrapper.addEventListener("MSPointerMove",B,!1),Et.wrapper.addEventListener("MSPointerUp",G,!1))),ht.keyboard&&document.addEventListener("keydown",K,!1),ht.progress&&Et.progress&&Et.progress.addEventListener("click",et,!1),ht.controls&&Et.controls&&["touchstart","click"].forEach(function(e){Et.controlsLeft.forEach(function(t){t.addEventListener(e,tt,!1)}),Et.controlsRight.forEach(function(t){t.addEventListener(e,nt,!1)}),Et.controlsUp.forEach(function(t){t.addEventListener(e,rt,!1)}),Et.controlsDown.forEach(function(t){t.addEventListener(e,ot,!1)}),Et.controlsPrev.forEach(function(t){t.addEventListener(e,st,!1)}),Et.controlsNext.forEach(function(t){t.addEventListener(e,at,!1)})})}function i(){Pt=!1,document.removeEventListener("keydown",K,!1),window.removeEventListener("hashchange",it,!1),window.removeEventListener("resize",ct,!1),ht.touch&&(Et.wrapper.removeEventListener("touchstart",$,!1),Et.wrapper.removeEventListener("touchmove",Z,!1),Et.wrapper.removeEventListener("touchend",Q,!1),window.navigator.msPointerEnabled&&(Et.wrapper.removeEventListener("MSPointerDown",V,!1),Et.wrapper.removeEventListener("MSPointerMove",B,!1),Et.wrapper.removeEventListener("MSPointerUp",G,!1))),ht.progress&&Et.progress&&Et.progress.removeEventListener("click",et,!1),ht.controls&&Et.controls&&["touchstart","click"].forEach(function(e){Et.controlsLeft.forEach(function(t){t.removeEventListener(e,tt,!1)}),Et.controlsRight.forEach(function(t){t.removeEventListener(e,nt,!1)}),Et.controlsUp.forEach(function(t){t.removeEventListener(e,rt,!1)}),Et.controlsDown.forEach(function(t){t.removeEventListener(e,ot,!1)}),Et.controlsPrev.forEach(function(t){t.removeEventListener(e,st,!1)}),Et.controlsNext.forEach(function(t){t.removeEventListener(e,at,!1)})})}function c(e,t){for(var n in t)e[n]=t[n]}function l(e){return Array.prototype.slice.call(e)}function d(e,t){var n=e.x-t.x,r=e.y-t.y;return Math.sqrt(n*n+r*r)}function u(){0===window.orientation?(document.documentElement.style.overflow="scroll",document.body.style.height="120%"):(document.documentElement.style.overflow="",document.body.style.height="100%"),setTimeout(function(){window.scrollTo(0,1)},10)}function v(e,t){var n=document.createEvent("HTMLEvents",1,2);n.initEvent(e,!0,!0),c(n,t),Et.wrapper.dispatchEvent(n)}function f(){if(St&&!("msPerspective"in document.body.style))for(var e=document.querySelectorAll(vt+" a:not(.image)"),t=0,n=e.length;n>t;t++){var r=e[t];if(!(!r.textContent||r.querySelector("*")||r.className&&r.classList.contains(r,"roll"))){var o=document.createElement("span");o.setAttribute("data-title",r.text),o.innerHTML=r.innerHTML,r.classList.add("roll"),r.innerHTML="",r.appendChild(o)}}}function p(){for(var e=document.querySelectorAll(vt+" a.roll"),t=0,n=e.length;n>t;t++){var r=e[t],o=r.querySelector("span");o&&(r.classList.remove("roll"),r.innerHTML=o.innerHTML)}}function m(e){var t=l(e);return t.forEach(function(e,t){e.hasAttribute("data-fragment-index")||e.setAttribute("data-fragment-index",t)}),t.sort(function(e,t){return e.getAttribute("data-fragment-index")-t.getAttribute("data-fragment-index")}),t}function h(){if(Et.wrapper){var e=Et.wrapper.offsetWidth,t=Et.wrapper.offsetHeight;e-=t*ht.margin,t-=t*ht.margin;var n=ht.width,r=ht.height;if("string"==typeof n&&/%$/.test(n)&&(n=parseInt(n,10)/100*e),"string"==typeof r&&/%$/.test(r)&&(r=parseInt(r,10)/100*t),Et.slides.style.width=n+"px",Et.slides.style.height=r+"px",bt=Math.min(e/n,t/r),bt=Math.max(bt,ht.minScale),bt=Math.min(bt,ht.maxScale),void 0===Et.slides.style.zoom||navigator.userAgent.match(/(iphone|ipod|ipad|android)/gi)){var o="translate(-50%, -50%) scale("+bt+") translate(50%, 50%)";Et.slides.style.WebkitTransform=o,Et.slides.style.MozTransform=o,Et.slides.style.msTransform=o,Et.slides.style.OTransform=o,Et.slides.style.transform=o}else Et.slides.style.zoom=bt;for(var s=l(document.querySelectorAll(vt)),a=0,i=s.length;i>a;a++){var c=s[a];"none"!==c.style.display&&(c.style.top=ht.center?c.classList.contains("stack")?0:Math.max(-(c.offsetHeight/2)-20,-r/2)+"px":"")}}}function y(e,t){"object"==typeof e&&"function"==typeof e.setAttribute&&e.setAttribute("data-previous-indexv",t||0)}function g(e){return"object"==typeof e&&"function"==typeof e.setAttribute&&e.classList.contains("stack")?parseInt(e.getAttribute("data-previous-indexv")||0,10):0}function w(){if(ht.overview){R();var e=Et.wrapper.classList.contains("overview");Et.wrapper.classList.add("overview"),Et.wrapper.classList.remove("exit-overview"),clearTimeout(xt),clearTimeout(Mt),xt=setTimeout(function(){for(var t=document.querySelectorAll(ft),n=0,r=t.length;r>n;n++){var o=t[n],s="translateZ(-2500px) translate("+105*(n-gt)+"%, 0%)";if(o.setAttribute("data-index-h",n),o.style.display="block",o.style.WebkitTransform=s,o.style.MozTransform=s,o.style.msTransform=s,o.style.OTransform=s,o.style.transform=s,o.classList.contains("stack"))for(var a=o.querySelectorAll("section"),i=0,c=a.length;c>i;i++){var l=n===gt?wt:g(o),d=a[i],u="translate(0%, "+105*(i-l)+"%)";d.setAttribute("data-index-h",n),d.setAttribute("data-index-v",i),d.style.display="block",d.style.WebkitTransform=u,d.style.MozTransform=u,d.style.msTransform=u,d.style.OTransform=u,d.style.transform=u,d.addEventListener("click",lt,!0)}else o.addEventListener("click",lt,!0)}h(),e||v("overviewshown",{indexh:gt,indexv:wt,currentSlide:ut})},10)}}function L(){if(ht.overview){clearTimeout(xt),clearTimeout(Mt),Et.wrapper.classList.remove("overview"),Et.wrapper.classList.add("exit-overview"),Mt=setTimeout(function(){Et.wrapper.classList.remove("exit-overview")},10);for(var e=l(document.querySelectorAll(vt)),t=0,n=e.length;n>t;t++){var r=e[t];r.style.display="",r.style.WebkitTransform="",r.style.MozTransform="",r.style.msTransform="",r.style.OTransform="",r.style.transform="",r.removeEventListener("click",lt,!0)}x(gt,wt),I(),v("overviewhidden",{indexh:gt,indexv:wt,currentSlide:ut})}}function b(e){"boolean"==typeof e?e?w():L():E()?L():w()}function E(){return Et.wrapper.classList.contains("overview")}function S(){var e=document.body,t=e.requestFullScreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullScreen;t&&t.apply(e)}function A(){var e=Et.wrapper.classList.contains("paused");R(),Et.wrapper.classList.add("paused"),e===!1&&v("paused")}function q(){var e=Et.wrapper.classList.contains("paused");I(),Et.wrapper.classList.remove("paused"),e&&v("resumed")}function T(){k()?q():A()}function k(){return Et.wrapper.classList.contains("paused")}function x(e,t,n,r){dt=ut;var o=document.querySelectorAll(ft);void 0===t&&(t=g(o[e])),dt&&dt.parentNode&&dt.parentNode.classList.contains("stack")&&y(dt.parentNode,wt);var s=Lt.concat();Lt.length=0;var a=gt,i=wt;gt=M(ft,void 0===e?gt:e),wt=M(pt,void 0===t?wt:t),h();e:for(var c=0,d=Lt.length;d>c;c++){for(var u=0;s.length>u;u++)if(s[u]===Lt[c]){s.splice(u,1);continue e}document.documentElement.classList.add(Lt[c]),v(Lt[c])}for(;s.length;)document.documentElement.classList.remove(s.pop());E()&&w(),Y(1500);var f=o[gt],p=f.querySelectorAll("section");if(ut=p[wt]||f,n!==void 0){var L=m(ut.querySelectorAll(".fragment"));l(L).forEach(function(e,t){n>t?e.classList.add("visible"):e.classList.remove("visible")})}gt!==a||wt!==i?v("slidechanged",{indexh:gt,indexv:wt,previousSlide:dt,currentSlide:ut,origin:r}):dt=null,dt&&(dt.classList.remove("present"),document.querySelector(mt).classList.contains("present")&&setTimeout(function(){var e,t=l(document.querySelectorAll(ft+".stack"));for(e in t)t[e]&&y(t[e],0)},0)),D(),P()}function M(e,t){var n=l(document.querySelectorAll(e)),r=n.length;if(r){ht.loop&&(t%=r,0>t&&(t=r+t)),t=Math.max(Math.min(t,r-1),0);for(var o=0;r>o;o++){var s=n[o];if(E()===!1){var a=Math.abs((t-o)%(r-3))||0;s.style.display=a>3?"none":"block"}n[o].classList.remove("past"),n[o].classList.remove("present"),n[o].classList.remove("future"),t>o?n[o].classList.add("past"):o>t&&n[o].classList.add("future"),s.querySelector("section")&&n[o].classList.add("stack")}n[t].classList.add("present");var i=n[t].getAttribute("data-state");i&&(Lt=Lt.concat(i.split(" ")));var c=n[t].getAttribute("data-autoslide");yt=c?parseInt(c,10):ht.autoSlide}else t=0;return t}function P(){if(ht.progress&&Et.progress){var e=l(document.querySelectorAll(ft)),t=document.querySelectorAll(vt+":not(.stack)").length,n=0;e:for(var r=0;e.length>r;r++){for(var o=e[r],s=l(o.querySelectorAll("section")),a=0;s.length>a;a++){if(s[a].classList.contains("present"))break e;n++}if(o.classList.contains("present"))break;o.classList.contains("stack")===!1&&n++}Et.progressbar.style.width=n/(t-1)*window.innerWidth+"px"}}function D(){if(ht.controls&&Et.controls){var e=N();Et.controlsLeft.concat(Et.controlsRight).concat(Et.controlsUp).concat(Et.controlsDown).concat(Et.controlsPrev).concat(Et.controlsNext).forEach(function(e){e.classList.remove("enabled")}),e.left&&Et.controlsLeft.forEach(function(e){e.classList.add("enabled")}),e.right&&Et.controlsRight.forEach(function(e){e.classList.add("enabled")}),e.up&&Et.controlsUp.forEach(function(e){e.classList.add("enabled")}),e.down&&Et.controlsDown.forEach(function(e){e.classList.add("enabled")}),(e.left||e.up)&&Et.controlsPrev.forEach(function(e){e.classList.add("enabled")}),(e.right||e.down)&&Et.controlsNext.forEach(function(e){e.classList.add("enabled")})}}function N(){var e=document.querySelectorAll(ft),t=document.querySelectorAll(pt);return{left:gt>0||ht.loop,right:e.length-1>gt||ht.loop,up:wt>0,down:t.length-1>wt}}function O(){var e=window.location.hash,t=e.slice(2).split("/"),n=e.replace(/#|\//gi,"");if(isNaN(parseInt(t[0],10))&&n.length){var r=document.querySelector("#"+n);if(r){var o=Reveal.getIndices(r);x(o.h,o.v)}else x(gt,wt)}else{var s=parseInt(t[0],10)||0,a=parseInt(t[1],10)||0;x(s,a)}}function Y(e){if(ht.history)if(clearTimeout(kt),"number"==typeof e)kt=setTimeout(Y,e);else{var t="/";ut&&"string"==typeof ut.getAttribute("id")?t="/"+ut.getAttribute("id"):((gt>0||wt>0)&&(t+=gt),wt>0&&(t+="/"+wt)),window.location.hash=t}}function C(e){var t=gt,n=wt;if(e){var r=!!e.parentNode.nodeName.match(/section/gi),o=r?e.parentNode:e,s=l(document.querySelectorAll(ft));t=Math.max(s.indexOf(o),0),r&&(n=Math.max(l(e.parentNode.querySelectorAll("section")).indexOf(e),0))}return{h:t,v:n}}function X(){if(document.querySelector(pt+".present")){var e=m(document.querySelectorAll(pt+".present .fragment:not(.visible)"));if(e.length)return e[0].classList.add("visible"),v("fragmentshown",{fragment:e[0]}),!0}else{var t=m(document.querySelectorAll(ft+".present .fragment:not(.visible)"));if(t.length)return t[0].classList.add("visible"),v("fragmentshown",{fragment:t[0]}),!0}return!1}function H(){if(document.querySelector(pt+".present")){var e=m(document.querySelectorAll(pt+".present .fragment.visible"));if(e.length)return e[e.length-1].classList.remove("visible"),v("fragmenthidden",{fragment:e[e.length-1]}),!0}else{var t=m(document.querySelectorAll(ft+".present .fragment.visible"));if(t.length)return t[t.length-1].classList.remove("visible"),v("fragmenthidden",{fragment:t[t.length-1]}),!0}return!1}function I(){clearTimeout(Tt),!yt||k()||E()||(Tt=setTimeout(j,yt))}function R(){clearTimeout(Tt)}function z(){N().left&&(E()||H()===!1)&&x(gt-1)}function U(){N().right&&(E()||X()===!1)&&x(gt+1)}function W(){(N().up&&E()||H()===!1)&&x(gt,wt-1)}function _(){(N().down&&E()||X()===!1)&&x(gt,wt+1)}function F(){if(H()===!1)if(N().up)W();else{var e=document.querySelector(ft+".past:nth-child("+gt+")");e&&(wt=e.querySelectorAll("section").length+1||void 0,gt--,x())}}function j(){X()===!1&&(N().down?_():U()),I()}function K(e){document.activeElement;var t=!(!document.activeElement||!document.activeElement.type&&!document.activeElement.href&&"inherit"===document.activeElement.contentEditable);if(!(t||e.shiftKey||e.altKey||e.ctrlKey||e.metaKey)){var n=!0;if(k()&&-1===[66,190,191].indexOf(e.keyCode))return!1;switch(e.keyCode){case 80:case 33:F();break;case 78:case 34:j();break;case 72:case 37:z();break;case 76:case 39:U();break;case 75:case 38:W();break;case 74:case 40:_();break;case 36:x(0);break;case 35:x(Number.MAX_VALUE);break;case 32:E()?L():j();break;case 13:E()?L():n=!1;break;case 66:case 190:case 191:T();break;case 70:S();break;default:n=!1}n?e.preventDefault():27===e.keyCode&&St&&(b(),e.preventDefault()),I()}}function $(e){Dt.startX=e.touches[0].clientX,Dt.startY=e.touches[0].clientY,Dt.startCount=e.touches.length,2===e.touches.length&&ht.overview&&(Dt.startSpan=d({x:e.touches[1].clientX,y:e.touches[1].clientY},{x:Dt.startX,y:Dt.startY}))}function Z(e){if(Dt.handled)navigator.userAgent.match(/android/gi)&&e.preventDefault();else{var t=e.touches[0].clientX,n=e.touches[0].clientY;if(2===e.touches.length&&2===Dt.startCount&&ht.overview){var r=d({x:e.touches[1].clientX,y:e.touches[1].clientY},{x:Dt.startX,y:Dt.startY});Math.abs(Dt.startSpan-r)>Dt.threshold&&(Dt.handled=!0,Dt.startSpan>r?w():L()),e.preventDefault()}else if(1===e.touches.length&&2!==Dt.startCount){var o=t-Dt.startX,s=n-Dt.startY;o>Dt.threshold&&Math.abs(o)>Math.abs(s)?(Dt.handled=!0,z()):-Dt.threshold>o&&Math.abs(o)>Math.abs(s)?(Dt.handled=!0,U()):s>Dt.threshold?(Dt.handled=!0,W()):-Dt.threshold>s&&(Dt.handled=!0,_()),e.preventDefault()}}}function Q(){Dt.handled=!1}function V(e){e.pointerType===e.MSPOINTER_TYPE_TOUCH&&(e.touches=[{clientX:e.clientX,clientY:e.clientY}],$(e))}function B(e){e.pointerType===e.MSPOINTER_TYPE_TOUCH&&(e.touches=[{clientX:e.clientX,clientY:e.clientY}],Z(e))}function G(e){e.pointerType===e.MSPOINTER_TYPE_TOUCH&&(e.touches=[{clientX:e.clientX,clientY:e.clientY}],Q(e))}function J(e){clearTimeout(qt),qt=setTimeout(function(){var t=e.detail||-e.wheelDelta;t>0?j():F()},100)}function et(e){e.preventDefault();var t=l(document.querySelectorAll(ft)).length,n=Math.floor(e.clientX/Et.wrapper.offsetWidth*t);x(n)}function tt(e){e.preventDefault(),z()}function nt(e){e.preventDefault(),U()}function rt(e){e.preventDefault(),W()}function ot(e){e.preventDefault(),_()}function st(e){e.preventDefault(),F()}function at(e){e.preventDefault(),j()}function it(){O()}function ct(){h()}function lt(e){if(Pt&&E()){e.preventDefault();for(var t=e.target;t&&!t.nodeName.match(/section/gi);)t=t.parentNode;if(t&&!t.classList.contains("disabled")&&(L(),t.nodeName.match(/section/gi))){var n=parseInt(t.getAttribute("data-index-h"),10),r=parseInt(t.getAttribute("data-index-v"),10);x(n,r)}}}var dt,ut,vt=".reveal .slides section",ft=".reveal .slides>section",pt=".reveal .slides>section.present>section",mt=".reveal .slides>section:first-child",ht={width:960,height:700,margin:.1,minScale:.2,maxScale:1,controls:!0,progress:!0,history:!1,keyboard:!0,overview:!0,center:!0,touch:!0,loop:!1,rtl:!1,autoSlide:0,mouseWheel:!1,rollingLinks:!0,theme:null,transition:"default",dependencies:[]},yt=0,gt=0,wt=0,Lt=[],bt=1,Et={},St="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,At="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,qt=0,Tt=0,kt=0,xt=0,Mt=0,Pt=!1,Dt={startX:0,startY:0,startSpan:0,startCount:0,handled:!1,threshold:80};return{initialize:e,configure:s,slide:x,left:z,right:U,up:W,down:_,prev:F,next:j,prevFragment:H,nextFragment:X,navigateTo:x,navigateLeft:z,navigateRight:U,navigateUp:W,navigateDown:_,navigatePrev:F,navigateNext:j,layout:h,toggleOverview:b,togglePause:T,isOverview:E,isPaused:k,addEventListeners:a,removeEventListeners:i,getIndices:C,getSlide:function(e,t){var n=document.querySelectorAll(ft)[e],r=n&&n.querySelectorAll("section");return t!==void 0?r?r[t]:void 0:n},getPreviousSlide:function(){return dt},getCurrentSlide:function(){return ut},getScale:function(){return bt},getQueryHash:function(){var e={};return location.search.replace(/[A-Z0-9]+?=(\w*)/gi,function(t){e[t.split("=").shift()]=t.split("=").pop()}),e},isFirstSlide:function(){return null==document.querySelector(vt+".past")?!0:!1},isLastSlide:function(){return ut&&ut.classList.contains(".stack")?null==ut.querySelector(vt+".future")?!0:!1:null==document.querySelector(vt+".future")?!0:!1},addEventListener:function(e,t,n){"addEventListener"in window&&(Et.wrapper||document.querySelector(".reveal")).addEventListener(e,t,n)},removeEventListener:function(e,t,n){"addEventListener"in window&&(Et.wrapper||document.querySelector(".reveal")).removeEventListener(e,t,n)}}}(); \ No newline at end of file
diff --git a/package.json b/package.json
index f8ab38a..5c5f6c3 100644
--- a/package.json
+++ b/package.json
@@ -31,6 +31,7 @@
"grunt-contrib-cssmin": "~0.4.1",
"grunt-contrib-uglify": "~0.1.1",
"grunt-contrib-watch": "~0.2.0",
+ "grunt-contrib-sass": "~0.2.2",
"grunt": "~0.4.0"
}
}
diff --git a/plugin/markdown/markdown.js b/plugin/markdown/markdown.js
index 39e1168..b6b5a9b 100644
--- a/plugin/markdown/markdown.js
+++ b/plugin/markdown/markdown.js
@@ -26,7 +26,11 @@
return text;
};
-
+
+ var twrap = function(el) {
+ return '<script type="text/template">' + el + '</script>';
+ };
+
var slidifyMarkdown = function(markdown, separator, vertical) {
separator = separator || '^\n---\n$';
@@ -74,8 +78,8 @@
// flatten the hierarchical stack, and insert <section data-markdown> tags
for( var k = 0, klen = sectionStack.length; k < klen; k++ ) {
markdownSections += typeof sectionStack[k] === 'string'
- ? '<section data-markdown>' + sectionStack[k] + '</section>'
- : '<section><section data-markdown>' + sectionStack[k].join('</section><section data-markdown>') + '</section></section>';
+ ? '<section data-markdown>' + twrap( sectionStack[k] ) + '</section>'
+ : '<section><section data-markdown>' + sectionStack[k].map(twrap).join('</section><section data-markdown>') + '</section></section>';
}
return markdownSections;
diff --git a/plugin/multiplex/index.js b/plugin/multiplex/index.js
index aa8a55a..bf22cb1 100644
--- a/plugin/multiplex/index.js
+++ b/plugin/multiplex/index.js
@@ -1,16 +1,16 @@
-var express = require('express');
-var fs = require('fs');
-var io = require('socket.io');
+var express = require('express');
+var fs = require('fs');
+var io = require('socket.io');
var crypto = require('crypto');
-var app = express.createServer();
-var staticDir = express.static;
+var app = express.createServer();
+var staticDir = express.static;
-io = io.listen(app);
+io = io.listen(app);
var opts = {
- port : 1948,
- baseDir : __dirname + '/../../'
+ port: 1948,
+ baseDir : __dirname + '/../../'
};
io.sockets.on('connection', function(socket) {
diff --git a/plugin/multiplex/master.js b/plugin/multiplex/master.js
index a896244..5c18390 100644
--- a/plugin/multiplex/master.js
+++ b/plugin/multiplex/master.js
@@ -4,7 +4,7 @@
var multiplex = window.globals.multiplex;
var socket = io.connect(multiplex.url);
-
+
Reveal.addEventListener( 'slidechanged', function( event ) {
var nextindexh;
var nextindexv;
@@ -18,7 +18,6 @@
nextindexv = 0;
}
- var notes = slideElement.querySelector('aside.notes');
var slideData = {
indexh : event.indexh,
indexv : event.indexv,
@@ -28,6 +27,6 @@
socketId : multiplex.id
};
- if( typeof event.origin === 'undefined' && event.origin !== 'remote') socket.emit('slidechanged', slideData);
+ if( typeof event.origin === 'undefined' && event.origin !== 'remote' ) socket.emit('slidechanged', slideData);
} );
}());
diff --git a/plugin/search/search.js b/plugin/search/search.js
new file mode 100644
index 0000000..28f10ca
--- /dev/null
+++ b/plugin/search/search.js
@@ -0,0 +1,192 @@
+/*
+ * Handles finding a text string anywhere in the slides and showing the next occurrence to the user
+ * by navigatating to that slide and highlighting it.
+ *
+ * By Jon Snyder <snyder.jon@gmail.com>, February 2013
+ */
+
+var RevealSearch = (function() {
+
+ var matchedSlides;
+ var currentMatchedIndex;
+ var searchboxDirty;
+ var myHilitor;
+
+// Original JavaScript code by Chirp Internet: www.chirp.com.au
+// Please acknowledge use of this code by including this header.
+// 2/2013 jon: modified regex to display any match, not restricted to word boundaries.
+
+function Hilitor(id, tag)
+{
+
+ var targetNode = document.getElementById(id) || document.body;
+ var hiliteTag = tag || "EM";
+ var skipTags = new RegExp("^(?:" + hiliteTag + "|SCRIPT|FORM|SPAN)$");
+ var colors = ["#ff6", "#a0ffff", "#9f9", "#f99", "#f6f"];
+ var wordColor = [];
+ var colorIdx = 0;
+ var matchRegex = "";
+ var matchingSlides = [];
+
+ this.setRegex = function(input)
+ {
+ input = input.replace(/^[^\w]+|[^\w]+$/g, "").replace(/[^\w'-]+/g, "|");
+ matchRegex = new RegExp("(" + input + ")","i");
+ }
+
+ this.getRegex = function()
+ {
+ return matchRegex.toString().replace(/^\/\\b\(|\)\\b\/i$/g, "").replace(/\|/g, " ");
+ }
+
+ // recursively apply word highlighting
+ this.hiliteWords = function(node)
+ {
+ if(node == undefined || !node) return;
+ if(!matchRegex) return;
+ if(skipTags.test(node.nodeName)) return;
+
+ if(node.hasChildNodes()) {
+ for(var i=0; i < node.childNodes.length; i++)
+ this.hiliteWords(node.childNodes[i]);
+ }
+ if(node.nodeType == 3) { // NODE_TEXT
+ if((nv = node.nodeValue) && (regs = matchRegex.exec(nv))) {
+ //find the slide's section element and save it in our list of matching slides
+ var secnode = node.parentNode;
+ while (secnode.nodeName != 'SECTION') {
+ secnode = secnode.parentNode;
+ }
+
+ var slideIndex = Reveal.getIndices(secnode);
+ var slidelen = matchingSlides.length;
+ var alreadyAdded = false;
+ for (var i=0; i < slidelen; i++) {
+ if ( (matchingSlides[i].h === slideIndex.h) && (matchingSlides[i].v === slideIndex.v) ) {
+ alreadyAdded = true;
+ }
+ }
+ if (! alreadyAdded) {
+ matchingSlides.push(slideIndex);
+ }
+
+ if(!wordColor[regs[0].toLowerCase()]) {
+ wordColor[regs[0].toLowerCase()] = colors[colorIdx++ % colors.length];
+ }
+
+ var match = document.createElement(hiliteTag);
+ match.appendChild(document.createTextNode(regs[0]));
+ match.style.backgroundColor = wordColor[regs[0].toLowerCase()];
+ match.style.fontStyle = "inherit";
+ match.style.color = "#000";
+
+ var after = node.splitText(regs.index);
+ after.nodeValue = after.nodeValue.substring(regs[0].length);
+ node.parentNode.insertBefore(match, after);
+ }
+ }
+ };
+
+ // remove highlighting
+ this.remove = function()
+ {
+ var arr = document.getElementsByTagName(hiliteTag);
+ while(arr.length && (el = arr[0])) {
+ el.parentNode.replaceChild(el.firstChild, el);
+ }
+ };
+
+ // start highlighting at target node
+ this.apply = function(input)
+ {
+ if(input == undefined || !input) return;
+ this.remove();
+ this.setRegex(input);
+ this.hiliteWords(targetNode);
+ return matchingSlides;
+ };
+
+}
+
+ function openSearch() {
+ //ensure the search term input dialog is visible and has focus:
+ var inputbox = document.getElementById("searchinput");
+ inputbox.style.display = "inline";
+ inputbox.focus();
+ inputbox.select();
+ }
+
+ function toggleSearch() {
+ var inputbox = document.getElementById("searchinput");
+ if (inputbox.style.display !== "inline") {
+ openSearch();
+ }
+ else {
+ inputbox.style.display = "none";
+ myHilitor.remove();
+ }
+ }
+
+ function doSearch() {
+ //if there's been a change in the search term, perform a new search:
+ if (searchboxDirty) {
+ var searchstring = document.getElementById("searchinput").value;
+
+ //find the keyword amongst the slides
+ myHilitor = new Hilitor("slidecontent");
+ matchedSlides = myHilitor.apply(searchstring);
+ currentMatchedIndex = 0;
+ }
+
+ //navigate to the next slide that has the keyword, wrapping to the first if necessary
+ if (matchedSlides.length && (matchedSlides.length <= currentMatchedIndex)) {
+ currentMatchedIndex = 0;
+ }
+ if (matchedSlides.length > currentMatchedIndex) {
+ Reveal.slide(matchedSlides[currentMatchedIndex].h, matchedSlides[currentMatchedIndex].v);
+ currentMatchedIndex++;
+ }
+ }
+
+ var dom = {};
+ dom.wrapper = document.querySelector( '.reveal' );
+
+ if( !dom.wrapper.querySelector( '.searchbox' ) ) {
+ var searchElement = document.createElement( 'div' );
+ searchElement.id = "searchinputdiv";
+ searchElement.classList.add( 'searchdiv' );
+ searchElement.innerHTML = '<span><input type="text" id="searchinput" class="searchinput"/><img src="css/theme/assets/searchicon.png" id="searchbutton" class="searchicon"/></span>';
+ dom.wrapper.appendChild( searchElement );
+ }
+
+ document.getElementById("searchbutton").addEventListener( 'click', function(event) {
+ toggleSearch();
+ }, false );
+
+ document.getElementById("searchinput").addEventListener( 'keyup', function( event ) {
+ switch (event.keyCode) {
+ case 13:
+ event.preventDefault();
+ doSearch();
+ searchboxDirty = false;
+ break;
+ default:
+ searchboxDirty = true;
+ }
+ }, false );
+
+ // Open the search when the 's' key is hit (yes, this conflicts with the notes plugin, disabling for now)
+ /*
+ document.addEventListener( 'keydown', function( 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;
+
+ if( event.keyCode === 83 ) {
+ event.preventDefault();
+ openSearch();
+ }
+ }, false );
+*/
+ return { open: openSearch };
+})();