Documentation fixes based on code review.

This commit is contained in:
Henrik Ingo
2017-10-09 09:30:11 +03:00
parent f3d193d636
commit 8c12757b96
3 changed files with 41 additions and 7 deletions

View File

@@ -229,6 +229,31 @@ rootElement.addEventListener( "impress:init", function() {
impress().init(); impress().init();
``` ```
#### .tear()
Resets the DOM to its original state, as it was before `init()` was called.
This can be used to "unload" impress.js. A particular use case for this is, if you want to do
dynamic changes to the presentation, you can do a teardown, apply changes, then call `init()`
again. (In most cases, this will not cause flickering or other visible effects to the user,
beyond the intended dynamic changes.)
**Example:**
```JavaScript
impress().tear();
```
**Example:**
```JavaScript
var rootElement = document.getElementById( "impress" );
rootElement.addEventListener( "impress:init", function() {
console.log( "Impress init" );
});
impress().init();
```
#### .next() #### .next()
Navigates to the next step of the presentation using the [`goto()` function](#impressgotostepindexstepelementidstepelement-duration). Navigates to the next step of the presentation using the [`goto()` function](#impressgotostepindexstepelementidstepelement-duration).

View File

@@ -83,11 +83,11 @@ Putting all of the above together, a skeleton library file will look like:
var instanceVar = {}; var instanceVar = {};
// LIBRARY FUNCTIONS // LIBRARY FUNCTIONS
var libararyFunction1 = function () { var libraryFunction1 = function () {
/* ... */ /* ... */
}; };
var libararyFunction2 = function () { var libraryFunction2 = function () {
/* ... */ /* ... */
}; };

View File

@@ -31,34 +31,43 @@
recordStartingState( rootId ); recordStartingState( rootId );
// LIBRARY FUNCTIONS // LIBRARY FUNCTIONS
// Below are definitions of the library functions we return at the end // Definitions of the library functions we return as an object at the end
// `pushElement` adds a DOM element to the gc stack
var pushElement = function( element ) { var pushElement = function( element ) {
elementList.push( element ); elementList.push( element );
}; };
// Convenience wrapper that combines DOM appendChild with gc.pushElement // `appendChild` is a convenience wrapper that combines DOM appendChild with gc.pushElement
var appendChild = function( parent, element ) { var appendChild = function( parent, element ) {
parent.appendChild( element ); parent.appendChild( element );
pushElement( element ); pushElement( element );
}; };
// `pushEventListener` adds an event listener to the gc stack
var pushEventListener = function( target, type, listenerFunction ) { var pushEventListener = function( target, type, listenerFunction ) {
eventListenerList.push( { target:target, type:type, listener:listenerFunction } ); eventListenerList.push( { target:target, type:type, listener:listenerFunction } );
}; };
// Convenience wrapper that combines DOM addEventListener with gc.pushEventListener // `addEventListener` combines DOM addEventListener with gc.pushEventListener
var addEventListener = function( target, type, listenerFunction ) { var addEventListener = function( target, type, listenerFunction ) {
target.addEventListener( type, listenerFunction ); target.addEventListener( type, listenerFunction );
pushEventListener( target, type, listenerFunction ); pushEventListener( target, type, listenerFunction );
}; };
// If the above utilities are not enough, plugins can add their own callback function // `addCallback` If the above utilities are not enough, plugins can add their own callback
// to do arbitrary things. // function to do arbitrary things.
var addCallback = function( callback ) { var addCallback = function( callback ) {
callbackList.push( callback ); callbackList.push( callback );
}; };
addCallback( function( rootId ) { resetStartingState( rootId ); } ); addCallback( function( rootId ) { resetStartingState( rootId ); } );
// `teardown` will
// - execute all callbacks in LIFO order
// - call `removeChild` on all DOM elements in LIFO order
// - call `removeEventListener` on all event listeners in LIFO order
// The goal of a teardown is to return to the same state that the DOM was before
// `impress().init()` was called.
var teardown = function() { var teardown = function() {
// Execute the callbacks in LIFO order // Execute the callbacks in LIFO order