|
@@ -1,5 +1,5 @@
|
|
|
/*!
|
|
|
- * reveal.js 2.0 r17
|
|
|
+ * reveal.js 2.0 r18
|
|
|
* http://lab.hakim.se/reveal-js
|
|
|
* MIT licensed
|
|
|
*
|
|
@@ -40,7 +40,10 @@ var Reveal = (function(){
|
|
|
rollingLinks: true,
|
|
|
|
|
|
// Transition style
|
|
|
- transition: 'default' // default/cube/page/concave/linear(2d)
|
|
|
+ transition: 'default', // default/cube/page/concave/linear(2d),
|
|
|
+
|
|
|
+ // Script dependencies to load
|
|
|
+ dependencies: []
|
|
|
},
|
|
|
|
|
|
// The horizontal and verical index of the currently active slide
|
|
@@ -71,9 +74,6 @@ var Reveal = (function(){
|
|
|
'msTransform' in document.body.style ||
|
|
|
'OTransform' in document.body.style ||
|
|
|
'transform' in document.body.style,
|
|
|
-
|
|
|
- // Detect support for elem.classList
|
|
|
- supportsClassList = !!document.body.classList;
|
|
|
|
|
|
// Throttles mouse wheel navigation
|
|
|
mouseWheelTimeout = 0,
|
|
@@ -96,12 +96,10 @@ var Reveal = (function(){
|
|
|
|
|
|
|
|
|
/**
|
|
|
- * Starts up the slideshow by applying configuration
|
|
|
- * options and binding various events.
|
|
|
+ * Starts up the presentation if the client is capable.
|
|
|
*/
|
|
|
function initialize( options ) {
|
|
|
-
|
|
|
- if( ( !supports2DTransforms && !supports3DTransforms ) || !supportsClassList ) {
|
|
|
+ if( ( !supports2DTransforms && !supports3DTransforms ) ) {
|
|
|
document.body.setAttribute( 'class', 'no-transforms' );
|
|
|
|
|
|
// If the browser doesn't support core features we won't be
|
|
@@ -109,11 +107,14 @@ var Reveal = (function(){
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ // Copy options over to our config object
|
|
|
+ extend( config, options );
|
|
|
+
|
|
|
// Cache references to DOM elements
|
|
|
dom.wrapper = document.querySelector( '.reveal' );
|
|
|
dom.progress = document.querySelector( '.reveal .progress' );
|
|
|
dom.progressbar = document.querySelector( '.reveal .progress span' );
|
|
|
-
|
|
|
+
|
|
|
if ( config.controls ) {
|
|
|
dom.controls = document.querySelector( '.reveal .controls' );
|
|
|
dom.controlsLeft = document.querySelector( '.reveal .controls .left' );
|
|
@@ -121,21 +122,9 @@ var Reveal = (function(){
|
|
|
dom.controlsUp = document.querySelector( '.reveal .controls .up' );
|
|
|
dom.controlsDown = document.querySelector( '.reveal .controls .down' );
|
|
|
}
|
|
|
-
|
|
|
- // Copy options over to our config object
|
|
|
- extend( config, options );
|
|
|
-
|
|
|
- // Subscribe to input
|
|
|
- addEventListeners();
|
|
|
-
|
|
|
- // Updates the presentation to match the current configuration values
|
|
|
- configure();
|
|
|
-
|
|
|
- // Read the initial hash
|
|
|
- readURL();
|
|
|
|
|
|
- // Start auto-sliding if it's enabled
|
|
|
- cueAutoSlide();
|
|
|
+ // Loads the dependencies and continues to #start() once done
|
|
|
+ load();
|
|
|
|
|
|
// Set up hiding of the browser address bar
|
|
|
if( navigator.userAgent.match( /(iphone|ipod|android)/i ) ) {
|
|
@@ -150,6 +139,76 @@ 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_-]*)\.?[^\\\/]*$/i )[0], s.callback );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // Called once synchronous scritps finish loading
|
|
|
+ function proceed() {
|
|
|
+ // 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() {
|
|
|
+ // Subscribe to input
|
|
|
+ addEventListeners();
|
|
|
+
|
|
|
+ // Updates the presentation to match the current configuration values
|
|
|
+ configure();
|
|
|
+
|
|
|
+ // Read the initial hash
|
|
|
+ readURL();
|
|
|
+
|
|
|
+ // Start auto-sliding if it's enabled
|
|
|
+ cueAutoSlide();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Applies the configuration settings from the config object.
|
|
|
+ */
|
|
|
function configure() {
|
|
|
if( supports3DTransforms === false ) {
|
|
|
config.transition = 'linear';
|