{"version":3,"file":"ngx-ol-library-source-vector.mjs","sources":["../../../src/source/vector/utils.ts","../../../src/source/vector/vector-source.component.ts","../../../src/source/vector/vector-source.module.ts","../../../src/source/vector/ngx-ol-library-source-vector.ts"],"sourcesContent":["import { InjectOptions } from '@angular/core';\nimport { useHeatmapLayer } from 'ngx-ol-library/layer/heatmap';\nimport { injectVectorLayer } from 'ngx-ol-library/layer/vector';\nimport { useVectorImageLayer } from 'ngx-ol-library/layer/vector-image';\nimport { useClusterSource } from 'ngx-ol-library/source/cluster';\n\nexport function useVectorSourceHost() {\n  const options: InjectOptions = { optional: true, host: true };\n  const vectorLayer = injectVectorLayer(options);\n  const vectorImageLayer = useVectorImageLayer(options);\n  const heatmapLayer = useHeatmapLayer(options);\n  const clusterSource = useClusterSource(options);\n  const host = clusterSource || heatmapLayer || vectorImageLayer || vectorLayer;\n\n  if (!host) {\n    throw new Error(\n      '`nol-vector-source` component must be nested within `nol-vector-layer`, ' +\n      '`nol-heatmap-layer`, `nol-vector-image-layer` or `nol-cluster-source` component.'\n    );\n  }\n\n  return host;\n}","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 { AttributionLike } from 'ol/source/Source';\nimport { ObjectEvent } from 'ol/Object';\nimport { FeatureLoader, FeatureUrlFunction } from 'ol/featureloader';\nimport { Geometry } from 'ol/geom';\nimport VectorSource, { \n  LoadingStrategy, \n  Options, \n  VectorSourceEvent \n} from 'ol/source/Vector';\nimport Feature from 'ol/Feature';\nimport Collection from 'ol/Collection';\nimport FeatureFormat from 'ol/format/Feature';\nimport BaseEvent from 'ol/events/Event';\nimport { NolPrefixedOptions, NolSafeAny } from 'ngx-ol-library/core';\nimport { useVectorSourceHost } from './utils';\n\n/**\n * Provides a source of features for `nol-vector-layer` components.\n * @name nol-vector-source\n * @order 1\n */\n@Component({\n  selector: 'nol-vector-source',\n  standalone: true,\n  template: `<ng-content></ng-content>`,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NolVectorSourceComponent implements NolPrefixedOptions<Options<Feature<Geometry>>>, OnInit, OnChanges, OnDestroy {\n\n  @Input() nolAttributions?: AttributionLike;\n  @Input() nolFeatures?: Feature<Geometry>[] | Collection<Feature<Geometry>>;\n  @Input() nolFormat?: FeatureFormat;\n  @Input() nolLoader?: FeatureLoader;\n  @Input() nolOverlaps?: boolean;\n  @Input() nolStrategy?: LoadingStrategy;\n  @Input() nolUrl?: string | FeatureUrlFunction;\n  @Input() nolUseSpatialIndex?: boolean;\n  @Input() nolWrapX?: boolean;\n  @Input() nolProperties?: Record<string, NolSafeAny>;\n\n  @Output() nolAddfeature = new EventEmitter<VectorSourceEvent>();\n  @Output() nolChange = new EventEmitter<BaseEvent>();\n  @Output() nolChangefeature = new EventEmitter<VectorSourceEvent>();\n  @Output() nolClear = new EventEmitter<VectorSourceEvent>();\n  @Output() nolError = new EventEmitter<BaseEvent>();\n  @Output() nolFeaturesloadend = new EventEmitter<VectorSourceEvent>();\n  @Output() nolFeaturesloaderror = new EventEmitter<VectorSourceEvent>();\n  @Output() nolFeaturesloadstart = new EventEmitter<VectorSourceEvent>();\n  @Output() nolPropertychange = new EventEmitter<BaseEvent>();\n  @Output() nolRemovefeature = new EventEmitter<VectorSourceEvent>();\n\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly host = useVectorSourceHost();\n  private instance!: VectorSource;\n\n  getInstance() {\n    return this.instance;\n  }\n\n  ngOnInit(): void {\n    this.instance = new VectorSource({\n      attributions: this.nolAttributions,\n      features: this.nolFeatures,\n      format: this.nolFormat,\n      loader: this.nolLoader,\n      overlaps: this.nolOverlaps,\n      strategy: this.nolStrategy,\n      url: this.nolUrl,\n      useSpatialIndex: this.nolUseSpatialIndex,\n      wrapX: this.nolWrapX,\n    });\n\n    if (this.nolProperties) {\n      this.instance.setProperties(this.nolProperties);\n    }\n\n    fromEvent<VectorSourceEvent>(this.instance, 'addfeature')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(evt => {\n        this.nolAddfeature.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<VectorSourceEvent>(this.instance, 'changefeature')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(evt => {\n        this.nolChangefeature.emit(evt);\n      });\n\n    fromEvent<VectorSourceEvent>(this.instance, 'clear')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(evt => {\n        this.nolClear.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<VectorSourceEvent>(this.instance, 'featuresloadend')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(evt => {\n        this.nolFeaturesloadend.emit(evt);\n      });\n\n    fromEvent<VectorSourceEvent>(this.instance, 'featuresloaderror')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(evt => {\n        this.nolFeaturesloaderror.emit(evt);\n      });\n\n    fromEvent<VectorSourceEvent>(this.instance, 'featuresloadstart')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(evt => {\n        this.nolFeaturesloadstart.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<VectorSourceEvent>(this.instance, 'removefeature')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(evt => {\n        this.nolRemovefeature.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 { nolAttributions, nolLoader, nolProperties, nolUrl } = changes;\n\n    if (nolAttributions) {\n      this.instance.setAttributions(nolAttributions.currentValue);\n    }\n\n    if (nolLoader) {\n      this.instance.setLoader(nolLoader.currentValue);\n    }\n\n    if (nolProperties) {\n      this.instance.setProperties(nolProperties.currentValue);\n    }\n\n    if (nolUrl) {\n      this.instance.setUrl(nolUrl.currentValue);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.host.getInstance().setSource(null);\n  }\n}\n\nexport function injectVectorSource(): NolVectorSourceComponent;\nexport function injectVectorSource(options: InjectOptions & {optional?: false}): NolVectorSourceComponent;\nexport function injectVectorSource(options: InjectOptions): NolVectorSourceComponent | null;\nexport function injectVectorSource(options?: InjectOptions): NolVectorSourceComponent | null  {\n  return inject(NolVectorSourceComponent, options || {}) || null;\n}\n","import { NgModule } from '@angular/core';\nimport { NolVectorSourceComponent } from './vector-source.component';\n\n\n\n@NgModule({\n  imports: [NolVectorSourceComponent],\n  exports: [NolVectorSourceComponent],\n})\nexport class NolVectorSourceModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;SAMgB,mBAAmB,GAAA;IACjC,MAAM,OAAO,GAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC9D,IAAA,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC/C,IAAA,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtD,IAAA,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AAC9C,IAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,aAAa,IAAI,YAAY,IAAI,gBAAgB,IAAI,WAAW,CAAC;IAE9E,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,KAAK,CACb,0EAA0E;AAC1E,YAAA,kFAAkF,CACnF,CAAC;KACH;AAED,IAAA,OAAO,IAAI,CAAC;AACd;;ACUA;;;;AAIG;MAOU,wBAAwB,CAAA;AANrC,IAAA,WAAA,GAAA;AAmBY,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAqB,CAAC;AACtD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAa,CAAC;AAC1C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAqB,CAAC;AACzD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAqB,CAAC;AACjD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAa,CAAC;AACzC,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAqB,CAAC;AAC3D,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAqB,CAAC;AAC7D,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAqB,CAAC;AAC7D,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAa,CAAC;AAClD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAqB,CAAC;AAElD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,CAAA,IAAA,GAAG,mBAAmB,EAAE,CAAC;AAgH/C,KAAA;IA7GC,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC;YAC/B,YAAY,EAAE,IAAI,CAAC,eAAe;YAClC,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,MAAM,EAAE,IAAI,CAAC,SAAS;YACtB,MAAM,EAAE,IAAI,CAAC,SAAS;YACtB,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,GAAG,EAAE,IAAI,CAAC,MAAM;YAChB,eAAe,EAAE,IAAI,CAAC,kBAAkB;YACxC,KAAK,EAAE,IAAI,CAAC,QAAQ;AACrB,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACjD;AAED,QAAA,SAAS,CAAoB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AACtD,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzC,SAAS,CAAC,GAAG,IAAG;AACf,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/B,SAAC,CAAC,CAAC;AAEL,QAAA,SAAS,CAAY,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC1C,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzC,SAAS,CAAC,GAAG,IAAG;AACf,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,SAAC,CAAC,CAAC;AAEL,QAAA,SAAS,CAAoB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AACzD,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzC,SAAS,CAAC,GAAG,IAAG;AACf,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,SAAC,CAAC,CAAC;AAEL,QAAA,SAAS,CAAoB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACjD,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzC,SAAS,CAAC,GAAG,IAAG;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,SAAC,CAAC,CAAC;AAEL,QAAA,SAAS,CAAY,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACzC,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzC,SAAS,CAAC,GAAG,IAAG;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,SAAC,CAAC,CAAC;AAEL,QAAA,SAAS,CAAoB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AAC3D,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzC,SAAS,CAAC,GAAG,IAAG;AACf,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,SAAC,CAAC,CAAC;AAEL,QAAA,SAAS,CAAoB,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AAC7D,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzC,SAAS,CAAC,GAAG,IAAG;AACf,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,SAAC,CAAC,CAAC;AAEL,QAAA,SAAS,CAAoB,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AAC7D,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzC,SAAS,CAAC,GAAG,IAAG;AACf,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,SAAC,CAAC,CAAC;AAEL,QAAA,SAAS,CAAc,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AACpD,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzC,SAAS,CAAC,GAAG,IAAG;AACf,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,SAAC,CAAC,CAAC;AAEL,QAAA,SAAS,CAAoB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AACzD,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzC,SAAS,CAAC,GAAG,IAAG;AACf,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAClD;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE3B,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAEtE,IAAI,eAAe,EAAE;YACnB,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;SAC7D;QAED,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;SACjD;QAED,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;SACzD;QAED,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SAC3C;KACF;IAED,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KACzC;8GAxIU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,mvBAHzB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAG1B,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA,CAAA;8BAGU,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAEI,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBACG,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBACG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBACG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACG,kBAAkB,EAAA,CAAA;sBAA3B,MAAM;gBACG,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBACG,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBACG,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBACG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;;AAwHH,SAAU,kBAAkB,CAAC,OAAuB,EAAA;IACxD,OAAO,MAAM,CAAC,wBAAwB,EAAE,OAAO,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC;AACjE;;MClLa,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAArB,qBAAqB,EAAA,OAAA,EAAA,CAHtB,wBAAwB,CAAA,EAAA,OAAA,EAAA,CACxB,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;+GAEvB,qBAAqB,EAAA,CAAA,CAAA,EAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,wBAAwB,CAAC;oBACnC,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACpC,iBAAA,CAAA;;;ACRD;;AAEG;;;;"}