import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { PluginComponentHostDirective } from './plugin-ui/plugin-component-host.directive';
import { PluginUIComponent } from './plugin-ui/plugin-ui.component';
import { UiModule } from '../ui/ui.module';
import { MatIconModule } from '@angular/material/icon';
import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router';
import { ReactiveFormsModule } from '@angular/forms';
import { ErrorHandlingModule } from '@shared/error-handling/error-handling.module';
import { MatInputModule } from '@angular/material/input';
import { MatCardModule } from '@angular/material/card';
import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatMenuModule } from '@angular/material/menu';
import { EditorModule } from '@tinymce/tinymce-angular';
import { MatSelectModule } from '@angular/material/select';
import { MatAutocompleteModule } from '@angular/material/autocomplete';
import {
  TicketEditMessageDialogComponent
} from '@shared/plugins/common-dialogs/tickets/ticket-edit-message-dialog/ticket-edit-message-dialog.component';
import {
  GoogleAuthenticatorDetailsTabComponent
} from '@shared/plugins/common-tabs/google-authenticator-details-tab/google-authenticator-details-tab.component';
import {
  SmsAuthenticatorDetailsTabComponent
} from '@shared/plugins/common-tabs/sms-authenticator-details-tab/sms-authenticator-details-tab.component';
import {
  GoogleAuthenticatorConfirmFormComponent
} from '@shared/plugins/common-tabs/google-authenticator-confirm-form/google-authenticator-confirm-form.component';
import {
  SmsAuthenticatorConfirmFormComponent
} from '@shared/plugins/common-tabs/sms-authenticator-confirm-form/sms-authenticator-confirm-form.component';
import {
  TicketDetailsTabComponent
} from '@shared/plugins/common-tabs/tickets/ticket-details-tab/ticket-details-tab.component';
import {
  RemoveTicketLinkDialogComponent
} from '@shared/plugins/common-dialogs/tickets/remove-ticket-link-dialog/remove-ticket-link-dialog.component';
import { MatDialogModule } from '@angular/material/dialog';
import {
  DomainDetailsOverviewComponent
} from '@shared/plugins/common-tabs/domains/domain-details-overview/domain-details-overview.component';
import {
  DomainDetailsNameserversComponent
} from '@shared/plugins/common-tabs/domains/domain-details-nameservers/domain-details-nameservers.component';
import {
  ContactDetailsOverviewComponent
} from '@shared/plugins/common-tabs/domains/contacts/contact-details-overview/contact-details-overview.component';
import {
  ContactEditFormComponent
} from '@shared/plugins/common-tabs/domains/contacts/contact-edit-form/contact-edit-form.component';
import { FleioDataControlsModule } from '@shared/fleio-data-controls/fleio-data-controls.module';
import {
  InsertPredefinedReplyDialogComponent
} from './common-dialogs/tickets/insert-predefined-reply-dialog/insert-predefined-reply-dialog.component';
import { MatExpansionModule } from '@angular/material/expansion';
import {
  TicketAddNoteDialogComponent
} from './common-dialogs/tickets/ticket-add-note-dialog/ticket-add-note-dialog.component';
import { CommonDialogsModule } from '@shared/common-dialogs/common-dialogs.module';
import { ChangeOSDialogComponent } from './common-dialogs/directadmin/change-os-dialog/change-os-dialog.component';
import {
  ChangeNameDialogComponent
} from './common-dialogs/directadmin/change-name-dialog/change-name-dialog.component';
import {
  DomainsSelectDomainComponent
} from './common-tabs/domains/domains-select-domain/domains-select-domain.component';
import { MatRadioModule } from '@angular/material/radio';
import {
  DomainTransferFormComponent
} from '@shared/plugins/common-tabs/domains/domain-transfer-form/domain-transfer-form.component';
import {
  DomainRegisterFormComponent
} from '@shared/plugins/common-tabs/domains/domain-register-form/domain-register-form.component';

@NgModule({
  declarations: [
    PluginComponentHostDirective,
    PluginUIComponent,
    GoogleAuthenticatorDetailsTabComponent,
    SmsAuthenticatorDetailsTabComponent,
    GoogleAuthenticatorConfirmFormComponent,
    SmsAuthenticatorConfirmFormComponent,
    DomainDetailsOverviewComponent,
    DomainDetailsNameserversComponent,
    ContactDetailsOverviewComponent,
    ContactEditFormComponent,
    TicketDetailsTabComponent,
    TicketEditMessageDialogComponent,
    RemoveTicketLinkDialogComponent,
    InsertPredefinedReplyDialogComponent,
    TicketAddNoteDialogComponent,
    ChangeOSDialogComponent,
    ChangeNameDialogComponent,
    DomainsSelectDomainComponent,
    DomainTransferFormComponent,
    DomainRegisterFormComponent,
  ],
  exports: [
    PluginUIComponent,
    TicketDetailsTabComponent,
    TicketEditMessageDialogComponent,
    RemoveTicketLinkDialogComponent,
  ],
  imports: [
    CommonModule,
    MatIconModule,
    UiModule,
    MatButtonModule,
    RouterModule,
    ReactiveFormsModule,
    ErrorHandlingModule,
    MatInputModule,
    MatCardModule,
    MatCheckboxModule,
    MatAutocompleteModule,
    FleioDataControlsModule,
    MatMenuModule,
    EditorModule,
    MatSelectModule,
    MatAutocompleteModule,
    MatDialogModule,
    MatExpansionModule,
    CommonDialogsModule,
    MatRadioModule,
  ]
})
export class PluginsModule {
}
