{"version":3,"file":"ngx-ol-library-interaction-select.mjs","sources":["../../../src/interaction/select/select-interaction.component.ts","../../../src/interaction/select/select-interaction.module.ts","../../../src/interaction/select/ngx-ol-library-interaction-select.ts"],"sourcesContent":["import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\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 { Collection, Feature } from 'ol';\nimport { ObjectEvent } from 'ol/Object';\nimport { Condition } from 'ol/events/condition';\nimport { Geometry } from 'ol/geom';\nimport { StyleLike } from 'ol/style/Style';\nimport BaseEvent from 'ol/events/Event';\nimport Layer from 'ol/layer/Layer.js';\nimport LayerRenderer from 'ol/renderer/Layer.js';\nimport Source from 'ol/source/Source.js';\nimport Select, {\n  FilterFunction,\n  Options,\n  SelectEvent\n} from 'ol/interaction/Select';\nimport { NolPrefixedOptions, NolSafeAny } from 'ngx-ol-library/core';\nimport { injectMap } from 'ngx-ol-library/map';\n\n/**\n * An interaction component for selecting vector features.\n * @name nol-select-interaction\n * @order 1\n */\n@Component({\n  selector: 'nol-select-interaction',\n  exportAs: 'nolSelectInteraction',\n  standalone: true,\n  template: `<ng-content></ng-content>`,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NolSelectInteractionComponent\n  implements NolPrefixedOptions<Options>, OnInit, OnChanges, OnDestroy {\n  \n  @Input() nolActive: boolean = true;\n  @Input() nolAddCondition?: Condition;\n  @Input() nolCondition?: Condition;\n  @Input() nolLayers?: Layer<Source, LayerRenderer<NolSafeAny>>[] | ((layer: Layer<Source>) => boolean);\n  @Input() nolStyle?: StyleLike | null;\n  @Input() nolRemoveCondition?: Condition;\n  @Input() nolToggleCondition?: Condition;\n  @Input() nolMulti?: boolean;\n  @Input() nolFeatures?: Collection<Feature<Geometry>>;\n  @Input() nolFilter?: FilterFunction;\n  @Input() nolHitTolerance?: number;\n  @Input() nolProperties?: Record<string, NolSafeAny>;\n\n  @Output() nolActiveChange = new EventEmitter<boolean>();\n  @Output() nolChange = new EventEmitter<BaseEvent>();\n  @Output() nolError = new EventEmitter<BaseEvent>();\n  @Output() nolPropertychange = new EventEmitter<ObjectEvent>();\n  @Output() nolSelect = new EventEmitter<SelectEvent>();\n\n  private readonly cdr = inject(ChangeDetectorRef);\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly host = injectMap({ host: true });\n  private instance!: Select;\n\n  getInstance(): Select {\n    return this.instance;\n  }\n\n  ngOnInit(): void {\n    this.instance = new Select({\n      addCondition: this.nolAddCondition,\n      condition: this.nolCondition,\n      layers: this.nolLayers,\n      style: this.nolStyle,\n      removeCondition: this.nolRemoveCondition,\n      toggleCondition: this.nolToggleCondition,\n      multi: this.nolMulti,\n      features: this.nolFeatures,\n      filter: this.nolFilter,\n      hitTolerance: this.nolHitTolerance,\n    });\n\n    this.instance.setActive(this.nolActive);\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, 'change:active')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => {\n        this.nolActive = this.instance.getActive();\n        this.nolActiveChange.emit(this.nolActive);\n        this.cdr.markForCheck();\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<SelectEvent>(this.instance, 'select')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(evt => {\n        this.nolSelect.emit(evt);\n      });\n      \n    this.host.getInstance().addInteraction(this.instance);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (!this.instance) return;\n\n    const { nolActive, nolHitTolerance, nolProperties } = changes;\n\n    if (nolActive) {\n      this.instance.setActive(nolActive.currentValue);\n    }\n\n    if (nolHitTolerance) {\n      this.instance.setHitTolerance(nolHitTolerance.currentValue);\n    }\n\n    if (nolProperties) {\n      this.instance.setProperties(nolProperties.currentValue);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.host.getInstance().removeInteraction(this.instance);\n  }\n\n}\n\nexport function useSelectInteraction(): NolSelectInteractionComponent;\nexport function useSelectInteraction(options: InjectOptions & {optional?: false}): NolSelectInteractionComponent;\nexport function useSelectInteraction(options: InjectOptions): NolSelectInteractionComponent | null;\nexport function useSelectInteraction(options?: InjectOptions): NolSelectInteractionComponent | null  {\n  return inject(NolSelectInteractionComponent, options || {}) || null;\n}\n","import { NgModule } from '@angular/core';\nimport { NolSelectInteractionComponent } from './select-interaction.component';\n\n\n\n@NgModule({\n  imports: [NolSelectInteractionComponent],\n  exports: [NolSelectInteractionComponent]\n})\nexport class NolSelectInteractionModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}