// @flow import {default as React, PropTypes} from 'react'; import Resizable from './Resizable'; type State = {width: number, height: number}; type Size = {width: number, height: number}; type ResizeData = {element: Element, size: Size}; // An example use of Resizable. export default class ResizableBox extends React.Component { static propTypes = { height: PropTypes.number, width: PropTypes.number }; static defaultProps = { handleSize: [20,20] }; state: State = { width: this.props.width, height: this.props.height, }; componentWillReceiveProps(nextProps: Object) { if (nextProps.width !== this.props.width || nextProps.height !== this.props.height) { this.setState({ width: nextProps.width, height: nextProps.height }); } } onResize = (event: Event, {element, size}: ResizeData) => { const {width, height} = size; this.setState(size, () => { this.props.onResize && this.props.onResize(event, {element, size}); }); }; render(): React.Element { // Basic wrapper around a Resizable instance. // If you use Resizable directly, you are responsible for updating the child component // with a new width and height. const {handleSize, onResize, onResizeStart, onResizeStop, draggableOpts, minConstraints, maxConstraints, lockAspectRatio, width, height, ...props} = this.props; return (
); } }