import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { RouterModule } from '@angular/router';
import { TranslateModule } from '@ngx-translate/core';

import { I18nPipe } from '../core/i18n/pipe';
import { CodeBoxComponent } from './components/code-box/code-box.component';
import { ColorBoxComponent } from './components/color-box/color-box.component';
import { ContentComponent } from './components/content/content.component';
import { CustomComponentComponent } from './components/demo/custom-component/custom-component.component';
import { DemoDrawerComponent } from './components/dialog/drawer.component';
import { DemoModalComponent } from './components/dialog/modal.component';
import { DocsComponent } from './components/docs/docs.component';
import { EditButtonComponent } from './components/edit-button/edit-button.component';
import { FooterComponent } from './components/footer/footer.component';
import { IconComponent } from './components/icon/icon.component';
import { IconsBoxComponent } from './components/icons-box/icons-box.component';
import { MainMenuComponent } from './components/main-menu/main-menu.component';
import { RouteTransferDirective } from './components/route-transfer/route-transfer.directive';
import { ThemeBtnComponent } from './components/theme-btn/theme-btn.component';
import { PIPES as SHARED_PIPES } from './pipes';
import { SHARED_BIXI_MODULES } from './shared-bixi.module';
import { SHARED_ZORRO_MODULES } from './shared-zorro.module';


const DIALOG_COMPONENTS = [DemoModalComponent, DemoDrawerComponent, IconComponent, CustomComponentComponent];

const COMPONENTS = [
  FooterComponent,
  MainMenuComponent,
  ContentComponent,
  EditButtonComponent,
  DocsComponent,
  CodeBoxComponent,
  ColorBoxComponent,
  ThemeBtnComponent,
  RouteTransferDirective,
  IconsBoxComponent,
  ...DIALOG_COMPONENTS
];

const THIRDS = [TranslateModule];

const PIPES = [I18nPipe, ...SHARED_PIPES];
@NgModule({
  imports: [CommonModule, FormsModule, RouterModule, ReactiveFormsModule, ...SHARED_BIXI_MODULES, ...SHARED_ZORRO_MODULES, ...THIRDS],
  declarations: [...COMPONENTS, ...PIPES],
  entryComponents: [...DIALOG_COMPONENTS, CustomComponentComponent],
  exports: [
    CommonModule,
    FormsModule,
    ReactiveFormsModule,
    RouterModule,
    ...SHARED_BIXI_MODULES,
    ...SHARED_ZORRO_MODULES,
    ...THIRDS,
    ...COMPONENTS,
    ...PIPES
  ]
})
export class SharedModule { }
