| 
					
				 | 
			
			
				@@ -37,6 +37,7 @@ import { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   addToLoadedScenes, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   loadedScenes, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   calculateScrollCenter, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  loadFromBlob, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } from "./scene"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { renderScene } from "./renderer"; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -310,6 +311,8 @@ export class App extends React.Component<any, AppState> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     window.addEventListener("resize", this.onResize, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     window.addEventListener("unload", this.onUnload, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     window.addEventListener("blur", this.onUnload, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    window.addEventListener("dragover", e => e.preventDefault(), false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    window.addEventListener("drop", e => e.preventDefault(), false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const searchParams = new URLSearchParams(window.location.search); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const id = searchParams.get("id"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1784,6 +1787,19 @@ export class App extends React.Component<any, AppState> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               const hitElement = getElementAtPosition(elements, x, y); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               document.documentElement.style.cursor = hitElement ? "move" : ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            onDrop={e => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              const file = e.dataTransfer.files[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              if (file?.type === "application/json") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                loadFromBlob(file) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  .then(({ elements, appState }) => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    this.syncActionResult({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      elements, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      appState, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } as ActionResult), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  .catch(err => console.error(err)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {t("labels.drawingCanvas")} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           </canvas> 
			 |