import { Injectable } from '@angular/core'; import { BehaviorSubject, fromEvent } from 'rxjs'; import { debounceTime } from 'rxjs/operators'; @Injectable({ providedIn: 'root' }) export class ZoomDetectionService { private zoomLevel$ = new BehaviorSubject(this.getZoomLevel()); constructor() { // Zoom-Änderungen überwachen fromEvent(window, 'resize') .pipe(debounceTime(200)) .subscribe(() => { this.zoomLevel$.next(this.getZoomLevel()); }); } getZoomLevel(): number { const devicePixelRatio = window.devicePixelRatio || 1; return devicePixelRatio; } getZoomLevel$() { return this.zoomLevel$.asObservable(); } isZoomOutOfRange(minZoom: number = 0.95, maxZoom: number = 1.05): boolean { const currentZoom = this.getZoomLevel(); return currentZoom < minZoom || currentZoom > maxZoom; } }