adds new api methods (getCurrentSlide, getPreviousSlide, getIndices) closes #73
This commit is contained in:
		
							
								
								
									
										13
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								README.md
									
									
									
									
									
								
							| @@ -65,9 +65,10 @@ Reveal.initialize({ | |||||||
|  |  | ||||||
| ### API | ### 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 | ```javascript | ||||||
|  | // Navigation | ||||||
| Reveal.navigateTo( indexh, indexv ); | Reveal.navigateTo( indexh, indexv ); | ||||||
| Reveal.navigateLeft(); | Reveal.navigateLeft(); | ||||||
| Reveal.navigateRight(); | Reveal.navigateRight(); | ||||||
| @@ -76,6 +77,12 @@ Reveal.navigateDown(); | |||||||
| Reveal.navigatePrev(); | Reveal.navigatePrev(); | ||||||
| Reveal.navigateNext(); | Reveal.navigateNext(); | ||||||
| Reveal.toggleOverview(); | Reveal.toggleOverview(); | ||||||
|  |  | ||||||
|  | // Retrieves the previous and current slide elements | ||||||
|  | Reveal.getPreviousSlide(); | ||||||
|  | Reveal.getCurrentSlide(); | ||||||
|  |  | ||||||
|  | Reveal.getIndices(); // { h: 0, v: 0 } } | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ### States | ### States | ||||||
| @@ -172,7 +179,9 @@ You can change the appearance of the speaker notes by editing the file at `plugi | |||||||
| ## History | ## History | ||||||
|  |  | ||||||
| #### 1.5 (master/beta) | #### 1.5 (master/beta) | ||||||
| - TBD | - New API method ```Reveal.getPreviousSlide()``` | ||||||
|  | - New API method ```Reveal.getCurrentSlide()``` | ||||||
|  | - New API method ```Reveal.getIndices()``` | ||||||
|  |  | ||||||
| #### 1.4 | #### 1.4 | ||||||
| - Main ```#reveal container``` is now selected via a class instead of ID | - Main ```#reveal container``` is now selected via a class instead of ID | ||||||
|   | |||||||
| @@ -1005,6 +1005,7 @@ body { | |||||||
| 	background: rgba( 0, 0, 0, 0.6 ); | 	background: rgba( 0, 0, 0, 0.6 ); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| /********************************************* | /********************************************* | ||||||
|  * SPEAKER NOTES |  * 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 |  * http://lab.hakim.se/reveal-js | ||||||
|  * MIT licensed |  * MIT licensed | ||||||
|  *  |  *  | ||||||
| @@ -12,10 +12,6 @@ var Reveal = (function(){ | |||||||
|  |  | ||||||
| 		IS_TOUCH_DEVICE = !!( 'ontouchstart' in window ), | 		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  | 		// Configurations defaults, can be overridden at initialization time  | ||||||
| 		config = { | 		config = { | ||||||
| 			// Display controls in the bottom right corner | 			// Display controls in the bottom right corner | ||||||
| @@ -50,6 +46,14 @@ var Reveal = (function(){ | |||||||
| 			transition: 'default' // default/cube/page/concave/linear(2d) | 			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  | 		// 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  | 		// as a class to the body. This list contains the combined state of  | ||||||
| 		// all current slides. | 		// all current slides. | ||||||
| @@ -650,6 +654,9 @@ var Reveal = (function(){ | |||||||
| 	 * set indices.  | 	 * set indices.  | ||||||
| 	 */ | 	 */ | ||||||
| 	function slide( h, v ) { | 	function slide( h, v ) { | ||||||
|  | 		// Remember where we were at before | ||||||
|  | 		previousSlide = currentSlide; | ||||||
|  |  | ||||||
| 		// Remember the state before this slide | 		// Remember the state before this slide | ||||||
| 		var stateBefore = state.concat(); | 		var stateBefore = state.concat(); | ||||||
|  |  | ||||||
| @@ -700,31 +707,30 @@ var Reveal = (function(){ | |||||||
| 		clearTimeout( writeURLTimeout ); | 		clearTimeout( writeURLTimeout ); | ||||||
| 		writeURLTimeout = setTimeout( writeURL, 1500 ); | 		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 | 		// Query all horizontal slides in the deck | ||||||
| 		var horizontalSlides = document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ); | 		var horizontalSlides = document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ); | ||||||
|  |  | ||||||
| 			// Find the previous and current horizontal slides | 		// Find the current horizontal slide and any possible vertical slides | ||||||
| 			var previousHorizontalSlide = horizontalSlides[ indexhBefore ], | 		// within it | ||||||
| 				currentHorizontalSlide = horizontalSlides[ indexh ]; | 		var currentHorizontalSlide = horizontalSlides[ indexh ], | ||||||
|  |  | ||||||
| 			// Query all vertical slides inside of the previous and current horizontal slides |  | ||||||
| 			var previousVerticalSlides = previousHorizontalSlide.querySelectorAll( 'section' ); |  | ||||||
| 			currentVerticalSlides = currentHorizontalSlide.querySelectorAll( 'section' ); | 			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', { | 			dispatchEvent( 'slidechanged', { | ||||||
| 				// Include the current indices in the event |  | ||||||
| 				'indexh': indexh,  | 				'indexh': indexh,  | ||||||
| 				'indexv': indexv, | 				'indexv': indexv, | ||||||
|  | 				'previousSlide': previousSlide, | ||||||
| 				// Passes direct references to the slide HTML elements, attempts to find | 				'currentSlide': currentSlide | ||||||
| 				// a vertical slide and falls back on the horizontal parent |  | ||||||
| 				'previousSlide': previousVerticalSlides[ indexvBefore ] || previousHorizontalSlide, |  | ||||||
| 				'currentSlide': currentVerticalSlides[ indexv ] || currentHorizontalSlide |  | ||||||
| 			} ); | 			} ); | ||||||
| 		} | 		} | ||||||
|  | 		else { | ||||||
|  | 			// Ensure that the previous slide is never the same as the current | ||||||
|  | 			previousSlide = null; | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| @@ -980,9 +986,28 @@ var Reveal = (function(){ | |||||||
| 		navigateNext: navigateNext, | 		navigateNext: navigateNext, | ||||||
| 		toggleOverview: toggleOverview, | 		toggleOverview: toggleOverview, | ||||||
|  |  | ||||||
|  | 		// Adds or removes all internal event listeners (such as keyboard) | ||||||
| 		addEventListeners: addEventListeners, | 		addEventListeners: addEventListeners, | ||||||
| 		removeEventListeners: removeEventListeners, | 		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 | 		// Forward event binding to the reveal DOM element | ||||||
| 		addEventListener: function( type, listener, useCapture ) { | 		addEventListener: function( type, listener, useCapture ) { | ||||||
| 			( dom.wrapper || document.querySelector( '.reveal' ) ).addEventListener( type, listener, useCapture ); | 			( dom.wrapper || document.querySelector( '.reveal' ) ).addEventListener( type, listener, useCapture ); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user