import PureRenderMixin from 'react-addons-pure-render-mixin'; import { Motion, spring } from 'react-motion'; const IconButton = React.createClass({ propTypes: { title: React.PropTypes.string.isRequired, icon: React.PropTypes.string.isRequired, onClick: React.PropTypes.func, size: React.PropTypes.number, active: React.PropTypes.bool, style: React.PropTypes.object, activeStyle: React.PropTypes.object, disabled: React.PropTypes.bool, animate: React.PropTypes.bool }, getDefaultProps () { return { size: 18, active: false, disabled: false, animate: false }; }, mixins: [PureRenderMixin], handleClick (e) { e.preventDefault(); if (!this.props.disabled) { this.props.onClick(); } }, render () { let style = { display: 'inline-block', border: 'none', padding: '0', background: 'transparent', fontSize: `${this.props.size}px`, width: `${this.props.size * 1.28571429}px`, height: `${this.props.size}px`, lineHeight: `${this.props.size}px`, ...this.props.style }; if (this.props.active) { style = { ...style, ...this.props.activeStyle }; } return ( {({ rotate }) =>