@ng-web-apis/mutation-observer
Version:
A library for declarative use of Mutation Observer API with Angular
27 lines • 3.67 kB
JavaScript
import { ElementRef, inject, Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { SafeObserver } from '../classes/safe-observer';
import { MUTATION_OBSERVER_INIT } from '../tokens/mutation-observer-init';
import * as i0 from "@angular/core";
class MutationObserverService extends Observable {
constructor() {
const nativeElement = inject(ElementRef).nativeElement;
const config = inject(MUTATION_OBSERVER_INIT);
super((subscriber) => {
const observer = new SafeObserver((records) => {
subscriber.next(records);
});
observer.observe(nativeElement, config);
return () => {
observer.disconnect();
};
});
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MutationObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MutationObserverService });
}
export { MutationObserverService };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MutationObserverService, decorators: [{
type: Injectable
}], ctorParameters: function () { return []; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRpb24tb2JzZXJ2ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvbXV0YXRpb24tb2JzZXJ2ZXIvc3JjL3NlcnZpY2VzL211dGF0aW9uLW9ic2VydmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFaEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDOztBQUV4RSxNQUNhLHVCQUF3QixTQUFRLFVBQXFDO0lBQzlFO1FBQ0ksTUFBTSxhQUFhLEdBQVMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUM3RCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUU5QyxLQUFLLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNqQixNQUFNLFFBQVEsR0FBRyxJQUFJLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUMxQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1lBRUgsUUFBUSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFeEMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1IsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzFCLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0FoQlEsdUJBQXVCOzRHQUF2Qix1QkFBdUI7O1NBQXZCLHVCQUF1Qjs0RkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFbGVtZW50UmVmLCBpbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtTYWZlT2JzZXJ2ZXJ9IGZyb20gJy4uL2NsYXNzZXMvc2FmZS1vYnNlcnZlcic7XG5pbXBvcnQge01VVEFUSU9OX09CU0VSVkVSX0lOSVR9IGZyb20gJy4uL3Rva2Vucy9tdXRhdGlvbi1vYnNlcnZlci1pbml0JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlIGV4dGVuZHMgT2JzZXJ2YWJsZTxyZWFkb25seSBNdXRhdGlvblJlY29yZFtdPiB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnQ6IE5vZGUgPSBpbmplY3QoRWxlbWVudFJlZikubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgY29uZmlnID0gaW5qZWN0KE1VVEFUSU9OX09CU0VSVkVSX0lOSVQpO1xuXG4gICAgICAgIHN1cGVyKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBTYWZlT2JzZXJ2ZXIoKHJlY29yZHMpID0+IHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQocmVjb3Jkcyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShuYXRpdmVFbGVtZW50LCBjb25maWcpO1xuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==