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