@ng-web-apis/screen-orientation
Version:
A library for declarative use of screen orientation with Angular
23 lines • 4.18 kB
JavaScript
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