import { ApplicationConfig, provideZoneChangeDetection, importProvidersFrom, } from '@angular/core'; import { HttpClient, provideHttpClient, withInterceptorsFromDi, } from '@angular/common/http'; import { routes } from './app.routes'; import { provideRouter, withComponentInputBinding, withInMemoryScrolling, } from '@angular/router'; import { provideAnimationsAsync } from '@angular/platform-browser/animations/async'; import { provideClientHydration } from '@angular/platform-browser'; import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { TranslateHttpLoader } from '@ngx-translate/http-loader'; import { ToastrModule } from 'ngx-toastr'; import { provideToastr } from 'ngx-toastr'; // icons import { TablerIconsModule } from 'angular-tabler-icons'; import * as TablerIcons from 'angular-tabler-icons/icons'; // perfect scrollbar import { NgScrollbarModule } from 'ngx-scrollbar'; import { NgxPermissionsModule } from 'ngx-permissions'; //Import all material modules import { MaterialModule } from './material.module'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { CalendarModule, DateAdapter } from 'angular-calendar'; import { adapterFactory } from 'angular-calendar/date-adapters/date-fns'; // code view import { provideHighlightOptions } from 'ngx-highlightjs'; import 'highlight.js/styles/atom-one-dark.min.css'; export function HttpLoaderFactory(http: HttpClient): any { return new TranslateHttpLoader(http, './assets/i18n/', '.json'); } export const appConfig: ApplicationConfig = { providers: [ provideAnimationsAsync(), // required animations providers provideToastr(), // Toastr providers provideZoneChangeDetection({ eventCoalescing: true }), provideHighlightOptions({ coreLibraryLoader: () => import('highlight.js/lib/core'), lineNumbersLoader: () => import('ngx-highlightjs/line-numbers'), // Optional, add line numbers if needed languages: { typescript: () => import('highlight.js/lib/languages/typescript'), css: () => import('highlight.js/lib/languages/css'), xml: () => import('highlight.js/lib/languages/xml'), }, }), provideRouter( routes, withInMemoryScrolling({ scrollPositionRestoration: 'enabled', anchorScrolling: 'enabled', }), withComponentInputBinding() ), provideHttpClient(withInterceptorsFromDi()), provideClientHydration(), provideAnimationsAsync(), importProvidersFrom( FormsModule, ToastrModule.forRoot(), ReactiveFormsModule, MaterialModule, NgxPermissionsModule.forRoot(), TablerIconsModule.pick(TablerIcons), NgScrollbarModule, CalendarModule.forRoot({ provide: DateAdapter, useFactory: adapterFactory, }), TranslateModule.forRoot({ loader: { provide: TranslateLoader, useFactory: HttpLoaderFactory, deps: [HttpClient], }, }) ), ], };