//component/icon.js var Icon = React.createClass({ propTypes: { style: React.PropTypes.object, fixed: React.PropTypes.bool, }, render: function() { var className = 'icon ' + ('fixed' in this.props ? 'icon-fixed-width ' : '') + this.props.icon; return } }); var TruncatedText = React.createClass({ propTypes: { lines: React.PropTypes.number, height: React.PropTypes.string, auto: React.PropTypes.bool, }, getDefaultProps: function() { return { lines: null, height: null, auto: true, } }, componentDidMount: function() { console.log('span is', this.refs.span); console.log('type of lines is', typeof this.props.lines) $clamp(this.refs.span, { clamp: this.props.lines || this.props.height || 'auto', }); }, render: function() { var text = this.props.children; return {text}; } }); var BusyMessage = React.createClass({ propTypes: { message: React.PropTypes.string }, render: function() { return {this.props.message} } }); var toolTipStyle = { position: 'absolute', zIndex: '1', top: '100%', left: '-120px', width: '260px', padding: '15px', border: '1px solid #aaa', backgroundColor: '#fff', fontSize: '14px', }; var ToolTip = React.createClass({ propTypes: { open: React.PropTypes.bool.isRequired, onMouseOut: React.PropTypes.func }, render: function() { return (