{"version":3,"file":"ng-gallery.mjs","sources":["../../../projects/ng-gallery/src/lib/models/constants.ts","../../../projects/ng-gallery/src/lib/utils/gallery.default.ts","../../../projects/ng-gallery/src/lib/components/templates/items.model.ts","../../../projects/ng-gallery/src/lib/services/gallery-ref.ts","../../../projects/ng-gallery/src/lib/models/config.model.ts","../../../projects/ng-gallery/src/lib/services/gallery.service.ts","../../../projects/ng-gallery/src/lib/components/gallery-counter.component.ts","../../../projects/ng-gallery/src/lib/components/gallery-bullets.component.ts","../../../projects/ng-gallery/src/lib/components/gallery-nav.component.ts","../../../projects/ng-gallery/src/lib/components/adapters/main-adapters.ts","../../../projects/ng-gallery/src/lib/components/adapters/base-adapter.ts","../../../projects/ng-gallery/src/lib/smooth-scroll/bezier-easing.ts","../../../projects/ng-gallery/src/lib/smooth-scroll/smooth-scroll.directive.ts","../../../projects/ng-gallery/src/lib/gestures/hammer-sliding.directive.ts","../../../projects/ng-gallery/src/lib/observers/active-item-observer.ts","../../../projects/ng-gallery/src/lib/observers/slider-intersection-observer.directive.ts","../../../projects/ng-gallery/src/lib/utils/resize-observer.ts","../../../projects/ng-gallery/src/lib/components/templates/gallery-iframe.component.ts","../../../projects/ng-gallery/src/lib/components/templates/gallery-video.component.ts","../../../projects/ng-gallery/src/lib/components/templates/svg-assets.ts","../../../projects/ng-gallery/src/lib/utils/img-manager.ts","../../../projects/ng-gallery/src/lib/utils/img-recognizer.ts","../../../projects/ng-gallery/src/lib/components/templates/gallery-image.component.ts","../../../projects/ng-gallery/src/lib/components/gallery-item.component.ts","../../../projects/ng-gallery/src/lib/observers/item-intersection-observer.directive.ts","../../../projects/ng-gallery/src/lib/observers/slider-resize-observer.directive.ts","../../../projects/ng-gallery/src/lib/components/gallery-slider.component.ts","../../../projects/ng-gallery/src/lib/components/gallery-thumb.component.ts","../../../projects/ng-gallery/src/lib/observers/thumb-resize-observer.directive.ts","../../../projects/ng-gallery/src/lib/components/gallery-thumbs.component.ts","../../../projects/ng-gallery/src/lib/components/gallery-core.component.ts","../../../projects/ng-gallery/src/lib/directives/gallery-image-def.directive.ts","../../../projects/ng-gallery/src/lib/directives/gallery-thumb-def.directive.ts","../../../projects/ng-gallery/src/lib/directives/gallery-item-def.directive.ts","../../../projects/ng-gallery/src/lib/directives/gallery-box-def.directive.ts","../../../projects/ng-gallery/src/lib/autoplay/autoplay.directive.ts","../../../projects/ng-gallery/src/lib/components/gallery.component.ts","../../../projects/ng-gallery/src/lib/gallery.module.ts","../../../projects/ng-gallery/src/ng-gallery.ts"],"sourcesContent":["export enum GalleryAction {\r\n  INITIALIZED = 'initialized',\r\n  ITEMS_CHANGED = 'itemsChanged',\r\n  INDEX_CHANGED = 'indexChanged',\r\n  PLAY = 'play',\r\n  STOP = 'stop'\r\n}\r\n\r\nexport enum ImageSize {\r\n  Cover = 'cover',\r\n  Contain = 'contain'\r\n}\r\n\r\nexport enum LoadingStrategy {\r\n  Preload = 'preload',\r\n  Lazy = 'lazy',\r\n  Default = 'default'\r\n}\r\n\r\nexport enum LoadingAttr {\r\n  Eager= 'eager',\r\n  Lazy = 'lazy'\r\n}\r\n\r\nexport enum ThumbnailsPosition {\r\n  Top = 'top',\r\n  Left = 'left',\r\n  Right = 'right',\r\n  Bottom = 'bottom'\r\n}\r\n\r\nexport enum BulletsPosition {\r\n  Top = 'top',\r\n  Bottom = 'bottom'\r\n}\r\n\r\nexport enum CounterPosition {\r\n  Top = 'top',\r\n  Bottom = 'bottom'\r\n}\r\n\r\nexport enum Orientation {\r\n  Horizontal = 'horizontal',\r\n  Vertical = 'vertical'\r\n}\r\n\r\nexport enum GalleryItemTypes {\r\n  Image = 'image',\r\n  Video = 'video',\r\n  Youtube = 'youtube',\r\n  Vimeo = 'vimeo',\r\n  Iframe = 'iframe'\r\n}\r\n\r\nexport type GalleryItemType = GalleryItemTypes | string;\r\n","import {\r\n  ImageSize,\r\n  GalleryAction,\r\n  LoadingStrategy,\r\n  Orientation,\r\n  ThumbnailsPosition,\r\n  BulletsPosition,\r\n  CounterPosition,\r\n  LoadingAttr\r\n} from '../models/constants';\r\nimport { GalleryState } from '../models/gallery.model';\r\nimport { GalleryConfig } from '../models/config.model';\r\n\r\n/** Initial state */\r\nexport const defaultState: GalleryState = {\r\n  action: GalleryAction.INITIALIZED,\r\n  isPlaying: false,\r\n  hasNext: false,\r\n  hasPrev: false,\r\n  currIndex: 0,\r\n  items: []\r\n};\r\n\r\nexport const defaultConfig: GalleryConfig = {\r\n  nav: true,\r\n  loop: false,\r\n  bullets: false,\r\n  thumbs: false,\r\n  debug: false,\r\n  bulletSize: 6,\r\n  counter: false,\r\n  autoplay: false,\r\n  thumbWidth: 120,\r\n  thumbHeight: 90,\r\n  disableBullets: false,\r\n  disableThumbs: false,\r\n  disableScroll: false,\r\n  disableThumbScroll: false,\r\n  disableMouseScroll: false,\r\n  disableThumbMouseScroll: false,\r\n  autoplayInterval: 3000,\r\n  scrollDuration: 468,\r\n  scrollEase: {\r\n    x1: 0.42,\r\n    y1: 0,\r\n    x2: 0.58,\r\n    y2: 1\r\n  },\r\n  thumbCentralized: false,\r\n  thumbAutosize: false,\r\n  itemAutosize: false,\r\n  autoHeight: false,\r\n  scrollBehavior: 'smooth',\r\n  resizeDebounceTime: 0,\r\n  loadingAttr: LoadingAttr.Lazy,\r\n  imageSize: ImageSize.Contain,\r\n  thumbImageSize: ImageSize.Cover,\r\n  bulletPosition: BulletsPosition.Bottom,\r\n  counterPosition: CounterPosition.Top,\r\n  thumbPosition: ThumbnailsPosition.Bottom,\r\n  loadingStrategy: LoadingStrategy.Preload,\r\n  orientation: Orientation.Horizontal,\r\n  navIcon: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path d=\"M0 256C0 397.4 114.6 512 256 512s256-114.6 256-256S397.4 0 256 0S0 114.6 0 256zM241 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L345 239c9.4 9.4 9.4 24.6 0 33.9L241 377z\"/></svg>`,\r\n  // navIcon: `<?xml version=\"1.0\" encoding=\"UTF-8\"?><svg width=\"512px\" height=\"512px\" enable-background=\"new 0 0 240.823 240.823\" version=\"1.1\" viewBox=\"0 0 240.823 240.823\" xml:space=\"preserve\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m183.19 111.82l-108.3-108.26c-4.752-4.74-12.451-4.74-17.215 0-4.752 4.74-4.752 12.439 0 17.179l99.707 99.671-99.695 99.671c-4.752 4.74-4.752 12.439 0 17.191 4.752 4.74 12.463 4.74 17.215 0l108.3-108.26c4.68-4.691 4.68-12.511-0.012-17.19z\"></svg>`,\r\n  loadingIcon: `<?xml version=\"1.0\" encoding=\"UTF-8\"?><svg stroke=\"#fff\" viewBox=\"0 0 44 44\" xmlns=\"http://www.w3.org/2000/svg\"><g fill=\"none\" fill-rule=\"evenodd\" stroke-width=\"2\"><circle cx=\"22\" cy=\"22\" r=\"1\"><animate attributeName=\"r\" begin=\"0s\" calcMode=\"spline\" dur=\"1.8s\" keySplines=\"0.165, 0.84, 0.44, 1\" keyTimes=\"0; 1\" repeatCount=\"indefinite\" values=\"1; 20\"/><animate attributeName=\"stroke-opacity\" begin=\"0s\" calcMode=\"spline\" dur=\"1.8s\" keySplines=\"0.3, 0.61, 0.355, 1\" keyTimes=\"0; 1\" repeatCount=\"indefinite\" values=\"1; 0\"/></circle><circle cx=\"22\" cy=\"22\" r=\"1\"><animate attributeName=\"r\" begin=\"-0.9s\" calcMode=\"spline\" dur=\"1.8s\" keySplines=\"0.165, 0.84, 0.44, 1\" keyTimes=\"0; 1\" repeatCount=\"indefinite\" values=\"1; 20\"/><animate attributeName=\"stroke-opacity\" begin=\"-0.9s\" calcMode=\"spline\" dur=\"1.8s\" keySplines=\"0.3, 0.61, 0.355, 1\" keyTimes=\"0; 1\" repeatCount=\"indefinite\" values=\"1; 0\"/></circle></g></svg>`\r\n};\r\n","import { GalleryItem } from '../../models/gallery.model';\r\nimport { GalleryItemType, GalleryItemTypes } from '../../models/constants';\r\n\r\nexport class ImageItem implements GalleryItem {\r\n  readonly type: GalleryItemType;\r\n  readonly data: ImageItemData;\r\n\r\n  constructor(data: ImageItemData) {\r\n    this.data = data;\r\n    this.type = GalleryItemTypes.Image;\r\n  }\r\n}\r\n\r\nexport class VideoItem implements GalleryItem {\r\n  readonly type: GalleryItemType;\r\n  readonly data: VideoItemData;\r\n\r\n  constructor(data: VideoItemData) {\r\n    this.data = data;\r\n    this.type = GalleryItemTypes.Video;\r\n  }\r\n}\r\n\r\nexport class IframeItem implements GalleryItem {\r\n  readonly type: GalleryItemType;\r\n  readonly data: IframeItemData;\r\n\r\n  constructor(data: IframeItemData) {\r\n    this.data = data;\r\n    this.type = GalleryItemTypes.Iframe;\r\n  }\r\n}\r\n\r\nexport class YoutubeItem implements GalleryItem {\r\n  readonly type: GalleryItemType;\r\n  readonly data: YoutubeItemData;\r\n\r\n  constructor(data: YoutubeItemData) {\r\n    this.data = {\r\n      ...data,\r\n      ...{\r\n        src: `https://youtube.com/embed/${ data.src }`,\r\n        thumb: data.thumb ? data.thumb : `//img.youtube.com/vi/${ data.src }/default.jpg`\r\n      }\r\n    };\r\n    this.type = GalleryItemTypes.Youtube;\r\n  }\r\n}\r\n\r\nexport class VimeoItem implements GalleryItem {\r\n  readonly type: GalleryItemType;\r\n  readonly data: VimeoItemData;\r\n\r\n  constructor(data: VimeoItemData) {\r\n    this.data = {\r\n      ...data,\r\n      ...{\r\n        src: `https://player.vimeo.com/video/${ data.src }`,\r\n        thumb: data.thumb ? data.thumb : this.getVimeoThumb(data.src as string)\r\n      }\r\n    };\r\n\r\n\r\n    this.type = GalleryItemTypes.Vimeo;\r\n  }\r\n\r\n  private getVimeoThumb(videoId: string): string {\r\n    //Vimeo has no API for getting a thumbnail, but this project can do it: https://github.com/ThatGuySam/vumbnail\r\n    return `//vumbnail.com/${ videoId }.jpg`\r\n  }\r\n}\r\n\r\ntype GalleryItemModel = {\r\n  type?: GalleryItemType;\r\n  src?: string | { url: string, type: string }[];\r\n  thumb?: string;\r\n  args?: any;\r\n};\r\n\r\nexport type ImageItemData = GalleryItemModel & {\r\n  alt?: string;\r\n};\r\n\r\nexport type IframeItemData = GalleryItemModel & {\r\n  params?: any;\r\n};\r\n\r\nexport type YoutubeItemData = IframeItemData & {\r\n  autoplay?: boolean;\r\n};\r\n\r\nexport type VimeoItemData = IframeItemData & {\r\n  autoplay?: boolean;\r\n};\r\n\r\nexport type VideoItemData = GalleryItemModel & {\r\n  poster?: string;\r\n  loop?: boolean;\r\n  // The only option for boolean video attributes is 'true', because false will still be evaluated to true in attributes binding\r\n  mute?: true;\r\n  disablePictureInPicture?: true;\r\n  controls?: boolean;\r\n  autoplay?: boolean;\r\n  preload?: 'none' | 'metadata' | 'auto' | '';\r\n  controlsList?: 'nodownload' | 'nofullscreen' | 'noremoteplayback';\r\n  disableRemotePlayback?: boolean;\r\n};\r\n\r\nexport type GalleryItemData = ImageItemData | VideoItemData | IframeItemData | YoutubeItemData | VimeoItemData;\r\n\r\nexport type ItemState = 'success' | 'loading' | 'failed';\r\n","import { BehaviorSubject, Subject, Observable, filter } from 'rxjs';\r\nimport { defaultState } from '../utils/gallery.default';\r\nimport { GalleryError, GalleryItem, GalleryState } from '../models/gallery.model';\r\nimport { GalleryConfig } from '../models/config.model';\r\nimport { GalleryAction } from '../models/constants';\r\nimport {\r\n  IframeItem,\r\n  IframeItemData,\r\n  ImageItem,\r\n  ImageItemData,\r\n  VideoItem,\r\n  VideoItemData,\r\n  VimeoItem,\r\n  VimeoItemData,\r\n  YoutubeItem,\r\n  YoutubeItemData\r\n} from '../components/templates/items.model';\r\n\r\nconst filterActions = (actions: string[]) => {\r\n  return filter((state: GalleryState) => actions.indexOf(state.action) > -1);\r\n};\r\n\r\nexport class GalleryRef {\r\n\r\n  /** Stream that emits gallery state */\r\n  private readonly _state: BehaviorSubject<GalleryState>;\r\n\r\n  /** Stream that emits gallery config */\r\n  private readonly _config: BehaviorSubject<GalleryConfig>;\r\n\r\n  /** Stream that emits on item click */\r\n  readonly itemClick: Subject<number> = new Subject<number>();\r\n\r\n  /** Stream that emits on thumbnail click */\r\n  readonly thumbClick: Subject<number> = new Subject<number>();\r\n\r\n  /** Stream that emits on an error occurs */\r\n  readonly error: Subject<GalleryError> = new Subject<GalleryError>();\r\n\r\n  /** Gallery Events */\r\n\r\n  /** Stream that emits gallery state */\r\n  readonly state: Observable<GalleryState>;\r\n\r\n  /** Stream that emits gallery config */\r\n  readonly config: Observable<GalleryConfig>;\r\n\r\n  get stateSnapshot(): GalleryState {\r\n    return this._state.value;\r\n  }\r\n\r\n  get configSnapshot(): GalleryConfig {\r\n    return this._config.value;\r\n  }\r\n\r\n  /** Stream that emits when gallery is initialized/reset */\r\n  get initialized(): Observable<GalleryState> {\r\n    return this.state.pipe(filterActions([GalleryAction.INITIALIZED]));\r\n  }\r\n\r\n  /** Stream that emits when items is changed (items loaded, item added, item removed) */\r\n  get itemsChanged(): Observable<GalleryState> {\r\n    return this.state.pipe(filterActions([GalleryAction.ITEMS_CHANGED]));\r\n  }\r\n\r\n  /** Stream that emits when current item is changed */\r\n  get indexChanged(): Observable<GalleryState> {\r\n    return this.state.pipe(filterActions([GalleryAction.INDEX_CHANGED]));\r\n  }\r\n\r\n  /** Stream that emits when the player should start or stop */\r\n  get playingChanged(): Observable<GalleryState> {\r\n    return this.state.pipe(filterActions([GalleryAction.PLAY, GalleryAction.STOP]));\r\n  }\r\n\r\n  constructor(config: GalleryConfig, private deleteInstance: () => void) {\r\n    this._state = new BehaviorSubject<GalleryState>(defaultState);\r\n    this._config = new BehaviorSubject<GalleryConfig>(config);\r\n    this.state = this._state.asObservable();\r\n    this.config = this._config.asObservable();\r\n  }\r\n\r\n  /**\r\n   * Set gallery state\r\n   */\r\n  private setState(state: GalleryState): void {\r\n    this._state.next({ ...this.stateSnapshot, ...state });\r\n  }\r\n\r\n  /**\r\n   * Set gallery config\r\n   */\r\n  setConfig(config: GalleryConfig): void {\r\n    this._config.next({ ...this._config.value, ...config });\r\n  }\r\n\r\n  /**\r\n   * Add gallery item\r\n   */\r\n  add(item: GalleryItem, active?: boolean): void {\r\n    const items: GalleryItem[] = [...this.stateSnapshot.items, item];\r\n    this.setState({\r\n      action: GalleryAction.ITEMS_CHANGED,\r\n      items,\r\n      hasNext: items.length > 1,\r\n      currIndex: active ? items.length - 1 : this.stateSnapshot.currIndex\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Add image item\r\n   */\r\n  addImage(data: ImageItemData, active?: boolean): void {\r\n    this.add(new ImageItem(data), active);\r\n  }\r\n\r\n  /**\r\n   * Add video item\r\n   */\r\n  addVideo(data: VideoItemData, active?: boolean): void {\r\n    this.add(new VideoItem(data), active);\r\n  }\r\n\r\n  /**\r\n   * Add iframe item\r\n   */\r\n  addIframe(data: IframeItemData, active?: boolean): void {\r\n    this.add(new IframeItem(data), active);\r\n  }\r\n\r\n  /**\r\n   * Add Youtube item\r\n   */\r\n  addYoutube(data: YoutubeItemData, active?: boolean): void {\r\n    this.add(new YoutubeItem(data), active);\r\n  }\r\n\r\n  /**\r\n   * Add Vimeo item\r\n   */\r\n  addVimeo(data: VimeoItemData, active?: boolean): void {\r\n    this.add(new VimeoItem(data), active);\r\n  }\r\n\r\n  /**\r\n   * Remove gallery item\r\n   */\r\n  remove(i: number): void {\r\n    const state: GalleryState = this.stateSnapshot;\r\n    const items: GalleryItem[] = [\r\n      ...state.items.slice(0, i),\r\n      ...state.items.slice(i + 1, state.items.length)\r\n    ];\r\n    this.setState({\r\n      action: GalleryAction.ITEMS_CHANGED,\r\n      currIndex: i < 1 ? state.currIndex : i - 1,\r\n      items,\r\n      hasNext: items.length > 1,\r\n      hasPrev: i > 0\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Load items and reset the state\r\n   */\r\n  load(items: GalleryItem[]): void {\r\n    if (items) {\r\n      this.setState({\r\n        action: GalleryAction.ITEMS_CHANGED,\r\n        items,\r\n        hasNext: items.length > 1,\r\n        hasPrev: false\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Set active item\r\n   */\r\n  set(i: number, behavior: ScrollBehavior = this._config.value.scrollBehavior): void {\r\n    if (i < 0 || i >= this.stateSnapshot.items.length) {\r\n      console.error(`[NgGallery]: Unable to set the active item because the given index (${ i }) is outside the items range!`);\r\n      return;\r\n    }\r\n    if (i !== this.stateSnapshot.currIndex) {\r\n      this.setState({\r\n        behavior,\r\n        action: GalleryAction.INDEX_CHANGED,\r\n        currIndex: i,\r\n        hasNext: i < this.stateSnapshot.items.length - 1,\r\n        hasPrev: i > 0\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Next item\r\n   */\r\n  next(behavior: ScrollBehavior = this._config.value.scrollBehavior, loop: boolean = true): void {\r\n    if (this.stateSnapshot.hasNext) {\r\n      this.set(this.stateSnapshot.currIndex + 1, behavior);\r\n    } else if (loop && this._config.value.loop) {\r\n      this.set(0, behavior);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Prev item\r\n   */\r\n  prev(behavior: ScrollBehavior = this._config.value.scrollBehavior, loop: boolean = true): void {\r\n    if (this.stateSnapshot.hasPrev) {\r\n      this.set(this.stateSnapshot.currIndex - 1, behavior);\r\n    } else if (loop && this._config.value.loop) {\r\n      this.set(this.stateSnapshot.items.length - 1, behavior);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Start gallery player\r\n   */\r\n  play(interval?: number): void {\r\n    if (interval) {\r\n      this.setConfig({ autoplayInterval: interval });\r\n    }\r\n    this.setState({ action: GalleryAction.PLAY, behavior: 'auto', isPlaying: true });\r\n  }\r\n\r\n  /**\r\n   * Stop gallery player\r\n   */\r\n  stop(): void {\r\n    this.setState({ action: GalleryAction.STOP, isPlaying: false });\r\n  }\r\n\r\n  /**\r\n   * Reset gallery to initial state\r\n   */\r\n  reset(): void {\r\n    this.setState(defaultState);\r\n  }\r\n\r\n  /**\r\n   * Destroy gallery\r\n   */\r\n  destroy(): void {\r\n    this._state.complete();\r\n    this._config.complete();\r\n    this.itemClick.complete();\r\n    this.thumbClick.complete();\r\n    this.deleteInstance();\r\n  }\r\n\r\n}\r\n","import { InjectionToken, TemplateRef } from '@angular/core';\r\nimport { BezierEasingOptions } from '../smooth-scroll';\r\n\r\nexport const GALLERY_CONFIG: InjectionToken<GalleryConfig> = new InjectionToken<GalleryConfig>('GALLERY_CONFIG');\r\n\r\ntype ImageSize = 'contain' | 'cover';\r\n\r\ntype Orientation = 'horizontal' | 'vertical';\r\n\r\ntype ThumbsPosition = 'top' | 'left' | 'right' | 'bottom';\r\n\r\ntype HorizontalPosition = 'top' | 'bottom';\r\n\r\ntype LoadingStrategy = 'preload' | 'lazy' | 'default';\r\n\r\ntype LoadingAttr = 'eager' | 'lazy';\r\n\r\ninterface ThumbConfig {\r\n  thumbs?: boolean;\r\n  thumbWidth?: number;\r\n  thumbHeight?: number;\r\n  thumbLoadingIcon?: string;\r\n  thumbLoadingError?: string;\r\n  disableThumbs?: boolean;\r\n  detachThumbs?: boolean;\r\n  thumbAutosize?: boolean;\r\n  disableThumbScroll?: boolean;\r\n  disableThumbMouseScroll?: boolean;\r\n  thumbCentralized?: boolean;\r\n  thumbPosition?: ThumbsPosition;\r\n  thumbImageSize?: ImageSize;\r\n  thumbTemplate?: TemplateRef<any>;\r\n}\r\n\r\ninterface NavConfig {\r\n  nav?: boolean;\r\n  navIcon?: string;\r\n}\r\n\r\ninterface BulletsConfig {\r\n  bullets?: boolean;\r\n  disableBullets?: boolean;\r\n  bulletSize?: number;\r\n  bulletPosition?: HorizontalPosition;\r\n}\r\n\r\ninterface CounterConfig {\r\n  counter?: boolean;\r\n  counterPosition?: HorizontalPosition;\r\n}\r\n\r\ninterface PlayerConfig {\r\n  autoplay?: boolean;\r\n  autoplayInterval?: number;\r\n}\r\n\r\ninterface SliderConfig {\r\n  loop?: boolean;\r\n  disableScroll?: boolean;\r\n  disableMouseScroll?: boolean;\r\n  itemAutosize?: boolean;\r\n  autoHeight?: boolean;\r\n  loadingIcon?: string;\r\n  loadingError?: string;\r\n  scrollDuration?: number;\r\n  scrollEase?: BezierEasingOptions;\r\n  orientation?: Orientation;\r\n  imageSize?: ImageSize;\r\n  loadingStrategy?: LoadingStrategy;\r\n  loadingAttr?: LoadingAttr;\r\n  boxTemplate?: TemplateRef<any>;\r\n  itemTemplate?: TemplateRef<any>;\r\n  imageTemplate?: TemplateRef<any>;\r\n}\r\n\r\nexport type GalleryConfig = SliderConfig\r\n  & ThumbConfig\r\n  & NavConfig\r\n  & BulletsConfig\r\n  & CounterConfig\r\n  & PlayerConfig\r\n  & {\r\n  scrollBehavior?: ScrollBehavior;\r\n  resizeDebounceTime?: number;\r\n  debug?: boolean;\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\n\r\nimport { GalleryRef } from './gallery-ref';\r\nimport { GalleryConfig, GALLERY_CONFIG } from '../models/config.model';\r\nimport { defaultConfig } from '../utils/gallery.default';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class Gallery {\r\n\r\n  /** Store gallery instances */\r\n  private readonly _instances = new Map<string, GalleryRef>();\r\n\r\n  /** Global config */\r\n  config: GalleryConfig;\r\n\r\n  constructor(@Optional() @Inject(GALLERY_CONFIG) config: GalleryConfig) {\r\n    this.config = config ? { ...defaultConfig, ...config } : defaultConfig;\r\n  }\r\n\r\n  /**\r\n   * Get or create gallery by ID\r\n   * @param id\r\n   * @param config\r\n   */\r\n  ref(id = 'root', config?: GalleryConfig): GalleryRef {\r\n    if (this._instances.has(id)) {\r\n      const galleryRef: GalleryRef = this._instances.get(id);\r\n      if (config) {\r\n        galleryRef.setConfig(config);\r\n      }\r\n      return galleryRef;\r\n    } else {\r\n      return this._instances.set(id, new GalleryRef({ ...this.config, ...config }, this.deleteInstance(id))).get(id);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Destroy all gallery instances\r\n   */\r\n  destroyAll() {\r\n    this._instances.forEach((ref: GalleryRef) => ref.destroy());\r\n  }\r\n\r\n  /**\r\n   * Reset all gallery instances\r\n   */\r\n  resetAll() {\r\n    this._instances.forEach((ref: GalleryRef) => ref.reset());\r\n  }\r\n\r\n  /**\r\n   * Logger for debugging\r\n   */\r\n  debugConsole(...data: any[]): void {\r\n    if (this.config.debug) {\r\n      console.log(...data)\r\n    }\r\n  }\r\n\r\n  /**\r\n   * A destroyer function for each gallery instance\r\n   */\r\n  private deleteInstance(id: string) {\r\n    return () => {\r\n      if (this._instances.has(id)) {\r\n        this._instances.delete(id);\r\n      }\r\n    };\r\n  }\r\n\r\n}\r\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { GalleryState } from '../models/gallery.model';\r\n\r\n@Component({\r\n  selector: 'gallery-counter',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  styleUrls: ['./gallery-counter.scss'],\r\n  template: `\r\n    <div class=\"g-counter\">{{ (state.currIndex + 1) + ' / ' + state.items.length }}</div>\r\n  `,\r\n  standalone: true\r\n})\r\nexport class GalleryCounterComponent {\r\n  @Input() state: GalleryState;\r\n}\r\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Gallery } from '../services/gallery.service';\r\nimport { GalleryState } from '../models/gallery.model';\r\nimport { GalleryConfig } from '../models/config.model';\r\n\r\n@Component({\r\n  selector: 'gallery-bullets',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  styleUrls: ['./gallery-bullets.scss'],\r\n  template: `\r\n    <div class=\"g-bullet\"\r\n         *ngFor=\"let item of state.items; let i = index\"\r\n         [class.g-bullet-active]=\"i === state.currIndex\"\r\n         [style.width.px]=\"config?.bulletSize\"\r\n         [style.height.px]=\"config?.bulletSize\"\r\n         (click)=\"config.disableBullets ? null : gallery.ref(this.galleryId).set(i)\">\r\n      <div class=\"g-bullet-inner\"></div>\r\n    </div>\r\n  `,\r\n  standalone: true,\r\n  imports: [CommonModule]\r\n})\r\nexport class GalleryBulletsComponent {\r\n\r\n  @Input() galleryId: string;\r\n  @Input() state: GalleryState;\r\n  @Input() config: GalleryConfig;\r\n\r\n  constructor(public gallery: Gallery) {\r\n  }\r\n}\r\n","import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { Gallery } from '../services/gallery.service';\r\nimport { GalleryState } from '../models/gallery.model';\r\nimport { GalleryConfig } from '../models/config.model';\r\n\r\n@Component({\r\n  selector: 'gallery-nav',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  styleUrls: ['./gallery-nav.scss'],\r\n  template: `\r\n    <i *ngIf=\"config.loop || state.hasPrev\"\r\n       class=\"g-nav-prev\"\r\n       aria-label=\"Previous\"\r\n       role=\"button\"\r\n       (click)=\"gallery.ref(this.id).prev(config.scrollBehavior)\"\r\n       [innerHtml]=\"navIcon\"></i>\r\n\r\n    <i *ngIf=\"config.loop || state.hasNext\"\r\n       class=\"g-nav-next\"\r\n       aria-label=\"Next\"\r\n       role=\"button\"\r\n       (click)=\"gallery.ref(this.id).next(config.scrollBehavior)\"\r\n       [innerHtml]=\"navIcon\"></i>\r\n  `,\r\n  standalone: true,\r\n  imports: [CommonModule]\r\n})\r\nexport class GalleryNavComponent implements OnInit {\r\n\r\n  navIcon: SafeHtml;\r\n  @Input('galleryId') id: string;\r\n  @Input() state: GalleryState;\r\n  @Input() config: GalleryConfig;\r\n\r\n  constructor(public gallery: Gallery, private _sanitizer: DomSanitizer, public dir: Directionality) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.navIcon = this._sanitizer.bypassSecurityTrustHtml(this.config.navIcon);\r\n  }\r\n\r\n  rightButton() {\r\n\r\n  }\r\n\r\n  leftButton(): void {\r\n\r\n  }\r\n}\r\n","import { GalleryConfig } from '../../models/config.model';\r\nimport { SliderAdapter } from './base-adapter';\r\nimport { SmoothScrollOptions } from '../../smooth-scroll';\r\n\r\n/**\r\n * A clone of HammerJs constants\r\n */\r\nexport const DIRECTION_LEFT: number = 2;\r\nexport const DIRECTION_RIGHT: number = 4;\r\nexport const DIRECTION_UP: number = 8;\r\nexport const DIRECTION_DOWN: number = 16;\r\n\r\nexport class HorizontalAdapter implements SliderAdapter {\r\n\r\n  readonly hammerDirection: number = DIRECTION_LEFT | DIRECTION_RIGHT;\r\n\r\n  readonly scrollSnapType: string = 'x mandatory';\r\n\r\n  get scrollValue(): number {\r\n    return this.slider.scrollLeft;\r\n  }\r\n\r\n  get clientSize(): number {\r\n    return this.slider.clientWidth;\r\n  }\r\n\r\n  get isContentLessThanContainer(): boolean {\r\n    return this.clientSize >= this.slider.firstElementChild.clientWidth;\r\n  }\r\n\r\n  constructor(public slider: HTMLElement, public config: GalleryConfig) {\r\n  }\r\n\r\n  getScrollToValue(el: HTMLElement, behavior: ScrollBehavior): SmoothScrollOptions {\r\n    const position: number = el.offsetLeft - ((this.clientSize - el.clientWidth) / 2);\r\n    return {\r\n      behavior,\r\n      start: position\r\n    };\r\n  }\r\n\r\n  getRootMargin(): string {\r\n    return `1000px 1px 1000px 1px`;\r\n  }\r\n\r\n  getElementRootMargin(viewport: HTMLElement, el: HTMLElement): string {\r\n    const rootMargin: number = -1 * ((viewport.clientWidth - el.clientWidth) / 2) + 1;\r\n    return `0px ${ rootMargin }px 0px ${ rootMargin }px`;\r\n  }\r\n\r\n  getCentralizerStartSize(): number {\r\n    if (this.isContentLessThanContainer) {\r\n      const size: number = this.clientSize - this.slider.firstElementChild.clientWidth;\r\n      return size / 2;\r\n    }\r\n    return (this.clientSize / 2) - (this.slider.firstElementChild.firstElementChild?.clientWidth / 2);\r\n  }\r\n\r\n  getCentralizerEndSize(): number {\r\n    if (this.isContentLessThanContainer) {\r\n      const size: number = this.clientSize - this.slider.firstElementChild.clientWidth;\r\n      return size / 2;\r\n    }\r\n    return (this.clientSize / 2) - (this.slider.firstElementChild.lastElementChild?.clientWidth / 2);\r\n  }\r\n\r\n  getHammerVelocity(e: any): number {\r\n    return e.velocityX;\r\n  }\r\n\r\n  getHammerValue(value: number, e: any, behavior: ScrollBehavior): ScrollToOptions {\r\n    return {\r\n      behavior,\r\n      left: value - e.deltaX\r\n    };\r\n  }\r\n\r\n  // getDraggingProperty(e: MouseEvent): number {\r\n  //   return e.clientX;\r\n  // }\r\n\r\n  // getDraggingValue(value: number, delta: number, behavior: ScrollBehavior): ScrollToOptions {\r\n  //   return {\r\n  //     behavior,\r\n  //     left: value - delta\r\n  //   };\r\n  // }\r\n}\r\n\r\nexport class VerticalAdapter implements SliderAdapter {\r\n\r\n  readonly hammerDirection: number = DIRECTION_UP | DIRECTION_DOWN;\r\n\r\n  readonly scrollSnapType: string = 'y mandatory';\r\n\r\n  get scrollValue(): number {\r\n    return this.slider.scrollTop;\r\n  }\r\n\r\n  get clientSize(): number {\r\n    return this.slider.clientHeight;\r\n  }\r\n\r\n  get isContentLessThanContainer(): boolean {\r\n    return this.clientSize >= this.slider.firstElementChild.clientHeight;\r\n  }\r\n\r\n  constructor(public slider: HTMLElement, public config: GalleryConfig) {\r\n  }\r\n\r\n  getScrollToValue(el: HTMLElement, behavior: ScrollBehavior): SmoothScrollOptions {\r\n    const position: number = el.offsetTop - ((this.clientSize - el.clientHeight) / 2);\r\n    return {\r\n      behavior,\r\n      top: position\r\n    };\r\n  }\r\n\r\n  getRootMargin(): string {\r\n    return `1px 1000px 1px 1000px`;\r\n  }\r\n\r\n  getElementRootMargin(viewport: HTMLElement, el: HTMLElement): string {\r\n    const rootMargin: number = -1 * ((viewport.clientHeight - el.clientHeight) / 2) + 1;\r\n    return `${ rootMargin }px 0px ${ rootMargin }px 0px`;\r\n  }\r\n\r\n  getCentralizerStartSize(): number {\r\n    if (this.isContentLessThanContainer) {\r\n      const size = this.clientSize - this.slider.firstElementChild.clientHeight;\r\n      return size / 2;\r\n    }\r\n    return (this.clientSize / 2) - (this.slider.firstElementChild.firstElementChild?.clientHeight / 2);\r\n  }\r\n\r\n  getCentralizerEndSize(): number {\r\n    if (this.isContentLessThanContainer) {\r\n      const size = this.clientSize - this.slider.firstElementChild.clientHeight;\r\n      return size / 2;\r\n    }\r\n    return (this.clientSize / 2) - (this.slider.firstElementChild.lastElementChild?.clientHeight / 2);\r\n  }\r\n\r\n  getHammerVelocity(e: any): number {\r\n    return e.velocityY;\r\n  }\r\n\r\n  getHammerValue(value: number, e: any, behavior: ScrollBehavior): ScrollToOptions {\r\n    return {\r\n      behavior,\r\n      top: value - e.deltaY\r\n    };\r\n  }\r\n\r\n  // getDraggingProperty(e: MouseEvent): number {\r\n  //   return e.clientY;\r\n  // }\r\n\r\n  // getDraggingValue(value: number, delta: number, behavior: ScrollBehavior): ScrollToOptions {\r\n  //   return {\r\n  //     behavior,\r\n  //     top: value - delta\r\n  //   };\r\n  // }\r\n}\r\n","export abstract class SliderAdapter {\r\n\r\n  readonly abstract hammerDirection: number;\r\n\r\n  readonly abstract scrollSnapType: string;\r\n\r\n  abstract get scrollValue(): number;\r\n\r\n  abstract get clientSize(): number;\r\n\r\n  abstract get isContentLessThanContainer(): boolean;\r\n\r\n  abstract getScrollToValue(el: Element, behavior: ScrollBehavior): ScrollToOptions;\r\n\r\n  abstract getCentralizerStartSize(): number;\r\n\r\n  abstract getCentralizerEndSize(): number;\r\n\r\n  abstract getRootMargin(): string;\r\n\r\n  abstract getElementRootMargin(viewport: HTMLElement, el: HTMLElement): string;\r\n\r\n  abstract getHammerVelocity(e): number;\r\n\r\n  abstract getHammerValue(value: number, delta: number, behavior: ScrollBehavior): ScrollToOptions;\r\n\r\n  // abstract getDraggingValue(value: number, delta: number, behavior: ScrollBehavior): ScrollToOptions;\r\n\r\n  // abstract getDraggingProperty(e: MouseEvent): number;\r\n}\r\n","/**\r\n * https://github.com/gre/bezier-easing\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n */\r\n\r\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\r\nconst NEWTON_ITERATIONS = 4;\r\nconst NEWTON_MIN_SLOPE = 0.001;\r\nconst SUBDIVISION_PRECISION = 0.0000001;\r\nconst SUBDIVISION_MAX_ITERATIONS = 10;\r\n\r\nconst kSplineTableSize = 11;\r\nconst kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\r\n\r\nconst float32ArraySupported = typeof Float32Array === 'function';\r\n\r\nfunction A(aA1, aA2) {\r\n  return 1.0 - 3.0 * aA2 + 3.0 * aA1;\r\n}\r\n\r\nfunction B(aA1, aA2) {\r\n  return 3.0 * aA2 - 6.0 * aA1;\r\n}\r\n\r\nfunction C(aA1) {\r\n  return 3.0 * aA1;\r\n}\r\n\r\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\r\nfunction calcBezier(aT, aA1, aA2) {\r\n  return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\r\n}\r\n\r\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\r\nfunction getSlope(aT, aA1, aA2) {\r\n  return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\r\n}\r\n\r\nfunction binarySubdivide(aX, aA, aB, mX1, mX2) {\r\n  let currentX, currentT, i = 0;\r\n  do {\r\n    currentT = aA + (aB - aA) / 2.0;\r\n    currentX = calcBezier(currentT, mX1, mX2) - aX;\r\n    if (currentX > 0.0) {\r\n      aB = currentT;\r\n    } else {\r\n      aA = currentT;\r\n    }\r\n  } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\r\n  return currentT;\r\n}\r\n\r\nfunction newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\r\n  for (let i = 0; i < NEWTON_ITERATIONS; ++i) {\r\n    let currentSlope = getSlope(aGuessT, mX1, mX2);\r\n    if (currentSlope === 0.0) {\r\n      return aGuessT;\r\n    }\r\n    let currentX = calcBezier(aGuessT, mX1, mX2) - aX;\r\n    aGuessT -= currentX / currentSlope;\r\n  }\r\n  return aGuessT;\r\n}\r\n\r\nfunction LinearEasing(x) {\r\n  return x;\r\n}\r\n\r\nexport default function bezier(mX1, mY1, mX2, mY2) {\r\n  if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\r\n    throw new Error('bezier x values must be in [0, 1] range');\r\n  }\r\n\r\n  if (mX1 === mY1 && mX2 === mY2) {\r\n    return LinearEasing;\r\n  }\r\n\r\n  // Precompute samples table\r\n  let sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\r\n  for (let i = 0; i < kSplineTableSize; ++i) {\r\n    sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\r\n  }\r\n\r\n  function getTForX(aX) {\r\n    let intervalStart = 0.0;\r\n    let currentSample = 1;\r\n    let lastSample = kSplineTableSize - 1;\r\n\r\n    for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\r\n      intervalStart += kSampleStepSize;\r\n    }\r\n    --currentSample;\r\n\r\n    // Interpolate to provide an initial guess for t\r\n    let dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\r\n    let guessForT = intervalStart + dist * kSampleStepSize;\r\n\r\n    let initialSlope = getSlope(guessForT, mX1, mX2);\r\n    if (initialSlope >= NEWTON_MIN_SLOPE) {\r\n      return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\r\n    } else if (initialSlope === 0.0) {\r\n      return guessForT;\r\n    } else {\r\n      return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\r\n    }\r\n  }\r\n\r\n  return function BezierEasing(x) {\r\n    // Because JavaScript number are imprecise, we should guarantee the extremes are right.\r\n    if (x === 0) {\r\n      return 0;\r\n    }\r\n    if (x === 1) {\r\n      return 1;\r\n    }\r\n    return calcBezier(getTForX(x), mY1, mY2);\r\n  };\r\n};\r\n","import {\r\n  Directive,\r\n  Inject,\r\n  Input,\r\n  Output,\r\n  NgZone,\r\n  OnInit,\r\n  OnDestroy,\r\n  ElementRef,\r\n  EventEmitter\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Dir } from '@angular/cdk/bidi';\r\nimport { _Bottom, _Left, _Right, _Top, _Without } from '@angular/cdk/scrolling';\r\nimport { getRtlScrollAxisType, RtlScrollAxisType } from '@angular/cdk/platform';\r\nimport {\r\n  Observable,\r\n  Subject,\r\n  Subscriber,\r\n  Subscription,\r\n  of,\r\n  take,\r\n  merge,\r\n  expand,\r\n  fromEvent,\r\n  switchMap,\r\n  takeUntil,\r\n  takeWhile,\r\n  finalize\r\n} from 'rxjs';\r\nimport BezierEasing from './bezier-easing';\r\nimport { GalleryConfig } from '../models/config.model';\r\nimport { SmoothScrollOptions, SmoothScrollStep, SmoothScrollToOptions } from './index';\r\nimport { SliderAdapter } from '../components/adapters';\r\n\r\ndeclare const Hammer: any;\r\n\r\n@Directive({\r\n  selector: '[smoothScroll]',\r\n  standalone: true,\r\n  providers: [Dir]\r\n})\r\nexport class SmoothScroll implements OnInit, OnDestroy {\r\n\r\n  /** HammerJS instance */\r\n  private _hammer: any;\r\n\r\n  private readonly _scrollController: Subject<SmoothScrollStep> = new Subject<SmoothScrollStep>();\r\n\r\n  private readonly _finished: Subject<void> = new Subject<void>();\r\n\r\n  private readonly _el: HTMLElement;\r\n\r\n  private _isInterruptedByMouse: boolean;\r\n\r\n  private _subscription: Subscription;\r\n\r\n  private get _w(): Window {\r\n    return this._document.defaultView;\r\n  }\r\n\r\n  /**\r\n   * Timing method\r\n   */\r\n  private get _now(): () => number {\r\n    return this._w.performance?.now?.bind(this._w.performance) || Date.now;\r\n  }\r\n\r\n  @Input()\r\n  set smoothScroll(value: SmoothScrollOptions) {\r\n    if (value) {\r\n      this._zone.runOutsideAngular(() => {\r\n        this.scrollTo(value);\r\n      });\r\n    }\r\n  }\r\n\r\n  @Input() adapter: SliderAdapter;\r\n\r\n  @Input() config: GalleryConfig;\r\n\r\n  @Input('smoothScrollInterruptOnMousemove') interruptOnMousemove: boolean;\r\n\r\n  @Output() isScrollingChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n  constructor(@Inject(DOCUMENT) private _document: Document,\r\n              private _zone: NgZone,\r\n              private _dir: Dir,\r\n              _el: ElementRef<HTMLElement>) {\r\n    this._el = _el.nativeElement;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this._subscription = this._scrollController.pipe(\r\n      switchMap((context: SmoothScrollStep) => {\r\n        this._zone.run(() => {\r\n          this.isScrollingChange.emit(true);\r\n        });\r\n\r\n        this._el.classList.add('g-scrolling');\r\n        this._el.style.setProperty('--slider-scroll-snap-type', 'none');\r\n\r\n        // Scroll each step recursively\r\n        return of(null).pipe(\r\n          expand(() => this._step(context).pipe(\r\n            takeWhile((currContext: SmoothScrollStep) => this._isFinished(currContext)),\r\n            takeUntil(this._finished)\r\n          )),\r\n          finalize(() => this.resetElement()),\r\n          takeUntil(this._interrupted()),\r\n        );\r\n      })\r\n    ).subscribe();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._subscription?.unsubscribe();\r\n    this._scrollController.complete();\r\n  }\r\n\r\n  /**\r\n   * changes scroll position inside an element\r\n   */\r\n  private _scrollElement(x: number, y: number): void {\r\n    this._el.scrollLeft = x;\r\n    this._el.scrollTop = y;\r\n  }\r\n\r\n  private resetElement(): void {\r\n    this._zone.run(() => {\r\n      this.isScrollingChange.emit(false);\r\n    });\r\n\r\n    this._el.classList.remove('g-scrolling');\r\n    if (!this._isInterruptedByMouse) {\r\n      this._el.style.setProperty('--slider-scroll-snap-type', this.adapter.scrollSnapType);\r\n    }\r\n    this._isInterruptedByMouse = false;\r\n  }\r\n\r\n  /**\r\n   * Checks if smooth scroll has reached, cleans up the smooth scroll stream and resolves its promise\r\n   */\r\n  private _isFinished(context: SmoothScrollStep): boolean {\r\n    if (context.currentX !== context.x || context.currentY !== context.y) {\r\n      return true;\r\n    }\r\n    this._finished.next();\r\n    return false;\r\n  }\r\n\r\n  /**\r\n   * Terminates an ongoing smooth scroll\r\n   */\r\n  private _interrupted(): Observable<Event | void> {\r\n    let interrupt$: Observable<Event | void>;\r\n    if (this.interruptOnMousemove && typeof Hammer !== 'undefined') {\r\n      this._hammer = new Hammer(this._el, { inputClass: Hammer.MouseInput });\r\n      this._hammer.get('pan').set({ direction: this.adapter.hammerDirection });\r\n\r\n      // For gallery thumb slider, dragging thumbnails should cancel the ongoing scroll\r\n      interrupt$ = merge(\r\n        new Observable<void>((subscriber: Subscriber<void>) => {\r\n          this._hammer.on('panstart', () => {\r\n            this._isInterruptedByMouse = true;\r\n            subscriber.next();\r\n            subscriber.complete();\r\n          });\r\n          return () => {\r\n            this._hammer.destroy();\r\n          }\r\n        }),\r\n        fromEvent(this._el, 'wheel', { passive: true, capture: true }),\r\n        fromEvent(this._el, 'touchmove', { passive: true, capture: true }),\r\n      )\r\n    } else {\r\n      interrupt$ = merge(\r\n        fromEvent(this._el, 'wheel', { passive: true, capture: true }),\r\n        fromEvent(this._el, 'touchmove', { passive: true, capture: true }),\r\n      )\r\n    }\r\n    return interrupt$.pipe(take(1));\r\n  }\r\n\r\n  /**\r\n   * A function called recursively that, given a context, steps through scrolling\r\n   */\r\n  private _step(context: SmoothScrollStep): Observable<SmoothScrollStep> {\r\n    return new Observable((subscriber: Subscriber<SmoothScrollStep>) => {\r\n      let elapsed: number = (this._now() - context.startTime) / context.duration;\r\n\r\n      // avoid elapsed times higher than one\r\n      elapsed = elapsed > 1 ? 1 : elapsed;\r\n\r\n      // apply easing to elapsed time\r\n      const value: number = context.easing(elapsed);\r\n\r\n      context.currentX = context.startX + (context.x - context.startX) * value;\r\n      context.currentY = context.startY + (context.y - context.startY) * value;\r\n\r\n      this._scrollElement(context.currentX, context.currentY);\r\n      // Proceed to the step\r\n      requestAnimationFrame(() => {\r\n        subscriber.next(context);\r\n        subscriber.complete();\r\n      });\r\n    });\r\n  }\r\n\r\n  private _applyScrollToOptions(options: SmoothScrollToOptions): void {\r\n    if (!options.duration) {\r\n      this._scrollElement(options.left, options.top);\r\n    }\r\n\r\n    const context: SmoothScrollStep = {\r\n      scrollable: this._el,\r\n      startTime: this._now(),\r\n      startX: this._el.scrollLeft,\r\n      startY: this._el.scrollTop,\r\n      x: options.left == null ? this._el.scrollLeft : ~~options.left,\r\n      y: options.top == null ? this._el.scrollTop : ~~options.top,\r\n      duration: options.duration,\r\n      easing: BezierEasing(options.easing.x1, options.easing.y1, options.easing.x2, options.easing.y2)\r\n    };\r\n\r\n    this._scrollController.next(context);\r\n  }\r\n\r\n  /**\r\n   * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo\r\n   * method, since browsers are not consistent about what scrollLeft means in RTL. For this method\r\n   * left and right always refer to the left and right side of the scrolling container irrespective\r\n   * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\r\n   * in an RTL context.\r\n   * @param params specified the offsets to scroll to.\r\n   */\r\n  scrollTo(params: SmoothScrollOptions): void {\r\n    const isRtl: boolean = this._dir.value === 'rtl';\r\n    const rtlScrollAxisType: RtlScrollAxisType = getRtlScrollAxisType();\r\n\r\n    const options: SmoothScrollToOptions = {\r\n      ...params,\r\n      ...({\r\n        // Rewrite start & end offsets as right or left offsets.\r\n        left: params.left == null ? (isRtl ? params.end : params.start) : params.left,\r\n        right: params.right == null ? (isRtl ? params.start : params.end) : params.right\r\n      } as _Without<_Bottom & _Top>),\r\n      duration: params.behavior === 'smooth' ? this.config.scrollDuration : 0,\r\n      easing: this.config.scrollEase,\r\n    };\r\n\r\n    // Rewrite the bottom offset as a top offset.\r\n    if (options.bottom != null) {\r\n      (options as _Without<_Bottom> & _Top).top = this._el.scrollHeight - this._el.clientHeight - options.bottom;\r\n    }\r\n\r\n    // Rewrite the right offset as a left offset.\r\n    if (isRtl && rtlScrollAxisType !== RtlScrollAxisType.NORMAL) {\r\n      if (options.left != null) {\r\n        (options as _Without<_Left> & _Right).right = this._el.scrollWidth - this._el.clientWidth - options.left;\r\n      }\r\n\r\n      if (rtlScrollAxisType === RtlScrollAxisType.INVERTED) {\r\n        options.left = options.right;\r\n      } else if (rtlScrollAxisType === RtlScrollAxisType.NEGATED) {\r\n        options.left = options.right ? -options.right : options.right;\r\n      }\r\n    } else {\r\n      if (options.right != null) {\r\n        (options as _Without<_Right> & _Left).left = this._el.scrollWidth - this._el.clientWidth - options.right;\r\n      }\r\n    }\r\n    return this._applyScrollToOptions(options);\r\n  }\r\n}\r\n","import {\r\n  Directive,\r\n  Inject,\r\n  Input,\r\n  Output,\r\n  OnChanges,\r\n  OnDestroy,\r\n  SimpleChanges,\r\n  NgZone,\r\n  ElementRef,\r\n  EventEmitter\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { SliderAdapter } from '../components/adapters';\r\nimport { GalleryState } from '../models/gallery.model';\r\nimport { GalleryConfig } from '../models/config.model';\r\nimport { Orientation } from '../models/constants';\r\nimport { GalleryItemComponent } from '../components/gallery-item.component';\r\nimport { GalleryThumbComponent } from '../components/gallery-thumb.component';\r\n\r\ndeclare const Hammer: any;\r\n\r\n@Directive({\r\n  selector: '[hammerSliding]',\r\n  standalone: true\r\n})\r\nexport class HammerSliding implements OnChanges, OnDestroy {\r\n\r\n  /** HammerJS instance */\r\n  private _hammer: any;\r\n\r\n  get _viewport(): HTMLElement {\r\n    return this._el.nativeElement;\r\n  }\r\n\r\n  @Input('hammerSliding') enabled: boolean;\r\n\r\n  @Input() galleryId: string;\r\n\r\n  @Input() items: GalleryItemComponent[] | GalleryThumbComponent[];\r\n\r\n  @Input() adapter: SliderAdapter;\r\n\r\n  @Input() state: GalleryState;\r\n\r\n  @Input() config: GalleryConfig;\r\n\r\n  @Output() activeIndexChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n  @Output() isSlidingChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n  constructor(@Inject(DOCUMENT) private _document: Document,\r\n              private _el: ElementRef<HTMLElement>,\r\n              private _dir: Directionality,\r\n              private _platform: Platform,\r\n              private _zone: NgZone) {\r\n  }\r\n\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.enabled && changes.enabled?.currentValue !== changes.enabled?.previousValue) {\r\n      this.enabled ? this._subscribe() : this._unsubscribe();\r\n    }\r\n    if (!changes.adapter?.firstChange && changes.adapter?.currentValue !== changes.adapter?.previousValue) {\r\n      this.enabled ? this._subscribe() : this._unsubscribe();\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._unsubscribe();\r\n  }\r\n\r\n  private _subscribe(): void {\r\n    this._unsubscribe();\r\n\r\n    if (!this._platform.ANDROID && !this._platform.IOS && typeof Hammer !== 'undefined') {\r\n      this._zone.runOutsideAngular(() => {\r\n\r\n        const direction: number = this.adapter.hammerDirection;\r\n        this._hammer = new Hammer(this._el.nativeElement, { inputClass: Hammer.MouseInput });\r\n        this._hammer.get('pan').set({ direction });\r\n\r\n        let offset: number;\r\n\r\n        // Set panOffset for sliding on pan start event\r\n        this._hammer.on('panstart', () => {\r\n          this._zone.run(() => {\r\n            this.isSlidingChange.emit(true);\r\n          });\r\n\r\n          offset = this.adapter.scrollValue;\r\n          this._viewport.classList.add('g-sliding');\r\n          this._viewport.style.setProperty('--slider-scroll-snap-type', 'none');\r\n        });\r\n\r\n        this._hammer.on('panmove', (e: any) => this._viewport.scrollTo(this.adapter.getHammerValue(offset, e, 'auto')));\r\n\r\n        this._hammer.on('panend', (e: any) => {\r\n          this._document.onselectstart = null;\r\n          this._viewport.classList.remove('g-sliding');\r\n          const index: number = this.getIndexOnMouseUp(e);\r\n\r\n          this._zone.run(() => {\r\n            this.isSlidingChange.emit(false);\r\n            this.activeIndexChange.emit(index);\r\n          });\r\n        });\r\n      });\r\n    }\r\n  }\r\n\r\n  private _unsubscribe(): void {\r\n    this._hammer?.destroy();\r\n  }\r\n\r\n  private getIndexOnMouseUp(e: any): number {\r\n    // Check if scrolled item is great enough to navigate\r\n    const currElement: Element = this.items[this.state.currIndex].nativeElement;\r\n\r\n    // Find the gallery item element in the center elements\r\n    const elementAtCenter: Element = this.getElementFromViewportCenter();\r\n\r\n    // Check if center item can be taken from element using\r\n    if (elementAtCenter && elementAtCenter !== currElement) {\r\n      return +elementAtCenter.getAttribute('galleryIndex');\r\n    }\r\n\r\n    const velocity: number = this.adapter.getHammerVelocity(e);\r\n    // Check if velocity is great enough to navigate\r\n    if (Math.abs(velocity) > 0.3) {\r\n      if (this.config.orientation === Orientation.Horizontal) {\r\n        if (velocity > 0) {\r\n          return this._dir.value === 'rtl' ? this.state.currIndex + 1 : this.state.currIndex - 1;\r\n        }\r\n        return this._dir.value === 'rtl' ? this.state.currIndex - 1 : this.state.currIndex + 1;\r\n      } else {\r\n        return velocity > 0 ? this.state.currIndex - 1 : this.state.currIndex + 1;\r\n      }\r\n    }\r\n\r\n    // Reset position to the current index\r\n    return -1;\r\n  }\r\n\r\n  private getElementFromViewportCenter(): Element {\r\n    // Get slider position relative to the document\r\n    const sliderRect: DOMRect = this._viewport.getBoundingClientRect();\r\n    // Try look for the center item using `elementsFromPoint` function\r\n    const centerElements: Element[] = this._document.elementsFromPoint(\r\n      sliderRect.x + (sliderRect.width / 2),\r\n      sliderRect.y + (sliderRect.height / 2)\r\n    );\r\n    // Find the gallery item element in the center elements\r\n    return centerElements.find((element: Element) => {\r\n      return element.getAttribute('galleryId') === this.galleryId;\r\n    });\r\n  }\r\n}\r\n","import { Observable, Subscriber, mergeMap, filter, map } from 'rxjs';\r\n\r\nexport class ActiveItemObserver {\r\n\r\n  observe(root: HTMLElement, elements: HTMLElement[], rootMargin: string): Observable<number> {\r\n    return createIntersectionObserver(root, elements, rootMargin).pipe(\r\n      map((entry: IntersectionObserverEntry) => {\r\n        if (entry.isIntersecting) {\r\n          entry.target.classList.add('g-item-highlight');\r\n          return +entry.target.getAttribute('galleryIndex');\r\n        } else {\r\n          entry.target.classList.remove('g-item-highlight');\r\n          return -1;\r\n        }\r\n      }),\r\n      filter((index: number) => index !== -1)\r\n    );\r\n  }\r\n}\r\n\r\nfunction createIntersectionObserver(root: HTMLElement, elements: HTMLElement[], rootMargin: string): Observable<IntersectionObserverEntry> {\r\n  return new Observable((observer: Subscriber<IntersectionObserverEntry[]>) => {\r\n    const intersectionObserver: IntersectionObserver = new IntersectionObserver(\r\n      (entries: IntersectionObserverEntry[]) => observer.next(entries),\r\n      {\r\n        root,\r\n        rootMargin,\r\n        threshold: 1\r\n      }\r\n    );\r\n    elements.forEach((element: HTMLElement) => intersectionObserver.observe(element));\r\n    return () => {\r\n      elements.forEach((element: HTMLElement) => intersectionObserver.unobserve(element));\r\n      intersectionObserver.disconnect();\r\n    };\r\n  }).pipe(\r\n    mergeMap((entries: IntersectionObserverEntry[]) => entries)\r\n  );\r\n}\r\n\r\n","import { Directive, Input, Output, OnChanges, OnDestroy, NgZone, ElementRef, EventEmitter } from '@angular/core';\r\nimport { skip, Subscription } from 'rxjs';\r\nimport { GalleryConfig } from '../models/config.model';\r\nimport { ActiveItemObserver } from './active-item-observer';\r\nimport { SliderAdapter } from '../components/adapters';\r\nimport { GalleryItemComponent } from '../components/gallery-item.component';\r\n\r\n@Directive({\r\n  selector: '[sliderIntersectionObserver]',\r\n  standalone: true\r\n})\r\nexport class SliderIntersectionObserver implements OnChanges, OnDestroy {\r\n\r\n  private _currentSubscription: Subscription;\r\n\r\n  private _sensor: ActiveItemObserver = new ActiveItemObserver();\r\n\r\n  private get _viewport(): HTMLElement {\r\n    return this._el.nativeElement;\r\n  }\r\n\r\n  @Input() adapter: SliderAdapter;\r\n\r\n  @Input() items: GalleryItemComponent[];\r\n\r\n  @Input() config: GalleryConfig;\r\n\r\n  @Input('sliderIntersectionObserverDisabled') disabled: boolean;\r\n\r\n  @Output() activeIndexChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n  constructor(private _zone: NgZone, private _el: ElementRef<HTMLElement>) {\r\n  }\r\n\r\n  ngOnChanges(): void {\r\n    (this.config.itemAutosize || this.disabled) ? this._unsubscribe() : this._subscribe();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._unsubscribe();\r\n  }\r\n\r\n  private _subscribe(): void {\r\n    this._unsubscribe();\r\n\r\n    if (!!this.adapter && !!this.items?.length) {\r\n      const rootMargin: string = this.adapter.getRootMargin();\r\n      if (this.config.debug) {\r\n        this._viewport.style.setProperty('--intersection-margin', `\"INTERSECTION(${ rootMargin })\"`);\r\n      }\r\n\r\n      this._zone.runOutsideAngular(() => {\r\n        this._currentSubscription = this._sensor.observe(\r\n          this._viewport,\r\n          this.items.map((item: GalleryItemComponent) => item.nativeElement),\r\n          rootMargin\r\n        ).subscribe((index: number) => {\r\n          this._zone.run(() => this.activeIndexChange.emit(index));\r\n        });\r\n      });\r\n    }\r\n  }\r\n\r\n  private _unsubscribe(): void {\r\n    this._currentSubscription?.unsubscribe();\r\n  }\r\n}\r\n","import { Observable, Subscriber, mergeMap } from 'rxjs';\r\n\r\nexport function resizeObservable(el: HTMLElement, setter?: (ref: ResizeObserver) => void): Observable<ResizeObserverEntry> {\r\n  return new Observable((subscriber: Subscriber<ResizeObserverEntry[]>) => {\r\n    const resizeObserver: ResizeObserver = new ResizeObserver((entries: ResizeObserverEntry[]) => subscriber.next(entries));\r\n    resizeObserver.observe(el);\r\n    if (setter) {\r\n      setter(resizeObserver);\r\n    }\r\n    return () => resizeObserver.disconnect();\r\n  }).pipe(\r\n    mergeMap((entries: ResizeObserverEntry[]) => entries)\r\n  );\r\n}\r\n\r\n","import { Component, Input, ViewChild, ElementRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { NgIf } from '@angular/common';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\n\r\n@Component({\r\n  selector: 'gallery-iframe',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  template: `\r\n    <iframe *ngIf=\"autoplay; else default\"\r\n            #iframe\r\n            [attr.loading]=\"loadingAttr\"\r\n            allowfullscreen\r\n            allow\r\n            style=\"border:none\"\r\n            [src]=\"iframeSrc\">\r\n    </iframe>\r\n    <ng-template #default>\r\n      <iframe #iframe\r\n              [attr.loading]=\"loadingAttr\"\r\n              allowfullscreen\r\n              style=\"border:none\"\r\n              [src]=\"iframeSrc\">\r\n      </iframe>\r\n    </ng-template>\r\n  `,\r\n  standalone: true,\r\n  imports: [NgIf]\r\n})\r\nexport class GalleryIframeComponent {\r\n\r\n  iframeSrc: SafeResourceUrl;\r\n  videoSrc: string;\r\n\r\n  @Input('src') set src(src: string) {\r\n    this.videoSrc = src;\r\n    this.iframeSrc = this._sanitizer.bypassSecurityTrustResourceUrl(src);\r\n  }\r\n\r\n  @Input('pause') set pauseVideo(shouldPause: boolean) {\r\n    if (this.iframe?.nativeElement) {\r\n      if (shouldPause) {\r\n        const iframe: HTMLIFrameElement = this.iframe.nativeElement;\r\n        iframe.src = null;\r\n\r\n        if (!this.autoplay && this.videoSrc) {\r\n          this.iframeSrc = this._sanitizer.bypassSecurityTrustResourceUrl(this.videoSrc);\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  @Input() autoplay: boolean;\r\n\r\n  @Input() loadingAttr: 'eager' | 'lazy';\r\n\r\n  @ViewChild('iframe') iframe: ElementRef;\r\n\r\n  constructor(private _sanitizer: DomSanitizer) {\r\n  }\r\n}\r\n","import { Component, Input, Output, EventEmitter, OnInit, ViewChild, ElementRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { NgFor, NgIf } from '@angular/common';\r\n\r\n@Component({\r\n  selector: 'gallery-video',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  template: `\r\n    <video #video\r\n           [attr.mute]=\"mute\"\r\n           [attr.controlsList]=\"controlsList\"\r\n           [attr.disablePictureInPicture]=\"disablePictureInPicture\"\r\n           [disableRemotePlayback]=\"disableRemotePlayback\"\r\n           [controls]=\"controls\"\r\n           [loop]=\"loop\"\r\n           [poster]=\"poster\"\r\n           (error)=\"error.emit($event)\">\r\n      <ng-container *ngFor=\"let src of videoSources\">\r\n        <source *ngIf=\"src?.type; else noType\" [src]=\"src?.url\" [type]=\"src.type\"/>\r\n        <ng-template #noType>\r\n          <source [src]=\"src?.url\"/>\r\n        </ng-template>\r\n      </ng-container>\r\n    </video>\r\n  `,\r\n  standalone: true,\r\n  imports: [NgFor, NgIf]\r\n})\r\nexport class GalleryVideoComponent implements OnInit {\r\n\r\n  videoSources: { url: string, type?: string }[];\r\n\r\n  @Input() src: string | { url: string, type?: string }[];\r\n  @Input() poster: string;\r\n  @Input() mute: boolean;\r\n  @Input() loop: boolean;\r\n  @Input() controls: boolean;\r\n  @Input() controlsList: 'nodownload' | 'nofullscreen' | 'noremoteplayback';\r\n  @Input() disableRemotePlayback: boolean;\r\n  @Input() disablePictureInPicture: boolean;\r\n\r\n  @Input('pause') set pauseVideo(shouldPause: boolean) {\r\n    if (this.video.nativeElement) {\r\n      const video: HTMLVideoElement = this.video.nativeElement;\r\n      if (shouldPause && !video.paused) {\r\n        video.pause();\r\n      }\r\n    }\r\n  }\r\n\r\n  @Input('play') set playVideo(shouldPlay: boolean) {\r\n    if (this.video.nativeElement) {\r\n      const video: HTMLVideoElement = this.video.nativeElement;\r\n      if (shouldPlay) {\r\n        video.play();\r\n      }\r\n    }\r\n  }\r\n\r\n  /** Stream that emits when an error occurs */\r\n  @Output() error = new EventEmitter<ErrorEvent>();\r\n\r\n  @ViewChild('video', { static: true }) video: ElementRef;\r\n\r\n  ngOnInit() {\r\n    if (this.src instanceof Array) {\r\n      // If video has multiple sources\r\n      this.videoSources = [...this.src];\r\n    } else {\r\n      this.videoSources = [{ url: this.src }];\r\n    }\r\n  }\r\n}\r\n","export const imageFailedSvg = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<svg width=\"100\" height=\"100\" version=\"1.1\" viewBox=\"0 0 256 256\" xml:space=\"preserve\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g transform=\"translate(1.4066 1.4066) scale(2.81)\">\r\n\\t<path d=\"m74.453 48.627c-5.538 0-11.075-2.107-15.291-6.324-6.11-6.11-7.768-14.99-5.024-22.629h-48.08c-3.346 1e-3 -6.058 2.713-6.058 6.059v16.322l23.834 20.315c2.278 1.942 5.573 2.119 8.047 0.434l14.382-9.801c2.33-1.588 5.408-1.531 7.677 0.141l27.15 20.001v-25.574c-2.156 0.692-4.394 1.056-6.637 1.056z\" fill=\"#c1e5f4\" stroke-linecap=\"round\"/>\r\n <circle cx=\"27.942\" cy=\"37.942\" r=\"6.072\" fill=\"#fff0a9\"/>\r\n <path d=\"m85.446 16.02c-6.061-6.061-15.922-6.061-21.983 0s-6.061 15.923 0 21.984c3.031 3.031 7.011 4.546 10.992 4.546 3.98 0 7.962-1.515 10.992-4.545 2.936-2.937 4.553-6.841 4.553-10.993s-1.617-8.056-4.554-10.992zm-3.555 3.555c1.987 1.986 3.081 4.627 3.081 7.436 0 1.95-0.538 3.813-1.525 5.438l-14.428-14.428c4.043-2.442 9.384-1.934 12.872 1.554zm-14.873 14.874c-3.486-3.487-3.997-8.829-1.554-12.873l14.426 14.427c-4.043 2.443-9.385 1.932-12.872-1.554z\" fill=\"#e29393\" stroke-linecap=\"round\"/>\r\n <path d=\"m0 40.043v32.425c0 3.346 2.712 6.058 6.058 6.058h68.974c3.346 0 6.058-2.712 6.058-6.058v-1.335l-27.15-20.001c-2.27-1.672-5.348-1.729-7.677-0.141l-14.383 9.801c-2.473 1.686-5.769 1.508-8.047-0.434l-23.833-20.315z\" fill=\"#96ea9c\" stroke-linecap=\"round\"/>\r\n</g>\r\n</svg>\r\n`;\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, BehaviorSubject, filter, map, switchMap, EMPTY } from 'rxjs';\r\nimport { GalleryState } from '../models/gallery.model';\r\nimport { ItemState } from '../components/templates/items.model';\r\n\r\ninterface ImageRegistry {\r\n  state: Observable<ItemState>;\r\n  target: HTMLImageElement;\r\n}\r\n\r\n@Injectable()\r\nexport class ImgManager {\r\n\r\n  private readonly trigger$: BehaviorSubject<void> = new BehaviorSubject<void>(null);\r\n\r\n  private readonly images: Map<number, ImageRegistry> = new Map<number, ImageRegistry>();\r\n\r\n  getActiveItem(state$: Observable<GalleryState>): Observable<HTMLImageElement> {\r\n    return this.trigger$.pipe(\r\n      switchMap(() => state$.pipe(\r\n        switchMap((state: GalleryState) => {\r\n          const img: ImageRegistry = this.images.get(state.currIndex);\r\n          if (img) {\r\n            return img.state.pipe(\r\n              filter((state: ItemState) => state !== 'loading'),\r\n              map(() => img.target)\r\n            )\r\n          }\r\n          return EMPTY;\r\n        })\r\n      ))\r\n    );\r\n  }\r\n\r\n  addItem(index: number, payload: ImageRegistry): void {\r\n    this.images.set(index, payload);\r\n    this.trigger$.next();\r\n  }\r\n\r\n  deleteItem(index: number): void {\r\n    if (this.images.has(index)) {\r\n      this.images.delete(index);\r\n      this.trigger$.next();\r\n    }\r\n  }\r\n}\r\n","import { Directive, Input, HostListener, OnInit, OnDestroy, ElementRef } from '@angular/core';\r\nimport { ImgManager } from './img-manager';\r\nimport { GalleryItemComponent } from '../components/gallery-item.component';\r\n\r\n@Directive({\r\n  selector: 'img[galleryImage]',\r\n  standalone: true\r\n})\r\nexport class ImgRecognizer implements OnInit, OnDestroy {\r\n\r\n  @Input('galleryImage') index: number;\r\n\r\n  @HostListener('load', ['$event'])\r\n  onLoad() {\r\n    this.item.state$.next('success');\r\n  }\r\n\r\n  @HostListener('error', ['$event'])\r\n  onError() {\r\n    this.item.state$.next('failed');\r\n  }\r\n\r\n  constructor(private el: ElementRef<HTMLImageElement>, private manager: ImgManager, private item: GalleryItemComponent) {\r\n    if (item) {\r\n      // Mark the gallery-item component as an image item\r\n      item.isItemContainImage = true;\r\n    } else {\r\n      throw new Error('[NgGallery]: galleryImage directive should be only used inside gallery item templates!')\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.manager.addItem(this.index, {\r\n      state: this.item.state$.asObservable(),\r\n      target: this.el.nativeElement\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.manager.deleteItem(this.index);\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  Input,\r\n  Output,\r\n  HostBinding,\r\n  EventEmitter,\r\n  OnInit,\r\n  ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { NgSwitch, NgSwitchCase, NgIf } from '@angular/common';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { animate, style, transition, trigger } from '@angular/animations';\r\nimport { imageFailedSvg } from './svg-assets';\r\nimport { ImgRecognizer } from '../../utils/img-recognizer';\r\nimport { ItemState } from './items.model';\r\n\r\n@Component({\r\n  selector: 'gallery-image',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  styleUrls: ['./gallery-image.scss'],\r\n  animations: [\r\n    trigger('fadeIn', [\r\n      transition('* => success', [\r\n        style({ opacity: 0 }),\r\n        animate('300ms ease-in', style({ opacity: 1 }))\r\n      ])\r\n    ])\r\n  ],\r\n  template: `\r\n    <ng-container [ngSwitch]=\"state\">\r\n\r\n      <ng-container *ngIf=\"isThumbnail; else main\">\r\n        <img [@fadeIn]=\"state\"\r\n             [src]=\"src\"\r\n             [attr.alt]=\"alt\"\r\n             [attr.loading]=\"loadingAttr\"\r\n             [style.visibility]=\"state === 'success' ? 'visible' : 'hidden'\"\r\n             class=\"g-image-item\"\r\n             (load)=\"state = 'success'\"\r\n             (error)=\"state = 'failed'; error.emit($event)\"/>\r\n      </ng-container>\r\n      <ng-template #main>\r\n        <img [galleryImage]=\"index\"\r\n             [@fadeIn]=\"state\"\r\n             [src]=\"src\"\r\n             [attr.alt]=\"alt\"\r\n             [attr.loading]=\"loadingAttr\"\r\n             [style.visibility]=\"state === 'success' ? 'visible' : 'hidden'\"\r\n             class=\"g-image-item\"\r\n             (load)=\"state = 'success'\"\r\n             (error)=\"state = 'failed'; error.emit($event)\"/>\r\n      </ng-template>\r\n\r\n      <div *ngSwitchCase=\"'failed'\"\r\n           class=\"g-image-error-message\">\r\n        <div *ngIf=\"errorTemplate; else defaultError\"\r\n             [innerHTML]=\"errorTemplate\"></div>\r\n        <ng-template #defaultError>\r\n          <ng-container *ngIf=\"isThumbnail; else isLarge\">\r\n            <h4>\r\n              <div class=\"gallery-thumb-error\" [innerHTML]=\"errorSvg\"></div>\r\n            </h4>\r\n          </ng-container>\r\n          <ng-template #isLarge>\r\n            <h2>\r\n              <div class=\"gallery-image-error\" [innerHTML]=\"errorSvg\"></div>\r\n            </h2>\r\n            <p>Unable to load the image!</p>\r\n          </ng-template>\r\n        </ng-template>\r\n      </div>\r\n\r\n      <ng-container *ngSwitchCase=\"'loading'\">\r\n        <div *ngIf=\"loaderTemplate; else defaultLoader\"\r\n             class=\"g-loading\"\r\n             [innerHTML]=\"loaderTemplate\">\r\n        </div>\r\n        <ng-template #defaultLoader>\r\n          <div *ngIf=\"isThumbnail\" class=\"g-thumb-loading\"></div>\r\n        </ng-template>\r\n      </ng-container>\r\n    </ng-container>\r\n  `,\r\n  standalone: true,\r\n  imports: [NgSwitch, NgSwitchCase, NgIf, ImgRecognizer]\r\n})\r\n\r\nexport class GalleryImageComponent implements OnInit {\r\n\r\n  state: ItemState = 'loading';\r\n\r\n  /** Is thumbnail */\r\n  @Input() isThumbnail: boolean;\r\n\r\n  @Input() index: number;\r\n\r\n  /** Image loading attribute */\r\n  @Input() loadingAttr: 'eager' | 'lazy';\r\n\r\n  /** Image alt */\r\n  @Input() alt: string;\r\n\r\n  /** Image source URL */\r\n  @Input() src: string;\r\n\r\n  /** Custom loader template */\r\n  @Input() loadingIcon: string;\r\n  /** Custom loader safe template */\r\n  loaderTemplate: SafeHtml;\r\n\r\n  /** Custom error template */\r\n  @Input() loadingError: string;\r\n  /** Custom error safe template */\r\n  errorTemplate: SafeHtml;\r\n\r\n  @Input() errorIcon: string = imageFailedSvg;\r\n  errorSvg: SafeHtml;\r\n\r\n  /** Stream that emits when an error occurs */\r\n  @Output() error: EventEmitter<ErrorEvent> = new EventEmitter<ErrorEvent>();\r\n\r\n  @HostBinding('attr.imageState') get imageState(): string {\r\n    return this.state;\r\n  }\r\n\r\n  constructor(private _sanitizer: DomSanitizer) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    if (this.loadingIcon) {\r\n      this.loaderTemplate = this._sanitizer.bypassSecurityTrustHtml(this.loadingIcon);\r\n    }\r\n    if (this.loadingError) {\r\n      this.errorTemplate = this._sanitizer.bypassSecurityTrustHtml(this.loadingError);\r\n    }\r\n    if (this.errorIcon) {\r\n      this.errorSvg = this._sanitizer.bypassSecurityTrustHtml(this.errorIcon);\r\n    }\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  HostBinding,\r\n  Input,\r\n  Output,\r\n  EventEmitter,\r\n  ElementRef,\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { GalleryItemContext } from '../directives/gallery-item-def.directive';\r\nimport { GalleryIframeComponent } from './templates/gallery-iframe.component';\r\nimport { GalleryVideoComponent } from './templates/gallery-video.component';\r\nimport { GalleryImageComponent } from './templates/gallery-image.component';\r\nimport { GalleryConfig } from '../models/config.model';\r\nimport { GalleryItemType, GalleryItemTypes, LoadingStrategy } from '../models/constants';\r\nimport { GalleryItemData, ImageItemData, ItemState, VideoItemData, VimeoItemData, YoutubeItemData } from './templates/items.model';\r\n\r\n@Component({\r\n  selector: 'gallery-item',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  styleUrls: ['./gallery-item.scss'],\r\n  template: `\r\n    <ng-container *ngIf=\"load\" [ngSwitch]=\"type\">\r\n      <ng-container *ngSwitchCase=\"Types.Image\">\r\n        <gallery-image [src]=\"imageData.src\"\r\n                       [alt]=\"imageData.alt\"\r\n                       [index]=\"index\"\r\n                       [loadingAttr]=\"config.loadingAttr\"\r\n                       [loadingIcon]=\"config.loadingIcon\"\r\n                       [loadingError]=\"config.loadingError\"\r\n                       (error)=\"error.emit($event)\"></gallery-image>\r\n\r\n        <div *ngIf=\"config.imageTemplate\" class=\"g-template g-item-template\">\r\n          <ng-container *ngTemplateOutlet=\"config.imageTemplate; context: imageContext\"></ng-container>\r\n        </div>\r\n      </ng-container>\r\n\r\n      <gallery-video *ngSwitchCase=\"Types.Video\"\r\n                     [src]=\"videoData.src\"\r\n                     [mute]=\"videoData.mute\"\r\n                     [poster]=\"videoData.poster\"\r\n                     [controls]=\"videoData.controls\"\r\n                     [controlsList]=\"videoData.controlsList\"\r\n                     [disablePictureInPicture]=\"videoData.disablePictureInPicture\"\r\n                     [play]=\"isAutoPlay\"\r\n                     [pause]=\"currIndex !== index\"\r\n                     (error)=\"error.emit($event)\"></gallery-video>\r\n\r\n      <gallery-iframe *ngSwitchCase=\"Types.Youtube\"\r\n                      [src]=\"youtubeSrc\"\r\n                      [autoplay]=\"isAutoPlay\"\r\n                      [loadingAttr]=\"config.loadingAttr\"\r\n                      [pause]=\"currIndex !== index\"></gallery-iframe>\r\n\r\n      <gallery-iframe *ngSwitchCase=\"Types.Vimeo\"\r\n                      [src]=\"vimeoSrc\"\r\n                      [autoplay]=\"isAutoPlay\"\r\n                      [loadingAttr]=\"config.loadingAttr\"\r\n                      [pause]=\"currIndex !== index\"></gallery-iframe>\r\n\r\n      <gallery-iframe *ngSwitchCase=\"Types.Iframe\"\r\n                      [src]=\"data.src\"\r\n                      [loadingAttr]=\"config.loadingAttr\"></gallery-iframe>\r\n\r\n      <ng-container *ngSwitchDefault>\r\n        <div *ngIf=\"config.itemTemplate\" class=\"g-template g-item-template\">\r\n          <ng-container *ngTemplateOutlet=\"config.itemTemplate; context: itemContext\"></ng-container>\r\n        </div>\r\n      </ng-container>\r\n    </ng-container>\r\n  `,\r\n  standalone: true,\r\n  imports: [CommonModule, GalleryImageComponent, GalleryVideoComponent, GalleryIframeComponent]\r\n})\r\nexport class GalleryItemComponent implements AfterViewInit {\r\n\r\n  readonly Types = GalleryItemTypes;\r\n\r\n  /** A stream that indicates that the height was emitted after the image is loaded, used only for gallery image types */\r\n  readonly state$: BehaviorSubject<ItemState> = new BehaviorSubject<ItemState>('loading');\r\n\r\n  /** A flag that indicates if the item is type of image, it can be a custom template by the user,\r\n   * The img recognizer directive will set it to true*/\r\n  isItemContainImage: boolean;\r\n\r\n  /** Gallery config */\r\n  @Input() config: GalleryConfig;\r\n\r\n  /** Item's index in the gallery */\r\n  @Input() index: number;\r\n\r\n  /** The number of total items */\r\n  @Input() count: number;\r\n\r\n  /** Gallery current index */\r\n  @Input() currIndex: number;\r\n\r\n  /** Item's type 'image', 'video', 'youtube', 'Vimeo', 'iframe' */\r\n  @Input() type: GalleryItemType;\r\n\r\n  /** Item's data, this object contains the data required to display the content (e.g. src path) */\r\n  @Input() data: GalleryItemData;\r\n\r\n  /** Stream that emits when an error occurs */\r\n  @Output() error: EventEmitter<ErrorEvent> = new EventEmitter<ErrorEvent>();\r\n\r\n  @HostBinding('class.g-active-item') get isActive(): boolean {\r\n    return this.index === this.currIndex;\r\n  }\r\n\r\n  @HostBinding('attr.galleryIndex') get isIndexAttr(): number {\r\n    return this.index;\r\n  }\r\n\r\n  @HostBinding('attr.itemState') get itemState(): ItemState {\r\n    return this.state$.value;\r\n  }\r\n\r\n  get imageContext(): GalleryItemContext<ImageItemData> {\r\n    return {\r\n      $implicit: this.imageData,\r\n      index: this.index,\r\n      type: this.type,\r\n      active: this.isActive,\r\n      count: this.count,\r\n      first: this.index === 0,\r\n      last: this.index === this.count - 1\r\n    };\r\n  }\r\n\r\n  get itemContext(): GalleryItemContext<GalleryItemData> {\r\n    return {\r\n      $implicit: this.data,\r\n      index: this.index,\r\n      type: this.type,\r\n      active: this.isActive,\r\n      count: this.count,\r\n      first: this.index === 0,\r\n      last: this.index === this.count - 1\r\n    };\r\n  }\r\n\r\n  get nativeElement(): HTMLElement {\r\n    return this.el.nativeElement;\r\n  }\r\n\r\n  get isAutoPlay(): boolean {\r\n    if (this.isActive) {\r\n      if (this.type === GalleryItemTypes.Video || this.type === GalleryItemTypes.Youtube || this.type === GalleryItemTypes.Vimeo) {\r\n        return this.videoData.autoplay;\r\n      }\r\n    }\r\n  }\r\n\r\n  get youtubeSrc(): string {\r\n    let autoplay: 1 | 0 = 0;\r\n    if (this.isActive && this.type === GalleryItemTypes.Youtube && (this.data as YoutubeItemData).autoplay) {\r\n      autoplay = 1;\r\n    }\r\n    const url: URL = new URL(this.data.src as string);\r\n    url.search = new URLSearchParams({\r\n      wmode: 'transparent',\r\n      ...(this.data as YoutubeItemData).params,\r\n      autoplay\r\n    }).toString();\r\n    return url.href;\r\n  }\r\n\r\n  get vimeoSrc(): string {\r\n    let autoplay: 1 | 0 = 0;\r\n    if (this.isActive && this.type === GalleryItemTypes.Vimeo) {\r\n      if ((this.data as VimeoItemData).autoplay) {\r\n        autoplay = 1;\r\n      }\r\n    }\r\n    const url:URL = new URL(this.data.src as string);\r\n    url.search = new URLSearchParams({\r\n      ...(this.data as VimeoItemData).params,\r\n      autoplay,\r\n    }).toString();\r\n    return url.href;\r\n  }\r\n\r\n  get load(): boolean {\r\n    switch (this.config.loadingStrategy) {\r\n      case LoadingStrategy.Preload:\r\n        return true;\r\n      case LoadingStrategy.Lazy:\r\n        return this.currIndex === this.index;\r\n      default:\r\n        return this.currIndex === this.index || this.currIndex === this.index - 1 || this.currIndex === this.index + 1;\r\n    }\r\n  }\r\n\r\n  get imageData(): ImageItemData {\r\n    return this.data;\r\n  }\r\n\r\n  get videoData(): VideoItemData {\r\n    return this.data;\r\n  }\r\n\r\n  constructor(private el: ElementRef) {\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    // If item does not contain an image, then set the state to DONE\r\n    if (!this.isItemContainImage) {\r\n      this.state$.next('success');\r\n    }\r\n  }\r\n}\r\n\r\n","import { Directive, Input, Output, OnChanges, OnDestroy, NgZone, EventEmitter } from '@angular/core';\r\nimport { Subscription, combineLatest, filter, switchMap } from 'rxjs';\r\nimport { GalleryConfig } from '../models/config.model';\r\nimport { ActiveItemObserver } from './active-item-observer';\r\nimport { resizeObservable } from '../utils/resize-observer';\r\nimport { SliderAdapter } from '../components/adapters';\r\nimport { GalleryItemComponent } from '../components/gallery-item.component';\r\nimport { ItemState } from '../components/templates/items.model';\r\n\r\n@Directive({\r\n  selector: '[itemIntersectionObserver]',\r\n  standalone: true\r\n})\r\nexport class ItemIntersectionObserver implements OnChanges, OnDestroy {\r\n\r\n  private _currentSubscription: Subscription;\r\n\r\n  private _sensor: ActiveItemObserver = new ActiveItemObserver();\r\n\r\n  private get _viewport(): HTMLElement {\r\n    return this._item.nativeElement.parentElement.parentElement;\r\n  }\r\n\r\n  @Input() adapter: SliderAdapter;\r\n\r\n  @Input() config: GalleryConfig;\r\n\r\n  @Input('itemIntersectionObserverDisabled') disabled: boolean;\r\n\r\n  @Output() activeIndexChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n  constructor(private _zone: NgZone, private _item: GalleryItemComponent) {\r\n  }\r\n\r\n  ngOnChanges(): void {\r\n    (this.config.itemAutosize && !this.disabled) ? this._subscribe() : this._unsubscribe();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._unsubscribe();\r\n  }\r\n\r\n  private _subscribe(): void {\r\n    this._unsubscribe();\r\n\r\n    if (!!this.adapter) {\r\n      this._zone.runOutsideAngular(() => {\r\n        this._currentSubscription = combineLatest([\r\n          resizeObservable(this._viewport),\r\n          resizeObservable(this._item.nativeElement)\r\n        ]).pipe(\r\n          switchMap(() => this._item.state$),\r\n          filter((state: ItemState) => state !== 'loading'),\r\n          switchMap(() => {\r\n            const rootMargin: string = this.adapter.getElementRootMargin(this._viewport, this._item.nativeElement);\r\n            if (this.config.debug) {\r\n              this._item.nativeElement.style.setProperty('--item-intersection-margin', `\"VIEWPORT(${ this._viewport.clientWidth }x${ this._viewport.clientHeight }) ITEM(${ this._item.nativeElement.clientWidth }x${ this._item.nativeElement.clientHeight }) INTERSECTION(${ rootMargin })\"`);\r\n            }\r\n\r\n            return this._sensor.observe(\r\n              this._viewport,\r\n              [this._item.nativeElement],\r\n              rootMargin\r\n            );\r\n          }\r\n          )\r\n        ).subscribe((index: number) => {\r\n          this._zone.run(() => this.activeIndexChange.emit(index));\r\n        });\r\n      });\r\n    }\r\n  }\r\n\r\n  private _unsubscribe(): void {\r\n    this._currentSubscription?.unsubscribe();\r\n  }\r\n}\r\n","import {\r\n  Directive,\r\n  Input,\r\n  Output,\r\n  NgZone,\r\n  ElementRef,\r\n  AfterViewChecked,\r\n  OnInit,\r\n  OnChanges,\r\n  OnDestroy,\r\n  EventEmitter\r\n} from '@angular/core';\r\nimport {\r\n  Observable,\r\n  Subscription,\r\n  of,\r\n  tap,\r\n  take,\r\n  filter,\r\n  fromEvent,\r\n  switchMap,\r\n  debounceTime,\r\n  firstValueFrom,\r\n  distinctUntilChanged,\r\n  EMPTY,\r\n  animationFrameScheduler\r\n} from 'rxjs';\r\nimport { ImgManager } from '../utils/img-manager';\r\nimport { resizeObservable } from '../utils/resize-observer';\r\nimport { SliderAdapter } from '../components/adapters';\r\nimport { Gallery } from '../services/gallery.service';\r\nimport { GalleryRef } from '../services/gallery-ref';\r\nimport { GalleryConfig } from '../models/config.model';\r\nimport { GalleryState } from '../models/gallery.model';\r\n\r\n@Directive({\r\n  selector: '[sliderResizeObserver]',\r\n  standalone: true\r\n})\r\nexport class SliderResizeObserver implements AfterViewChecked, OnChanges, OnInit, OnDestroy {\r\n\r\n  private _resizeObserver: ResizeObserver;\r\n\r\n  private _autoHeightSubscription: Subscription;\r\n\r\n  private _resizeSubscription: Subscription;\r\n\r\n  private _shouldSkip: boolean;\r\n\r\n  // Stream that emits after the transition to the new height is completed\r\n  private _afterHeightChanged$: Observable<any>;\r\n\r\n  private get _viewport(): HTMLElement {\r\n    return this._el.nativeElement;\r\n  }\r\n\r\n  private get _galleryCore(): HTMLElement {\r\n    return this._el.nativeElement.parentElement.parentElement.parentElement;\r\n  }\r\n\r\n  private get _isAutoHeight(): boolean {\r\n    return this.config.autoHeight &&\r\n      !this.config.itemAutosize &&\r\n      this.config.orientation === 'horizontal' &&\r\n      (this.config.thumbPosition === 'top' || this.config.thumbPosition === 'bottom');\r\n  }\r\n\r\n  @Input() galleryId: string;\r\n\r\n  @Input() adapter: SliderAdapter;\r\n\r\n  @Input() config: GalleryConfig;\r\n\r\n  @Output() isResizingChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n  constructor(private _el: ElementRef<HTMLElement>,\r\n              private _zone: NgZone,\r\n              private _gallery: Gallery,\r\n              private _imgManager: ImgManager) {\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    const galleryRef: GalleryRef = this._gallery.ref(this.galleryId);\r\n\r\n    // Check if height has transition for the auto-height feature\r\n    const transitionDuration: string = getComputedStyle(this._viewport).getPropertyValue('transition-duration');\r\n    if (parseFloat(transitionDuration) === 0) {\r\n      this._afterHeightChanged$ = of(null);\r\n    } else {\r\n      this._afterHeightChanged$ = fromEvent(this._viewport, 'transitionend');\r\n    }\r\n\r\n    this._zone.runOutsideAngular(() => {\r\n\r\n      // Detect if the size of the slider has changed detecting current index on scroll\r\n      this._resizeSubscription = resizeObservable(this._viewport, (observer: ResizeObserver) => this._resizeObserver = observer).pipe(\r\n        // Check if resize should skip due to re-observing the slider\r\n        filter(() => !this._shouldSkip || !(this._shouldSkip = false)),\r\n        // Immediately set visibility to hidden to avoid changing the active item caused by appearance of other items when size is expanded\r\n        tap(() => this.setResizingState()),\r\n        debounceTime(this.config.resizeDebounceTime, animationFrameScheduler),\r\n        tap(async (entry: ResizeObserverEntry) => {\r\n          // Update CSS variables with the proper values\r\n          this.updateSliderSize();\r\n\r\n          if (this._isAutoHeight) {\r\n            const img: HTMLImageElement = await firstValueFrom(this._imgManager.getActiveItem(galleryRef.state));\r\n            // If img height is identical to the viewport height then skip\r\n            if (img.height === this._viewport.clientHeight) {\r\n              this.resetResizingState();\r\n            } else {\r\n              // Unobserve the slider while the height is being changed\r\n              this.setResizingState({ unobserve: true });\r\n              // Change the height\r\n              this._galleryCore.style.setProperty('--slider-height', `${ img.height }px`);\r\n              // Wait until height transition ends\r\n              await firstValueFrom(this._afterHeightChanged$);\r\n              this.resetResizingState({\r\n                // Mark to skip first emit after re-observing the slider if height content rect height and client height are identical\r\n                shouldSkip: entry.contentRect.height === this._viewport.clientHeight,\r\n                observe: true\r\n              });\r\n            }\r\n          } else {\r\n            requestAnimationFrame(() => this.resetResizingState({ shouldSkip: true }));\r\n          }\r\n        })\r\n      ).subscribe();\r\n    });\r\n  }\r\n\r\n  ngOnChanges(): void {\r\n    this._isAutoHeight ? this._subscribeAutoHeight() : this._unsubscribeAutoHeight();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._resizeSubscription?.unsubscribe();\r\n    this._unsubscribeAutoHeight();\r\n  }\r\n\r\n  ngAfterViewChecked(): void {\r\n    this.updateSliderSize();\r\n  }\r\n\r\n  private updateSliderSize(): void {\r\n    // Update slider width and height CSS variables\r\n    this._galleryCore.style.setProperty('--slider-width', `${ this._viewport.clientWidth }px`);\r\n\r\n    // Only update height if auto-height is false, because when it's true, another function will take care of it\r\n    if (!this.config.autoHeight) {\r\n      this._galleryCore.style.setProperty('--slider-height', `${ this._viewport.clientHeight }px`);\r\n    }\r\n\r\n    this.updateCentralizeCSSVariables();\r\n  }\r\n\r\n  private updateCentralizeCSSVariables(): void {\r\n    if (this.config.itemAutosize) {\r\n      this._galleryCore.style.setProperty('--slider-centralize-start-size', `${ this.adapter.getCentralizerStartSize() }px`);\r\n      this._galleryCore.style.setProperty('--slider-centralize-end-size', `${ this.adapter.getCentralizerEndSize() }px`);\r\n    }\r\n  }\r\n\r\n  private _subscribeAutoHeight(): void {\r\n    this._unsubscribeAutoHeight();\r\n\r\n    this._shouldSkip = false;\r\n    this._zone.runOutsideAngular(() => {\r\n\r\n      const galleryRef: GalleryRef = this._gallery.ref(this.galleryId);\r\n\r\n      // TODO: Why is galleryRef.state emits when screen size changes?\r\n      const state: Observable<GalleryState> = galleryRef.state.pipe(distinctUntilChanged((a: GalleryState, b: GalleryState) => a.currIndex === b.currIndex))\r\n      this._autoHeightSubscription = this._imgManager.getActiveItem(state).pipe(\r\n        switchMap((img: HTMLImageElement) => {\r\n          this.setResizingState({ unobserve: true });\r\n          this._galleryCore.style.setProperty('--slider-height', `${ img.clientHeight }px`);\r\n\r\n          // Check if the new item height is equal to the current height, there will be no transition,\r\n          // So reset resizing state\r\n          if (img.height === this._viewport.clientHeight) {\r\n            this.resetResizingState({ shouldSkip: true, observe: true });\r\n            return EMPTY;\r\n          }\r\n          return this._afterHeightChanged$.pipe(\r\n            tap(() => this.resetResizingState({ shouldSkip: true, observe: true })),\r\n            take(1)\r\n          );\r\n        })\r\n      ).subscribe();\r\n    });\r\n  }\r\n\r\n  private _unsubscribeAutoHeight(): void {\r\n    this._autoHeightSubscription?.unsubscribe();\r\n  }\r\n\r\n  private setResizingState({ unobserve }: { unobserve?: boolean } = {}): void {\r\n    this._zone.run(() => {\r\n      this.isResizingChange.emit(true);\r\n    })\r\n    this._viewport.classList.add('g-resizing');\r\n    if (unobserve) {\r\n      // Unobserve the slider while the height is being changed\r\n      this._resizeObserver.unobserve(this._viewport);\r\n    }\r\n  }\r\n\r\n  private resetResizingState({ shouldSkip, observe }: { shouldSkip?: boolean, observe?: boolean } = {}): void {\r\n    this._zone.run(() => {\r\n      this.isResizingChange.emit(false);\r\n    })\r\n    this._viewport.classList.remove('g-resizing');\r\n    this._shouldSkip = shouldSkip;\r\n    if (observe) {\r\n      this._resizeObserver.observe(this._viewport);\r\n    }\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  Input,\r\n  Output,\r\n  ViewChild,\r\n  ViewChildren,\r\n  EventEmitter,\r\n  AfterViewInit,\r\n  OnChanges,\r\n  SimpleChanges,\r\n  ElementRef,\r\n  QueryList,\r\n  ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Observable, Subject, map, startWith } from 'rxjs';\r\nimport { Gallery } from '../services/gallery.service';\r\nimport { GalleryState, GalleryError } from '../models/gallery.model';\r\nimport { GalleryConfig } from '../models/config.model';\r\nimport { Orientation } from '../models/constants';\r\nimport { SliderAdapter, HorizontalAdapter, VerticalAdapter } from './adapters';\r\nimport { SmoothScroll, SmoothScrollOptions } from '../smooth-scroll';\r\nimport { HammerSliding } from '../gestures/hammer-sliding.directive';\r\nimport { SliderIntersectionObserver } from '../observers/slider-intersection-observer.directive';\r\nimport { ItemIntersectionObserver } from '../observers/item-intersection-observer.directive';\r\nimport { GalleryItemComponent } from './gallery-item.component';\r\nimport { SliderResizeObserver } from '../observers/slider-resize-observer.directive';\r\n\r\n@Component({\r\n  selector: 'gallery-slider',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  styleUrls: ['./gallery-slider.scss'],\r\n  template: `\r\n    <div #slider\r\n         class=\"g-slider\"\r\n         [attr.centralised]=\"config.itemAutosize\"\r\n         [smoothScroll]=\"position$ | async\"\r\n         [smoothScrollInterruptOnMousemove]=\"!config.disableMouseScroll\"\r\n         sliderIntersectionObserver\r\n         [sliderIntersectionObserverDisabled]=\"isScrolling || isSliding || isResizing\"\r\n         [hammerSliding]=\"!config.disableMouseScroll\"\r\n         [adapter]=\"adapter\"\r\n         [items]=\"items$ | async\"\r\n         [config]=\"config\"\r\n         [state]=\"state\"\r\n         [galleryId]=\"galleryId\"\r\n         (isScrollingChange)=\"isScrolling = $event\"\r\n         (isSlidingChange)=\"isSliding = $event\"\r\n         (activeIndexChange)=\"onActiveIndexChange($event)\"\r\n         (isResizingChange)=\"isResizing = $event\"\r\n         sliderResizeObserver>\r\n      <div class=\"g-slider-content\">\r\n        <gallery-item *ngFor=\"let item of state.items; trackBy: trackByFn index as i\"\r\n                      [attr.galleryId]=\"galleryId\"\r\n                      [type]=\"item.type\"\r\n                      [config]=\"config\"\r\n                      [data]=\"item.data\"\r\n                      [currIndex]=\"state.currIndex\"\r\n                      [index]=\"i\"\r\n                      [count]=\"state.items.length\"\r\n                      itemIntersectionObserver\r\n                      [itemIntersectionObserverDisabled]=\"isScrolling || isSliding || isResizing\"\r\n                      [adapter]=\"adapter\"\r\n                      (activeIndexChange)=\"onActiveIndexChange($event)\"\r\n                      (click)=\"itemClick.emit(i)\"\r\n                      (error)=\"error.emit({ itemIndex: i, error: $event })\"/>\r\n      </div>\r\n\r\n      <div *ngIf=\"config.debug\" class=\"g-slider-debug\">\r\n        <div class=\"g-slider-resizing\">RESIZING</div>\r\n        <div class=\"g-slider-scrolling\">SCROLLING</div>\r\n        <div class=\"g-slider-sliding\">SLIDING</div>\r\n      </div>\r\n    </div>\r\n    <ng-content></ng-content>\r\n  `,\r\n  standalone: true,\r\n  imports: [CommonModule, GalleryItemComponent, SmoothScroll, HammerSliding, SliderIntersectionObserver, ItemIntersectionObserver, SliderResizeObserver]\r\n})\r\nexport class GallerySliderComponent implements AfterViewInit, OnChanges {\r\n\r\n  /** Stream that emits the slider position */\r\n  readonly position$: Subject<SmoothScrollOptions> = new Subject<SmoothScrollOptions>();\r\n\r\n  /** Slider adapter */\r\n  adapter: SliderAdapter;\r\n\r\n  /** Stream that emits the item components once they're initialized */\r\n  items$: Observable<GalleryItemComponent[]>;\r\n\r\n  isScrolling: boolean;\r\n\r\n  isSliding: boolean;\r\n\r\n  isResizing: boolean;\r\n\r\n  /** Gallery ID */\r\n  @Input() galleryId: string;\r\n\r\n  /** Gallery state */\r\n  @Input() state: GalleryState;\r\n\r\n  /** Gallery config */\r\n  @Input() config: GalleryConfig;\r\n\r\n  /** Stream that emits when item is clicked */\r\n  @Output() itemClick: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n  /** Stream that emits when an error occurs */\r\n  @Output() error: EventEmitter<GalleryError> = new EventEmitter<GalleryError>();\r\n\r\n  /** Slider ElementRef */\r\n  @ViewChild('slider', { static: true }) sliderEl: ElementRef<HTMLElement>;\r\n\r\n  @ViewChildren(GalleryItemComponent) items: QueryList<GalleryItemComponent> = new QueryList<GalleryItemComponent>();\r\n\r\n  get slider(): HTMLElement {\r\n    return this.sliderEl.nativeElement;\r\n  }\r\n\r\n  constructor(private _gallery: Gallery) {\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.config) {\r\n      if (changes.config.currentValue?.orientation !== changes.config.previousValue?.orientation) {\r\n        switch (this.config.orientation) {\r\n          case Orientation.Horizontal:\r\n            this.adapter = new HorizontalAdapter(this.slider, this.config);\r\n            break;\r\n          case Orientation.Vertical:\r\n            this.adapter = new VerticalAdapter(this.slider, this.config);\r\n            break;\r\n        }\r\n      }\r\n      if (!changes.config.firstChange) {\r\n        // Keep the correct sliding position when direction changes\r\n        requestAnimationFrame(() => {\r\n          this.scrollToIndex(this.state.currIndex, 'auto');\r\n        });\r\n      }\r\n    }\r\n\r\n    // Scroll to current index\r\n    if (changes.state) {\r\n      if (changes.state.currentValue?.currIndex !== changes.state.previousValue?.currIndex) {\r\n        requestAnimationFrame(() => {\r\n          this.scrollToIndex(this.state.currIndex, changes.state.firstChange ? 'auto' : this.state.behavior);\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.items.notifyOnChanges();\r\n    this.items$ = this.items.changes.pipe(\r\n      // In some cases, items is not notified at first, need to force start the stream\r\n      startWith(null),\r\n      map(() => this.items.toArray())\r\n    );\r\n  }\r\n\r\n  trackByFn(index: number, item: any) {\r\n    return item.type;\r\n  }\r\n\r\n  onActiveIndexChange(index: number): void {\r\n    if (index === -1) {\r\n      // Reset active index position\r\n      this.scrollToIndex(this.state.currIndex, 'smooth');\r\n    } else {\r\n      this._gallery.ref(this.galleryId).set(index, 'smooth');\r\n    }\r\n  }\r\n\r\n  private scrollToIndex(index: number, behavior: ScrollBehavior): void {\r\n    const el: HTMLElement = this.items.get(index)?.nativeElement;\r\n    if (el) {\r\n      const pos: SmoothScrollOptions = this.adapter.getScrollToValue(el, behavior || this.config.scrollBehavior);\r\n      this.position$.next(pos);\r\n    }\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  Input,\r\n  Output,\r\n  HostBinding,\r\n  EventEmitter,\r\n  ElementRef,\r\n  ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { GalleryItemContext } from '../directives/gallery-item-def.directive';\r\nimport { GalleryImageComponent } from './templates/gallery-image.component';\r\nimport { ImageItemData } from './templates/items.model';\r\nimport { GalleryConfig } from '../models/config.model';\r\nimport { GalleryItemType } from '../models/constants';\r\n\r\n@Component({\r\n  selector: 'gallery-thumb',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  styleUrls: ['./gallery-thumb.scss'],\r\n  template: `\r\n    <gallery-image [src]=\"data.thumb\"\r\n                   [alt]=\"data.alt + '-thumbnail'\"\r\n                   [isThumbnail]=\"true\"\r\n                   [loadingIcon]=\"config.thumbLoadingIcon\"\r\n                   [loadingError]=\"config.thumbLoadingError\"\r\n                   (error)=\"error.emit($event)\"></gallery-image>\r\n\r\n    <div *ngIf=\"config.thumbTemplate\" class=\"g-template g-thumb-template\">\r\n      <ng-container *ngTemplateOutlet=\"config.thumbTemplate; context: imageContext\"></ng-container>\r\n    </div>\r\n  `,\r\n  standalone: true,\r\n  imports: [CommonModule, GalleryImageComponent]\r\n})\r\nexport class GalleryThumbComponent {\r\n\r\n  @Input() config: GalleryConfig;\r\n\r\n  /** Item's index in the gallery */\r\n  @Input() index: number;\r\n\r\n  /** The number of total items */\r\n  @Input() count: number;\r\n\r\n  /** Gallery current index */\r\n  @Input() currIndex: number;\r\n\r\n  /** Item's type 'image', 'video', 'youtube', 'Vimeo', 'iframe' */\r\n  @Input() type: GalleryItemType;\r\n\r\n  /** Item's data, this object contains the data required to display the content (e.g. src path) */\r\n  @Input() data: ImageItemData;\r\n\r\n  @Output() error: EventEmitter<ErrorEvent> = new EventEmitter<ErrorEvent>();\r\n\r\n  @HostBinding('class.g-active-thumb') get isActive() {\r\n    return this.index === this.currIndex;\r\n  }\r\n\r\n  @HostBinding('attr.galleryIndex') get isIndexAttr(): number {\r\n    return this.index;\r\n  }\r\n\r\n  get imageContext(): GalleryItemContext<ImageItemData> {\r\n    return {\r\n      $implicit: this.data,\r\n      index: this.index,\r\n      type: this.type,\r\n      active: this.isActive,\r\n      count: this.count,\r\n      first: this.index === 0,\r\n      last: this.index === this.count - 1\r\n    }\r\n  }\r\n\r\n  get nativeElement(): HTMLElement {\r\n    return this.el.nativeElement;\r\n  }\r\n\r\n  constructor(private el: ElementRef<HTMLElement>) {\r\n  }\r\n}\r\n","import {\r\n  Directive,\r\n  Input,\r\n  Output,\r\n  OnInit,\r\n  OnChanges,\r\n  OnDestroy,\r\n  NgZone,\r\n  ElementRef,\r\n  SimpleChanges,\r\n  EventEmitter\r\n} from '@angular/core';\r\nimport { Subscription, tap, auditTime, animationFrameScheduler, debounceTime } from 'rxjs';\r\nimport { resizeObservable } from '../utils/resize-observer';\r\nimport { GalleryConfig } from '../models/config.model';\r\nimport { SliderAdapter } from '../components/adapters';\r\n\r\n@Directive({\r\n  selector: '[thumbResizeObserver]',\r\n  standalone: true\r\n})\r\nexport class ThumbResizeObserver implements OnChanges, OnInit, OnDestroy {\r\n\r\n  private _resizeSubscription: Subscription;\r\n\r\n  private get _viewport(): HTMLElement {\r\n    return this._el.nativeElement;\r\n  }\r\n\r\n  @Input() config: GalleryConfig;\r\n\r\n  @Input() adapter: SliderAdapter;\r\n\r\n  @Output('thumbResizeObserver') resized: EventEmitter<void> = new EventEmitter();\r\n\r\n  constructor(private _el: ElementRef<HTMLElement>, private _zone: NgZone) {\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this._zone.runOutsideAngular(() => {\r\n      this._resizeSubscription = resizeObservable(this._viewport).pipe(\r\n        debounceTime(this.config.resizeDebounceTime, animationFrameScheduler),\r\n        tap(() => {\r\n          this.updateSliderSize();\r\n          this.resized.emit();\r\n        })\r\n      ).subscribe();\r\n    });\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (!changes.config.firstChange) {\r\n      this.updateSliderSize();\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._resizeSubscription?.unsubscribe();\r\n  }\r\n\r\n  private updateSliderSize(): void {\r\n    this._viewport.style.setProperty('--thumb-centralize-start-size', this.adapter.getCentralizerStartSize() + 'px');\r\n    this._viewport.style.setProperty('--thumb-centralize-end-size', this.adapter.getCentralizerEndSize() + 'px');\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  Input,\r\n  Output,\r\n  ViewChild,\r\n  ViewChildren,\r\n  EventEmitter,\r\n  AfterViewInit,\r\n  OnChanges,\r\n  QueryList,\r\n  SimpleChanges,\r\n  ElementRef,\r\n  ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Observable, Subject, map, startWith } from 'rxjs';\r\nimport { GalleryConfig } from '../models/config.model';\r\nimport { GalleryState, GalleryError } from '../models/gallery.model';\r\nimport { ThumbnailsPosition } from '../models/constants';\r\nimport { VerticalAdapter, HorizontalAdapter, SliderAdapter } from './adapters';\r\nimport { SmoothScroll, SmoothScrollOptions } from '../smooth-scroll';\r\nimport { GalleryThumbComponent } from './gallery-thumb.component';\r\nimport { HammerSliding } from '../gestures/hammer-sliding.directive';\r\nimport { ThumbResizeObserver } from '../observers/thumb-resize-observer.directive';\r\n\r\n@Component({\r\n  selector: 'gallery-thumbs',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  styleUrls: ['./gallery-thumbs.scss'],\r\n  template: `\r\n    <div #slider\r\n         class=\"g-slider\"\r\n         [smoothScroll]=\"position$ | async\"\r\n         [smoothScrollInterruptOnMousemove]=\"!config.disableThumbMouseScroll\"\r\n         [attr.centralised]=\"config.thumbCentralized || adapter.isContentLessThanContainer\"\r\n         [hammerSliding]=\"!config.disableThumbMouseScroll\"\r\n         [galleryId]=\"galleryId\"\r\n         [items]=\"items$ | async\"\r\n         [state]=\"state\"\r\n         [config]=\"config\"\r\n         [adapter]=\"adapter\"\r\n         (thumbResizeObserver)=\"scrollToIndex(state.currIndex, 'auto')\"\r\n         (activeIndexChange)=\"onActiveIndexChange($event)\">\r\n      <div class=\"g-slider-content\">\r\n        <gallery-thumb *ngFor=\"let item of state.items; trackBy: trackByFn; index as i\"\r\n                       [attr.galleryId]=\"galleryId\"\r\n                       [type]=\"item.type\"\r\n                       [config]=\"config\"\r\n                       [data]=\"item.data\"\r\n                       [currIndex]=\"state.currIndex\"\r\n                       [index]=\"i\"\r\n                       [count]=\"state.items.length\"\r\n                       (click)=\"config.disableThumbs ? null : thumbClick.emit(i)\"\r\n                       (error)=\"error.emit({ itemIndex: i, error: $event })\"/>\r\n      </div>\r\n    </div>\r\n  `,\r\n  standalone: true,\r\n  imports: [CommonModule, GalleryThumbComponent, SmoothScroll, HammerSliding, ThumbResizeObserver]\r\n})\r\nexport class GalleryThumbsComponent implements AfterViewInit, OnChanges {\r\n\r\n  /** Stream that emits the slider position */\r\n  readonly position$: Subject<SmoothScrollOptions> = new Subject<SmoothScrollOptions>();\r\n\r\n  /** Slider adapter */\r\n  adapter: SliderAdapter;\r\n\r\n  /** Stream that emits the thumb components once they're initialized */\r\n  items$: Observable<GalleryThumbComponent[]>;\r\n\r\n  /** Gallery ID */\r\n  @Input() galleryId: string;\r\n\r\n  /** Gallery state */\r\n  @Input() state: GalleryState;\r\n\r\n  /** Gallery config */\r\n  @Input() config: GalleryConfig;\r\n\r\n  /** Stream that emits when thumb is clicked */\r\n  @Output() thumbClick: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n  /** Stream that emits when an error occurs */\r\n  @Output() error: EventEmitter<GalleryError> = new EventEmitter<GalleryError>();\r\n\r\n  /** Slider ElementRef */\r\n  @ViewChild('slider', { static: true }) sliderEl: ElementRef;\r\n\r\n  @ViewChildren(GalleryThumbComponent) items: QueryList<GalleryThumbComponent> = new QueryList<GalleryThumbComponent>();\r\n\r\n  get slider(): HTMLElement {\r\n    return this.sliderEl.nativeElement;\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.config) {\r\n      // Sets sliding direction\r\n      if (changes.config.currentValue?.thumbPosition !== changes.config.previousValue?.thumbPosition) {\r\n        switch (this.config.thumbPosition) {\r\n          case ThumbnailsPosition.Right:\r\n          case ThumbnailsPosition.Left:\r\n            this.adapter = new VerticalAdapter(this.slider, this.config);\r\n            break;\r\n          case ThumbnailsPosition.Top:\r\n          case ThumbnailsPosition.Bottom:\r\n            this.adapter = new HorizontalAdapter(this.slider, this.config);\r\n            break;\r\n        }\r\n\r\n        if (!changes.config.firstChange) {\r\n          // Keep the correct sliding position when direction changes\r\n          requestAnimationFrame(() => {\r\n            this.scrollToIndex(this.state.currIndex, 'auto');\r\n          });\r\n        }\r\n      }\r\n    }\r\n\r\n    if (changes.state && (changes.state.firstChange || !this.config.detachThumbs)) {\r\n      if (changes.state.currentValue?.currIndex !== changes.state.previousValue?.currIndex) {\r\n        // Scroll slide to item when current index changes.\r\n        requestAnimationFrame(() => {\r\n          this.scrollToIndex(this.state.currIndex, changes.state?.firstChange ? 'auto' : 'smooth');\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.items.notifyOnChanges();\r\n    this.items$ = this.items.changes.pipe(\r\n      // In some cases, items is not notified at first, need to force start the stream\r\n      startWith(null),\r\n      map(() => this.items.toArray())\r\n    );\r\n  }\r\n\r\n  trackByFn(index: number, item: any) {\r\n    return item.type;\r\n  }\r\n\r\n  onActiveIndexChange(index: number): void {\r\n    if (index === -1) {\r\n      // Reset active index position\r\n      this.scrollToIndex(this.state.currIndex, 'smooth');\r\n    } else {\r\n      this.scrollToIndex(index, 'smooth');\r\n    }\r\n  }\r\n\r\n  scrollToIndex(value: number, behavior: ScrollBehavior): void {\r\n    const el: HTMLElement = this.items.get(value)?.nativeElement;\r\n    if (el) {\r\n      const pos: SmoothScrollOptions = this.adapter.getScrollToValue(el, behavior);\r\n      this.position$.next(pos);\r\n    }\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  Input,\r\n  Output,\r\n  HostBinding,\r\n  EventEmitter,\r\n  OnChanges,\r\n  SimpleChanges,\r\n  ElementRef,\r\n  ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\r\nimport { Direction, Directionality } from '@angular/cdk/bidi';\r\nimport { GalleryCounterComponent } from './gallery-counter.component';\r\nimport { GalleryBulletsComponent } from './gallery-bullets.component';\r\nimport { GalleryNavComponent } from './gallery-nav.component';\r\nimport { GallerySliderComponent } from './gallery-slider.component';\r\nimport { GalleryThumbsComponent } from './gallery-thumbs.component';\r\nimport { GalleryError, GalleryState } from '../models/gallery.model';\r\nimport { GalleryConfig } from '../models/config.model';\r\n\r\n@Component({\r\n  selector: 'gallery-core',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  styleUrls: ['./gallery-core.scss', '../styles/debug.scss'],\r\n  template: `\r\n    <gallery-thumbs *ngIf=\"config.thumbs\"\r\n                    [state]=\"state\"\r\n                    [config]=\"config\"\r\n                    [galleryId]=\"galleryId\"\r\n                    (thumbClick)=\"thumbClick.emit($event)\"\r\n                    (error)=\"error.emit($event)\"/>\r\n\r\n    <div class=\"g-box\">\r\n      <gallery-slider [class.g-debug]=\"config.debug\"\r\n                      [state]=\"state\"\r\n                      [config]=\"config\"\r\n                      [galleryId]=\"galleryId\"\r\n                      (itemClick)=\"itemClick.emit($event)\"\r\n                      (error)=\"error.emit($event)\">\r\n\r\n        <gallery-nav *ngIf=\"config.nav && state.items.length > 1\"\r\n                     [state]=\"state\"\r\n                     [config]=\"config\"\r\n                     [galleryId]=\"galleryId\"/>\r\n\r\n      </gallery-slider>\r\n\r\n      <gallery-bullets *ngIf=\"config.bullets\"\r\n                       [state]=\"state\"\r\n                       [config]=\"config\"\r\n                       [galleryId]=\"galleryId\"/>\r\n\r\n      <gallery-counter *ngIf=\"config.counter\"\r\n                       [state]=\"state\"/>\r\n\r\n      <div class=\"g-box-template\">\r\n        <ng-container\r\n          *ngTemplateOutlet=\"config.boxTemplate; context: { state: state, config: config }\"></ng-container>\r\n      </div>\r\n    </div>\r\n  `,\r\n  standalone: true,\r\n  imports: [CommonModule, GalleryThumbsComponent, GallerySliderComponent, GalleryNavComponent, GalleryBulletsComponent, GalleryCounterComponent]\r\n})\r\nexport class GalleryCoreComponent implements OnChanges {\r\n\r\n  @Input() galleryId: string;\r\n  @Input() state: GalleryState;\r\n  @Input() config: GalleryConfig;\r\n  @Output() itemClick: EventEmitter<number> = new EventEmitter<number>();\r\n  @Output() thumbClick: EventEmitter<number> = new EventEmitter<number>();\r\n  @Output() error: EventEmitter<GalleryError> = new EventEmitter<GalleryError>();\r\n\r\n  /** Set thumbnails position */\r\n  @HostBinding('attr.thumbPosition') get thumbPosition(): 'top' | 'left' | 'right' | 'bottom' {\r\n    return this.config.thumbPosition;\r\n  }\r\n\r\n  /** Set sliding direction */\r\n  @HostBinding('attr.orientation') get orientation(): 'horizontal' | 'vertical' {\r\n    return this.config.orientation;\r\n  }\r\n\r\n  /** Disable thumbnails' clicks */\r\n  @HostBinding('attr.thumbDisabled') get disableThumb(): boolean {\r\n    return this.config.disableThumbs;\r\n  }\r\n\r\n  /** Set bullets' clicks */\r\n  @HostBinding('attr.bulletDisabled') get bulletDisabled(): boolean {\r\n    return this.config.disableBullets;\r\n  }\r\n\r\n  /** Set gallery bullets position */\r\n  @HostBinding('attr.bulletPosition') get bulletPosition(): 'top' | 'bottom' {\r\n    return this.config.bulletPosition;\r\n  }\r\n\r\n  /** Set gallery image size property */\r\n  @HostBinding('attr.imageSize') get imageSize(): 'cover' | 'contain' {\r\n    return this.config.imageSize;\r\n  }\r\n\r\n  /** Set gallery thumb image size property */\r\n  @HostBinding('attr.thumbImageSize') get thumbImageSize(): 'contain' | 'cover' {\r\n    return this.config.thumbImageSize;\r\n  }\r\n\r\n  /** Set gallery counter position */\r\n  @HostBinding('attr.counterPosition') get counterPosition(): 'top' | 'bottom' {\r\n    return this.config.counterPosition;\r\n  }\r\n\r\n  /** Disable sliding using sliding via touchpad, mousewheel and gestures */\r\n  @HostBinding('attr.scrollDisabled') get scrollDisabled(): boolean {\r\n    return this.config.disableScroll;\r\n  }\r\n\r\n  /** Disable thumb sliding using sliding via touchpad, mousewheel and gestures */\r\n  @HostBinding('attr.thumbScrollDisabled') get thumbScrollDisabled(): boolean {\r\n    return this.config.disableThumbScroll;\r\n  }\r\n\r\n  /** Set items autosize styles  */\r\n  @HostBinding('attr.itemAutosize') get itemAutosize(): boolean {\r\n    return this.config.itemAutosize;\r\n  }\r\n\r\n  /** Set gallery autoHeight styles  */\r\n  @HostBinding('attr.autoHeight') get autoHeight(): boolean {\r\n    return this.config.autoHeight;\r\n  }\r\n\r\n  /** Set gallery thumb autosize styles  */\r\n  @HostBinding('attr.thumbAutosize') get thumbAutosize(): boolean {\r\n    return this.config.thumbAutosize;\r\n  }\r\n\r\n  /** Set direction  */\r\n  @HostBinding('attr.dir') get direction(): Direction {\r\n    return this.dir.value;\r\n  }\r\n\r\n  /** Set debug style  */\r\n  @HostBinding('attr.debug') get debug(): boolean {\r\n    return this.config.debug;\r\n  }\r\n\r\n  constructor(private el: ElementRef<HTMLElement>, private dir: Directionality) {\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.config) {\r\n      if (changes.config.currentValue?.thumbWidth !== changes.config.previousValue?.thumbWidth) {\r\n        this.el.nativeElement.style.setProperty('--g-thumb-width', coerceCssPixelValue(changes.config.currentValue.thumbWidth));\r\n      }\r\n      if (changes.config.currentValue?.thumbHeight !== changes.config.previousValue?.thumbHeight) {\r\n        this.el.nativeElement.style.setProperty('--g-thumb-height', coerceCssPixelValue(changes.config.currentValue.thumbHeight));\r\n      }\r\n    }\r\n  }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { ImageItemData } from '../components/templates/items.model';\r\nimport { GalleryItemContext } from './gallery-item-def.directive';\r\n\r\n@Directive({\r\n  standalone: true,\r\n  selector: '[galleryImageDef]'\r\n})\r\nexport class GalleryImageDef {\r\n\r\n  constructor(public templateRef: TemplateRef<GalleryItemContext<ImageItemData>>) {\r\n  }\r\n\r\n  // Make sure the template checker knows the type of the context with which the\r\n  // template of this directive will be rendered\r\n  static ngTemplateContextGuard(\r\n    directive: GalleryImageDef,\r\n    context: unknown\r\n  ): context is GalleryItemContext<ImageItemData> {\r\n    return true;\r\n  }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { ImageItemData } from '../components/templates/items.model';\r\nimport { GalleryItemContext } from './gallery-item-def.directive';\r\n\r\n@Directive({\r\n  standalone: true,\r\n  selector: '[galleryThumbDef]'\r\n})\r\nexport class GalleryThumbDef {\r\n\r\n  constructor(public templateRef: TemplateRef<GalleryItemContext<ImageItemData>>) {\r\n  }\r\n  // Make sure the template checker knows the type of the context with which the\r\n  // template of this directive will be rendered\r\n  static ngTemplateContextGuard(\r\n    directive: GalleryThumbDef,\r\n    context: unknown\r\n  ): context is GalleryItemContext<ImageItemData> {\r\n    return true;\r\n  }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { GalleryItemData } from '../components/templates/items.model';\r\nimport { GalleryItemType } from '../models/constants';\r\n\r\n@Directive({\r\n  standalone: true,\r\n  selector: '[galleryItemDef]'\r\n})\r\nexport class GalleryItemDef {\r\n  constructor(public templateRef: TemplateRef<GalleryItemContext<GalleryItemDef>>) {\r\n  }\r\n\r\n  // Make sure the template checker knows the type of the context with which the\r\n  // template of this directive will be rendered\r\n  static ngTemplateContextGuard(\r\n    directive: GalleryItemDef,\r\n    context: unknown\r\n  ): context is GalleryItemContext<GalleryItemData> {\r\n    return true;\r\n  }\r\n}\r\n\r\nexport interface GalleryItemContext<T> {\r\n  /** Data for the row that this cell is located within. */\r\n  $implicit?: T;\r\n\r\n  /** Index of the item. */\r\n  index?: number;\r\n\r\n  /** The type of the item. */\r\n  type?: GalleryItemType;\r\n\r\n  /** True if this item is the active one. */\r\n  active?: boolean;\r\n\r\n  /** The number of total items. */\r\n  count?: number;\r\n\r\n  /** True if this item is first. */\r\n  first?: boolean;\r\n\r\n  /** True if this item is last. */\r\n  last?: boolean;\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { GalleryState } from '../models/gallery.model';\r\nimport { GalleryConfig } from '../models/config.model';\r\n\r\n\r\n@Directive({\r\n  standalone: true,\r\n  selector: '[galleryBoxDef]'\r\n})\r\nexport class GalleryBoxDef {\r\n\r\n  constructor(public templateRef: TemplateRef<GalleryStateContext>) {\r\n  }\r\n\r\n  // Make sure the template checker knows the type of the context with which the\r\n  // template of this directive will be rendered\r\n  static ngTemplateContextGuard(\r\n    directive: GalleryBoxDef,\r\n    context: unknown\r\n  ): context is GalleryStateContext {\r\n    return true;\r\n  }\r\n}\r\n\r\nexport interface GalleryStateContext {\r\n  state?: GalleryState;\r\n  config?: GalleryConfig;\r\n}\r\n","import { Directive, Input, AfterViewInit, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\r\nimport { Subscription, delay, of, switchMap, tap, EMPTY } from 'rxjs';\r\nimport { ImgManager } from '../utils/img-manager';\r\nimport { Gallery } from '../services/gallery.service';\r\nimport { GalleryRef } from '../services/gallery-ref';\r\nimport { GalleryState } from '../models/gallery.model';\r\nimport { GalleryConfig } from '../models/config.model';\r\n\r\n@Directive({\r\n  selector: 'gallery-core[autoplay]',\r\n  standalone: true\r\n})\r\nexport class AutoplayDirective implements AfterViewInit, OnChanges, OnDestroy {\r\n\r\n  private _currentSubscription: Subscription;\r\n\r\n  private _galleryRef: GalleryRef;\r\n\r\n  @Input() config: GalleryConfig;\r\n\r\n  @Input() galleryId: string;\r\n\r\n  constructor(private _gallery: Gallery, private _imgManager: ImgManager) {\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this._galleryRef = this._gallery.ref(this.galleryId);\r\n    this._subscribe();\r\n    if (this.config.autoplay) {\r\n      this._galleryRef.play();\r\n    }\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (this._galleryRef && changes.config?.currentValue.autoplay !== changes.config?.previousValue.autoplay) {\r\n      this.config.autoplay ? this._galleryRef.play() : this._galleryRef.stop();\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._unsubscribe();\r\n  }\r\n\r\n\r\n  private _subscribe(): void {\r\n    this._unsubscribe();\r\n\r\n    this._currentSubscription = this._galleryRef.playingChanged.pipe(\r\n      switchMap((state: GalleryState) => {\r\n        if (state.isPlaying) {\r\n          return this._imgManager.getActiveItem(this._galleryRef.state).pipe(\r\n            switchMap(() => of({}).pipe(\r\n              delay(this.config.autoplayInterval),\r\n              tap(() => {\r\n                if (this._galleryRef.stateSnapshot.hasNext) {\r\n                  this._galleryRef.next(this.config.scrollBehavior);\r\n                } else {\r\n                  this._galleryRef.set(0, this.config.scrollBehavior);\r\n                }\r\n              })\r\n            ))\r\n          );\r\n        }\r\n        return EMPTY;\r\n      })\r\n    ).subscribe();\r\n  }\r\n\r\n  private _unsubscribe(): void {\r\n    this._currentSubscription?.unsubscribe();\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  Input,\r\n  Output,\r\n  ContentChild,\r\n  booleanAttribute,\r\n  numberAttribute,\r\n  EventEmitter,\r\n  OnInit,\r\n  AfterContentInit,\r\n  OnChanges,\r\n  OnDestroy,\r\n  SimpleChanges,\r\n  ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Subscription } from 'rxjs';\r\nimport { GalleryCoreComponent } from './gallery-core.component';\r\nimport { Gallery } from '../services/gallery.service';\r\nimport { GalleryRef } from '../services/gallery-ref';\r\nimport { GalleryError, GalleryItem, GalleryState } from '../models/gallery.model';\r\nimport { IframeItemData, ImageItemData, VideoItemData, VimeoItemData, YoutubeItemData } from './templates/items.model';\r\nimport { GalleryConfig } from '../models/config.model';\r\nimport { BezierEasingOptions } from '../smooth-scroll';\r\nimport { GalleryImageDef } from '../directives/gallery-image-def.directive';\r\nimport { GalleryThumbDef } from '../directives/gallery-thumb-def.directive';\r\nimport { GalleryItemDef } from '../directives/gallery-item-def.directive';\r\nimport { GalleryBoxDef } from '../directives/gallery-box-def.directive';\r\nimport { ImgManager } from '../utils/img-manager';\r\nimport { AutoplayDirective } from '../autoplay/autoplay.directive';\r\n\r\n/**\r\n * Gallery component\r\n */\r\n@Component({\r\n  selector: 'gallery',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  styleUrls: ['./gallery.scss'],\r\n  template: `\r\n    <gallery-core autoplay\r\n                  [galleryId]=\"id\"\r\n                  [state]=\"galleryRef.state | async\"\r\n                  [config]=\"galleryRef.config | async\"\r\n                  (itemClick)=\"onItemClick($event)\"\r\n                  (thumbClick)=\"onThumbClick($event)\"\r\n                  (error)=\"onError($event)\"/>\r\n  `,\r\n  standalone: true,\r\n  imports: [CommonModule, GalleryCoreComponent, AutoplayDirective],\r\n  providers: [ImgManager]\r\n})\r\nexport class GalleryComponent implements OnInit, AfterContentInit, OnChanges, OnDestroy {\r\n\r\n  /**\r\n   * The gallery reference instance\r\n   */\r\n  galleryRef: GalleryRef;\r\n\r\n  /**\r\n   * The gallery instance unique id, required if more multiple gallery instances\r\n   */\r\n  @Input() id: string = 'root';\r\n\r\n  /**\r\n   * Loads the items array into the gallery\r\n   */\r\n  @Input() items: GalleryItem [];\r\n\r\n  /**\r\n   * Displays the navigation buttons\r\n   */\r\n  @Input({ transform: booleanAttribute }) nav: boolean = this._gallery.config.nav;\r\n\r\n  /**\r\n   * Displays the navigation bullets\r\n   */\r\n  @Input({ transform: booleanAttribute }) bullets: boolean = this._gallery.config.bullets;\r\n\r\n  /**\r\n   * Enables loop cycling\r\n   */\r\n  @Input({ transform: booleanAttribute }) loop: boolean = this._gallery.config.loop;\r\n\r\n  /**\r\n   * Show visuals that helps debugging the component\r\n   */\r\n  @Input({ transform: booleanAttribute }) debug: boolean = this._gallery.config.debug;\r\n\r\n  /**\r\n   * Displays the thumbnails\r\n   */\r\n  @Input({ transform: booleanAttribute }) thumbs: boolean = this._gallery.config.thumbs;\r\n\r\n  /**\r\n   * Displays the counter or pagination\r\n   */\r\n  @Input({ transform: booleanAttribute }) counter: boolean = this._gallery.config.counter;\r\n\r\n  /**\r\n   * De-attaching the thumbnails from the main slider\r\n   * If enabled - thumbnails won't automatically scroll to the active thumbnails\r\n   */\r\n  @Input({ transform: booleanAttribute }) detachThumbs: boolean = this._gallery.config.detachThumbs;\r\n\r\n  /**\r\n   * Fits each thumbnail size to its content\r\n   */\r\n  @Input({ transform: booleanAttribute }) thumbAutosize: boolean = this._gallery.config.thumbAutosize;\r\n\r\n  /**\r\n   * Fits each item size to its content, This option should be used with:\r\n   * - Does not work if `autoHeight` is turned on\r\n   * - Does not work properly unless `loadingAttr=\"eager\"`\r\n   * - Does not work properly unless `loadingStrategy=\"preload\"`\r\n   */\r\n  @Input({ transform: booleanAttribute }) itemAutosize: boolean = this._gallery.config.itemAutosize;\r\n\r\n  /**\r\n   * Automatically adjusts the gallery's height to fit the content\r\n   */\r\n  @Input({ transform: booleanAttribute }) autoHeight: boolean = this._gallery.config.autoHeight;\r\n\r\n  /**\r\n   * Automatically cycle through items at time interval\r\n   */\r\n  @Input({ transform: booleanAttribute }) autoplay: boolean = this._gallery.config.autoplay;\r\n\r\n  /**\r\n   * Disables thumbnails' clicks\r\n   */\r\n  @Input({ transform: booleanAttribute }) disableThumbs: boolean = this._gallery.config.disableThumbs;\r\n\r\n  /**\r\n   * Disables bullets' clicks\r\n   */\r\n  @Input({ transform: booleanAttribute }) disableBullets: boolean = this._gallery.config.disableBullets;\r\n\r\n  /**\r\n   * Disables sliding using mousewheel, touchpad, scroll and gestures on touch devices\r\n   */\r\n  @Input({ transform: booleanAttribute }) disableScroll: boolean = this._gallery.config.disableScroll;\r\n\r\n  /**\r\n   * Disables sliding of thumbnails using touchpad, scroll and gestures on touch devices\r\n   */\r\n  @Input({ transform: booleanAttribute }) disableThumbScroll: boolean = this._gallery.config.disableThumbScroll;\r\n\r\n  /**\r\n   * Force centralizing the active thumbnail\r\n   */\r\n  @Input({ transform: booleanAttribute }) thumbCentralized: boolean = this._gallery.config.thumbCentralized;\r\n\r\n  /**\r\n   * Disables sliding using the mouse\r\n   */\r\n  @Input({ transform: booleanAttribute }) disableMouseScroll: boolean = this._gallery.config.disableMouseScroll;\r\n\r\n  /**\r\n   * Disables sliding of thumbnails using the mouse\r\n   */\r\n  @Input({ transform: booleanAttribute }) disableThumbMouseScroll: boolean = this._gallery.config.disableThumbMouseScroll;\r\n\r\n  /**\r\n   * Sets the size of the bullets navigation\r\n   */\r\n  @Input({ transform: numberAttribute }) bulletSize: number = this._gallery.config.bulletSize;\r\n\r\n  /**\r\n   * Sets the thumbnail's width\r\n   */\r\n  @Input({ transform: numberAttribute }) thumbWidth: number = this._gallery.config.thumbWidth;\r\n\r\n  /**\r\n   * Sets the thumbnail's height\r\n   */\r\n  @Input({ transform: numberAttribute }) thumbHeight: number = this._gallery.config.thumbHeight;\r\n\r\n  /**\r\n   * Sets the interval used for the autoplay feature\r\n   */\r\n  @Input({ transform: numberAttribute }) autoplayInterval: number = this._gallery.config.autoplayInterval;\r\n\r\n  /**\r\n   * Sets the duration used for smooth navigation between the items\r\n   */\r\n  @Input({ transform: numberAttribute }) scrollDuration: number = this._gallery.config.scrollDuration;\r\n\r\n  /**\r\n   * Sets the debounce time used to throttle the gallery update after it is resized\r\n   */\r\n  @Input({ transform: numberAttribute }) resizeDebounceTime: number = this._gallery.config.resizeDebounceTime;\r\n\r\n  /**\r\n   * Sets the scroll behavior when the active item is changed\r\n   */\r\n  @Input() scrollBehavior: ScrollBehavior = this._gallery.config.scrollBehavior;\r\n\r\n  /**\r\n   * Sets the ease function used for smooth navigation between the items\r\n   */\r\n  @Input() scrollEase: BezierEasingOptions = this._gallery.config.scrollEase;\r\n\r\n  /**\r\n   * Sets the object-fit style applied on items' images\r\n   */\r\n  @Input() imageSize: 'cover' | 'contain' = this._gallery.config.imageSize;\r\n\r\n  /**\r\n   * Sets the object-fit style applied on thumbnails' images\r\n   */\r\n  @Input() thumbImageSize: 'cover' | 'contain' = this._gallery.config.thumbImageSize;\r\n\r\n  /**\r\n   * Sets the bullets navigation position\r\n   */\r\n  @Input() bulletPosition: 'top' | 'bottom' = this._gallery.config.bulletPosition;\r\n\r\n  /**\r\n   * Sets the counter navigation position\r\n   */\r\n  @Input() counterPosition: 'top' | 'bottom' = this._gallery.config.counterPosition;\r\n\r\n  /**\r\n   * Sets the sliding direction\r\n   */\r\n  @Input() orientation: 'horizontal' | 'vertical' = this._gallery.config.orientation;\r\n\r\n  /**\r\n   * Sets the loading attribute applied on the items' images\r\n   */\r\n  @Input() loadingAttr: 'eager' | 'lazy' = this._gallery.config.loadingAttr;\r\n\r\n  /**\r\n   * Sets the loading strategy used for displaying the items\r\n   * - `lazy` renders only the active item\r\n   * - `default` renders only the active item, the previous item and the next item\r\n   * - `preload` renders all the items, this option is required for `thumbAutoSize` is enabled\r\n   */\r\n  @Input() loadingStrategy: 'preload' | 'lazy' | 'default' = this._gallery.config.loadingStrategy;\r\n\r\n  /**\r\n   * Sets the thumbnails position, it also sets the sliding direction of the thumbnails accordingly\r\n   */\r\n  @Input() thumbPosition: 'top' | 'left' | 'right' | 'bottom' = this._gallery.config.thumbPosition;\r\n\r\n  /**\r\n   * Destroy gallery ref on component destroy event\r\n   * This intended to be used and disabled from the lightbox component\r\n   * @ignore\r\n   * */\r\n  @Input() destroyRef: boolean = true;\r\n\r\n  /**\r\n   * Skip initializing the config with components inputs (Lightbox mode)\r\n   * This intended to be used and enabled from the lightbox component\r\n   * @ignore\r\n   */\r\n  @Input() skipInitConfig: boolean = false;\r\n\r\n  /**\r\n   * Stream that emits when an item is clicked\r\n   */\r\n  @Output() itemClick: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n  /**\r\n   * Stream that emits when a thumbnail is clicked\r\n   */\r\n  @Output() thumbClick: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n  /**\r\n   * Stream that emits when player state is changed\r\n   */\r\n  @Output() playingChange: EventEmitter<GalleryState> = new EventEmitter<GalleryState>();\r\n\r\n  /**\r\n   * Stream that emits when index is changed\r\n   */\r\n  @Output() indexChange: EventEmitter<GalleryState> = new EventEmitter<GalleryState>();\r\n\r\n  /**\r\n   * Stream that emits when items array is changed\r\n   */\r\n  @Output() itemsChange: EventEmitter<GalleryState> = new EventEmitter<GalleryState>();\r\n\r\n  /**\r\n   * Stream that emits when an error occurs, this would emit for loading errors of image and video items only\r\n   */\r\n  @Output() error: EventEmitter<GalleryError> = new EventEmitter<GalleryError>();\r\n\r\n  /** @ignore */\r\n  @ContentChild(GalleryItemDef) private _galleryItemDef: GalleryItemDef;\r\n  /** @ignore */\r\n  @ContentChild(GalleryImageDef) private _galleryImageDef: GalleryImageDef;\r\n  /** @ignore */\r\n  @ContentChild(GalleryThumbDef) private _galleryThumbDef: GalleryThumbDef;\r\n  /** @ignore */\r\n  @ContentChild(GalleryBoxDef) private _galleryBoxDef: GalleryBoxDef;\r\n\r\n  /** @ignore */\r\n  private _itemClick$: Subscription;\r\n  /** @ignore */\r\n  private _thumbClick$: Subscription;\r\n  /** @ignore */\r\n  private _itemChange$: Subscription;\r\n  /** @ignore */\r\n  private _indexChange$: Subscription;\r\n  /** @ignore */\r\n  private _playingChange$: Subscription;\r\n\r\n  constructor(private _gallery: Gallery) {\r\n  }\r\n\r\n  /** @ignore */\r\n  private getConfig(): GalleryConfig {\r\n    return {\r\n      nav: this.nav,\r\n      bullets: this.bullets,\r\n      loop: this.loop,\r\n      debug: this.debug,\r\n      thumbs: this.thumbs,\r\n      counter: this.counter,\r\n      autoplay: this.autoplay,\r\n      bulletSize: this.bulletSize,\r\n      imageSize: this.imageSize,\r\n      thumbImageSize: this.thumbImageSize,\r\n      scrollBehavior: this.scrollBehavior,\r\n      thumbCentralized: this.thumbCentralized,\r\n      thumbWidth: this.thumbWidth,\r\n      thumbHeight: this.thumbHeight,\r\n      scrollEase: this.scrollEase,\r\n      bulletPosition: this.bulletPosition,\r\n      loadingAttr: this.loadingAttr,\r\n      detachThumbs: this.detachThumbs,\r\n      thumbPosition: this.thumbPosition,\r\n      autoplayInterval: this.autoplayInterval,\r\n      counterPosition: this.counterPosition,\r\n      loadingStrategy: this.loadingStrategy,\r\n      scrollDuration: this.scrollDuration,\r\n      orientation: this.orientation,\r\n      resizeDebounceTime: this.resizeDebounceTime,\r\n      disableBullets: this.disableBullets,\r\n      disableThumbs: this.disableThumbs,\r\n      disableScroll: this.disableScroll,\r\n      disableThumbScroll: this.disableThumbScroll,\r\n      disableMouseScroll: this.disableMouseScroll,\r\n      disableThumbMouseScroll: this.disableThumbMouseScroll,\r\n      thumbAutosize: this.thumbAutosize,\r\n      itemAutosize: this.itemAutosize,\r\n      autoHeight: this.autoHeight\r\n    };\r\n  }\r\n\r\n\r\n  /** @ignore */\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (this.galleryRef) {\r\n      this.galleryRef.setConfig(this.getConfig());\r\n\r\n      if (changes.items && changes.items.currentValue !== changes.items.previousValue) {\r\n        this.load(this.items);\r\n      }\r\n    }\r\n  }\r\n\r\n\r\n  /** @ignore */\r\n  ngOnInit(): void {\r\n    // Get gallery instance by id\r\n    if (this.skipInitConfig) {\r\n      this.galleryRef = this._gallery.ref(this.id);\r\n    } else {\r\n      this.galleryRef = this._gallery.ref(this.id, this.getConfig());\r\n    }\r\n\r\n    // Load gallery items\r\n    this.load(this.items);\r\n\r\n    // Subscribes to events on demand\r\n    if (this.indexChange.observed) {\r\n      this._indexChange$ = this.galleryRef.indexChanged.subscribe((state: GalleryState) => this.indexChange.emit(state));\r\n    }\r\n    if (this.itemsChange.observed) {\r\n      this._itemChange$ = this.galleryRef.itemsChanged.subscribe((state: GalleryState) => this.itemsChange.emit(state));\r\n    }\r\n    if (this.playingChange.observed) {\r\n      this._playingChange$ = this.galleryRef.playingChanged.subscribe((state: GalleryState) => this.playingChange.emit(state));\r\n    }\r\n  }\r\n\r\n  /** @ignore */\r\n  ngAfterContentInit(): void {\r\n    const templateConfig: GalleryConfig = {};\r\n    if (this._galleryItemDef) {\r\n      templateConfig.itemTemplate = this._galleryItemDef.templateRef;\r\n    }\r\n    if (this._galleryImageDef) {\r\n      templateConfig.imageTemplate = this._galleryImageDef.templateRef;\r\n    }\r\n    if (this._galleryThumbDef) {\r\n      templateConfig.thumbTemplate = this._galleryThumbDef.templateRef;\r\n    }\r\n    if (this._galleryBoxDef) {\r\n      templateConfig.boxTemplate = this._galleryBoxDef.templateRef;\r\n    }\r\n    if (Object.keys(templateConfig).length) {\r\n      this.galleryRef.setConfig(templateConfig);\r\n    }\r\n  }\r\n\r\n  /** @ignore */\r\n  ngOnDestroy(): void {\r\n    this._itemClick$?.unsubscribe();\r\n    this._thumbClick$?.unsubscribe();\r\n    this._itemChange$?.unsubscribe();\r\n    this._indexChange$?.unsubscribe();\r\n    this._playingChange$?.unsubscribe();\r\n    if (this.destroyRef) {\r\n      this.galleryRef?.destroy();\r\n    }\r\n  }\r\n\r\n  /** @ignore */\r\n  onItemClick(i: number): void {\r\n    this.itemClick.emit(i);\r\n    this.galleryRef.itemClick.next(i);\r\n  }\r\n\r\n  /** @ignore */\r\n  onThumbClick(i: number): void {\r\n    this.galleryRef.set(i);\r\n    this.thumbClick.emit(i);\r\n    this.galleryRef.thumbClick.next(i);\r\n  }\r\n\r\n  /** @ignore */\r\n  onError(err: GalleryError): void {\r\n    this.error.emit(err);\r\n    this.galleryRef.error.next(err);\r\n  }\r\n\r\n  /**\r\n   * Load items and reset the state\r\n   */\r\n  load(items: GalleryItem[]): void {\r\n    this.galleryRef.load(items);\r\n  }\r\n\r\n  /**\r\n   * Add gallery item, it can be any item, suitable to add item with a custom template\r\n   */\r\n  add(item: GalleryItem, active?: boolean): void {\r\n    this.galleryRef.add(item, active);\r\n  }\r\n\r\n  /**\r\n   * Add image item\r\n   */\r\n  addImage(data: ImageItemData, active?: boolean): void {\r\n    this.galleryRef.addImage(data, active);\r\n  }\r\n\r\n  /**\r\n   * Add video item\r\n   */\r\n  addVideo(data: VideoItemData, active?: boolean): void {\r\n    this.galleryRef.addVideo(data, active);\r\n  }\r\n\r\n  /**\r\n   * Add iframe item\r\n   */\r\n  addIframe(data: IframeItemData, active?: boolean): void {\r\n    this.galleryRef.addIframe(data, active);\r\n  }\r\n\r\n  /**\r\n   * Add Youtube item\r\n   */\r\n  addYoutube(data: YoutubeItemData, active?: boolean): void {\r\n    this.galleryRef.addYoutube(data, active);\r\n  }\r\n\r\n  /**\r\n   * Add Vimeo item\r\n   */\r\n  addVimeo(data: VimeoItemData, active?: boolean): void {\r\n    this.galleryRef.addVimeo(data, active);\r\n  }\r\n\r\n  /**\r\n   * Remove gallery item by index\r\n   */\r\n  remove(i: number): void {\r\n    this.galleryRef.remove(i);\r\n  }\r\n\r\n  /**\r\n   * Go to next item\r\n   */\r\n  next(behavior?: ScrollBehavior, loop?: boolean): void {\r\n    this.galleryRef.next(behavior, loop);\r\n  }\r\n\r\n  /**\r\n   * Go to prev item\r\n   */\r\n  prev(behavior?: ScrollBehavior, loop?: boolean): void {\r\n    this.galleryRef.prev(behavior, loop);\r\n  }\r\n\r\n  /**\r\n   * Set active item\r\n   */\r\n  set(i: number, behavior?: ScrollBehavior): void {\r\n    this.galleryRef.set(i, behavior);\r\n  }\r\n\r\n  /**\r\n   * Reset to initial state\r\n   */\r\n  reset(): void {\r\n    this.galleryRef.reset();\r\n  }\r\n\r\n  /**\r\n   * Start the player\r\n   */\r\n  play(interval?: number): void {\r\n    this.galleryRef.play(interval);\r\n  }\r\n\r\n  /**\r\n   * Stop the player\r\n   */\r\n  stop(): void {\r\n    this.galleryRef.stop();\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { GalleryComponent } from './components/gallery.component';\r\nimport { GalleryImageDef } from './directives/gallery-image-def.directive';\r\nimport { GalleryThumbDef } from './directives/gallery-thumb-def.directive';\r\nimport { GalleryItemDef } from './directives/gallery-item-def.directive';\r\nimport { GalleryBoxDef } from './directives/gallery-box-def.directive';\r\n\r\n@NgModule({\r\n  imports: [\r\n    GalleryComponent,\r\n    GalleryItemDef,\r\n    GalleryImageDef,\r\n    GalleryThumbDef,\r\n    GalleryBoxDef\r\n  ],\r\n  exports: [\r\n    GalleryComponent,\r\n    GalleryItemDef,\r\n    GalleryImageDef,\r\n    GalleryThumbDef,\r\n    GalleryBoxDef\r\n  ]\r\n})\r\nexport class GalleryModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.Gallery","i2","i3","i4","BezierEasing","i1","i1.ImgManager","i2.GalleryItemComponent","i1.GalleryItemComponent","i2.ImgManager"],"mappings":"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"}