{"version":3,"file":"ng-gallery-lightbox.mjs","sources":["../../../projects/ng-gallery/lightbox/src/lightbox.model.ts","../../../projects/ng-gallery/lightbox/src/lightbox.animation.ts","../../../projects/ng-gallery/lightbox/src/lightbox.component.ts","../../../projects/ng-gallery/lightbox/src/lightbox.default.ts","../../../projects/ng-gallery/lightbox/src/lightbox.service.ts","../../../projects/ng-gallery/lightbox/src/gallerize.directive.ts","../../../projects/ng-gallery/lightbox/src/lightbox.directive.ts","../../../projects/ng-gallery/lightbox/src/lightbox.module.ts","../../../projects/ng-gallery/lightbox/src/ng-gallery-lightbox.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport const LIGHTBOX_CONFIG = new InjectionToken<LightboxConfig>('LIGHTBOX_CONFIG');\r\n\r\nexport interface LightboxConfig {\r\n  backdropClass?: string | string[];\r\n  panelClass?: string | string[];\r\n  hasBackdrop?: boolean;\r\n  keyboardShortcuts?: boolean;\r\n  closeIcon?: string;\r\n  role?: string;\r\n  ariaLabelledBy?: string;\r\n  ariaLabel?: string;\r\n  ariaDescribedBy?: string;\r\n  startAnimationTime?: number;\r\n  exitAnimationTime?: number;\r\n}\r\n","import { animate, state, style, transition, trigger } from '@angular/animations';\r\n\r\nexport const lightboxAnimation = trigger('lightbox', [\r\n  state('void, exit', style({opacity: 0, transform: 'scale(0.7)'})),\r\n  state('enter', style({transform: 'none'})),\r\n  transition('* => enter', animate('{{startAnimationTime}}ms cubic-bezier(0, 0, 0.2, 1)',\r\n    style({transform: 'none', opacity: 1}))),\r\n  transition('* => void, * => exit',\r\n    animate('{{exitAnimationTime}}ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({opacity: 0}))),\r\n]);\r\n\r\n","import { Component, Optional, Inject, ElementRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { SafeHtml } from '@angular/platform-browser';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { AnimationEvent } from '@angular/animations';\r\nimport { OverlayRef } from '@angular/cdk/overlay';\r\nimport { ConfigurableFocusTrap, ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\r\nimport { GalleryComponent } from 'ng-gallery';\r\nimport { lightboxAnimation } from './lightbox.animation';\r\n\r\n@Component({\r\n  selector: 'lightbox',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  animations: [lightboxAnimation],\r\n  styleUrls: ['./lightbox.component.scss'],\r\n  template: `\r\n    <i class=\"g-btn-close\" aria-label=\"Close\" [innerHTML]=\"closeIcon\" (click)=\"overlayRef.detach()\"></i>\r\n    <gallery [id]=\"id\" [destroyRef]=\"false\" [skipInitConfig]=\"true\"></gallery>\r\n  `,\r\n  host: {\r\n    'tabindex': '-1',\r\n    'aria-modal': 'true',\r\n    '[attr.id]': '\"lightbox-\" + id',\r\n    '[attr.role]': 'role',\r\n    '[attr.aria-labelledby]': 'ariaLabel ? null : ariaLabelledBy',\r\n    '[attr.aria-label]': 'ariaLabel',\r\n    '[attr.aria-describedby]': 'ariaDescribedBy || null',\r\n    '[@lightbox]': '{ value: state, params: { startAnimationTime: startAnimationTime, exitAnimationTime: exitAnimationTime } }',\r\n    '(@lightbox.done)': 'onAnimationDone($event)',\r\n  },\r\n  standalone: true,\r\n  imports: [GalleryComponent]\r\n})\r\nexport class LightboxComponent {\r\n\r\n  /** Gallery ref id */\r\n  id: string;\r\n\r\n  /** Overlay ref to close the lightbox */\r\n  overlayRef: OverlayRef;\r\n\r\n  /** Close button svg data */\r\n  closeIcon: SafeHtml;\r\n\r\n  /** State of the lightbox animation. */\r\n  state: 'void' | 'enter' | 'exit' = 'enter';\r\n\r\n  /** The ARIA role of the lightbox element. */\r\n  role: string;\r\n\r\n  /** Aria label to assign to the lightbox element */\r\n  ariaLabel: string;\r\n\r\n  /** ID of the element that should be considered as the lightbox's label. */\r\n  ariaLabelledBy: string;\r\n\r\n  /** ID of the element that describes the lightbox. */\r\n  ariaDescribedBy: string;\r\n\r\n  /** The lightbox start animation time in ms */\r\n  startAnimationTime: number;\r\n\r\n  /** The lightbox exit animation time in ms */\r\n  exitAnimationTime: number;\r\n\r\n  /** The class that traps and manages focus within the lightbox. */\r\n  private _focusTrap: ConfigurableFocusTrap;\r\n\r\n  /** Element that was focused before the lightbox was opened. Save this to restore upon close. */\r\n  private _elementFocusedBeforeDialogWasOpened: HTMLElement;\r\n\r\n  constructor(@Optional() @Inject(DOCUMENT) private _document: any,\r\n              private _focusTrapFactory: ConfigurableFocusTrapFactory,\r\n              private _elementRef: ElementRef) {\r\n    this._savePreviouslyFocusedElement();\r\n  }\r\n\r\n  /** Callback, invoked whenever an animation on the host completes. */\r\n  onAnimationDone(event: AnimationEvent) {\r\n    if (event.toState === 'enter') {\r\n      this._trapFocus();\r\n    } else {\r\n      this.overlayRef.dispose();\r\n      this._restoreFocus();\r\n    }\r\n  }\r\n\r\n  /** Moves the focus inside the focus trap. */\r\n  private _trapFocus() {\r\n    if (!this._focusTrap) {\r\n      this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\r\n    }\r\n    // If were to attempt to focus immediately, then the content of the lightbox would not yet be\r\n    // ready in instances where change detection has to run first. To deal with this, we simply\r\n    // wait for the microtask queue to be empty.\r\n    this._focusTrap.focusInitialElementWhenReady();\r\n  }\r\n\r\n  /** Saves a reference to the element that was focused before the lightbox was opened. */\r\n  private _savePreviouslyFocusedElement() {\r\n    if (this._document) {\r\n      this._elementFocusedBeforeDialogWasOpened = this._document.activeElement as HTMLElement;\r\n\r\n      // Note that there is no focus method when rendering on the server.\r\n      if (this._elementRef.nativeElement.focus) {\r\n        // Move focus onto the lightbox immediately in order to prevent the user from accidentally\r\n        // opening multiple dialogs at the same time. Needs to be async, because the element\r\n        // may not be focusable immediately.\r\n        Promise.resolve().then(() => this._elementRef.nativeElement.focus());\r\n      }\r\n    }\r\n  }\r\n\r\n  /** Restores focus to the element that was focused before the lightbox opened. */\r\n  private _restoreFocus() {\r\n    const toFocus = this._elementFocusedBeforeDialogWasOpened;\r\n\r\n    // We need the extra check, because IE can set the `activeElement` to null in some cases.\r\n    if (toFocus && typeof toFocus.focus === 'function') {\r\n      toFocus.focus();\r\n    }\r\n\r\n    if (this._focusTrap) {\r\n      this._focusTrap.destroy();\r\n    }\r\n  }\r\n}\r\n","import { LightboxConfig } from './lightbox.model';\r\n\r\nexport const defaultConfig: LightboxConfig = {\r\n  backdropClass: 'g-backdrop',\r\n  panelClass: 'g-overlay',\r\n  hasBackdrop: true,\r\n  keyboardShortcuts: true,\r\n  role: 'lightbox',\r\n  startAnimationTime: 150,\r\n  exitAnimationTime: 75,\r\n  closeIcon: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<svg width=\"512px\" height=\"512px\" enable-background=\"new 0 0 47.971 47.971\" version=\"1.1\" viewBox=\"0 0 47.971 47.971\" xml:space=\"preserve\" xmlns=\"http://www.w3.org/2000/svg\">\r\n\t<path d=\"M28.228,23.986L47.092,5.122c1.172-1.171,1.172-3.071,0-4.242c-1.172-1.172-3.07-1.172-4.242,0L23.986,19.744L5.121,0.88   c-1.172-1.172-3.07-1.172-4.242,0c-1.172,1.171-1.172,3.071,0,4.242l18.865,18.864L0.879,42.85c-1.172,1.171-1.172,3.071,0,4.242   C1.465,47.677,2.233,47.97,3,47.97s1.535-0.293,2.121-0.879l18.865-18.864L42.85,47.091c0.586,0.586,1.354,0.879,2.121,0.879   s1.535-0.293,2.121-0.879c1.172-1.171,1.172-3.071,0-4.242L28.228,23.986z\" fill=\"#fff\"/>\r\n</svg>\r\n`\r\n};\r\n","import { ComponentRef, Inject, Injectable, Optional } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { Overlay, OverlayRef, OverlayConfig } from '@angular/cdk/overlay';\r\nimport { LEFT_ARROW, RIGHT_ARROW, ESCAPE } from '@angular/cdk/keycodes';\r\nimport { Gallery } from 'ng-gallery';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { LightboxConfig, LIGHTBOX_CONFIG } from './lightbox.model';\r\nimport { defaultConfig } from './lightbox.default';\r\nimport { LightboxComponent } from './lightbox.component';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class Lightbox {\r\n\r\n  /** Gallery overlay ref */\r\n  private _overlayRef: OverlayRef;\r\n\r\n  /** Global config */\r\n  private _config: LightboxConfig;\r\n\r\n  /** Stream that emits when lightbox is opened */\r\n  opened = new Subject<string>();\r\n\r\n  /** Stream that emits when lightbox is closed */\r\n  closed = new Subject<string>();\r\n\r\n  constructor(@Optional() @Inject(LIGHTBOX_CONFIG) config: LightboxConfig, private _gallery: Gallery, private _overlay: Overlay, private _sanitizer: DomSanitizer) {\r\n    this._config = config ? { ...defaultConfig, ...config } : defaultConfig;\r\n  }\r\n\r\n  /**\r\n   * Set Lightbox Config\r\n   * @param config - LightboxConfig\r\n   */\r\n  setConfig(config: LightboxConfig) {\r\n    this._config = { ...this._config, ...config };\r\n  }\r\n\r\n  /**\r\n   * Open Lightbox Overlay\r\n   * @param i - Current Index\r\n   * @param id - Gallery ID\r\n   * @param config - Lightbox Config\r\n   */\r\n  open(i = 0, id = 'lightbox', config?: LightboxConfig) {\r\n\r\n    const _config: LightboxConfig = config ? { ...this._config, ...config } : this._config;\r\n\r\n    const overlayConfig: OverlayConfig = {\r\n      backdropClass: _config.backdropClass,\r\n      panelClass: _config.panelClass,\r\n      hasBackdrop: _config.hasBackdrop,\r\n      positionStrategy: this._overlay.position().global().centerHorizontally().centerVertically(),\r\n      scrollStrategy: this._overlay.scrollStrategies.block(),\r\n      disposeOnNavigation: true\r\n    };\r\n\r\n    const galleryRef = this._gallery.ref(id);\r\n    galleryRef.set(i);\r\n\r\n    this._overlayRef = this._overlay.create(overlayConfig);\r\n\r\n    // overlay opened event\r\n    this._overlayRef.attachments().subscribe(() => this.opened.next(id));\r\n\r\n    // overlay closed event\r\n    this._overlayRef.detachments().subscribe(() => this.closed.next(id));\r\n\r\n    // Attach gallery to the overlay\r\n    const galleryPortal = new ComponentPortal(LightboxComponent);\r\n    const lightboxRef: ComponentRef<LightboxComponent> = this._overlayRef.attach(galleryPortal);\r\n\r\n    lightboxRef.instance.id = id;\r\n    lightboxRef.instance.overlayRef = this._overlayRef;\r\n    lightboxRef.instance.closeIcon = this._sanitizer.bypassSecurityTrustHtml(this._config.closeIcon);\r\n    lightboxRef.instance.role = this._config.role;\r\n    lightboxRef.instance.ariaLabel = this._config.ariaLabel;\r\n    lightboxRef.instance.ariaLabelledBy = this._config.ariaLabelledBy;\r\n    lightboxRef.instance.ariaDescribedBy = this._config.ariaDescribedBy;\r\n    lightboxRef.instance.startAnimationTime = this._config.startAnimationTime;\r\n    lightboxRef.instance.exitAnimationTime = this._config.exitAnimationTime;\r\n\r\n    if (_config.hasBackdrop) {\r\n      this._overlayRef.backdropClick().subscribe(() => this.close());\r\n    }\r\n\r\n    // Add keyboard shortcuts\r\n    if (_config.keyboardShortcuts) {\r\n      this._overlayRef.keydownEvents().subscribe((event: any) => {\r\n        switch (event.keyCode) {\r\n          case LEFT_ARROW:\r\n            galleryRef.prev();\r\n            break;\r\n          case RIGHT_ARROW:\r\n            galleryRef.next();\r\n            break;\r\n          case ESCAPE:\r\n            this.close();\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Close Lightbox Overlay\r\n   */\r\n  close() {\r\n    if (this._overlayRef.hasAttached()) {\r\n      this._overlayRef.detach();\r\n    }\r\n  }\r\n}\r\n","import {\r\n  Directive,\r\n  Input,\r\n  OnInit,\r\n  OnDestroy,\r\n  Inject,\r\n  Optional,\r\n  Self,\r\n  Host,\r\n  NgZone,\r\n  ElementRef,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Gallery, GalleryRef, ImageItem, GalleryComponent, GalleryState, GalleryItem } from 'ng-gallery';\r\nimport { Subject, Subscription, from, tap, map, switchMap, finalize, debounceTime, EMPTY } from 'rxjs';\r\n\r\nimport { Lightbox } from './lightbox.service';\r\n\r\n/**\r\n * This directive has 2 modes:\r\n * 1 - If host element is a HTMLElement, it detects the images and hooks their clicks to lightbox\r\n * 2 - If host element is a GalleryComponent, it hooks the images click to the lightbox\r\n */\r\n\r\nconst enum GallerizeMode {\r\n  Detector = 'detector',\r\n  Gallery = 'gallery'\r\n}\r\n\r\n@Directive({\r\n  selector: '[gallerize]',\r\n  standalone: true\r\n})\r\nexport class GallerizeDirective implements OnInit, OnDestroy {\r\n\r\n  /** Default gallery id */\r\n  private _galleryId: string = 'lightbox';\r\n\r\n  /** Gallerize mode */\r\n  private readonly _mode: GallerizeMode;\r\n\r\n  /** If host element is a HTMLElement, will use the following variables: */\r\n\r\n  /** Stream that emits to fire the detection stream the image elements has changed */\r\n  private _observer$: MutationObserver;\r\n\r\n  /** Stream that emits when image is discover */\r\n  private _detector$: Subject<void>;\r\n\r\n  /** If host element is a GalleryComponent, will use the following variables: */\r\n\r\n  /** Gallery events (if used on a gallery component) */\r\n  private _itemClick$: Subscription;\r\n  private _itemChange$: Subscription;\r\n\r\n  // ======================================================\r\n\r\n  /** If set, it will become the gallery id */\r\n  @Input() gallerize: string;\r\n\r\n  /** The selector used to query images elements */\r\n  @Input() selector: string = 'img';\r\n\r\n  constructor(private _zone: NgZone,\r\n              private _el: ElementRef,\r\n              private _gallery: Gallery,\r\n              private _lightbox: Lightbox,\r\n              @Inject(DOCUMENT) private _document: any,\r\n              @Host() @Self() @Optional() private _galleryCmp: GalleryComponent) {\r\n\r\n    // Set gallerize mode\r\n    this._mode = _galleryCmp ? GallerizeMode.Gallery : GallerizeMode.Detector;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this._zone.runOutsideAngular(() => {\r\n      this._galleryId = this.gallerize || this._galleryId;\r\n      const ref: GalleryRef = this._gallery.ref(this._galleryId);\r\n\r\n      switch (this._mode) {\r\n        case GallerizeMode.Detector:\r\n          this.detectorMode(ref);\r\n          break;\r\n        case GallerizeMode.Gallery:\r\n          this.galleryMode(ref);\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    switch (this._mode) {\r\n      case GallerizeMode.Detector:\r\n        this._detector$.complete();\r\n        this._observer$.disconnect();\r\n        break;\r\n      case GallerizeMode.Gallery:\r\n        this._itemClick$.unsubscribe();\r\n        this._itemChange$.unsubscribe();\r\n    }\r\n  }\r\n\r\n  /** Gallery mode: means `gallerize` directive is used on `<gallery>` component\r\n   * Adds a click event to each gallery item so it opens in lightbox */\r\n  private galleryMode(galleryRef: GalleryRef): void {\r\n    // Clone its items to the new gallery instance\r\n    this._itemClick$ = this._galleryCmp.galleryRef.itemClick.subscribe((i: number) => this._lightbox.open(i, this._galleryId));\r\n    this._itemChange$ = this._galleryCmp.galleryRef.itemsChanged.subscribe((state: GalleryState) => galleryRef.load(state.items));\r\n  }\r\n\r\n  /** Detector mode: means `gallerize` directive is used on a normal HTMLElement\r\n   *  Detects images and adds a click event to each image, so it opens in the lightbox */\r\n  private detectorMode(galleryRef: GalleryRef): void {\r\n    this._detector$ = new Subject();\r\n    // Query image elements\r\n    this._detector$.pipe(\r\n      debounceTime(300),\r\n      switchMap(() => {\r\n\r\n        /** get all img elements from content */\r\n        const imageElements = this._el.nativeElement.querySelectorAll(this.selector);\r\n\r\n        if (imageElements && imageElements.length) {\r\n\r\n          const images: GalleryItem[] = [];\r\n\r\n          return from(imageElements).pipe(\r\n            map((el: HTMLElement, i: number) => {\r\n              // Add click event to the image\r\n              el.style.cursor = 'pointer';\r\n              el.addEventListener('click', () => {\r\n                this._zone.run(() => this._lightbox.open(i, this._galleryId));\r\n              });\r\n\r\n              if (el instanceof HTMLImageElement) {\r\n                // If element is type of img use the src property\r\n                return {\r\n                  src: el.getAttribute('imageSrc') || el.src,\r\n                  thumb: el.getAttribute('thumbSrc') || el.src\r\n                };\r\n              } else {\r\n                // Otherwise, use element background-image url\r\n                const elStyle = this._document.defaultView.getComputedStyle(el, null);\r\n                const background = elStyle.backgroundImage.slice(4, -1).replace(/\"/g, '');\r\n                return {\r\n                  src: el.getAttribute('imageSrc') || background,\r\n                  thumb: el.getAttribute('thumbSrc') || background\r\n                };\r\n              }\r\n            }),\r\n            tap((data: any) => images.push(new ImageItem(data))),\r\n            finalize(() => galleryRef.load(images))\r\n          );\r\n        } else {\r\n          return EMPTY;\r\n        }\r\n      })\r\n    ).subscribe();\r\n\r\n    // Observe content changes\r\n    this._observer$ = new MutationObserver(() => this._detector$.next());\r\n    this._observer$.observe(this._el.nativeElement, { childList: true, subtree: true });\r\n  }\r\n}\r\n","import { Directive, Input, ElementRef, OnInit, OnDestroy, Renderer2 } from '@angular/core';\r\nimport { fromEvent, tap, SubscriptionLike, Subscription } from 'rxjs';\r\nimport { Lightbox } from './lightbox.service';\r\n\r\n@Directive({\r\n  selector: '[lightbox]',\r\n  standalone: true\r\n})\r\nexport class LightboxDirective implements OnInit, OnDestroy {\r\n\r\n  clickEvent: SubscriptionLike = Subscription.EMPTY;\r\n\r\n  @Input('lightbox') index = 0;\r\n  @Input('gallery') id = 'root';\r\n\r\n  constructor(private _lightbox: Lightbox, private _el: ElementRef, private _renderer: Renderer2) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    this._renderer.setStyle(this._el.nativeElement, 'cursor', 'pointer');\r\n    this.clickEvent = fromEvent(this._el.nativeElement, 'click').pipe(\r\n      tap(() => this._lightbox.open(this.index, this.id))\r\n    ).subscribe();\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.clickEvent.unsubscribe();\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { GalleryModule } from 'ng-gallery';\r\nimport { LightboxDirective } from './lightbox.directive';\r\nimport { GallerizeDirective } from './gallerize.directive';\r\n\r\n@NgModule({\r\n  imports: [GalleryModule, LightboxDirective, GallerizeDirective],\r\n  exports: [GalleryModule, LightboxDirective, GallerizeDirective]\r\n})\r\nexport class LightboxModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i1.Lightbox"],"mappings":"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"}