added some public access methods
Added overview toggle to allow for button-based overview toggling Added add/removeEvents methods to allow for adding& removing event listeners that may interfere with other libs.
This commit is contained in:
		
							
								
								
									
										61
									
								
								js/reveal.js
									
									
									
									
									
								
							
							
						
						
									
										61
									
								
								js/reveal.js
									
									
									
									
									
								
							| @@ -26,7 +26,7 @@ var Reveal = (function(){ | |||||||
| 			rollingLinks: true, | 			rollingLinks: true, | ||||||
| 			transition: 'default', | 			transition: 'default', | ||||||
| 			theme: 'default', | 			theme: 'default', | ||||||
| 			swipeDist: 30 | 			swipeDist: 40 | ||||||
| 		}, | 		}, | ||||||
|  |  | ||||||
| 		// 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  | ||||||
| @@ -55,6 +55,8 @@ var Reveal = (function(){ | |||||||
|  |  | ||||||
| 		// Delays updates to the URL due to a Chrome thumbnailer bug | 		// Delays updates to the URL due to a Chrome thumbnailer bug | ||||||
| 		writeURLTimeout = 0; | 		writeURLTimeout = 0; | ||||||
|  | 		 | ||||||
|  | 	 | ||||||
| 	 | 	 | ||||||
| 	/** | 	/** | ||||||
| 	 * Starts up the slideshow by applying configuration | 	 * Starts up the slideshow by applying configuration | ||||||
| @@ -80,16 +82,7 @@ var Reveal = (function(){ | |||||||
| 		dom.controlsUp = document.querySelector( '#reveal .controls .up' ); | 		dom.controlsUp = document.querySelector( '#reveal .controls .up' ); | ||||||
| 		dom.controlsDown = document.querySelector( '#reveal .controls .down' ); | 		dom.controlsDown = document.querySelector( '#reveal .controls .down' ); | ||||||
|  |  | ||||||
| 		// Bind all view events | 		addEvents(); | ||||||
| 		document.addEventListener( 'keydown', onDocumentKeyDown, false ); |  | ||||||
| 		document.addEventListener( 'touchstart', onDocumentTouchStart, false ); |  | ||||||
| 		document.addEventListener( 'touchmove', onDocumentTouchMove, false ); |  | ||||||
| 		document.addEventListener( 'touchend', onDocumentTouchEnd, false ); |  | ||||||
| 		window.addEventListener( 'hashchange', onWindowHashChange, false ); |  | ||||||
| 		dom.controlsLeft.addEventListener( 'click', preventAndForward( navigateLeft ), false ); |  | ||||||
| 		dom.controlsRight.addEventListener( 'click', preventAndForward( navigateRight ), false ); |  | ||||||
| 		dom.controlsUp.addEventListener( 'click', preventAndForward( navigateUp ), false ); |  | ||||||
| 		dom.controlsDown.addEventListener( 'click', preventAndForward( navigateDown ), false ); |  | ||||||
|  |  | ||||||
| 		// Copy options over to our config object | 		// Copy options over to our config object | ||||||
| 		extend( config, options ); | 		extend( config, options ); | ||||||
| @@ -138,8 +131,34 @@ var Reveal = (function(){ | |||||||
| 			window.addEventListener( 'load', removeAddressBar, false ); | 			window.addEventListener( 'load', removeAddressBar, false ); | ||||||
| 			window.addEventListener( 'orientationchange', removeAddressBar, false ); | 			window.addEventListener( 'orientationchange', removeAddressBar, false ); | ||||||
| 		} | 		} | ||||||
|  | 		 | ||||||
|  | 	} | ||||||
|  | 	function addEvents() { | ||||||
|  | 		// Bind all view events | ||||||
|  | 		document.addEventListener( 'keydown', onDocumentKeyDown, false ); | ||||||
|  | 		document.addEventListener( 'touchstart', onDocumentTouchStart, false ); | ||||||
|  | 		document.addEventListener( 'touchmove', onDocumentTouchMove, false ); | ||||||
|  | 		document.addEventListener( 'touchend', onDocumentTouchEnd, false ); | ||||||
|  | 		window.addEventListener( 'hashchange', onWindowHashChange, false ); | ||||||
|  | 		 | ||||||
|  | 		dom.controlsLeft.addEventListener( 'click', preventAndForward( navigateLeft ), false ); | ||||||
|  | 		dom.controlsRight.addEventListener( 'click', preventAndForward( navigateRight ), false ); | ||||||
|  | 		dom.controlsUp.addEventListener( 'click', preventAndForward( navigateUp ), false ); | ||||||
|  | 		dom.controlsDown.addEventListener( 'click', preventAndForward( navigateDown ), false ); | ||||||
|  | 	} | ||||||
|  | 	function removeEvents(){ | ||||||
|  | 		// Bind all view events | ||||||
|  | 		document.removeEventListener( 'keydown', onDocumentKeyDown, false ); | ||||||
|  | 		document.removeEventListener( 'touchstart', onDocumentTouchStart, false ); | ||||||
|  | 		document.removeEventListener( 'touchmove', onDocumentTouchMove, false ); | ||||||
|  | 		document.removeEventListener( 'touchend', onDocumentTouchEnd, false ); | ||||||
|  | 		window.removeEventListener( 'hashchange', onWindowHashChange, false ); | ||||||
|  | 		 | ||||||
|  | 		dom.controlsLeft.removeEventListener( 'click', preventAndForward( navigateLeft ), false ); | ||||||
|  | 		dom.controlsRight.removeEventListener( 'click', preventAndForward( navigateRight ), false ); | ||||||
|  | 		dom.controlsUp.removeEventListener( 'click', preventAndForward( navigateUp ), false ); | ||||||
|  | 		dom.controlsDown.removeEventListener( 'click', preventAndForward( navigateDown ), false ); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * Extend object a with the properties of object b.  | 	 * Extend object a with the properties of object b.  | ||||||
| 	 * If there's a conflict, object b takes precedence. | 	 * If there's a conflict, object b takes precedence. | ||||||
| @@ -227,7 +246,6 @@ var Reveal = (function(){ | |||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 	} | 	} | ||||||
| 	 |  | ||||||
| 	/** | 	/** | ||||||
| 	 * Handler for the document level 'touchstart' event. | 	 * Handler for the document level 'touchstart' event. | ||||||
| 	 *  | 	 *  | ||||||
| @@ -358,6 +376,7 @@ var Reveal = (function(){ | |||||||
| 	 * can't be improved. | 	 * can't be improved. | ||||||
| 	 */ | 	 */ | ||||||
| 	function activateOverview() { | 	function activateOverview() { | ||||||
|  | 		 | ||||||
| 		dom.wrapper.classList.add( 'overview' ); | 		dom.wrapper.classList.add( 'overview' ); | ||||||
|  |  | ||||||
| 		var horizontalSlides = Array.prototype.slice.call( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ); | 		var horizontalSlides = Array.prototype.slice.call( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ); | ||||||
| @@ -373,12 +392,12 @@ var Reveal = (function(){ | |||||||
| 			hslide.style.msTransform = htransform; | 			hslide.style.msTransform = htransform; | ||||||
| 			hslide.style.OTransform = htransform; | 			hslide.style.OTransform = htransform; | ||||||
| 			hslide.style.transform = htransform; | 			hslide.style.transform = htransform; | ||||||
|  | 		 | ||||||
| 			if( !hslide.classList.contains( 'stack' ) ) { | 			if( !hslide.classList.contains( 'stack' ) ) { | ||||||
| 				// Navigate to this slide on click | 				// Navigate to this slide on click | ||||||
| 				hslide.addEventListener( 'click', onOverviewSlideClicked, true ); | 				hslide.addEventListener( 'click', onOverviewSlideClicked, true ); | ||||||
| 			} | 			} | ||||||
|  | 	 | ||||||
| 			var verticalSlides = Array.prototype.slice.call( hslide.querySelectorAll( 'section' ) ); | 			var verticalSlides = Array.prototype.slice.call( hslide.querySelectorAll( 'section' ) ); | ||||||
|  |  | ||||||
| 			for( var j = 0, len2 = verticalSlides.length; j < len2; j++ ) { | 			for( var j = 0, len2 = verticalSlides.length; j < len2; j++ ) { | ||||||
| @@ -397,6 +416,7 @@ var Reveal = (function(){ | |||||||
| 				// Navigate to this slide on click | 				// Navigate to this slide on click | ||||||
| 				vslide.addEventListener( 'click', onOverviewSlideClicked, true ); | 				vslide.addEventListener( 'click', onOverviewSlideClicked, true ); | ||||||
| 			} | 			} | ||||||
|  | 			 | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| @@ -806,6 +826,14 @@ var Reveal = (function(){ | |||||||
| 			availableRoutes().down ? navigateDown() : navigateRight(); | 			availableRoutes().down ? navigateDown() : navigateRight(); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | 	function overviewToggle (){ | ||||||
|  | 		if( overviewIsActive() ) { | ||||||
|  | 			deactivateOverview(); | ||||||
|  | 		} | ||||||
|  | 		else { | ||||||
|  | 			activateOverview(); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
| 	 | 	 | ||||||
| 	// Expose some methods publicly | 	// Expose some methods publicly | ||||||
| 	return { | 	return { | ||||||
| @@ -815,6 +843,9 @@ var Reveal = (function(){ | |||||||
| 		navigateRight: navigateRight, | 		navigateRight: navigateRight, | ||||||
| 		navigateUp: navigateUp, | 		navigateUp: navigateUp, | ||||||
| 		navigateDown: navigateDown, | 		navigateDown: navigateDown, | ||||||
|  | 		overviewToggle: overviewToggle, | ||||||
|  | 		addEvents: addEvents, | ||||||
|  | 		removeEvents: removeEvents, | ||||||
|  |  | ||||||
| 		// 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 ) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user