simplify plugin controller
This commit is contained in:
parent
d22c7bfad1
commit
91953207a5
6 changed files with 20 additions and 23 deletions
2
dist/reveal.es5.js
vendored
2
dist/reveal.es5.js
vendored
File diff suppressed because one or more lines are too long
2
dist/reveal.es5.js.map
vendored
2
dist/reveal.es5.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/reveal.js
vendored
2
dist/reveal.js
vendored
File diff suppressed because one or more lines are too long
2
dist/reveal.js.map
vendored
2
dist/reveal.js.map
vendored
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 a new issue