| 
														
															@@ -34,6 +34,8 @@ import { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   hasText, 
														 | 
														
														 | 
														
															   hasText, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   exportCanvas, 
														 | 
														
														 | 
														
															   exportCanvas, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   importFromBackend, 
														 | 
														
														 | 
														
															   importFromBackend, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  addToLoadedScenes, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  loadedScenes, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } from "./scene"; 
														 | 
														
														 | 
														
															 } from "./scene"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import { renderScene } from "./renderer"; 
														 | 
														
														 | 
														
															 import { renderScene } from "./renderer"; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -86,6 +88,7 @@ import { ExportDialog } from "./components/ExportDialog"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import { withTranslation } from "react-i18next"; 
														 | 
														
														 | 
														
															 import { withTranslation } from "react-i18next"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import { LanguageList } from "./components/LanguageList"; 
														 | 
														
														 | 
														
															 import { LanguageList } from "./components/LanguageList"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import i18n, { languages, parseDetectedLang } from "./i18n"; 
														 | 
														
														 | 
														
															 import i18n, { languages, parseDetectedLang } from "./i18n"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import { StoredScenesList } from "./components/StoredScenesList"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 let { elements } = createScene(); 
														 | 
														
														 | 
														
															 let { elements } = createScene(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 const { history } = createHistory(); 
														 | 
														
														 | 
														
															 const { history } = createHistory(); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -237,21 +240,13 @@ export class App extends React.Component<any, AppState> { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     return true; 
														 | 
														
														 | 
														
															     return true; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   } 
														 | 
														
														 | 
														
															   } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  public async componentDidMount() { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    document.addEventListener("copy", this.onCopy); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    document.addEventListener("paste", this.onPaste); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    document.addEventListener("cut", this.onCut); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    document.addEventListener("keydown", this.onKeyDown, false); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    document.addEventListener("mousemove", this.updateCurrentCursorPosition); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    window.addEventListener("resize", this.onResize, false); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    window.addEventListener("unload", this.onUnload, false); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  private async loadScene(id: string | null) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     let data; 
														 | 
														
														 | 
														
															     let data; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    const searchParams = new URLSearchParams(window.location.search); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    if (searchParams.get("id") != null) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-      data = await importFromBackend(searchParams.get("id")); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    let selectedId; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if (id != null) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      data = await importFromBackend(id); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      addToLoadedScenes(id); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      selectedId = id; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       window.history.replaceState({}, "Excalidraw", window.location.origin); 
														 | 
														
														 | 
														
															       window.history.replaceState({}, "Excalidraw", window.location.origin); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } else { 
														 | 
														
														 | 
														
															     } else { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       data = restoreFromLocalStorage(); 
														 | 
														
														 | 
														
															       data = restoreFromLocalStorage(); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -262,12 +257,28 @@ export class App extends React.Component<any, AppState> { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     if (data.appState) { 
														 | 
														
														 | 
														
															     if (data.appState) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-      this.setState(data.appState); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      this.setState({ ...data.appState, selectedId }); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } else { 
														 | 
														
														 | 
														
															     } else { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       this.setState({}); 
														 | 
														
														 | 
														
															       this.setState({}); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   } 
														 | 
														
														 | 
														
															   } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  public async componentDidMount() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    document.addEventListener("copy", this.onCopy); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    document.addEventListener("paste", this.onPaste); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    document.addEventListener("cut", this.onCut); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    document.addEventListener("keydown", this.onKeyDown, false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    document.addEventListener("mousemove", this.updateCurrentCursorPosition); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    window.addEventListener("resize", this.onResize, false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    window.addEventListener("unload", this.onUnload, false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    const searchParams = new URLSearchParams(window.location.search); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    const id = searchParams.get("id"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    this.loadScene(id); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   public componentWillUnmount() { 
														 | 
														
														 | 
														
															   public componentWillUnmount() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     document.removeEventListener("copy", this.onCopy); 
														 | 
														
														 | 
														
															     document.removeEventListener("copy", this.onCopy); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     document.removeEventListener("paste", this.onPaste); 
														 | 
														
														 | 
														
															     document.removeEventListener("paste", this.onPaste); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1420,11 +1431,26 @@ export class App extends React.Component<any, AppState> { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             languages={languages} 
														 | 
														
														 | 
														
															             languages={languages} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             currentLanguage={parseDetectedLang(i18n.language)} 
														 | 
														
														 | 
														
															             currentLanguage={parseDetectedLang(i18n.language)} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															           /> 
														 | 
														
														 | 
														
															           /> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+          {this.renderIdsDropdown()} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         </footer> 
														 | 
														
														 | 
														
															         </footer> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       </div> 
														 | 
														
														 | 
														
															       </div> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     ); 
														 | 
														
														 | 
														
															     ); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   } 
														 | 
														
														 | 
														
															   } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  private renderIdsDropdown() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    const scenes = loadedScenes(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if (scenes.length === 0) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      return; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    return ( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      <StoredScenesList 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        scenes={scenes} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        currentId={this.state.selectedId} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        onChange={id => this.loadScene(id)} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      /> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    ); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   private handleWheel = (e: WheelEvent) => { 
														 | 
														
														 | 
														
															   private handleWheel = (e: WheelEvent) => { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     e.preventDefault(); 
														 | 
														
														 | 
														
															     e.preventDefault(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     const { deltaX, deltaY } = e; 
														 | 
														
														 | 
														
															     const { deltaX, deltaY } = e; 
														 |