UNPKG

@ng-web-apis/resize-observer

Version:
97 lines (89 loc) 4.23 kB
import * as i0 from '@angular/core'; import { InjectionToken, inject, ElementRef, Injectable, Directive } from '@angular/core'; import { Observable } from 'rxjs'; import { WA_WINDOW } from '@ng-web-apis/common'; const SafeObserver = typeof ResizeObserver !== 'undefined' ? ResizeObserver : class { observe() { } unobserve() { } disconnect() { } }; const WA_RESIZE_OPTION_BOX_DEFAULT = 'content-box'; /** * @deprecated: drop in v5.0, use {@link WA_RESIZE_OPTION_BOX_DEFAULT} */ const RESIZE_OPTION_BOX_DEFAULT = WA_RESIZE_OPTION_BOX_DEFAULT; const WA_RESIZE_OPTION_BOX = new InjectionToken('[WA_RESIZE_OPTION_BOX]', { providedIn: 'root', factory: () => RESIZE_OPTION_BOX_DEFAULT, }); /** * @deprecated: drop in v5.0, use {@link WA_RESIZE_OPTION_BOX} */ const RESIZE_OPTION_BOX = WA_RESIZE_OPTION_BOX; class ResizeObserverService extends Observable { constructor() { const nativeElement = inject(ElementRef).nativeElement; const box = inject(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: "16.2.12", ngImport: i0, type: ResizeObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResizeObserverService }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResizeObserverService, decorators: [{ type: Injectable }], ctorParameters: function () { return []; } }); class WaResizeObserver { waResizeObserver = inject(ResizeObserverService); box = RESIZE_OPTION_BOX_DEFAULT; static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WaResizeObserver, deps: [], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: WaResizeObserver, isStandalone: true, selector: "[waResizeObserver]", inputs: { waResizeBox: ["box", "waResizeBox"] }, outputs: { waResizeObserver: "waResizeObserver" }, providers: [ ResizeObserverService, { provide: RESIZE_OPTION_BOX, useFactory: () => inject(ElementRef).nativeElement.getAttribute('waResizeBox') || RESIZE_OPTION_BOX_DEFAULT, }, ], ngImport: i0 }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WaResizeObserver, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[waResizeObserver]', inputs: ['waResizeBox: box'], outputs: ['waResizeObserver'], providers: [ ResizeObserverService, { provide: RESIZE_OPTION_BOX, useFactory: () => inject(ElementRef).nativeElement.getAttribute('waResizeBox') || RESIZE_OPTION_BOX_DEFAULT, }, ], }] }] }); /** * @deprecated: use {@link WaResizeObserver} */ const ResizeObserverDirective = WaResizeObserver; const WA_RESIZE_OBSERVER_SUPPORT = new InjectionToken('[WA_RESIZE_OBSERVER_SUPPORT]', { providedIn: 'root', factory: () => !!inject(WA_WINDOW).ResizeObserver, }); /** * @deprecated: drop in v5.0, use {@link WA_RESIZE_OBSERVER_SUPPORT} */ const RESIZE_OBSERVER_SUPPORT = WA_RESIZE_OBSERVER_SUPPORT; /** * Generated bundle index. Do not edit. */ export { RESIZE_OBSERVER_SUPPORT, RESIZE_OPTION_BOX, RESIZE_OPTION_BOX_DEFAULT, ResizeObserverDirective, ResizeObserverService, WA_RESIZE_OBSERVER_SUPPORT, WA_RESIZE_OPTION_BOX, WA_RESIZE_OPTION_BOX_DEFAULT, WaResizeObserver }; //# sourceMappingURL=ng-web-apis-resize-observer.mjs.map