{"version":3,"file":"twogate-ngx-photo-gallery.mjs","sources":["../../../projects/core/src/lib/components/lightbox/lightbox.component.ts","../../../projects/core/src/lib/components/lightbox/lightbox.component.html","../../../projects/core/src/lib/interfaces/config.ts","../../../projects/core/src/lib/services/lightbox.service.ts","../../../projects/core/src/lib/directives/photo-gallery-group.directive.ts","../../../projects/core/src/lib/directives/photo-gallery.directive.ts","../../../projects/core/src/lib/photo-gallery.module.ts","../../../projects/core/src/public-api.ts","../../../projects/core/src/twogate-ngx-photo-gallery.ts"],"sourcesContent":["import { Component, ViewChild, ElementRef, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n  selector: 'photo-gallery-lightbox',\n  templateUrl: './lightbox.component.html',\n  styleUrls: ['./lightbox.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LightboxComponent {\n  @ViewChild('Lightbox', { static: true }) element: ElementRef;\n\n  constructor() {}\n}\n","<div class=\"lightbox-wrapper\">\n  <!-- Root element of PhotoSwipe. Must have class pswp. -->\n  <div class=\"pswp\" #Lightbox tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n    <!-- Background of PhotoSwipe.\n           It's a separate element, as animating opacity is faster than rgba(). -->\n    <div class=\"pswp__bg\"></div>\n    <!-- Slides wrapper with overflow:hidden. -->\n    <div class=\"pswp__scroll-wrap\">\n      <!-- Container that holds slides. PhotoSwipe keeps only 3 slides in DOM to save memory. -->\n      <!-- don't modify these 3 pswp__item elements, data is added later on. -->\n      <div class=\"pswp__container\">\n        <div class=\"pswp__item\"></div>\n        <div class=\"pswp__item\"></div>\n        <div class=\"pswp__item\"></div>\n      </div>\n      <!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->\n      <div class=\"pswp__ui pswp__ui--hidden\">\n        <div class=\"pswp__top-bar\">\n          <!--  Controls are self-explanatory. Order can be changed. -->\n          <div class=\"pswp__counter\"></div>\n          <button class=\"pswp__button pswp__button--close\" title=\"Close (Esc)\"></button>\n          <button class=\"pswp__button pswp__button--share\" title=\"Share\"></button>\n          <button class=\"pswp__button pswp__button--fs\" title=\"Toggle fullscreen\"></button>\n          <button class=\"pswp__button pswp__button--zoom\" title=\"Zoom in/out\"></button>\n          <!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->\n          <!-- element will get class pswp__preloader--active when preloader is running -->\n          <div class=\"pswp__preloader\">\n            <div class=\"pswp__preloader__icn\">\n              <div class=\"pswp__preloader__cut\">\n                <div class=\"pswp__preloader__donut\"></div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <div class=\"pswp__share-modal pswp__share-modal--hidden pswp__single-tap\">\n          <div class=\"pswp__share-tooltip\"></div>\n        </div>\n        <button class=\"pswp__button pswp__button--arrow--left\" title=\"Previous (arrow left)\"></button>\n        <button class=\"pswp__button pswp__button--arrow--right\" title=\"Next (arrow right)\"></button>\n        <div class=\"pswp__caption\">\n          <div class=\"pswp__caption__center\"></div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n","import { GalleryOptions } from './photoswipe';\n\nexport abstract class PhotoGalleryConfig {\n  defaultOptions?: GalleryOptions;\n}\n","import { Injectable, ComponentRef, ElementRef, ApplicationRef, createComponent } from '@angular/core';\n\nimport { LightboxComponent } from '../components/lightbox/lightbox.component';\n\n@Injectable({ providedIn: 'root' })\nexport class LightboxService {\n  private lightbox: ComponentRef<LightboxComponent> | null;\n  private lightboxElement: ElementRef | null;\n\n  constructor(private applicationRef: ApplicationRef) {\n    this.lightbox = null;\n    this.lightboxElement = null;\n  }\n\n  create() {\n    this.lightbox = createComponent(\n      LightboxComponent,\n      { environmentInjector: this.applicationRef.injector }\n    );\n    document.body.appendChild(this.lightbox.location.nativeElement);\n    this.applicationRef.attachView(this.lightbox.hostView);\n\n    this.lightboxElement = this.lightbox.instance.element;\n  }\n\n  destroy() {\n    if (this.lightbox) {\n      this.applicationRef.detachView(this.lightbox.hostView);\n      this.lightbox = null;\n      this.lightboxElement = null;\n    }\n  }\n\n  /**\n   * Returns the lightbox element.\n   * This method is called after the lightbox is created.\n   * @returns HTMLElement\n   */\n  getLightboxElement(): HTMLElement {\n    return this.lightboxElement.nativeElement as HTMLElement;\n  }\n}\n","import { Directive, Output, Input, EventEmitter, Optional } from '@angular/core';\nimport PhotoSwipe from 'photoswipe';\nimport PhotoSwipeUI_Default from 'photoswipe/dist/photoswipe-ui-default';\n\nimport { PhotoGalleryConfig } from '../interfaces/config';\nimport { GalleryImage, GalleryItem, GalleryOptions } from '../interfaces/photoswipe';\nimport { LightboxService } from '../services/lightbox.service';\n\nexport const DEFAULT_OPTIONS = {\n  history: false,\n  closeEl: true,\n  captionEl: false,\n  fullscreenEl: false,\n  zoomEl: true,\n  shareEl: false,\n  counterEl: true,\n  arrowEl: false,\n  preloaderEl: true,\n};\n\n@Directive({\n  selector: '[photoGalleryGroup]',\n})\nexport class PhotoGalleryGroupDirective {\n  @Input('photoGalleryGroup') options: GalleryOptions;\n  @Output() onPhotoGalleryInit = new EventEmitter();\n  @Output() onPhotoGalleryDestroy = new EventEmitter();\n\n  private defaultOptions: GalleryOptions;\n  private gallery: any;\n  private galleryItems: { [key: string]: GalleryItem } = {};\n  private galleryItemIds: Set<string> = new Set<string>();\n  private galleryImages: GalleryImage[] = [];\n\n  constructor(\n    @Optional() private photoGalleryConfig: PhotoGalleryConfig,\n    private lightboxService: LightboxService\n  ) {\n    this.defaultOptions = { ...DEFAULT_OPTIONS, ...this.photoGalleryConfig?.defaultOptions };\n  }\n\n  registerGalleryItem(item: { id: string; element: HTMLElement; imageUrl: string; caption?: string }): void {\n    const image: GalleryImage = {\n      id: item.id,\n      src: item.imageUrl,\n      ...(item.caption ? { title: item.caption } : {}),\n      w: 0,\n      h: 0,\n      doGetSlideDimensions: true,\n    };\n    this.galleryItems[item.id] = {\n      id: item.id,\n      element: item.element,\n      image,\n    };\n\n    this.galleryItemIds.add(item.id);\n  }\n\n  unregisterGalleryItem(id: string): void {\n    this.galleryItemIds.delete(id);\n  }\n\n  async openPhotoSwipe(id: string): Promise<void> {\n    this.lightboxService.create();\n\n    if (this.galleryItems[id].image.doGetSlideDimensions) {\n      const targetImage = await loadImage(this.galleryItems[id].image.src);\n      this.galleryItems[id].image.w = targetImage.naturalWidth;\n      this.galleryItems[id].image.h = targetImage.naturalHeight;\n      delete this.galleryItems[id].image.doGetSlideDimensions;\n    }\n\n    this.galleryImages = [...this.galleryItemIds].map((key) => this.galleryItems[key].image);\n    const idx = this.galleryImages.findIndex((image) => image.id === id);\n    const options: GalleryOptions = { ...this.defaultOptions, ...this.options };\n    options.index = idx;\n    options.getThumbBoundsFn = (imageIndex: number) => {\n      const key = this.galleryImages[imageIndex].id;\n      const thumbnail = this.galleryItems[key].element;\n      const origin = this.galleryItems[key].image;\n      const pageYScroll = window.pageYOffset || document.documentElement.scrollTop;\n      const rect = thumbnail.getBoundingClientRect();\n\n      const thumbnailRate = rect.height / rect.width;\n      const originRate = origin.h / origin.w;\n      let x: number, y: number, w: number;\n      if (thumbnailRate > originRate) {\n        // portrait\n        y = rect.top + pageYScroll;\n        w = (origin.w * rect.height) / origin.h;\n        x = rect.left - (w - rect.width) / 2;\n      } else {\n        // landscape\n        const imageHeight = (origin.h * rect.width) / origin.w;\n        x = rect.left;\n        w = rect.width;\n        y = rect.top + pageYScroll - (imageHeight - rect.height) / 2;\n      }\n\n      return { x, y, w };\n    };\n    const photoSwipe = this.lightboxService.getLightboxElement();\n\n    this.gallery = new PhotoSwipe(photoSwipe, PhotoSwipeUI_Default, this.galleryImages, options);\n    this.gallery.listen('gettingData', (_, slide: GalleryImage) => {\n      if (slide.doGetSlideDimensions) {\n        setTimeout(async () => {\n          await this.getSlideDimensions(slide);\n        }, 300);\n      }\n    });\n    this.gallery.listen('imageLoadComplete', async (_, slide: GalleryImage) => {\n      if (slide.doGetSlideDimensions) {\n        await this.getSlideDimensions(slide);\n      }\n    });\n    this.gallery.listen('destroy', () => {\n      this.lightboxService.destroy();\n      this.onPhotoGalleryDestroy.emit();\n    });\n    this.onPhotoGalleryInit.emit();\n    this.gallery.init();\n  }\n\n  private async getSlideDimensions(slide: GalleryImage): Promise<void> {\n    if (!slide.doGetSlideDimensions) {\n      return;\n    }\n\n    const image: HTMLImageElement = await loadImage(slide.src).catch(() => null);\n\n    slide.doGetSlideDimensions = false;\n\n    slide.w = image.naturalWidth;\n    slide.h = image.naturalHeight;\n\n    this.gallery.invalidateCurrItems();\n    this.gallery.updateSize(true);\n  }\n}\n\nfunction loadImage(path: string): Promise<HTMLImageElement> {\n  return new Promise((resolve, reject) => {\n    const image = new Image();\n    image.onload = () => resolve(image);\n    image.onerror = (e) => reject(e);\n    image.src = path;\n  });\n}\n","import { Directive, HostListener, Input, ElementRef, AfterContentInit, OnDestroy } from '@angular/core';\n\nimport { PhotoGalleryGroupDirective } from './photo-gallery-group.directive';\n\n@Directive({\n  selector: '[photoGallery]',\n})\nexport class PhotoGalleryDirective implements AfterContentInit, OnDestroy {\n  @Input('photoGallery') imageUrl: string;\n  @Input() photoGalleryTrackBy: string;\n  @Input() photoGalleryCaption: string;\n  id: string;\n\n  constructor(private el: ElementRef, private photoGalleryGroup: PhotoGalleryGroupDirective) {}\n\n  @HostListener('click')\n  async openPhotoSwipe(): Promise<void> {\n    await this.photoGalleryGroup.openPhotoSwipe(this.id);\n  }\n\n  ngAfterContentInit(): void {\n    this.id = this.photoGalleryTrackBy || this.imageUrl;\n    this.photoGalleryGroup.registerGalleryItem({\n      id: this.id,\n      element: this.el.nativeElement as HTMLElement,\n      imageUrl: this.imageUrl,\n      caption: this.photoGalleryCaption,\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.photoGalleryGroup.unregisterGalleryItem(this.id);\n  }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { LightboxComponent } from './components/lightbox/lightbox.component';\nimport { PhotoGalleryGroupDirective } from './directives/photo-gallery-group.directive';\nimport { PhotoGalleryDirective } from './directives/photo-gallery.directive';\nimport { PhotoGalleryConfig } from './interfaces/config';\n\n@NgModule({\n  declarations: [LightboxComponent, PhotoGalleryDirective, PhotoGalleryGroupDirective],\n  providers: [],\n  imports: [],\n  exports: [PhotoGalleryDirective, PhotoGalleryGroupDirective],\n})\nexport class PhotoGalleryModule {\n  static forRoot(config: PhotoGalleryConfig): ModuleWithProviders<PhotoGalleryModule> {\n    return {\n      ngModule: PhotoGalleryModule,\n      providers: [\n        {\n          provide: PhotoGalleryConfig,\n          useValue: config,\n        },\n      ],\n    };\n  }\n}\n","/*\n * Public API Surface of core\n */\n\nexport * from './lib/photo-gallery.module';\n\nexport * from './lib/directives/photo-gallery-group.directive';\nexport * from './lib/directives/photo-gallery.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PhotoGalleryConfig","i2.LightboxService","i1.PhotoGalleryGroupDirective"],"mappings":"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"}