import { NgModule } from '@angular/core';
import { ProductRoutingModule } from './product-routing.module';
import { ProductResultsComponent } from './pages/product-results/product-results.component';
import { ProductCardLoadingComponent } from './components/product-card-loading/product-card-loading.component';
import { CommonModule } from '@angular/common';
import { ProductCardComponent } from './components/product-card/product-card.component';
import { ScrollingModule } from '@angular/cdk/scrolling';
import { ScrollingModule as ExperimentalScrollingModule } from '@angular/cdk-experimental/scrolling';
import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';
import { LoadingModule, PhotoGalleryModule, CardModule, SearchInputModule, DeleteDropdownModule } from '@libs/ui';
import { SharedModule } from './../../shared/shared.module';
import { ModalModule, ButtonModule, InputModule, DropdownModule, IconModule } from '@libs/ui';
import { ProductDetailsComponent } from './pages/product-details/product-details.component';
import { RecommendationsdModule } from './../recommendations/recommendations.module';
import { ProductReviewComponent } from './components/product-review/product-review.component';
import { ProductCheckoutComponent } from './components/product-checkout/product-checkout.component';
import { AddProductReviewComponent } from './components/add-product-review/add-product-review.component';
import { DecimalSeparatorPipe } from './../../pipes/decimal-separator.pipe';
import { TextSearchComponent } from './pages/product-search/components/text-search/text-search.component';
import { ProductSearchComponent } from './pages/product-search/product-search.component';
import { FilterComponent } from './pages/product-search/components/filter/filter.component';
import { FilterItemComponent } from './pages/product-search/components/filter-item/filter-item.component';
import { SelectedFilterItemComponent } from './pages/product-search/components/selected-filter-item/selected-filter-item.component';
import { BarcodeSearchModule } from './../barcode-search/barcode-search.module';
import { DescriptionTextPipe } from './pipes/description.pipe';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { RadioButtonGroupModule } from '@libs/ui/lib/radio-button-group';
import { BookImagePipe } from '../../pipes/book-image.pipe';
import { SearchDropdownModule } from '@libs/ui/lib/search-dropdown';
import { BranchesAvalabilityOverviewComponent } from './components/branches-avalability-overview/branches-avalability-overview.component';
import { PrinterSelectionModule } from '../../components/printer-selection/printer-selection.module';
import { BookThumbnailPipe } from '../../pipes/book-thumbnail.pipe';
import { AvailabilityLoadingComponent } from './components/availability-loading/availability-loading.component';
import { ProductDetailsLoadingComponent } from './components/product-details-loading/product-details-loading.component';
import { ProductOtherFormatsComponent } from './components/product-other-formats/product-other-formats.component';
import { UiSwitchModule } from 'ngx-toggle-switch';
import { InteractiveFiltersComponent } from './components/interactive-filters/interactive-filters.component';
import { StockInfoLoadingComponent } from './components/stock-info-loading/stock-info-loading.component';
import { SmallDoubleChoiceSwitchModule } from '@libs/ui/lib/small-double-choice-switch';
import { GetAuthorsPipe } from './components/product-card/get-authors.pipe';

@NgModule({
  imports: [
    SharedModule,
    ProductRoutingModule,
    CommonModule,
    ScrollingModule,
    ExperimentalScrollingModule,
    PerfectScrollbarModule,
    LoadingModule,
    ModalModule,
    ButtonModule,
    InputModule,
    DropdownModule,
    IconModule,
    RecommendationsdModule,
    PhotoGalleryModule,
    BarcodeSearchModule,
    CardModule,
    SearchInputModule,
    FormsModule,
    ReactiveFormsModule,
    DeleteDropdownModule,
    RadioButtonGroupModule,
    SearchDropdownModule,
    PrinterSelectionModule,
    UiSwitchModule,
    SmallDoubleChoiceSwitchModule,
  ],
  declarations: [
    ProductResultsComponent,
    ProductCardLoadingComponent,
    ProductCardComponent,
    ProductDetailsComponent,
    ProductReviewComponent,
    ProductCheckoutComponent,
    AddProductReviewComponent,
    DecimalSeparatorPipe,
    TextSearchComponent,
    ProductSearchComponent,
    FilterComponent,
    FilterItemComponent,
    SelectedFilterItemComponent,
    DescriptionTextPipe,
    BranchesAvalabilityOverviewComponent,
    AvailabilityLoadingComponent,
    ProductDetailsLoadingComponent,
    ProductOtherFormatsComponent,
    InteractiveFiltersComponent,
    StockInfoLoadingComponent,
    GetAuthorsPipe,
  ],
  exports: [],
  providers: [BookImagePipe, BookThumbnailPipe, DescriptionTextPipe],
})
export class ProductModule {}
