{"version":3,"file":"ngx-ol-library-source-raster.mjs","sources":["../../../src/source/raster/raster-source.component.ts","../../../src/source/raster/raster-source.module.ts","../../../src/source/raster/ngx-ol-library-source-raster.ts"],"sourcesContent":["import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  EventEmitter,\n  InjectOptions,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  SimpleChanges,\n  inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\nimport { Collection } from 'ol';\nimport { ObjectEvent } from 'ol/Object';\nimport { ImageSourceEvent } from 'ol/source/Image';\nimport BaseEvent from 'ol/events/Event';\nimport Layer from 'ol/layer/Layer';\nimport Source from 'ol/source/Source';\nimport RasterSource, {\n  Operation,\n  Options,\n  RasterOperationType,\n  RasterSourceEvent\n} from 'ol/source/Raster';\nimport { NolPrefixedOptions, NolSafeAny } from 'ngx-ol-library/core';\nimport { injectImageLayer } from 'ngx-ol-library/layer/image';\n\n/**\n * A source component that transforms data from any number of input sources using \n * an [Operation](https://openlayers.org/en/latest/apidoc/module-ol_source_Raster.html#~Operation) \n * function to transform input pixel values into output pixel values.\n * @name nol-raster-source\n * @order 1\n */\n@Component({\n  selector: 'nol-raster-source',\n  standalone: true,\n  template: `<ng-content></ng-content>`,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NolRasterSourceComponent implements NolPrefixedOptions<Options>, AfterViewInit, OnChanges, OnDestroy {\n\n  @Input() \n  get nolSources() { return this.sources.getArray() }\n  set nolSources(sources: Array<Source | Layer>) {\n    this.sources.clear();\n    this.sources.extend(sources);\n  }\n\n  @Input() nolOperation?: Operation;\n  @Input() nolLib?: Record<string, NolSafeAny>;\n  @Input() nolThreads?: number;\n  @Input() nolOperationType?: RasterOperationType;\n  @Input() nolResolutions?: number[] | null;\n  @Input() nolProperties?: Record<string, NolSafeAny>;\n\n  @Output() nolAfteroperations = new EventEmitter<RasterSourceEvent>();\n  @Output() nolBeforeoperations = new EventEmitter<RasterSourceEvent>();\n  @Output() nolChange = new EventEmitter<BaseEvent>();\n  @Output() nolError = new EventEmitter<BaseEvent>();\n  @Output() nolImageloadend = new EventEmitter<ImageSourceEvent>();\n  @Output() nolImageloaderror = new EventEmitter<ImageSourceEvent>();\n  @Output() nolImageloadstart = new EventEmitter<ImageSourceEvent>();\n  @Output() nolPropertychange = new EventEmitter<ObjectEvent>();\n\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly host = injectImageLayer({ host: true });\n  private readonly sources = new Collection<Source | Layer>();\n  private instance!: RasterSource;\n\n  getInstance() {\n    return this.instance;\n  }\n\n  addSource(source: Source|Layer): number {\n    return this.sources.push(source);\n  }\n\n  removeSource(source: Source|Layer):Source|Layer|undefined {\n    return this.sources.remove(source);\n  }    \n\n  ngAfterViewInit(): void {\n    this.instance = new RasterSource({\n      sources: this.sources.getArray(),\n      operation: this.nolOperation,\n      lib: this.nolLib,\n      threads: this.nolThreads,\n      operationType: this.nolOperationType,\n      resolutions: this.nolResolutions\n    });\n\n    if (this.nolProperties) {\n      this.instance.setProperties(this.nolProperties);\n    }\n\n    fromEvent<RasterSourceEvent>(this.instance, 'afteroperations')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(evt => {\n        this.nolAfteroperations.emit(evt);\n      });\n\n    fromEvent<RasterSourceEvent>(this.instance, 'beforeoperations')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(evt => {\n        this.nolBeforeoperations.emit(evt);\n      });\n\n    fromEvent<BaseEvent>(this.instance, 'change')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(evt => {\n        this.nolChange.emit(evt);\n      });\n\n    fromEvent<BaseEvent>(this.instance, 'error')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(evt => {\n        this.nolError.emit(evt);\n      });\n\n    fromEvent<ImageSourceEvent>(this.instance, 'imageloadend')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(evt => {\n        this.nolImageloadend.emit(evt);\n      });\n\n    fromEvent<ImageSourceEvent>(this.instance, 'imageloaderror')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(evt => {\n        this.nolImageloaderror.emit(evt);\n      });\n\n    fromEvent<ImageSourceEvent>(this.instance, 'imageloadstart')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(evt => {\n        this.nolImageloadstart.emit(evt);\n      });\n\n    fromEvent<ObjectEvent>(this.instance, 'propertychange')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(evt => {\n        this.nolPropertychange.emit(evt);\n      });\n\n    this.host.getInstance().setSource(this.instance);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (!this.instance) return;\n\n    const {\n      nolAttributions,\n      nolOperation,\n      nolProperties,\n      nolResolutions\n    } = changes;\n\n    if (nolAttributions) {\n      this.instance.setAttributions(nolAttributions.currentValue);\n    }\n\n    if (nolOperation) {\n      this.instance.setOperation(nolOperation.currentValue);\n    }\n\n    if (nolProperties) {\n      this.instance.setProperties(nolProperties.currentValue);\n    }\n\n    if (nolResolutions) {\n      this.instance.setResolutions(nolResolutions.currentValue);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.host.getInstance().setSource(this.instance);\n  }\n\n}\n\nexport function injectRasterSource(): NolRasterSourceComponent;\nexport function injectRasterSource(options: InjectOptions & {optional?: false}): NolRasterSourceComponent;\nexport function injectRasterSource(options: InjectOptions): NolRasterSourceComponent | null;\nexport function injectRasterSource(options?: InjectOptions): NolRasterSourceComponent | null  {\n  return inject(NolRasterSourceComponent, options || {}) || null;\n}\n","import { NgModule } from '@angular/core';\nimport { NolRasterSourceComponent } from './raster-source.component';\n\n\n\n@NgModule({\n  imports: [NolRasterSourceComponent],\n  exports: [NolRasterSourceComponent]\n})\nexport class NolRasterSourceModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}