mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 10:04:11 +00:00
52 lines
1.7 KiB
TypeScript
52 lines
1.7 KiB
TypeScript
import 'zone.js';
|
|
import 'reflect-metadata';
|
|
import 'core-js/es/reflect';
|
|
|
|
import { enableProdMode } from '@angular/core';
|
|
import { bootstrapApplication } from '@angular/platform-browser';
|
|
|
|
import { AppComponent } from './app/app.component';
|
|
import { AppConfig } from './config/app-config.interface';
|
|
import { extendEnvironmentWithAppConfig } from './config/config.util';
|
|
import { environment } from './environments/environment';
|
|
import { browserAppConfig } from './modules/app/browser-app.config';
|
|
|
|
/*const bootstrap = () => platformBrowserDynamic()
|
|
.bootstrapModule(BrowserAppModule, {});*/
|
|
const bootstrap = () => bootstrapApplication(AppComponent, browserAppConfig);
|
|
|
|
/**
|
|
* We use this to determine have been serven SSR HTML or not.
|
|
*
|
|
* At this point, {@link environment} may not be in sync with the configuration.
|
|
* Therefore, we cannot depend on it to determine how to bootstrap the app.
|
|
*/
|
|
const hasTransferState = document.querySelector('script#dspace-angular-state') !== null;
|
|
|
|
const main = () => {
|
|
if (environment.production) {
|
|
enableProdMode();
|
|
}
|
|
|
|
if (hasTransferState) {
|
|
// Configuration will be taken from transfer state during initialization
|
|
return bootstrap();
|
|
} else {
|
|
// Configuration must be fetched explicitly
|
|
return fetch('assets/config.json')
|
|
.then((response) => response.json())
|
|
.then((config: AppConfig) => {
|
|
// extend environment with app config for browser when not prerendered
|
|
extendEnvironmentWithAppConfig(environment, config);
|
|
return bootstrap();
|
|
});
|
|
}
|
|
};
|
|
|
|
// support async tag or hmr
|
|
if (document.readyState === 'complete' && !hasTransferState) {
|
|
main();
|
|
} else {
|
|
document.addEventListener('DOMContentLoaded', main);
|
|
}
|