ngAfterViewInit()

in src/app/files/code-editor.component.ts [72:106]


    ngAfterViewInit() {
        this._subs.push(this._window.resize.subscribe(e => {
            this.updateLayout();
        }));

        if (this._monaco) {
            this.initMonaco(this._monaco)
        } else {
            if (!this._loading) {
                this._loading = new Promise<any>((resolve) => {
                    if (typeof((<any>window).monaco) === 'object') {
                      resolve((<any>window).monaco);
                      return;
                    }
                    const assetsDir = '/assets'
                    const onLoad = () => {
                        // Load monaco
                        (<any>window).require.config({ paths: { 'vs': `${assetsDir}/monaco/vs` } });
                        (<any>window).require(['vs/editor/editor.main'], () => { resolve((<any>window).monaco); });
                    };

                    if (!(<any>window).require) {
                        const loaderScript: HTMLScriptElement = document.createElement('script');
                        loaderScript.type = 'text/javascript';
                        loaderScript.src = `${assetsDir}/monaco/vs/loader.js`;
                        loaderScript.addEventListener('load', onLoad);
                        document.body.appendChild(loaderScript);
                    } else {
                        onLoad();
                    }
                })
            }
            this._loading.then(m => this.initMonaco(m))
        }
    }