import React from 'react'
import PropTypes from 'prop-types'
import addEvent from './utils/addEvent'
import removeEvent from './utils/removeEvent'

const ResizeEvent = 'resize'

class WindowSize extends React.Component {
  static propTypes = {
    onChange: PropTypes.func
  }

  handleWindowResize = () => {
    if (this.props.onChange)
      this.props.onChange({
        width: window.innerWidth,
        height: window.innerHeight
      })
  }

  componentDidMount() {
    addEvent(window, ResizeEvent, this.handleWindowResize)
  }

  componentWillUnmount() {
    removeEvent(window, ResizeEvent, this.handleWindowResize)
  }

  render() {
    return null
  }
}

export default WindowSize