|
@@ -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
|
|
|
* 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
|
|
|
* 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,
|
|
|
* more vertical space ftw.
|