import { NgModule } from '@angular/core'
import { CommonModule } from '@angular/common'
import { FormsModule, ReactiveFormsModule } from '@angular/forms'

import { ClipboardModule } from '@angular/cdk/clipboard'

import { MatAutocompleteModule } from '@angular/material/autocomplete'
import { MatButtonModule } from '@angular/material/button'
import { MatButtonToggleModule } from '@angular/material/button-toggle'
import { MatCardModule } from '@angular/material/card'
import { MatCheckboxModule } from '@angular/material/checkbox'
import { MatNativeDateModule } from '@angular/material/core'
import { MatDatepickerModule } from '@angular/material/datepicker'
import { MatFormFieldModule } from '@angular/material/form-field'
import { MatIconModule } from '@angular/material/icon'
import { MatInputModule } from '@angular/material/input'
import { MatListModule } from '@angular/material/list'
import { MatSelectModule } from '@angular/material/select'
import { MatSidenavModule } from '@angular/material/sidenav'
import { MatSnackBarModule } from '@angular/material/snack-bar'
import { MatTabsModule } from '@angular/material/tabs'
import { MatTooltipModule } from '@angular/material/tooltip'
import { MatTreeModule } from '@angular/material/tree'

import { FlexLayoutModule } from 'ngx-flexible-layout'

import { PipesModule } from '../pipes.module'
import { AdminDetailModule } from '../admin/admin-detail/admin-detail.module'

import { InfoDataService } from './info-data.service'

import { InfoComponent } from './info.component'
import { InfoHomeComponent } from './info-home/info-home.component'
import { InfoPlotModule } from './info-plot/plot.module'
import { InfoTagsComponent } from './info-tags/tags.component'
import { TagFormComponent } from './info-tags/tag-form.component'
import { TagComponent } from './info-tags/tag.component'
import { TagActionComponent } from './info-tags/tag-action.component'
import { TagsPluginsService } from './info-tags/tags.service'
import { ToolsComponent } from './info-tools/tools.component'
import { AttachmentsComponent } from './info-attachments/attachments.component'
import { InfoMiscComponent } from './info-misc/info-misc.component'
import { GraphComponent } from './info-graph/graph.component'
import { InfoAdminComponent } from './info-admin/info-admin.component'
import { InfoSelectionComponent } from './info-selection/info-selection.component'
import { InfoSelectionTagsComponent } from './info-selection/info-selection-tags.component'
import { ActionFormComponent } from './info-tools/action-form.component'
import { DownloaderComponent } from './info-tools/downloader.component'
//import { InfoRoutingModule } from './info-routing.module'


@NgModule({
    imports: [
        CommonModule,

        FormsModule,
        ReactiveFormsModule,

        ClipboardModule,

        MatAutocompleteModule,
        MatButtonModule,
        MatButtonToggleModule,
        MatCardModule,
        MatCheckboxModule,
        MatDatepickerModule,
        MatFormFieldModule,
        MatIconModule,
        MatInputModule,
        MatListModule,
        MatNativeDateModule,
        MatSelectModule,
        MatSidenavModule,
        MatSnackBarModule,
        MatTabsModule,
        MatTooltipModule,
        MatTreeModule,

        FlexLayoutModule,

        PipesModule,

        //InfoRoutingModule,
        InfoPlotModule,
        AdminDetailModule,
    ],
    declarations: [
        InfoComponent,
        InfoHomeComponent,
        ToolsComponent,
        InfoTagsComponent,
        TagFormComponent,
        TagComponent,
        TagActionComponent,
        InfoSelectionTagsComponent,
        ActionFormComponent,
        AttachmentsComponent,
        InfoMiscComponent,
        GraphComponent,
        InfoAdminComponent,
        InfoSelectionComponent,
        DownloaderComponent,
    ],
    exports: [
        InfoComponent,
        ToolsComponent,
        AttachmentsComponent,
        InfoMiscComponent,
        GraphComponent,
        InfoAdminComponent,
    ],
    providers: [
        InfoDataService,
        TagsPluginsService,
    ]
})
export class InfoModule { }
