{"version":3,"file":"ngx-mini-slider.mjs","sources":["../../../projects/ngx-mini-slider/src/lib/mini-slider-arrow/mini-slider-arrow.ts","../../../projects/ngx-mini-slider/src/lib/mini-slider-arrow/mini-slider-arrow.html","../../../projects/ngx-mini-slider/src/lib/directives/link-config.ts","../../../projects/ngx-mini-slider/src/lib/ngx-mini-slider.ts","../../../projects/ngx-mini-slider/src/lib/ngx-mini-slider.html","../../../projects/ngx-mini-slider/src/public-api.ts","../../../projects/ngx-mini-slider/src/ngx-mini-slider.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'mini-slider-arrow',\r\n  imports: [],\r\n  templateUrl: './mini-slider-arrow.html',\r\n  styleUrl: './mini-slider-arrow.scss',\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MiniSliderArrow {\r\n  position = input('left');\r\n}\r\n","@if(position() === 'left'){\r\n\r\n    <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"34px\" viewBox=\"0 -960 960 960\" width=\"34px\" fill=\"#ffffff\">\r\n        <path  d=\"M560-240 320-480l240-240 56 56-184 184 184 184-56 56Z\"/>\r\n    </svg>\r\n\r\n} @else {\r\n\r\n    <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"34px\" viewBox=\"0 -960 960 960\" width=\"34px\" fill=\"#ffffff\"><path d=\"M504-480 320-664l56-56 240 240-240 240-56-56 184-184Z\"/></svg>\r\n}\r\n","import { Directive, HostListener, inject, input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n@Directive({\r\n  selector: '[linkConfig]'\r\n})\r\nexport class LinkConfig {\r\n\r\n  /** INJECTIONS */\r\n  private router = inject(Router);\r\n\r\n  /** INPUTS */\r\n  type = input< 'routerLink' | 'href' | 'none'>('routerLink');\r\n  link = input<string | undefined>(undefined);\r\n  fragment = input<string | undefined>(undefined);\r\n  target = input<'_self' | '_blank' | undefined>('_self');\r\n\r\n  /** METHODS */\r\n  protected setHref(url: string) {\r\n    window.open(url, this.target?.() ?? '_self');\r\n  }\r\n\r\n  /** HOST LISTENERS */\r\n\r\n  @HostListener('click', ['$event'])\r\n  onClick(event: Event) {\r\n    if(this.link()){\r\n      if (this.type() === 'routerLink') {\r\n        event.preventDefault();\r\n        this.router.navigate([this.link()], { fragment: this.fragment()});\r\n      } else if (this.type() === 'href') {\r\n        this.setHref(this.link()!);\r\n      }\r\n    }\r\n  }\r\n\r\n  @HostListener('keydown.enter', ['$event'])\r\n  onEnter(event: Event) {\r\n    if(this.link()){\r\n      if (this.type() === 'routerLink') {\r\n        event.preventDefault();\r\n        this.router.navigate([this.link()], { fragment: this.fragment()});\r\n      } else if (this.type() === 'href') {\r\n        this.setHref(this.link()!);\r\n      }\r\n    }\r\n  }\r\n}\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, effect, ElementRef, HostListener, inject, input, PLATFORM_ID, signal, ViewChild } from '@angular/core';\r\nimport { MiniSliderArrow } from \"./mini-slider-arrow/mini-slider-arrow\";\r\nimport { LinkConfig } from \"./directives/link-config\";\r\n\r\nexport interface MiniSliderItem {\r\n  image_url: string;\r\n  title: string;\r\n  position?: number;\r\n  featured?: boolean;\r\n  link?: string;\r\n  fragment?: string;\r\n  target?: '_blank' | '_self';\r\n}\r\n\r\n@Component({\r\n  selector: 'ngx-mini-slider',\r\n  imports: [MiniSliderArrow, LinkConfig],\r\n  templateUrl: './ngx-mini-slider.html',\r\n  styleUrl: './ngx-mini-slider.scss',\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NgxMiniSlider {\r\n\r\n  /** ---------- INJECTIONS ---------- */\r\n\r\n  isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\r\n  hostRef = inject(ElementRef);\r\n\r\n  /** ---------- INPUTS ---------- */\r\n\r\n  items = input<MiniSliderItem[]>([]);\r\n  linkType = input<'routerLink' | 'href' | 'none'>('routerLink');\r\n\r\n  hasPosition = input<boolean>(true);\r\n  hasFeatured = input<boolean>(true);\r\n  hasTitle = input<boolean>(true);\r\n  buttonStyle = input<'icon' |'button'>('button');\r\n\r\n  rounded = input<boolean>(true);\r\n\r\n  tabIndex = input<boolean>(true);\r\n\r\n  /** ---------- SIGNALS / PROPERTIES ---------- */\r\n\r\n  onStart = signal(true);\r\n  onEnd = signal(false);\r\n\r\n  scroll = signal<number>(0);\r\n\r\n  titleToShow = signal<string>(\"\");\r\n\r\n  /** ---------- VIEW CHILD ---------- */\r\n\r\n  @ViewChild('innerContainer') innerContainer!: ElementRef<HTMLDivElement>;\r\n  @ViewChild('posterContainer') posterContainer!: ElementRef<HTMLAnchorElement>;\r\n\r\n  @ViewChild('slideButtonRight') slideButtonRight!: ElementRef<HTMLButtonElement>;\r\n  @ViewChild('slideButtonLeft') slideButtonLeft!: ElementRef<HTMLButtonElement>;\r\n\r\n  // ---------- Host Listeners ----------\r\n\r\n  @HostListener('window:resize')\r\n  onResize() {\r\n    this.generateScrollEvent();\r\n    this.scrollToStart();\r\n    this.calculateScroll();\r\n  }\r\n\r\n  // ---------- Life Cycle ----------\r\n\r\n  constructor() {\r\n    effect(() => {\r\n      if(this.isBrowser && this.items()) {\r\n        this.scrollToStart();\r\n      }\r\n    });\r\n\r\n    \r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.generateScrollEvent();\r\n  }\r\n  \r\n  /** ---------- METHODS ---------- */\r\n\r\n  onSlideFocus(el: HTMLElement) {\r\n    el.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });\r\n  }\r\n  \r\n  generateScrollEvent(){\r\n    const el = this.innerContainer.nativeElement;\r\n    let timeout: any;\r\n\r\n    el.addEventListener('scroll', () => {\r\n      clearTimeout(timeout);\r\n      timeout = setTimeout(() => {\r\n        const maxScrollLeft = el.scrollWidth - el.clientWidth;\r\n        this.onStart.set(el.scrollLeft === 0);\r\n        this.onEnd.set(el.scrollLeft + 1 >= maxScrollLeft);\r\n      }, 50);\r\n    });\r\n  }\r\n\r\n  scrollToStart() {\r\n    if (this.innerContainer) {\r\n      this.innerContainer.nativeElement.scrollTo({\r\n        left: 0,\r\n        behavior: 'smooth'\r\n      });\r\n      this.onStart.set(true);\r\n      this.onEnd.set(false);\r\n      this.scroll.set(0);\r\n    }\r\n  };\r\n\r\n  showTitle(title : string) {\r\n    this.titleToShow.set(title);\r\n  };\r\n\r\n  hideTitle() {\r\n    this.titleToShow.set('');\r\n  };\r\n\r\n  calculateScroll() {\r\n    const innerContainerWidth = this.innerContainer.nativeElement.clientWidth;\r\n    const posterWidth = this.posterContainer.nativeElement.clientWidth;\r\n    this.scroll.set(Math.floor((innerContainerWidth / posterWidth))* posterWidth);\r\n  };\r\n\r\n  calculateScrollRight() {\r\n    const innerContainerWidth = this.innerContainer.nativeElement.clientWidth;\r\n    const posterWidth = this.posterContainer.nativeElement.clientWidth;\r\n    this.scroll.set(Math.floor((innerContainerWidth / posterWidth))* posterWidth -38);\r\n  };\r\n\r\n  slideNext() {\r\n    if(this.scroll() === 0) this.calculateScroll();\r\n    this.innerContainer.nativeElement.scrollBy({\r\n      left: this.scroll(),\r\n      behavior: 'smooth',\r\n    });\r\n    \r\n  }\r\n\r\n  slidePreviuos() {\r\n    if(this.onEnd()) {\r\n      this.calculateScrollRight();\r\n    } else {\r\n      this.calculateScroll();\r\n    }\r\n    this.innerContainer.nativeElement.scrollBy({\r\n      left: -this.scroll(),\r\n      behavior: 'smooth',\r\n    });\r\n\r\n  }\r\n\r\n}\r\n","<!-- SLIDER LEFT BUTTON -->\r\n<div class=\"miniSlider__btnContainer miniSlider__btnContainer--left\" \r\n    [class.onStart]=\"onStart()\"\r\n>\r\n    <button \r\n        #slideButtonLeft \r\n        class=\"miniSlider__slideBtn miniSlider__slideBtn--left\" \r\n        [class.typeButton]=\"buttonStyle() === 'button'\"\r\n        (click)=\"slidePreviuos()\"\r\n        [attr.aria-hidden]=\"onStart()\"\r\n        [attr.aria-label]=\"'Next slides'\"\r\n        [disabled]=\"onStart()\"\r\n        [tabindex]=\"onStart() || !tabIndex() ? -1 : 0\"\r\n    >\r\n            <mini-slider-arrow [position]=\"'left'\"/>\r\n    </button>\r\n</div>\r\n\r\n<!-- SLIDER ITEMS -->\r\n<div \r\n    class=\"miniSlider__items\" \r\n    #innerContainer\r\n    [class.onStart]=\"onStart()\"\r\n    [class.onEnd]=\"onEnd()\"\r\n>\r\n    @if (items()) {\r\n        @for (item of items(); track item.position; let i = $index) {\r\n            @let pressMessage = linkType() !== 'none' ? '. Press Enter to open.' : '.';\r\n            <a \r\n                #posterContainer \r\n\r\n                linkConfig \r\n                [type]=\"linkType()\" \r\n                [link]=\"item.link\" \r\n                [fragment]=\"item.fragment\"\r\n                [target]=\"item.target\"\r\n\r\n                (focus)=\"onSlideFocus(posterContainer)\"\r\n                    \r\n                class=\"miniSlider__itemContainer\" \r\n                (mouseenter)=\"showTitle(item.title)\" \r\n                (mouseleave)=\"hideTitle()\"\r\n\r\n                [id]=\"'item-' + item.position\"\r\n\r\n                [tabindex]=\"tabIndex() ? 0 : -1\"\r\n                [attr.aria-label]=\"'Slide ' + (i + 1) + ' of ' + items().length + ': ' + item.title + pressMessage\"\r\n            >\r\n                <img \r\n                    [src]=\"item.image_url\" \r\n                    [alt]=\"item.title + ' cover'\" \r\n                    class=\"miniSlider__itemImg\"\r\n                    [class.rounded]=\"rounded()\"\r\n                />\r\n\r\n                @if(hasPosition() && item.position){\r\n                    <span \r\n                        class=\"miniSlider__itemPosition\" \r\n                        [attr.data-content]=\"item.position\"\r\n                    >\r\n                        {{item.position}}\r\n                    </span>\r\n                }\r\n\r\n                @if (hasFeatured() && item.featured) {\r\n                    \r\n                    <svg class=\"miniSlider__itemFeatured\" viewBox=\"-1.2 -1.2 26.40 26.40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#000000\" stroke-width=\"0.00024000000000000003\" width=\"35px\" height=\"35px\">\r\n                        <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g>\r\n                        <g class=\"itemFeatured__stroke\" id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.16\"> \r\n                            <path d=\"M12.9121 1.59053C12.7508 1.2312 12.3936 1 11.9997 1C11.6059 1 11.2487 1.2312 11.0874 1.59053L8.27041 7.86702L1.43062 8.60661C1.03903 8.64895 0.708778 8.91721 0.587066 9.2918C0.465355 9.66639 0.574861 10.0775 0.866772 10.342L5.96556 14.9606L4.55534 21.6942C4.4746 22.0797 4.62768 22.4767 4.94632 22.7082C5.26497 22.9397 5.68983 22.9626 6.03151 22.7667L11.9997 19.3447L17.968 22.7667C18.3097 22.9626 18.7345 22.9397 19.0532 22.7082C19.3718 22.4767 19.5249 22.0797 19.4441 21.6942L18.0339 14.9606L23.1327 10.342C23.4246 10.0775 23.5341 9.66639 23.4124 9.2918C23.2907 8.91721 22.9605 8.64895 22.5689 8.60661L15.7291 7.86702L12.9121 1.59053Z\" fill=\"#ffffff\"></path> </g>\r\n                            <g id=\"SVGRepo_iconCarrier\"> \r\n                                <path d=\"M12.9121 1.59053C12.7508 1.2312 12.3936 1 11.9997 1C11.6059 1 11.2487 1.2312 11.0874 1.59053L8.27041 7.86702L1.43062 8.60661C1.03903 8.64895 0.708778 8.91721 0.587066 9.2918C0.465355 9.66639 0.574861 10.0775 0.866772 10.342L5.96556 14.9606L4.55534 21.6942C4.4746 22.0797 4.62768 22.4767 4.94632 22.7082C5.26497 22.9397 5.68983 22.9626 6.03151 22.7667L11.9997 19.3447L17.968 22.7667C18.3097 22.9626 18.7345 22.9397 19.0532 22.7082C19.3718 22.4767 19.5249 22.0797 19.4441 21.6942L18.0339 14.9606L23.1327 10.342C23.4246 10.0775 23.5341 9.66639 23.4124 9.2918C23.2907 8.91721 22.9605 8.64895 22.5689 8.60661L15.7291 7.86702L12.9121 1.59053Z\" class=\"itemFeatured__fill\"></path> \r\n                            </g>\r\n                    </svg>\r\n                }\r\n\r\n            </a>\r\n        }\r\n    }\r\n</div>\r\n\r\n<!-- SLIDER RIGHT BUTTON -->\r\n<div \r\n    class=\"miniSlider__btnContainer miniSlider__btnContainer--right\" \r\n    [class.onEnd]=\"onEnd()\"\r\n>\r\n    <button \r\n    #slideButtonRight \r\n    class=\"miniSlider__slideBtn miniSlider__slideBtn--right\"\r\n    [class.typeButton]=\"buttonStyle() === 'button'\"\r\n    (click)=\"slideNext()\"\r\n    [attr.aria-hidden]=\"onEnd()\" \r\n    [attr.aria-label]=\"'Previous slides'\"\r\n    [disabled]=\"onEnd()\"\r\n    [tabindex]=\"onEnd() || !tabIndex() ? -1 : 0\"\r\n>\r\n        <mini-slider-arrow [position]=\"'right'\"/>\r\n    </button>\r\n</div>\r\n\r\n<!-- SLIDER DOWN TITLE -->\r\n@if(hasTitle() && titleToShow()){\r\n    <span class=\"slider__itemTitle\">{{titleToShow()}}</span>\r\n}\r\n","/*\r\n * Public API Surface of ngx-mini-slider\r\n */\r\n\r\nexport * from './lib/ngx-mini-slider';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}