{"version":3,"file":"yoozly-ngx-parallax.mjs","sources":["../../../projects/ngx-parallax/src/lib/services/windowref.service.ts","../../../projects/ngx-parallax/src/lib/ngx-parallax.directive.ts","../../../projects/ngx-parallax/src/lib/ngx-parallax.module.ts","../../../projects/ngx-parallax/src/lib/ngx-parallax-standalone.directive.ts","../../../projects/ngx-parallax/src/public_api.ts","../../../projects/ngx-parallax/src/yoozly-ngx-parallax.ts"],"sourcesContent":["import { Injectable, PLATFORM_ID, Inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Injectable({ providedIn: 'root' })\nexport class BrowserWindowRef {\n  constructor(@Inject(PLATFORM_ID) private platformId) {}\n\n  get nativeWindow(): any {\n    if (isPlatformBrowser(this.platformId)) {\n      return this.windowRef();\n    }\n    return false;\n  }\n\n  private windowRef(): Window {\n    // return the global native browser window object\n    return window;\n  }\n}\n","import {\n  Directive,\n  Input,\n  ElementRef,\n  Renderer2,\n  OnDestroy,\n  AfterViewInit\n} from '@angular/core';\nimport { fromEvent, Observable, of, Subject } from 'rxjs';\nimport { takeUntil, filter, map, debounceTime, mergeMap } from 'rxjs/operators';\n\nimport { BrowserWindowRef } from './services/windowref.service';\n\n@Directive({\n    selector: '[ngx-parallax]',\n    standalone: false\n})\nexport class ParallaxDirective implements OnDestroy, AfterViewInit {\n  @Input() speed = 30;\n  @Input() axe = 'y';\n  @Input() property = 'transform';\n  @Input() propertyValue = 'translate3d';\n  @Input() active = true;\n\n  private inViewport = true;\n  private observer: IntersectionObserver;\n  private element: HTMLElement;\n  private initialPosition: number;\n  private componentDestroy$ = new Subject<boolean>();\n  private windowScroll$: Observable<number>;\n  private windowResize$: Observable<number>;\n\n  constructor(\n    private hostElement: ElementRef,\n    private renderer: Renderer2,\n    private wr: BrowserWindowRef\n  ) {}\n\n  ngAfterViewInit() {\n    this.element = this.hostElement.nativeElement;\n\n    if (this.element && this.wr.nativeWindow && !this.observer) {\n      this.initParallax();\n    }\n  }\n\n  private initParallax(): void {\n    this.observer = this.createObserver(0);\n    this.observer.observe(this.element);\n\n    const parallax$ = of('').pipe(\n      takeUntil(this.componentDestroy$),\n      filter(() => this.active && this.inViewport),\n      map(() => {\n        const coef = this.calculateCoef();\n        this.renderParallax(coef);\n        return coef;\n      })\n    );\n\n    this.windowScroll$ = fromEvent(this.wr.nativeWindow, 'scroll').pipe(\n      mergeMap(() => parallax$)\n    );\n\n    this.windowResize$ = fromEvent(this.wr.nativeWindow, 'resize').pipe(\n      debounceTime(500),\n      mergeMap(() => parallax$)\n    );\n  }\n\n  private startParallax(): void {\n    this.inViewport = true;\n\n    if (this.wr.nativeWindow && this.initialPosition === undefined) {\n      this.initialPosition = this.wr.nativeWindow.pageYOffset;\n      this.windowScroll$.subscribe();\n      this.windowResize$.subscribe();\n    }\n  }\n\n  private destroyParallax(): void {\n    this.inViewport = false;\n  }\n\n  private calculateCoef(): number {\n    return (\n      (this.wr.nativeWindow.pageYOffset - this.initialPosition) *\n      (this.speed / 100)\n    );\n  }\n\n  private renderParallax(coef: number): void {\n    this.renderer.setStyle(\n      this.element,\n      this.property,\n      this.getPropertyValue(coef)\n    );\n  }\n\n  private getPropertyValue(coef: number): string {\n    let result = `${coef}px`;\n\n    if (this.property === 'transform') {\n      switch (this.propertyValue) {\n        case 'translate3d':\n          result = `translate3d(${this.getAxe(coef)})`;\n          break;\n        case 'scale':\n          result = `scale(${coef})`;\n          break;\n        case 'rotate':\n          result = `rotate(${coef}deg)`;\n          break;\n      }\n    }\n\n    switch (this.property) {\n      case 'opacity':\n        result = `${coef}`;\n        break;\n    }\n\n    return result;\n  }\n\n  private getAxe(coef: number): string {\n    let axe = [0, coef, 0];\n\n    if (this.axe === 'x') {\n      axe = [coef, 0, 0];\n    } else if (this.axe === 'z') {\n      axe = [0, 0, coef];\n    }\n\n    return `${axe[0]}px, ${axe[1]}px, ${axe[2]}px`;\n  }\n\n  private createObserver(pourcent: number) {\n    const options = {\n      rootMargin: '0px',\n      threshold: pourcent / 100\n    };\n\n    const isIntersecting = (entry: IntersectionObserverEntry) =>\n      entry.isIntersecting || entry.intersectionRatio > 0;\n\n    return new IntersectionObserver((entries, observer) => {\n      entries.forEach((entry) => {\n        if (isIntersecting(entry)) {\n          this.startParallax();\n        } else {\n          this.destroyParallax();\n        }\n      });\n    }, options);\n  }\n\n  ngOnDestroy() {\n    this.componentDestroy$.next(false);\n    this.componentDestroy$.complete();\n    if (this.wr.nativeWindow) {\n      this.observer.disconnect();\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ParallaxDirective } from './ngx-parallax.directive';\n\n@NgModule({\n  declarations: [ParallaxDirective],\n  imports: [],\n  exports: [ParallaxDirective]\n})\nexport class NgxParallaxModule {}\n","import {\n  Directive,\n  Input,\n  ElementRef,\n  Renderer2,\n  OnDestroy,\n  AfterViewInit\n} from '@angular/core';\nimport { fromEvent, Observable, of, Subject } from 'rxjs';\nimport { takeUntil, filter, map, debounceTime, mergeMap } from 'rxjs/operators';\n\nimport { BrowserWindowRef } from './services/windowref.service';\n\n@Directive({\n  selector: '[ngx-parallax]',\n  standalone: true\n})\nexport class ParallaxStandaloneDirective implements OnDestroy, AfterViewInit {\n  @Input() speed = 30;\n  @Input() axe = 'y';\n  @Input() property = 'transform';\n  @Input() propertyValue = 'translate3d';\n  @Input() active = true;\n\n  private inViewport = true;\n  private observer: IntersectionObserver;\n  private element: HTMLElement;\n  private initialPosition: number;\n  private componentDestroy$ = new Subject<boolean>();\n  private windowScroll$: Observable<number>;\n  private windowResize$: Observable<number>;\n\n  constructor(\n    private hostElement: ElementRef,\n    private renderer: Renderer2,\n    private wr: BrowserWindowRef\n  ) {}\n\n  ngAfterViewInit() {\n    this.element = this.hostElement.nativeElement;\n\n    if (this.element && this.wr.nativeWindow && !this.observer) {\n      this.initParallax();\n    }\n  }\n\n  private initParallax(): void {\n    this.observer = this.createObserver(0);\n    this.observer.observe(this.element);\n\n    const parallax$ = of('').pipe(\n      takeUntil(this.componentDestroy$),\n      filter(() => this.active && this.inViewport),\n      map(() => {\n        const coef = this.calculateCoef();\n        this.renderParallax(coef);\n        return coef;\n      })\n    );\n\n    this.windowScroll$ = fromEvent(this.wr.nativeWindow, 'scroll').pipe(\n      mergeMap(() => parallax$)\n    );\n\n    this.windowResize$ = fromEvent(this.wr.nativeWindow, 'resize').pipe(\n      debounceTime(500),\n      mergeMap(() => parallax$)\n    );\n  }\n\n  private startParallax(): void {\n    this.inViewport = true;\n\n    if (this.wr.nativeWindow && this.initialPosition === undefined) {\n      this.initialPosition = this.wr.nativeWindow.pageYOffset;\n      this.windowScroll$.subscribe();\n      this.windowResize$.subscribe();\n    }\n  }\n\n  private destroyParallax(): void {\n    this.inViewport = false;\n  }\n\n  private calculateCoef(): number {\n    return (\n      (this.wr.nativeWindow.pageYOffset - this.initialPosition) *\n      (this.speed / 100)\n    );\n  }\n\n  private renderParallax(coef: number): void {\n    this.renderer.setStyle(\n      this.element,\n      this.property,\n      this.getPropertyValue(coef)\n    );\n  }\n\n  private getPropertyValue(coef: number): string {\n    let result = `${coef}px`;\n\n    if (this.property === 'transform') {\n      switch (this.propertyValue) {\n        case 'translate3d':\n          result = `translate3d(${this.getAxe(coef)})`;\n          break;\n        case 'scale':\n          result = `scale(${coef})`;\n          break;\n        case 'rotate':\n          result = `rotate(${coef}deg)`;\n          break;\n      }\n    }\n\n    switch (this.property) {\n      case 'opacity':\n        result = `${coef}`;\n        break;\n    }\n\n    return result;\n  }\n\n  private getAxe(coef: number): string {\n    let axe = [0, coef, 0];\n\n    if (this.axe === 'x') {\n      axe = [coef, 0, 0];\n    } else if (this.axe === 'z') {\n      axe = [0, 0, coef];\n    }\n\n    return `${axe[0]}px, ${axe[1]}px, ${axe[2]}px`;\n  }\n\n  private createObserver(pourcent: number) {\n    const options = {\n      rootMargin: '0px',\n      threshold: pourcent / 100\n    };\n\n    const isIntersecting = (entry: IntersectionObserverEntry) =>\n      entry.isIntersecting || entry.intersectionRatio > 0;\n\n    return new IntersectionObserver((entries, observer) => {\n      entries.forEach((entry) => {\n        if (isIntersecting(entry)) {\n          this.startParallax();\n        } else {\n          this.destroyParallax();\n        }\n      });\n    }, options);\n  }\n\n  ngOnDestroy() {\n    this.componentDestroy$.next(false);\n    this.componentDestroy$.complete();\n    if (this.wr.nativeWindow) {\n      this.observer.disconnect();\n    }\n  }\n}\n","/*\n * Public API Surface of ngx-parallax\n */\n\n// ngModule\nexport * from './lib/ngx-parallax.module';\nexport * from './lib/ngx-parallax.directive';\n\n// standalone\nexport * from './lib/ngx-parallax-standalone.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.BrowserWindowRef"],"mappings":"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"}