import { action, observable } from "mobx"; import * as React from "react"; interface DividerProps { index: number xMargin: number setColumnStartXCoords: (movementX: number, colIndex: number) => void } export default class Divider extends React.Component{ @observable private isHoverActive = false; @observable private isResizingActive = false; @action private registerResizing = (e: React.PointerEvent) => { e.stopPropagation(); e.preventDefault(); window.removeEventListener("pointermove", this.onPointerMove); window.removeEventListener("pointerup", this.onPointerUp); window.addEventListener("pointermove", this.onPointerMove); window.addEventListener("pointerup", this.onPointerUp); this.isResizingActive = true; } @action private onPointerUp = () => { this.isResizingActive = false; this.isHoverActive = false; window.removeEventListener("pointermove", this.onPointerMove); window.removeEventListener("pointerup", this.onPointerUp); } @action onPointerMove = ({ movementX }: PointerEvent) => { this.props.setColumnStartXCoords(movementX, this.props.index) } render() { return (
this.isHoverActive = true)} onPointerLeave={action(() => !this.isResizingActive && (this.isHoverActive = false))} >
this.registerResizing(e)} style={{ height: "95%", width: 12, borderRight: "4px solid #282828", borderLeft: "4px solid #282828", margin: "0px 10px" }} />
) } }