/*
 * Copyright (C) 2018 Robert Bosch GmbH Copyright (C) 2018 Robert Bosch Manufacturing Solutions GmbH, Germany. All rights reserved.
 */

import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms';
import { MatButtonToggleModule } from '@angular/material/button-toggle';
import { MatExpansionModule } from '@angular/material/expansion';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatIconModule } from '@angular/material/icon';
import { MatInputModule } from '@angular/material/input';
import { BciSharedModule } from '@bci-web-core/core';
import { GenericMapsModule } from '../generic-maps/generic-maps.module';
import { GenericLocationFormUIService } from './generic-location-form/generic-location-form-u-i.service';
import { GenericLocationFormComponent } from './generic-location-form/generic-location-form.component';
import { PolygonCoordinatesTextareaDirective } from './generic-location-form/polygon-coordinates-textarea.directive';
import { LocationEditingDirective } from './location-editing.directive';
import { LocationInteractionDirective } from './location-interaction.directive';
import { LocationSelectionDirective } from './location-selection.directive';
import { LocationLayerDirective } from './map/location-layer.directive';
import { LocationMapDirective } from './map/location-map.directive';
import { LocationRendererDirective } from './map/location-renderer.directive';
import { LocationToolbarComponent } from './toolbar/location-toolbar.component';

@NgModule({
  imports: [
    GenericMapsModule,
    CommonModule,
    BciSharedModule,
    ReactiveFormsModule,
    MatFormFieldModule,
    MatInputModule,
    MatIconModule,
    MatButtonToggleModule,
    MatExpansionModule,
  ],
  exports: [
    LocationMapDirective,
    LocationLayerDirective,
    LocationRendererDirective,
    LocationSelectionDirective,
    LocationEditingDirective,
    LocationInteractionDirective,
    GenericLocationFormComponent,
    LocationToolbarComponent,
  ],
  declarations: [
    LocationMapDirective,
    LocationLayerDirective,
    LocationRendererDirective,
    LocationSelectionDirective,
    LocationEditingDirective,
    LocationInteractionDirective,
    GenericLocationFormComponent,
    LocationToolbarComponent,
    PolygonCoordinatesTextareaDirective,
  ],
  providers: [GenericLocationFormUIService],
})
export class LocationMapModule {}
