{"version":3,"file":"ngx-flip-card.mjs","sources":["../../../projects/ngx-flip-card/src/lib/ngx-flip-card/ngx-flip-card.component.ts","../../../projects/ngx-flip-card/src/lib/ngx-flip-card/ngx-flip-card.component.html","../../../projects/ngx-flip-card/src/lib/ngx-tilt-card/ngx-tilt-card.component.ts","../../../projects/ngx-flip-card/src/lib/ngx-tilt-card/ngx-tilt-card.component.html","../../../projects/ngx-flip-card/src/lib/ngx-flip-card.module.ts","../../../projects/ngx-flip-card/src/ngx-flip-card.ts"],"sourcesContent":["import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n  selector: 'ngx-flip-card',\n  templateUrl: './ngx-flip-card.component.html',\n  styleUrls: ['./ngx-flip-card.component.css']\n})\nexport class NgxFlipCardComponent implements OnInit, AfterViewInit {\n\n  private _isBackSide: boolean = false;\n  @Input()\n  set isBackSide(value: boolean) {\n    if(value === this._isBackSide){\n      return;\n    }\n\n    this._isBackSide = value;\n    this.isBackSideChange.emit(this._isBackSide);\n    this.flipInternal();\n  }\n\n  get isBackSide(): boolean {\n    return this._isBackSide;\n  }\n\n  @Output() isBackSideChange = new EventEmitter<boolean>();\n\n  @Input() animate: boolean = true;\n\n  @Input() animationDuration: number = 2500;\n\n  @Output() animationEnd = new EventEmitter<boolean>();\n\n  private canAnimate: boolean = false;\n\n  frontRotation: number = 0;\n  backRotation: number = 180;\n\n  private desiredFrontRotation: number = 0;\n\n  frontZindex: number = 1;\n  backZindex: number = 0;\n\n  @Input() translationZ: number = 2;\n  currentTranslationZ: number = 0;\n\n  @Input() easing: FlipCardEase = 'linear';\n\n  @Input() direction: FlipCardDirection = 'horizontal';\n\n  @Input() flipOnClick: boolean = true;\n\n  private timeLastFrame: number = Date.now();\n  private currentAnimationTime: number = 0;\n  private animationFrameRef: number | undefined;\n  private animating: boolean = false;\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n  ngAfterViewInit(): void {\n    this.canAnimate = true;\n  }\n\n  private flipInternal(){\n    this.rotateAction();\n  }\n\n  clickHandler() {\n    if(this.flipOnClick){\n      this.flipCard();\n    }\n  }\n\n  flipCard() {\n    this.isBackSide = !this._isBackSide;\n  }\n\n  private rotateAction(){\n    if(!this.animate || !this.canAnimate){\n      this.rotateFlat();\n    } else {\n      this.animateRotationStart();\n    }\n  }\n\n  private rotateFlat(){\n    if(this.isBackSide){\n      this.frontRotation = 180;\n      this.backRotation = 0;\n      this.frontZindex = 0;\n      this.backZindex = 1;\n    } else {\n      this.frontRotation = 0;\n      this.backRotation = 180;\n      this.frontZindex = 1;\n      this.backZindex = 0;\n    }\n  }\n\n  private animateRotationStart(){\n    this.desiredFrontRotation = this.isBackSide ? 180 : 0;\n    this.timeLastFrame = Date.now();\n\n    if(this.animating){\n      this.currentAnimationTime = this.calculateReverseEasing();\n    } else {\n      this.currentAnimationTime = 0;\n    }\n\n    if(this.animationFrameRef){\n      cancelAnimationFrame(this.animationFrameRef);\n    }\n    this.animationFrameRef = requestAnimationFrame(this.animateLoop.bind(this));\n    this.animating = true;\n    this.currentTranslationZ = this.translationZ;\n  }\n\n  private animateLoop(){\n    const time = Date.now();\n    const deltatime = time - this.timeLastFrame;\n    this.timeLastFrame = time;\n    this.currentAnimationTime += deltatime;\n    const amount = this.currentAnimationTime / this.animationDuration;\n\n    switch(this.easing){\n      case 'linear':\n        this.frontRotation = this.isBackSide ?\n          Math.min(this.lerp(0, this.desiredFrontRotation, amount), this.desiredFrontRotation) :\n          Math.max(this.lerp(180, this.desiredFrontRotation, amount), this.desiredFrontRotation);\n        break;\n      case 'easeIn':\n        this.frontRotation = this.isBackSide ?\n          Math.min(this.easeIn(0, this.desiredFrontRotation, amount), this.desiredFrontRotation) :\n          Math.max(this.easeIn(180, this.desiredFrontRotation, amount), this.desiredFrontRotation);\n        break;\n      case 'easeOut':\n        this.frontRotation = this.isBackSide ?\n          Math.min(this.easeOut(0, this.desiredFrontRotation, amount), this.desiredFrontRotation) :\n          Math.max(this.easeOut(180, this.desiredFrontRotation, amount), this.desiredFrontRotation);\n        break;\n      case 'easeInOut':\n        this.frontRotation = this.isBackSide ?\n          Math.min(this.easeInOut(0, this.desiredFrontRotation, amount), this.desiredFrontRotation) :\n          Math.max(this.easeInOut(180, this.desiredFrontRotation, amount), this.desiredFrontRotation);\n        break;\n    }\n\n    if(this.currentAnimationTime >= this.animationDuration){\n      this.frontRotation = this.desiredFrontRotation;\n    }\n\n    this.backRotation = this.frontRotation + 180;\n\n    if(this.isBackSide && this.frontRotation >= 90){\n      this.frontZindex = 0;\n      this.backZindex = 1;\n    } else if(!this.isBackSide && this.frontRotation <= 90) {\n      this.frontZindex = 1;\n      this.backZindex = 0;\n    }\n\n    if(this.frontRotation === this.desiredFrontRotation){\n      this.animationEnded();\n      return;\n    }\n\n    this.animationFrameRef = requestAnimationFrame(this.animateLoop.bind(this));\n  }\n\n  private lerp(a: number, b: number, n: number) {\n    return (1 - n) * a + n * b;\n  }\n\n  private easeIn(a: number, b: number, n: number): number {\n    return this.lerp(a, b, n * n);\n  }\n\n  private easeOut(a: number, b: number, n: number): number {\n    return this.lerp(a, b, 1 - (1 - n) * (1 - n));\n  }\n\n  private easeInOut(a: number, b: number, n: number): number {\n    return this.lerp(a, b, n < 0.5 ? 2 * n * n : 1 - Math.pow(-2 * n + 2, 2) / 2);\n  }\n\n  private calculateReverseEasing(): number{\n    if(this.easing === 'linear'){\n      return this.animationDuration - this.currentAnimationTime;\n    }\n\n    const start = this._isBackSide ? 0 : 180;\n    const end = this._isBackSide ? 180 : 0;\n\n    // increment 16 milliseconds to simulate animation at 60FPS\n    for(let i = 0; i < this.animationDuration; i += 16){\n      let inverseValue = 0;\n      switch(this.easing){\n        case 'easeIn':\n          inverseValue = this.easeIn(start, end, i / this.animationDuration);\n          break;\n        case 'easeOut':\n          inverseValue = this.easeOut(start, end, i / this.animationDuration);\n          break;\n        case 'easeInOut':\n          inverseValue = this.easeInOut(start, end, i / this.animationDuration);\n          break;\n      }\n\n      if((this._isBackSide && inverseValue >= this.frontRotation) ||\n            (!this._isBackSide && inverseValue <= this.frontRotation)){\n        return i;\n      }\n    }\n\n    return 0;\n  }\n\n  private animationEnded(){\n    this.animationEnd.emit(this.isBackSide);\n    this.animating = false;\n    this.currentTranslationZ = 0;\n  }\n\n}\n\nexport type FlipCardEase = 'linear' | 'easeIn' | 'easeOut' | 'easeInOut';\n\nexport type FlipCardDirection = 'horizontal' | 'vertical';\n","<div class=\"card-container\" (click)=\"clickHandler()\">\n    <div class=\"card-side\"\n        [ngStyle]=\"{ 'transform': (direction === 'horizontal' ? 'rotateY(' + frontRotation + 'deg)' : 'rotateX(' + frontRotation + 'deg)') +  ' translateZ(' + currentTranslationZ + 'px )', 'z-index': frontZindex }\">\n        <ng-content select=\"[card-front]\"></ng-content>\n    </div>\n    <div class=\"card-side\" \n        [ngStyle]=\"{ 'transform': (direction === 'horizontal' ? 'rotateY(' + backRotation + 'deg)' : 'rotateX(' + backRotation + 'deg)') + ' translateZ(' + currentTranslationZ + 'px )', 'z-index': backZindex }\">\n        <ng-content select=\"[card-back]\"></ng-content>\n    </div>\n</div>\n","import { Component, ElementRef, HostListener, Input, OnInit, ViewChild } from '@angular/core';\n\n@Component({\n  selector: 'ngx-tilt-card',\n  templateUrl: './ngx-tilt-card.component.html',\n  styleUrls: ['./ngx-tilt-card.component.css']\n})\nexport class NgxTiltCardComponent implements OnInit {\n\n  @HostListener('mouseout') onMouseOut() {\n    this.xRot = 0;\n    this.yRot = 0;\n  }\n\n  @HostListener('mousemove', ['$event']) onMouseMove(event: MouseEvent) {\n    let index = event.offsetY / this.tiltContentRef.nativeElement.offsetHeight;\n    index = Math.floor(index * 5);\n    index = index > this.xRotationMatrix.length -1 ? this.xRotationMatrix.length - 1 : index;\n    if(index < this.xRotationMatrix.length && this.xRot !== this.xRotationMatrix[index]){\n      this.xRot = this.xRotationMatrix[index];\n    } else if(index >= this.xRotationMatrix.length){\n      this.xRot = 0;\n      this.yRot = 0;\n      return;\n    }\n\n    index = event.offsetX / this.tiltContentRef.nativeElement.offsetWidth;\n    index = Math.floor(index * 5);\n    if(index < this.yRotationMatrix.length && this.yRot !== this.yRotationMatrix[index]){\n      this.yRot = this.yRotationMatrix[index];\n    } else if(index >= this.yRotationMatrix.length){\n      this.xRot = 0;\n      this.yRot = 0;\n    }\n  }\n\n  @ViewChild('tilt') tiltContentRef!: ElementRef;\n\n  xRot: number = 0;\n  yRot: number = 0;\n\n  @Input() rotationDegreesX: number = 5;\n  @Input() rotationDegreesY: number = 5;\n\n  private xRotationMatrix: number[] = [];\n  private yRotationMatrix: number[] = [];\n\n  constructor() { }\n\n  ngOnInit(): void {\n    this.xRotationMatrix = [\n      this.rotationDegreesX,\n      this.rotationDegreesX / 2,\n      0,\n      (this.rotationDegreesX * -1) / 2,\n      this.rotationDegreesX * -1\n    ];\n\n    this.yRotationMatrix = [\n      this.rotationDegreesY * -1,\n      (this.rotationDegreesY * -1) / 2,\n      0,\n      this.rotationDegreesY / 2,\n      this.rotationDegreesY\n    ];\n  }\n}\n","<div class=\"tilt-container\">\n    <div #tilt class=\"tilt-content\" [ngStyle]=\"{'transform': 'rotateX(' + xRot + 'deg) rotateY(' + yRot + 'deg)'}\">\n        <ng-content></ng-content>\n    </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgxFlipCardComponent } from './ngx-flip-card/ngx-flip-card.component';\nimport { NgxTiltCardComponent } from './ngx-tilt-card/ngx-tilt-card.component';\n\n\n\n@NgModule({\n  declarations: [\n    NgxFlipCardComponent,\n    NgxTiltCardComponent\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    NgxFlipCardComponent,\n    NgxTiltCardComponent\n  ]\n})\nexport class NgxFlipCardModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}