Browse Source

add grunt.js build file (closes #235)

Hakim El Hattab 11 years ago
parent
commit
d6d0f40c5e
7 changed files with 148 additions and 35 deletions
  1. 8 1
      README.md
  2. 6 0
      css/reveal.min.css
  3. 83 0
      grunt.js
  4. 2 1
      index.html
  5. 37 28
      js/reveal.js
  6. 1 1
      js/reveal.min.js
  7. 11 4
      package.json

+ 8 - 1
README.md

@@ -285,12 +285,19 @@ Then:
 3. Run ```node plugin/notes-server```
 
 
-## Folder Structure
+## Development Environment 
+
+reveal.js is built using the task-based command line build tool (grunt.js)[http://gruntjs.com]. Installation instructions here https://github.com/gruntjs/grunt#installing-grunt. With Node.js and grunt installed, you need to start by running ```npm install``` in the reveal.js root. When the dependencies have been installed you should run ```grunt watch``` to start monitoring files for changes.
+
+If you want to customize reveal.js without running grunt.js you can alter the HTML to point to the uncompressed source files (css/reveal.css/js/reveal.js).
+
+### Folder Structure
 - **css/** Core styles without which the project does not function
 - **js/** Like above but for JavaScript
 - **plugin/** Components that have been developed as extensions to reveal.js
 - **lib/** All other third party assets (JavaScript, CSS, fonts)
 
+
 ## License
 
 MIT licensed

File diff suppressed because it is too large
+ 6 - 0
css/reveal.min.css


+ 83 - 0
grunt.js

@@ -0,0 +1,83 @@
+/* global module:false */
+module.exports = function(grunt) {
+
+	// Project configuration
+	grunt.initConfig({
+		pkg: '<json:package.json>',
+
+		inputJS: 'js/reveal.js',
+		inputCSS: 'css/reveal.css',
+
+		outputJS: 'js/reveal.min.js',
+		outputCSS: 'css/reveal.min.css',
+
+		meta: {
+			version: '2.2',
+			banner: 
+				'/*!\n' +
+				' * reveal.js <%= meta.version %> (<%= grunt.template.today("yyyy-mm-dd, HH:MM") %>)\n' +
+				' * http://lab.hakim.se/reveal-js\n' +
+				' * MIT licensed\n' +
+				' *\n' +
+				' * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se\n' +
+				' */'
+		},
+
+		lint: {
+			files: [ 'grunt.js', '<%= inputJS %>' ]
+		},
+
+		// Tests will be added soon
+		qunit: {
+			files: [ 'test/**/*.html' ]
+		},
+
+		min: {
+			dist: {
+				src: [ '<banner:meta.banner>', '<%= inputJS %>' ],
+				dest: '<%= outputJS %>'
+			}
+		},
+
+		mincss: {
+			compress: {
+				files: {
+					'<%= outputCSS %>': [ '<%= inputCSS %>' ]
+				}
+			}
+		},
+
+		jshint: {
+			options: {
+				curly: false,
+				eqeqeq: true,
+				immed: true,
+				latedef: true,
+				newcap: true,
+				noarg: true,
+				sub: true,
+				undef: true,
+				eqnull: true,
+				browser: true,
+				expr: true
+			},
+			globals: {
+				head: false,
+				module: false
+			}
+		},
+
+		watch: {
+			files: [ 'grunt.js', '<%= inputJS %>', '<%= inputCSS %>' ],
+			tasks: 'default'
+		}
+
+	});
+	
+	// Dependencies
+	grunt.loadNpmTasks( 'grunt-contrib-mincss' );
+
+	// Default task
+	grunt.registerTask( 'default', [ 'lint', 'mincss', 'min' ] );
+
+};

+ 2 - 1
index.html

@@ -12,7 +12,7 @@
 		<meta name="apple-mobile-web-app-capable" content="yes" />
 		<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
 
-		<link rel="stylesheet" href="css/reveal.css">
+		<link rel="stylesheet" href="css/reveal.min.css">
 		<link rel="stylesheet" href="css/theme/default.css" id="theme">
 
 		<!-- For syntax highlighting -->
@@ -164,6 +164,7 @@
 						<a href="?theme=beige#/themes">Beige</a> -
 						<a href="?theme=simple#/themes">Simple</a> -
 						<a href="?theme=serif#/themes">Serif</a> -
+						<a href="?theme=night#/night">Night</a> -
 						<a href="?#/themes">Default</a>
 					</p>
 					<p>

+ 37 - 28
js/reveal.js

@@ -1,5 +1,5 @@
 /*!
- * reveal.js 2.2 r45
+ * reveal.js
  * http://lab.hakim.se/reveal-js
  * MIT licensed
  *
@@ -359,12 +359,12 @@ var Reveal = (function(){
 		}
 
 		if ( config.controls && dom.controls ) {
-			dom.controlsLeft.forEach( function( el ) { 		el.addEventListener( 'click', preventAndForward( navigateLeft ), false ); 		} );
-			dom.controlsRight.forEach( function( el ) { 	el.addEventListener( 'click', preventAndForward( navigateRight ), false ); 		} );
-			dom.controlsUp.forEach( function( el ) { 		el.addEventListener( 'click', preventAndForward( navigateUp ), false ); 		} );
-			dom.controlsDown.forEach( function( el ) { 		el.addEventListener( 'click', preventAndForward( navigateDown ), false ); 		} );
-			dom.controlsPrev.forEach( function( el ) { 		el.addEventListener( 'click', preventAndForward( navigatePrev ), false ); 		} );
-			dom.controlsNext.forEach( function( el ) { 		el.addEventListener( 'click', preventAndForward( navigateNext ), false ); 		} );
+			dom.controlsLeft.forEach( function( el ) { el.addEventListener( 'click', preventAndForward( navigateLeft ), false ); } );
+			dom.controlsRight.forEach( function( el ) { el.addEventListener( 'click', preventAndForward( navigateRight ), false ); } );
+			dom.controlsUp.forEach( function( el ) { el.addEventListener( 'click', preventAndForward( navigateUp ), false ); } );
+			dom.controlsDown.forEach( function( el ) { el.addEventListener( 'click', preventAndForward( navigateDown ), false ); } );
+			dom.controlsPrev.forEach( function( el ) { el.addEventListener( 'click', preventAndForward( navigatePrev ), false ); } );
+			dom.controlsNext.forEach( function( el ) { el.addEventListener( 'click', preventAndForward( navigateNext ), false ); } );
 		}
 	}
 
@@ -384,12 +384,12 @@ var Reveal = (function(){
 		}
 
 		if ( config.controls && dom.controls ) {
-			dom.controlsLeft.forEach( function( el ) { 		el.removeEventListener( 'click', preventAndForward( navigateLeft ), false ); 		} );
-			dom.controlsRight.forEach( function( el ) { 	el.removeEventListener( 'click', preventAndForward( navigateRight ), false ); 		} );
-			dom.controlsUp.forEach( function( el ) { 		el.removeEventListener( 'click', preventAndForward( navigateUp ), false ); 			} );
-			dom.controlsDown.forEach( function( el ) { 		el.removeEventListener( 'click', preventAndForward( navigateDown ), false ); 		} );
-			dom.controlsPrev.forEach( function( el ) { 		el.removeEventListener( 'click', preventAndForward( navigatePrev ), false ); 		} );
-			dom.controlsNext.forEach( function( el ) { 		el.removeEventListener( 'click', preventAndForward( navigateNext ), false ); 		} );
+			dom.controlsLeft.forEach( function( el ) { el.removeEventListener( 'click', preventAndForward( navigateLeft ), false ); } );
+			dom.controlsRight.forEach( function( el ) { el.removeEventListener( 'click', preventAndForward( navigateRight ), false ); } );
+			dom.controlsUp.forEach( function( el ) { el.removeEventListener( 'click', preventAndForward( navigateUp ), false ); } );
+			dom.controlsDown.forEach( function( el ) { el.removeEventListener( 'click', preventAndForward( navigateDown ), false ); } );
+			dom.controlsPrev.forEach( function( el ) { el.removeEventListener( 'click', preventAndForward( navigatePrev ), false ); } );
+			dom.controlsNext.forEach( function( el ) { el.removeEventListener( 'click', preventAndForward( navigateNext ), false ); } );
 		}
 	}
 
@@ -542,7 +542,7 @@ var Reveal = (function(){
 	 */
 	function getPreviousVerticalIndex( stack ) {
 		if( stack && stack.classList.contains( 'stack' ) ) {
-			return parseInt( stack.getAttribute( 'data-previous-indexv' ) || 0 );
+			return parseInt( stack.getAttribute( 'data-previous-indexv' ) || 0, 10 );
 		}
 
 		return 0;
@@ -912,9 +912,9 @@ var Reveal = (function(){
 			// autoSlide value otherwise use the global configured time
 			var slideAutoSlide = slides[index].getAttribute( 'data-autoslide' );
 			if( slideAutoSlide ) {
-				autoSlide = parseInt( slideAutoSlide );
+				autoSlide = parseInt( slideAutoSlide, 10 );
 			} else {
-				autoSlide = config.autoSlide
+				autoSlide = config.autoSlide;
 			}
 
 		}
@@ -950,17 +950,23 @@ var Reveal = (function(){
 				for( var j = 0; j < verticalSlides.length; j++ ) {
 
 					// Stop as soon as we arrive at the present
-					if( verticalSlides[j].classList.contains( 'present' ) ) break mainLoop;
+					if( verticalSlides[j].classList.contains( 'present' ) ) {
+						break mainLoop;
+					}
 
-					pastCount++
+					pastCount++;
 
 				}
 
 				// Stop as soon as we arrive at the present
-				if( horizontalSlide.classList.contains( 'present' ) ) break;
+				if( horizontalSlide.classList.contains( 'present' ) ) {
+					break;
+				}
 
 				// Don't count the wrapping section for vertical slides
-				if( horizontalSlide.classList.contains( 'stack' ) === false ) pastCount++;
+				if( horizontalSlide.classList.contains( 'stack' ) === false ) {
+					pastCount++;
+				}
 
 			}
 
@@ -987,14 +993,14 @@ var Reveal = (function(){
 			} );
 
 			// Add the 'enabled' class to the available routes
-			if( routes.left ) dom.controlsLeft.forEach( function( el ) { 	el.classList.add( 'enabled' );		} );
-			if( routes.right ) dom.controlsRight.forEach( function( el ) { 	el.classList.add( 'enabled' );		} );
-			if( routes.up ) dom.controlsUp.forEach( function( el ) { 		el.classList.add( 'enabled' );		} );
-			if( routes.down ) dom.controlsDown.forEach( function( el ) { 	el.classList.add( 'enabled' );		} );
+			if( routes.left ) dom.controlsLeft.forEach( function( el ) { el.classList.add( 'enabled' );	} );
+			if( routes.right ) dom.controlsRight.forEach( function( el ) { el.classList.add( 'enabled' ); } );
+			if( routes.up ) dom.controlsUp.forEach( function( el ) { el.classList.add( 'enabled' );	} );
+			if( routes.down ) dom.controlsDown.forEach( function( el ) { el.classList.add( 'enabled' ); } );
 
 			// Prev/next buttons
-			if( routes.left || routes.up ) dom.controlsPrev.forEach( function( el ) { 		el.classList.add( 'enabled' );		} );
-			if( routes.right || routes.down ) dom.controlsNext.forEach( function( el ) { 	el.classList.add( 'enabled' );		} );
+			if( routes.left || routes.up ) dom.controlsPrev.forEach( function( el ) { el.classList.add( 'enabled' ); } );
+			if( routes.right || routes.down ) dom.controlsNext.forEach( function( el ) { el.classList.add( 'enabled' ); } );
 
 		}
 	}
@@ -1268,7 +1274,7 @@ var Reveal = (function(){
 		// Check if there's a focused element that could be using 
 		// the keyboard
 		var activeElement = document.activeElement;
-    	var hasFocus = !!( document.activeElement && ( document.activeElement.type || document.activeElement.href || document.activeElement.contentEditable !== 'inherit' ) );
+		var hasFocus = !!( document.activeElement && ( document.activeElement.type || document.activeElement.href || document.activeElement.contentEditable !== 'inherit' ) );
 
 		// Disregard the event if there's a focused element or a 
 		// keyboard modifier key is present
@@ -1479,7 +1485,10 @@ var Reveal = (function(){
 
 			deactivateOverview();
 
-			slide( parseInt( this.getAttribute( 'data-index-h' ) ), parseInt( this.getAttribute( 'data-index-v' ) ) );
+			var h = parseInt( event.target.getAttribute( 'data-index-h' ), 10 ),
+				v = parseInt( event.target.getAttribute( 'data-index-v' ), 10 );
+
+			slide( h, v );
 		}
 	}
 

File diff suppressed because it is too large
+ 1 - 1
js/reveal.min.js


+ 11 - 4
package.json

@@ -1,8 +1,13 @@
 {
-	"author": "Hakim El Hattab",
 	"name": "reveal.js",
-	"description": "HTML5 Slideware with Presenter Notes",
-	"version": "1.5.0",
+	"version": "2.2.0",
+	"description": "The HTML Presentation Framework",
+	"homepage": "http://lab.hakim.se/reveal-js",
+	"author": {
+		"name": "Hakim El Hattab",
+		"email": "hakim.elhattab@gmail.com",
+		"web": "http://hakim.se"
+	},
 	"repository": {
 		"type": "git",
 		"url": "git://github.com/hakimel/reveal.js.git"
@@ -16,5 +21,7 @@
 		"socket.io" : "~0.9.6",
 		"mustache" : "~0.4.0"
 	},
-	"devDependencies": {}
+	"devDependencies": {
+		"grunt-contrib-mincss": "~0.3.2"
+	}
 }

Some files were not shown because too many files changed in this diff