import { Observable } from 'babylonjs/Misc/observable'; import { Utilities } from './tools/utilities'; import { CompilationError } from './components/errorDisplayComponent'; import { Nullable } from 'babylonjs/types'; export enum EditionMode { Desktop, CodeOnly, RenderingOnly } export enum RuntimeMode { Editor = 0, Full = 1, Frame = 2 } export class GlobalState { public readonly MobileSizeTrigger = 1024; public readonly SnippetServerUrl = "https://snippet.babylonjs.com"; public currentCode: string; public getCompiledCode: () => Promise = () => { return Promise.resolve(this.currentCode); } public language = Utilities.ReadStringFromStore("language", "JS");; public fpsElement: HTMLDivElement; public mobileDefaultMode = EditionMode.RenderingOnly; public runtimeMode = RuntimeMode.Editor; public currentSnippetTitle = ""; public currentSnippetDescription = ""; public currentSnippetTags = ""; public currentSnippetToken = ""; public zipCode = ""; public onRunRequiredObservable = new Observable(); public onSavedObservable = new Observable(); public onNewRequiredObservable = new Observable(); public onClearRequiredObservable = new Observable(); public onSaveRequiredObservable = new Observable(); public onLoadRequiredObservable = new Observable(); public onErrorObservable = new Observable>(); public onMobileDefaultModeChangedObservable = new Observable(); public onDisplayWaitRingObservable = new Observable(); public onDisplayMetadataObservable = new Observable(); public onMetadataUpdatedObservable = new Observable(); public onMetadataWindowHiddenObservable = new Observable(); public onDownloadRequiredObservable = new Observable(); public onInspectorRequiredObservable = new Observable(); public onFormatCodeRequiredObservable = new Observable(); public onFullcreenRequiredObservable = new Observable(); public onEditorFullcreenRequiredObservable = new Observable(); public onMinimapChangedObservable = new Observable(); public onEditorDisplayChangedObservable = new Observable(); public onThemeChangedObservable = new Observable(); public onFontSizeChangedObservable = new Observable(); public onLanguageChangedObservable = new Observable(); public onNavigateRequiredObservable = new Observable<{lineNumber: number, column: number}>(); public onExamplesDisplayChangedObservable = new Observable(); public loadingCodeInProgress = false; public onCodeLoaded = new Observable(); }