@ng-web-apis/common
Version:
A set of common utils for consuming Web APIs with Angular
14 lines • 2.91 kB
JavaScript
import { DOCUMENT } from '@angular/common';
import { inject, InjectionToken } from '@angular/core';
import { distinctUntilChanged, fromEvent, map, shareReplay, startWith } from 'rxjs';
export const WA_PAGE_VISIBILITY = new InjectionToken('[WA_PAGE_VISIBILITY]', {
factory: () => {
const documentRef = inject(DOCUMENT);
return fromEvent(documentRef, 'visibilitychange').pipe(startWith(0), map(() => documentRef.visibilityState !== 'hidden'), distinctUntilChanged(), shareReplay({ refCount: false, bufferSize: 1 }));
},
});
/**
* @deprecated: drop in v5.0, use {@link WA_PAGE_VISIBILITY}
*/
export const PAGE_VISIBILITY = WA_PAGE_VISIBILITY;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS12aXNpYmlsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3Rva2Vucy9wYWdlLXZpc2liaWxpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxNQUFNLEVBQUUsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFbEYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQ2hELHNCQUFzQixFQUN0QjtJQUNJLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDVixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFckMsT0FBTyxTQUFTLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUNsRCxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ1osR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEtBQUssUUFBUSxDQUFDLEVBQ25ELG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsQ0FBQyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBQyxDQUFDLENBQ2hELENBQUM7SUFDTixDQUFDO0NBQ0osQ0FDSixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtpbmplY3QsIEluamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGlzdGluY3RVbnRpbENoYW5nZWQsIGZyb21FdmVudCwgbWFwLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRofSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNvbnN0IFdBX1BBR0VfVklTSUJJTElUWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPYnNlcnZhYmxlPGJvb2xlYW4+PihcbiAgICAnW1dBX1BBR0VfVklTSUJJTElUWV0nLFxuICAgIHtcbiAgICAgICAgZmFjdG9yeTogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRSZWYgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICAgICAgICAgICByZXR1cm4gZnJvbUV2ZW50KGRvY3VtZW50UmVmLCAndmlzaWJpbGl0eWNoYW5nZScpLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKDApLFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiBkb2N1bWVudFJlZi52aXNpYmlsaXR5U3RhdGUgIT09ICdoaWRkZW4nKSxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIHNoYXJlUmVwbGF5KHtyZWZDb3VudDogZmFsc2UsIGJ1ZmZlclNpemU6IDF9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgfSxcbik7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQ6IGRyb3AgaW4gdjUuMCwgdXNlIHtAbGluayBXQV9QQUdFX1ZJU0lCSUxJVFl9XG4gKi9cbmV4cG9ydCBjb25zdCBQQUdFX1ZJU0lCSUxJVFkgPSBXQV9QQUdFX1ZJU0lCSUxJVFk7XG4iXX0=