refactor js, more natural order of startup methods
This commit is contained in:
parent
ac3f021a14
commit
ead85fd475
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.
|
||||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue