UNPKG

ancient-funicular

Version:

Just async mounting, updating and unmounting hierarchical carriages.

136 lines (105 loc) 7.35 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>funicular.js - Documentation</title> <script src="scripts/prettify/prettify.js"></script> <script src="scripts/prettify/lang-css.js"></script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css"> <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> </head> <body> <input type="checkbox" id="nav-trigger" class="nav-trigger" /> <label for="nav-trigger" class="navicon-button x"> <div class="navicon"></div> </label> <label for="nav-trigger" class="overlay"></label> <nav> <li class="nav-link nav-home-link"><a href="index.html">Home</a></li><li class="nav-heading">Classes</li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html">Carriage</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#disable">disable</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#enable">enable</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#mount">mount</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#mountChild">mountChild</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#remount">remount</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#shouldRemount">shouldRemount</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#tieChild">tieChild</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#unique">unique</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#unmount">unmount</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#unmountChilds">unmountChilds</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Carriage.html#untieChild">untieChild</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="ancient-funicular.Funicular.html">Funicular</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ancient-funicular.Funicular.html#mount">mount</a></span></li><li class="nav-heading">Modules</li><li class="nav-heading"><span class="nav-item-type type-module">M</span><span class="nav-item-name"><a href="module-ancient-funicular.html">ancient-funicular</a></span></li><li class="nav-heading">Interfaces</li><li class="nav-heading"><span class="nav-item-type type-interface">I</span><span class="nav-item-name"><a href="module-ancient-funicular-CarriageListsByNames.html">CarriageListsByNames</a></span></li><li class="nav-heading"><span class="nav-item-type type-interface">I</span><span class="nav-item-name"><a href="module-ancient-funicular-CarriagesByIds.html">CarriagesByIds</a></span></li><li class="nav-heading"><span class="nav-item-type type-interface">I</span><span class="nav-item-name"><a href="module-ancient-funicular-CarriagesByNames.html">CarriagesByNames</a></span></li> </nav> <div id="main"> <h1 class="page-title">funicular.js</h1> <section> <article> <pre class="prettyprint source linenums"><code>import each from 'async/each'; import Carriage from './carriage'; /** * Basic controller of one namespace of carriages. * @memberof ancient-funicular */ class Funicular { constructor() { /** * @type {Number} * @memberof Funicular * @private */ this.lastCarriageId = 1; /** * Must contain only fully assembled, ready-to-operate carriages with name. * Broken or dismantled carriages should not remain here. * Attention! A crutch was used. If the carriage is marked as unique, it additionally places itself in id 0. When unmounting or breaking it will also be removed from here. * @type {CarriageListsByNames} * @memberof Funicular * @private */ this.namedCarriages = {}; /** * Must contain only fully assembled, ready-to-operate carriages without name. * Broken or dismantled carriages should not remain here. * @type {CarriagesByIds} * @memberof Funicular * @private */ this.unnamedCarriages = {}; /** * @type {Function} * @memberof Funicular * @private */ this.Carriage = Carriage; } /** * Based on name and data, mount new carriage of found already mounted unique carriage in {@link Funicular.namedCarriages} and register callbacks. * @param {String} name * @param data * @param {Carriage~mountCallback} [mountedCallback] * @param {Carriage~remountCallback} [remountedCallback] * @param {Carriage~unmountCallback} [unmountedCallback] * @param {Boolean} [force] - Mount despite the existence of an existing unique carriage. */ mount(name, data, mountedCallback, remountedCallback, unmountedCallback, force = false) { if (!force &amp;&amp; this.namedCarriages[name] &amp;&amp; this.namedCarriages[name][0]) { var carriage = this.namedCarriages[name][0]; if (mountedCallback) { carriage.mountedCallbacks.push(mountedCallback); mountedCallback(carriage.error, carriage); } if (remountedCallback) carriage.remountedCallbacks.push(remountedCallback); if (unmountedCallback) carriage.unmountedCallbacks.push(unmountedCallback); } else { var carriage = new this.Carriage(this, name, data); if (mountedCallback) carriage.mountedCallbacks.push(mountedCallback); if (remountedCallback) carriage.remountedCallbacks.push(remountedCallback); if (unmountedCallback) carriage.unmountedCallbacks.push(unmountedCallback); carriage.mount(); } } } export default Funicular;</code></pre> </article> </section> </div> <br class="clear"> <footer> Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.4.3</a> on Thu May 11 2017 11:27:05 GMT+0000 (UTC) using the Minami theme. </footer> <script>prettyPrint();</script> <script src="scripts/linenumber.js"></script> </body> </html>