@coreui/angular
Version:
CoreUI Components Library for Angular
51 lines • 7.59 kB
JavaScript
import { isPlatformServer } from '@angular/common';
import { inject, Injectable, PLATFORM_ID } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import * as i0 from "@angular/core";
export class IntersectionService {
constructor() {
this.platformId = inject(PLATFORM_ID);
this.#intersecting = new BehaviorSubject({ isIntersecting: false });
this.intersecting$ = this.#intersecting.asObservable();
this.defaultObserverOptions = {
root: null,
rootMargin: '0px',
threshold: 0.2
};
this.hostElementRefs = new Map();
}
#intersecting;
createIntersectionObserver(hostElement, observerOptions = this.defaultObserverOptions) {
if (isPlatformServer(this.platformId)) {
this.#intersecting.next({ isIntersecting: true, hostElement });
return;
}
const options = { ...this.defaultObserverOptions, ...observerOptions };
const handleIntersect = (entries, observer) => {
entries.forEach((entry) => {
this.#intersecting.next({ isIntersecting: entry.isIntersecting, hostElement });
});
};
this.hostElementRefs.set(hostElement, new IntersectionObserver(handleIntersect, options));
this.hostElementRefs.get(hostElement)?.observe(hostElement.nativeElement);
}
unobserve(elementRef) {
this.hostElementRefs.get(elementRef)?.unobserve(elementRef.nativeElement);
this.hostElementRefs.set(elementRef, null);
this.hostElementRefs.delete(elementRef);
}
ngOnDestroy() {
this.hostElementRefs.forEach((observer, elementRef) => {
observer?.unobserve(elementRef.nativeElement);
});
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: IntersectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: IntersectionService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: IntersectionService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJzZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL3NlcnZpY2VzL2ludGVyc2VjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBYyxNQUFNLEVBQUUsVUFBVSxFQUFhLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQVd2QyxNQUFNLE9BQU8sbUJBQW1CO0lBSGhDO1FBS0UsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV4QixrQkFBYSxHQUF5QixJQUFJLGVBQWUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3JGLGtCQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVuRCwyQkFBc0IsR0FBOEI7WUFDMUQsSUFBSSxFQUFFLElBQUk7WUFDVixVQUFVLEVBQUUsS0FBSztZQUNqQixTQUFTLEVBQUUsR0FBRztTQUNmLENBQUM7UUFFRixvQkFBZSxHQUFpRCxJQUFJLEdBQUcsRUFBRSxDQUFDO0tBZ0MzRTtJQXpDVSxhQUFhLENBQXdFO0lBVzlGLDBCQUEwQixDQUFDLFdBQXVCLEVBQUUsZUFBZSxHQUFHLElBQUksQ0FBQyxzQkFBc0I7UUFFL0YsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUMvRCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUE4QixFQUFFLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFFbEcsTUFBTSxlQUFlLEdBQUcsQ0FBQyxPQUFvQyxFQUFFLFFBQThCLEVBQUUsRUFBRTtZQUMvRixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUNqRixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLG9CQUFvQixDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzFGLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELFNBQVMsQ0FBQyxVQUFzQjtRQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxTQUFTLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxFQUFFO1lBQ3BELFFBQVEsRUFBRSxTQUFTLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0E1Q1UsbUJBQW1CO21IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1TZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRWxlbWVudFJlZiwgaW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBJSW50ZXJzZWN0aW9uT2JzZXJ2ZXJJbml0IHtcbiAgcm9vdD86IEVsZW1lbnQgfCBudWxsO1xuICByb290TWFyZ2luPzogc3RyaW5nO1xuICB0aHJlc2hvbGQ/OiBudW1iZXIgfCBudW1iZXJbXTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSW50ZXJzZWN0aW9uU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgcmVhZG9ubHkgI2ludGVyc2VjdGluZzogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHsgaXNJbnRlcnNlY3Rpbmc6IGZhbHNlIH0pO1xuICByZWFkb25seSBpbnRlcnNlY3RpbmckID0gdGhpcy4jaW50ZXJzZWN0aW5nLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgZGVmYXVsdE9ic2VydmVyT3B0aW9uczogSUludGVyc2VjdGlvbk9ic2VydmVySW5pdCA9IHtcbiAgICByb290OiBudWxsLFxuICAgIHJvb3RNYXJnaW46ICcwcHgnLFxuICAgIHRocmVzaG9sZDogMC4yXG4gIH07XG5cbiAgaG9zdEVsZW1lbnRSZWZzOiBNYXA8RWxlbWVudFJlZiwgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfCBudWxsPiA9IG5ldyBNYXAoKTtcblxuICBjcmVhdGVJbnRlcnNlY3Rpb25PYnNlcnZlcihob3N0RWxlbWVudDogRWxlbWVudFJlZiwgb2JzZXJ2ZXJPcHRpb25zID0gdGhpcy5kZWZhdWx0T2JzZXJ2ZXJPcHRpb25zKSB7XG5cbiAgICBpZiAoaXNQbGF0Zm9ybVNlcnZlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICB0aGlzLiNpbnRlcnNlY3RpbmcubmV4dCh7IGlzSW50ZXJzZWN0aW5nOiB0cnVlLCBob3N0RWxlbWVudCB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zOiBJSW50ZXJzZWN0aW9uT2JzZXJ2ZXJJbml0ID0geyAuLi50aGlzLmRlZmF1bHRPYnNlcnZlck9wdGlvbnMsIC4uLm9ic2VydmVyT3B0aW9ucyB9O1xuXG4gICAgY29uc3QgaGFuZGxlSW50ZXJzZWN0ID0gKGVudHJpZXM6IEludGVyc2VjdGlvbk9ic2VydmVyRW50cnlbXSwgb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyKSA9PiB7XG4gICAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy4jaW50ZXJzZWN0aW5nLm5leHQoeyBpc0ludGVyc2VjdGluZzogZW50cnkuaXNJbnRlcnNlY3RpbmcsIGhvc3RFbGVtZW50IH0pO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHRoaXMuaG9zdEVsZW1lbnRSZWZzLnNldChob3N0RWxlbWVudCwgbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZUludGVyc2VjdCwgb3B0aW9ucykpO1xuICAgIHRoaXMuaG9zdEVsZW1lbnRSZWZzLmdldChob3N0RWxlbWVudCk/Lm9ic2VydmUoaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICB1bm9ic2VydmUoZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIHRoaXMuaG9zdEVsZW1lbnRSZWZzLmdldChlbGVtZW50UmVmKT8udW5vYnNlcnZlKGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5ob3N0RWxlbWVudFJlZnMuc2V0KGVsZW1lbnRSZWYsIG51bGwpO1xuICAgIHRoaXMuaG9zdEVsZW1lbnRSZWZzLmRlbGV0ZShlbGVtZW50UmVmKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaG9zdEVsZW1lbnRSZWZzLmZvckVhY2goKG9ic2VydmVyLCBlbGVtZW50UmVmKSA9PiB7XG4gICAgICBvYnNlcnZlcj8udW5vYnNlcnZlKGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==