Skip to content

Instantly share code, notes, and snippets.

@tnrich
Last active March 31, 2016 19:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tnrich/4194ef000afbbdfefd1de4a959b1752c to your computer and use it in GitHub Desktop.
Save tnrich/4194ef000afbbdfefd1de4a959b1752c to your computer and use it in GitHub Desktop.
import deepEqual from 'deep-equal';
import onlyUpdateForKeys from 'recompose/onlyUpdateForKeys';
import {mouseAware} from 'react-mouse-aware';
// import './style';
import * as hoveredAnnotationActions from '../redux/hoveredAnnotation';
import {connect} from 'react-redux';
import React from 'react';
import lruMemoize from 'lru-memoize';
class HoverHelper extends React.Component {
shouldComponentUpdate(nextProps) {
if (deepEqual(nextProps, this.props)) {
return false
} else {
return true
}
}
render () {
var {hovered, idToPass, hoveredId, mouseAware, isOver, children, onAnnotationMouseover, onAnnotationMouseout, namespace, ...rest} = this.props
console.log('yup');
var props = {
// className: children.props.className + ' hoverHelper ' + (hovered ? ' veAnnotationHovered' : ''),
onMouseOver: function() {
onAnnotationMouseover(idToPass, namespace)
},
onMouseOut: function() {
onAnnotationMouseout(idToPass, namespace)
},
hovered: hovered || (mouseAware ? isOver : false),
hoveredId,
...rest
}
return React.cloneElement(children, props)
// var ClonedChild = React.cloneElement(children, props)
// var Child = onlyUpdateForKeys(['hovered', 'hoveredId'], ClonedChild)
// debugger;
// // return <Child/>
// return <ShouldUpdateHelper>
// <ClonedChild/>
// </ShouldUpdateHelper>
}
}
var WrappedHoverHelper = connect(function (state, {id, namespace}) {
var editorState = state.VectorEditor[namespace]
var isIdHashmap = typeof id === 'object'
var hovered = isIdHashmap
? id[hoveredId]
: (hoveredId===id)
var idToPass = isIdHashmap
? (Object.keys(id)[0])
: id
if (idToPass === undefined) debugger;
var hoveredId = hovered ? editorState.hoveredAnnotation : ''
return {hovered, id, hoveredId, isIdHashmap, idToPass}
}, hoveredAnnotationActions)(mouseAware()(HoverHelper))
export default WrappedHoverHelper
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment