import { Input, OnDestroy, Directive } from '@angular/core';
import Source from 'ol/source/Source';

import { LayerComponent } from '../layers/layer.component';

@Directive()
// eslint-disable-next-line @angular-eslint/directive-class-suffix
export abstract class SourceComponent implements OnDestroy {
  @Input()
  attributions: any;

  public instance: Source;
  public componentType = 'source';

  protected constructor(protected host: LayerComponent) {}

  ngOnDestroy() {
    if (this.host && this.host.instance) {
      this.host.instance.setSource(null);
    }
  }

  protected register(s: Source) {
    if (this.host) {
      this.host.instance.setSource(s);
    }
  }
}
