aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHakim El Hattab <hakim.elhattab@gmail.com>2012-07-26 22:54:36 -0400
committerHakim El Hattab <hakim.elhattab@gmail.com>2012-07-26 22:54:36 -0400
commite570265a67461cfc110208cbe8562ad937794da8 (patch)
treefdd2b7da8b1777c6d39c0b8afbc780895f64d7aa
parent1916d2f64adcf3a02ddeee06206b5e586167d0fa (diff)
downloadfreenode-live-2017-presentation-e570265a67461cfc110208cbe8562ad937794da8.tar
freenode-live-2017-presentation-e570265a67461cfc110208cbe8562ad937794da8.tar.gz
adds new api methods (getCurrentSlide, getPreviousSlide, getIndices) closes #73
-rw-r--r--README.md13
-rw-r--r--css/main.css1
-rw-r--r--js/reveal.js69
3 files changed, 59 insertions, 24 deletions
diff --git a/README.md b/README.md
index 25a6c14..d2f36e7 100644
--- a/README.md
+++ b/README.md
@@ -65,9 +65,10 @@ Reveal.initialize({
### API
-The Reveal class provides a minimal JavaScript API for controlling its navigation:
+The Reveal class provides a minimal JavaScript API for controlling navigation and reading state:
```javascript
+// Navigation
Reveal.navigateTo( indexh, indexv );
Reveal.navigateLeft();
Reveal.navigateRight();
@@ -76,6 +77,12 @@ Reveal.navigateDown();
Reveal.navigatePrev();
Reveal.navigateNext();
Reveal.toggleOverview();
+
+// Retrieves the previous and current slide elements
+Reveal.getPreviousSlide();
+Reveal.getCurrentSlide();
+
+Reveal.getIndices(); // { h: 0, v: 0 } }
```
### States
@@ -172,7 +179,9 @@ You can change the appearance of the speaker notes by editing the file at `plugi
## History
#### 1.5 (master/beta)
-- TBD
+- New API method ```Reveal.getPreviousSlide()```
+- New API method ```Reveal.getCurrentSlide()```
+- New API method ```Reveal.getIndices()```
#### 1.4
- Main ```#reveal container``` is now selected via a class instead of ID
diff --git a/css/main.css b/css/main.css
index d8c3577..5729258 100644
--- a/css/main.css
+++ b/css/main.css
@@ -1005,6 +1005,7 @@ body {
background: rgba( 0, 0, 0, 0.6 );
}
+
/*********************************************
* SPEAKER NOTES
*********************************************/
diff --git a/js/reveal.js b/js/reveal.js
index 978e163..3387904 100644
--- a/js/reveal.js
+++ b/js/reveal.js
@@ -1,5 +1,5 @@
/*!
- * reveal.js 1.5 r1
+ * reveal.js 1.5 r2
* http://lab.hakim.se/reveal-js
* MIT licensed
*
@@ -12,10 +12,6 @@ var Reveal = (function(){
IS_TOUCH_DEVICE = !!( 'ontouchstart' in window ),
- // The horizontal and verical index of the currently active slide
- indexh = 0,
- indexv = 0,
-
// Configurations defaults, can be overridden at initialization time
config = {
// Display controls in the bottom right corner
@@ -50,6 +46,14 @@ var Reveal = (function(){
transition: 'default' // default/cube/page/concave/linear(2d)
},
+ // The horizontal and verical index of the currently active slide
+ indexh = 0,
+ indexv = 0,
+
+ // The previous and current slide HTML elements
+ previousSlide,
+ currentSlide,
+
// Slides may hold a data-state attribute which we pick up and apply
// as a class to the body. This list contains the combined state of
// all current slides.
@@ -650,6 +654,9 @@ var Reveal = (function(){
* set indices.
*/
function slide( h, v ) {
+ // Remember where we were at before
+ previousSlide = currentSlide;
+
// Remember the state before this slide
var stateBefore = state.concat();
@@ -700,31 +707,30 @@ var Reveal = (function(){
clearTimeout( writeURLTimeout );
writeURLTimeout = setTimeout( writeURL, 1500 );
- // Only fire if the slide index is different from before
- if( indexh !== indexhBefore || indexv !== indexvBefore ) {
- // Query all horizontal slides in the deck
- var horizontalSlides = document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR );
+ // Query all horizontal slides in the deck
+ var horizontalSlides = document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR );
- // Find the previous and current horizontal slides
- var previousHorizontalSlide = horizontalSlides[ indexhBefore ],
- currentHorizontalSlide = horizontalSlides[ indexh ];
+ // Find the current horizontal slide and any possible vertical slides
+ // within it
+ var currentHorizontalSlide = horizontalSlides[ indexh ],
+ currentVerticalSlides = currentHorizontalSlide.querySelectorAll( 'section' );
- // Query all vertical slides inside of the previous and current horizontal slides
- var previousVerticalSlides = previousHorizontalSlide.querySelectorAll( 'section' );
- currentVerticalSlides = currentHorizontalSlide.querySelectorAll( 'section' );
+ // Store references to the previous and current slides
+ currentSlide = currentVerticalSlides[ indexv ] || currentHorizontalSlide;
- // Dispatch an event notifying observers of the change in slide
+ // Dispatch an event if the slide changed
+ if( indexh !== indexhBefore || indexv !== indexvBefore ) {
dispatchEvent( 'slidechanged', {
- // Include the current indices in the event
'indexh': indexh,
'indexv': indexv,
-
- // Passes direct references to the slide HTML elements, attempts to find
- // a vertical slide and falls back on the horizontal parent
- 'previousSlide': previousVerticalSlides[ indexvBefore ] || previousHorizontalSlide,
- 'currentSlide': currentVerticalSlides[ indexv ] || currentHorizontalSlide
+ 'previousSlide': previousSlide,
+ 'currentSlide': currentSlide
} );
}
+ else {
+ // Ensure that the previous slide is never the same as the current
+ previousSlide = null;
+ }
}
/**
@@ -980,9 +986,28 @@ var Reveal = (function(){
navigateNext: navigateNext,
toggleOverview: toggleOverview,
+ // Adds or removes all internal event listeners (such as keyboard)
addEventListeners: addEventListeners,
removeEventListeners: removeEventListeners,
+ // Returns the indices of the current slide
+ getIndices: function() {
+ return {
+ h: indexh,
+ v: indexv
+ };
+ },
+
+ // Returns the previous slide element, may be null
+ getPreviousSlide: function() {
+ return previousSlide
+ },
+
+ // Returns the current slide element
+ getCurrentSlide: function() {
+ return currentSlide
+ },
+
// Forward event binding to the reveal DOM element
addEventListener: function( type, listener, useCapture ) {
( dom.wrapper || document.querySelector( '.reveal' ) ).addEventListener( type, listener, useCapture );