UNPKG

@labsforge/flipbook

Version:

A simple angular flipbook component written in typescript

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