Skip to content

Instantly share code, notes, and snippets.

@nevernotsean
Created August 24, 2018 14:43
Show Gist options
  • Save nevernotsean/731910f8b4fd512e89cc85fced8cf7b0 to your computer and use it in GitHub Desktop.
Save nevernotsean/731910f8b4fd512e89cc85fced8cf7b0 to your computer and use it in GitHub Desktop.
MouseContext Component
import React, { Component } from 'react';
const {
Provider: MouseCursorProvider,
Consumer: MouseCursorContextConsumer
} = React.createContext();
export class MouseCursorContextProvider extends Component {
state = {
screenX: null,
screenY: null,
horizontal: null,
vertical: null
};
componentDidMount() {
window.addEventListener('mousemove', this.handleMouseMove);
}
componentWillUnmount() {
window.removeEventListener('mousemove', this.handleMouseMove);
}
handleMouseMove = e => {
let horizontal = e.screenX < window.innerWidth / 2 ? 'left' : 'right';
let vertical = e.screenY < window.innerWidth / 2 ? 'top' : 'right';
this.setState({
mouseX: e.screenX,
mouseY: e.screenY,
horizontal: horizontal,
vertical: vertical
});
};
render() {
return <MouseCursorProvider value={this.state} {...this.props} />;
}
}
export const WithMouseCursor = MouseCursorComponent => props => (
<MouseCursorContextConsumer>
{data => <MouseCursorComponent {...props} mousecursor_context={data} />}
</MouseCursorContextConsumer>
);
export default {
MouseCursorContextProvider,
WithMouseCursor
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment