{"version":3,"file":"ngx-strip-calendar.mjs","sources":["../../../projects/strip-calendar/src/lib/strip-calendar.component.ts","../../../projects/strip-calendar/src/lib/strip-calendar.html","../../../projects/strip-calendar/src/public-api.ts","../../../projects/strip-calendar/src/ngx-strip-calendar.ts"],"sourcesContent":["import { Component, OnInit, ElementRef, Output, EventEmitter, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { startOfMonth, endOfMonth, eachDayOfInterval, subMonths, addMonths, isSameDay } from 'date-fns';\n\n\n@Component({\n  selector: 'ngx-strip-calendar',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './strip-calendar.html',\n  styleUrls: ['./strip-calendar.scss']\n})\nexport class StripCalendarComponent implements OnInit {\n  @ViewChild('dateCon') datesContainer!: ElementRef;\n\n  currentMonth: any = undefined;\n  selectedDate: any = new Date();\n\n  @Output() onDateChange = new EventEmitter<any>();\n\n  constructor(\n    private el: ElementRef\n  ) { }\n\n  ngOnInit() {\n    this.createDateArray(new Date());\n  }\n\n  createDateArray(date: Date): void {\n    const startOfCurrentMonth = startOfMonth(date);\n    const endOfCurrentMonth = endOfMonth(date);\n    this.currentMonth = eachDayOfInterval({ start: startOfCurrentMonth, end: endOfCurrentMonth });\n    this.selectedDate.setHours(0, 0, 0, 0).toString()\n    setTimeout(() => {\n      this.scrollIntoMyView(this.selectedDate);\n    }, 500)\n  }\n\n  goToPreviousMonth(): void {\n    const previousMonthDate = subMonths(this.currentMonth[0], 1);\n    this.createDateArray(previousMonthDate);\n  }\n\n  goToNextMonth(): void {\n    const nextMonthDate = addMonths(this.currentMonth[0], 1);\n    this.createDateArray(nextMonthDate);\n  }\n\n  isCurrentDate(date: Date): boolean {\n    return isSameDay(date, this.selectedDate);\n  }\n\n  scrollIntoMyView(date: Date): void {\n    const targetId = 'target' + this.currentMonth.findIndex((d: any) => isSameDay(d, date));\n    const targetElement = this.el.nativeElement.querySelector(`#${targetId}`);\n    if (targetElement) {\n      targetElement.scrollIntoView({ behavior: 'smooth', inline: 'center' });\n    }\n  }\n\n  smoothScroll(direction: 'left' | 'right', distance: number) {\n    const container = this.datesContainer.nativeElement;\n    const scrollAmount = direction === 'left' ? container.scrollLeft - distance : container.scrollLeft + distance;\n    container.scrollTo({ \n      left: scrollAmount,\n      behavior: 'smooth'\n    });\n  }\n\n  onChange(date: any) {\n    this.selectedDate = date;\n    this.onDateChange.emit(date);\n  }\n}\n\n","<div class=\"d-flex align-items-center justify-content-center icons\">\n\n  <div class=\"icon-btn\">\n    <button (click)=\"goToPreviousMonth()\">\n      {{'<'}} </button>\n  </div>\n\n  <div class=\"date d-flex align-items-center justify-content-center\">\n\n    <ng-container *ngIf=\"currentMonth\">\n      {{currentMonth[0] | date: 'MMM y'}}\n    </ng-container>\n\n  </div>\n\n  <div class=\"icon-btn\">\n    <button (click)=\"goToNextMonth()\">\n      {{'>'}}\n    </button>\n  </div>\n</div>\n\n\n<ng-container *ngIf=\"currentMonth.length > 0\">\n  <div class=\"d-flex align-items-center justify-content-space-evenly\">\n\n    <div class=\"arrows arr1\" (click)=\"smoothScroll('left', 210)\">\n      {{'<'}} </div>\n\n        <div #dateCon class=\"d-flex align-items-center dates no-scrollbar\">\n\n          <ng-container *ngFor=\"let date of currentMonth; index as i;\">\n            <div class=\"date-box d-flex flex-column align-items-center justify-content-space-evenly\"\n              [ngClass]=\"{'selected-box' : isCurrentDate(date)}\" (click)=\"onChange(date)\" [id]=\"'target'+i\">\n              <div class=\"day\">{{ date | date: 'EEE' }}</div>\n              <div class=\"date\">{{ date | date: 'dd' }}</div>\n            </div>\n          </ng-container>\n\n        </div>\n\n        <div class=\"arrows arr2\" (click)=\"smoothScroll('right', 210)\">\n          {{'>'}}\n        </div>\n    </div>\n</ng-container>","/*\n * Public API Surface of strip-calendar\n */\n\nexport * from './lib/strip-calendar.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}