UNPKG

@ng-web-apis/resize-observer

Version:
74 lines (66 loc) 3.71 kB
import * as i0 from '@angular/core'; import { InjectionToken, inject, ElementRef, Injectable, Directive } from '@angular/core'; import { outputFromObservable } from '@angular/core/rxjs-interop'; import { Observable } from 'rxjs'; import { WA_WINDOW } from '@ng-web-apis/common'; const SafeObserver = typeof ResizeObserver === 'undefined' ? class { observe() { } unobserve() { } disconnect() { } } : ResizeObserver; const WA_RESIZE_OPTION_BOX_DEFAULT = 'content-box'; const WA_RESIZE_OPTION_BOX = new InjectionToken(ngDevMode ? '[WA_RESIZE_OPTION_BOX]' : '', { factory: () => WA_RESIZE_OPTION_BOX_DEFAULT }); class WaResizeObserverService extends Observable { constructor() { const nativeElement = inject(ElementRef).nativeElement; const box = inject(WA_RESIZE_OPTION_BOX); super((subscriber) => { const observer = new SafeObserver((entries) => subscriber.next(entries)); observer.observe(nativeElement, { box }); return () => { observer.disconnect(); }; }); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: WaResizeObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: WaResizeObserverService }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: WaResizeObserverService, decorators: [{ type: Injectable }], ctorParameters: () => [] }); class WaResizeObserver { waResizeObserver = outputFromObservable(inject(WaResizeObserverService)); waResizeBox = WA_RESIZE_OPTION_BOX_DEFAULT; static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: WaResizeObserver, deps: [], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.19", type: WaResizeObserver, isStandalone: true, selector: "[waResizeObserver]", inputs: { waResizeBox: "waResizeBox" }, outputs: { waResizeObserver: "waResizeObserver" }, providers: [ WaResizeObserverService, { provide: WA_RESIZE_OPTION_BOX, useFactory: () => inject(ElementRef).nativeElement.getAttribute('waResizeBox') || WA_RESIZE_OPTION_BOX_DEFAULT, }, ], ngImport: i0 }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: WaResizeObserver, decorators: [{ type: Directive, args: [{ selector: '[waResizeObserver]', inputs: ['waResizeBox'], providers: [ WaResizeObserverService, { provide: WA_RESIZE_OPTION_BOX, useFactory: () => inject(ElementRef).nativeElement.getAttribute('waResizeBox') || WA_RESIZE_OPTION_BOX_DEFAULT, }, ], }] }], propDecorators: { waResizeObserver: [{ type: i0.Output, args: ["waResizeObserver"] }] } }); const WA_RESIZE_OBSERVER_SUPPORT = new InjectionToken(ngDevMode ? '[WA_RESIZE_OBSERVER_SUPPORT]' : '', { factory: () => !!inject(WA_WINDOW).ResizeObserver }); /** * Generated bundle index. Do not edit. */ export { WA_RESIZE_OBSERVER_SUPPORT, WA_RESIZE_OPTION_BOX, WA_RESIZE_OPTION_BOX_DEFAULT, WaResizeObserver, WaResizeObserverService }; //# sourceMappingURL=ng-web-apis-resize-observer.mjs.map