{"version":3,"file":"ngx-ol-library-source-vector-tile.mjs","sources":["../../../src/source/vector-tile/vector-tile-source.component.ts","../../../src/source/vector-tile/vector-tile-source.module.ts","../../../src/source/vector-tile/ngx-ol-library-source-vector-tile.ts"],"sourcesContent":["import {\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  EventEmitter,\n  InjectOptions,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\nimport { ObjectEvent } from 'ol/Object';\nimport { Extent } from 'ol/extent';\nimport { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\nimport { ProjectionLike } from 'ol/proj';\nimport { AttributionLike, State } from 'ol/source/Source';\nimport { TileSourceEvent } from 'ol/source/Tile';\nimport { Size } from 'ol/size';\nimport { LoadFunction, UrlFunction } from 'ol/Tile';\nimport { NearestDirectionFunction } from 'ol/array';\nimport BaseEvent from 'ol/events/Event';\nimport FeatureFormat from 'ol/format/Feature';\nimport Tile from 'ol/VectorTile';\nimport TileGrid from 'ol/tilegrid/TileGrid';\nimport VectorTile, { Options } from 'ol/source/VectorTile';\nimport { NolPrefixedOptions, NolSafeAny } from 'ngx-ol-library/core';\nimport { useVectorTileLayer } from 'ngx-ol-library/layer/vector-tile';\n\n/**\n * Component for layer sources providing vector data divided into a tile grid, to be \n * used with [VectorTileLayer](components/vector-tile-layer) component.\n * @name nol-vector-tile-source\n * @order 1\n */\n@Component({\n  selector: 'nol-vector-tile-source',\n  exportAs: 'nolVectorTileSource',\n  standalone: true,\n  template: `<ng-content></ng-content>`,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NolVectorTileSourceComponent implements NolPrefixedOptions<Options<Feature<Geometry>>>, OnInit, OnChanges, OnDestroy {\n\n  @Input() nolAttributions?: AttributionLike;\n  @Input() nolAttributionsCollapsible?: boolean;\n  @Input() nolCacheSize?: number;\n  @Input() nolExtent?: Extent;\n  @Input() nolFormat?: FeatureFormat;\n  @Input() nolOverlaps?: boolean;\n  @Input() nolProjection?: ProjectionLike;\n  @Input() nolState?: State;\n  @Input() nolTileClass?: typeof Tile;\n  @Input() nolMaxZoom?: number;\n  @Input() nolMinZoom?: number;\n  @Input() nolTileSize?: number | Size;\n  @Input() nolMaxResolution?: number;\n  @Input() nolTileGrid?: TileGrid;\n  @Input() nolTileLoadFunction?: LoadFunction;\n  @Input() nolTileUrlFunction?: UrlFunction;\n  @Input() nolUrl?: string;\n  @Input() nolTransition?: number;\n  @Input() nolUrls?: string[];\n  @Input() nolWrapX?: boolean;\n  @Input() nolZDirection?: number | NearestDirectionFunction;\n  @Input() nolProperties?: Record<string, NolSafeAny>;\n\n  @Output() nolChange = new EventEmitter<BaseEvent>();\n  @Output() nolError = new EventEmitter<BaseEvent>();\n  @Output() nolPropertychange = new EventEmitter<ObjectEvent>();\n  @Output() nolTileloadend = new EventEmitter<TileSourceEvent>();\n  @Output() nolTileloaderror = new EventEmitter<TileSourceEvent>();\n  @Output() nolTileloadstart = new EventEmitter<TileSourceEvent>();\n\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly host = useVectorTileLayer();\n  private instance!: VectorTile<Feature<Geometry>>;\n\n  getInstance() {\n    return this.instance;\n  }\n\n  ngOnInit(): void {\n    this.instance = new VectorTile({\n      attributions: this.nolAttributions,\n      attributionsCollapsible: this.nolAttributionsCollapsible,\n      cacheSize: this.nolCacheSize,\n      extent: this.nolExtent,\n      format: this.nolFormat,\n      overlaps: this.nolOverlaps,\n      projection: this.nolProjection,\n      state: this.nolState,\n      tileClass: this.nolTileClass,\n      maxZoom: this.nolMaxZoom,\n      minZoom: this.nolMinZoom,\n      tileSize: this.nolTileSize,\n      maxResolution: this.nolMaxResolution,\n      tileGrid: this.nolTileGrid,\n      tileLoadFunction: this.nolTileLoadFunction,\n      tileUrlFunction: this.nolTileUrlFunction,\n      url: this.nolUrl,\n      transition: this.nolTransition,\n      urls: this.nolUrls,\n      wrapX: this.nolWrapX,\n      zDirection: this.nolZDirection,\n    });\n\n    if (this.nolProperties) {\n      this.instance.setProperties(this.nolProperties);\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<ObjectEvent>(this.instance, 'propertychange')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(evt => {\n        this.nolPropertychange.emit(evt);\n      });\n\n    fromEvent<TileSourceEvent>(this.instance, 'tileloadend')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(evt => {\n        this.nolTileloadend.emit(evt);\n      });\n\n    fromEvent<TileSourceEvent>(this.instance, 'tileloaderror')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(evt => {\n        this.nolTileloaderror.emit(evt);\n      });\n\n    fromEvent<TileSourceEvent>(this.instance, 'tileloadstart')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(evt => {\n        this.nolTileloadstart.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      nolProperties,\n      nolTileLoadFunction,\n      nolUrl,\n      nolUrls,\n    } = changes;\n\n    if (nolAttributions) {\n      this.instance.setAttributions(nolAttributions.currentValue);\n    }\n\n    if (nolProperties) {\n      this.instance.setProperties(nolProperties.currentValue);\n    }\n\n    if (nolTileLoadFunction) {\n      this.instance.setTileLoadFunction(nolTileLoadFunction.currentValue);\n    }\n\n    if (nolUrl) {\n      this.instance.setUrl(nolUrl.currentValue);\n    }\n\n    if (nolUrls) {\n      this.instance.setUrls(nolUrls.currentValue);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.host.getInstance().setSource(null);\n  }\n\n}\n\nexport function useVectorTileSource(): NolVectorTileSourceComponent;\nexport function useVectorTileSource(options: InjectOptions & {optional?: false}): NolVectorTileSourceComponent;\nexport function useVectorTileSource(options: InjectOptions): NolVectorTileSourceComponent | null;\nexport function useVectorTileSource(options?: InjectOptions): NolVectorTileSourceComponent | null  {\n  return inject(NolVectorTileSourceComponent, options || {}) || null;\n}","import { NgModule } from '@angular/core';\nimport { NolVectorTileSourceComponent } from './vector-tile-source.component';\n\n\n\n@NgModule({\n  imports: [NolVectorTileSourceComponent],\n  exports: [NolVectorTileSourceComponent]\n})\nexport class NolVectorTileSourceModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}