{"version":3,"file":"tapsellorg-angular-material-library-src-lib-date-range-picker.mjs","sources":["../../projects/pegah-library/src/lib/date-range-picker/constants.ts","../../projects/pegah-library/src/lib/date-range-picker/configs.ts","../../projects/pegah-library/src/lib/date-range-picker/predefined-range-calculator.ts","../../projects/pegah-library/src/lib/date-range-picker/date-picker.service.ts","../../projects/pegah-library/src/lib/date-range-picker/date-range-picker-controller.service.ts","../../projects/pegah-library/src/lib/date-range-picker/date-picker-header/date-picker-header.component.ts","../../projects/pegah-library/src/lib/date-range-picker/date-picker-header/date-picker-header.component.html","../../projects/pegah-library/src/lib/date-range-picker/date-range-picker-selection.strategy.ts","../../projects/pegah-library/src/lib/date-range-picker/max-range.directive.ts","../../projects/pegah-library/src/lib/date-range-picker/date-range-picker.component.ts","../../projects/pegah-library/src/lib/date-range-picker/date-range-picker.component.html","../../projects/pegah-library/src/lib/date-range-picker/date-range-picker.module.ts","../../projects/pegah-library/src/lib/date-range-picker/tapsellorg-angular-material-library-src-lib-date-range-picker.ts"],"sourcesContent":["import { PghPredefinedDate } from './models';\n\nexport const PghPredefinedDateRanges = {\n  last7Days: {\n    id: 'last 7 days',\n    type: 'relative',\n    start: -6,\n    end: 0,\n    title: 'DATE_RANGE_PICKER_LAST_SEVEN_DAYS',\n  } as PghPredefinedDate,\n};\n\nexport const PGH_DEFAULT_PREDEFINED_DATE_RANGES: PghPredefinedDate[] = [\n  { id: 'today', type: 'relative', start: 0, end: 0, title: 'DATE_RANGE_PICKER_TODAY' },\n  { id: 'yesterday', type: 'relative', start: -1, end: -1, title: 'DATE_RANGE_PICKER_YESTERDAY' },\n\n  PghPredefinedDateRanges.last7Days,\n  {\n    id: 'last 30 days',\n    type: 'relative',\n    start: -29,\n    end: 0,\n    title: 'DATE_RANGE_PICKER_LAST_THIRTY_DAYS',\n  },\n  {\n    id: 'last 60 days',\n    type: 'relative',\n    start: -59,\n    end: 0,\n    title: 'DATE_RANGE_PICKER_LAST_SIXTY_DAYS',\n  },\n  { id: 'this month', type: 'month', from: 0, title: 'DATE_RANGE_PICKER_CURRENT_MONTH' },\n\n  // { id: 'this year', type: 'year', from: 0, title: 'امسال' },\n  // { id: 'last year', type: 'year', from: -1, title: 'سال گذشته' },\n\n  {\n    id: 'clear date',\n    type: 'clearDate',\n    title: 'DATE_RANGE_PICKER_DELETE_BUTTON',\n  },\n];\n\nexport const PGH_DEFAULT_PREDEFINED_EXPANDED_DATE_RANGES: PghPredefinedDate[] = [\n  { id: 'today', type: 'relative', start: 0, end: 0, title: 'DATE_RANGE_PICKER_TODAY' },\n\n  PghPredefinedDateRanges.last7Days,\n  {\n    id: 'last 30 days',\n    type: 'relative',\n    start: -29,\n    end: 0,\n    title: 'DATE_RANGE_PICKER_LAST_THIRTY_DAYS',\n  },\n  { id: 'this month', type: 'month', from: 0, title: 'DATE_RANGE_PICKER_CURRENT_MONTH' },\n];\n\nexport interface JalaliDate {\n  year: number;\n  month: number;\n  day: number;\n}\n\nexport const DEFAULT_SELECTED_DATE_RANGE = [\n  'today',\n  'this month',\n  'clear date',\n  'last 7 days',\n  'yesterday',\n  'last 30 days',\n  'last 60 days',\n];\n","import { InjectionToken } from '@angular/core';\nimport {\n  PGH_DEFAULT_PREDEFINED_DATE_RANGES,\n  PGH_DEFAULT_PREDEFINED_EXPANDED_DATE_RANGES,\n  PghPredefinedDateRanges,\n} from './constants';\nimport { PghDatePickerItemId, PghPredefinedDate } from './models';\n\nexport const PGH_PREDEFINED_DATE_RANGES = new InjectionToken<PghPredefinedDate[]>(\n  'pghPredefinedDateRanges',\n  {\n    providedIn: 'root',\n    factory: () => PGH_DEFAULT_PREDEFINED_DATE_RANGES,\n  },\n);\n\nexport const PGH_PREDEFINED_EXPANDED_DATE_RANGES = new InjectionToken<PghPredefinedDate[]>(\n  'pghPredefinedDateRanges',\n  {\n    providedIn: 'root',\n    factory: () => PGH_DEFAULT_PREDEFINED_EXPANDED_DATE_RANGES,\n  },\n);\n\nexport const PGH_FALLBACK_PREDEFINED_DATE_RANGE = new InjectionToken<PghPredefinedDate>(\n  'pghPredefinedDateRanges',\n  {\n    providedIn: 'root',\n    factory: () => PghPredefinedDateRanges.last7Days,\n  },\n);\n\nexport const PGH_DEFAULT_SELECTED_DATE_RANGE = new InjectionToken<PghDatePickerItemId>(\n  'pghDefaultSelectedDateRange',\n  {\n    providedIn: 'root',\n    factory: () => 'last 7 days',\n  },\n);\n","import {\n  GregorianJalaliHelper,\n  JalaliDate,\n  MaterialJalaliDateAdapter,\n} from '@tapsellorg/angular-material-library/src/lib/jalali-date-adapter';\nimport {\n  PghDatePickerSavedItem,\n  PghEnrichedDateRange,\n  PghJalaliDateRange,\n  PghPredefinedDate,\n} from './models';\n\nexport class PghPredefinedRangeCalculator {\n  constructor(private dateAdapter: MaterialJalaliDateAdapter) {}\n\n  static getEnrichedDateRange(\n    range: PghJalaliDateRange,\n    predefined?: PghPredefinedDate,\n  ): PghEnrichedDateRange | undefined {\n    if (predefined && (!range?.start || !range.end)) {\n      return;\n    }\n    const startGregorian = GregorianJalaliHelper.toGregorian(range.start);\n    const endGregorian = GregorianJalaliHelper.toGregorian(range.end);\n    endGregorian.setHours(23, 59, 59, 999);\n    startGregorian.setHours(0, 0, 0, 0);\n\n    return {\n      start: range.start,\n      end: range.end,\n      startGregorian,\n      endGregorian,\n      startTimestamp: startGregorian?.getTime(),\n      endTimestamp: endGregorian?.getTime(),\n      predefined,\n    };\n  }\n\n  extractRangeFromSavedItem(\n    savedDateRange: PghDatePickerSavedItem,\n  ): PghJalaliDateRange | undefined {\n    if (savedDateRange.type === 'clearDate') {\n      return;\n    } else if (savedDateRange.type === 'predefined') {\n      const predefinedDate = savedDateRange.range as PghPredefinedDate;\n      const dateRange = predefinedDate && this.calculateDateRange(predefinedDate);\n      if (!dateRange) return;\n\n      return dateRange;\n    } else {\n      const range = savedDateRange.range as PghJalaliDateRange;\n      if (!range) return;\n      const start = new JalaliDate(range.start.year, range.start.month, range.start.day);\n      const end = new JalaliDate(range.end.year, range.end.month, range.end.day);\n      return { start, end };\n    }\n  }\n\n  calculateDateRange(range: PghPredefinedDate | undefined): PghJalaliDateRange | undefined {\n    if (!range) return;\n    const today = this.dateAdapter.today();\n    const year = this.dateAdapter.getYear(today);\n\n    switch (range.type) {\n      case 'relative':\n        const start = this.dateAdapter.addCalendarDays(today, range.start);\n        const end = this.dateAdapter.addCalendarDays(today, range.end);\n        return { start, end };\n      case 'week':\n        const thisDayAtWantedWeek = this.dateAdapter.addCalendarDays(today, 7 * range.from);\n        return this.calculateWeek(thisDayAtWantedWeek);\n\n      case 'month':\n        const thisDayAtWantedMonth = this.dateAdapter.addCalendarMonths(today, range.from);\n        return this.calculateMonth(thisDayAtWantedMonth);\n\n      case 'year':\n        const startOfYear = this.dateAdapter.createDate(year + range.from, 0, 1);\n\n        const lastDayOfYear = this.dateAdapter.isLeapYear(year + range.from) ? 30 : 29;\n        const endOfYear = this.dateAdapter.createDate(year + range.from, 11, lastDayOfYear);\n        return { start: startOfYear, end: endOfYear };\n\n      case 'clearDate':\n      default:\n        return;\n    }\n  }\n\n  private calculateMonth(forDay: JalaliDate): PghJalaliDateRange {\n    const year = this.dateAdapter.getYear(forDay);\n    const month = this.dateAdapter.getMonth(forDay);\n\n    const start = this.dateAdapter.createDate(year, month, 1);\n    const end = this.dateAdapter.addCalendarDays(\n      start,\n      this.dateAdapter.getNumDaysInMonth(forDay) - 1,\n    );\n    return { start, end };\n  }\n\n  private calculateWeek(forDay: JalaliDate): PghJalaliDateRange {\n    // Just works for JalaliDates\n    const deltaStart =\n      ((this.dateAdapter.getFirstDayOfWeek() + 1) % 7) -\n      ((this.dateAdapter.getDayOfWeek(forDay) + 1) % 7);\n\n    const start = this.dateAdapter.addCalendarDays(forDay, deltaStart);\n    const end = this.dateAdapter.addCalendarDays(start, 6);\n    return { start, end };\n  }\n}\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport {\n  DateUtils,\n  MaterialJalaliDateAdapter,\n} from '@tapsellorg/angular-material-library/src/lib/jalali-date-adapter';\nimport { BehaviorSubject } from 'rxjs';\nimport {\n  PghDatePickerSavedItem,\n  PghDateRangeChangeEvent,\n  PghJalaliDateRange,\n  PghPredefinedDate,\n} from './models';\nimport { DateAdapter } from '@angular/material/core';\nimport { PghPredefinedRangeCalculator } from './predefined-range-calculator';\nimport { PGH_FALLBACK_PREDEFINED_DATE_RANGE } from './configs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PghDatePickerService implements OnDestroy {\n  private predefinedRangeCalculator = new PghPredefinedRangeCalculator(this.dateAdapter);\n  private readonly DATE_KEY = 'pgh_datepicker_state';\n  private readonly EXPIRATION_PERIOD: number | undefined;\n\n  dateChange$ = new BehaviorSubject<PghDateRangeChangeEvent | undefined>(\n    this.extractLocalStorageValue(),\n  );\n\n  constructor(\n    @Inject(DateAdapter) private dateAdapter: MaterialJalaliDateAdapter,\n    @Inject(PGH_FALLBACK_PREDEFINED_DATE_RANGE) private fallBackPredefinedDate: PghPredefinedDate,\n  ) {\n    window.addEventListener('storage', this.localStorageListener);\n  }\n\n  ngOnDestroy() {\n    window.removeEventListener('storage', this.localStorageListener);\n  }\n\n  setDateRange(range: PghJalaliDateRange | undefined) {\n    if (!range?.start || !range.end) return;\n    this.saveDateInLocalStorage({ type: 'range', range });\n    this.dateChange$.next(PghPredefinedRangeCalculator.getEnrichedDateRange(range));\n  }\n\n  setPredefinedDate(predefinedDate: PghPredefinedDate) {\n    const range = this.predefinedRangeCalculator.calculateDateRange(predefinedDate);\n    this.saveDateInLocalStorage({ type: 'predefined', range: predefinedDate });\n    this.dateChange$.next(\n      PghPredefinedRangeCalculator.getEnrichedDateRange(range!, predefinedDate),\n    );\n  }\n\n  private saveDateInLocalStorage(dateInfo: Omit<PghDatePickerSavedItem, 'lastChange'>) {\n    const datePickerSavedItem: PghDatePickerSavedItem = {\n      ...dateInfo,\n      lastChange: Date.now(),\n    };\n    const value = JSON.stringify(datePickerSavedItem);\n    localStorage.setItem(this.DATE_KEY, value);\n  }\n\n  private localStorageListener = (_event: StorageEvent) => {\n    const savedItem = this.getSavedDateFromLocalStorage();\n    if (!savedItem) return;\n    this.dateChange$.next(this.extractLocalStorageValue(savedItem));\n  };\n\n  private isDateExpired(date: number): boolean {\n    if (!this.EXPIRATION_PERIOD) return false;\n    const today = new Date();\n    return DateUtils.daysBetween(today, new Date(date)) > this.EXPIRATION_PERIOD;\n  }\n\n  private getSavedDateFromLocalStorage() {\n    try {\n      const savedRangeItem = localStorage.getItem(this.DATE_KEY);\n      if (!savedRangeItem) return;\n\n      const savedDateRange = JSON.parse(savedRangeItem) as PghDatePickerSavedItem;\n      if (this.isDateExpired(savedDateRange.lastChange)) return;\n\n      return savedDateRange;\n    } catch (_e) {\n      return;\n    }\n  }\n\n  private extractLocalStorageValue(savedDate = this.getSavedDateFromLocalStorage()) {\n    const fallBackRange = {\n      type: 'predefined' as const,\n      lastChange: Date.now(),\n      range: this.fallBackPredefinedDate,\n    };\n    let predefined =\n      savedDate?.type === 'predefined' ? (savedDate?.range as PghPredefinedDate) : undefined;\n\n    let range = this.predefinedRangeCalculator.extractRangeFromSavedItem(\n      savedDate ?? fallBackRange,\n    );\n    if (!range && !predefined) {\n      range = this.predefinedRangeCalculator.extractRangeFromSavedItem(fallBackRange);\n      predefined = fallBackRange.range as PghPredefinedDate;\n    }\n\n    return PghPredefinedRangeCalculator.getEnrichedDateRange(range!, predefined);\n  }\n}\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { DateAdapter } from '@angular/material/core';\nimport { MaterialJalaliDateAdapter } from '@tapsellorg/angular-material-library/src/lib/jalali-date-adapter';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { PGH_PREDEFINED_DATE_RANGES, PGH_PREDEFINED_EXPANDED_DATE_RANGES } from './configs';\nimport { PGH_DEFAULT_PREDEFINED_DATE_RANGES } from './constants';\nimport { PghDatePickerService } from './date-picker.service';\nimport {\n  PghDatePickerItemId,\n  PghEnrichedDateRange,\n  PghJalaliDateRange,\n  PghPredefinedDate,\n} from './models';\nimport { PghPredefinedRangeCalculator } from './predefined-range-calculator';\nimport { withDestroy } from '@tapsellorg/angular-material-library/src/lib/common';\n\n@Injectable()\nexport class PghDateRangePickerControllerService extends withDestroy() implements OnDestroy {\n  private predefinedRangeCalculator = new PghPredefinedRangeCalculator(this.dateAdapter);\n  readonly predefinedDates: readonly PghPredefinedDate[];\n  private isSynced = true;\n\n  private predefinedDate?: PghPredefinedDate;\n  dateRange$ = new BehaviorSubject<PghEnrichedDateRange | undefined>(\n    this.synchronizationService.dateChange$.value,\n  );\n  private syncServiceSubscription?: Subscription;\n\n  private emitDateRange(dateRange: PghEnrichedDateRange | undefined) {\n    this.dateRange$.next(dateRange);\n  }\n\n  constructor(\n    @Inject(DateAdapter) private dateAdapter: MaterialJalaliDateAdapter,\n    @Inject(PGH_PREDEFINED_DATE_RANGES) injectedDateRanges: PghPredefinedDate[],\n    @Inject(PGH_PREDEFINED_EXPANDED_DATE_RANGES) injectedExpandedDateRanges: PghPredefinedDate[],\n    private synchronizationService: PghDatePickerService,\n  ) {\n    super();\n    this.predefinedDates = injectedDateRanges ?? PGH_DEFAULT_PREDEFINED_DATE_RANGES;\n  }\n\n  ngOnDestroy() {\n    this.dateRange$.complete();\n  }\n\n  setSync(isSynced: boolean) {\n    this.isSynced = isSynced;\n    this.handleSynchronization();\n  }\n\n  setDateRange(range: PghJalaliDateRange) {\n    this.predefinedDate = undefined;\n    if (!range?.start || !range.end) return;\n    this.emitDateRange(PghPredefinedRangeCalculator.getEnrichedDateRange(range));\n\n    if (this.isSynced) {\n      this.synchronizationService.setDateRange(range);\n    }\n  }\n\n  setPredefinedDate(predefinedDate: PghPredefinedDate | undefined) {\n    this.predefinedDate = predefinedDate;\n\n    const range = this.predefinedRangeCalculator.calculateDateRange(predefinedDate);\n\n    if (!predefinedDate) return;\n    this.emitDateRange(PghPredefinedRangeCalculator.getEnrichedDateRange(range!, predefinedDate));\n\n    if (this.isSynced) {\n      this.synchronizationService.setPredefinedDate(predefinedDate);\n    }\n  }\n\n  handleSynchronization() {\n    if (this.syncServiceSubscription) {\n      this.syncServiceSubscription.unsubscribe();\n    }\n    if (!this.isSynced) return;\n\n    this.syncServiceSubscription = this.synchronizationService.dateChange$\n      .pipe(takeUntil(this._destroyed$))\n      .subscribe(savedItem => {\n        if (!savedItem) return;\n        if (savedItem.predefined) {\n          this.predefinedDate = savedItem.predefined as PghPredefinedDate;\n        }\n        this.emitDateRange(savedItem);\n      });\n  }\n\n  setPredefinedDateById(id: PghDatePickerItemId) {\n    const predefinedDate = this.predefinedDates.find(item => item.id === id);\n    this.setPredefinedDate(predefinedDate);\n  }\n}\n","import {\n  ChangeDetectorRef,\n  Component,\n  HostBinding,\n  Inject,\n  signal,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS, MatDateFormats } from '@angular/material/core';\nimport { MatCalendar, MatDateRangePicker } from '@angular/material/datepicker';\nimport { JalaliDate } from '@tapsellorg/angular-material-library/src/lib/jalali-date-adapter';\nimport { takeUntil } from 'rxjs/operators';\nimport { PghDateRangePickerControllerService } from '../date-range-picker-controller.service';\nimport { PghPredefinedDate } from '../models';\nimport { withDestroy } from '@tapsellorg/angular-material-library/src/lib/common';\n\n@Component({\n  selector: 'pgh-date-picker-header',\n  templateUrl: './date-picker-header.component.html',\n  styleUrls: ['./date-picker-header.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class PghDatePickerHeaderComponent extends withDestroy() {\n  currentPredefinedDate = signal<PghPredefinedDate | undefined>(undefined);\n  predefinedDateRanges = signal<readonly PghPredefinedDate[]>(\n    this.datePickerController.predefinedDates,\n  );\n  @HostBinding('class.touch-ui') readonly isTouchUi = this.picker.touchUi;\n\n  constructor(\n    private calendar: MatCalendar<JalaliDate>,\n    private dateAdapter: DateAdapter<JalaliDate>,\n    private picker: MatDateRangePicker<JalaliDate>,\n    private datePickerController: PghDateRangePickerControllerService,\n    @Inject(MAT_DATE_FORMATS) private dateFormats: MatDateFormats,\n    cdr: ChangeDetectorRef,\n  ) {\n    super();\n    calendar.stateChanges.pipe(takeUntil(this._destroyed$)).subscribe(() => {\n      cdr.markForCheck();\n    });\n    this.datePickerController.dateRange$.pipe(takeUntil(this._destroyed$)).subscribe(data => {\n      this.currentPredefinedDate.set(data?.predefined);\n    });\n    calendar.selectedChange.pipe(takeUntil(this._destroyed$)).subscribe(() => {\n      this.currentPredefinedDate.set(undefined);\n    });\n  }\n\n  get periodLabel(): string {\n    return this.dateAdapter\n      .format(this.calendar.activeDate, this.dateFormats.display.monthYearLabel)\n      .toLocaleUpperCase();\n  }\n\n  selectRange(predefinedDate: PghPredefinedDate): void {\n    this.picker.close();\n    this.datePickerController.setPredefinedDate(predefinedDate);\n  }\n\n  private changeDate(mode: 'month' | 'year', amount: -1 | 1): void {\n    this.calendar.activeDate =\n      mode === 'month'\n        ? this.dateAdapter.addCalendarMonths(this.calendar.activeDate, amount)\n        : this.dateAdapter.addCalendarYears(this.calendar.activeDate, amount);\n    if (!this.dateAdapter.isValid(this.calendar.activeDate)) {\n      const diffDaysNumber =\n        this.dateAdapter.getNumDaysInMonth(this.calendar.activeDate) - this.calendar.activeDate.day;\n      this.calendar.activeDate = this.dateAdapter.addCalendarDays(\n        this.calendar.activeDate,\n        diffDaysNumber,\n      );\n    }\n    this.calendar.focusActiveCell();\n  }\n\n  previousClicked(mode: 'month' | 'year'): void {\n    this.changeDate(mode, -1);\n  }\n\n  nextClicked(mode: 'month' | 'year'): void {\n    this.changeDate(mode, 1);\n  }\n}\n","<div class=\"pgh-date-picker-predefined-dates\">\n  @for (item of predefinedDateRanges(); track item) {\n  <div\n    class=\"pgh-predefined-date\"\n    [class.pgh-active]=\"currentPredefinedDate()?.id === item.id\"\n    [class.pgh-clear-date]=\"item.type === 'clearDate'\"\n    (click)=\"selectRange(item)\"\n  >\n    {{ item.title | translate }}\n  </div>\n  }\n</div>\n\n<div class=\"pgh-date-picker-header\">\n  <button mat-icon-button (click)=\"previousClicked('year')\">\n    <mat-icon svgIcon=\"chevron_right\" style=\"filter: drop-shadow(-6px 0px 0px)\"></mat-icon>\n  </button>\n\n  <button mat-icon-button (click)=\"previousClicked('month')\">\n    <mat-icon svgIcon=\"chevron_right\"></mat-icon>\n  </button>\n\n  <span class=\"pgh-date-picker-header-label\">{{ periodLabel }}</span>\n\n  <button mat-icon-button (click)=\"nextClicked('month')\">\n    <mat-icon svgIcon=\"chevron_left\"></mat-icon>\n  </button>\n\n  <button mat-icon-button (click)=\"nextClicked('year')\">\n    <mat-icon svgIcon=\"chevron_left\" style=\"filter: drop-shadow(6px 0px 0px)\"></mat-icon>\n  </button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { DateAdapter } from '@angular/material/core';\nimport { DateRange, MatDateRangeSelectionStrategy } from '@angular/material/datepicker';\n\n// https://github.com/angular/components/blob/master/src/material/datepicker/date-range-selection-strategy.ts\n\n@Injectable()\nexport class PghDateRangePickerSelectionStrategy<D> implements MatDateRangeSelectionStrategy<D> {\n  delta?: number;\n  start?: D;\n\n  constructor(private _dateAdapter: DateAdapter<D>) {}\n\n  selectionFinished(date: D, currentRange: DateRange<D>) {\n    let { start, end } = currentRange;\n    if (start == null) {\n      start = date;\n    } else if (\n      !this.delta &&\n      end == null &&\n      date &&\n      this._dateAdapter.compareDate(date, start) >= 0\n    ) {\n      end = date;\n    } else if (\n      this.delta &&\n      end == null &&\n      date &&\n      this._dateAdapter.compareDate(date, start) >= 0\n    ) {\n      const maxDate = this._dateAdapter.addCalendarDays(start, this.delta);\n      end = this._dateAdapter.compareDate(date, maxDate) >= 0 ? maxDate : date;\n    } else {\n      start = date;\n      end = null;\n    }\n    return new DateRange<D>(start, end);\n  }\n\n  createPreview(activeDate: D | null, currentRange: DateRange<D>): DateRange<D> {\n    let start: D | null = null;\n    let end: D | null = null;\n    if (!this.delta && currentRange.start && !currentRange.end && activeDate) {\n      start = currentRange.start;\n      end = activeDate;\n    } else if (this.delta && currentRange.start && !currentRange.end && activeDate) {\n      const maxDate = this._dateAdapter.addCalendarDays(currentRange.start, this.delta);\n      start = currentRange.start;\n      end = this._dateAdapter.compareDate(activeDate, maxDate) >= 0 ? maxDate : activeDate;\n    }\n    return new DateRange<D>(start, end);\n  }\n\n  setMaxRange(maxRange: number) {\n    this.delta = maxRange - 1;\n  }\n}\n","import { Directive, Inject, input, OnChanges, SimpleChanges } from '@angular/core';\nimport { MAT_DATE_RANGE_SELECTION_STRATEGY } from '@angular/material/datepicker';\nimport { PghDateRangePickerSelectionStrategy } from './date-range-picker-selection.strategy';\n\n@Directive({\n  selector: '[pghMaxRange]',\n  providers: [\n    {\n      provide: MAT_DATE_RANGE_SELECTION_STRATEGY,\n      useClass: PghDateRangePickerSelectionStrategy,\n    },\n  ],\n  standalone: false,\n})\nexport class PghMaxRangeDirective implements OnChanges {\n  maxRange = input<number | undefined>(undefined, {\n    alias: 'pghMaxRange',\n  });\n  constructor(\n    @Inject(MAT_DATE_RANGE_SELECTION_STRATEGY)\n    private maxRangeStrategy: PghDateRangePickerSelectionStrategy<any>,\n  ) {}\n  ngOnChanges(changes: SimpleChanges) {\n    if (!this.maxRange()) return;\n\n    if (changes.maxRange) {\n      this.maxRangeStrategy.setMaxRange(this.maxRange()!);\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  inject,\n  Inject,\n  input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  output,\n  signal,\n  SimpleChanges,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { PghDatePickerHeaderComponent } from './date-picker-header/date-picker-header.component';\nimport { PghDateRangePickerControllerService } from './date-range-picker-controller.service';\nimport {\n  PghDatePickerItemId,\n  PghDateRangeChangeEvent,\n  PghEnrichedDateRange,\n  PghPredefinedDate,\n} from './models';\nimport { PGH_DEFAULT_SELECTED_DATE_RANGE, PGH_PREDEFINED_EXPANDED_DATE_RANGES } from './configs';\nimport { PghNotifService } from '@tapsellorg/angular-material-library/notif';\nimport { JalaliDate } from './constants';\n\n@Component({\n  selector: 'pgh-date-range-picker',\n  templateUrl: './date-range-picker.component.html',\n  styleUrls: ['./date-range-picker.component.scss'],\n  providers: [PghDateRangePickerControllerService],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class PghDateRangePickerComponent implements OnInit, OnChanges, OnDestroy {\n  private readonly injectedDefault = inject(PGH_DEFAULT_SELECTED_DATE_RANGE);\n  readonly headerComponent = PghDatePickerHeaderComponent;\n  start = input(new UntypedFormControl());\n  end = input(new UntypedFormControl());\n  maxRange = input<number>();\n  isSynced = input<boolean>(true);\n  expanded = input<boolean>(false);\n  disableClickOnInputs = input<boolean>(true);\n  defaultSelectedDateRangeId = input<PghDatePickerItemId>();\n  disabledDates = input<string[]>();\n  rangeChange = output<PghDateRangeChangeEvent>();\n\n  private readonly destroy$ = new Subject<void>();\n  private selectedDateRange?: PghDateRangeChangeEvent;\n  selectedChip = signal<PghDatePickerItemId | undefined>(undefined);\n  chipDateRanges = signal<PghPredefinedDate[]>([]);\n\n  constructor(\n    private dateRangePickerController: PghDateRangePickerControllerService,\n    private pghNotifService: PghNotifService,\n    @Inject(PGH_PREDEFINED_EXPANDED_DATE_RANGES) injectedExpandedDateRanges: PghPredefinedDate[],\n  ) {\n    this.chipDateRanges.set(injectedExpandedDateRanges);\n  }\n\n  ngOnInit(): void {\n    this.dateRangePickerController.setSync(this.isSynced());\n    this.setDefaultDateRange();\n    this.dateRangePickerController.dateRange$\n      .pipe(\n        takeUntil(this.destroy$),\n        distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n      )\n      .subscribe(dateRange => {\n        this.start().setValue(dateRange?.start);\n        this.end().setValue(dateRange?.end);\n        this.emitRange(dateRange);\n      });\n  }\n\n  changeSelection(id: PghDatePickerItemId) {\n    if (this.selectedChip() !== id) {\n      this.selectedChip.set(id);\n      this.dateRangePickerController.setPredefinedDateById(this.selectedChip()!);\n    } else {\n      this.selectedChip.set(undefined);\n      this.dateRangePickerController.setPredefinedDateById('clear date');\n    }\n  }\n  jalaliDateToISOString(jalaliDate: JalaliDate) {\n    const { year, month, day } = jalaliDate;\n    return `${year}${month.toString().padStart(2, '0')}${day.toString().padStart(2, '0')}`;\n  }\n\n  dateClass = (date: JalaliDate): string => {\n    const isoDate = this.jalaliDateToISOString(date);\n    return this.isDateDisabled(isoDate) ? 'disabled-day' : '';\n  };\n\n  isDateDisabled(date: string): boolean {\n    return this.disabledDates()?.includes(date) ?? false;\n  }\n\n  getDatesBetween(startDate: string, endDate: string): string[] {\n    const dates = [];\n    let currentDate = startDate;\n\n    while (currentDate <= endDate) {\n      dates.push(currentDate);\n      currentDate = this.incrementDate(currentDate);\n    }\n\n    return dates;\n  }\n\n  isDateRangeValid(startDate: any, endDate: any): boolean {\n    const startDateISO = this.jalaliDateToISOString(startDate);\n    const endDateISO = this.jalaliDateToISOString(endDate);\n\n    const dateRange = this.getDatesBetween(startDateISO, endDateISO);\n\n    return !dateRange.some(date => this.isDateDisabled(date));\n  }\n\n  incrementDate(date: string): string {\n    const parsedDate = new Date(\n      parseInt(date.slice(0, 4), 10),\n      parseInt(date.slice(4, 6), 10) - 1,\n      parseInt(date.slice(6, 8), 10),\n    );\n\n    parsedDate.setDate(parsedDate.getDate() + 1);\n\n    return this.jalaliDateToISOString({\n      year: parsedDate.getFullYear(),\n      month: parsedDate.getMonth() + 1,\n      day: parsedDate.getDate(),\n    });\n  }\n\n  datePickerDateChange() {\n    const selectedStartDate = this.start().value;\n    const selectedEndDate = this.end().value;\n\n    if (!selectedStartDate || !selectedEndDate) return;\n\n    if (this.isDateRangeValid(selectedStartDate, selectedEndDate)) {\n      this.dateRangePickerController.setDateRange({\n        start: selectedStartDate,\n        end: selectedEndDate,\n      });\n    } else {\n      this.start().setValue(null);\n      this.end().setValue(null);\n\n      this.pghNotifService.error('محدوده انتخابی نمی‌تواند شامل تاریخ‌های رزرو شده باشد.');\n    }\n  }\n\n  setDefaultDateRange() {\n    if (this.isSynced()) return;\n    const effectiveDefault = this.defaultSelectedDateRangeId() ?? this.injectedDefault;\n\n    this.dateRangePickerController.setPredefinedDateById(effectiveDefault);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.isSynced) {\n      this.dateRangePickerController.setSync(this.isSynced());\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n  }\n\n  emitRange(range: PghEnrichedDateRange | undefined) {\n    if (range?.predefined) {\n      this.selectedChip.set(range.predefined.id);\n    }\n    this.selectedDateRange = range;\n    this.rangeChange.emit(<PghDateRangeChangeEvent>range);\n  }\n\n  getSelectedDateRange() {\n    return this.selectedDateRange;\n  }\n}\n","<mat-chip-listbox>\n  @if (expanded()) { @for (chip of chipDateRanges(); track chip) {\n  <mat-chip-option [selected]=\"chip.id === selectedChip()\" (click)=\"changeSelection(chip.id)\">\n    {{ chip.title | translate }}\n  </mat-chip-option>\n  } }\n  <div class=\"pgh-date-range-picker\" (click)=\"disableClickOnInputs() && picker.open()\">\n    <mat-datepicker-toggle [for]=\"picker\"></mat-datepicker-toggle>\n\n    <span class=\"pgh-range-from\">{{ 'DATE_RANGE_PICKER_FROM' | translate }}</span>\n    <mat-date-range-input [rangePicker]=\"picker\" [separator]=\"'DATE_RANGE_PICKER_TO' | translate\">\n      <input\n        [readOnly]=\"disableClickOnInputs()\"\n        matStartDate\n        [formControl]=\"start()\"\n        [placeholder]=\"'DATE_RANGE_PICKER_START_DATE' | translate\"\n        (change)=\"!disableClickOnInputs() && datePickerDateChange()\"\n      />\n      <input\n        [readOnly]=\"disableClickOnInputs()\"\n        matEndDate\n        [formControl]=\"end()\"\n        [placeholder]=\"'DATE_RANGE_PICKER_END_DATE' | translate\"\n        (dateChange)=\"datePickerDateChange()\"\n      />\n    </mat-date-range-input>\n\n    <!-- TODO: v17 [dateClass]=\"dateClass\" removed from this element -->\n    <mat-date-range-picker\n      [dateClass]=\"dateClass\"\n      [panelClass]=\"'pgh-date-range-picker-panel'\"\n      #picker\n      [pghMaxRange]=\"maxRange()\"\n      [calendarHeaderComponent]=\"headerComponent\"\n    ></mat-date-range-picker>\n  </div>\n</mat-chip-listbox>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MaterialJalaliDateAdapter } from '@tapsellorg/angular-material-library/src/lib/jalali-date-adapter';\nimport { PghDatePickerHeaderComponent } from './date-picker-header/date-picker-header.component';\nimport { PghDateRangePickerComponent } from './date-range-picker.component';\nimport { PghMaxRangeDirective } from './max-range.directive';\nimport { TranslateModule } from '@tapsellorg/angular-material-library/src/lib/translate';\nimport { MatChipsModule } from '@angular/material/chips';\n\n@NgModule({\n  declarations: [PghDateRangePickerComponent, PghMaxRangeDirective, PghDatePickerHeaderComponent],\n  imports: [\n    CommonModule,\n    MatDatepickerModule,\n    MatFormFieldModule,\n    MatInputModule,\n    MatButtonModule,\n    MatIconModule,\n    ReactiveFormsModule,\n    TranslateModule,\n    MatChipsModule,\n  ],\n  exports: [PghDateRangePickerComponent, PghMaxRangeDirective, PghDatePickerHeaderComponent],\n  providers: [\n    { provide: DateAdapter, useClass: MaterialJalaliDateAdapter, deps: [MAT_DATE_LOCALE] },\n  ],\n})\nexport class PghDateRangePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PghDatePickerService","i1","i4","i5","i6.PghMaxRangeDirective","i7"],"mappings":"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"}