{"version":3,"file":"angular-gallery-slider.mjs","sources":["../../../projects/angular-gallery-slider/src/lib/gallery/constants.ts","../../../projects/angular-gallery-slider/src/lib/gallery/gallery-template.directive.ts","../../../projects/angular-gallery-slider/src/lib/gallery/gallery.component.ts","../../../projects/angular-gallery-slider/src/lib/gallery/gallery.component.html","../../../projects/angular-gallery-slider/src/lib/angular-gallery-slider.module.ts","../../../projects/angular-gallery-slider/src/public-api.ts","../../../projects/angular-gallery-slider/src/angular-gallery-slider.ts"],"sourcesContent":["export const constants = {\n  BASE_ITEM_SIZE: 4,\n  BASE_HEIGHT: 500,\n  GALLERY_SLIDER_WIDTH: 150,\n  BASE_INDEX: 0,\n  ACTIVE_CLASS: 'active',\n  DEFAULT_EASE: '0.3s cubic-bezier(0.45, 0, 0.55, 1)',\n  TEMPLATE: {\n    PREVIEW: 'preview',\n    ITEM: 'item',\n  },\n};\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n  selector: '[template]',\n})\nexport class GalleryTemplateDirective {\n  @Input('template') templateName: string;\n\n  constructor(readonly template: TemplateRef<any>) {\n    this.templateName = '';\n  }\n}\n","import {\n  animate,\n  AnimationBuilder,\n  AnimationMetadata,\n  AnimationPlayer,\n  style,\n} from '@angular/animations';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  QueryList,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { constants } from './constants';\nimport { GalleryTemplateDirective } from './gallery-template.directive';\n\n@Component({\n  selector: 'gl-gallery',\n  templateUrl: './gallery.component.html',\n  styleUrls: ['./gallery.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'gl-gallery',\n  },\n})\nexport class GalleryComponent<T> implements AfterViewInit {\n  activeIndex = constants.BASE_INDEX;\n\n  @Input() value: T[] = [];\n\n  private _itemSize = 0;\n  @Input() set itemSize(value: number) {\n    this._itemSize = value;\n    this.updateSize(value);\n  }\n\n  @HostBinding('style')\n  get initialStyles() {\n    return this.galleryStyles();\n  }\n\n  @HostListener('window:resize')\n  onResize() {\n    this.resize();\n  }\n\n  @ViewChild('slider', { static: false })\n  private sliderReference?: ElementRef<HTMLDivElement>;\n\n  @ContentChildren(GalleryTemplateDirective, { read: GalleryTemplateDirective })\n  set template(templateList: QueryList<GalleryTemplateDirective>) {\n    this.templateList = templateList.toArray();\n  }\n  private templateList: GalleryTemplateDirective[] = [];\n\n  readonly PREVIEW = constants.TEMPLATE.PREVIEW;\n\n  readonly ITEM = constants.TEMPLATE.ITEM;\n\n  private settings: GallerySettings = {\n    itemSize: constants.BASE_ITEM_SIZE,\n    height: constants.BASE_HEIGHT,\n    elementMiddlePosition: Math.floor(constants.BASE_ITEM_SIZE / 2),\n    defaultGallerySliderWidth: constants.GALLERY_SLIDER_WIDTH,\n    translatePercentage:\n      (constants.GALLERY_SLIDER_WIDTH /\n        (constants.BASE_ITEM_SIZE * constants.GALLERY_SLIDER_WIDTH)) *\n      100, // item width / container * 100 will give us correct item translate percentage\n    containerWidth: constants.BASE_ITEM_SIZE * constants.GALLERY_SLIDER_WIDTH,\n  };\n\n  constructor(\n    private builder: AnimationBuilder,\n    private sanitizer: DomSanitizer\n  ) {}\n\n  ngAfterViewInit() {\n    this.updateSetting(\n      'defaultGallerySliderWidth',\n      this.getActiveElement()?.clientWidth ?? constants.GALLERY_SLIDER_WIDTH\n    );\n\n    this.resize();\n  }\n\n  prev(slider: HTMLDivElement) {\n    this.select(\n      slider,\n      this.activeIndex === 0 ? this.value.length - 1 : this.activeIndex - 1\n    );\n  }\n\n  next(slider: HTMLDivElement) {\n    this.select(slider, (this.activeIndex + 1) % this.value.length);\n  }\n\n  select(slider: HTMLDivElement, index: number) {\n    this.activeIndex = index;\n\n    const { elementMiddlePosition, translatePercentage, itemSize } =\n      this.settings;\n\n    const isEven = itemSize % 2 === 0;\n    const activeTranslateIndex = this.activeIndex - elementMiddlePosition; // default translate index. has to start from element middle index.\n    const endTranslateIndex =\n      (isEven ? this.value.length : this.value.length - 1) -\n      elementMiddlePosition; // very end translate index.\n    const endTranslateMiddleIndex = endTranslateIndex - elementMiddlePosition; // end middle translate index.\n\n    if (this.activeIndex < elementMiddlePosition) {\n      // if active index hasn't even reached elementMiddlePosition, we should not start translating and translate index will be always 0.\n      this.translate({\n        translatePercentage,\n        translateIndex: 0,\n        element: slider,\n      });\n    } else {\n      if (activeTranslateIndex <= endTranslateMiddleIndex) {\n        this.translate({\n          translatePercentage,\n          translateIndex: activeTranslateIndex,\n          element: slider,\n        });\n      } else {\n        this.translate({\n          translatePercentage,\n          translateIndex: endTranslateMiddleIndex,\n          element: slider,\n        }); // if it reached the endTranslateMiddleIndex it means we are at the end and we should stop translating.\n      }\n    }\n  }\n\n  get selectedImagePreview(): T {\n    return this.value[this.activeIndex];\n  }\n\n  getTemplate(templateName: string): GalleryTemplateDirective {\n    return this.templateList.filter((t) => t.templateName === templateName)[0];\n  }\n\n  hasTemplateName(templateName: string): boolean {\n    return this.templateList.some((s) => s.templateName === templateName);\n  }\n\n  private updateSetting<T>(key: keyof GallerySettings, value: T) {\n    this.settings = {\n      ...this.settings,\n      [key]: value,\n    };\n  }\n\n  private updateSize(size = this.settings.itemSize) {\n    const { defaultGallerySliderWidth } = this.settings;\n\n    const updatedSize = size > this.value.length ? this.value.length : size;\n    const updatedContainerWidth = defaultGallerySliderWidth * updatedSize;\n\n    this.settings = {\n      ...this.settings,\n      itemSize: updatedSize,\n      elementMiddlePosition: Math.floor(updatedSize / 2),\n      translatePercentage:\n        (defaultGallerySliderWidth / updatedContainerWidth) * 100,\n      containerWidth: updatedContainerWidth,\n    };\n  }\n\n  private animate(\n    animationMetaData: AnimationMetadata | AnimationMetadata[],\n    el: HTMLElement\n  ): AnimationPlayer {\n    const animation = this.builder.build(animationMetaData);\n    const player = animation.create(el);\n    player.play();\n\n    return player;\n  }\n\n  private translate({\n    translatePercentage,\n    translateIndex,\n    element,\n  }: {\n    translatePercentage: number;\n    translateIndex: number;\n    element: HTMLElement;\n  }) {\n    this.animate(\n      animate(\n        constants.DEFAULT_EASE,\n        style({\n          transform: `translateX(-${translatePercentage * translateIndex}%)`,\n        })\n      ),\n      element\n    );\n  }\n\n  private galleryStyles(): SafeStyle {\n    return this.sanitizer.bypassSecurityTrustStyle(\n      `max-inline-size: ${this.settings.containerWidth}px`\n    );\n  }\n\n  private resize() {\n    const calcuatedItemSize = Math.floor(\n      window.innerWidth / this.settings.defaultGallerySliderWidth\n    );\n\n    const finalItemSize =\n      calcuatedItemSize > this._itemSize ? this._itemSize : calcuatedItemSize;\n\n    this.updateSize(finalItemSize);\n\n    this.select(this.sliderReference!.nativeElement, this.activeIndex);\n  }\n\n  private getActiveElement(): HTMLDivElement | undefined {\n    const slider = this.sliderReference?.nativeElement;\n\n    return ([].slice.call(slider?.children) as HTMLDivElement[]).find(\n      ({ classList }) => classList.contains('active')\n    );\n  }\n}\n\nexport interface GallerySettings {\n  containerWidth: number;\n  height: number;\n  itemSize: number;\n  elementMiddlePosition: number;\n  translatePercentage: number;\n  defaultGallerySliderWidth: number;\n}\n","<div class=\"gl-preview\" *ngIf=\"hasTemplateName(PREVIEW)\">\n  <ng-container *ngTemplateOutlet=\"\n        getTemplate(PREVIEW).template;\n        context: { $implicit: selectedImagePreview }\n      \"></ng-container>\n</div>\n<div class=\"gl-nav\" *ngIf=\"hasTemplateName(ITEM)\">\n  <div class=\"gl-nav-slider\" #slider>\n    <div class=\"gl-nav-slider-item\" (click)=\"select(slider, i)\" [ngClass]=\"{ active: activeIndex === i }\"\n      *ngFor=\"let item of value; index as i\">\n      <ng-container *ngTemplateOutlet=\"\n            getTemplate(ITEM).template;\n            context: { $implicit: item }\n          \"></ng-container>\n    </div>\n  </div>\n  <button class=\"gl-nav-btn gl-nav-btn--prev\" (click)=\"prev(slider)\">\n    <svg class=\"gl-icon\" id=\"icon-chevron-left\" viewBox=\"0 0 20 20\">\n      <path\n        d=\"M12.452 4.516c0.446 0.436 0.481 1.043 0 1.576l-3.747 3.908 3.747 3.908c0.481 0.533 0.446 1.141 0 1.574-0.445 0.436-1.197 0.408-1.615 0-0.418-0.406-4.502-4.695-4.502-4.695-0.223-0.217-0.335-0.502-0.335-0.787s0.112-0.57 0.335-0.789c0 0 4.084-4.287 4.502-4.695s1.17-0.436 1.615 0z\">\n      </path>\n    </svg>\n  </button>\n  <button class=\"gl-nav-btn gl-nav-btn--next\" (click)=\"next(slider)\">\n    <svg class=\"gl-icon\" id=\"icon-chevron-right\" viewBox=\"0 0 20 20\">\n      <path\n        d=\"M9.163 4.516c0.418 0.408 4.502 4.695 4.502 4.695 0.223 0.219 0.335 0.504 0.335 0.789s-0.112 0.57-0.335 0.787c0 0-4.084 4.289-4.502 4.695-0.418 0.408-1.17 0.436-1.615 0-0.446-0.434-0.481-1.041 0-1.574l3.747-3.908-3.747-3.908c-0.481-0.533-0.446-1.141 0-1.576s1.197-0.409 1.615 0z\">\n      </path>\n    </svg>\n  </button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { GalleryTemplateDirective } from './gallery/gallery-template.directive';\nimport { GalleryComponent } from './gallery/gallery.component';\n\n@NgModule({\n  declarations: [GalleryComponent, GalleryTemplateDirective],\n  imports: [CommonModule],\n  exports: [CommonModule, GalleryComponent, GalleryTemplateDirective],\n})\nexport class AngularGallerySliderModule {}\n","/*\n * Public API Surface of angular-gallery-slider\n */\n\nexport * from './lib/gallery/gallery.component';\nexport * from './lib/gallery/gallery.model';\nexport * from './lib/gallery/gallery-template.directive';\nexport * from './lib/angular-gallery-slider.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}