refactor js, more natural order of startup methods
This commit is contained in:
		
							
								
								
									
										202
									
								
								js/reveal.js
									
									
									
									
									
								
							
							
						
						
									
										202
									
								
								js/reveal.js
									
									
									
									
									
								
							| @@ -209,6 +209,94 @@ var Reveal = (function(){ | |||||||
|  |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * Loads the dependencies of reveal.js. Dependencies are | ||||||
|  | 	 * defined via the configuration option 'dependencies' | ||||||
|  | 	 * and will be loaded prior to starting/binding reveal.js. | ||||||
|  | 	 * Some dependencies may have an 'async' flag, if so they | ||||||
|  | 	 * will load after reveal.js has been started up. | ||||||
|  | 	 */ | ||||||
|  | 	function load() { | ||||||
|  |  | ||||||
|  | 		var scripts = [], | ||||||
|  | 			scriptsAsync = []; | ||||||
|  |  | ||||||
|  | 		for( var i = 0, len = config.dependencies.length; i < len; i++ ) { | ||||||
|  | 			var s = config.dependencies[i]; | ||||||
|  |  | ||||||
|  | 			// Load if there's no condition or the condition is truthy | ||||||
|  | 			if( !s.condition || s.condition() ) { | ||||||
|  | 				if( s.async ) { | ||||||
|  | 					scriptsAsync.push( s.src ); | ||||||
|  | 				} | ||||||
|  | 				else { | ||||||
|  | 					scripts.push( s.src ); | ||||||
|  | 				} | ||||||
|  |  | ||||||
|  | 				// Extension may contain callback functions | ||||||
|  | 				if( typeof s.callback === 'function' ) { | ||||||
|  | 					head.ready( s.src.match( /([\w\d_\-]*)\.?js$|[^\\\/]*$/i )[0], s.callback ); | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		// Called once synchronous scripts finish loading | ||||||
|  | 		function proceed() { | ||||||
|  | 			if( scriptsAsync.length ) { | ||||||
|  | 				// Load asynchronous scripts | ||||||
|  | 				head.js.apply( null, scriptsAsync ); | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			start(); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		if( scripts.length ) { | ||||||
|  | 			head.ready( proceed ); | ||||||
|  |  | ||||||
|  | 			// Load synchronous scripts | ||||||
|  | 			head.js.apply( null, scripts ); | ||||||
|  | 		} | ||||||
|  | 		else { | ||||||
|  | 			proceed(); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * Starts up reveal.js by binding input events and navigating | ||||||
|  | 	 * to the current URL deeplink if there is one. | ||||||
|  | 	 */ | ||||||
|  | 	function start() { | ||||||
|  |  | ||||||
|  | 		// Make sure we've got all the DOM elements we need | ||||||
|  | 		setupDOM(); | ||||||
|  |  | ||||||
|  | 		// Decorate the slide DOM elements with state classes (past/future) | ||||||
|  | 		setupSlides(); | ||||||
|  |  | ||||||
|  | 		// Updates the presentation to match the current configuration values | ||||||
|  | 		configure(); | ||||||
|  |  | ||||||
|  | 		// Read the initial hash | ||||||
|  | 		readURL(); | ||||||
|  |  | ||||||
|  | 		// Notify listeners that the presentation is ready but use a 1ms | ||||||
|  | 		// timeout to ensure it's not fired synchronously after #initialize() | ||||||
|  | 		setTimeout( function() { | ||||||
|  | 			// Enable transitions now that we're loaded | ||||||
|  | 			dom.slides.classList.remove( 'no-transition' ); | ||||||
|  |  | ||||||
|  | 			loaded = true; | ||||||
|  |  | ||||||
|  | 			dispatchEvent( 'ready', { | ||||||
|  | 				'indexh': indexh, | ||||||
|  | 				'indexv': indexv, | ||||||
|  | 				'currentSlide': currentSlide | ||||||
|  | 			} ); | ||||||
|  | 		}, 1 ); | ||||||
|  |  | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * Iterates through and decorates slides DOM elements with | 	 * Iterates through and decorates slides DOM elements with | ||||||
| 	 * appropriate classes. | 	 * appropriate classes. | ||||||
| @@ -383,107 +471,6 @@ var Reveal = (function(){ | |||||||
|  |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	/** |  | ||||||
| 	 * Hides the address bar if we're on a mobile device. |  | ||||||
| 	 */ |  | ||||||
| 	function hideAddressBar() { |  | ||||||
|  |  | ||||||
| 		if( /iphone|ipod|android/gi.test( navigator.userAgent ) && !/crios/gi.test( navigator.userAgent ) ) { |  | ||||||
| 			// Events that should trigger the address bar to hide |  | ||||||
| 			window.addEventListener( 'load', removeAddressBar, false ); |  | ||||||
| 			window.addEventListener( 'orientationchange', removeAddressBar, false ); |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	/** |  | ||||||
| 	 * Loads the dependencies of reveal.js. Dependencies are |  | ||||||
| 	 * defined via the configuration option 'dependencies' |  | ||||||
| 	 * and will be loaded prior to starting/binding reveal.js. |  | ||||||
| 	 * Some dependencies may have an 'async' flag, if so they |  | ||||||
| 	 * will load after reveal.js has been started up. |  | ||||||
| 	 */ |  | ||||||
| 	function load() { |  | ||||||
|  |  | ||||||
| 		var scripts = [], |  | ||||||
| 			scriptsAsync = []; |  | ||||||
|  |  | ||||||
| 		for( var i = 0, len = config.dependencies.length; i < len; i++ ) { |  | ||||||
| 			var s = config.dependencies[i]; |  | ||||||
|  |  | ||||||
| 			// Load if there's no condition or the condition is truthy |  | ||||||
| 			if( !s.condition || s.condition() ) { |  | ||||||
| 				if( s.async ) { |  | ||||||
| 					scriptsAsync.push( s.src ); |  | ||||||
| 				} |  | ||||||
| 				else { |  | ||||||
| 					scripts.push( s.src ); |  | ||||||
| 				} |  | ||||||
|  |  | ||||||
| 				// Extension may contain callback functions |  | ||||||
| 				if( typeof s.callback === 'function' ) { |  | ||||||
| 					head.ready( s.src.match( /([\w\d_\-]*)\.?js$|[^\\\/]*$/i )[0], s.callback ); |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		// Called once synchronous scripts finish loading |  | ||||||
| 		function proceed() { |  | ||||||
| 			if( scriptsAsync.length ) { |  | ||||||
| 				// Load asynchronous scripts |  | ||||||
| 				head.js.apply( null, scriptsAsync ); |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
| 			start(); |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		if( scripts.length ) { |  | ||||||
| 			head.ready( proceed ); |  | ||||||
|  |  | ||||||
| 			// Load synchronous scripts |  | ||||||
| 			head.js.apply( null, scripts ); |  | ||||||
| 		} |  | ||||||
| 		else { |  | ||||||
| 			proceed(); |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	/** |  | ||||||
| 	 * Starts up reveal.js by binding input events and navigating |  | ||||||
| 	 * to the current URL deeplink if there is one. |  | ||||||
| 	 */ |  | ||||||
| 	function start() { |  | ||||||
|  |  | ||||||
| 		// Make sure we've got all the DOM elements we need |  | ||||||
| 		setupDOM(); |  | ||||||
|  |  | ||||||
| 		// Decorate the slide DOM elements with state classes (past/future) |  | ||||||
| 		setupSlides(); |  | ||||||
|  |  | ||||||
| 		// Updates the presentation to match the current configuration values |  | ||||||
| 		configure(); |  | ||||||
|  |  | ||||||
| 		// Read the initial hash |  | ||||||
| 		readURL(); |  | ||||||
|  |  | ||||||
| 		// Notify listeners that the presentation is ready but use a 1ms |  | ||||||
| 		// timeout to ensure it's not fired synchronously after #initialize() |  | ||||||
| 		setTimeout( function() { |  | ||||||
| 			// Enable transitions now that we're loaded |  | ||||||
| 			dom.slides.classList.remove( 'no-transition' ); |  | ||||||
|  |  | ||||||
| 			loaded = true; |  | ||||||
|  |  | ||||||
| 			dispatchEvent( 'ready', { |  | ||||||
| 				'indexh': indexh, |  | ||||||
| 				'indexv': indexv, |  | ||||||
| 				'currentSlide': currentSlide |  | ||||||
| 			} ); |  | ||||||
| 		}, 1 ); |  | ||||||
|  |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * Applies the configuration settings from the config | 	 * Applies the configuration settings from the config | ||||||
| 	 * object. May be called multiple times. | 	 * object. May be called multiple times. | ||||||
| @@ -744,6 +731,19 @@ var Reveal = (function(){ | |||||||
|  |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * Hides the address bar if we're on a mobile device. | ||||||
|  | 	 */ | ||||||
|  | 	function hideAddressBar() { | ||||||
|  |  | ||||||
|  | 		if( /iphone|ipod|android/gi.test( navigator.userAgent ) && !/crios/gi.test( navigator.userAgent ) ) { | ||||||
|  | 			// Events that should trigger the address bar to hide | ||||||
|  | 			window.addEventListener( 'load', removeAddressBar, false ); | ||||||
|  | 			window.addEventListener( 'orientationchange', removeAddressBar, false ); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * Causes the address bar to hide on mobile devices, | 	 * Causes the address bar to hide on mobile devices, | ||||||
| 	 * more vertical space ftw. | 	 * more vertical space ftw. | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								js/reveal.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								js/reveal.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Reference in New Issue
	
	Block a user