{"version":3,"file":"notiz-toolbelt-intersection.mjs","sources":["../../../../libs/toolbelt/intersection/src/intersection.ts","../../../../libs/toolbelt/intersection/src/intersection.directive.ts","../../../../libs/toolbelt/intersection/src/intersection.pipe.ts","../../../../libs/toolbelt/intersection/src/notiz-toolbelt-intersection.ts"],"sourcesContent":["import { Observable, Subject, debounceTime } from 'rxjs';\n\nexport const intersection$ = (\n  element: HTMLElement,\n  config: IntersectionObserverInit,\n  debounce = 0,\n) =>\n  new Observable<IntersectionObserverEntry>((subscriber) => {\n    if (typeof IntersectionObserver === 'undefined') {\n      return () => {};\n    }\n\n    const subject$ = new Subject<{\n      entry: IntersectionObserverEntry;\n      observer: IntersectionObserver;\n    }>();\n\n    const intersectionObserver = new IntersectionObserver(\n      (entries, observer) => {\n        entries.forEach((entry) => {\n          subject$.next({ entry, observer });\n        });\n      },\n      config,\n    );\n\n    subject$.subscribe(({ entry }) => {\n      subscriber.next(entry);\n    });\n\n    subject$\n      .pipe(debounceTime(debounce))\n      .subscribe(async ({ entry, observer }) => {\n        subscriber.next(entry);\n      });\n\n    intersectionObserver.observe(element);\n\n    return {\n      unsubscribe() {\n        intersectionObserver.disconnect();\n        subject$.unsubscribe();\n      },\n    };\n  });\n","import { Directive, ElementRef, Input, Output } from '@angular/core';\nimport { filter, map, skip, throttleTime } from 'rxjs';\nimport { intersection$ } from './intersection';\n\n@Directive({\n  selector: '[intersection]',\n  standalone: true,\n})\nexport class IntersectionDirective {\n  @Output() enter = intersection$(this.el.nativeElement, {}).pipe(\n    filter(() => !this.disabled),\n    map((entry) => entry.isIntersecting),\n    filter((isIntersecting) => isIntersecting),\n    throttleTime(20),\n  );\n\n  @Output() leave = intersection$(this.el.nativeElement, {}).pipe(\n    filter(() => !this.disabled),\n    map((entry) => entry.isIntersecting),\n    filter((isIntersecting) => !isIntersecting),\n    throttleTime(20),\n    skip(1),\n  );\n  @Input() disabled = false;\n  constructor(private el: ElementRef<HTMLElement>) {}\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Inject, Pipe, PipeTransform, PLATFORM_ID } from '@angular/core';\nimport { map, Observable, of } from 'rxjs';\nimport { intersection$ } from './intersection';\n\n@Pipe({\n  name: 'intersection',\n  pure: true,\n  standalone: true,\n})\nexport class IntersectionPipe implements PipeTransform {\n  constructor(@Inject(PLATFORM_ID) private platform: Object) {}\n  transform(\n    el: HTMLElement,\n    options: IntersectionObserverInit = {},\n  ): Observable<boolean> {\n    if (isPlatformBrowser(this.platform)) {\n      return intersection$(el, options).pipe(\n        map((entry) => entry.isIntersecting),\n      );\n    } else {\n      return of(false);\n    }\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}