App Component

class AppComponent

app.component.ts
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
import { DOCUMENT, NgClass, NgOptimizedImage, NgStyle } from '@angular/common';
import {
  Component,
  OnDestroy,
  OnInit,
  Renderer2,
  Signal,
  effect,
  inject,
  untracked,
} from '@angular/core';
import { MatButtonModule } from '@angular/material/button';
import { MatIconModule, MatIconRegistry } from '@angular/material/icon';
import { MatListModule } from '@angular/material/list';
import { MatProgressBarModule } from '@angular/material/progress-bar';
import { MatSidenavModule } from '@angular/material/sidenav';
import { MatTabsModule } from '@angular/material/tabs';
import { MatToolbarModule } from '@angular/material/toolbar';
import { MatTooltipModule } from '@angular/material/tooltip';
import { Meta } from '@angular/platform-browser';
import {
  Event,
  NavigationCancel,
  NavigationEnd,
  NavigationError,
  NavigationStart,
  Router,
  RouterLink,
  RouterOutlet,
} from '@angular/router';
import { COLOR_SCHEME_OPTIONS } from '@jet/constants/color-scheme-options.constant';
import { DEFAULT_COLOR_SCHEME_OPTION } from '@jet/constants/default-color-scheme-option.constant';
import { DEFAULT_LANGUAGE_OPTION } from '@jet/constants/default-language-option.constant';
import { NAVIGATION_MENU_ITEMS } from '@jet/constants/navigation-menu-items.constant';
import { AnalyticsDirective } from '@jet/directives/analytics/analytics.directive';
import { ColorSchemeOption } from '@jet/interfaces/color-scheme-option.interface';
import { LanguageOption } from '@jet/interfaces/language-option.interface';
import { NavigationMenuItem } from '@jet/interfaces/navigation-menu-item.interface';
import { ProgressBarConfiguration } from '@jet/interfaces/progress-bar-configuration.interface';
import { AlertService } from '@jet/services/alert/alert.service';
import { AnalyticsService } from '@jet/services/analytics/analytics.service';
import { LoggerService } from '@jet/services/logger/logger.service';
import { ProgressBarService } from '@jet/services/progress-bar/progress-bar.service';
import { ServiceWorkerService } from '@jet/services/service-worker/service-worker.service';
import { SettingsService } from '@jet/services/settings/settings.service';
import { ToolbarTitleService } from '@jet/services/toolbar-title/toolbar-title.service';
import { UserService } from '@jet/services/user/user.service';
import { AvailableColorScheme } from '@jet/types/available-color-scheme.type';
import { AvailableFont } from '@jet/types/available-font.type';
import { AvailableLanguage } from '@jet/types/available-language.type';
import { TranslocoModule, TranslocoService } from '@jsverse/transloco';
import { User } from '@supabase/supabase-js';
import packageJson from 'package.json';
import { Subscription } from 'rxjs';
import { FooterComponent } from '../footer/footer.component';

@Component({
  imports: [
    NgClass,
    NgOptimizedImage,
    NgStyle,
    MatButtonModule,
    MatIconModule,
    MatListModule,
    MatProgressBarModule,
    MatSidenavModule,
    MatTabsModule,
    MatToolbarModule,
    MatTooltipModule,
    RouterLink,
    RouterOutlet,
    AnalyticsDirective,
    TranslocoModule,
    FooterComponent,
  ],
  selector: 'jet-app',
  styleUrl: './app.component.scss',
  templateUrl: './app.component.html',
})
export class AppComponent implements OnInit, OnDestroy {
  private readonly _breakpointObserver = inject(BreakpointObserver);
  private readonly _document = inject(DOCUMENT);
  private readonly _renderer2 = inject(Renderer2);
  private readonly _matIconRegistry = inject(MatIconRegistry);
  private readonly _meta = inject(Meta);
  private readonly _router = inject(Router);
  private readonly _alertService = inject(AlertService);
  private readonly _analyticsService = inject(AnalyticsService);
  private readonly _loggerService = inject(LoggerService);
  private readonly _progressBarService = inject(ProgressBarService);
  private readonly _serviceWorkerService = inject(ServiceWorkerService);
  private readonly _settingsService = inject(SettingsService);
  private readonly _toolbarTitleService = inject(ToolbarTitleService);
  private readonly _userService = inject(UserService);
  private readonly _translocoService = inject(TranslocoService);

  private _activeFont: AvailableFont;
  private _activeLanguage: AvailableLanguage;
  private _activeColorScheme: AvailableColorScheme;
  private _activeThemeColor: ColorSchemeOption['themeColor'];
  private readonly _darkColorSchemeMediaQuery: MediaQueryList;
  private _systemColorSchemeListener:
    | ((mediaQueryListEvent: MediaQueryListEvent) => void)
    | undefined;
  private readonly _isPwaMode: boolean;
  private _routerSubscription: Subscription;
  private _serviceWorkerUpdateSubscription: Subscription;

  public activeNavigationMenuItemPath: NavigationMenuItem['path'] | undefined;
  public readonly isSmallViewport: boolean;
  public readonly languageOption: Signal<LanguageOption>;
  public readonly navigationMenuItems: NavigationMenuItem[];
  public readonly progressBarConfiguration: Signal<ProgressBarConfiguration>;
  public readonly toolbarTitle: Signal<string | null>;
  public readonly user: Signal<User | null>;

  public constructor() {
    // Buy to unlock
  }

  public ngOnInit(): void {
    // Buy to unlock
  }

  public ngOnDestroy(): void {
    // Buy to unlock
  }

  private _setColorSchemeClass(nextColorScheme: AvailableColorScheme): void {
    // Buy to unlock
  }

  private _setFontClass(nextFont: AvailableFont): void {
    // Buy to unlock
  }

  private _setIcons(): void {
    // Buy to unlock
  }

  private _setLanguage(nextLanguageOption: LanguageOption): void {
    // Buy to unlock
  }

  private _setSystemColorSchemeListener(): void {
    // Buy to unlock
  }

  private _setThemeColor(nextColorScheme: AvailableColorScheme): void {
    // Buy to unlock
  }

  private _setZoom(isPwaMode: boolean): void {
    // Buy to unlock
  }

  private _unsetSystemColorSchemeListener(): void {
    // Buy to unlock
  }
}

Last updated

Was this helpful?