{"version":3,"file":"omnedia-ngx-background-beams.mjs","sources":["../../../projects/ngx-background-beams/src/lib/ngx-background-beams.component.ts","../../../projects/ngx-background-beams/src/lib/ngx-background-beams.component.html","../../../projects/ngx-background-beams/src/public-api.ts","../../../projects/ngx-background-beams/src/omnedia-ngx-background-beams.ts"],"sourcesContent":["import {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  Inject,\r\n  Input,\r\n  OnDestroy,\r\n  PLATFORM_ID, signal,\r\n  ViewChild, WritableSignal\r\n} from '@angular/core';\r\nimport {CommonModule, isPlatformBrowser} from \"@angular/common\";\r\n\r\n@Component({\r\n  selector: 'om-background-beams',\r\n  standalone: true,\r\n  imports: [CommonModule],\r\n  templateUrl: \"./ngx-background-beams.component.html\",\r\n  styleUrl: \"./ngx-background-beams.component.scss\",\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class NgxBackgroundBeamsComponent implements AfterViewInit, OnDestroy {\r\n  @ViewChild('OmBackgroundBeams') componentRef!: ElementRef<HTMLElement>;\r\n\r\n  @Input()\r\n  set gradientColorValues(colors: string[]) {\r\n    if (colors.length !== 3) {\r\n      throw new Error('om-background-beams: gradient colors need to be exactly 3 values.');\r\n    }\r\n\r\n    this.gradientColors.set(colors);\r\n  }\r\n\r\n  @Input()\r\n  pathColor: string = '#00000025';\r\n\r\n  @Input() pathQuantity: number = 50;\r\n\r\n  readonly gradientColors: WritableSignal<string[]> = signal(['#18CCFC', '#6344F5', '#AE48FF']);\r\n  readonly paths: WritableSignal<string[]> = signal([]);\r\n  readonly x1: WritableSignal<string[]> = signal([]);\r\n  readonly x2: WritableSignal<string[]> = signal([]);\r\n  readonly y1: WritableSignal<string[]> = signal([]);\r\n  readonly y2: WritableSignal<string[]> = signal([]);\r\n  readonly delays: WritableSignal<number[]> = signal([]);\r\n  readonly durations: WritableSignal<number[]> = signal([]);\r\n  readonly inViewport: WritableSignal<boolean> = signal(false);\r\n\r\n  private animationFrameId?: number;\r\n  private observer?: IntersectionObserver;\r\n\r\n  constructor(\r\n    @Inject(PLATFORM_ID) private platformId: object\r\n  ) {\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    if (isPlatformBrowser(this.platformId)) {\r\n      this.generatePaths();\r\n      this.initializeIntersectionObserver();\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.observer && this.componentRef.nativeElement) {\r\n      this.observer.unobserve(this.componentRef.nativeElement);\r\n    }\r\n  }\r\n\r\n  generatePaths(): void {\r\n    this.paths.set([]);\r\n    this.x1.set([]);\r\n    this.x2.set([]);\r\n    this.y1.set([]);\r\n    this.y2.set([]);\r\n    this.delays.set([]);\r\n    this.durations.set([]);\r\n\r\n    const firstPath = {\r\n      mX1: -380, mY1: -189, cX1: -380, cY1: -189, cX2: -312, cY2: 216,\r\n      cX3: 152, cY3: 343, cX4: 616, cY4: 470, cX5: 684, cY5: 875\r\n    };\r\n\r\n    const lastPath = {\r\n      mX1: -37, mY1: -581, cX1: -37, cY1: -581, cX2: 31, cY2: -176,\r\n      cX3: 495, cY3: -49, cX4: 959, cY4: 78, cX5: 1027, cY5: 483\r\n    };\r\n\r\n    const paths: string[] = [];\r\n    const x1: string[] = [];\r\n    const x2: string[] = [];\r\n    const y1: string[] = [];\r\n    const y2: string[] = [];\r\n    const delays: number[] = [];\r\n    const durations: number[] = [];\r\n\r\n    for (let i = 0; i < this.pathQuantity; i++) {\r\n      const t = i / (this.pathQuantity - 1);\r\n\r\n      const mX1 = firstPath.mX1 + t * (lastPath.mX1 - firstPath.mX1);\r\n      const mY1 = firstPath.mY1 + t * (lastPath.mY1 - firstPath.mY1);\r\n      const cX1 = firstPath.cX1 + t * (lastPath.cX1 - firstPath.cX1);\r\n      const cY1 = firstPath.cY1 + t * (lastPath.cY1 - firstPath.cY1);\r\n      const cX2 = firstPath.cX2 + t * (lastPath.cX2 - firstPath.cX2);\r\n      const cY2 = firstPath.cY2 + t * (lastPath.cY2 - firstPath.cY2);\r\n      const cX3 = firstPath.cX3 + t * (lastPath.cX3 - firstPath.cX3);\r\n      const cY3 = firstPath.cY3 + t * (lastPath.cY3 - firstPath.cY3);\r\n      const cX4 = firstPath.cX4 + t * (lastPath.cX4 - firstPath.cX4);\r\n      const cY4 = firstPath.cY4 + t * (lastPath.cY4 - firstPath.cY4);\r\n      const cX5 = firstPath.cX5 + t * (lastPath.cX5 - firstPath.cX5);\r\n      const cY5 = firstPath.cY5 + t * (lastPath.cY5 - firstPath.cY5);\r\n\r\n      const path = `M${mX1} ${mY1}` +\r\n        `C${cX1} ${cY1} ${cX2} ${cY2} ${cX3} ${cY3}` +\r\n        `C${cX4} ${cY4} ${cX5} ${cY5} ${cX5} ${cY5}`;\r\n\r\n      paths.push(path);\r\n\r\n      x1.push('0%');\r\n      x2.push('0%');\r\n      y1.push('0%');\r\n      y2.push('0%');\r\n\r\n      delays.push(Math.random() * 10);\r\n      durations.push(Math.random() * 10 + 10);\r\n    }\r\n\r\n    this.paths.set(paths);\r\n    this.x1.set(x1);\r\n    this.x2.set(x2);\r\n    this.y1.set(y1);\r\n    this.y2.set(y2);\r\n    this.delays.set(delays);\r\n    this.durations.set(durations);\r\n  }\r\n\r\n  initializeIntersectionObserver() {\r\n    let observerTimeout: any;\r\n    this.observer = new IntersectionObserver(([entry]) => {\r\n      clearTimeout(observerTimeout);\r\n      observerTimeout = setTimeout(() => {\r\n        if (entry.isIntersecting) {\r\n          this.inViewport.set(true);\r\n          this.startAnimations();\r\n        } else {\r\n          this.inViewport.set(false);\r\n          this.generatePaths();\r\n        }\r\n      }, 100);\r\n    });\r\n\r\n    // Observe the component\r\n    if (this.observer && this.componentRef.nativeElement) {\r\n      this.observer.observe(this.componentRef.nativeElement);\r\n    }\r\n\r\n    if (this.animationFrameId) {\r\n      cancelAnimationFrame(this.animationFrameId);\r\n    }\r\n  }\r\n\r\n  startAnimations(): void {\r\n    this.paths().forEach((_, index) => {\r\n      const delay = this.delays()[index] * 1000;\r\n      const duration = this.durations()[index] * 1000;\r\n\r\n      setTimeout(() => {\r\n        this.animateGradient(index, duration);\r\n      }, delay);\r\n    });\r\n  }\r\n\r\n  animateGradient(index: number, duration: number): void {\r\n    const startTime = performance.now();\r\n    const randomY2Value = 93 + Math.random() * 8;\r\n\r\n    const animate = (currentTime: number) => {\r\n      if (!this.inViewport()) {\r\n        return;\r\n      }\r\n\r\n      const elapsed = currentTime - startTime;\r\n      const progress = Math.min(elapsed / duration, 1);\r\n\r\n      this.x1.update(a => (a[index] = `${progress*100}%`, a));\r\n      this.x2.update(a => (a[index] = `${progress*95}%`, a));\r\n      this.y1.update(a => (a[index] = `${progress*100}%`, a));\r\n      this.y2.update(a => (a[index] = `${progress*randomY2Value}%`, a));\r\n\r\n      this.updateGradientAttributes(index);\r\n\r\n      if (progress < 1) {\r\n        this.animationFrameId = requestAnimationFrame(animate);\r\n      } else {\r\n        this.restartAnimation(index, duration);\r\n      }\r\n    };\r\n\r\n    this.animationFrameId = requestAnimationFrame(animate);\r\n  }\r\n\r\n  updateGradientAttributes(index: number): void {\r\n    const gradientElement = document.getElementById(`linearGradient-${index}`);\r\n    if (gradientElement) {\r\n      gradientElement.setAttribute('x1', this.x1()[index]);\r\n      gradientElement.setAttribute('x2', this.x2()[index]);\r\n      gradientElement.setAttribute('y1', this.y1()[index]);\r\n      gradientElement.setAttribute('y2', this.y2()[index]);\r\n    }\r\n  }\r\n\r\n  restartAnimation(index: number, duration: number): void {\r\n    setTimeout(() => {\r\n      this.x1.update(a => (a[index] = `0%`, a));\r\n      this.x2.update(a => (a[index] = `0%`, a));\r\n      this.y1.update(a => (a[index] = `0%`, a));\r\n      this.y2.update(a => (a[index] = `0%`, a));\r\n\r\n      this.animateGradient(index, duration);\r\n    }, Math.random() * 10000);\r\n  }\r\n}\r\n","<div class=\"om-background-beams\" #OmBackgroundBeams>\r\n  <div class=\"om-background-beams-background\">\r\n    <div class=\"custom-svg-wrapper\">\r\n      <svg\r\n        class=\"custom-svg\"\r\n        width=\"100%\"\r\n        height=\"100%\"\r\n        viewBox=\"0 0 696 316\"\r\n        fill=\"none\"\r\n        xmlns=\"http://www.w3.org/2000/svg\"\r\n      >\r\n        <path\r\n          d=\"M-380 -189C-380 -189 -312 216 152 343C616 470 684 875 684 875\"\r\n          stroke=\"url(#paint0_radial_242_278)\"\r\n          stroke-opacity=\"0.05\"\r\n          stroke-width=\"0.5\"\r\n        ></path>\r\n\r\n        <!-- Dynamic motion path generation with Angular -->\r\n        @for (path of paths(); track $index) {\r\n          <path\r\n            [attr.d]=\"path\"\r\n            [attr.stroke]=\"pathColor\"\r\n            stroke-opacity=\"1\"\r\n            stroke-width=\"0.5\"\r\n          ></path>\r\n\r\n          <path\r\n            [attr.d]=\"path\"\r\n            [attr.stroke]=\"'url(#linearGradient-' + $index + ')'\"\r\n            stroke-opacity=\"1\"\r\n            stroke-width=\"0.5\"\r\n            [attr.id]=\"'path-' + $index\"\r\n          ></path>\r\n        }\r\n\r\n        <!-- Definitions for gradients -->\r\n        <defs>\r\n          @for (path of paths(); track $index) {\r\n            <linearGradient\r\n              [attr.id]=\"'linearGradient-' + $index\"\r\n              [attr.x1]=\"x1()[$index]\"\r\n              [attr.x2]=\"x2()[$index]\"\r\n              [attr.y1]=\"y1()[$index]\"\r\n              [attr.y2]=\"y2()[$index]\"\r\n            >\r\n              <stop [attr.stop-color]=\"gradientColors()[0]\" stop-opacity=\"0\"></stop>\r\n              <stop [attr.stop-color]=\"gradientColors()[0]\"></stop>\r\n              <stop offset=\"32.5%\" [attr.stop-color]=\"gradientColors()[1]\"></stop>\r\n              <stop offset=\"100%\" [attr.stop-color]=\"gradientColors()[2]\" stop-opacity=\"0\"></stop>\r\n            </linearGradient>\r\n          }\r\n\r\n          <!-- Radial Gradient -->\r\n          <radialGradient\r\n            id=\"paint0_radial_242_278\"\r\n            cx=\"0\"\r\n            cy=\"0\"\r\n            r=\"1\"\r\n            gradientUnits=\"userSpaceOnUse\"\r\n            gradientTransform=\"translate(352 34) rotate(90) scale(555 1560.62)\"\r\n          >\r\n            <stop offset=\"0.0666667\" stop-color=\"#d1d5db\"></stop>\r\n            <stop offset=\"0.243243\" stop-color=\"#d1d5db\"></stop>\r\n            <stop offset=\"0.43594\" stop-color=\"white\" stop-opacity=\"0\"></stop>\r\n          </radialGradient>\r\n        </defs>\r\n      </svg>\r\n    </div>\r\n  </div>\r\n  <ng-content></ng-content>\r\n</div>\r\n","/*\r\n * Public API Surface of ngx-background-beams\r\n */\r\n\r\nexport * from './lib/ngx-background-beams.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}