Add auto-slide API and data-autoslide for fragments
This commit is contained in:
		
							
								
								
									
										57
									
								
								js/reveal.js
									
									
									
									
									
								
							
							
						
						
									
										57
									
								
								js/reveal.js
									
									
									
									
									
								
							| @@ -1448,6 +1448,33 @@ var Reveal = (function(){ | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Toggles the auto slide mode on and off. | ||||
| 	 * | ||||
| 	 * @param {Boolean} override Optional flag which sets the desired state.  | ||||
| 	 * True means autoplay starts, false means it stops. | ||||
| 	 */ | ||||
|  | ||||
| 	function toggleAutoSlide( override ) { | ||||
| 		if( typeof override === 'boolean' ) { | ||||
| 			override ? resumeAutoSlide() : pauseAutoSlide(); | ||||
| 		} | ||||
|  | ||||
| 		else { | ||||
| 			autoSlidePaused ? resumeAutoSlide() : pauseAutoSlide(); | ||||
| 		} | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Checks if the auto slide mode is currently on. | ||||
| 	 */ | ||||
| 	function isSliding() { | ||||
|  | ||||
| 		return !autoSlidePaused; | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Steps from the current point in the presentation to the | ||||
| 	 * slide which matches the specified horizontal and vertical | ||||
| @@ -2473,14 +2500,26 @@ var Reveal = (function(){ | ||||
|  | ||||
| 		if( currentSlide ) { | ||||
|  | ||||
| 			var fragmentAutoSlide = null; | ||||
| 			// it is assumed that any given data-autoslide value (for each of the current fragments) can be chosen | ||||
| 			toArray( Reveal.getCurrentSlide().querySelectorAll( '.current-fragment' ) ).forEach( function( el ) { | ||||
| 				if( el.hasAttribute( 'data-autoslide' ) ) { | ||||
| 					fragmentAutoSlide = el.getAttribute( 'data-autoslide' ); | ||||
| 				} | ||||
| 			} ); | ||||
|  | ||||
| 			var parentAutoSlide = currentSlide.parentNode ? currentSlide.parentNode.getAttribute( 'data-autoslide' ) : null; | ||||
| 			var slideAutoSlide = currentSlide.getAttribute( 'data-autoslide' ); | ||||
|  | ||||
| 			// Pick value in the following priority order: | ||||
| 			// 1. Current slide's data-autoslide | ||||
| 			// 2. Parent slide's data-autoslide | ||||
| 			// 3. Global autoSlide setting | ||||
| 			if( slideAutoSlide ) { | ||||
| 			// 1. Current fragment's data-autoslide | ||||
| 			// 2. Current slide's data-autoslide | ||||
| 			// 3. Parent slide's data-autoslide | ||||
| 			// 4. Global autoSlide setting | ||||
| 			if( fragmentAutoSlide ) { | ||||
| 				autoSlide = parseInt( fragmentAutoSlide, 10 ); | ||||
| 			} | ||||
| 			else if( slideAutoSlide ) { | ||||
| 				autoSlide = parseInt( slideAutoSlide, 10 ); | ||||
| 			} | ||||
| 			else if( parentAutoSlide ) { | ||||
| @@ -2533,6 +2572,7 @@ var Reveal = (function(){ | ||||
| 	function pauseAutoSlide() { | ||||
|  | ||||
| 		autoSlidePaused = true; | ||||
| 		dispatchEvent( 'autoslidepaused' ); | ||||
| 		clearTimeout( autoSlideTimeout ); | ||||
|  | ||||
| 		if( autoSlidePlayer ) { | ||||
| @@ -2544,6 +2584,7 @@ var Reveal = (function(){ | ||||
| 	function resumeAutoSlide() { | ||||
|  | ||||
| 		autoSlidePaused = false; | ||||
| 		dispatchEvent( 'autoslideresumed' ); | ||||
| 		cueAutoSlide(); | ||||
|  | ||||
| 	} | ||||
| @@ -2661,6 +2702,8 @@ var Reveal = (function(){ | ||||
| 	 */ | ||||
| 	function onDocumentKeyDown( event ) { | ||||
|  | ||||
| 		// store auto slide value to be able to toggle auto sliding | ||||
| 		var currentAutoSlideValue = autoSlidePaused; | ||||
| 		onUserInput( event ); | ||||
|  | ||||
| 		// Check if there's a focused element that could be using | ||||
| @@ -2737,6 +2780,8 @@ var Reveal = (function(){ | ||||
| 				case 66: case 190: case 191: togglePause(); break; | ||||
| 				// f | ||||
| 				case 70: enterFullscreen(); break; | ||||
| 				// a | ||||
| 				case 65: if ( config.autoSlideStoppable ) toggleAutoSlide( currentAutoSlideValue ); break; | ||||
| 				default: | ||||
| 					triggered = false; | ||||
| 			} | ||||
| @@ -3289,9 +3334,13 @@ var Reveal = (function(){ | ||||
| 		// Toggles the "black screen" mode on/off | ||||
| 		togglePause: togglePause, | ||||
|  | ||||
| 		// Toggles the auto slide mode on/off | ||||
| 		toggleAutoSlide: toggleAutoSlide, | ||||
|  | ||||
| 		// State checks | ||||
| 		isOverview: isOverview, | ||||
| 		isPaused: isPaused, | ||||
| 		isSliding: isSliding, | ||||
|  | ||||
| 		// Adds or removes all internal event listeners (such as keyboard) | ||||
| 		addEventListeners: addEventListeners, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user