'use strict'; const React = require('react/addons'); const ChatStore = require('../stores/ChatStore'); const ChatActions = require('../actions/ChatActions'); const Chat = React.createClass({ propTypes: { io: React.PropTypes.object, token: React.PropTypes.string, color: React.PropTypes.string, soundsEnabled: React.PropTypes.bool.isRequired }, mixins: [React.addons.PureRenderMixin], getInitialState() { let state = ChatStore.getState(); return { isChatHidden: state.isChatHidden, messages: state.messages, message: '', }; }, componentDidMount() { let {io, soundsEnabled} = this.props; io.on('receive-message', data => { ChatActions.submitMessage(data.message, data.color + ' left'); if (!this.state.isChatHidden) { this._scrollChat(); } if (soundsEnabled) { this.refs.msgSnd.getDOMNode().play(); } }); ChatStore.on('change', this._onChatStoreChange); }, componentWillUnmount() { ChatStore.off('change', this._onChatStoreChange); }, render() { return (