{"version":3,"file":"ethio-calendar-converter-angular.mjs","sources":["../../src/lib/ethiopian-calendar.service.ts","../../src/lib/ethiopian-calendar.component.ts","../../src/lib/ethiopian-calendar.module.ts","../../src/ethio-calendar-converter-angular.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { EthiopianDate, GregorianDate } from './models/calendar.model';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class EthiopianCalendarService {\n  // Ethiopian calendar constants\n  private readonly ETHIOPIAN_MONTHS = 13;\n  private readonly ETHIOPIAN_DAYS_IN_MONTH = 30;\n  private readonly ETHIOPIAN_PAGUME_DAYS = 5; // 6 in leap year\n\n  private isEthiopianLeapYear(year: number): boolean {\n    return (year + 1) % 4 === 0;\n  }\n\n  private isGregorianLeapYear(year: number): boolean {\n    return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);\n  }\n\n  private validateEthiopianDate(date: EthiopianDate): boolean {\n    if (date.month < 1 || date.month > this.ETHIOPIAN_MONTHS) return false;\n    if (date.month === this.ETHIOPIAN_MONTHS) {\n      const maxDays = this.isEthiopianLeapYear(date.year) ? \n        this.ETHIOPIAN_PAGUME_DAYS + 1 : \n        this.ETHIOPIAN_PAGUME_DAYS;\n      return date.day >= 1 && date.day <= maxDays;\n    }\n    return date.day >= 1 && date.day <= this.ETHIOPIAN_DAYS_IN_MONTH;\n  }\n\n  toGregorian(ethiopianDate: EthiopianDate): GregorianDate {\n    if (!this.validateEthiopianDate(ethiopianDate)) {\n      throw new Error('Invalid Ethiopian date');\n    }\n\n    let { year, month, day } = ethiopianDate;\n    \n    // Calculate the number of days from Ethiopian new year to the given date\n    let daysDiff = (month - 1) * this.ETHIOPIAN_DAYS_IN_MONTH + day;\n    \n    // Basic conversion (Ethiopian new year is typically September 11/12)\n    let gregorianYear = year + 7;\n    let gregorianMonth = 9; // September\n    let gregorianDay = 10; // Start from September 10\n\n    // Adjust for Ethiopian leap year\n    if (this.isEthiopianLeapYear(year)) {\n      gregorianDay += 1;\n    }\n\n    // Add the difference in days\n    gregorianDay += daysDiff;\n\n    // Adjust the Gregorian date\n    const gregorianMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n    if (this.isGregorianLeapYear(gregorianYear)) {\n      gregorianMonthDays[1] = 29;\n    }\n\n    // Adjust month and day\n    while (gregorianDay > gregorianMonthDays[gregorianMonth - 1]) {\n      gregorianDay -= gregorianMonthDays[gregorianMonth - 1];\n      gregorianMonth++;\n      if (gregorianMonth > 12) {\n        gregorianMonth = 1;\n        gregorianYear++;\n        if (this.isGregorianLeapYear(gregorianYear)) {\n          gregorianMonthDays[1] = 29;\n        } else {\n          gregorianMonthDays[1] = 28;\n        }\n      }\n    }\n\n    return {\n      year: gregorianYear,\n      month: gregorianMonth,\n      day: gregorianDay\n    };\n  }\n\n  toEthiopian(gregorianDate: GregorianDate): EthiopianDate {\n    let { year, month, day } = gregorianDate;\n    \n    // Find the Ethiopian year\n    let ethiopianYear = year - 8;\n    \n    // Calculate days from Ethiopian new year (September 11/12)\n    const gregorianMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n    if (this.isGregorianLeapYear(year)) {\n      gregorianMonthDays[1] = 29;\n    }\n\n    // Calculate the Ethiopian date\n    let ethiopianMonth = 1;\n    let ethiopianDay = 1;\n    \n    // Adjust based on the Gregorian date\n    if (month > 9 || (month === 9 && day > 11)) {\n      ethiopianYear++;\n    }\n\n    // Calculate days from Ethiopian new year\n    let daysDiff = 0;\n    if (month > 9) {\n      // Add days from September to current month\n      for (let m = 9; m < month; m++) {\n        daysDiff += gregorianMonthDays[m - 1];\n      }\n      daysDiff += day - 11;\n    } else if (month < 9) {\n      // Add remaining days from September to December\n      for (let m = 9; m <= 12; m++) {\n        daysDiff += gregorianMonthDays[m - 1];\n      }\n      // Add days from January to current month\n      for (let m = 1; m < month; m++) {\n        daysDiff += gregorianMonthDays[m - 1];\n      }\n      daysDiff += day - 11;\n    } else {\n      // September\n      daysDiff = day - 11;\n    }\n\n    // Convert days difference to Ethiopian date\n    ethiopianMonth = Math.floor(daysDiff / 30) + 1;\n    ethiopianDay = (daysDiff % 30) + 1;\n\n    return {\n      year: ethiopianYear,\n      month: ethiopianMonth,\n      day: ethiopianDay\n    };\n  }\n\n  // Helper method to format dates\n  formatDate(date: EthiopianDate | GregorianDate, isEthiopian: boolean = true): string {\n    const { year, month, day } = date;\n    return `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}${\n      isEthiopian ? ' (Ethiopian)' : ' (Gregorian)'\n    }`;\n  }\n} ","import { Component, Output, EventEmitter } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { EthiopianCalendarService } from './ethiopian-calendar.service';\nimport { EthiopianDate, GregorianDate } from './models/calendar.model';\n\n@Component({\n  selector: 'ethiopian-calendar',\n  standalone: true,\n  imports: [\n    CommonModule,\n    FormsModule\n  ],\n  template: `\n    <div class=\"bg-white rounded-lg shadow-lg p-6 max-w-md mx-auto\">\n      <!-- Ethiopian Calendar Input -->\n      <div class=\"mb-8\">\n        <h3 class=\"text-lg font-medium text-gray-900 mb-4\">Ethiopian Calendar</h3>\n        <div class=\"relative\">\n          <input\n            type=\"text\"\n            [value]=\"formatEthiopianDateForInput(ethiopianDate)\"\n            (click)=\"toggleEthiopianPicker()\"\n            readonly\n            class=\"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all cursor-pointer\"\n          />\n          <label class=\"absolute -top-2 left-2 bg-white px-1 text-xs text-gray-600\">Select Date</label>\n          \n          <!-- Calendar Icon -->\n          <button \n            (click)=\"toggleEthiopianPicker()\"\n            class=\"absolute right-2 top-2 text-gray-400 hover:text-gray-600 focus:outline-none\"\n          >\n            <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"h-5 w-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n              <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z\" />\n            </svg>\n          </button>\n\n          <!-- Ethiopian Calendar Picker -->\n          <div *ngIf=\"showEthiopianPicker\" \n               class=\"absolute left-0 mt-1 p-4 bg-white rounded-lg shadow-lg border border-gray-200 z-50 w-[320px]\">\n            <!-- Month and Year Navigation -->\n            <div class=\"flex justify-between items-center mb-4\">\n              <button \n                (click)=\"previousMonth()\"\n                class=\"p-1 hover:bg-gray-100 rounded-full\"\n              >\n                <svg class=\"h-5 w-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n                  <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M15 19l-7-7 7-7\" />\n                </svg>\n              </button>\n              \n              <div class=\"flex items-center space-x-2\">\n                <select \n                  [(ngModel)]=\"ethiopianDate.month\"\n                  (change)=\"updateEthiopianDate()\"\n                  class=\"text-sm border-none bg-transparent font-semibold focus:outline-none focus:ring-0\"\n                >\n                  <option *ngFor=\"let month of ethiopianMonths\" [value]=\"month.value\">\n                    {{month.label}}\n                  </option>\n                </select>\n                <select \n                  [(ngModel)]=\"ethiopianDate.year\"\n                  (change)=\"updateEthiopianDate()\"\n                  class=\"text-sm border-none bg-transparent font-semibold focus:outline-none focus:ring-0\"\n                >\n                  <option *ngFor=\"let year of ethiopianYears\" [value]=\"year\">{{year}}</option>\n                </select>\n              </div>\n\n              <button \n                (click)=\"nextMonth()\"\n                class=\"p-1 hover:bg-gray-100 rounded-full\"\n              >\n                <svg class=\"h-5 w-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n                  <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\" />\n                </svg>\n              </button>\n            </div>\n\n            <!-- Calendar Grid -->\n            <div class=\"grid grid-cols-7 gap-1\">\n              <!-- Week days -->\n              <div *ngFor=\"let day of weekDays\" \n                   class=\"text-center text-xs font-medium text-gray-500 py-1\">\n                {{day}}\n              </div>\n\n              <!-- Days -->\n              <ng-container *ngFor=\"let day of getDaysArray()\">\n                <button *ngIf=\"day !== 0\"\n                  (click)=\"selectDay(day)\"\n                  [class]=\"getDayClasses(day)\"\n                >\n                  {{day}}\n                </button>\n                <div *ngIf=\"day === 0\" class=\"h-8\"></div>\n              </ng-container>\n            </div>\n\n            <!-- Today Button -->\n            <div class=\"mt-4 flex justify-between items-center border-t pt-4\">\n              <button \n                (click)=\"selectToday()\"\n                class=\"text-sm text-blue-600 hover:text-blue-800 font-medium\"\n              >\n                Today\n              </button>\n              <button \n                (click)=\"toggleEthiopianPicker()\"\n                class=\"text-sm text-gray-600 hover:text-gray-800 font-medium\"\n              >\n                Close\n              </button>\n            </div>\n          </div>\n        </div>\n\n        <div *ngIf=\"ethiopianDate\" class=\"mt-2 text-sm text-gray-600\">\n          Selected: {{formatEthiopianDateForDisplay(ethiopianDate)}}\n        </div>\n\n        <button\n          (click)=\"convertToGregorian()\"\n          class=\"mt-4 w-full bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 transition-colors\"\n        >\n          Convert to Gregorian\n        </button>\n      </div>\n\n      <!-- Gregorian Calendar Input -->\n      <div class=\"mb-8\">\n        <h3 class=\"text-lg font-medium text-gray-900 mb-4\">Gregorian Calendar</h3>\n        <div class=\"relative\">\n          <input\n            type=\"date\"\n            [value]=\"formatDateForInput(gregorianDate)\"\n            (change)=\"onGregorianDateSelected($event)\"\n            class=\"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all\"\n          />\n          <label class=\"absolute -top-2 left-2 bg-white px-1 text-xs text-gray-600\">Select Date</label>\n        </div>\n\n        <div *ngIf=\"gregorianDate\" class=\"mt-2 text-sm text-gray-600\">\n          Selected: {{formatGregorianDate(gregorianDate)}}\n        </div>\n\n        <button\n          (click)=\"convertToEthiopian()\"\n          class=\"mt-4 w-full bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 transition-colors\"\n        >\n          Convert to Ethiopian\n        </button>\n      </div>\n\n      <!-- Conversion Result -->\n      <div *ngIf=\"lastConversion\" \n           class=\"p-4 bg-gray-50 rounded-lg border border-gray-200\">\n        <p class=\"text-sm font-medium text-gray-900\">Last Conversion:</p>\n        <p class=\"text-sm text-gray-600 mt-1\">{{lastConversion}}</p>\n      </div>\n    </div>\n  `\n})\nexport class EthiopianCalendarComponent {\n  ethiopianDate: EthiopianDate = { year: 2015, month: 4, day: 25 };\n  gregorianDate: GregorianDate = { year: 2022, month: 3, day: 25 };\n  lastConversion: string = '';\n  showEthiopianPicker: boolean = false;\n\n  ethiopianMonths = [\n    { value: 1, label: 'Meskerem' },\n    { value: 2, label: 'Tikimt' },\n    { value: 3, label: 'Hidar' },\n    { value: 4, label: 'Tahsas' },\n    { value: 5, label: 'Tir' },\n    { value: 6, label: 'Yekatit' },\n    { value: 7, label: 'Megabit' },\n    { value: 8, label: 'Miyazia' },\n    { value: 9, label: 'Ginbot' },\n    { value: 10, label: 'Sene' },\n    { value: 11, label: 'Hamle' },\n    { value: 12, label: 'Nehase' },\n    { value: 13, label: 'Pagume' }\n  ];\n\n  get ethiopianYears(): number[] {\n    const currentYear = new Date().getFullYear();\n    const years: number[] = [];\n    for (let i = currentYear - 100; i <= currentYear + 100; i++) {\n      years.push(i - 8); // Convert to approximate Ethiopian year\n    }\n    return years;\n  }\n\n  @Output() ethiopianDateChange = new EventEmitter<EthiopianDate>();\n  @Output() gregorianDateChange = new EventEmitter<GregorianDate>();\n\n  constructor(private calendarService: EthiopianCalendarService) {}\n\n  toggleEthiopianPicker() {\n    this.showEthiopianPicker = !this.showEthiopianPicker;\n  }\n\n  getEthiopianDays(): number[] {\n    const maxDays = this.ethiopianDate.month === 13 ? \n      (this.calendarService['isEthiopianLeapYear'](this.ethiopianDate.year) ? 6 : 5) : \n      30;\n    return Array.from({length: maxDays}, (_, i) => i + 1);\n  }\n\n  applyEthiopianDate() {\n    this.convertToGregorian();\n    this.toggleEthiopianPicker();\n  }\n\n  formatEthiopianDateForDisplay(date: EthiopianDate): string {\n    const monthName = this.ethiopianMonths.find(m => m.value === date.month)?.label || '';\n    return `${monthName} ${date.day}, ${date.year}`;\n  }\n\n  convertToGregorian() {\n    try {\n      this.gregorianDate = this.calendarService.toGregorian(this.ethiopianDate);\n      this.gregorianDateChange.emit(this.gregorianDate);\n      this.lastConversion = `Ethiopian ${this.formatDate(this.ethiopianDate)} → Gregorian ${this.formatDate(this.gregorianDate)}`;\n    } catch (error) {\n      this.lastConversion = 'Invalid Ethiopian date';\n    }\n  }\n\n  convertToEthiopian() {\n    try {\n      this.ethiopianDate = this.calendarService.toEthiopian(this.gregorianDate);\n      this.ethiopianDateChange.emit(this.ethiopianDate);\n      this.lastConversion = `Gregorian ${this.formatDate(this.gregorianDate)} → Ethiopian ${this.formatDate(this.ethiopianDate)}`;\n    } catch (error) {\n      this.lastConversion = 'Invalid Gregorian date';\n    }\n  }\n\n  onGregorianDateSelected(event: any) {\n    const date = new Date(event.target.value);\n    this.gregorianDate = {\n      year: date.getFullYear(),\n      month: date.getMonth() + 1,\n      day: date.getDate()\n    };\n    this.convertToEthiopian();\n  }\n\n  formatDate(date: EthiopianDate | GregorianDate): string {\n    return `${date.year}-${String(date.month).padStart(2, '0')}-${String(date.day).padStart(2, '0')}`;\n  }\n\n  formatDateForInput(date: GregorianDate): string {\n    return `${date.year}-${String(date.month).padStart(2, '0')}-${String(date.day).padStart(2, '0')}`;\n  }\n\n  formatGregorianDate(date: GregorianDate): string {\n    return new Date(date.year, date.month - 1, date.day)\n      .toLocaleDateString('en-US', {\n        year: 'numeric',\n        month: 'long',\n        day: 'numeric'\n      });\n  }\n\n  weekDays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\n  previousMonth() {\n    if (this.ethiopianDate.month > 1) {\n      this.ethiopianDate.month--;\n    } else {\n      this.ethiopianDate.month = 13;\n      this.ethiopianDate.year--;\n    }\n    this.updateEthiopianDate();\n  }\n\n  nextMonth() {\n    if (this.ethiopianDate.month < 13) {\n      this.ethiopianDate.month++;\n    } else {\n      this.ethiopianDate.month = 1;\n      this.ethiopianDate.year++;\n    }\n    this.updateEthiopianDate();\n  }\n\n  getDaysArray(): number[] {\n    const daysInMonth = this.ethiopianDate.month === 13 ? \n      (this.calendarService['isEthiopianLeapYear'](this.ethiopianDate.year) ? 6 : 5) : \n      30;\n    \n    // Create array with padding for alignment\n    const days: number[] = [];\n    const firstDayOffset = this.getFirstDayOffset();\n    \n    // Add padding\n    for (let i = 0; i < firstDayOffset; i++) {\n      days.push(0);\n    }\n    \n    // Add days\n    for (let i = 1; i <= daysInMonth; i++) {\n      days.push(i);\n    }\n    \n    return days;\n  }\n\n  getFirstDayOffset(): number {\n    // This is a simplified version - you might want to implement proper Ethiopian calendar day-of-week calculation\n    return (this.ethiopianDate.month * 2) % 7;\n  }\n\n  getDayClasses(day: number): string {\n    const baseClasses = 'h-8 w-8 rounded-full flex items-center justify-center text-sm';\n    const isSelected = day === this.ethiopianDate.day;\n    \n    if (isSelected) {\n      return `${baseClasses} bg-blue-600 text-white`;\n    }\n    \n    return `${baseClasses} hover:bg-gray-100 text-gray-700`;\n  }\n\n  selectDay(day: number) {\n    this.ethiopianDate.day = day;\n    this.updateEthiopianDate();\n    this.toggleEthiopianPicker();\n  }\n\n  selectToday() {\n    const today = this.calendarService.toEthiopian({\n      year: new Date().getFullYear(),\n      month: new Date().getMonth() + 1,\n      day: new Date().getDate()\n    });\n    this.ethiopianDate = today;\n    this.updateEthiopianDate();\n    this.toggleEthiopianPicker();\n  }\n\n  updateEthiopianDate() {\n    this.ethiopianDateChange.emit(this.ethiopianDate);\n    this.convertToGregorian();\n  }\n\n  formatEthiopianDateForInput(date: EthiopianDate): string {\n    const monthName = this.ethiopianMonths.find(m => m.value === date.month)?.label || '';\n    return `${monthName} ${date.day}, ${date.year}`;\n  }\n} ","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { EthiopianCalendarComponent } from './ethiopian-calendar.component';\nimport { EthiopianCalendarService } from './ethiopian-calendar.service';\n\n@NgModule({\n  declarations: [],\n  imports: [\n    CommonModule,\n    FormsModule,\n    EthiopianCalendarComponent\n  ],\n  exports: [\n    EthiopianCalendarComponent\n  ],\n  providers: [\n    EthiopianCalendarService\n  ]\n})\nexport class EthiopianCalendarModule { } ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.EthiopianCalendarService"],"mappings":"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"}