import { NgModule } from '@angular/core';

import { CommonModule } from '@angular/common';
import { ReactiveFormsModule } from '@angular/forms';

import { FlexLayoutModule } from '@angular/flex-layout';

import { ScrollingModule } from '@angular/cdk/scrolling';
import { DragDropModule } from '@angular/cdk/drag-drop';
import { OverlayModule } from '@angular/cdk/overlay';

import {
  MatCheckboxModule,
  MatTableModule,
  MatPaginatorModule,
  MatRippleModule,
  MatSortModule,
  MatTooltipModule,
  MatSidenavModule,
  MatProgressSpinnerModule
} from '@angular/material';

import { MatSelectModule } from '@angular/material/select';
import { MatRadioModule } from '@angular/material/radio';
import { MatAutocompleteModule } from '@angular/material/autocomplete';
import { MatBadgeModule } from '@angular/material/badge';
import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card';
import { MatDialogModule } from '@angular/material/dialog';
import { MatDividerModule } from '@angular/material/divider';
import { MatIconModule } from '@angular/material/icon';
import { MatMenuModule } from '@angular/material/menu';
import { MatProgressBarModule } from '@angular/material/progress-bar';
import { MatTabsModule } from '@angular/material/tabs';
import { MatToolbarModule } from '@angular/material/toolbar';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
import { MatListModule } from '@angular/material/list';
import { MatChipsModule } from '@angular/material/chips';

import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';
import { VirtualScrollerModule } from 'ngx-virtual-scroller';

import { TranslateModule } from '@ngx-translate/core';

import { UCapUiModule } from '@ucap-webmessenger/ui';
import { UCapUiAccountModule } from '@ucap-webmessenger/ui-account';
import { UCapUiChatModule } from '@ucap-webmessenger/ui-chat';
import { UCapUiRoomModule } from '@ucap-webmessenger/ui-room';
import { UCapUiProfileModule } from '@ucap-webmessenger/ui-profile';
import { UCapUiGroupModule } from '@ucap-webmessenger/ui-group';
import { UCapUiMessageModule } from '@ucap-webmessenger/ui-message';
import { UCapUiOrganizationModule } from '@ucap-webmessenger/ui-organization';
import { UCapUiSettingsModule } from '@ucap-webmessenger/ui-settings';

import { AppCommonLayoutModule } from '@app/layouts/common/common.layout.module';

import { COMPONENTS } from './components';
import { DIALOGS } from './dialogs';

@NgModule({
  imports: [
    CommonModule,
    FlexLayoutModule,
    DragDropModule,
    ReactiveFormsModule,
    OverlayModule,
    ScrollingModule,

    MatAutocompleteModule,
    MatFormFieldModule,
    MatInputModule,
    MatBadgeModule,
    MatButtonModule,
    MatCardModule,
    MatDialogModule,
    MatDividerModule,
    MatIconModule,
    MatMenuModule,
    MatListModule,
    MatProgressBarModule,
    MatProgressSpinnerModule,
    MatTabsModule,
    MatToolbarModule,
    MatChipsModule,
    MatCheckboxModule,
    MatRadioModule,
    MatSelectModule,
    MatTableModule,
    MatSortModule,
    MatPaginatorModule,
    MatRippleModule,
    MatTooltipModule,
    MatSidenavModule,

    PerfectScrollbarModule,
    VirtualScrollerModule,

    TranslateModule,

    UCapUiModule,
    UCapUiAccountModule,
    UCapUiChatModule,
    UCapUiMessageModule,
    UCapUiRoomModule,
    UCapUiProfileModule,
    UCapUiGroupModule,
    UCapUiOrganizationModule,
    UCapUiSettingsModule,

    AppCommonLayoutModule
  ],
  exports: [...COMPONENTS, ...DIALOGS],
  declarations: [...COMPONENTS, ...DIALOGS],
  entryComponents: [...DIALOGS]
})
export class AppMessengerLayoutModule {}
