import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
 import { NguiAutoCompleteModule } from '@ngui/auto-complete';

import {
  FormsModule,
  ReactiveFormsModule
} from '@angular/forms';

import { FormElementComponent } from './formelement.component';
import { FormComponent } from './form.component';
import { WidgetChooserComponent } from './widgetchooser.component';

import { TinyMCEComponent } from "./defaultwidgets/tinymce/tinymce.component";
import { TinyMCEValueAccessor } from "./defaultwidgets/tinymce/tinymce.valueaccessor";

import {
  ArrayWidget,
  ObjectWidget,
  CheckboxWidget,
  FileWidget,
  IntegerWidget,
  TextAreaWidget,
  RadioWidget,
  RangeWidget,
  SelectWidget,
  StringWidget,
  TinyMCEWidget,
  MultipleWidget
} from './defaultwidgets';

@NgModule({
  imports : [CommonModule, FormsModule, ReactiveFormsModule, NguiAutoCompleteModule],
  declarations: [
    FormElementComponent,
    FormComponent,
    WidgetChooserComponent,
    ArrayWidget,
    ObjectWidget,
    CheckboxWidget,
    FileWidget,
    IntegerWidget,
    TextAreaWidget,
    RadioWidget,
    RangeWidget,
    SelectWidget,
    StringWidget,
    MultipleWidget,
    TinyMCEWidget,
    TinyMCEComponent,
    TinyMCEValueAccessor
  ],
  entryComponents: [
    FormElementComponent,
    FormComponent,
    WidgetChooserComponent,
    ArrayWidget,
    ObjectWidget,
    CheckboxWidget,
    FileWidget,
    IntegerWidget,
    TextAreaWidget,
    RadioWidget,
    RangeWidget,
    SelectWidget,
    StringWidget,
    MultipleWidget,
    TinyMCEWidget
  ],
  exports: [
    FormComponent,
    FormElementComponent,
    ArrayWidget,
    ObjectWidget,
    CheckboxWidget,
    FileWidget,
    IntegerWidget,
    TextAreaWidget,
    RadioWidget,
    RangeWidget,
    SelectWidget,
    StringWidget,
    MultipleWidget,
    TinyMCEWidget
  ]
})
export class SchemaFormModule {}
