UNPKG

@bigfishtv/cockpit

Version:

31 lines (26 loc) 920 B
/** * @module Decorators/windowVisible */ import React, { Component } from 'react' import ReactDOM from 'react-dom' import { windowVisible as isWindowVisible, onVisibilityChange } from '../utils/windowVisible' /** * Decorator for providing windowVisible prop to wrapped component * @param {Component} WrappedComponent * @return {Component} returns wrapped component */ export default function createWindowVisible(WrappedComponent) { return class WindowVisibilityDecorator extends Component { componentDidMount(props) { const window = ReactDOM.findDOMNode(this.refs.cmp).ownerDocument.defaultView this.setState({ windowVisible: isWindowVisible(window) }) this.unlisten = onVisibilityChange(windowVisible => this.setState({ windowVisible }), window) } componentWillUnmount() { this.unlisten() } render() { return <WrappedComponent ref="cmp" {...this.props} {...this.state} /> } } }