import { NgModule } from '@angular/core';
import { SharedModule } from 'app/shared/shared.module';
import { MarkdownModule, MarkedOptions } from 'ngx-markdown';

import { MarkDownViewerComponent } from '../exercise/markDownViewer/markDownViewer.component';

import { ExerciseCardComponent } from './exercise-card/exercise-card.component';
import {
  ExerciseDetailsModalComponent,
  ExerciseDetailsNonModalComponent,
  ExerciseHeaderComponent,
  ExerciseBodyComponent,
} from './exercise-details/exercise-details.component';
import { ExerciseMetadataItemComponent } from './exercise-details/exercise-metadata/exercise-metadata-item/exercise-metadata-item.component';
import { ExerciseMetadataComponent } from './exercise-details/exercise-metadata/exercise-metadata.component';

@NgModule({
  imports: [
    SharedModule,
    MarkdownModule.forRoot({
      markedOptions: {
        provide: MarkedOptions,
        useValue: {
          gfm: true,
          breaks: false,
          pedantic: false,
          smartLists: true,
          smartypants: true,
          xhtml: true,
        },
      },
    }),
  ],
  declarations: [
    ExerciseCardComponent,
    ExerciseDetailsModalComponent,
    ExerciseMetadataComponent,
    ExerciseMetadataItemComponent,
    ExerciseHeaderComponent,
    ExerciseBodyComponent,
    ExerciseDetailsNonModalComponent,
    MarkDownViewerComponent,
  ],
  exports: [ExerciseCardComponent, ExerciseDetailsModalComponent, ExerciseDetailsNonModalComponent],
})
export class ExerciseModule {}