@ng-web-apis/resize-observer
Version:
A library for declarative use of Resize Observer API with Angular
25 lines • 3.54 kB
JavaScript
import { ElementRef, inject, Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { SafeObserver } from '../classes/safe-observer';
import { RESIZE_OPTION_BOX } from '../tokens/resize-option-box';
import * as i0 from "@angular/core";
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 });
}
export { ResizeObserverService };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResizeObserverService, decorators: [{
type: Injectable
}], ctorParameters: function () { return []; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLW9ic2VydmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3Jlc2l6ZS1vYnNlcnZlci9zcmMvc2VydmljZXMvcmVzaXplLW9ic2VydmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFaEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDOztBQUU5RCxNQUNhLHFCQUFzQixTQUFRLFVBQTBDO0lBQ2pGO1FBQ0ksTUFBTSxhQUFhLEdBQWdCLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDcEUsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFdEMsS0FBSyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDakIsTUFBTSxRQUFRLEdBQUcsSUFBSSxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUV6RSxRQUFRLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFDLEdBQUcsRUFBQyxDQUFDLENBQUM7WUFFdkMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1IsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzFCLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0FkUSxxQkFBcUI7NEdBQXJCLHFCQUFxQjs7U0FBckIscUJBQXFCOzRGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VsZW1lbnRSZWYsIGluamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1NhZmVPYnNlcnZlcn0gZnJvbSAnLi4vY2xhc3Nlcy9zYWZlLW9ic2VydmVyJztcbmltcG9ydCB7UkVTSVpFX09QVElPTl9CT1h9IGZyb20gJy4uL3Rva2Vucy9yZXNpemUtb3B0aW9uLWJveCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZXNpemVPYnNlcnZlclNlcnZpY2UgZXh0ZW5kcyBPYnNlcnZhYmxlPHJlYWRvbmx5IFJlc2l6ZU9ic2VydmVyRW50cnlbXT4ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBjb25zdCBuYXRpdmVFbGVtZW50OiBIVE1MRWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBib3ggPSBpbmplY3QoUkVTSVpFX09QVElPTl9CT1gpO1xuXG4gICAgICAgIHN1cGVyKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBTYWZlT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHN1YnNjcmliZXIubmV4dChlbnRyaWVzKSk7XG5cbiAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUobmF0aXZlRWxlbWVudCwge2JveH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==