catreact
Version:
Catavolt Core React Components
76 lines (75 loc) • 2.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react");
var catreact_core_1 = require("./catreact-core");
var catavolt_sdk_1 = require("catavolt-sdk");
/**
* Top-level container for a Catavolt Application
*/
exports.CatavoltPane = React.createClass({
propTypes: {
catavolt: React.PropTypes.instanceOf(catavolt_sdk_1.AppContext),
enableResourceCaching: React.PropTypes.bool,
eventRegistry: React.PropTypes.instanceOf(catreact_core_1.CvEventRegistry),
/**
* renderer signature: (cvContext:CvContext, callbackObj?:any)=>{}
*/
renderer: React.PropTypes.func
},
mixins: [catreact_core_1.CvBaseMixin],
componentWillMount: function () {
this.refresh();
},
componentWillReceiveProps: function (nextProps) {
this.refresh(nextProps);
},
getChildContext: function () {
return {
cvContext: {
catavolt: this.catavolt(),
eventRegistry: this.eventRegistry(),
scopeCtx: {
scopeObj: this.catavolt(),
parentScopeCtx: null
}
}
};
},
getDefaultProps: function () {
return {
catavolt: catavolt_sdk_1.AppContext.singleton,
eventRegistry: new catreact_core_1.CvEventRegistry(),
enableResourceCaching: false
};
},
getInitialState: function () {
return {};
},
render: function () {
if (this.props.renderer) {
return this.props.renderer(this.getChildContext().cvContext);
}
else if (React.Children.count(this.props.children) > 0) {
return this.props.children;
}
else {
return null;
}
},
refresh: function (nextProps) {
if (nextProps) {
this._cachingEnabled(nextProps.enableResourceCaching);
}
else {
this._cachingEnabled(this.props.enableResourceCaching);
}
},
_cachingEnabled: function (enabled) {
if (enabled) {
this.eventRegistry().enableCache();
}
else {
this.eventRegistry().disableCache();
}
}
});