adds new api methods (getCurrentSlide, getPreviousSlide, getIndices) closes #73
This commit is contained in:
parent
1916d2f64a
commit
e570265a67
3 changed files with 61 additions and 26 deletions
13
README.md
13
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
|
||||
|
|
|
@ -1005,6 +1005,7 @@ body {
|
|||
background: rgba( 0, 0, 0, 0.6 );
|
||||
}
|
||||
|
||||
|
||||
/*********************************************
|
||||
* SPEAKER NOTES
|
||||
*********************************************/
|
||||
|
|
65
js/reveal.js
65
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 );
|
||||
|
||||
// Find the previous and current horizontal slides
|
||||
var previousHorizontalSlide = horizontalSlides[ indexhBefore ],
|
||||
currentHorizontalSlide = horizontalSlides[ indexh ];
|
||||
|
||||
// Query all vertical slides inside of the previous and current horizontal slides
|
||||
var previousVerticalSlides = previousHorizontalSlide.querySelectorAll( 'section' );
|
||||
// Find the current horizontal slide and any possible vertical slides
|
||||
// within it
|
||||
var currentHorizontalSlide = horizontalSlides[ indexh ],
|
||||
currentVerticalSlides = currentHorizontalSlide.querySelectorAll( 'section' );
|
||||
|
||||
// Dispatch an event notifying observers of the change in slide
|
||||
// Store references to the previous and current slides
|
||||
currentSlide = currentVerticalSlides[ indexv ] || currentHorizontalSlide;
|
||||
|
||||
// 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 );
|
||||
|
|
Loading…
Reference in a new issue