diff options
Diffstat (limited to 'src/views/freeformcanvas/FreeFormCanvas.tsx')
| -rw-r--r-- | src/views/freeformcanvas/FreeFormCanvas.tsx | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/views/freeformcanvas/FreeFormCanvas.tsx b/src/views/freeformcanvas/FreeFormCanvas.tsx new file mode 100644 index 000000000..f02f677a3 --- /dev/null +++ b/src/views/freeformcanvas/FreeFormCanvas.tsx @@ -0,0 +1,54 @@ +import { observer } from "mobx-react"; +import { NodeCollectionStore } from "../../stores/NodeCollectionStore"; +import "./FreeFormCanvas.scss"; +import { NodeContainer } from "./NodeContainer"; +import React = require("react"); + +interface IProps { + store: NodeCollectionStore +} + +@observer +export class FreeFormCanvas extends React.Component<IProps> { + + private _isPointerDown: boolean; + + onPointerDown = (e: React.PointerEvent): void => { + e.stopPropagation(); + e.preventDefault(); + this._isPointerDown = true; + document.removeEventListener("pointermove", this.onPointerMove); + document.addEventListener("pointermove", this.onPointerMove); + document.removeEventListener("pointerup", this.onPointerUp); + document.addEventListener("pointerup", this.onPointerUp); + } + + onPointerUp = (e: PointerEvent): void => { + e.stopPropagation(); + e.preventDefault(); + this._isPointerDown = false; + document.removeEventListener("pointermove", this.onPointerMove); + document.removeEventListener("pointerup", this.onPointerUp); + } + + onPointerMove = (e: PointerEvent): void => { + e.stopPropagation(); + e.preventDefault(); + if (!this._isPointerDown) { + return; + } + this.props.store.X += e.movementX; + this.props.store.Y += e.movementY; + } + + render() { + let store = this.props.store; + return ( + <div className="freeformcanvas-container" onPointerDown={this.onPointerDown}> + <div className="freeformcanvas" style={{ transform: store.Transform }}> + <NodeContainer store={store} /> + </div> + </div> + ); + } +}
\ No newline at end of file |
