@ng-web-apis/intersection-observer
Version:
A library for declarative use of Intersection Observer API with Angular
1 lines • 17.5 kB
Source Map (JSON)
{"version":3,"file":"ng-web-apis-intersection-observer.mjs","sources":["../../../libs/intersection-observer/src/classes/safe-observer.ts","../../../libs/intersection-observer/src/tokens/intersection-root.ts","../../../libs/intersection-observer/src/tokens/intersection-root-margin.ts","../../../libs/intersection-observer/src/utils/root-margin-factory.ts","../../../libs/intersection-observer/src/tokens/intersection-threshold.ts","../../../libs/intersection-observer/src/utils/threshold-factory.ts","../../../libs/intersection-observer/src/directives/intersection-observer.directive.ts","../../../libs/intersection-observer/src/services/intersection-observee.service.ts","../../../libs/intersection-observer/src/directives/intersection-observee.directive.ts","../../../libs/intersection-observer/src/directives/intersection-root.directive.ts","../../../libs/intersection-observer/src/module.ts","../../../libs/intersection-observer/src/services/intersection-observer.service.ts","../../../libs/intersection-observer/src/tokens/support.ts","../../../libs/intersection-observer/src/ng-web-apis-intersection-observer.ts"],"sourcesContent":["export const SafeObserver =\n typeof IntersectionObserver !== 'undefined'\n ? IntersectionObserver\n : class implements IntersectionObserver {\n public readonly root = null;\n public readonly rootMargin = '';\n public readonly thresholds = [];\n public observe(): void {}\n public unobserve(): void {}\n public disconnect(): void {}\n public takeRecords(): IntersectionObserverEntry[] {\n return [];\n }\n };\n","import type {ElementRef} from '@angular/core';\nimport {InjectionToken} from '@angular/core';\n\nexport const WA_INTERSECTION_ROOT = new InjectionToken<ElementRef<Element>>(\n '[WA_INTERSECTION_ROOT]',\n);\n\n/**\n * @deprecated: drop in v5.0, use {@link WA_INTERSECTION_ROOT}\n */\nexport const INTERSECTION_ROOT = WA_INTERSECTION_ROOT;\n","import {InjectionToken} from '@angular/core';\n\nexport const WA_INTERSECTION_ROOT_MARGIN_DEFAULT = '0px 0px 0px 0px';\n\n/**\n * @deprecated: drop in v5.0, use {@link WA_INTERSECTION_ROOT_MARGIN_DEFAULT}\n */\nexport const INTERSECTION_ROOT_MARGIN_DEFAULT = WA_INTERSECTION_ROOT_MARGIN_DEFAULT;\n\nexport const WA_INTERSECTION_ROOT_MARGIN = new InjectionToken<string>(\n '[WA_INTERSECTION_ROOT_MARGIN]',\n {\n providedIn: 'root',\n factory: () => INTERSECTION_ROOT_MARGIN_DEFAULT,\n },\n);\n\n/**\n * @deprecated: drop in v5.0, use {@link WA_INTERSECTION_ROOT_MARGIN}\n */\nexport const INTERSECTION_ROOT_MARGIN = WA_INTERSECTION_ROOT_MARGIN;\n","import {ElementRef, inject} from '@angular/core';\n\nimport {INTERSECTION_ROOT_MARGIN_DEFAULT} from '../tokens/intersection-root-margin';\n\nexport function rootMarginFactory(): string {\n return (\n inject(ElementRef).nativeElement.getAttribute('waIntersectionRootMargin') ||\n INTERSECTION_ROOT_MARGIN_DEFAULT\n );\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const WA_INTERSECTION_THRESHOLD_DEFAULT = 0;\n\n/**\n * @deprecated: drop in v5.0, use {@link WA_INTERSECTION_THRESHOLD_DEFAULT}\n */\nexport const INTERSECTION_THRESHOLD_DEFAULT = WA_INTERSECTION_THRESHOLD_DEFAULT;\n\nexport const WA_INTERSECTION_THRESHOLD = new InjectionToken<number[] | number>(\n '[WA_INTERSECTION_THRESHOLD]',\n {\n providedIn: 'root',\n factory: () => INTERSECTION_THRESHOLD_DEFAULT,\n },\n);\n\n/**\n * @deprecated: drop in v5.0, use {@link WA_INTERSECTION_THRESHOLD}\n */\nexport const INTERSECTION_THRESHOLD = WA_INTERSECTION_THRESHOLD;\n","import {ElementRef, inject} from '@angular/core';\n\nimport {INTERSECTION_THRESHOLD_DEFAULT} from '../tokens/intersection-threshold';\n\nexport function thresholdFactory(): number[] | number {\n return (\n inject(ElementRef)\n .nativeElement.getAttribute('waIntersectionThreshold')\n ?.split(',')\n .map(parseFloat) || INTERSECTION_THRESHOLD_DEFAULT\n );\n}\n","/* eslint-disable @angular-eslint/no-attribute-decorator */\nimport type {OnDestroy} from '@angular/core';\nimport {Directive, inject} from '@angular/core';\n\nimport {SafeObserver} from '../classes/safe-observer';\nimport {INTERSECTION_ROOT} from '../tokens/intersection-root';\nimport {rootMarginFactory} from '../utils/root-margin-factory';\nimport {thresholdFactory} from '../utils/threshold-factory';\n\n@Directive({\n standalone: true,\n selector: '[waIntersectionObserver]',\n inputs: ['margin: waIntersectionRootMargin', 'threshold: waIntersectionThreshold'],\n exportAs: 'IntersectionObserver',\n})\nexport class WaIntersectionObserverDirective extends SafeObserver implements OnDestroy {\n private readonly callbacks = new Map<Element, IntersectionObserverCallback>();\n\n public margin = '';\n public threshold = '';\n\n constructor() {\n const root = inject(INTERSECTION_ROOT, {optional: true});\n\n super(\n (entries) => {\n this.callbacks.forEach((callback, element) => {\n const filtered = entries.filter(({target}) => target === element);\n\n return filtered.length && callback(filtered, this);\n });\n },\n {\n root: root?.nativeElement,\n rootMargin: rootMarginFactory(),\n threshold: thresholdFactory(),\n },\n );\n }\n\n public override observe(\n target: Element,\n callback: IntersectionObserverCallback = () => {},\n ): void {\n super.observe(target);\n this.callbacks.set(target, callback);\n }\n\n public override unobserve(target: Element): void {\n super.unobserve(target);\n this.callbacks.delete(target);\n }\n\n public ngOnDestroy(): void {\n this.disconnect();\n }\n}\n\n/**\n * @deprecated: use {@link WaIntersectionObserverDirective}\n */\nexport const IntersectionObserverDirective = WaIntersectionObserverDirective;\n\n/**\n * @deprecated: use {@link WaIntersectionObserver}\n */\nexport const WaObserver = WaIntersectionObserverDirective;\n","import {ElementRef, inject, Injectable} from '@angular/core';\nimport {Observable, share} from 'rxjs';\n\nimport {WaIntersectionObserverDirective} from '../directives/intersection-observer.directive';\n\n@Injectable()\nexport class IntersectionObserveeService extends Observable<IntersectionObserverEntry[]> {\n constructor() {\n const nativeElement: Element = inject(ElementRef).nativeElement;\n const observer = inject(WaIntersectionObserverDirective);\n\n super((subscriber) => {\n observer.observe(nativeElement, (entries) => {\n subscriber.next(entries);\n });\n\n return () => {\n observer.unobserve(nativeElement);\n };\n });\n\n return this.pipe(share());\n }\n}\n","import {Directive, inject} from '@angular/core';\n\nimport {IntersectionObserveeService} from '../services/intersection-observee.service';\n\n@Directive({\n standalone: true,\n selector: '[waIntersectionObservee]',\n outputs: ['waIntersectionObservee'],\n providers: [IntersectionObserveeService],\n})\nexport class WaIntersectionObservee {\n protected readonly waIntersectionObservee = inject(IntersectionObserveeService);\n}\n\n/**\n * @deprecated: use {@link WaIntersectionObservee}\n */\nexport const IntersectionObserveeDirective = WaIntersectionObservee;\n\n/**\n * @deprecated: use {@link WaIntersectionObservee}\n */\nexport const WaObservee = WaIntersectionObservee;\n","import {Directive, ElementRef} from '@angular/core';\n\nimport {INTERSECTION_ROOT} from '../tokens/intersection-root';\n\n@Directive({\n standalone: true,\n selector: '[waIntersectionRoot]',\n providers: [\n {\n provide: INTERSECTION_ROOT,\n useExisting: ElementRef,\n },\n ],\n})\nexport class WaIntersectionRoot {}\n\n/**\n * @deprecated: use {@link WaIntersectionRoot}\n */\nexport const IntersectionRootDirective = WaIntersectionRoot;\n","import {NgModule} from '@angular/core';\n\nimport {WaIntersectionObservee} from './directives/intersection-observee.directive';\nimport {WaIntersectionObserverDirective} from './directives/intersection-observer.directive';\nimport {WaIntersectionRoot} from './directives/intersection-root.directive';\n\nexport const WaIntersectionObserver = [\n WaIntersectionObserverDirective,\n WaIntersectionObservee,\n WaIntersectionRoot,\n] as const;\n\n/**\n * @deprecated: use {@link WaIntersectionObserver}\n */\n@NgModule({\n imports: [\n WaIntersectionObserverDirective,\n WaIntersectionObservee,\n WaIntersectionRoot,\n ],\n exports: [\n WaIntersectionObserverDirective,\n WaIntersectionObservee,\n WaIntersectionRoot,\n ],\n})\nexport class IntersectionObserverModule {}\n","import {ElementRef, inject, Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nimport {SafeObserver} from '../classes/safe-observer';\nimport {INTERSECTION_ROOT} from '../tokens/intersection-root';\nimport {INTERSECTION_ROOT_MARGIN} from '../tokens/intersection-root-margin';\nimport {INTERSECTION_THRESHOLD} from '../tokens/intersection-threshold';\n\n@Injectable()\nexport class IntersectionObserverService extends Observable<IntersectionObserverEntry[]> {\n private readonly nativeElement: Element = inject(ElementRef).nativeElement;\n private readonly rootMargin = inject(INTERSECTION_ROOT_MARGIN);\n private readonly threshold = inject(INTERSECTION_THRESHOLD);\n private readonly root: Element | null =\n inject(INTERSECTION_ROOT, {optional: true})?.nativeElement ?? null;\n\n constructor() {\n super((subscriber) => {\n const observer = new SafeObserver(\n (entries) => {\n subscriber.next(entries);\n },\n {\n root: this.root,\n rootMargin: this.rootMargin,\n threshold: this.threshold,\n },\n );\n\n observer.observe(this.nativeElement);\n\n return () => {\n observer.disconnect();\n };\n });\n }\n}\n","import {inject, InjectionToken} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\n\nexport const WA_INTERSECTION_OBSERVER_SUPPORT = new InjectionToken<boolean>(\n '[WA_INTERSECTION_OBSERVER_SUPPORT]: [INTERSECTION_OBSERVER_SUPPORT]',\n {\n providedIn: 'root',\n factory: () => !!(inject(WA_WINDOW) as any).IntersectionObserver,\n },\n);\n\n/**\n * @deprecated: drop in v5.0, use {@link WA_INTERSECTION_OBSERVER_SUPPORT}\n */\nexport const INTERSECTION_OBSERVER_SUPPORT = WA_INTERSECTION_OBSERVER_SUPPORT;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}