este-library-oldschool
Version:
Library for github.com/steida/este.git
112 lines (101 loc) • 2.89 kB
JavaScript
// Generated by github.com/steida/coffee2closure 900.1.18
/**
@fileoverview este.labs.app.ReactPage.
*/
goog.provide('este.labs.app.ReactPage');
goog.require('este.labs.app.Page');
goog.require('este.react');
goog.require('goog.asserts');
goog.require('goog.Promise');
goog.require('goog.object');
/**
@constructor
@implements {este.labs.app.Page}
*/
este.labs.app.ReactPage = function() {}
/**
Should be overridden in child constructor.
@type {function(Object): React.Component}
@protected
*/
este.labs.app.ReactPage.prototype.reactClass = este.react.create(/** @lends {React.Component.prototype} */({
render: function() {
return this.pre(goog.DEBUG && "Hello from este.labs.app.Controller. This class should be subclassed.\n\nExample:\n\nclass app.home.Controller extends este.labs.app.Controller\n\n ###*\n @constructor\n @extends {este.labs.app.Controller}\n ###\n constructor: ->\n # Example handlers for React, will be used for setProps.\n @handlers =\n onAutoCompleteUpdate: @onAutoCompleteUpdate\n\n ###*\n Custom React class.\n @override\n ###\n reactClass: app.home.react.Home\n\n ###*\n Custom data load. Remember to return promise.\n @override\n ###\n load: (params) ->");
}
}));
/**
Can be overridden in child constructor.
@type {Object}
@protected
*/
este.labs.app.ReactPage.prototype.pageProps = null;
/**
@type {React.Component}
@protected
*/
este.labs.app.ReactPage.prototype.react = null;
/**
@type {Element}
@protected
*/
este.labs.app.ReactPage.prototype.reactElement = null;
/**
@override
*/
este.labs.app.ReactPage.prototype.load = function(params) {
return goog.Promise.resolve(params);
};
/**
@override
*/
este.labs.app.ReactPage.prototype.show = function(container, data) {
var key, props, ref, value;
if (data == null) {
data = {};
}
goog.asserts.assertObject(data);
if (this.react) {
this.react.setProps(data, (function(_this) {
return function() {
return _this.onShow();
};
})(this));
return;
}
props = {};
goog.object.extend(props, data);
if (this.pageProps) {
ref = this.pageProps;
for (key in ref) {
value = ref[key];
props[key] = goog.isFunction(value) ? value.bind(this) : value;
}
}
this.react = this.reactClass(props);
este.react.render(this.react, container, (function(_this) {
return function() {
_this.reactElement = _this.react.getDOMNode();
return _this.onShow();
};
})(this));
};
/**
@protected
*/
este.labs.app.ReactPage.prototype.onShow = function() {};
/**
@override
*/
este.labs.app.ReactPage.prototype.hide = function() {
return this.onHide();
};
/**
@protected
*/
este.labs.app.ReactPage.prototype.onHide = function() {};
/**
@override
*/
este.labs.app.ReactPage.prototype.getElement = function() {
return this.reactElement;
};