diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/views/freeformcanvas/CollectionFreeFormView.tsx | 22 | ||||
-rw-r--r-- | src/views/freeformcanvas/FreeFormCanvas.tsx | 22 | ||||
-rw-r--r-- | src/views/nodes/DocumentView.tsx | 46 |
3 files changed, 71 insertions, 19 deletions
diff --git a/src/views/freeformcanvas/CollectionFreeFormView.tsx b/src/views/freeformcanvas/CollectionFreeFormView.tsx index 7c523e70d..8bdf1849a 100644 --- a/src/views/freeformcanvas/CollectionFreeFormView.tsx +++ b/src/views/freeformcanvas/CollectionFreeFormView.tsx @@ -26,19 +26,23 @@ export class CollectionFreeFormView extends React.Component<IProps> { @action onPointerDown = (e: React.PointerEvent): void => { e.stopPropagation(); - this._isPointerDown = true; - document.removeEventListener("pointermove", this.onPointerMove); - document.addEventListener("pointermove", this.onPointerMove); - document.removeEventListener("pointerup", this.onPointerUp); - document.addEventListener("pointerup", this.onPointerUp); + if (e.button === 2) { + this._isPointerDown = true; + document.removeEventListener("pointermove", this.onPointerMove); + document.addEventListener("pointermove", this.onPointerMove); + document.removeEventListener("pointerup", this.onPointerUp); + document.addEventListener("pointerup", this.onPointerUp); + } } @action onPointerUp = (e: PointerEvent): void => { e.stopPropagation(); - this._isPointerDown = false; - document.removeEventListener("pointermove", this.onPointerMove); - document.removeEventListener("pointerup", this.onPointerUp); + if (e.button === 2) { + this._isPointerDown = false; + document.removeEventListener("pointermove", this.onPointerMove); + document.removeEventListener("pointerup", this.onPointerUp); + } } @action @@ -69,7 +73,7 @@ export class CollectionFreeFormView extends React.Component<IProps> { const panx: number = doc.GetFieldValue(KeyStore.PanX, NumberField, Number(0)); const pany: number = doc.GetFieldValue(KeyStore.PanY, NumberField, Number(0)); return ( - <div className="collectionfreeformview-container" onPointerDown={this.onPointerDown} onWheel={this.onPointerWheel}> + <div className="collectionfreeformview-container" onPointerDown={this.onPointerDown} onWheel={this.onPointerWheel} onContextMenu={(e) => e.preventDefault()}> <div className="collectionfreeformview" style={{ transform: `translate(${panx}px, ${pany}px)`, transformOrigin: '50% 50%' }}> <div className="node-container"> {value.map(doc => { diff --git a/src/views/freeformcanvas/FreeFormCanvas.tsx b/src/views/freeformcanvas/FreeFormCanvas.tsx index cee093fcb..9ef5ab8f7 100644 --- a/src/views/freeformcanvas/FreeFormCanvas.tsx +++ b/src/views/freeformcanvas/FreeFormCanvas.tsx @@ -27,19 +27,23 @@ export class FreeFormCanvas extends React.Component<IProps> { @action onPointerDown = (e: React.PointerEvent): void => { e.stopPropagation(); - this._isPointerDown = true; - document.removeEventListener("pointermove", this.onPointerMove); - document.addEventListener("pointermove", this.onPointerMove); - document.removeEventListener("pointerup", this.onPointerUp); - document.addEventListener("pointerup", this.onPointerUp); + if (e.button === 2) { + this._isPointerDown = true; + document.removeEventListener("pointermove", this.onPointerMove); + document.addEventListener("pointermove", this.onPointerMove); + document.removeEventListener("pointerup", this.onPointerUp); + document.addEventListener("pointerup", this.onPointerUp); + } } @action onPointerUp = (e: PointerEvent): void => { e.stopPropagation(); - this._isPointerDown = false; - document.removeEventListener("pointermove", this.onPointerMove); - document.removeEventListener("pointerup", this.onPointerUp); + if (e.button === 2) { + this._isPointerDown = false; + document.removeEventListener("pointermove", this.onPointerMove); + document.removeEventListener("pointerup", this.onPointerUp); + } // let doc = this.props.store.Docs[0]; // let dataField = doc.GetFieldT(KeyStore.Data, TextField); @@ -68,7 +72,7 @@ export class FreeFormCanvas extends React.Component<IProps> { render() { let store = this.props.store; return ( - <div className="freeformcanvas-container" onPointerDown={this.onPointerDown} onWheel={this.onPointerWheel}> + <div className="freeformcanvas-container" onPointerDown={this.onPointerDown} onWheel={this.onPointerWheel} onContextMenu={(e) => e.preventDefault()}> <div className="freeformcanvas" style={{ transform: store.Transform, transformOrigin: '50% 50%' }}> <div className="node-container"> {this.props.store.Docs.map(doc => { diff --git a/src/views/nodes/DocumentView.tsx b/src/views/nodes/DocumentView.tsx index b9fbef91c..1c9f850ed 100644 --- a/src/views/nodes/DocumentView.tsx +++ b/src/views/nodes/DocumentView.tsx @@ -28,6 +28,14 @@ export class DocumentView extends React.Component<IProps> { return this.props.dvm.Doc.GetFieldValue(KeyStore.Y, NumberField, Number(0)); } + set x(x: number) { + this.props.dvm.Doc.SetFieldValue(KeyStore.X, x, NumberField) + } + + set y(y: number) { + this.props.dvm.Doc.SetFieldValue(KeyStore.Y, y, NumberField) + } + @computed get transform(): string { return `translate(${this.x}px, ${this.y}px)`; @@ -64,6 +72,39 @@ export class DocumentView extends React.Component<IProps> { return this.props.dvm.Doc.GetFieldValue(KeyStore.LayoutFields, ListField, new Array<Key>()); } + private _isPointerDown = false; + + onPointerDown = (e: React.PointerEvent): void => { + e.stopPropagation(); + if (e.button === 2) { + 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(); + if (e.button === 2) { + 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.x += e.movementX; + this.y += e.movementY; + } + render() { let doc = this.props.dvm.Doc; let bindings: any = { @@ -83,7 +124,10 @@ export class DocumentView extends React.Component<IProps> { transform: this.transform, width: this.width, height: this.height - }}> + }} onPointerDown={this.onPointerDown} onContextMenu={ + (e) => { + e.preventDefault() + }}> <JsxParser components={{ FieldTextBox, FreeFormCanvas, CollectionFreeFormView }} bindings={bindings} |