{"version":3,"file":"obliczeniowo-elementary-animations.mjs","sources":["../../../../projects/components/animations/animations.ts","../../../../projects/components/animations/components/fade-in-out/fade-in-out.component.ts","../../../../projects/components/animations/components/fade-in-out/fade-in-out.component.html","../../../../projects/components/animations/components/scroll-animation/scroll-animation.component.ts","../../../../projects/components/animations/components/scroll-animation/scroll-animation.component.html","../../../../projects/components/animations/components/type-text/type-text.component.ts","../../../../projects/components/animations/components/type-text/type-text.component.html","../../../../projects/components/animations/animations.module.ts","../../../../projects/components/animations/classes/source-to-target-animation.ts","../../../../projects/components/animations/obliczeniowo-elementary-animations.ts"],"sourcesContent":["import { animate, state, style, transition, trigger } from '@angular/animations';\n\nexport class Animations {\n  /**\n   * Rotate animation by 180 degreases\n   *\n   * in HTML use:\n   * <div [@openClose]=\"isOpen ? 'open' : 'closed'\">\n   * to provide animation\n   */\n  static rotate180deg = trigger('openClose', [\n    state('open', style({\n      transform: 'rotate(180deg)'\n    })),\n    state('closed', style({\n      transform: 'rotate(0deg)'\n    })),\n    transition('open => closed', [\n      animate('0.25s')\n    ]),\n    transition('closed => open', [\n      animate('0.25s')\n    ]),\n  ]);\n\n  /**\n   * Fade in/out animation\n   *\n   * in HTML use:\n   * <div [@fadeInOut]=\"show ? 'in' : 'out'\">\n   */\n  static fadeInOut(inSeconds: number = 0.5, outSeconds: number = 0.5) {\n    return trigger('fadeInOut', [\n      state('in', style({\n        opacity: 1\n      })),\n      state('out', style({\n        opacity: 0\n      })),\n      transition('in => out', [\n        animate(`${outSeconds}s`)\n      ]),\n      transition('out => in', [\n        animate(`${inSeconds}s`)\n      ]),\n    ]);\n  }\n}\n","import { Component, input } from '@angular/core';\nimport { Animations } from '../../animations';\n\n@Component({\n    selector: 'obl-fade-in-out',\n    templateUrl: './fade-in-out.component.html',\n    styleUrls: ['./fade-in-out.component.scss'],\n    animations: [\n        Animations.fadeInOut(1, 1)\n    ],\n    standalone: false\n})\nexport class FadeInOutComponent {\n  state = input<boolean>(true);\n}\n","<div class=\"fade\" [@fadeInOut]=\"state() ? 'in' : 'out'\">\n  <ng-content select=\"[in]\"></ng-content>\n</div>\n<div class=\"fade\" [@fadeInOut]=\"state() ? 'out' : 'in'\">\n  <ng-content select=\"[out]\"></ng-content>\n</div>\n","/* eslint-disable @typescript-eslint/no-unsafe-argument */\nimport { Component, ElementRef, input, ViewChild } from '@angular/core';\n\nconst animations: {\n  [key: string]: (\n    root: HTMLElement,\n    _: HTMLElement,\n    intersectionRatio: number,\n    entry: IntersectionObserverEntry\n  ) => void\n} = {\n  opacity: (\n    root: HTMLElement,\n    _: HTMLElement,\n    intersectionRatio,\n    entry: IntersectionObserverEntry\n  ) => {\n    root.style.opacity = intersectionRatio.toString();\n  },\n  scale: (\n    _: HTMLElement,\n    animationContainer: HTMLElement,\n    intersectionRatio,\n    entry: IntersectionObserverEntry\n  ) => {\n    animationContainer.style.transform = `scale(${\n      50 * intersectionRatio + 50\n    }%)`;\n  },\n  slideLeft: (\n    _: HTMLElement,\n    animationContainer: HTMLElement,\n    intersectionRatio,\n    entry: IntersectionObserverEntry\n  ) => {\n    animationContainer.style.transform = `translate(${\n      -100 + 100 * intersectionRatio\n    }%)`;\n  },\n  slideRight: (\n    _: HTMLElement,\n    animationContainer: HTMLElement,\n    intersectionRatio,\n    entry: IntersectionObserverEntry\n  ) => {\n    animationContainer.style.transform = `translate(${\n      100 - 100 * intersectionRatio\n    }%)`;\n  },\n};\n\nconst threshold = new Array(100).fill(0).map((_, index) => index / 100);\n\n@Component({\n    selector: 'obl-scroll-animation',\n    templateUrl: './scroll-animation.component.html',\n    styleUrl: './scroll-animation.component.scss',\n    standalone: false\n})\nexport class ScrollAnimationComponent {\n  protected options = {\n    root: null,\n    rootMargin: '0px',\n    threshold,\n  };\n\n  animations = input<string[]>([]);\n\n  @ViewChild('container') container!: ElementRef<HTMLDivElement>;\n\n  protected observer!: IntersectionObserver;\n\n  constructor(private readonly root: ElementRef) {}\n\n  ngAfterViewInit(): void {\n    const root = this.root.nativeElement;\n    this.observer = new IntersectionObserver(\n      (entries: IntersectionObserverEntry[], _: IntersectionObserver) => {\n        entries.forEach((entry) => {\n          if (this.animations().length) {\n            this.animations().forEach((animation: string) => {\n              const cb = animations[animation];\n              if (animations[animation]) {\n                cb(\n                  root,\n                  this.container.nativeElement,\n                  entry.boundingClientRect.height < window.innerHeight\n                    ? entry.intersectionRatio\n                    : 1,\n                  entry\n                );\n              }\n            });\n          }\n        });\n      },\n      this.options\n    );\n    this.observer.observe(root);\n  }\n\n  ngOnDestroy(): void {\n    this.observer.disconnect();\n  }\n}\n","<div #container>\n  <ng-content></ng-content>\n</div>","import { Component, effect, input, signal } from '@angular/core';\n\n@Component({\n    selector: 'obl-type-text',\n    templateUrl: './type-text.component.html',\n    styleUrl: './type-text.component.scss',\n    standalone: false\n})\nexport class TypeTextComponent {\n  text = input.required<string>();\n\n  interval = input<number>(10);\n\n  animText = signal<string>('');\n\n  private time: any;\n\n  constructor() {\n    effect(() => {\n      this.text();\n      this.animText.set('');\n      const clear = (clear = true) => {\n        clearInterval(this.time);\n        if (clear) { this.animText.set(''); }\n        this.time = undefined;\n      }\n\n      if (this.time) {\n        clear();\n      }\n\n      this.time = setInterval(() => {\n        if (this.text().length > this.animText().length) {\n          this.animText.set(this.text().substring(0, this.animText().length + 1));\n        } else {\n          clear(false);\n        }\n      }, this.interval());\n    },\n    {\n      allowSignalWrites: true\n    })\n  }\n}\n","{{ animText() }}{{ animText().length !== text().length ? '_' : '' }}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FadeInOutComponent } from './components/fade-in-out/fade-in-out.component';\nimport { ScrollAnimationComponent } from './components/scroll-animation/scroll-animation.component';\nimport { TypeTextComponent } from './components/type-text/type-text.component';\n\n@NgModule({\n  declarations: [\n    FadeInOutComponent,\n    ScrollAnimationComponent,\n    TypeTextComponent\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    FadeInOutComponent,\n    ScrollAnimationComponent,\n    TypeTextComponent\n  ]\n})\nexport class AnimationsModule { }\n","import { Point2D } from '@obliczeniowo/elementary/classes';\nimport { keysValues } from '@obliczeniowo/elementary/objects';\n\nexport class OblSourceToTargetAnimation {\n  protected start!: Point2D;\n  protected end!: Point2D;\n\n  protected element: HTMLElement = document.createElement('div');\n\n  protected timer: any;\n  protected count = 0;\n  protected interval = 10;\n  protected maxRounds = 80;\n\n  constructor(\n    target: HTMLElement | any,\n    destination: HTMLElement | any,\n    message: string,\n    options?: {\n      interval?: number,\n      maxRounds?: number,\n      styles?: { [name: string]: string }\n    }\n  ) {\n    const r = target.getBoundingClientRect();\n    const r2 = destination.getBoundingClientRect();\n    this.start = new Point2D(r.x, r.y);\n    this.end = new Point2D(r2.x, r2.y);\n    this.element.style.top = this.start.y + 'px';\n    this.element.style.left = this.start.x + 'px';\n    this.element.style.backgroundColor = 'white';\n    this.element.style.padding = '5px';\n\n    keysValues(options?.styles || {}).forEach(\n      ([key, value]) => (this.element.style[key as any] = value)\n    );\n\n    this.element.style.position = 'absolute';\n    this.element.innerText = message;\n    this.interval = options?.interval || 10;\n    this.maxRounds = options?.maxRounds || 80;\n  }\n\n  startAnim() {\n    document.body.appendChild(this.element);\n    const { maxRounds, interval } = this;\n    this.timer = setInterval(() => {\n      this.count++;\n      if (this.count > maxRounds) {\n        this.remove();\n      } else {\n        const pos = this.end\n          .subtract(this.start)\n          .multiply((1 / maxRounds) * this.count)\n          .add(this.start);\n\n        this.element.style.opacity =\n          ((maxRounds - this.count) * 0.5) / maxRounds + 0.5 + '';\n\n        this.element.style.top = pos.y + 'px';\n        this.element.style.left = pos.x + 'px';\n      }\n    }, interval);\n  }\n\n  remove() {\n    this.count = 0;\n    clearInterval(this.timer);\n    this.element.style.top = this.start.y + 'px';\n    this.element.style.left = this.start.x + 'px';\n    document.body.removeChild(this.element);\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}