catreact
Version:
Catavolt Core React Components
67 lines (66 loc) • 2.04 kB
JavaScript
"use strict";
/**
* Created by rburson on 5/28/16.
*/
Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react");
var catreact_core_1 = require("./catreact-core");
/*
***************************************************
* Render a Message
***************************************************
*/
exports.CvMessagePane = React.createClass({
mixins: [catreact_core_1.CvBaseMixin],
componentDidMount: function () {
this.eventRegistry().subscribe(this._messageListener, catreact_core_1.CvEventType.MESSAGE);
},
componentWillUnmount: function () {
this.eventRegistry().unsubscribe(this._messageListener);
},
message: function () {
return this.state.message;
},
getChildContext: function () {
var ctx = this.getDefaultChildContext();
ctx.cvContext.scopeCtx.scopeObj = this.message();
return ctx;
},
getDefaultProps: function () {
return { renderer: null, messageRenderer: null };
},
getInitialState: function () {
return { message: null };
},
render: function () {
var message = this.message();
if (message) {
if (this.props.renderer) {
return this.props.renderer(this.getChildContext().cvContext);
}
else if (this.props.messageRenderer) {
return this.props.messageRenderer(this.getChildContext().cvContext, message, this._getCallbackObj());
}
else if (React.Children.count(this.props.children) > 0) {
return this.props.children;
}
else {
return null;
}
}
else {
return null;
}
},
_messageListener: function (event) {
this.setState({ message: event.eventObj });
},
_getCallbackObj: function () {
var _this = this;
return {
clear: function () {
_this.setState({ message: null });
}
};
}
});