RSS Git Download  Clone
Raw Blame History 2kB 46 lines
import 'zone.js';
import { bootstrapApplication } from '@angular/platform-browser';
import { importProvidersFrom, enableProdMode, isDevMode } from '@angular/core';
import { RouterModule } from '@angular/router';
import { MatSnackBarModule, MatSnackBar } from '@angular/material/snack-bar';
import { MatDialogModule } from '@angular/material/dialog';
import { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';
import { MAT_TOOLTIP_DEFAULT_OPTIONS } from '@angular/material/tooltip';

import { appRoutes } from './app.routes';
import { LayoutComponent } from './layout/layout.component';

// Enable Angular production mode when webpack builds in production mode.
// This disables dev-only assertion checks (NG0100, "Should be run in update mode").
if (process.env.NODE_ENV === 'production') {
    enableProdMode();
}

bootstrapApplication(LayoutComponent, {
    providers: [
        importProvidersFrom(
            RouterModule.forRoot(appRoutes),
            MatSnackBarModule,
            MatDialogModule,
        ),
        { provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, useValue: { appearance: 'fill' } },
        { provide: MAT_TOOLTIP_DEFAULT_OPTIONS, useValue: { position: 'above' } },
    ],
}).then((appRef) => {
    (globalThis as any).__p3xr_snackbar = appRef.injector.get(MatSnackBar);

    // Expose state for Playwright E2E tests
    const { RedisStateService } = require('./services/redis-state.service');
    const { SettingsService } = require('./services/settings.service');
    const stateService = appRef.injector.get(RedisStateService);
    const settingsService = appRef.injector.get(SettingsService);
    (globalThis as any).__p3xr_test = {
        state: stateService,
        settings: settingsService,
    };

    console.info('Angular bootstrap complete');
}).catch(err => {
    console.error('Angular bootstrap error:', err);
});