{"version":3,"file":"swaminathan_mathivanan-flipbook.mjs","sources":["../../../projects/flipbook-lib/src/lib/interfaces.ts","../../../projects/flipbook-lib/src/lib/flipbook.service.ts","../../../projects/flipbook-lib/src/lib/page/page.component.ts","../../../projects/flipbook-lib/src/lib/page/page.component.html","../../../projects/flipbook-lib/src/lib/pipes/reverse.pipe.ts","../../../projects/flipbook-lib/src/lib/book/book.component.ts","../../../projects/flipbook-lib/src/lib/book/book.component.html","../../../projects/flipbook-lib/src/lib/flipbook.module.ts","../../../projects/flipbook-lib/src/public-api.ts","../../../projects/flipbook-lib/src/swaminathan_mathivanan-flipbook.ts"],"sourcesContent":["import {Type} from '@angular/core';\n\nexport interface Cover {\n  front: BookPageSide;\n  back: BookPageSide;\n}\n\nexport enum PageType {\n  Single,\n  Double\n}\n\nexport interface BookPageSide {\n  imageUrl: string;\n  backgroundColor?: string;\n  opacity?: number;\n  isComponent?: boolean;\n  component?: Type<any>;\n}\n\nexport interface Book {\n  width: number;\n  height: number;\n  zoom: number;\n  cover?: Cover;\n  pages: BookPageSide[];\n  pageWidth?: number;\n  pageHeight?: number;\n  startPageType?: PageType;\n  endPageType?: PageType;\n}\n\nexport interface Page {\n  index: number;\n  front: PageSide;\n  back: PageSide;\n  rotation: number;\n  lock?: boolean;\n}\n\nexport interface PageSide {\n  imageUrl: string;\n  backgroundColor?: string;\n  isCover?: boolean;\n  width?: number;\n  height?: number;\n  opacity?: number;\n  isComponent?: boolean;\n  component?: Type<any>;\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Book } from './interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class FlipbookService {\n\n  prev = new Subject<void>();\n  play = new Subject<void>();\n  pause = new Subject<void>();\n  next = new Subject<void>();\n  goTo = new Subject<number>();\n\n  currentPage = new Subject<number>();\n\n  book: Book;\n\n  constructor() { }\n\n}\n","import { Component, Input, HostBinding } from '@angular/core';\nimport { Page } from '../interfaces';\n\n@Component({\n  selector: 'flipbook-page',\n  templateUrl: './page.component.html',\n  styleUrls: ['./page.component.scss']\n})\nexport class PageComponent {\n\n  @Input() page: Page;\n  @Input() width: number;\n  @Input() height: number;\n  @Input() rotation: number;\n  @Input() zoom: number;\n\n  @HostBinding('style.left.px')\n  get hostLeft() {\n    return this.width * 1;\n  }\n\n  @HostBinding('style.transform')\n  get hostRotation() {\n    return `rotateY(${this.page.rotation}deg)`;\n  }\n\n  constructor() {\n    this.zoom = 1;\n  }\n\n}\n","<div class=\"page\" *ngIf=\"!page.front?.isComponent\"\n  [class.cover]=\"page.front?.isCover\"\n  [style.width.px]=\"width * 1\"\n  [style.height.px]=\"height * 1\"\n  [style.z-index]=\"rotation > -90 ? 1 : 0\"\n  [style.background-image]=\"page.front ? 'url(' + page.front.imageUrl + ')' : null\"\n  [style.background-size]=\"page.front?.width * 1 + 'px ' + page.front?.height * 1 + 'px'\"\n  [style.background-color]=\"page.front?.backgroundColor\"\n  [style.opacity.%]=\"page.front?.opacity * 100\">\n</div>\n<!--Front page Component viewer-->\n<div class=\"page\"\n  [class.cover]=\"page.front?.isCover\"\n  [style.width.px]=\"width * 1\"\n  [style.height.px]=\"height * 1\"\n  [style.z-index]=\"rotation > -90 ? 1 : 0\"\n  [style.background-size]=\"page.front?.width * 1 + 'px ' + page.front?.height * 1 + 'px'\"\n  [style.background-color]=\"page.front?.backgroundColor\"\n  [style.opacity.%]=\"page.front?.opacity * 100\" [style.overflow]=\"'auto'\" >\n  <ng-container *ngComponentOutlet=\"page.front?.component\"></ng-container>\n</div>\n<!--[style.background-image]=\"page.front ? 'url(' + page.front.imageUrl + ')' : null\"-->\n\n<div class=\"page back\" *ngIf=\"!page.back?.isComponent\"\n  [class.cover]=\"page.back?.isCover\"\n  [style.width.px]=\"width * 1\"\n  [style.height.px]=\"height * 1\"\n  [style.z-index]=\"rotation < -90 ? 1 : 0\"\n  [style.background-image]=\"page.back ? 'url(' + page.back.imageUrl + ')' : null\"\n  [style.background-size]=\"page.back?.width * 1 + 'px ' + page.back?.height * 1 + 'px'\"\n  [style.background-color]=\"page.back?.backgroundColor\"\n  [style.opacity.%]=\"page.back?.opacity * 100\"\n  [style.overflow]=\"'auto'\"\n>\n</div>\n<!--Back page Component Viewer-->\n<div class=\"page back\" *ngIf=\"page.back?.isComponent\"\n  [class.cover]=\"page.back?.isCover\"\n  [style.width.px]=\"width * 1\"\n  [style.height.px]=\"height * 1\"\n  [style.z-index]=\"rotation < -90 ? 1 : 0\"\n  [style.background-size]=\"page.back?.width * 1 + 'px ' + page.back?.height * 1 + 'px'\"\n  [style.background-color]=\"page.back?.backgroundColor\"\n  [style.opacity.%]=\"page.back?.opacity * 100\" [style.overflow]=\"'auto'\">\n  <ng-container *ngComponentOutlet=\"page.back?.component\"></ng-container>\n</div>\n<!--[style.background-image]=\"page.back ? 'url(' + page.back.imageUrl + ')' : null\"-->\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'reverse', pure: false })\nexport class ReversePipe implements PipeTransform {\n  transform(values) {\n    if (values) {\n      return values.slice().reverse();\n    }\n  }\n}\n","import { Power2, TimelineLite, TweenLite } from 'gsap';\nimport { fromEvent, Subject } from 'rxjs';\nimport {last, takeUntil, tap} from 'rxjs/operators';\n\nimport {\n  ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostBinding, Input, OnDestroy, OnInit\n} from '@angular/core';\n\nimport { Book, BookPageSide, Page, PageType } from '../interfaces';\nimport { FlipbookService } from '../flipbook.service';\n\nconst DEFAULT_BACKGROUND_COLOR = '#fff';\n\n@Component({\n  // tslint:disable-next-line:component-selector\n  selector: 'flipbook',\n  templateUrl: './book.component.html',\n  styleUrls: ['./book.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BookComponent implements OnInit, OnDestroy {\n\n  @Input() model: Book;\n  @Input() startAt: number;\n\n  @HostBinding('style.width.px')\n  get hostWidth(): any {\n    this.cdr.detectChanges();\n    return this.model.width * 1;\n  }\n\n  @HostBinding('style.height.px')\n  get hostHeight(): any {\n    return this.model.height * 1;\n  }\n\n  @HostBinding('style.perspective.px')\n  get hostPerspective(): any {\n    return this.model.width * 1 * 2;\n  }\n\n  currentIndex = 0;\n  pages: Page[];\n\n  private destroyed = new Subject<void>();\n  private flipTimeLine: TimelineLite;\n  private navigationQueue: number[] = [];\n\n  private render = () => { this.cdr.detectChanges(); };\n\n  private sortBook = (index: number) => {\n    this.navigationQueue.shift();\n\n    if (this.flipTimeLine && this.navigationQueue.length > 0) { return; }\n\n    const page = this.pages.find(p => p.index === index);\n    this.currentIndex = page\n      ? page.rotation < -90 ? page.index : page.index - 1\n      : index;\n\n    this.pages.sort((a, b) => {\n      const diffa = Math.abs(a.index - this.currentIndex) + (a.rotation === -180 ? 1 : 0);\n      const diffb = Math.abs(b.index - this.currentIndex);\n\n      return diffa - diffb;\n    });\n\n    this.render();\n    this.service.currentPage.next(this.currentIndex + 1);\n  }\n\n  private setPageAtTop = (page) => {\n    this.pages.unshift(this.pages.splice(this.pages.indexOf(page), 1)[0]);\n  }\n\n\n  constructor(private service: FlipbookService, private cdr: ChangeDetectorRef, private elr: ElementRef) {\n    cdr.detach();\n\n    service.prev.pipe(takeUntil(this.destroyed)).subscribe(() => this.navigate(-1));\n    service.next.pipe(takeUntil(this.destroyed)).subscribe(() => this.navigate(1));\n    service.play.pipe(takeUntil(this.destroyed)).subscribe(() => this.play());\n    service.pause.pipe(takeUntil(this.destroyed)).subscribe(() => this.pause());\n    service.goTo.pipe(takeUntil(this.destroyed)).subscribe(index => this.goTo(index));\n  }\n\n  ngOnInit(): void {\n    // TODO: Implement startPageType / endPageType\n    this.pages = [];\n\n    const pages = this.model.pages.slice();\n    const hasCover = this.model && this.model.cover !== undefined;\n    const pageWidth = this.model.pageWidth || this.model.width / 2;\n    const pageHeight = this.model.pageHeight || this.model.height;\n\n    if (this.model && pages.length > 1) {\n      if (!hasCover && this.model.startPageType === PageType.Single) {\n        // add first white page block\n        this.pages.push({\n          index: this.pages.length,\n          lock: true,\n          front: {\n            imageUrl: '',\n            width: pageWidth,\n            height: pageHeight,\n            backgroundColor: DEFAULT_BACKGROUND_COLOR\n          },\n          back: {\n            imageUrl: '',\n            width: pageWidth,\n            height: pageHeight,\n            backgroundColor: DEFAULT_BACKGROUND_COLOR\n          },\n          rotation: -180\n        });\n      } else {\n        const frontCover: Page = {\n          index: this.pages.length,\n          lock: !hasCover,\n          front: hasCover ? {\n            imageUrl: this.model.cover.front.imageUrl,\n            isCover: true,\n            width: this.model.width / 2,\n            height: this.model.height,\n            backgroundColor: this.model.cover.front.backgroundColor,\n            opacity: this.model.cover.front.opacity,\n          } : undefined,\n          back: {\n            imageUrl: '',\n            backgroundColor: hasCover ? this.model.cover.front.backgroundColor : DEFAULT_BACKGROUND_COLOR,\n            opacity: hasCover ? this.model.cover.front.opacity : 1,\n            width: pageWidth,\n            height: pageHeight,\n          },\n          rotation: hasCover ? 0 : -180\n        };\n\n        if (this.model.startPageType !== PageType.Single) {\n          const firstPage: BookPageSide = pages.shift();\n          frontCover.back.imageUrl = firstPage.imageUrl;\n          frontCover.back.backgroundColor = firstPage.backgroundColor;\n          frontCover.back.opacity = firstPage.opacity;\n        }\n        this.pages.push(frontCover);\n      }\n\n      while (pages.length > 1) {\n        const frontPage: BookPageSide = pages.shift();\n        const backPage: BookPageSide = pages.shift();\n        this.pages.push({\n          index: this.pages.length,\n          front: {\n            imageUrl: frontPage.imageUrl,\n            width: pageWidth,\n            height: pageHeight,\n            backgroundColor: frontPage.backgroundColor,\n            opacity: frontPage.opacity,\n            isComponent: frontPage.isComponent,\n            component: frontPage.component,\n          },\n          back: {\n            imageUrl: backPage.imageUrl,\n            width: pageWidth,\n            height: pageHeight,\n            backgroundColor: backPage.backgroundColor,\n            opacity: backPage.opacity,\n            isComponent: backPage.isComponent,\n            component: backPage.component,\n          },\n          rotation: 0\n        });\n      }\n\n      if (!hasCover && this.model.endPageType === PageType.Single) {\n        // add last white page block\n        this.pages.push({\n          index: this.pages.length,\n          lock: true,\n          front: {\n            imageUrl: '',\n            width: pageWidth,\n            height: pageHeight,\n            backgroundColor: DEFAULT_BACKGROUND_COLOR\n          },\n          back: {\n            imageUrl: '',\n            width: pageWidth,\n            height: pageHeight,\n            backgroundColor: DEFAULT_BACKGROUND_COLOR\n          },\n          rotation: 0\n        });\n      } else {\n        const backCover: Page = {\n          index: this.pages.length,\n          lock: !hasCover,\n          front: {\n            imageUrl: '',\n            backgroundColor: hasCover ? this.model.cover.back.backgroundColor : DEFAULT_BACKGROUND_COLOR,\n            opacity: hasCover ? this.model.cover.back.opacity : 1,\n            width: pageWidth,\n            height: pageHeight,\n          },\n          back: this.model.cover ? {\n            imageUrl: this.model.cover.back.imageUrl,\n            isCover: true,\n            width: this.model.width / 2,\n            height: this.model.height,\n            backgroundColor: this.model.cover.back.backgroundColor,\n            opacity: this.model.cover.back.opacity,\n          } : undefined,\n          rotation: 0\n        };\n\n        if (this.model.startPageType !== PageType.Single && pages.length) {\n          const lastPage: BookPageSide = pages.shift();\n          backCover.front.imageUrl = lastPage.imageUrl;\n          backCover.front.backgroundColor = lastPage.backgroundColor;\n          backCover.front.opacity = lastPage.opacity;\n          backCover.front.isComponent = lastPage.isComponent;\n          backCover.front.component = lastPage.component;\n        }\n\n        this.pages.push(backCover);\n      }\n    }\n\n    if (this.startAt !== undefined && this.startAt !== this.currentIndex) {\n      this.goTo(this.startAt);\n    } else {\n      this.sortBook(this.currentIndex - 1);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroyed.next();\n  }\n\n  update(): void {\n    this.render();\n  }\n\n  onPageDown(event: MouseEvent, page: Page): void {\n    if (page.front.isComponent || page.back.isComponent) { return; }\n    if (TweenLite.getTweensOf(page, true).length > 0) { return; }\n\n    if (page.lock) {\n      this.flipTimeLine = new TimelineLite({ autoRemoveChildren: true });\n      this.flipTimeLine.add(TweenLite.to(page, 0.3,\n        {\n          rotation: page.rotation < -90 ? -175 : -5,\n          ease: Power2.easeOut,\n          onUpdate: this.render\n        })\n      );\n      this.flipTimeLine.add(TweenLite.to(page, 0.2,\n        {\n          rotation: page.rotation < -90 ? -180 : 0,\n          ease: Power2.easeOut,\n          onUpdate: this.render\n        })\n      );\n      return;\n    }\n\n    const startX = event.pageX;\n    const startY = event.pageY;\n    let hasMoved = false;\n\n    const mouseUpEvt = fromEvent<MouseEvent>(document, 'mouseup')\n      .pipe(\n        tap(() => {\n          this.flipTimeLine = new TimelineLite({ autoRemoveChildren: true });\n\n          if (!hasMoved) {\n            this.navigationQueue.push(page.rotation < -90 ? page.index - 1 : page.index);\n            this.flipTimeLine.add(TweenLite.to(page, 1,\n              {\n                rotation: page.rotation < -90 ? 0 : -180,\n                ease: Power2.easeOut,\n                onStart: this.setPageAtTop,\n                onStartParams: [page],\n                onUpdate: this.render,\n                onComplete: this.sortBook,\n                onCompleteParams: [page.rotation < -90 ? page.index - 1 : page.index]\n              }));\n          } else {\n            this.navigationQueue.push(page.rotation < -90 ? page.index : page.index - 1);\n            this.flipTimeLine.add(TweenLite.to(page, 1,\n              {\n                rotation: page.rotation < -90 ? -180 : 0,\n                ease: Power2.easeOut,\n                onUpdate: this.render,\n                onComplete: this.sortBook,\n                onCompleteParams: [page.rotation < -90 ? page.index : page.index - 1]\n              }));\n          }\n        })\n      );\n\n    fromEvent<MouseEvent>(document, 'mousemove')\n      .pipe(\n        takeUntil(mouseUpEvt)\n      )\n      .subscribe(movEvt => {\n        const movEvent = movEvt as MouseEvent;\n        const bookBounds = this.elr.nativeElement.getBoundingClientRect();\n\n        hasMoved = startX !== movEvent.pageX || startY !== movEvent.pageY;\n\n        this.setPageAtTop(page);\n\n        if (movEvent.pageX < bookBounds.left) {\n          page.rotation = -180;\n        } else if (movEvent.pageX > bookBounds.left + bookBounds.width) {\n          page.rotation = 0;\n        } else {\n          page.rotation = -180 + ((movEvent.pageX - bookBounds.left) / bookBounds.width) * 180;\n        }\n\n        this.render();\n      });\n  }\n\n  onPagePan(event, page): void {\n    if (TweenLite.getTweensOf(page, true).length > 0) { return; }\n\n    if (page.lock) {\n      this.flipTimeLine = new TimelineLite();\n      this.flipTimeLine.add(TweenLite.to(page, 0.3,\n        {\n          rotation: page.rotation < -90 ? -175 : -5,\n          ease: Power2.easeOut,\n          onUpdate: this.render\n        })\n      );\n      this.flipTimeLine.add(TweenLite.to(page, 0.2,\n        {\n          rotation: page.rotation < -90 ? -180 : 0,\n          ease: Power2.easeOut,\n          onUpdate: this.render\n        })\n      );\n\n      return;\n    }\n\n    this.setPageAtTop(page);\n\n    const bookBounds = this.elr.nativeElement.getBoundingClientRect();\n\n    if (event.center.x < bookBounds.left) {\n      page.rotation = -180;\n    } else if (event.center.x > bookBounds.left + bookBounds.width) {\n      page.rotation = 0;\n    } else {\n      page.rotation = -180 + ((event.center.x - bookBounds.left) / bookBounds.width) * 180;\n    }\n\n    this.render();\n  }\n\n  onPagePanEnd(event, page): void {\n    this.flipTimeLine = new TimelineLite();\n    this.flipTimeLine.add(TweenLite.to(page, 1,\n      {\n        rotation: page.rotation < -90 ? -180 : 0,\n        ease: Power2.easeOut,\n        onUpdate: this.render,\n        onComplete: this.sortBook,\n        onCompleteParams: [page.rotation < -90 ? page.index : page.index - 1]\n      }));\n  }\n\n  onSwipe(event, page): void {\n    if (page.lock) { return; }\n\n    if (TweenLite.getTweensOf(page, true).length > 0) {\n      TweenLite.getTweensOf(page, true)[0].kill();\n    }\n\n    const direction = event.deltaX > 0 ? -1 : 1;\n\n    this.flipTimeLine.add(TweenLite.to(page, 1,\n      {\n        rotation: direction === 1 ? -180 : 0,\n        ease: Power2.easeOut,\n        onUpdate: this.render,\n        onComplete: this.sortBook,\n        onCompleteParams: [this.currentIndex + direction]\n      }));\n  }\n\n  navigate(direction: number): void {\n    const lastNavigationIndex = this.navigationQueue.length\n      ? this.navigationQueue[this.navigationQueue.length - 1]\n      : this.currentIndex;\n\n    const pageIndex = direction === 1 ? lastNavigationIndex + 1 : lastNavigationIndex;\n    const page = this.pages.find(p => p.index === pageIndex);\n\n    if (page === undefined || page.lock) { return; }\n\n    if (direction === 1 && page.rotation === -180) { return; }\n    if (direction === -1 && page.rotation === 0) { return; }\n\n    this.navigationQueue.push(lastNavigationIndex + direction);\n\n    this.flipTimeLine = new TimelineLite({ autoRemoveChildren: true });\n    this.flipTimeLine.add(TweenLite.to(page, 1,\n      {\n        rotation: direction === 1 ? -180 : 0,\n        ease: Power2.easeOut,\n        onStart: this.setPageAtTop,\n        onStartParams: [page],\n        onUpdate: this.render,\n        onComplete: lastNavigationIndex + direction < this.pages.length ? this.sortBook : void 0,\n        onCompleteParams: [lastNavigationIndex + direction]\n      }\n    ));\n  }\n\n  goTo(index: number): void {\n    if (this.currentIndex === index - 1) { return; }\n\n    for (let i = 0; i < this.pages.length; i++) {\n      const page = this.pages.find(p => p.index === i);\n      page.rotation = i < index ? -180 : 0;\n      if (i <= index) {\n        this.setPageAtTop(page);\n      }\n    }\n\n    this.sortBook(index - 1);\n  }\n\n  play(): void {\n    if (this.flipTimeLine && this.flipTimeLine.totalDuration() > this.flipTimeLine.time()) {\n      this.flipTimeLine.resume(null, false);\n    } else {\n      this.flipTimeLine = new TimelineLite({ autoRemoveChildren: true });\n\n      this.pages.forEach((page, index) => {\n        if (page.rotation === 0 && !page.lock) {\n          this.flipTimeLine.add(TweenLite.to(page, 1,\n            {\n              delay: index - (page.rotation < -90 ? 0 : 1) === this.currentIndex ? 0 : 2.5,\n              rotation: -180,\n              ease: Power2.easeOut,\n              onStart: this.setPageAtTop,\n              onStartParams: [page],\n              onUpdate: this.render,\n              onComplete: page.index + 1 < this.pages.length ? this.sortBook : void 0,\n              onCompleteParams: [page.index + 1]\n            }\n          ));\n        }\n      });\n    }\n  }\n\n  pause(): void {\n    if (this.flipTimeLine) {\n      const tweens = this.flipTimeLine.getChildren(true, true, true, this.flipTimeLine.time());\n      if (tweens.length > 0) {\n        this.flipTimeLine.addPause(tweens[0].startTime());\n      }\n    }\n  }\n\n}\n","<flipbook-page *ngFor=\"let page of pages | reverse\"\n               [page]=\"page\"\n               [width]=\"model.width / 2\"\n               [height]=\"model.height\"\n               [zoom]=\"model.zoom\"\n               [rotation]=\"page.rotation\"\n               (mousedown)=\"onPageDown($event, page)\"\n               (pan)=\"onPagePan($event, page)\"\n               (panend)=\"onPagePanEnd($event, page)\"\n               (swipe)=\"onSwipe($event, page)\">\n</flipbook-page>\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { BookComponent } from './book/book.component';\nimport { PageComponent } from './page/page.component';\nimport { FlipbookService } from './flipbook.service';\nimport { ReversePipe } from './pipes/reverse.pipe';\nimport { HammerModule } from '@angular/platform-browser';\n\nimport 'hammerjs';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    HammerModule,\n  ],\n  declarations: [\n    BookComponent,\n    PageComponent,\n    ReversePipe,\n  ],\n  exports: [\n    BookComponent,\n  ]\n})\nexport class FlipBookModule {\n  static forChild(): ModuleWithProviders<FlipBookModule> {\n    return {\n      ngModule: FlipBookModule,\n      providers: [\n        FlipbookService,\n      ]\n    };\n  }\n}\n","/*\n * Public API Surface of flipbook\n */\n\nexport * from './lib/interfaces';\nexport * from './lib/book/book.component';\nexport * from './lib/flipbook.service';\nexport * from './lib/flipbook.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FlipbookService","i2.PageComponent","i3","i4.ReversePipe"],"mappings":"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"}