| 
					
				 | 
			
			
				@@ -940,6 +940,8 @@ class App extends React.Component<{}, AppState> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this.forceUpdate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  private removeWheelEventListener: (() => void) | undefined; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   public render() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <div 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1110,13 +1112,18 @@ class App extends React.Component<{}, AppState> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           id="canvas" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           width={window.innerWidth - CANVAS_WINDOW_OFFSET_LEFT} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           height={window.innerHeight - CANVAS_WINDOW_OFFSET_TOP} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          onWheel={e => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            e.preventDefault(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            const { deltaX, deltaY } = e; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.setState(state => ({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              scrollX: state.scrollX - deltaX, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              scrollY: state.scrollY - deltaY 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ref={canvas => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (this.removeWheelEventListener) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.removeWheelEventListener(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.removeWheelEventListener = undefined; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (canvas) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              canvas.addEventListener("wheel", this.handleWheel, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                passive: false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.removeWheelEventListener = () => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                canvas.removeEventListener("wheel", this.handleWheel); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           onMouseDown={e => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // only handle left mouse button 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1172,7 +1179,7 @@ class App extends React.Component<{}, AppState> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 isResizingElements = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let hitElement = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // We need to to hit testing from front (end of the array) to back (beginning of the array) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 for (let i = elements.length - 1; i >= 0; --i) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   if (hitTest(elements[i], x, y)) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1394,6 +1401,15 @@ class App extends React.Component<{}, AppState> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  private handleWheel = (e: WheelEvent) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    e.preventDefault(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const { deltaX, deltaY } = e; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.setState(state => ({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      scrollX: state.scrollX - deltaX, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      scrollY: state.scrollY - deltaY 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   componentDidUpdate() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     renderScene(rc, context, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       scrollX: this.state.scrollX, 
			 |