diff --git a/client/components/ModulesTreemap.jsx b/client/components/ModulesTreemap.jsx index 95e5db62..0b4d0f3f 100644 --- a/client/components/ModulesTreemap.jsx +++ b/client/components/ModulesTreemap.jsx @@ -26,6 +26,11 @@ const SIZE_SWITCH_ITEMS = [ @observer export default class ModulesTreemap extends Component { + mouseCoords = { + x: 0, + y: 0 + }; + state = { selectedChunk: null, selectedMouseCoords: {x: 0, y: 0}, @@ -35,6 +40,14 @@ export default class ModulesTreemap extends Component { tooltipContent: null }; + componentDidMount() { + document.addEventListener('mousemove', this.handleMouseMove, true); + } + + componentWillUnmount() { + document.removeEventListener('mousemove', this.handleMouseMove, true); + } + render() { const { selectedChunk, @@ -245,14 +258,12 @@ export default class ModulesTreemap extends Component { }; handleTreemapGroupSecondaryClick = event => { - const {group, x, y} = event; + const {group} = event; + if (group && group.isAsset) { this.setState({ selectedChunk: group, - selectedMouseCoords: { - x, - y - }, + selectedMouseCoords: {...this.mouseCoords}, showChunkContextMenu: true }); } else { @@ -278,6 +289,13 @@ export default class ModulesTreemap extends Component { handleFoundModuleClick = module => this.treemap.zoomToGroup(module); + handleMouseMove = event => { + Object.assign(this.mouseCoords, { + x: event.pageX, + y: event.pageY + }); + } + isModuleVisible = module => ( this.treemap.isGroupRendered(module) ) diff --git a/client/components/Tooltip.jsx b/client/components/Tooltip.jsx index 9262402f..93fedd28 100644 --- a/client/components/Tooltip.jsx +++ b/client/components/Tooltip.jsx @@ -9,22 +9,18 @@ export default class Tooltip extends Component { static marginX = 10; static marginY = 30; - constructor(props) { - super(props); - - this.mouseCoords = { - x: 0, - y: 0 - }; + mouseCoords = { + x: 0, + y: 0 + }; - this.state = { - left: 0, - top: 0 - }; - } + state = { + left: 0, + top: 0 + }; componentDidMount() { - document.addEventListener('mousemove', this.onMouseMove, false); + document.addEventListener('mousemove', this.handleMouseMove, true); } shouldComponentUpdate(nextProps) { @@ -32,7 +28,7 @@ export default class Tooltip extends Component { } componentWillUnmount() { - document.removeEventListener('mousemove', this.onMouseMove); + document.removeEventListener('mousemove', this.handleMouseMove, true); } render() { @@ -51,6 +47,17 @@ export default class Tooltip extends Component { ); } + handleMouseMove = event => { + Object.assign(this.mouseCoords, { + x: event.pageX, + y: event.pageY + }); + + if (this.props.visible) { + this.updatePosition(); + } + }; + saveNode = node => (this.node = node); getStyle() { @@ -83,15 +90,4 @@ export default class Tooltip extends Component { this.setState(pos); } - onMouseMove = event => { - Object.assign(this.mouseCoords, { - x: event.pageX, - y: event.pageY - }); - - if (this.props.visible) { - this.updatePosition(); - } - }; - }