optimization, only declare background creation method once
This commit is contained in:
		
							
								
								
									
										103
									
								
								js/reveal.js
									
									
									
									
									
								
							
							
						
						
									
										103
									
								
								js/reveal.js
									
									
									
									
									
								
							| @@ -425,71 +425,26 @@ var Reveal = (function(){ | |||||||
| 		dom.background.innerHTML = ''; | 		dom.background.innerHTML = ''; | ||||||
| 		dom.background.classList.add( 'no-transition' ); | 		dom.background.classList.add( 'no-transition' ); | ||||||
|  |  | ||||||
| 		// Helper method for creating a background element for the |  | ||||||
| 		// given slide |  | ||||||
| 		function _createBackground( slide, container ) { |  | ||||||
|  |  | ||||||
| 			var data = { |  | ||||||
| 				background: slide.getAttribute( 'data-background' ), |  | ||||||
| 				backgroundSize: slide.getAttribute( 'data-background-size' ), |  | ||||||
| 				backgroundImage: slide.getAttribute( 'data-background-image' ), |  | ||||||
| 				backgroundColor: slide.getAttribute( 'data-background-color' ), |  | ||||||
| 				backgroundRepeat: slide.getAttribute( 'data-background-repeat' ), |  | ||||||
| 				backgroundPosition: slide.getAttribute( 'data-background-position' ), |  | ||||||
| 				backgroundTransition: slide.getAttribute( 'data-background-transition' ) |  | ||||||
| 			}; |  | ||||||
|  |  | ||||||
| 			var element = document.createElement( 'div' ); |  | ||||||
| 			element.className = 'slide-background'; |  | ||||||
|  |  | ||||||
| 			if( data.background ) { |  | ||||||
| 				// Auto-wrap image urls in url(...) |  | ||||||
| 				if( /^(http|file|\/\/)/gi.test( data.background ) || /\.(svg|png|jpg|jpeg|gif|bmp)$/gi.test( data.background ) ) { |  | ||||||
| 					element.style.backgroundImage = 'url('+ data.background +')'; |  | ||||||
| 				} |  | ||||||
| 				else { |  | ||||||
| 					element.style.background = data.background; |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
| 			if( data.background || data.backgroundColor || data.backgroundImage ) { |  | ||||||
| 				element.setAttribute( 'data-background-hash', data.background + data.backgroundSize + data.backgroundImage + data.backgroundColor + data.backgroundRepeat + data.backgroundPosition + data.backgroundTransition ); |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
| 			// Additional and optional background properties |  | ||||||
| 			if( data.backgroundSize ) element.style.backgroundSize = data.backgroundSize; |  | ||||||
| 			if( data.backgroundImage ) element.style.backgroundImage = 'url("' + data.backgroundImage + '")'; |  | ||||||
| 			if( data.backgroundColor ) element.style.backgroundColor = data.backgroundColor; |  | ||||||
| 			if( data.backgroundRepeat ) element.style.backgroundRepeat = data.backgroundRepeat; |  | ||||||
| 			if( data.backgroundPosition ) element.style.backgroundPosition = data.backgroundPosition; |  | ||||||
| 			if( data.backgroundTransition ) element.setAttribute( 'data-background-transition', data.backgroundTransition ); |  | ||||||
|  |  | ||||||
| 			container.appendChild( element ); |  | ||||||
|  |  | ||||||
| 			return element; |  | ||||||
|  |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		// Iterate over all horizontal slides | 		// Iterate over all horizontal slides | ||||||
| 		toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ).forEach( function( slideh ) { | 		toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ).forEach( function( slideh ) { | ||||||
|  |  | ||||||
| 			var backgroundStack; | 			var backgroundStack; | ||||||
|  |  | ||||||
| 			if( isPrintingPDF() ) { | 			if( isPrintingPDF() ) { | ||||||
| 				backgroundStack = _createBackground( slideh, slideh ); | 				backgroundStack = createBackground( slideh, slideh ); | ||||||
| 			} | 			} | ||||||
| 			else { | 			else { | ||||||
| 				backgroundStack = _createBackground( slideh, dom.background ); | 				backgroundStack = createBackground( slideh, dom.background ); | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			// Iterate over all vertical slides | 			// Iterate over all vertical slides | ||||||
| 			toArray( slideh.querySelectorAll( 'section' ) ).forEach( function( slidev ) { | 			toArray( slideh.querySelectorAll( 'section' ) ).forEach( function( slidev ) { | ||||||
|  |  | ||||||
| 				if( isPrintingPDF() ) { | 				if( isPrintingPDF() ) { | ||||||
| 					_createBackground( slidev, slidev ); | 					createBackground( slidev, slidev ); | ||||||
| 				} | 				} | ||||||
| 				else { | 				else { | ||||||
| 					_createBackground( slidev, backgroundStack ); | 					createBackground( slidev, backgroundStack ); | ||||||
| 				} | 				} | ||||||
|  |  | ||||||
| 			} ); | 			} ); | ||||||
| @@ -520,6 +475,56 @@ var Reveal = (function(){ | |||||||
|  |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * Creates a background for the given slide. | ||||||
|  | 	 * | ||||||
|  | 	 * @param {HTMLElement} slide | ||||||
|  | 	 * @param {HTMLElement} container The element that the background | ||||||
|  | 	 * should be appended to | ||||||
|  | 	 */ | ||||||
|  | 	function createBackground( slide, container ) { | ||||||
|  |  | ||||||
|  | 		var data = { | ||||||
|  | 			background: slide.getAttribute( 'data-background' ), | ||||||
|  | 			backgroundSize: slide.getAttribute( 'data-background-size' ), | ||||||
|  | 			backgroundImage: slide.getAttribute( 'data-background-image' ), | ||||||
|  | 			backgroundColor: slide.getAttribute( 'data-background-color' ), | ||||||
|  | 			backgroundRepeat: slide.getAttribute( 'data-background-repeat' ), | ||||||
|  | 			backgroundPosition: slide.getAttribute( 'data-background-position' ), | ||||||
|  | 			backgroundTransition: slide.getAttribute( 'data-background-transition' ) | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		var element = document.createElement( 'div' ); | ||||||
|  | 		element.className = 'slide-background'; | ||||||
|  |  | ||||||
|  | 		if( data.background ) { | ||||||
|  | 			// Auto-wrap image urls in url(...) | ||||||
|  | 			if( /^(http|file|\/\/)/gi.test( data.background ) || /\.(svg|png|jpg|jpeg|gif|bmp)$/gi.test( data.background ) ) { | ||||||
|  | 				element.style.backgroundImage = 'url('+ data.background +')'; | ||||||
|  | 			} | ||||||
|  | 			else { | ||||||
|  | 				element.style.background = data.background; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		if( data.background || data.backgroundColor || data.backgroundImage ) { | ||||||
|  | 			element.setAttribute( 'data-background-hash', data.background + data.backgroundSize + data.backgroundImage + data.backgroundColor + data.backgroundRepeat + data.backgroundPosition + data.backgroundTransition ); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		// Additional and optional background properties | ||||||
|  | 		if( data.backgroundSize ) element.style.backgroundSize = data.backgroundSize; | ||||||
|  | 		if( data.backgroundImage ) element.style.backgroundImage = 'url("' + data.backgroundImage + '")'; | ||||||
|  | 		if( data.backgroundColor ) element.style.backgroundColor = data.backgroundColor; | ||||||
|  | 		if( data.backgroundRepeat ) element.style.backgroundRepeat = data.backgroundRepeat; | ||||||
|  | 		if( data.backgroundPosition ) element.style.backgroundPosition = data.backgroundPosition; | ||||||
|  | 		if( data.backgroundTransition ) element.setAttribute( 'data-background-transition', data.backgroundTransition ); | ||||||
|  |  | ||||||
|  | 		container.appendChild( element ); | ||||||
|  |  | ||||||
|  | 		return element; | ||||||
|  |  | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * 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. | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								js/reveal.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								js/reveal.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Reference in New Issue
	
	Block a user