import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import { CommonModule } from '@angular/common';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { ComponentsModule } from '@components/components.module';
import { TimeGroupBaseComponent } from '@modules/components/time-group/time-group-base.component';
import { ToolkitModule } from '@toolkit/toolkit.module';
import { SharedModule } from '@shared';

import { PrimeComponentsModule } from './prime-components-module';
import { ClipboardModule } from '@angular/cdk/clipboard';

import {
    PageTitleComponent,
    PageTabsComponent,
    FlightEventsComponent,
    PageFooterNotesComponent,
    TimeNoteComponent,
    AppVersionComponent,
    AppShowDebugComponent,
    SharePanelComponent,
    PageLoaderComponent,
    DayChangeSquareLegacy,
    TransferInlineExtended,
} from '@components';

import {
    BoardSearchResultComponent,
    BoardFlightHeaderComponent,
    BoardFlightBodyComponent,
    BoardMultiFlightBodyComponent,
    BoardFlightBottomComponent,
    FlightDetailsRowTimeComponent,
    FlightDetailsRowBoardingComponent,
    FlightDetailsRowRegistrationsComponent,
    FlightDetailsRowPartHeaderComponent,
    CodeSharingComponent,
} from './pages/board';

import {
    FlightDetailsFullRouteComponent,
    TransferComponent,
    FlightDetailsWrapperComponent,
    FlightDetailsMealComponent,
    FlightDetailsServicesComponent,
    FlightDetailsAirplaneComponent,
    FlightScheduleComponent,
    FlightDetailsIconsUpdateTimeComponent,
    FlightsDetailsListFlightComponent,
    DetailsBackComponent,
    FlightsDetailsListScheduleHeaderComponent,
    BoardDetailsHeaderComponent,
    ScheduleDetailsHeaderComponent,
} from './pages/details';
import { IconTooltipComponent } from './pages/details/components/icon-tooltip/icon-tooltip.component';

import {
    ScheduleSearchResultHeaderComponent,
    ScheduleSearchResultDayComponent,
    ScheduleSearchResultFlightBodyComponent,
    ScheduleSearchResultConnectingFlightBodyComponent,
    ScheduleSearchResultMultiFlightBodyComponent,
    ScheduleSearchResultFlightDetailsBodyActionsComponent,
    ScheduleMultiLegSwitcherComponent,
    FlightBodyPartHeaderComponent,
} from './pages/schedule';
import { DownloadScheduleDialogComponent } from './pages/schedule/components/download-schedule-dialog/download-schedule-dialog.component';
import { PageEmptyListComponent } from './components/page-empty-list/page-empty-list.component';
import { SpinLockComponent } from './components/spin-lock/spin-lock.component';
import { ClickStopPropagation } from './pages/board/click-stop-propagation.directive';
import { FlightStatusButtonComponent } from './components/flight-status-button/flight-status-button.component';
import { TranslateModule } from '@ngx-translate/core';
import { FlightDetailsRowDisembarkationComponent } from './pages/board/flight-details-row/flight-details-row-disembarkation/flight-details-row-disembarkation.component';
import { ListScheduledFlightComponent } from './pages/schedule/schedule-search-result/list-scheduled-flight/list-scheduled-flight.component';
import { FlightBoardDetailsComponent } from './pages/details/components/flight-details/flight-board-details/flight-board-details.component';
import { FlightScheduleDetailsComponent } from './pages/details/components/flight-details/flight-schedule-details/flight-schedule-details.component';
import { FlightTitlePipe } from './components/page-title/flight-title.pipe';
import { BuyTicketButtonComponent } from './components/buy-ticket-button/buy-ticket-button.component';
import { TimeGroupLegacyComponent } from './components/time-group-legacy/time-group-legacy.component';
import { SectionNumberComponent } from './components/section-number/section-number.component';
import { OperatorLogoComponent } from './components/operator-logo/operator-logo.component';
import { FlightStatusIconComponent } from './components/flight-status-icon/flight-status-icon.component';
import { FlightDetailsRegistrationComponent } from './pages/details/components/flight-details-registration/flight-details-registration.component';
import { FlightDetailsBoardingComponent } from './pages/details/components/flight-details-boarding/flight-details-boarding.component';
import { FlightDetailsDeboardingComponent } from './pages/details/components/flight-details-deboarding/flight-details-deboarding.component';
import { TimelineComponent } from './components/timeline/timeline.component';
import { ShareButtonComponent } from './components/share-button/share-button.component';
import { FlightDetailsButtonComponent } from './components/flight-details-button/flight-details-button.component';
import { RegistrationButtonComponent } from './components/registration-button/registration-button.component';
import { PrintButtonComponent } from './components/print-button/print-button.component';
import { FlightActionsComponent } from './components/flight-actions/flight-actions.component';
import { DetailsHeaderBadgeComponent } from './components/details-header-badge/details-header-badge.component';
import { DetailsHeaderBadgesComponent } from './components/details-header-badges/details-header-badges.component';
import { TransferInlineComponent } from './components/transfer-inline/transfer-inline.component';
import { ScheduleListFlightHeaderComponent } from './pages/schedule/schedule-list-flight-header/schedule-list-flight-header.component';
import { OperatorLogoAndModelComponent } from './components/operator-logo-and-model/operator-logo-and-model.component';
import { LinkToOldVersionComponent } from './components/link-to-old-version/link-to-old-version.component';
import { TerminalLinkComponent } from './components/terminal-link/terminal-link.component';
import { LastUpdateComponent } from './components/last-update/last-update.component';
import { TransferSectionComponent } from './components/transfer-section/transfer-section.component';
import { PartnersRedirectNoteComponent } from './components/partners-redirect-note/partners-redirect-note.component';
import { RouteStatusComponent } from './pages/details/components/route-status/route-status.component';
import { FlightPropsComponent } from './components/flight-props/flight-props.component';
import { PropertyComponent } from './components/property/property.component';
import { StationChangeComponent } from './components/station-change/station-change.component';
import { FlightBriefComponent } from './components/flight-brief/flight-brief.component';
import { TransferTimeComponent } from './components/transfer-time/transfer-time.component';
import { FlightDetailsIconComponent } from './components/flight-details-icon/flight-details-icon.component';
import { DurationComponent } from './components/duration/duration.component';
import { TimeGroupComponent } from './components/time-group/time-group.component';
import { DayChangeSquareComponent } from './components/day-change-square/day-change-square.component';
import { CaptionedTimeGroupComponent } from './components/captioned-time-group/captioned-time-group.component';
import { FlightDetailsSectionComponent } from './components/flight-details-section/flight-details-section.component';
import { FlightTransitionComponent } from './components/flight-transition/flight-transition.component';
import { FlightStatusComponent } from './components/flight-status/flight-status.component';
import { NoteComponent } from './components/note/note.component';
import { StationComponent } from './components/station/station.component';
import { WarningIflyCarrierSmallComponent } from './components/warning-ifly-carrier-small/warning-ifly-carrier-small.component';
import { WarningIflyCarrierDetailComponent } from './components/warning-ifly-carrier-detail/warning-ifly-carrier-detail.component';

const components = [
    PageTitleComponent,
    PageTabsComponent,
    PageEmptyListComponent,
    BoardSearchResultComponent,
    BoardFlightHeaderComponent,
    BoardFlightBodyComponent,
    BoardMultiFlightBodyComponent,
    BoardFlightBottomComponent,
    FlightEventsComponent,
    PageFooterNotesComponent,
    TimeNoteComponent,
    FlightDetailsRowTimeComponent,
    FlightDetailsRowBoardingComponent,
    FlightDetailsRowRegistrationsComponent,
    FlightDetailsRowPartHeaderComponent,
    TransferInlineExtended,
    FlightDetailsFullRouteComponent,
    TransferComponent,
    FlightDetailsWrapperComponent,
    FlightDetailsMealComponent,
    FlightDetailsAirplaneComponent,
    FlightDetailsServicesComponent,
    FlightScheduleComponent,
    FlightDetailsIconsUpdateTimeComponent,
    FlightsDetailsListFlightComponent,
    ScheduleSearchResultHeaderComponent,
    ScheduleSearchResultDayComponent,
    ScheduleSearchResultFlightBodyComponent,
    ScheduleSearchResultConnectingFlightBodyComponent,
    ScheduleSearchResultMultiFlightBodyComponent,
    ScheduleSearchResultFlightDetailsBodyActionsComponent,
    ScheduleMultiLegSwitcherComponent,
    IconTooltipComponent,
    FlightBodyPartHeaderComponent,
    DownloadScheduleDialogComponent,
    DetailsBackComponent,
    AppVersionComponent,
    AppShowDebugComponent,
    DayChangeSquareLegacy,
    SharePanelComponent,
    PageLoaderComponent,
    SpinLockComponent,
    FlightsDetailsListScheduleHeaderComponent,
    ClickStopPropagation,
    FlightDetailsRowDisembarkationComponent,
    ListScheduledFlightComponent,
    FlightBoardDetailsComponent,
    FlightScheduleDetailsComponent,
    FlightTitlePipe,
    BuyTicketButtonComponent,
    TimeGroupLegacyComponent,
    CodeSharingComponent,
    SectionNumberComponent,
    OperatorLogoComponent,
    OperatorLogoAndModelComponent,
    FlightStatusIconComponent,
    FlightDetailsRegistrationComponent,
    FlightDetailsBoardingComponent,
    FlightDetailsDeboardingComponent,
    TimelineComponent,
    ShareButtonComponent,
    FlightDetailsButtonComponent,
    RegistrationButtonComponent,
    FlightStatusButtonComponent,
    PrintButtonComponent,
    FlightActionsComponent,
    BoardDetailsHeaderComponent,
    ScheduleDetailsHeaderComponent,
    DetailsHeaderBadgeComponent,
    DetailsHeaderBadgesComponent,
    TransferInlineComponent,
    ScheduleListFlightHeaderComponent,
    LinkToOldVersionComponent,
    TerminalLinkComponent,
    LastUpdateComponent,
    TransferSectionComponent,
    PartnersRedirectNoteComponent,
    RouteStatusComponent,
    FlightPropsComponent,
    PropertyComponent,
    StationChangeComponent,
    FlightBriefComponent,
    TransferTimeComponent,
    FlightDetailsIconComponent,
    DurationComponent,
    TimeGroupComponent,
    DayChangeSquareComponent,
    CaptionedTimeGroupComponent,
    FlightDetailsSectionComponent,
    TimeGroupBaseComponent,
    FlightTransitionComponent,
    FlightStatusComponent,
    NoteComponent,
    StationComponent,
    WarningIflyCarrierSmallComponent,
    WarningIflyCarrierDetailComponent,
];
@NgModule({
    declarations: [...components],
    imports: [
        CommonModule,
        FormsModule,
        SharedModule,
        ReactiveFormsModule,
        RouterModule,
        PrimeComponentsModule,
        ClipboardModule,
        TranslateModule,
        ToolkitModule,
        ComponentsModule,
    ],
    exports: [...components, ToolkitModule],
})
export class FlightsModule {}
