docs/lateralus.js.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>lateralus.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">Tutorials</li><li class="nav-item"><a href="tutorial-using-lateralus.html">Using Lateralus</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="Lateralus.html">Lateralus</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.html#.beget">beget</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.html#.inherit">inherit</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.html#dispose">dispose</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.html#error">error</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.html#initRouter">initRouter</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.html#log">log</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.html#shareWith">shareWith</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.html#toString">toString</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.html#warn">warn</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="Lateralus.Component.html">Lateralus.Component</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.Component.html#dispose">dispose</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.Component.html#extend">extend</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.Component.html#toJSON">toJSON</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.Component.html#toString">toString</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="Lateralus.Component.Collection.html">Lateralus.Component.Collection</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.Component.Collection.html#remove">remove</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.Component.Collection.html#toString">toString</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="Lateralus.Component.Model.html">Lateralus.Component.Model</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.Component.Model.html#destroy">destroy</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.Component.Model.html#dispose">dispose</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.Component.Model.html#toString">toString</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="Lateralus.Component.View.html">Lateralus.Component.View</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.Component.View.html#addSubview">addSubview</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.Component.View.html#deferredInitialize">deferredInitialize</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.Component.View.html#dispose">dispose</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.Component.View.html#getTemplateRenderData">getTemplateRenderData</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.Component.View.html#initialize">initialize</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.Component.View.html#renderTemplate">renderTemplate</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.Component.View.html#toString">toString</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="Lateralus.Model.html">Lateralus.Model</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.Model.html#onChange">onChange</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.Model.html#toString">toString</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="Lateralus.Router.html">Lateralus.Router</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.Router.html#toString">toString</a></span></li><li class="nav-heading">Mixins</li><li class="nav-heading"><span class="nav-item-type type-mixin">M</span><span class="nav-item-name"><a href="Lateralus.mixins.html">Lateralus.mixins</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.mixins.html#addComponent">addComponent</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.mixins.html#amplify">amplify</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.mixins.html#collect">collect</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.mixins.html#collectOne">collectOne</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.mixins.html#delegateLateralusEvents">delegateLateralusEvents</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.mixins.html#emit">emit</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.mixins.html#initCollection">initCollection</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.mixins.html#initModel">initModel</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.mixins.html#listenFor">listenFor</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Lateralus.mixins.html#mixin">mixin</a></span></li>
</nav>
<div id="main">
<h1 class="page-title">lateralus.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>import $ from 'jquery';
import _ from 'lodash-compat';
import Backbone from 'backbone';
import mixins from './lateralus.mixins';
import Component from './lateralus.component';
import LateralusModel from './lateralus.model';
import LateralusRouter from './lateralus.router';
// UNDERSCORE MIXINS
_.mixin({
/**
* Remove all properties from an Object.
* @param {Object} obj
* @private
*/
lateralusEmptyObject: function (obj) {
for (const propName in obj) {
if (obj.hasOwnProperty(propName)) {
delete obj[propName];
}
}
},
/**
* Perform general-purpose memory cleanup for a Lateralus/Backbone Object.
* @param {Object} obj
* @param {Function=} customDisposeLogic
* @private
*/
lateralusDispose: function (obj, customDisposeLogic) {
obj.trigger('beforeDispose');
if (customDisposeLogic) {
customDisposeLogic();
}
obj.stopListening();
_(obj).lateralusEmptyObject();
}
}, { chain: false });
/**
* You should not need to call the Lateralus constructor directly, use `{@link
* Lateralus.beget}` instead. To create a new Lateralus app:
*
* var App = Lateralus.beget(function () {
* // Don't forget to call the Lateralus constructor!
* Lateralus.apply(this, arguments);
* });
*
* var app = new App(document.getElementById('app'));
* @param {Element} el The DOM element that contains the entire Lateralus app.
* @class Lateralus
* @mixes Lateralus.mixins
* @constructs Lateralus
*/
function Lateralus (el) {
/**
* The DOM node that contains this `{@link Lateralus}` instance.
* @member Lateralus#el
* @type {HTMLElement}
*/
this.el = el;
/**
* The jQuery Object that contains `{@link Lateralus#el}`.
* @member Lateralus#$el
* @type {jQuery}
*/
this.$el = $(el);
const ModelConstructor = this.config.Model || LateralusModel;
// TODO: Initialize this.model with this.initModel.
/**
* Maintains the state of the central `{@link Lateralus}` instance.
* @member Lateralus#model
* @type {Lateralus.Model}
*/
this.model = new ModelConstructor(this);
/**
* An optional map of template render data to be passed to the
* `Mustache.render` call for all Views belonging to this Lateralus app.
* @member Lateralus#globalRenderData
* @type {Object<String>}
*/
this.globalRenderData = {};
/**
* An optional map of template partials to be passed to the
* `Mustache.render` call for all Views belonging to this Lateralus app.
* @member Lateralus#globalPartials
* @type {Object<String>}
*/
this.globalPartials = {};
this.delegateLateralusEvents();
}
const fn = Lateralus.prototype;
_.extend(fn, Backbone.Events);
/**
* Set up the prototype chain between two objects.
* @static
* @method Lateralus.inherit
* @param {Function} child
* @param {Function} parent
* @return {Function} A reference to the passed-in `child` parameter.
*/
Lateralus.inherit = function inherit (child, parent) {
function Proxy () {}
Proxy.prototype = parent.prototype;
child.prototype = new Proxy();
return child;
};
/**
* Create a `{@link Lateralus}` application instance.
*
* var App = Lateralus.beget(function () {
* Lateralus.apply(this, arguments);
* });
* @static
* @method Lateralus.beget
* @param {Function} child
* @param {Object} [config]
* @param {LateralusModel} [config.Model] A `{@link Lateralus.Model}` subclass
* constructor to use for `{@link Lateralus.model}` instead of a standard
* `{@link Lateralus.Model}`.
* @return {Function} The created `{@link Lateralus}`
* subclass.
*/
Lateralus.beget = function (child, config) {
const lateralusConfig = config || {};
child.displayName = child.name || 'begetConstructor';
const begottenConstructor = Lateralus.inherit(child, Lateralus);
begottenConstructor.prototype.config = _.clone(lateralusConfig);
return begottenConstructor;
};
_.extend(fn, mixins);
const { bind } = Function.prototype;
const logger = window.console || {};
_.each([
/**
* Cross-browser friendly wrapper for `console.log`.
* @method Lateralus#log
* @param {...any} Any parameters to pass along to `console.log`.
*/
'log',
/**
* Cross-browser friendly wrapper for `console.warn`.
* @method Lateralus#warn
* @param {...any} Any parameters to pass along to `console.warn`.
*/
'warn',
/**
* Cross-browser friendly wrapper for `console.error`.
* @method Lateralus#error
* @param {...any} Any parameters to pass along to `console.error`.
*/
'error'
], (consoleMethodName) => {
fn[consoleMethodName] = bind.call(logger[consoleMethodName], logger);
});
/**
* @param {Lateralus.Router} Router A constructor, not an instance.
* @param {Object} [options] To be passed to the [Router
* `initialize`](http://backbonejs.org/#Router-constructor) method.
* @return {Lateralus.Router} An instance of the provided Router
* constructor.
* @method Lateralus#initRouter
*/
fn.initRouter = function (Router, options) {
return new Router(this, options);
};
/**
* Relay `{@link Lateralus.mixins.provide}`d handlers to another `{@link
* Lateralus}` instance. This is the `{@link Lateralus.mixins.provide}` analog
* to `{@link Lateralus.mixins.amplify}`.
* @method Lateralus#shareWith
* @param {Lateralus} receiver The `{@link Lateralus}` instance to share
* `{@link Lateralus.mixins.provide}`d handlers with.
* @param {string} providerName The name of the `{@link
* Lateralus.mixins.provide}`er.
*/
fn.shareWith = function (receiver, providerName) {
this.amplify(receiver, mixins.PROVIDE_PREFIX + providerName);
};
/**
* Remove this `{@link Lateralus}` app from memory.
* @method Lateralus#dispose
*/
fn.dispose = function () {
_(this).lateralusDispose(() => {
if (this.components) {
_.invoke(this.components, 'dispose');
}
});
};
fn.spiralOut = fn.dispose;
/**
* Do not override this method, it is used internally.
* @method Lateralus#toString
* @return {string} This is `"lateralus"`.
* @final
*/
fn.toString = function () {
return 'lateralus';
};
Lateralus.Component = Component;
Lateralus.Model = LateralusModel;
Lateralus.Router = LateralusRouter;
// Using the old-school CommonJS export format here for better
// backwards-compatibility:
// https://github.com/webpack/webpack/issues/3929
module.exports = Lateralus;
</code></pre>
</article>
</section>
</div>
<br class="clear">
<footer>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.3</a> on Thu Sep 07 2017 15:55:10 GMT-0500 (CDT) using the Minami theme.
</footer>
<script>prettyPrint();</script>
<script src="scripts/linenumber.js"></script>
</body>
</html>