simplify plugin controller
parent
d22c7bfad1
commit
91953207a5
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -20,21 +20,24 @@ export default class Plugins {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads reveal.js dependencies and registers plugins.
|
* Loads reveal.js dependencies, registers and
|
||||||
|
* initializes plugins.
|
||||||
|
*
|
||||||
|
* Plugins are direct references to a reveal.js plugin
|
||||||
|
* object that we register and initialize after any
|
||||||
|
* synchronous dependencies have loaded.
|
||||||
*
|
*
|
||||||
* Dependencies are defined via the 'dependencies' config
|
* Dependencies are defined via the 'dependencies' config
|
||||||
* option and will be loaded prior to starting reveal.js.
|
* option and will be loaded prior to starting reveal.js.
|
||||||
* Some dependencies may have an 'async' flag, if so they
|
* Some dependencies may have an 'async' flag, if so they
|
||||||
* will load after reveal.js has been started up.
|
* will load after reveal.js has been started up.
|
||||||
*
|
|
||||||
* Plugins are direct references to a reveal.js plugin
|
|
||||||
* object that we register and initialize after any
|
|
||||||
* synchronous dependencies have loaded.
|
|
||||||
*/
|
*/
|
||||||
load( dependencies ) {
|
load( plugins, dependencies ) {
|
||||||
|
|
||||||
this.state = 'loading';
|
this.state = 'loading';
|
||||||
|
|
||||||
|
plugins.forEach( this.registerPlugin.bind( this ) );
|
||||||
|
|
||||||
return new Promise( resolve => {
|
return new Promise( resolve => {
|
||||||
|
|
||||||
let scripts = [],
|
let scripts = [],
|
||||||
|
@ -157,14 +160,7 @@ export default class Plugins {
|
||||||
|
|
||||||
if( this.asyncDependencies.length ) {
|
if( this.asyncDependencies.length ) {
|
||||||
this.asyncDependencies.forEach( s => {
|
this.asyncDependencies.forEach( s => {
|
||||||
if( s.plugin ) {
|
|
||||||
this.registerPlugin( s.plugin );
|
|
||||||
if( typeof s.plugin.init === 'function' ) s.plugin.init( this.Reveal );
|
|
||||||
if( typeof s.callback === 'function' ) s.callback();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
loadScript( s.src, s.callback );
|
loadScript( s.src, s.callback );
|
||||||
}
|
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -184,7 +180,7 @@ export default class Plugins {
|
||||||
let id = plugin.id;
|
let id = plugin.id;
|
||||||
|
|
||||||
if( typeof id !== 'string' ) {
|
if( typeof id !== 'string' ) {
|
||||||
console.warn( 'reveal.js: plugin.id is not a string' );
|
console.warn( 'Unrecognized plugin format; can\'t find plugin.id', plugin );
|
||||||
}
|
}
|
||||||
else if( this.registeredPlugins[id] === undefined ) {
|
else if( this.registeredPlugins[id] === undefined ) {
|
||||||
this.registeredPlugins[id] = plugin;
|
this.registeredPlugins[id] = plugin;
|
||||||
|
|
|
@ -33,8 +33,9 @@ import {
|
||||||
*/
|
*/
|
||||||
export default function( revealElement, options ) {
|
export default function( revealElement, options ) {
|
||||||
|
|
||||||
// Support initialization with only options
|
// Support initialization with no args, one arg
|
||||||
if( arguments.length === 1 ) {
|
// [options] or two args [revealElement, options]
|
||||||
|
if( arguments.length < 2 ) {
|
||||||
options = arguments[0];
|
options = arguments[0];
|
||||||
revealElement = document.querySelector( '.reveal' );
|
revealElement = document.querySelector( '.reveal' );
|
||||||
}
|
}
|
||||||
|
@ -136,8 +137,8 @@ export default function( revealElement, options ) {
|
||||||
// Force a layout when the whole page, incl fonts, has loaded
|
// Force a layout when the whole page, incl fonts, has loaded
|
||||||
window.addEventListener( 'load', layout, false );
|
window.addEventListener( 'load', layout, false );
|
||||||
|
|
||||||
// Load plugins then move on to #start()
|
// Register plugins and load dependencies, then move on to #start()
|
||||||
plugins.load( [...config.dependencies, ...config.plugins] ).then( start );
|
plugins.load( config.plugins, config.dependencies ).then( start );
|
||||||
|
|
||||||
return new Promise( resolve => Reveal.on( 'ready', resolve ) );
|
return new Promise( resolve => Reveal.on( 'ready', resolve ) );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue