UNPKG

@ng-web-apis/screen-orientation

Version:
23 lines 4.18 kB
import { inject, Injectable } from '@angular/core'; import { WINDOW } from '@ng-web-apis/common'; import { EMPTY, filter, fromEvent, map, merge, Observable, shareReplay, startWith, } from 'rxjs'; import * as i0 from "@angular/core"; class ViewportService extends Observable { visualViewport = inject(WINDOW).visualViewport; stream$ = this.visualViewport ? merge(fromEvent(this.visualViewport, 'resize'), fromEvent(this.visualViewport, 'scroll'), fromEvent(this.visualViewport, 'scrollend')).pipe(startWith(null), map(() => this.visualViewport), filter(Boolean), shareReplay({ bufferSize: 1, refCount: true })) : EMPTY; constructor() { super((subscriber) => this.stream$.subscribe(subscriber)); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewportService, providedIn: 'root' }); } export { ViewportService }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewportService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYnMvc2NyZWVuLW9yaWVudGF0aW9uL3NyYy92aWV3cG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0gsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsR0FBRyxFQUNILEtBQUssRUFDTCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFNBQVMsR0FDWixNQUFNLE1BQU0sQ0FBQzs7QUFFZCxNQUdhLGVBQWdCLFNBQVEsVUFBMEI7SUFDMUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUM7SUFFL0MsT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjO1FBQzFDLENBQUMsQ0FBQyxLQUFLLENBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLEVBQ3hDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxFQUN4QyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FDOUMsQ0FBQyxJQUFJLENBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUNmLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQzlCLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFDZixXQUFXLENBQUMsRUFBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUMvQztRQUNILENBQUMsQ0FBQyxLQUFLLENBQUM7SUFFWjtRQUNJLEtBQUssQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO3dHQWxCUSxlQUFlOzRHQUFmLGVBQWUsY0FGWixNQUFNOztTQUVULGVBQWU7NEZBQWYsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1dJTkRPV30gZnJvbSAnQG5nLXdlYi1hcGlzL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEVNUFRZLFxuICAgIGZpbHRlcixcbiAgICBmcm9tRXZlbnQsXG4gICAgbWFwLFxuICAgIG1lcmdlLFxuICAgIE9ic2VydmFibGUsXG4gICAgc2hhcmVSZXBsYXksXG4gICAgc3RhcnRXaXRoLFxufSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVmlld3BvcnRTZXJ2aWNlIGV4dGVuZHMgT2JzZXJ2YWJsZTxWaXN1YWxWaWV3cG9ydD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlzdWFsVmlld3BvcnQgPSBpbmplY3QoV0lORE9XKS52aXN1YWxWaWV3cG9ydDtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyZWFtJCA9IHRoaXMudmlzdWFsVmlld3BvcnRcbiAgICAgICAgPyBtZXJnZShcbiAgICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMudmlzdWFsVmlld3BvcnQsICdyZXNpemUnKSxcbiAgICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMudmlzdWFsVmlld3BvcnQsICdzY3JvbGwnKSxcbiAgICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMudmlzdWFsVmlld3BvcnQsICdzY3JvbGxlbmQnKSxcbiAgICAgICAgICApLnBpcGUoXG4gICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMudmlzdWFsVmlld3BvcnQpLFxuICAgICAgICAgICAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgICAgICAgICAgIHNoYXJlUmVwbGF5KHtidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZX0pLFxuICAgICAgICAgIClcbiAgICAgICAgOiBFTVBUWTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigoc3Vic2NyaWJlcikgPT4gdGhpcy5zdHJlYW0kLnN1YnNjcmliZShzdWJzY3JpYmVyKSk7XG4gICAgfVxufVxuIl19