revproxy-presentation/js/index.js

54 lines
1.4 KiB
JavaScript
Raw Normal View History

import Deck from './reveal.js'
2020-04-07 09:40:11 +02:00
/**
* Expose the Reveal class to the window. To create a
* new instance:
* let deck = new Reveal( document.querySelector( '.reveal' ), {
* controls: false
* } );
* deck.initialize().then(() => {
* // reveal.js is ready
* });
*/
let Reveal = Deck;
2020-04-07 09:40:11 +02:00
/**
* The below is a thin shell that mimics the pre 4.0
* reveal.js API and ensures backwards compatibility.
* This API only allows for one Reveal instance per
2020-04-07 09:40:11 +02:00
* page, whereas the new API above lets you run many
* presentations on the same page.
*
* Reveal.initialize( { controls: false } ).then(() => {
* // reveal.js is ready
* });
*/
let enqueuedAPICalls = [];
Reveal.initialize = options => {
2020-04-07 09:40:11 +02:00
// Create our singleton reveal.js instance
Object.assign( Reveal, new Deck( document.querySelector( '.reveal' ), options ) );
2020-04-07 09:40:11 +02:00
// Invoke any enqueued API calls
enqueuedAPICalls.map( method => method( Reveal ) );
2020-04-07 09:40:11 +02:00
return Reveal.initialize();
2020-04-07 09:40:11 +02:00
}
/**
* The pre 4.0 API let you add event listener before
* initializing. We maintain the same behavior by
* queuing up premature API calls and invoking all
* of them when Reveal.initialize is called.
2020-04-07 09:40:11 +02:00
*/
[ 'on', 'off', 'addEventListener', 'removeEventListener', 'registerPlugin' ].forEach( method => {
Reveal[method] = ( ...args ) => {
2020-04-07 09:40:11 +02:00
enqueuedAPICalls.push( deck => deck[method].call( null, ...args ) );
}
} );
export default Reveal;