{"version":3,"file":"banco-persian.mjs","sources":["../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/models/date-picker-type.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/services/date-time-number.service.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/services/jalali-cldr-intl.service.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/components/kendo-jalali-header-title-template/kendo-jalali-header-title-template.component.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/HeaderTitleTemplateFactory.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/services/kendo-util-overrides.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/services/kendo-services/century-view.service.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/services/jalali-century-view.service.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/services/kendo-services/decade-view.service.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/services/jalali-decade-view.service.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/services/kendo-services/month-view.service.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/services/jalali-month-view.service.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/services/kendo-services/week-names.service.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/services/jalali-week-names.service.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/services/kendo-services/year-view.services.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/services/jalali-year-view.service.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/providers.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/components/navigation.directive.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/utils/string-prototypes.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/kendo-jalali-date-inputs.module.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/components/date-input.component.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/lib/components/calendar.component.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/public-api.ts","../../../projects/banco-persian/kendo-jalali-date-inputs/src/banco-persian.ts"],"sourcesContent":["export enum DatePickerType {\r\n  jalali = 'jalali',\r\n  gregory = 'gregory'\r\n}\r\n","import { Inject, Injectable, LOCALE_ID, Optional } from '@angular/core';\r\nimport dayjs from 'dayjs';\r\nimport { IConfig } from '../models/config.model';\r\n\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class DateTimeNumberService {\r\n  usePersianNumber: boolean;\r\n\r\n  constructor(\r\n    @Inject(LOCALE_ID) localeId: string,\r\n    @Optional() @Inject('DATE_INPUT_CONFIGS') private configs: IConfig\r\n  ) {\r\n    this.setLocaleId(localeId);\r\n    this.init();\r\n  }\r\n\r\n  setLocaleId(value: string) {\r\n    this.usePersianNumber = value === 'fa' || value === 'fa-IR';\r\n  }\r\n\r\n  init() {\r\n    if (this.configs?.usePersianNumber === false) {\r\n      return;\r\n    }\r\n    const me = this;\r\n    // dayjs.localeData().months();\r\n    const te = dayjs.prototype.format;\r\n    dayjs.prototype.format = function (format) {\r\n\r\n      if (!me.usePersianNumber) {\r\n        return te.call(this, format);\r\n      }\r\n\r\n      let result = te.call(this, format);\r\n      result = result.toPerNumber().replace(/,/g, '،');\r\n      return result;\r\n    };\r\n  }\r\n}\r\n","import { Inject, Injectable, LOCALE_ID } from '@angular/core';\r\nimport { CldrIntlService, NumberFormatOptions } from '@progress/kendo-angular-intl';\r\nimport dayjs, { Dayjs } from 'dayjs';\r\nimport { Subject } from 'rxjs';\r\nimport { DatePickerType } from '../models/date-picker-type';\r\nimport { DateTimeNumberService } from './date-time-number.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class JalaliCldrIntlService extends CldrIntlService {\r\n  isJalali: boolean;\r\n  isGregorian: boolean;\r\n  datePickerType: DatePickerType;\r\n  localeIdByDatePickerType = '';\r\n  get isLocaleIran(): boolean {\r\n    return this.localeId === 'fa-IR' || this.localeId === 'fa';\r\n  }\r\n  get calendarType(): any {\r\n    return this.localeIdByDatePickerType === 'fa' ? 'jalali' : 'gregory';\r\n  }\r\n  static staticDefaultTitleTemplate: any;\r\n  $calendarType = new Subject();\r\n  isFirst = true;\r\n  jalaliMonths: string[];\r\n  gregorianMonths: string[];\r\n\r\n\r\n  constructor(\r\n    @Inject(LOCALE_ID) private originalLocaleId: string,\r\n    private momentNumberService: DateTimeNumberService\r\n  ) {\r\n    super(originalLocaleId);\r\n    this.changeType();\r\n\r\n    this.prepareMonthData();\r\n  }\r\n\r\n  private prepareMonthData() {\r\n    this.jalaliMonths = Array.from(Array(12).keys()).map((x, i) => {\r\n      return this.getDayJsValue('' + (i + 1)).format('MMMM');\r\n    });\r\n    this.jalaliMonths.splice(this.jalaliMonths.length, 0, ...this.jalaliMonths.splice(0, 3));\r\n    this.gregorianMonths = this.getDayJsValue().localeData().monthsShort();\r\n  }\r\n\r\n  firstDay(localeId?: string): number {\r\n    return super.firstDay(this.localeIdByDatePickerType);\r\n  }\r\n\r\n  setTitleTemplate(template): void {\r\n    JalaliCldrIntlService.staticDefaultTitleTemplate = template;\r\n  }\r\n\r\n  changeType(value?: DatePickerType): void {\r\n    this.datePickerType = this.getType(value);\r\n    \r\n    if (this.datePickerType === DatePickerType.jalali) {\r\n      this.isJalali = true;\r\n      this.isGregorian = false;\r\n      this.localeIdByDatePickerType = 'fa';\r\n      this.reload();\r\n      return;\r\n    }\r\n    this.isJalali = false;\r\n    this.isGregorian = true;\r\n    this.localeIdByDatePickerType = 'en';\r\n    this.reload();\r\n  }\r\n\r\n  reload(): void {\r\n    const tem = super.localeId;\r\n    this.changeLocaleId('en');\r\n    this.changeLocaleId(tem);\r\n    this.$calendarType.next(this.localeIdByDatePickerType);\r\n    this.changes.next(super.localeId);\r\n  }\r\n\r\n  changeLocaleId(value): void {\r\n    super.localeId = value;\r\n    this.momentNumberService.setLocaleId(value);\r\n    this.notify();\r\n    this.prepareMonthData();\r\n  }\r\n\r\n  toggleType(): void {\r\n    this.changeType(this.datePickerType === DatePickerType.jalali ? DatePickerType.gregory : DatePickerType.jalali);\r\n    if (this.isFirst) {\r\n      this.isFirst = false;\r\n      // to fix old version of chrome\r\n      // setTimeout(() => {\r\n      //   this.toggleType();\r\n      //   setTimeout(() => {\r\n      //     this.toggleType();\r\n      //   }, 0);\r\n      // }, 0);\r\n    }\r\n  }\r\n\r\n  private getType(value: DatePickerType): DatePickerType {\r\n    if (value) { return value; }\r\n\r\n    if (this.originalLocaleId === 'fa-IR' || this.originalLocaleId === 'fa') {\r\n      return DatePickerType.jalali;\r\n    }\r\n\r\n    return DatePickerType.gregory;\r\n  }\r\n\r\n  formatNumber(value: number, format: string | NumberFormatOptions, localeId?: string): string {\r\n    localeId = localeId || this.localeId;\r\n    if (this.isJalali && (localeId === 'fa' || localeId === 'ar')) {\r\n      try {\r\n        return super.formatNumber(+value, format, localeId).toPerNumber();\r\n      } catch (error) {\r\n\r\n      }\r\n    }\r\n    \r\n    try {\r\n      return super.formatNumber(+value, format, localeId);\r\n    } catch (error) {\r\n    }\r\n\r\n    return '';\r\n  }\r\n\r\n  getDayJsValue(value?: Date | string, localeId?: string): Dayjs {\r\n    return dayjs(value).calendar(this.calendarType).locale(localeId || this.localeId);\r\n  }\r\n}\r\n","import { AfterViewInit, Component, Inject, TemplateRef, ViewChild, ChangeDetectorRef, SkipSelf, Host } from '@angular/core';\r\nimport '@angular/localize';\r\nimport { IntlService } from '@progress/kendo-angular-intl';\r\nimport { JalaliCldrIntlService } from '../../services/jalali-cldr-intl.service';\r\nimport { DatePickerType } from '../../models/date-picker-type';\r\n\r\n@Component({\r\n  template: `\r\n  <ng-template #template kendoCalendarHeaderTitleTemplate let-title>\r\n    <span class=\"header-title k-button k-button k-rounded-lg k-button-sm k-button-link-base k-button-link\">{{title}}</span>\r\n    <button i18n-title=\"@@changeCalendarType\" title=\"Change Calendar Type\" class=\"header-calendar-type k-button k-rounded-lg k-button-sm k-button-link-base k-button-link\" (click)=\"toggleCalendarType($event)\">\r\n      {{calendarTypes[calendarType]}}\r\n      <i class=\"k-icon k-i-arrows-swap {{calendarType!=='jalali'&&'k-flip-h'}}\" ></i>\r\n    </button>\r\n  </ng-template>`,\r\n  styleUrls: ['./kendo-jalali-header-title-template.component.scss'],\r\n  providers: [\r\n  ]\r\n})\r\nexport class KendoJalaliHeaderTitleTemplateComponent implements AfterViewInit {\r\n  @ViewChild('template', { read: TemplateRef }) templateRef = TemplateRef;\r\n  calendarType: DatePickerType;\r\n  calendarTypes = {\r\n    [DatePickerType.gregory]: $localize`:@@jalali:Jalali`,\r\n    [DatePickerType.jalali]: $localize`:@@gregorian:Gregorian`,\r\n  };\r\n\r\n  constructor(\r\n     private localeService: JalaliCldrIntlService,\r\n  ) {\r\n    this.calendarType = this.localeService.datePickerType;\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.localeService.setTitleTemplate(this);\r\n  }\r\n\r\n  toggleCalendarType(event: Event): void {\r\n    this.localeService.toggleType();\r\n    this.calendarType = this.localeService.datePickerType;\r\n    event.stopImmediatePropagation();\r\n    event.stopPropagation();\r\n    event.preventDefault();\r\n  }\r\n}\r\n\r\n","import { Injector, createComponent } from '@angular/core';\r\nimport { KendoJalaliHeaderTitleTemplateComponent } from './components/kendo-jalali-header-title-template/kendo-jalali-header-title-template.component';\r\n\r\n\r\nexport function HeaderTitleTemplateFactory(\r\n  injector: Injector\r\n): any {\r\n  const componentRef = createComponent(KendoJalaliHeaderTitleTemplateComponent, {\r\n    elementInjector: injector, \r\n  } as any);\r\n  componentRef.changeDetectorRef.detectChanges();\r\n  return (componentRef.instance as KendoJalaliHeaderTitleTemplateComponent);\r\n}\r\n","import { getDate } from '@progress/kendo-date-math';\r\nimport dayjs from 'dayjs';\r\n\r\nexport const range = (start, end, step = 1) => {\r\n  const result = [];\r\n  for (let i = start; i < end; i = i + step) {\r\n    result.push(i);\r\n  }\r\n  return result;\r\n};\r\n\r\nexport const EMPTY_SELECTIONRANGE = { start: null, end: null };\r\n\r\nexport const getToday = () => getDate(new Date());\r\n\r\nexport const isInSelectionRange = (value, selectionRange) => {\r\n  const { start, end } = selectionRange || EMPTY_SELECTIONRANGE;\r\n  if (!start || !end) {\r\n    return false;\r\n  }\r\n  return start < value && value < end;\r\n}\r\n\r\nexport const isInRange = (dt, min, max) => {\r\n  return dayjs(dt).isBetween(min, max);\r\n}\r\n\r\nexport const firstYearOfDecade = (dt, localeId?) => {\r\n  return getDayJsValue(dt, localeId).add(-(getYear(dt, localeId) % 10), 'year').toDate();\r\n}\r\n\r\nexport const lastYearOfDecade = (dt, localeId?) => {\r\n  return getDayJsValue(dt, localeId).add((9 - (getYear(dt, localeId) % 10)), 'year').toDate();\r\n}\r\n\r\nexport const firstDayOfMonth = (dt, localeId?) => {\r\n  return getDayJsValue(dt, localeId).startOf('month').toDate();\r\n}\r\n\r\nexport const lastDayOfMonth = (dt, localeId?) => {\r\n  return getDayJsValue(dt, localeId).endOf('month').toDate();\r\n}\r\n\r\nexport const startOfDay = (dt, localeId?) => {\r\n  return getDayJsValue(dt, localeId).startOf('day').toDate();// .add(getDayJsValue(dt, localeId).date() - 1, 'day')\r\n}\r\nexport const firstMonthOfYear = (dt, localeId?) => {\r\n  return getDayJsValue(dt, localeId).startOf('year').toDate();// .add(getDayJsValue(dt, localeId).date() - 1, 'day')\r\n}\r\nexport const lastMonthOfYear = (dt, localeId?) => {\r\n  return getDayJsValue(dt, localeId).endOf('year').toDate();// .add(-1, 'day').add(getDayJsValue(dt, localeId).date(), 'day')\r\n}\r\nexport const addDays = (dt, value, localeId?) => {\r\n  return getDayJsValue(dt, localeId).add(value, 'days').toDate();\r\n}\r\nexport const addWeeks = (dt, value, direction, localeId?) => {\r\n  return getDayJsValue(dt, localeId).add(value * direction, 'days').toDate();\r\n}\r\nexport const addMonths = (dt, value, localeId?) => {\r\n  return getDayJsValue(dt, localeId).add(value, 'month').toDate();\r\n}\r\nexport const addYears = (dt, value, localeId?) => {\r\n  return getDayJsValue(dt, localeId).add(value, 'year').toDate();\r\n}\r\nexport const addDecades = (dt, value, localeId?) => {\r\n  return getDayJsValue(dt, localeId).add(value * 100, 'year').toDate();\r\n}\r\n\r\nconst getCalendarType = (localeId: string) => {\r\n  return (localeId === 'fa' || localeId === 'fa-IR') ? 'jalali' : 'gregory';\r\n}\r\nexport const getDayJsValue = (dt: any, localeId: string) => {\r\n  return dayjs(dt).calendar(getCalendarType(localeId))\r\n}\r\n\r\nexport const firstDecadeOfCentury = (dt, localeId?) => {\r\n  return getDayJsValue(dt, localeId).add((-(getYear(dt, localeId) % 100)), 'year').toDate();\r\n}\r\n\r\nexport const lastDecadeOfCentury = (dt, localeId?) => {\r\n  return getDayJsValue(dt, localeId).add((-(getYear(dt, localeId) % 100)) + 90, 'year').toDate();\r\n\r\n}\r\nexport const dateInRange = (candidate, min, max) => {\r\n  if (!candidate) {\r\n      return candidate;\r\n  }\r\n  if (min && candidate < min) {\r\n      return new Date(min);\r\n  }\r\n  if (max && candidate > max) {\r\n      return new Date(max);\r\n  }\r\n  return candidate;\r\n};\r\n\r\nexport const shiftWeekNames = (names, offset) => (names.slice(offset).concat(names.slice(0, offset)));\r\n\r\nexport var Action;\r\n(function (Action) {\r\n  Action[Action[\"Left\"] = 0] = \"Left\";\r\n  Action[Action[\"Right\"] = 1] = \"Right\";\r\n  Action[Action[\"Up\"] = 2] = \"Up\";\r\n  Action[Action[\"Down\"] = 3] = \"Down\";\r\n  Action[Action[\"PrevView\"] = 4] = \"PrevView\";\r\n  Action[Action[\"NextView\"] = 5] = \"NextView\";\r\n  Action[Action[\"FirstInView\"] = 6] = \"FirstInView\";\r\n  Action[Action[\"LastInView\"] = 7] = \"LastInView\";\r\n  Action[Action[\"LowerView\"] = 8] = \"LowerView\";\r\n  Action[Action[\"UpperView\"] = 9] = \"UpperView\";\r\n})(Action || (Action = {}));\r\n\r\nexport const isPresent = (value) => value !== undefined && value !== null;\r\n\r\nfunction getYear(dt: any, localeId: any) {\r\n  return getDayJsValue(dt, localeId).year();\r\n}\r\n\r\n","import { addCenturies, addDecades, cloneDate, createDate, durationInCenturies, lastDayOfMonth, lastMonthOfYear, lastYearOfDecade } from '@progress/kendo-date-math';\r\nimport { Action, EMPTY_SELECTIONRANGE, firstDecadeOfCentury, firstYearOfDecade, getToday, isInSelectionRange, isPresent, lastDecadeOfCentury, range } from '../kendo-util-overrides';\r\nexport const EMPTY_DATA = [[]];\r\nexport const CELLS_LENGTH = 4;\r\nexport const ROWS_LENGTH = 3;\r\nconst ACTIONS = {\r\n  [Action.Left]: (date) => addDecades(date, -1),\r\n  [Action.Up]: (date) => addDecades(date, -5),\r\n  [Action.Right]: (date) => addDecades(date, 1),\r\n  [Action.Down]: (date) => addDecades(date, 5),\r\n  [Action.PrevView]: (date) => addCenturies(date, -1),\r\n  [Action.NextView]: (date) => addCenturies(date, 1),\r\n  [Action.FirstInView]: (date) => firstDecadeOfCentury(date),\r\n  [Action.LastInView]: (date) => lastDecadeOfCentury(date)\r\n};\r\n\r\nexport class CenturyViewService {\r\n  dateRange = (start, end) => {\r\n    if (!isPresent(start) || !isPresent(end)) {\r\n      return [];\r\n    }\r\n    const result = [];\r\n    let current = start;\r\n    while (current <= end) {\r\n      result.push(current);\r\n      current = addDecades(current, 1);\r\n    }\r\n    return result;\r\n  };\r\n  constructor() {\r\n  }\r\n  addToDate(min, skip) {\r\n    return addCenturies(min, skip);\r\n  }\r\n  datesList(start, count) {\r\n    return range(0, count).map(i => addCenturies(start, i));\r\n  }\r\n  data(options) {\r\n    const { cellUID, focusedDate, isActiveView, max, min, selectedDates, selectionRange = EMPTY_SELECTIONRANGE, viewDate } = options;\r\n    if (!viewDate) {\r\n      return EMPTY_DATA;\r\n    }\r\n    const cells = range(0, CELLS_LENGTH);\r\n    const firstDate = firstDecadeOfCentury(viewDate);\r\n    const lastDate = lastDecadeOfCentury(viewDate);\r\n    const today = getToday();\r\n    return range(0, ROWS_LENGTH).map(rowOffset => {\r\n      const baseDate = addDecades(firstDate, rowOffset * CELLS_LENGTH);\r\n      return cells.map(cellOffset => {\r\n        const cellDate = this.normalize(addDecades(baseDate, cellOffset), min, max);\r\n        const nextCentury = cellDate.getFullYear() > lastDate.getFullYear();\r\n        if (!this.isInRange(cellDate, min, max) || nextCentury) {\r\n          return null;\r\n        }\r\n        const isRangeStart = this.isEqual(cellDate, selectionRange.start);\r\n        const isRangeEnd = this.isEqual(cellDate, selectionRange.end);\r\n        const isInMiddle = !isRangeStart && !isRangeEnd;\r\n        const isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\r\n        return {\r\n          formattedValue: this.value(cellDate),\r\n          id: `${cellUID}${cellDate.getTime()}`,\r\n          isFocused: this.isEqual(cellDate, focusedDate),\r\n          isSelected: isActiveView && selectedDates.some(date => this.isEqual(cellDate, date)),\r\n          isWeekend: false,\r\n          isRangeStart: isRangeStart,\r\n          isRangeMid: isRangeMid,\r\n          isRangeEnd: isRangeEnd,\r\n          isRangeSplitEnd: isRangeMid && this.isEqual(cellDate, lastDate),\r\n          isRangeSplitStart: isRangeMid && this.isEqual(cellDate, firstDate),\r\n          isToday: this.isEqual(cellDate, today),\r\n          title: this.cellTitle(cellDate),\r\n          value: cellDate\r\n        };\r\n      });\r\n    });\r\n  }\r\n  isEqual(candidate, expected) {\r\n    if (!candidate || !expected) {\r\n      return false;\r\n    }\r\n    return firstYearOfDecade(candidate).getFullYear() === firstYearOfDecade(expected).getFullYear();\r\n  }\r\n  isInArray(date, dates) {\r\n    if (!dates.length) {\r\n      return false;\r\n    }\r\n    const year = date.getFullYear();\r\n    return dates[0].getFullYear() <= year && year <= (dates[dates.length - 1].getFullYear() + 99);\r\n  }\r\n  isInRange(candidate, min, max) {\r\n    const year = firstYearOfDecade(candidate).getFullYear();\r\n    const aboveMin = !min || firstYearOfDecade(min).getFullYear() <= year;\r\n    const belowMax = !max || year <= firstYearOfDecade(max).getFullYear();\r\n    return aboveMin && belowMax;\r\n  }\r\n  beginningOfPeriod(date) {\r\n    if (!date) {\r\n      return date;\r\n    }\r\n    const firstYear = firstYearOfDecade(firstDecadeOfCentury(date));\r\n    return createDate(firstYear.getFullYear(), 0, 1);\r\n  }\r\n  lastDayOfPeriod(date) {\r\n    const decade = lastDecadeOfCentury(date);\r\n    const year = lastYearOfDecade(decade);\r\n    const month = lastMonthOfYear(year);\r\n    return lastDayOfMonth(month);\r\n  }\r\n  isRangeStart(value) {\r\n    return value.getFullYear() % 1000 === 0;\r\n  }\r\n  move(value, action) {\r\n    const modifier = ACTIONS[action];\r\n    if (!modifier) {\r\n      return value;\r\n    }\r\n    return modifier(value);\r\n  }\r\n  cellTitle(value) {\r\n    return firstYearOfDecade(value).getFullYear().toString();\r\n  }\r\n  navigationTitle(value) {\r\n    return value ? firstDecadeOfCentury(value).getFullYear().toString() : '';\r\n  }\r\n  title(value) {\r\n    if (!value) {\r\n      return '';\r\n    }\r\n    return `${firstDecadeOfCentury(value).getFullYear()} - ${lastDecadeOfCentury(value).getFullYear()}`;\r\n  }\r\n  rowLength() {\r\n    return CELLS_LENGTH;\r\n  }\r\n  skip(value, min) {\r\n    return durationInCenturies(min, value);\r\n  }\r\n  total(min, max) {\r\n    return durationInCenturies(min, max) + 1;\r\n  }\r\n  value(current) {\r\n    return current ? firstYearOfDecade(current).getFullYear().toString() : '';\r\n  }\r\n  viewDate(date, max, viewsCount = 1) {\r\n    const viewsInRange = this.total(date, max);\r\n    if (viewsInRange < viewsCount) {\r\n      const centuriesToSubtract = viewsCount - viewsInRange;\r\n      return addCenturies(date, -1 * centuriesToSubtract);\r\n    }\r\n    return date;\r\n  }\r\n  normalize(cellDate, min, max) {\r\n    if (cellDate < min && this.isEqual(cellDate, min)) {\r\n      return cloneDate(min);\r\n    }\r\n    if (cellDate > max && this.isEqual(cellDate, max)) {\r\n      return cloneDate(max);\r\n    }\r\n    return cellDate;\r\n  }\r\n}\r\n\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { IntlService } from '@progress/kendo-angular-intl';\r\nimport { JalaliCldrIntlService } from './jalali-cldr-intl.service';\r\nimport { addDecades, firstDecadeOfCentury, firstYearOfDecade, getToday, isInRange, isInSelectionRange, lastDecadeOfCentury, range } from './kendo-util-overrides';\r\nimport { CenturyViewService, EMPTY_DATA, CELLS_LENGTH, ROWS_LENGTH } from './kendo-services/century-view.service';\r\n\r\n@Injectable()\r\nexport class JalaliCenturyViewService extends CenturyViewService {\r\n\r\n  constructor(\r\n    @Inject(IntlService) private intl: JalaliCldrIntlService\r\n  ) {\r\n    super();\r\n  }\r\n\r\n  title(current) {\r\n    if (!current) {\r\n      return '';\r\n    }\r\n\r\n    const temp = this.intl.getDayJsValue(lastDecadeOfCentury(current, this.intl.localeIdByDatePickerType)).format('YYYY');\r\n    return `${this.intl.getDayJsValue(firstDecadeOfCentury(current, this.intl.localeIdByDatePickerType)).format('YYYY')} - ${temp}`;\r\n  }\r\n\r\n  navigationTitle(value) {\r\n    return `${this.intl.getDayJsValue(firstDecadeOfCentury(value, this.intl.localeIdByDatePickerType)).format('YYYY')}`;\r\n  }\r\n\r\n\r\n  data(options) {\r\n    const { cellUID, focusedDate, isActiveView, max, min, selectedDate, selectionRange = {}, viewDate } = options;\r\n    if (!viewDate) {\r\n      return EMPTY_DATA;\r\n    }\r\n    const cells = range(0, CELLS_LENGTH);\r\n    const firstDate = firstDecadeOfCentury(viewDate, this.intl.localeIdByDatePickerType);\r\n    const lastDate = lastDecadeOfCentury(viewDate, this.intl.localeIdByDatePickerType);\r\n    const isSelectedDateInRange = isInRange(selectedDate, min, max);\r\n    const today = getToday();\r\n    const data = range(0, ROWS_LENGTH).map(rowOffset => {\r\n      const baseDate = addDecades(firstDate, rowOffset * CELLS_LENGTH);\r\n      return cells.map(cellOffset => {\r\n        const cellDate = super['normalize'](addDecades(baseDate, cellOffset), min, max);\r\n        if (!this.isInRange(cellDate, firstDate, lastDate)) {\r\n          return null;\r\n        }\r\n        const isRangeStart = this.isEqual(cellDate, selectionRange.start);\r\n        const isRangeEnd = this.isEqual(cellDate, selectionRange.end);\r\n        const isInMiddle = !isRangeStart && !isRangeEnd;\r\n        const isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\r\n        const title = this.intl.getDayJsValue(cellDate).format('YYYY');\r\n\r\n        return {\r\n          formattedValue: title,\r\n          id: `${cellUID}${cellDate.getTime()}`,\r\n          isFocused: this.isEqual(cellDate, focusedDate),\r\n          isSelected: isActiveView && isSelectedDateInRange && this.isEqual(cellDate, selectedDate),\r\n          isWeekend: false,\r\n          isRangeStart,\r\n          isRangeMid,\r\n          isRangeEnd,\r\n          isRangeSplitEnd: isRangeMid && this.isEqual(cellDate, lastDate),\r\n          isRangeSplitStart: isRangeMid && this.isEqual(cellDate, firstDate),\r\n          isToday: this.isEqual(cellDate, today),\r\n          title,\r\n          value: cellDate\r\n        };\r\n      });\r\n    });\r\n\r\n    return data;\r\n  }\r\n\r\n  isInRange(candidate, min, max) {\r\n    const year = firstYearOfDecade(candidate, this.intl.localeIdByDatePickerType).getFullYear();\r\n    const aboveMin = !min || firstYearOfDecade(min, this.intl.localeIdByDatePickerType).getFullYear() <= year;\r\n    const belowMax = !max || year <= firstYearOfDecade(max, this.intl.localeIdByDatePickerType).getFullYear();\r\n    return aboveMin && belowMax;\r\n  }\r\n}\r\n","import { addDecades, addYears, cloneDate, createDate, durationInDecades, lastDayOfMonth, lastMonthOfYear } from '@progress/kendo-date-math';\r\nimport { Action, EMPTY_SELECTIONRANGE, firstYearOfDecade, getToday, isInSelectionRange, isPresent, lastYearOfDecade, range } from '../kendo-util-overrides';\r\n\r\nexport const EMPTY_DATA = [[]];\r\nexport const CELLS_LENGTH = 4;\r\nexport const ROWS_LENGTH = 3;\r\nconst ACTIONS = {\r\n  [Action.Left]: (date) => addYears(date, -1),\r\n  [Action.Up]: (date) => addYears(date, -5),\r\n  [Action.Right]: (date) => addYears(date, 1),\r\n  [Action.Down]: (date) => addYears(date, 5),\r\n  [Action.PrevView]: (date) => addDecades(date, -1),\r\n  [Action.NextView]: (date) => addDecades(date, 1),\r\n  [Action.FirstInView]: (date) => firstYearOfDecade(date),\r\n  [Action.LastInView]: (date) => lastYearOfDecade(date)\r\n};\r\n\r\nexport class DecadeViewService {\r\n  dateRange = (start, end) => {\r\n    if (!isPresent(start) || !isPresent(end)) {\r\n      return [];\r\n    }\r\n    const result = [];\r\n    let current = start;\r\n    while (current <= end) {\r\n      result.push(current);\r\n      current = addYears(current, 1);\r\n    }\r\n    return result;\r\n  };\r\n  constructor() {\r\n  }\r\n  addToDate(min, skip) {\r\n    return addDecades(min, skip);\r\n  }\r\n  datesList(start, count) {\r\n    return range(0, count).map(i => addDecades(start, i));\r\n  }\r\n  data(options) {\r\n    const { cellUID, focusedDate, isActiveView, max, min, selectedDates, selectionRange = EMPTY_SELECTIONRANGE, viewDate } = options;\r\n    if (!viewDate) {\r\n      return EMPTY_DATA;\r\n    }\r\n    const cells = range(0, CELLS_LENGTH);\r\n    const firstDate = firstYearOfDecade(viewDate);\r\n    const lastDate = lastYearOfDecade(viewDate);\r\n    const today = getToday();\r\n    return range(0, ROWS_LENGTH).map(rowOffset => {\r\n      const baseDate = addYears(firstDate, rowOffset * CELLS_LENGTH);\r\n      return cells.map(cellOffset => {\r\n        const cellDate = this.normalize(addYears(baseDate, cellOffset), min, max);\r\n        const nextDecade = cellDate.getFullYear() > lastDate.getFullYear();\r\n        if (!this.isInRange(cellDate, min, max) || nextDecade) {\r\n          return null;\r\n        }\r\n        const isRangeStart = this.isEqual(cellDate, selectionRange.start);\r\n        const isRangeEnd = this.isEqual(cellDate, selectionRange.end);\r\n        const isInMiddle = !isRangeStart && !isRangeEnd;\r\n        const isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\r\n        return {\r\n          formattedValue: this.value(cellDate),\r\n          id: `${cellUID}${cellDate.getTime()}`,\r\n          isFocused: this.isEqual(cellDate, focusedDate),\r\n          isSelected: isActiveView && selectedDates.some(date => this.isEqual(cellDate, date)),\r\n          isWeekend: false,\r\n          isRangeStart: isRangeStart,\r\n          isRangeMid: isRangeMid,\r\n          isRangeEnd: isRangeEnd,\r\n          isRangeSplitEnd: isRangeMid && this.isEqual(cellDate, lastDate),\r\n          isRangeSplitStart: isRangeMid && this.isEqual(cellDate, firstDate),\r\n          isToday: this.isEqual(cellDate, today),\r\n          title: this.cellTitle(cellDate),\r\n          value: cellDate\r\n        };\r\n      });\r\n    });\r\n  }\r\n  isEqual(candidate, expected) {\r\n    if (!candidate || !expected) {\r\n      return false;\r\n    }\r\n    return candidate.getFullYear() === expected.getFullYear();\r\n  }\r\n  isInArray(date, dates) {\r\n    if (!dates.length) {\r\n      return false;\r\n    }\r\n    const year = date.getFullYear();\r\n    return dates[0].getFullYear() <= year && year <= (dates[dates.length - 1].getFullYear() + 9);\r\n  }\r\n  isInRange(candidate, min, max) {\r\n    const year = candidate.getFullYear();\r\n    const aboveMin = !min || min.getFullYear() <= year;\r\n    const belowMax = !max || year <= max.getFullYear();\r\n    return aboveMin && belowMax;\r\n  }\r\n  beginningOfPeriod(date) {\r\n    if (!date) {\r\n      return date;\r\n    }\r\n    const firstYear = firstYearOfDecade(date);\r\n    return createDate(firstYear.getFullYear(), 0, 1);\r\n  }\r\n  lastDayOfPeriod(date) {\r\n    const year = lastYearOfDecade(date);\r\n    const month = lastMonthOfYear(year);\r\n    return lastDayOfMonth(month);\r\n  }\r\n  isRangeStart(value) {\r\n    return value.getFullYear() % 100 === 0;\r\n  }\r\n  move(value, action) {\r\n    const modifier = ACTIONS[action];\r\n    if (!modifier) {\r\n      return value;\r\n    }\r\n    return modifier(value);\r\n  }\r\n  cellTitle(value) {\r\n    return value.getFullYear().toString();\r\n  }\r\n  navigationTitle(value) {\r\n    return value ? firstYearOfDecade(value).getFullYear().toString() : '';\r\n  }\r\n  title(value) {\r\n    if (!value) {\r\n      return '';\r\n    }\r\n    return `${firstYearOfDecade(value).getFullYear()} - ${lastYearOfDecade(value).getFullYear()}`;\r\n  }\r\n  rowLength() {\r\n    return CELLS_LENGTH;\r\n  }\r\n  skip(value, min) {\r\n    return durationInDecades(min, value);\r\n  }\r\n  total(min, max) {\r\n    return durationInDecades(min, max) + 1;\r\n  }\r\n  value(current) {\r\n    return current ? current.getFullYear().toString() : '';\r\n  }\r\n  viewDate(date, max, viewsCount = 1) {\r\n    const viewsInRange = this.total(date, max);\r\n    if (viewsInRange < viewsCount) {\r\n      const decadesToSubtract = viewsCount - viewsInRange;\r\n      return addDecades(date, -1 * decadesToSubtract);\r\n    }\r\n    return date;\r\n  }\r\n  normalize(cellDate, min, max) {\r\n    if (cellDate < min && this.isEqual(cellDate, min)) {\r\n      return cloneDate(min);\r\n    }\r\n    if (cellDate > max && this.isEqual(cellDate, max)) {\r\n      return cloneDate(max);\r\n    }\r\n    return cellDate;\r\n  }\r\n}\r\n\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { IntlService } from '@progress/kendo-angular-intl';\r\nimport dayjs from 'dayjs';\r\nimport { JalaliCldrIntlService } from './jalali-cldr-intl.service';\r\nimport { EMPTY_SELECTIONRANGE, addYears, firstYearOfDecade, getToday, isInSelectionRange, lastYearOfDecade, range } from './kendo-util-overrides';\r\nimport { DecadeViewService, EMPTY_DATA, CELLS_LENGTH, ROWS_LENGTH } from './kendo-services/decade-view.service';\r\n\r\n@Injectable()\r\nexport class JalaliDecadeViewService extends DecadeViewService {\r\n  constructor(\r\n    @Inject(IntlService) private intl: JalaliCldrIntlService\r\n  ) {\r\n    super();\r\n  }\r\n\r\n\r\n  title(value) {\r\n    if (!value) {\r\n      return '';\r\n    }\r\n\r\n    const firstYear = this.intl.getDayJsValue(firstYearOfDecade(value, this.intl.localeIdByDatePickerType)).format('YYYY');\r\n    const lastYear = this.intl.getDayJsValue(lastYearOfDecade(value, this.intl.localeIdByDatePickerType)).format('YYYY');\r\n    if (this.intl.isLocaleIran) {\r\n      return `${lastYear} - ${firstYear}`;\r\n    }\r\n    return `${firstYear} - ${lastYear}`;\r\n  }\r\n\r\n  navigationTitle(value) {\r\n    if (!value) {\r\n      return '';\r\n    }\r\n    return `${this.intl.getDayJsValue(firstYearOfDecade(value, this.intl.localeIdByDatePickerType)).format('YYYY')}`;\r\n  }\r\n  data(options) {\r\n    const { cellUID, focusedDate, isActiveView, max, min, selectedDates, selectionRange = EMPTY_SELECTIONRANGE, viewDate } = options;\r\n    if (!viewDate) {\r\n      return EMPTY_DATA;\r\n    }\r\n    const cells = range(0, CELLS_LENGTH);\r\n    const firstDate = firstYearOfDecade(viewDate, this.intl.localeIdByDatePickerType);\r\n    const lastDate = lastYearOfDecade(viewDate, this.intl.localeIdByDatePickerType);\r\n    const today = getToday();\r\n    // isInRange(selectedDate, min, max)\r\n    const data = range(0, ROWS_LENGTH).map(rowOffset => {\r\n      const baseDate = addYears(firstDate, rowOffset * CELLS_LENGTH, this.intl.localeIdByDatePickerType);\r\n      return cells.map(cellOffset => {\r\n        const cellDate = super['normalize'](addYears(baseDate, cellOffset, this.intl.localeIdByDatePickerType), min, max);\r\n        const nextDecade = cellDate.getFullYear() > lastDate.getFullYear();\r\n\r\n        if (!this.isInRange(cellDate, min, max) || nextDecade) {\r\n          return null;\r\n        }\r\n        const isRangeStart = this.isEqual(cellDate, selectionRange.start);\r\n        const isRangeEnd = this.isEqual(cellDate, selectionRange.end);\r\n        const isInMiddle = !isRangeStart && !isRangeEnd;\r\n        const isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\r\n        const title = this.intl.getDayJsValue(cellDate).format('YYYY');\r\n        return {\r\n          formattedValue: title,\r\n          id: `${cellUID}${cellDate.getTime()}`,\r\n          isFocused: this.isEqual(cellDate, focusedDate),\r\n          isSelected: isActiveView && selectedDates.some(date => this.isEqual(cellDate, date)),\r\n          isWeekend: false,\r\n          isRangeStart,\r\n          isRangeMid,\r\n          isRangeEnd,\r\n          isRangeSplitEnd: isRangeMid && this.isEqual(cellDate, lastDate),\r\n          isRangeSplitStart: isRangeMid && this.isEqual(cellDate, firstDate),\r\n          isToday: this.isEqual(cellDate, today),\r\n          title,\r\n          value: cellDate\r\n        };\r\n      });\r\n    });\r\n    return data;\r\n  }\r\n}\r\n","import { CldrIntlService } from '@progress/kendo-angular-intl';\r\nimport { addDays, addWeeks, addMonths, cloneDate, dayOfWeek, durationInMonths, getDate, createDate } from '@progress/kendo-date-math';\r\nimport localeData from 'dayjs/plugin/localeData';\r\nimport { firstDayOfMonth, getToday, isInSelectionRange, range, lastDayOfMonth, Action, isPresent, EMPTY_SELECTIONRANGE } from '../kendo-util-overrides';\r\nexport const EMPTY_DATA = [[]];\r\nexport const CELLS_LENGTH = 7;\r\nexport const ROWS_LENGTH = 6;\r\nconst ACTIONS = {\r\n  [Action.Left]: (date) => addDays(date, -1),\r\n  [Action.Up]: (date) => addWeeks(date, -1),\r\n  [Action.Right]: (date) => addDays(date, 1),\r\n  [Action.Down]: (date) => addWeeks(date, 1),\r\n  [Action.PrevView]: (date) => addMonths(date, -1),\r\n  [Action.NextView]: (date) => addMonths(date, 1),\r\n  [Action.FirstInView]: (date) => firstDayOfMonth(date),\r\n  [Action.LastInView]: (date) => lastDayOfMonth(date)\r\n};\r\nexport class MonthViewService {\r\n  dateRange = (start, end) => {\r\n    if (!isPresent(start) || !isPresent(end)) {\r\n      return [];\r\n    }\r\n    const result = [];\r\n    let current = start;\r\n    while (current <= end) {\r\n      result.push(current);\r\n      current = addDays(current, 1);\r\n    }\r\n    return result;\r\n  };\r\n\r\n  constructor(private _intl) {\r\n  }\r\n  addToDate(min, skip) {\r\n    return addMonths(min, skip);\r\n  }\r\n  datesList(start, count) {\r\n    return range(0, count).map(i => addMonths(start, i));\r\n  }\r\n  data(options) {\r\n    const { cellUID, focusedDate, isActiveView, max, min, selectedDates, selectionRange = EMPTY_SELECTIONRANGE, viewDate, isDateDisabled = () => false } = options;\r\n    if (!viewDate) {\r\n      return EMPTY_DATA;\r\n    }\r\n    const firstMonthDate = firstDayOfMonth(viewDate);\r\n    const firstMonthDay = getDate(firstMonthDate);\r\n    const lastMonthDate = lastDayOfMonth(viewDate);\r\n    const lastMonthDay = getDate(lastMonthDate);\r\n    const backward = -1;\r\n    const date = dayOfWeek(firstMonthDate, this._intl.firstDay(), backward);\r\n    const cells = range(0, CELLS_LENGTH);\r\n    const today = getToday();\r\n    return range(0, ROWS_LENGTH).map(rowOffset => {\r\n      const baseDate = addDays(date, rowOffset * CELLS_LENGTH);\r\n      return cells.map(cellOffset => {\r\n        const cellDate = this.normalize(addDays(baseDate, cellOffset), min, max);\r\n        const cellDay = getDate(cellDate);\r\n        const otherMonth = cellDay < firstMonthDay || cellDay > lastMonthDay;\r\n        const outOfRange = cellDate < min || cellDate > max;\r\n        if (outOfRange) {\r\n          return null;\r\n        }\r\n        const isRangeStart = this.isEqual(cellDate, selectionRange.start);\r\n        const isRangeEnd = this.isEqual(cellDate, selectionRange.end);\r\n        const isInMiddle = !isRangeStart && !isRangeEnd;\r\n        const isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\r\n        return {\r\n          formattedValue: this.value(cellDate),\r\n          id: `${cellUID}${cellDate.getTime()}`,\r\n          isFocused: this.isEqual(cellDate, focusedDate),\r\n          isSelected: isActiveView && selectedDates.some(date => this.isEqual(cellDate, date)),\r\n          isWeekend: this.isWeekend(cellDate),\r\n          isRangeStart: isRangeStart,\r\n          isRangeMid: isRangeMid,\r\n          isRangeEnd: isRangeEnd,\r\n          isRangeSplitStart: isRangeMid && this.isEqual(cellDate, firstMonthDate),\r\n          isRangeSplitEnd: isRangeMid && this.isEqual(cellDate, lastMonthDate),\r\n          isToday: this.isEqual(cellDate, today),\r\n          title: this.cellTitle(cellDate),\r\n          value: cellDate,\r\n          isDisabled: isDateDisabled(cellDate),\r\n          isOtherMonth: otherMonth\r\n        };\r\n      });\r\n    });\r\n  }\r\n  isEqual(candidate, expected) {\r\n    if (!candidate || !expected) {\r\n      return false;\r\n    }\r\n    return getDate(candidate).getTime() === getDate(expected).getTime();\r\n  }\r\n  isInArray(date, dates) {\r\n    if (dates.length === 0) {\r\n      return false;\r\n    }\r\n    const lowerBound = this.beginningOfPeriod(dates[0]);\r\n    const upperBound = this.beginningOfPeriod(addMonths(dates[dates.length - 1], 1));\r\n    return lowerBound <= date && date < upperBound;\r\n  }\r\n  isInRange(candidate, min, max) {\r\n    const value = getDate(candidate);\r\n    const aboveMin = !min || getDate(min) <= value;\r\n    const belowMax = !max || value <= getDate(max);\r\n    return aboveMin && belowMax;\r\n  }\r\n  beginningOfPeriod(date) {\r\n    if (!date) {\r\n      return date;\r\n    }\r\n    return createDate(date.getFullYear(), date.getMonth(), 1);\r\n  }\r\n  lastDayOfPeriod(date) {\r\n    return lastDayOfMonth(date);\r\n  }\r\n  isRangeStart(value) {\r\n    return !value.getMonth();\r\n  }\r\n  move(value, action) {\r\n    const modifier = ACTIONS[action];\r\n    if (!modifier) {\r\n      return value;\r\n    }\r\n    return modifier(value);\r\n  }\r\n  cellTitle(value) {\r\n    return this._intl.formatDate(value, 'D');\r\n  }\r\n  navigationTitle(value) {\r\n    if (!value) {\r\n      return '';\r\n    }\r\n    return this.isRangeStart(value) ? value.getFullYear().toString() : this.abbrMonthNames()[value.getMonth()];\r\n  }\r\n  title(current) {\r\n    return `${this.wideMonthNames()[current.getMonth()]} ${current.getFullYear()}`;\r\n  }\r\n  rowLength(options = {}) {\r\n    return CELLS_LENGTH + ((options as any).prependCell ? 1 : 0);\r\n  }\r\n  skip(value, min) {\r\n    return durationInMonths(min, value);\r\n  }\r\n  total(min, max) {\r\n    return durationInMonths(min, max) + 1;\r\n  }\r\n  value(current) {\r\n    return current ? current.getDate().toString() : \"\";\r\n  }\r\n  viewDate(date, max, viewsCount = 1) {\r\n    const viewsInRange = this.total(date, max);\r\n    if (viewsInRange < viewsCount) {\r\n      const monthsToSubtract = viewsCount - viewsInRange;\r\n      return addMonths(date, -1 * monthsToSubtract);\r\n    }\r\n    return date;\r\n  }\r\n  isWeekend(date) {\r\n    const { start, end } = this._intl.weekendRange();\r\n    const day = date.getDay();\r\n    if (end < start) {\r\n      return day <= end || start <= day;\r\n    }\r\n    return start <= day && day <= end;\r\n  }\r\n  abbrMonthNames() {\r\n    return this._intl.dateFormatNames({ nameType: 'abbreviated', type: 'months' });\r\n  }\r\n  normalize(cellDate, min, max) {\r\n    if (cellDate < min && this.isEqual(cellDate, min)) {\r\n      return cloneDate(min);\r\n    }\r\n    if (cellDate > max && this.isEqual(cellDate, max)) {\r\n      return cloneDate(max);\r\n    }\r\n    return cellDate;\r\n  }\r\n  wideMonthNames() {\r\n    return this._intl.dateFormatNames({ nameType: 'wide', type: 'months' });\r\n  }\r\n}\r\n\r\n\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { IntlService } from '@progress/kendo-angular-intl';\r\nimport dayjs from 'dayjs';\r\nimport { firstDayOfMonth, getToday, isInSelectionRange, range, lastDayOfMonth, addMonths, startOfDay, addDays, addWeeks } from './kendo-util-overrides';\r\nimport { JalaliCldrIntlService } from './jalali-cldr-intl.service';\r\nimport { MonthViewService, CELLS_LENGTH, EMPTY_DATA, ROWS_LENGTH } from './kendo-services/month-view.service';\r\n\r\n\r\n@Injectable()\r\nexport class JalaliMonthViewService extends MonthViewService {\r\n\r\n  constructor(\r\n    @Inject(IntlService) protected intl: JalaliCldrIntlService\r\n  ) {\r\n    super(intl);\r\n\r\n  }\r\n\r\n  value(current) {\r\n    if (!current) {\r\n      return '';\r\n    }\r\n    const res = this.intl.getDayJsValue(current).format('DD').toString();\r\n    return res;\r\n  }\r\n\r\n  abbrMonthNames2() {\r\n    if (this.intl.isJalali) {\r\n      return this.intl.jalaliMonths;\r\n    }\r\n    return this.intl.gregorianMonths;\r\n  }\r\n\r\n  navigationTitle(value) {\r\n    if (!value) {\r\n      return '';\r\n    }\r\n\r\n    if (this.isRangeStart(value)) {\r\n      return this.intl.getDayJsValue(value).format('YYYY');\r\n    }\r\n\r\n    return this.abbrMonthNames2()[this.intl.getDayJsValue(value).month()];\r\n  }\r\n\r\n  isRangeStart(value) {\r\n    if (!value) { return false; }\r\n\r\n    return !this.intl.getDayJsValue(value).month();\r\n  }\r\n\r\n  title(current) {\r\n    return `${this.abbrMonthNames2()[this.intl.getDayJsValue(current).month()]} ${this.intl.getDayJsValue(current).format('YYYY')}`;\r\n  }\r\n\r\n  skip(value, min) {\r\n    const diff = this.intl.getDayJsValue(value).endOf('month').diff(\r\n      this.intl.getDayJsValue(min).startOf('month'), 'month'\r\n    );\r\n    return diff;\r\n  }\r\n  rowLength(options = {}) {\r\n    return CELLS_LENGTH + (options['prependCell'] ? 1 : 0);\r\n  }\r\n  total(min, max) {\r\n    return dayjs(max).diff(min, 'month') + 1;\r\n  }\r\n  beginningOfPeriod(date) {\r\n    if (!date) {\r\n      return date;\r\n    }\r\n    return this.intl.getDayJsValue(date).startOf('month').toDate();\r\n  }\r\n  datesList(start, count) {\r\n    return range(0, count).map(i => addMonths(start, i, this.intl.localeIdByDatePickerType));\r\n  }\r\n  data(options) {\r\n    const { cellUID, focusedDate, isActiveView, max, min, selectedDate, selectionRange = [], viewDate, isDateDisabled = () => false } = options;\r\n    if (!viewDate) {\r\n      return EMPTY_DATA;\r\n    }\r\n    const dateValue = this.intl.getDayJsValue(viewDate).toDate();\r\n    const firstMonthDate = firstDayOfMonth(dateValue, this.intl.localeIdByDatePickerType);\r\n    const firstMonthDay = startOfDay(firstMonthDate, this.intl.localeIdByDatePickerType);\r\n    const lastMonthDate = lastDayOfMonth(dateValue, this.intl.localeIdByDatePickerType);\r\n    const lastMonthDay = startOfDay(lastMonthDate, this.intl.localeIdByDatePickerType);\r\n    const backward = -1;\r\n    const isSelectedDateInRange = dayjs(selectedDate).isBetween(min, max);\r\n    const date = addWeeks(firstMonthDate, this.intl.firstDay(), backward, this.intl.localeIdByDatePickerType);\r\n    const cells = range(0, CELLS_LENGTH);\r\n    const today = getToday();\r\n    return range(0, ROWS_LENGTH).map(rowOffset => {\r\n      const baseDate = addDays(date, rowOffset * CELLS_LENGTH, this.intl.localeIdByDatePickerType);\r\n      return cells.map(cellOffset => {\r\n        const cellDate = this['normalize'](addDays(baseDate, cellOffset), min, max);\r\n        const cellDay = startOfDay(cellDate, this.intl.localeIdByDatePickerType);\r\n        const otherMonth = cellDay < firstMonthDay || cellDay > lastMonthDay;\r\n        const outOfRange = cellDate < min || cellDate > max;\r\n        if (outOfRange) {\r\n          return null;\r\n        }\r\n        const isRangeStart = this.isEqual(cellDate, selectionRange.start);\r\n        const isRangeEnd = this.isEqual(cellDate, selectionRange.end);\r\n        const isInMiddle = !isRangeStart && !isRangeEnd;\r\n        const isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\r\n        return {\r\n          formattedValue: this.value(cellDate),\r\n          id: `${cellUID}${cellDate.getTime()}`,\r\n          isFocused: this.isEqual(cellDate, focusedDate),\r\n          isSelected: isActiveView && isSelectedDateInRange && this.isEqual(cellDate, selectedDate),\r\n          isWeekend: this.isWeekend(cellDate),\r\n          isRangeStart,\r\n          isRangeMid,\r\n          isRangeEnd,\r\n          isRangeSplitStart: isRangeMid && this.isEqual(cellDate, firstMonthDate),\r\n          isRangeSplitEnd: isRangeMid && this.isEqual(cellDate, lastMonthDate),\r\n          isToday: this.isEqual(cellDate, today),\r\n          title: this.cellTitle(cellDate),\r\n          value: cellDate,\r\n          isDisabled: isDateDisabled(cellDate),\r\n          isOtherMonth: otherMonth\r\n        };\r\n      });\r\n    });\r\n  }\r\n\r\n}\r\n","import { shiftWeekNames } from '../kendo-util-overrides';\r\nexport class WeekNamesService {\r\n  constructor(private intl) {\r\n  }\r\n  getWeekNames(includeWeekNumber = false) {\r\n      const weekNames = shiftWeekNames(this.intl.dateFormatNames({ nameType: 'short', type: 'days' }), this.intl.firstDay());\r\n      return includeWeekNumber ? [''].concat(weekNames) : weekNames;\r\n  }\r\n}\r\n\r\n\r\n","import { Injectable } from \"@angular/core\";\r\nimport { IntlService } from \"@progress/kendo-angular-intl\";\r\nimport { WeekNamesService } from './kendo-services/week-names.service';\r\n\r\n\r\n@Injectable()\r\nexport class JalaliWeekNamesService extends WeekNamesService {\r\n  constructor(intl: IntlService) {\r\n    super(intl);\r\n  }\r\n\r\n\r\n  getWeekNames(includeWeekNumber?: boolean): string[] {\r\n    return super.getWeekNames(includeWeekNumber);\r\n  }\r\n}\r\n","import { CldrIntlService } from '@progress/kendo-angular-intl';\r\n\r\nimport { JalaliCldrIntlService } from '../jalali-cldr-intl.service';\r\nimport { Action, EMPTY_SELECTIONRANGE, firstMonthOfYear, getToday, isInSelectionRange, isPresent, lastDayOfMonth, lastMonthOfYear, range } from '../kendo-util-overrides';\r\nimport { addMonths, addYears, cloneDate, createDate, durationInYears, } from '@progress/kendo-date-math';\r\n\r\n\r\nexport const EMPTY_DATA = [[]];\r\nexport const CELLS_LENGTH = 4;\r\nexport const ROWS_LENGTH = 3;\r\nconst upStep = (month) => {\r\n  if (month > 4) {\r\n    return -5;\r\n  }\r\n  if (month < 2) {\r\n    return -2;\r\n  }\r\n  return -7;\r\n};\r\nconst downStep = (month) => {\r\n  if (month < 7) {\r\n    return 5;\r\n  }\r\n  if (month < 10) {\r\n    return 7;\r\n  }\r\n  return 2;\r\n};\r\nconst ACTIONS = {\r\n  [Action.Left]: (date) => addMonths(date, -1),\r\n  [Action.Up]: (date) => addMonths(date, upStep(date.getMonth())),\r\n  [Action.Right]: (date) => addMonths(date, 1),\r\n  [Action.Down]: (date) => addMonths(date, downStep(date.getMonth())),\r\n  [Action.PrevView]: (date) => addYears(date, -1),\r\n  [Action.NextView]: (date) => addYears(date, 1),\r\n  [Action.FirstInView]: (date) => firstMonthOfYear(date),\r\n  [Action.LastInView]: (date) => lastMonthOfYear(date)\r\n};\r\n\r\nexport class YearViewService {\r\n  dateRange = (start, end) => {\r\n    if (!isPresent(start) || !isPresent(end)) {\r\n      return [];\r\n    }\r\n    const result = [];\r\n    let current = start;\r\n    while (current <= end) {\r\n      result.push(current);\r\n      current = addMonths(current, 1);\r\n    }\r\n    return result;\r\n  };\r\n  constructor(private _intl: JalaliCldrIntlService) {\r\n    this._intl = _intl;\r\n  }\r\n  addToDate(min, skip) {\r\n    return addYears(min, skip);\r\n  }\r\n  datesList(start, count) {\r\n    return range(0, count).map(i => addYears(start, i));\r\n  }\r\n  data(options) {\r\n    const { cellUID, focusedDate, isActiveView, max, min, selectedDates, selectionRange = EMPTY_SELECTIONRANGE, viewDate } = options;\r\n    if (!viewDate) {\r\n      return EMPTY_DATA;\r\n    }\r\n    const months = this.abbrMonthNames();\r\n    const firstDate = firstMonthOfYear(viewDate, this._intl.localeId);\r\n    const lastDate = lastMonthOfYear(viewDate, this._intl.localeId);\r\n    const currentYear = firstDate.getFullYear();\r\n    const cells = range(0, CELLS_LENGTH);\r\n    const today = getToday();\r\n    return range(0, ROWS_LENGTH).map(rowOffset => {\r\n      const baseDate = addMonths(firstDate, rowOffset * CELLS_LENGTH);\r\n      return cells.map(cellOffset => {\r\n        const cellDate = this.normalize(addMonths(baseDate, cellOffset), min, max);\r\n        const changedYear = currentYear < cellDate.getFullYear();\r\n        if (!this.isInRange(cellDate, min, max) || changedYear) {\r\n          return null;\r\n        }\r\n        const isRangeStart = this.isEqual(cellDate, selectionRange.start);\r\n        const isRangeEnd = this.isEqual(cellDate, selectionRange.end);\r\n        const isInMiddle = !isRangeStart && !isRangeEnd;\r\n        const isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\r\n        return {\r\n          formattedValue: months[cellDate.getMonth()],\r\n          id: `${cellUID}${cellDate.getTime()}`,\r\n          isFocused: this.isEqual(cellDate, focusedDate),\r\n          isSelected: isActiveView && selectedDates.some(date => this.isEqual(cellDate, date)),\r\n          isWeekend: false,\r\n          isRangeStart: isRangeStart,\r\n          isRangeMid: isRangeMid,\r\n          isRangeEnd: isRangeEnd,\r\n          isRangeSplitEnd: isRangeMid && this.isEqual(cellDate, lastDate),\r\n          isRangeSplitStart: isRangeMid && this.isEqual(cellDate, firstDate),\r\n          isToday: this.isEqual(cellDate, today),\r\n          title: this.cellTitle(cellDate),\r\n          value: cellDate\r\n        };\r\n      });\r\n    });\r\n  }\r\n  isEqual(candidate, expected) {\r\n    if (!candidate || !expected) {\r\n      return false;\r\n    }\r\n    return candidate.getFullYear() === expected.getFullYear() &&\r\n      candidate.getMonth() === expected.getMonth();\r\n  }\r\n  isInArray(date, dates) {\r\n    if (!dates.length) {\r\n      return false;\r\n    }\r\n    const year = date.getFullYear();\r\n    return dates[0].getFullYear() <= year && year <= dates[dates.length - 1].getFullYear();\r\n  }\r\n  isInRange(candidate, min, max) {\r\n    const candidateValue = createDate(candidate.getFullYear(), candidate.getMonth(), 1);\r\n    const aboveMin = !min || createDate(min.getFullYear(), min.getMonth(), 1) <= candidateValue;\r\n    const belowMax = !max || candidateValue <= createDate(max.getFullYear(), max.getMonth(), 1);\r\n    return aboveMin && belowMax;\r\n  }\r\n  beginningOfPeriod(date) {\r\n    if (!date) {\r\n      return date;\r\n    }\r\n    return createDate(date.getFullYear(), 0, 1);\r\n  }\r\n  lastDayOfPeriod(date) {\r\n    const month = lastMonthOfYear(date);\r\n    return lastDayOfMonth(month);\r\n  }\r\n  isRangeStart(value) {\r\n    return value.getFullYear() % 10 === 0;\r\n  }\r\n  move(value, action) {\r\n    const modifier = ACTIONS[action];\r\n    if (!modifier) {\r\n      return value;\r\n    }\r\n    return modifier(value);\r\n  }\r\n  cellTitle(value) {\r\n    return `${value.getFullYear()} ${this.value(value)}`;\r\n  }\r\n  navigationTitle(value) {\r\n    return this.title(value);\r\n  }\r\n  title(current) {\r\n    return current ? current.getFullYear().toString() : '';\r\n  }\r\n  rowLength() {\r\n    return CELLS_LENGTH;\r\n  }\r\n  skip(value, min) {\r\n    return durationInYears(min, value);\r\n  }\r\n  total(min, max) {\r\n    return durationInYears(min, max) + 1;\r\n  }\r\n  value(current) {\r\n    return current ? this.abbrMonthNames()[current.getMonth()] : '';\r\n  }\r\n  viewDate(date, max, viewsCount = 1) {\r\n    const viewsInRange = this.total(date, max);\r\n    if (viewsInRange < viewsCount) {\r\n      const yearsToSubtract = viewsCount - viewsInRange;\r\n      return addYears(date, -1 * yearsToSubtract);\r\n    }\r\n    return date;\r\n  }\r\n  abbrMonthNames() {\r\n    return this._intl.dateFormatNames({ nameType: 'abbreviated', type: 'months' });\r\n  }\r\n  normalize(cellDate, min, max) {\r\n    if (cellDate < min && this.isEqual(cellDate, min)) {\r\n      return cloneDate(min);\r\n    }\r\n    if (cellDate > max && this.isEqual(cellDate, max)) {\r\n      return cloneDate(max);\r\n    }\r\n    return cellDate;\r\n  }\r\n}\r\n\r\n\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { IntlService } from '@progress/kendo-angular-intl';\r\nimport dayjs from 'dayjs';\r\nimport { JalaliCldrIntlService } from './jalali-cldr-intl.service';\r\nimport { EMPTY_SELECTIONRANGE, addMonths, firstMonthOfYear, getToday, isInSelectionRange, lastMonthOfYear, range } from './kendo-util-overrides';\r\nimport { YearViewService, EMPTY_DATA, CELLS_LENGTH, ROWS_LENGTH } from './kendo-services/year-view.services';\r\n\r\n\r\n@Injectable()\r\nexport class JalaliYearViewService extends YearViewService {\r\n  constructor(\r\n    @Inject(IntlService) protected intl: JalaliCldrIntlService\r\n  ) {\r\n    super(intl);\r\n  }\r\n\r\n  abbrMonthNames2() {\r\n    if (this.intl.isJalali) {\r\n      return this.intl.jalaliMonths;\r\n    }\r\n    return this.intl.gregorianMonths;\r\n  }\r\n\r\n  override data(options) {\r\n    const { cellUID, focusedDate, isActiveView, max, min, selectedDate, selectionRange = EMPTY_SELECTIONRANGE, viewDate } = options;\r\n    if (!viewDate) {\r\n      return EMPTY_DATA;\r\n    }\r\n    const months = this.abbrMonthNames2();\r\n    const isSelectedDateInRange = dayjs(selectedDate).isBetween(min, max);\r\n    //firstMonthOfYear\r\n    const firstDate = firstMonthOfYear(viewDate, this.intl.localeIdByDatePickerType);\r\n    const lastDate = lastMonthOfYear(viewDate, this.intl.localeIdByDatePickerType);\r\n    const currentYear = this.intl.getDayJsValue(firstDate).year()\r\n    const cells = range(0, CELLS_LENGTH);\r\n    const today = getToday();\r\n\r\n    const xxx = range(0, ROWS_LENGTH).map(rowOffset => {\r\n      const baseDate = addMonths(firstDate, rowOffset * CELLS_LENGTH, this.intl.localeIdByDatePickerType);\r\n      return cells.map(cellOffset => {\r\n        const cellDate = this['normalize'](addMonths(baseDate, cellOffset, this.intl.localeIdByDatePickerType), min, max);\r\n        const changedYear = currentYear < this.intl.getDayJsValue(cellDate).year()\r\n        if (!dayjs(cellDate).isBetween(min, max)) {\r\n          return null;\r\n        }\r\n        if (changedYear) {\r\n          return null;\r\n        }\r\n        const isRangeStart = this.isEqual(cellDate, selectionRange.start);\r\n        const isRangeEnd = this.isEqual(cellDate, selectionRange.end);\r\n        const isInMiddle = !isRangeStart && !isRangeEnd;\r\n        const isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\r\n        return {\r\n          formattedValue: months[this.intl.getDayJsValue(cellDate).month()],\r\n          id: `${cellUID}${cellDate.getTime()}`,\r\n          isFocused: this.isEqual(cellDate, focusedDate),\r\n          isSelected: isActiveView && isSelectedDateInRange && this.isEqual(cellDate, selectedDate),\r\n          isWeekend: false,\r\n          isRangeStart,\r\n          isRangeMid,\r\n          isRangeEnd,\r\n          isRangeSplitEnd: isRangeMid && this.isEqual(cellDate, lastDate),\r\n          isRangeSplitStart: isRangeMid && this.isEqual(cellDate, firstDate),\r\n          isToday: this.isEqual(cellDate, today),\r\n          title: this.cellTitle(cellDate),\r\n          value: cellDate\r\n        };\r\n      });\r\n    });\r\n\r\n    return xxx;\r\n  }\r\n  override title(current: any) {\r\n    return `${this.intl.getDayJsValue(current).format('YYYY')}`\r\n  }\r\n  override navigationTitle(value: any) {\r\n    return `${this.intl.getDayJsValue(value).format('YYYY')}`\r\n\r\n  }\r\n}\r\n","import { Injector } from '@angular/core';\r\nimport { IntlService } from '@progress/kendo-angular-intl';\r\nimport { HeaderTitleTemplateFactory } from './HeaderTitleTemplateFactory';\r\nimport { JalaliCenturyViewService } from './services/jalali-century-view.service';\r\nimport { JalaliCldrIntlService } from './services/jalali-cldr-intl.service';\r\nimport { JalaliDecadeViewService } from './services/jalali-decade-view.service';\r\nimport { JalaliMonthViewService } from './services/jalali-month-view.service';\r\nimport { JalaliWeekNamesService } from './services/jalali-week-names.service';\r\nimport { JalaliYearViewService } from './services/jalali-year-view.service';\r\n\r\nexport const Providers = [\r\n  // DateRangeService,\r\n  JalaliCenturyViewService,\r\n  JalaliDecadeViewService,\r\n  JalaliYearViewService,\r\n  JalaliMonthViewService,\r\n  JalaliWeekNamesService,\r\n  // JalaliCldrIntlService,\r\n  { provide: IntlService, useExisting: JalaliCldrIntlService },\r\n  { provide: 'HeaderTitleTemplate', useFactory: HeaderTitleTemplateFactory, deps: [Injector] },\r\n];\r\nvar CalendarViewEnum;\r\n(function (CalendarViewEnum) {\r\n    CalendarViewEnum[CalendarViewEnum[\"month\"] = 0] = \"month\";\r\n    CalendarViewEnum[CalendarViewEnum[\"year\"] = 1] = \"year\";\r\n    CalendarViewEnum[CalendarViewEnum[\"decade\"] = 2] = \"decade\";\r\n    CalendarViewEnum[CalendarViewEnum[\"century\"] = 3] = \"century\";\r\n})(CalendarViewEnum || (CalendarViewEnum = {}));\r\n\r\nexport const services = {\r\n  [CalendarViewEnum.month]: JalaliMonthViewService,\r\n  [CalendarViewEnum.year]: JalaliYearViewService,\r\n  [CalendarViewEnum.decade]: JalaliDecadeViewService,\r\n  [CalendarViewEnum.century]: JalaliCenturyViewService\r\n};\r\n","import { ChangeDetectorRef, Directive, Inject, Self, SkipSelf } from '@angular/core';\r\nimport { NavigationComponent } from '@progress/kendo-angular-dateinputs';\r\nimport { IntlService } from '@progress/kendo-angular-intl';\r\nimport { Providers } from '../providers';\r\nimport { JalaliCldrIntlService } from '../services/jalali-cldr-intl.service';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n// tslint:disable-next-line:no-string-literal\r\nNavigationComponent.prototype['intlChange'] = function(): void {\r\n  this.cdr.markForCheck();\r\n};\r\n\r\n@Directive({\r\n  // tslint:disable-next-line: directive-selector\r\n  selector: 'kendo-datepicker,kendo-datetimepicker,kendo-calendar,kendo-timepicker,kendo-multiviewcalendar', // ,kendo-dateinput\r\n  providers: [\r\n    ...Providers\r\n  ]\r\n})\r\nexport class KendoDatePickerDirective {\r\n  constructor(\r\n    @Inject(IntlService) @Self() intl: JalaliCldrIntlService,\r\n    @Inject(IntlService) @SkipSelf() hostIntlService: JalaliCldrIntlService,\r\n    private cdr: ChangeDetectorRef\r\n  ) {\r\n    hostIntlService.changes.pipe(debounceTime(30)).subscribe(x => {\r\n      intl.changeLocaleId(hostIntlService.localeId);\r\n      intl.changeType(hostIntlService.datePickerType);\r\n      this.cdr.detectChanges();\r\n    });\r\n  }\r\n}\r\n","declare global {\r\n  interface String {\r\n    toPerNumber(): string;\r\n    toEnNumber(): string;\r\n    toMomentDateTimeFormat(): string;\r\n  }\r\n}\r\n\r\nString.prototype.toPerNumber = function () {\r\n  return this.replace(/\\d/g, (match) => {\r\n    return enToPerNumberMap[match] || match;\r\n  });\r\n};\r\nString.prototype.toEnNumber = function () {\r\n  return this.replace(/[١٢٣٤٥٦٧٨٩٠]/g, (match) => {\r\n    return perToEnNumberMap[match] || match;\r\n  });\r\n};\r\nString.prototype.toMomentDateTimeFormat = function () {\r\n  let x = this.replace(/d/g, 'D')\r\n  .replace(/aa/ig, (m) => m[0])\r\n  .replace(/_/g, '/')\r\n  .replace(/[y]{1,}/, 'YYYY');\r\n\r\n  return x;\r\n};\r\n\r\nexport const enToPerNumberMap = {\r\n  1: '١',\r\n  2: '٢',\r\n  3: '٣',\r\n  4: '٤',\r\n  5: '٥',\r\n  6: '٦',\r\n  7: '٧',\r\n  8: '٨',\r\n  9: '٩',\r\n  0: '٠'\r\n};\r\nexport const perToEnNumberMap = {\r\n  '١': '1',\r\n  '٢': '2',\r\n  '٣': '3',\r\n  '٤': '4',\r\n  '٥': '5',\r\n  '٦': '6',\r\n  '٧': '7',\r\n  '٨': '8',\r\n  '٩': '9',\r\n  '٠': '0'\r\n};","import { Inject, Injector, ModuleWithProviders, NgModule } from '@angular/core';\r\nimport '@angular/localize/init';\r\nimport { DateInputsModule } from '@progress/kendo-angular-dateinputs';\r\nimport { IntlModule, setData } from '@progress/kendo-angular-intl';\r\nimport dayjs from 'dayjs';\r\nimport isBetween from 'dayjs/plugin/isBetween';\r\nimport localeData from 'dayjs/plugin/localeData';\r\nimport jalaliday from 'jalaliday';\r\nimport { KendoJalaliHeaderTitleTemplateComponent } from './components/kendo-jalali-header-title-template/kendo-jalali-header-title-template.component';\r\nimport { KendoDatePickerDirective } from './components/navigation.directive';\r\nimport { IConfig } from './models/config.model';\r\nimport { Providers } from './providers';\r\nimport { DateTimeNumberService } from './services/date-time-number.service';\r\nimport { JalaliCldrIntlService } from './services/jalali-cldr-intl.service';\r\nimport './utils/string-prototypes';\r\n\r\ndayjs.extend(jalaliday);\r\ndayjs.extend(isBetween);\r\ndayjs.extend(localeData);\r\nif (typeof window !== 'undefined') {\r\n  window['dayjs'] = dayjs;\r\n}\r\n\r\nsetData({\r\n  name: \"fa\",\r\n  likelySubtags: {\r\n    fa: \"fa-Arab-IR\"\r\n  },\r\n  identity: {\r\n    language: \"fa\"\r\n  },\r\n  territory: \"IR\",\r\n  calendar: {\r\n    patterns: {\r\n      d: \"y/M/d\",\r\n      D: \"EEEE d MMMM y\",\r\n      m: \"d LLL\",\r\n      M: \"d LLLL\",\r\n      y: \"MMM y\",\r\n      Y: \"MMMM y\",\r\n      F: \"EEEE d MMMM y H:mm:ss\",\r\n      g: \"y/M/d H:mm\",\r\n      G: \"y/M/d H:mm:ss\",\r\n      t: \"H:mm\",\r\n      T: \"H:mm:ss\",\r\n      s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\r\n      u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\r\n    },\r\n    dateTimeFormats: {\r\n      full: \"{1}، ساعت {0}\",\r\n      long: \"{1}، ساعت {0}\",\r\n      medium: \"{1}،‏ {0}\",\r\n      short: \"{1}،‏ {0}\",\r\n      availableFormats: {\r\n        Bh: \"h B\",\r\n        Bhm: \"h:mm B\",\r\n        Bhms: \"h:mm:ss B\",\r\n        d: \"d\",\r\n        E: \"ccc\",\r\n        EBhm: \"E h:mm B\",\r\n        EBhms: \"E h:mm:ss B\",\r\n        Ed: \"E d\",\r\n        Ehm: \"E h:mm a\",\r\n        EHm: \"E H:mm\",\r\n        Ehms: \"E h:mm:ss a\",\r\n        EHms: \"E H:mm:ss\",\r\n        Gy: \"y G\",\r\n        GyMMM: \"MMM y G\",\r\n        GyMMMd: \"d MMM y G\",\r\n        GyMMMEd: \"E d MMM y G\",\r\n        h: \"h a\",\r\n        H: \"H\",\r\n        HHmmZ: \"HH:mm (Z)\",\r\n        hm: \"h:mm a\",\r\n        Hm: \"H:mm\",\r\n        hms: \"h:mm:ss a\",\r\n        Hms: \"H:mm:ss\",\r\n        hmsv: \"h:mm:ss a v\",\r\n        Hmsv: \"H:mm:ss v\",\r\n        hmv: \"h:mm a v\",\r\n        Hmv: \"H:mm v\",\r\n        M: \"L\",\r\n        Md: \"M/d\",\r\n        MEd: \"E M/d\",\r\n        MMM: \"LLL\",\r\n        MMMd: \"d LLL\",\r\n        MMMEd: \"E d LLL\",\r\n        MMMMd: \"d LLLL\",\r\n        MMMMEd: \"E d LLLL\",\r\n        \"MMMMW-count-one\": \"هفتهٔ Wم LLLL\",\r\n        \"MMMMW-count-other\": \"هفتهٔ Wم LLLL\",\r\n        mmss: \"mm:ss\",\r\n        ms: \"m:ss\",\r\n        y: \"y\",\r\n        yM: \"y/M\",\r\n        yMd: \"y/M/d\",\r\n        yMEd: \"E y/M/d\",\r\n        yMMM: \"MMM y\",\r\n        yMMMd: \"d MMM y\",\r\n        yMMMEd: \"E d MMM y\",\r\n        yMMMM: \"MMMM y\",\r\n        yMMMMEEEEd: \"EEEE d MMMM y\",\r\n        yQQQ: \"QQQQ y\",\r\n        yQQQQ: \"QQQQ y\",\r\n        \"yw-count-one\": \"هفتهٔ wم Y\",\r\n        \"yw-count-other\": \"هفتهٔ wم Y\"\r\n      }\r\n    },\r\n    timeFormats: {\r\n      full: \"H:mm:ss (zzzz)\",\r\n      long: \"H:mm:ss (z)\",\r\n      medium: \"H:mm:ss\",\r\n      short: \"H:mm\"\r\n    },\r\n    dateFormats: {\r\n      full: \"EEEE d MMMM y\",\r\n      long: \"d MMMM y\",\r\n      medium: \"d MMM y\",\r\n      short: \"y/M/d\"\r\n    },\r\n    days: {\r\n      format: {\r\n        abbreviated: [\r\n          \"یکشنبه\",\r\n          \"دوشنبه\",\r\n          \"سه‌شنبه\",\r\n          \"چهارشنبه\",\r\n          \"پنجشنبه\",\r\n          \"جمعه\",\r\n          \"شنبه\"\r\n        ],\r\n        narrow: [\r\n          \"ی\",\r\n          \"د\",\r\n          \"س\",\r\n          \"چ\",\r\n          \"پ\",\r\n          \"ج\",\r\n          \"ش\"\r\n        ],\r\n        short: [\r\n          \"۱ش\",\r\n          \"۲ش\",\r\n          \"۳ش\",\r\n          \"۴ش\",\r\n          \"۵ش\",\r\n          \"ج\",\r\n          \"ش\"\r\n        ],\r\n        wide: [\r\n          \"یکشنبه\",\r\n          \"دوشنبه\",\r\n          \"سه‌شنبه\",\r\n          \"چهارشنبه\",\r\n          \"پنجشنبه\",\r\n          \"جمعه\",\r\n          \"شنبه\"\r\n        ]\r\n      },\r\n      \"stand-alone\": {\r\n        abbreviated: [\r\n          \"یکشنبه\",\r\n          \"دوشنبه\",\r\n          \"سه‌شنبه\",\r\n          \"چهارشنبه\",\r\n          \"پنجشنبه\",\r\n          \"جمعه\",\r\n          \"شنبه\"\r\n        ],\r\n        narrow: [\r\n          \"ی\",\r\n          \"د\",\r\n          \"س\",\r\n          \"چ\",\r\n          \"پ\",\r\n          \"ج\",\r\n          \"ش\"\r\n        ],\r\n        short: [\r\n          \"۱ش\",\r\n          \"۲ش\",\r\n          \"۳ش\",\r\n          \"۴ش\",\r\n          \"۵ش\",\r\n          \"ج\",\r\n          \"ش\"\r\n        ],\r\n        wide: [\r\n          \"یکشنبه\",\r\n          \"دوشنبه\",\r\n          \"سه‌شنبه\",\r\n          \"چهارشنبه\",\r\n          \"پنجشنبه\",\r\n          \"جمعه\",\r\n          \"شنبه\"\r\n        ]\r\n      }\r\n    },\r\n    months: {\r\n      format: {\r\n        abbreviated: [\r\n          \"ژانویهٔ\",\r\n          \"فوریهٔ\",\r\n          \"مارس\",\r\n          \"آوریل\",\r\n          \"مهٔ\",\r\n          \"ژوئن\",\r\n          \"ژوئیهٔ\",\r\n          \"اوت\",\r\n          \"سپتامبر\",\r\n          \"اکتبر\",\r\n          \"نوامبر\",\r\n          \"دسامبر\"\r\n        ],\r\n        narrow: [\r\n          \"ژ\",\r\n          \"ف\",\r\n          \"م\",\r\n          \"آ\",\r\n          \"م\",\r\n          \"ژ\",\r\n          \"ژ\",\r\n          \"ا\",\r\n          \"س\",\r\n          \"ا\",\r\n          \"ن\",\r\n          \"د\"\r\n        ],\r\n        wide: [\r\n          \"ژانویهٔ\",\r\n          \"فوریهٔ\",\r\n          \"مارس\",\r\n          \"آوریل\",\r\n          \"مهٔ\",\r\n          \"ژوئن\",\r\n          \"ژوئیهٔ\",\r\n          \"اوت\",\r\n          \"سپتامبر\",\r\n          \"اکتبر\",\r\n          \"نوامبر\",\r\n          \"دسامبر\"\r\n        ]\r\n      },\r\n      \"stand-alone\": {\r\n        abbreviated: [\r\n          \"ژانویه\",\r\n          \"فوریه\",\r\n          \"مارس\",\r\n          \"آوریل\",\r\n          \"مه\",\r\n          \"ژوئن\",\r\n          \"ژوئیه\",\r\n          \"اوت\",\r\n          \"سپتامبر\",\r\n          \"اکتبر\",\r\n          \"نوامبر\",\r\n          \"دسامبر\"\r\n        ],\r\n        narrow: [\r\n          \"ژ\",\r\n          \"ف\",\r\n          \"م\",\r\n          \"آ\",\r\n          \"م\",\r\n          \"ژ\",\r\n          \"ژ\",\r\n          \"ا\",\r\n          \"س\",\r\n          \"ا\",\r\n          \"ن\",\r\n          \"د\"\r\n        ],\r\n        wide: [\r\n          \"ژانویه\",\r\n          \"فوریه\",\r\n          \"مارس\",\r\n          \"آوریل\",\r\n          \"مه\",\r\n          \"ژوئن\",\r\n          \"ژوئیه\",\r\n          \"اوت\",\r\n          \"سپتامبر\",\r\n          \"اکتبر\",\r\n          \"نوامبر\",\r\n          \"دسامبر\"\r\n        ]\r\n      }\r\n    },\r\n    quarters: {\r\n      format: {\r\n        abbreviated: [\r\n          \"س‌م۱\",\r\n          \"س‌م۲\",\r\n          \"س‌م۳\",\r\n          \"س‌م۴\"\r\n        ],\r\n        narrow: [\r\n          \"۱\",\r\n          \"۲\",\r\n          \"۳\",\r\n          \"۴\"\r\n        ],\r\n        wide: [\r\n          \"سه‌ماههٔ اول\",\r\n          \"سه‌ماههٔ دوم\",\r\n          \"سه‌ماههٔ سوم\",\r\n          \"سه‌ماههٔ چهارم\"\r\n        ]\r\n      },\r\n      \"stand-alone\": {\r\n        abbreviated: [\r\n          \"س‌م۱\",\r\n          \"س‌م۲\",\r\n          \"س‌م۳\",\r\n          \"س‌م۴\"\r\n        ],\r\n        narrow: [\r\n          \"۱\",\r\n          \"۲\",\r\n          \"۳\",\r\n          \"۴\"\r\n        ],\r\n        wide: [\r\n          \"سه‌ماههٔ اول\",\r\n          \"سه‌ماههٔ دوم\",\r\n          \"سه‌ماههٔ سوم\",\r\n          \"سه‌ماههٔ چهارم\"\r\n        ]\r\n      }\r\n    },\r\n    dayPeriods: {\r\n      format: {\r\n        abbreviated: {\r\n          am: \"ق.ظ.\",\r\n          pm: \"ب.ظ.\",\r\n          morning1: \"بامداد\",\r\n          morning2: \"صبح\",\r\n          afternoon1: \"ظهر\",\r\n          afternoon2: \"عصر\",\r\n          night1: \"شب\",\r\n          night2: \"نیمه‌شب\"\r\n        },\r\n        narrow: {\r\n          am: \"ق\",\r\n          pm: \"ب\",\r\n          morning1: \"ب\",\r\n          morning2: \"ص\",\r\n          afternoon1: \"ظ\",\r\n          afternoon2: \"ع\",\r\n          night1: \"ش\",\r\n          night2: \"ن\"\r\n        },\r\n        wide: {\r\n          am: \"قبل‌ازظهر\",\r\n          pm: \"بعدازظهر\",\r\n          morning1: \"بامداد\",\r\n          morning2: \"صبح\",\r\n          afternoon1: \"ظهر\",\r\n          afternoon2: \"عصر\",\r\n          night1: \"شب\",\r\n          night2: \"نیمه‌شب\"\r\n        }\r\n      },\r\n      \"stand-alone\": {\r\n        abbreviated: {\r\n          am: \"ق.ظ.\",\r\n          pm: \"ب.ظ.\",\r\n          morning1: \"بامداد\",\r\n          morning2: \"صبح\",\r\n          afternoon1: \"ظهر\",\r\n          afternoon2: \"عصر\",\r\n          night1: \"شب\",\r\n          night2: \"نیمه‌شب\"\r\n        },\r\n        narrow: {\r\n          am: \"ق\",\r\n          pm: \"ب\",\r\n          morning1: \"ب\",\r\n          morning2: \"ص\",\r\n          afternoon1: \"ظ\",\r\n          afternoon2: \"ع\",\r\n          night1: \"ش\",\r\n          night2: \"ن\"\r\n        },\r\n        wide: {\r\n          am: \"قبل‌ازظهر\",\r\n          pm: \"بعدازظهر\",\r\n          morning1: \"بامداد\",\r\n          morning2: \"صبح\",\r\n          afternoon1: \"ظهر\",\r\n          afternoon2: \"عصر\",\r\n          night1: \"شب\",\r\n          night2: \"نیمه‌شب\"\r\n        }\r\n      }\r\n    },\r\n    eras: {\r\n      format: {\r\n        wide: {\r\n          \"0\": \"قبل از میلاد\",\r\n          \"1\": \"میلادی\",\r\n          \"0-alt-variant\": \"قبل از دوران مشترک\",\r\n          \"1-alt-variant\": \"دوران مشترک\"\r\n        },\r\n        abbreviated: {\r\n          \"0\": \"ق.م.\",\r\n          \"1\": \"م.\",\r\n          \"0-alt-variant\": \"ق.د.م\",\r\n          \"1-alt-variant\": \"د.م.\"\r\n        },\r\n        narrow: {\r\n          \"0\": \"ق\",\r\n          \"1\": \"م\",\r\n          \"0-alt-variant\": \"ق.د.م\",\r\n          \"1-alt-variant\": \"د.م.\"\r\n        }\r\n      }\r\n    },\r\n    gmtFormat: \"{0} گرینویچ\",\r\n    gmtZeroFormat: \"گرینویچ\",\r\n    dateFields: {\r\n      era: {\r\n        wide: \"دوره\",\r\n        short: \"دوره\",\r\n        narrow: \"دوره\"\r\n      },\r\n      year: {\r\n        wide: \"سال\",\r\n        short: \"سال\",\r\n        narrow: \"سال\"\r\n      },\r\n      quarter: {\r\n        wide: \"سه‌ماهه\",\r\n        short: \"سه‌ماهه\",\r\n        narrow: \"سه‌ماهه\"\r\n      },\r\n      month: {\r\n        wide: \"ماه\",\r\n        short: \"ماه\",\r\n        narrow: \"ماه\"\r\n      },\r\n      week: {\r\n        wide: \"هفته\",\r\n        short: \"هفته\",\r\n        narrow: \"هفته\"\r\n      },\r\n      weekOfMonth: {\r\n        wide: \"هفتهٔ ماه\",\r\n        short: \"هفتهٔ ماه\",\r\n        narrow: \"هفتهٔ ماه\"\r\n      },\r\n      day: {\r\n        wide: \"روز\",\r\n        short: \"روز\",\r\n        narrow: \"روز\"\r\n      },\r\n      dayOfYear: {\r\n        wide: \"روز سال\",\r\n        short: \"روز سال\",\r\n        narrow: \"روز سال\"\r\n      },\r\n      weekday: {\r\n        wide: \"روز هفته\",\r\n        short: \"روز هفته\",\r\n        narrow: \"روز هفته\"\r\n      },\r\n      weekdayOfMonth: {\r\n        wide: \"روز کاری ماه\",\r\n        short: \"روز کاری ماه\",\r\n        narrow: \"روز کاری ماه\"\r\n      },\r\n      dayperiod: {\r\n        short: \"قبل/بعدازظهر\",\r\n        wide: \"قبل/بعدازظهر\",\r\n        narrow: \"قبل/بعدازظهر\"\r\n      },\r\n      hour: {\r\n        wide: \"ساعت\",\r\n        short: \"ساعت\",\r\n        narrow: \"ساعت\"\r\n      },\r\n      minute: {\r\n        wide: \"دقیقه\",\r\n        short: \"دقیقه\",\r\n        narrow: \"دقیقه\"\r\n      },\r\n      second: {\r\n        wide: \"ثانیه\",\r\n        short: \"ثانیه\",\r\n        narrow: \"ثانیه\"\r\n      },\r\n      zone: {\r\n        wide: \"منطقهٔ زمانی\",\r\n        short: \"منطقهٔ زمانی\",\r\n        narrow: \"منطقهٔ زمانی\"\r\n      }\r\n    }\r\n  },\r\n  firstDay: 6\r\n});\r\n\r\n@NgModule({\r\n  declarations: [\r\n    KendoJalaliHeaderTitleTemplateComponent,\r\n    KendoDatePickerDirective,\r\n  ],\r\n  imports: [\r\n    IntlModule,\r\n    DateInputsModule\r\n  ],\r\n  providers: [\r\n    ...Providers,\r\n    { provide: 'CONFIGS', useValue: {} }\r\n  ],\r\n  exports: [\r\n    DateInputsModule,\r\n    KendoDatePickerDirective,\r\n  ]\r\n})\r\nexport class KendoJalaliDateInputsModule {\r\n  constructor(\r\n    injector: Injector,\r\n    @Inject('HeaderTitleTemplate') headerTitleTemplate,\r\n  ) {\r\n  }\r\n\r\n  static forRoot(configs?: IConfig): ModuleWithProviders<KendoJalaliDateInputsModule> {\r\n    return {\r\n      ngModule: KendoJalaliDateInputsModule,\r\n      providers: [\r\n        { provide: 'DATE_INPUT_CONFIGS', useValue: { ...configs } }\r\n      ]\r\n    };\r\n  }\r\n\r\n  static forChild(configs?: IConfig): ModuleWithProviders<KendoJalaliDateInputsModule> {\r\n    return {\r\n      ngModule: KendoJalaliDateInputsModule,\r\n      providers: [\r\n        DateTimeNumberService,\r\n        JalaliCldrIntlService,\r\n        { provide: 'DATE_INPUT_CONFIGS', useValue: { ...configs } }\r\n      ]\r\n    };\r\n  }\r\n}\r\n\r\n\r\n\r\n","import { DateInputComponent } from '@progress/kendo-angular-dateinputs';\r\nimport dayjs from 'dayjs';\r\nimport { Dayjs } from 'dayjs';\r\nimport { JalaliCldrIntlService } from '../services/jalali-cldr-intl.service';\r\nimport { isPresent } from '../services/kendo-util-overrides';\r\n\r\n\r\nconst existInputs = {\r\n  'm': false,\r\n  'd': false,\r\n  'y': false\r\n};\r\n// tslint:disable-next-line:no-string-literal\r\nconst old = DateInputComponent.prototype['updateElementValue'];\r\nDateInputComponent.prototype['updateElementValue'] = function (isActive: boolean): void {\r\n  if (window['useOld']) {\r\n    old.call(this, isActive);\r\n    return;\r\n  }\r\n  const start = this.caret()[0]; //XXX: get caret position before input is updated\r\n  const format = this.isActive ? this.inputFormat : this.displayFormat;\r\n  const localeId = (this.intl as JalaliCldrIntlService).localeIdByDatePickerType;\r\n  const showPlaceholder = !this.isActive && isPresent(this.placeholder) && !this.kendoDate.hasValue();\r\n  const input = this.inputElement;\r\n  const texts = this.kendoDate.getTextAndFormat(format);\r\n  // this.currentValue = !showPlaceholder ? this.intl.formatDate(this.kendoDate.value, format) : '';\r\n  this.currentValue = !showPlaceholder ? texts[0] : '';\r\n\r\n  const temp = getDateFormatString.call(this, format, localeId);\r\n  this.currentFormat = temp.symbol;\r\n  this.outputFormat = temp.format;\r\n\r\n  if (this.kendoDate.hasValue()) {\r\n    setInputValue.call(this, localeId);\r\n  } else {\r\n    this.renderer.setProperty(input, 'value', this.currentValue);\r\n    this.currentFormat = texts[1];\r\n  }\r\n  if (input.placeholder !== '' + this.placeholder) {\r\n    this.renderer.setProperty(input, \"placeholder\", this.placeholder);\r\n  }\r\n  if (isActive) {\r\n    this.selectNearestSegment(start);\r\n  }\r\n};\r\nconst oldHandleInput = DateInputComponent.prototype['handleInput'];\r\nDateInputComponent.prototype['handleInput'] = function () {\r\n  const intl = (this.intl as JalaliCldrIntlService);\r\n\r\n  if (window['useOld']) {\r\n    oldHandleInput.call(this);\r\n    return;\r\n  }\r\n  const me: DateInputComponent = this;\r\n\r\n  if (me.disabled || me.readonly) {\r\n    return;\r\n  }\r\n  if (this.paste) {\r\n    this.updateOnPaste();\r\n    this.paste = false;\r\n    return;\r\n  }\r\n  let diff = [];\r\n\r\n  let prevValue = this.currentValue;\r\n  if (intl.isJalali) {\r\n    // TODO Check me\r\n    prevValue = this.value ? this.intl.getDayJsValue(this.value).format(dateFormatString.call(this, this.value, this.format, 'fa').format.toMomentDateTimeFormat()).toEnNumber() : this.currentValue;\r\n    // prevValue = this.value ? getValue.call(this, this.value).format(this.format.toMomentDateTimeFormat()).toEnNumber() : this.currentValue;\r\n  }\r\n\r\n  diff = approximateStringMatching(prevValue, this.currentFormat, this.inputValue.toEnNumber(), this.caret()[0]);\r\n  prepareDiffInJalaliMode.call(this, intl, diff);\r\n  const navigationOnly = (diff.length === 1 && diff[0][1] === \"_\");\r\n  let switchPart = false;\r\n  if (!navigationOnly) {\r\n    let parsedPart;\r\n\r\n    for (let i = 0; i < diff.length; i++) {\r\n      if (diff[i][2] === undefined) {\r\n        parsedPart = this.kendoDate.parsePart(diff[i][0], diff[i][1], this.resetSegmentValue);\r\n      }\r\n      switchPart = diff[i][2] !== undefined ? diff[i][2] : parsedPart.switchToNext;\r\n      if (diff[i][3]) {\r\n        this.kendoDate.value = diff[i][3];\r\n      }\r\n      if (diff[i][4]) {\r\n        this.kendoDate[diff[i][4]] = false;\r\n      }\r\n    }\r\n    const candidate = this.kendoDate.getDateObject();\r\n    if (this.value && candidate && !this.formatSections.date) {\r\n      this.kendoDate = this.getKendoDate(setTime(this.value, candidate));\r\n    }\r\n  }\r\n  this.resetSegmentValue = false;\r\n  this.putDateInRange();\r\n  this.updateElementValue(this.isActive);\r\n\r\n  this.triggerChange();\r\n  this.updateIncompleteValidationStatus();\r\n  if (diff.length && diff[0][0] !== \"_\") {\r\n    this.selectDateSegment(diff[0][0]);\r\n  }\r\n  if (switchPart || navigationOnly) {\r\n    this.switchDateSegment(1);\r\n  }\r\n  if (this.backspace) {\r\n    this.switchDateSegment(-1);\r\n  }\r\n  this.backspace = false;\r\n  if (intl.isLocaleIran) {\r\n    me.inputElement.value = (me.inputElement.value as string).toPerNumber();\r\n  }\r\n};\r\n\r\nfunction dateFormatString(date, format): { format: string, symbol: string } {\r\n  const dateFormatParts = this.kendoDate.intl.splitDateFormat(format);\r\n  const parts = [];\r\n  const partMap = [];\r\n  const partSymbols = [];\r\n  for (let i = 0; i < dateFormatParts.length; i++) {\r\n    let partLength = this.intl.getDayJsValue(date)?.format(dateFormatParts[i].pattern?.toMomentDateTimeFormat()).length || 0;\r\n    // let partLength = dayjs(date)?.format(dateFormatParts[i].pattern?.toMomentDateTimeFormat()).length || 0;\r\n    while (partLength > 0) {\r\n      parts.push(this.kendoDate.symbols[dateFormatParts[i].pattern[0]] || dateFormatParts[i].pattern[0] || \"_\");\r\n      partSymbols.push(this.kendoDate.symbols[dateFormatParts[i].pattern[0]] || \"_\");\r\n      partMap.push(dateFormatParts[i]);\r\n      partLength--;\r\n    }\r\n  }\r\n  return { format: parts.join(\"\"), symbol: partSymbols.join(\"\") };\r\n}\r\n\r\nconst oldHandleBlur = DateInputComponent.prototype['handleBlur'];\r\nDateInputComponent.prototype['handleBlur'] = function (event) {\r\n  resetExistingInputs();\r\n  oldHandleBlur.call(this, event);\r\n};\r\n\r\nfunction prepareDiffInJalaliMode(intl: JalaliCldrIntlService, diff: any[]) {\r\n  if (intl.localeIdByDatePickerType !== 'fa') {\r\n    return;\r\n  }\r\n  if (!this.inputValue || !this.kendoDate.hasValue()) {\r\n    this.kendoDate.date = false;\r\n    this.kendoDate.year = false;\r\n    this.kendoDate.month = false;\r\n    this.kendoDate = this.getKendoDate((MIN_JALALI_DATE.clone().toDate()));\r\n  }\r\n  if (!this.inputValue) {\r\n    return;\r\n  }\r\n  const dt = this.intl.getDayJsValue(this.kendoDate.value, 'fa');\r\n  if (!dt) {\r\n    return;\r\n  }\r\n  // if (debuggerCounter(3)) { }\r\n\r\n  diff.forEach((d): void => {\r\n    if (!d[0]) {\r\n      return;\r\n    }\r\n\r\n    d[2] = false;\r\n    if ((d[0] as string).toLocaleLowerCase() === 'm') {\r\n\r\n      this.kendoDate.month = d[1] != '';\r\n      if (d[1] === '') {\r\n        existInputs.m = false;\r\n        this.kendoDate = this.getKendoDate(dt.month((+d[1])).toDate());\r\n        return;\r\n      }\r\n      let month = d[1];\r\n      if (existInputs.m) {\r\n        d[2] = true;\r\n        month = +(dt.month() + 1) + d[1];\r\n        resetExistingInputs();\r\n      } else {\r\n        d[2] = +month > 1;\r\n        existInputs.m = true;\r\n        if (month === '0') {\r\n          existInputs.m = false;\r\n          this.kendoDate.month = false;\r\n          // this.kendoDate.value = dt.set('date', 1).toDate();\r\n          d[1] = '0'\r\n          return;\r\n        }\r\n      }\r\n\r\n      this.kendoDate.value = (dt.set('month', month - 1).toDate());\r\n      d[1] = '' + (dt.locale('en').month() + 1);\r\n\r\n      return;\r\n    }\r\n    if ((d[0] as string).toLocaleLowerCase() === 'd') {\r\n      if (d[1] === '') {\r\n        existInputs.d = false;\r\n        this.kendoDate = this.getKendoDate(dt.date((+d[1])).toDate());\r\n        return;\r\n      }\r\n      this.kendoDate.date = true;;\r\n      let day = d[1];\r\n      if (existInputs.d) {\r\n        d[2] = true;\r\n        day = +(dt.date()) + d[1];\r\n        resetExistingInputs();\r\n      } else {\r\n        d[2] = +day > 3;\r\n        existInputs.d = true;\r\n        if (day === '0') {\r\n          existInputs.d = false;\r\n          this.kendoDate.date = false;\r\n          // this.kendoDate.value = dt.set('date', 1).toDate();\r\n          d[1] = '0'\r\n          return;\r\n        }\r\n      }\r\n      this.kendoDate.value = (dt.set('date', +day).toDate());\r\n      d[1] = '' + (dt.locale('en').date());\r\n      return;\r\n    }\r\n    if (d[0].toLocaleLowerCase() === 'y') {\r\n      d[1] = prepareYearValue.call(this, d, dt);\r\n    }\r\n  });\r\n}\r\nconst MIN_JALALI_DATE = dayjs('0000-01-01', 'YYYY/MM/DD', 'fa');\r\n\r\nfunction prepareYearValue(diff: any[], dt) {\r\n  diff[2] = false\r\n  this.kendoDate.year = false;;\r\n  const year = diff[1];\r\n  if (year === '') {\r\n    existInputs.y = false;\r\n    this.kendoDate = this.getKendoDate(dt.year((+year)).toDate());\r\n    return '';\r\n  }\r\n  this.kendoDate.year = true;\r\n  // if (!existInputs.y && year === '0') {\r\n  //   existInputs.y = false;\r\n  //   this.kendoDate.year = false;\r\n  //   return;\r\n  // }\r\n  if (!existInputs.y || dt.format('y').length > 3) {\r\n    existInputs.y = true;\r\n    this.kendoDate = this.getKendoDate(dt.year((+year)).toDate());\r\n    return year === '' ? '' : dt.format('y');\r\n  }\r\n\r\n  this.kendoDate.value = dt.year(+(dt.year() + year)).toDate();\r\n\r\n  if (dt.format('y').length > 3) {\r\n    resetExistingInputs();\r\n    diff[2] = true;\r\n  }\r\n  return dt.format('y');\r\n}\r\n\r\nexport function getDateFormatString(format: string, localeId: string, value?: Date): string {\r\n  const dt = this.intl.getDayJsValue(value || this.kendoDate.value, localeId)?.toDate();\r\n  return dateFormatString.call(this, dt, format, localeId) || '';\r\n};\r\n\r\nexport const approximateStringMatching = (oldTextOrigin, oldFormat, newTextOrigin, caret) => {\r\n  // Remove the right part of the cursor.\r\n  //oldFormat = oldFormat.substring(0, caret + oldText.length - newText.length);\r\n  const oldIndex = caret + oldTextOrigin.length - newTextOrigin.length;\r\n  const oldTextSeparator = oldTextOrigin[oldIndex];\r\n  const oldText = oldTextOrigin.substring(0, caret + oldTextOrigin.length - newTextOrigin.length);\r\n  const newText = newTextOrigin.substring(0, caret);\r\n  const diff = [];\r\n  // Handle typing a single character over the same selection.\r\n  if (oldText === newText && caret > 0) {\r\n    diff.push([oldFormat[caret - 1], newText[caret - 1]]);\r\n    return diff;\r\n  }\r\n  if (oldText.indexOf(newText) === 0 && (newText.length === 0 || oldFormat[newText.length - 1] !== oldFormat[newText.length])) {\r\n    // Handle Delete/Backspace.\r\n    let deletedSymbol = \"\";\r\n    //XXX:\r\n    // Whole text is replaced with a same char\r\n    // Nasty patch required to keep the selection in the first segment\r\n    if (newText.length === 1) {\r\n      diff.push([oldFormat[0], newText[0]]);\r\n    }\r\n    for (let i = newText.length; i < oldText.length; i++) {\r\n      if (oldFormat[i] !== deletedSymbol && oldFormat[i] !== \"_\") {\r\n        deletedSymbol = oldFormat[i];\r\n        diff.push([deletedSymbol, \"\"]);\r\n      }\r\n    }\r\n    return diff;\r\n  }\r\n  // Handle inserting text (the new text is longer than the previous one).\r\n  // Handle typing over a literal as well.\r\n  if (newText.indexOf(oldText) === 0 || oldFormat[caret - 1] === \"_\") {\r\n    let symbol = oldFormat[0];\r\n    for (let i = Math.max(0, oldText.length - 1); i < oldFormat.length; i++) {\r\n      if (oldFormat[i] !== \"_\") {\r\n        symbol = oldFormat[i];\r\n        break;\r\n      }\r\n    }\r\n    return [[symbol, newText[caret - 1]]];\r\n  }\r\n  // Handle entering a space or a separator, for navigation to the next item.\r\n  if (newText[newText.length - 1] === \" \" || (newText[newText.length - 1] === oldTextSeparator && oldFormat[oldIndex] === '_')) {\r\n    return [[oldFormat[caret - 1], \"_\"]];\r\n  }\r\n  // Handle typing over a correctly selected part.\r\n  return [[oldFormat[caret - 1], newText[caret - 1]]];\r\n};\r\n\r\nexport const setTime = (origin, candidate) => {\r\n  const date = new Date(origin);\r\n  date.setHours(candidate.getHours(), candidate.getMinutes(), candidate.getSeconds(), candidate.getMilliseconds());\r\n  return date;\r\n};\r\n\r\n\r\nfunction setInputValue(localeId: string) {\r\n  const value: Date = this.kendoDate.value;\r\n  let format = this.format;\r\n  if (['d', 't', 'g'].some(x => x == format)) {\r\n    format = (this.outputFormat || this.currentFormat).toMomentDateTimeFormat();\r\n  }\r\n  if (!this.kendoDate.year) {\r\n    format = format.replace(/y/gi, '0');\r\n  }\r\n  if (!this.kendoDate.date) {\r\n    format = format.replace(/d/gi, '0');\r\n  }\r\n  if (!this.kendoDate.month) {\r\n    format = format.replace(/m/gi, '0');\r\n  }\r\n\r\n  const result = this.intl.getDayJsValue(value, localeId);\r\n  if (this.intl.isLocaleIran) {\r\n    this.renderer.setProperty(this.inputElement, 'value', result.format(format.toMomentDateTimeFormat()));\r\n    return;\r\n  }\r\n  this.renderer.setProperty(this.inputElement, 'value', result.format(format.toMomentDateTimeFormat()));\r\n}\r\n\r\n\r\nfunction resetExistingInputs() {\r\n  existInputs.m = false;\r\n  existInputs.d = false;\r\n  existInputs.y = false;\r\n}\r\n\r\nfunction debuggerCounter(counter): any {\r\n  if (typeof window === undefined) {\r\n    return;\r\n  }\r\n  if (typeof window['counter'] === undefined) {\r\n    window['counter'] = 0;\r\n  }\r\n  const result = window['counter'] === counter;\r\n  window['counter']++;\r\n  if (result) {\r\n    window['counter'] = 0;\r\n  }\r\n  return result;\r\n}\r\n","import { TemplateRef } from '@angular/core';\r\nimport { CalendarComponent, MultiViewCalendarComponent } from '@progress/kendo-angular-dateinputs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { services } from '../providers';\r\nimport { JalaliCldrIntlService } from '../services/jalali-cldr-intl.service';\r\nimport { dateInRange, firstDayOfMonth, getDayJsValue } from '../services/kendo-util-overrides';\r\n\r\nlet headerTitleTemplate: TemplateRef<any>;\r\nObject.defineProperty(CalendarComponent.prototype, 'headerTitleTemplate', {\r\n  get(): TemplateRef<any> {\r\n    return headerTitleTemplate || JalaliCldrIntlService.staticDefaultTitleTemplate;\r\n  },\r\n\r\n  set(template: TemplateRef<any>): void {\r\n    headerTitleTemplate = template;\r\n  },\r\n  enumerable: true,\r\n  configurable: true\r\n});\r\n\r\nObject.defineProperty(MultiViewCalendarComponent.prototype, 'headerTitleTemplate', {\r\n  get(): TemplateRef<any> {\r\n    return headerTitleTemplate || JalaliCldrIntlService.staticDefaultTitleTemplate;\r\n  },\r\n\r\n  set(template: TemplateRef<any>): void {\r\n    headerTitleTemplate = template;\r\n  },\r\n  enumerable: true,\r\n  configurable: true\r\n});\r\n\r\nlet bus;\r\nObject.defineProperty(MultiViewCalendarComponent.prototype, 'bus', {\r\n  get(): any {\r\n    return bus;\r\n  },\r\n\r\n  set(value: any): void {\r\n    bus = value;\r\n    bus.service = (view) => {\r\n      return this.bus.injector.get(services[view]) as any;\r\n    }\r\n  },\r\n  enumerable: true,\r\n  configurable: true\r\n});\r\n\r\nObject.defineProperty(CalendarComponent.prototype, 'bus', {\r\n  get(): any {\r\n    return bus;\r\n  },\r\n\r\n  set(value: any): void {\r\n    bus = value;\r\n    bus.service = (view) => {\r\n      return this.bus.injector.get(services[view]) as any;\r\n    }\r\n  },\r\n  enumerable: true,\r\n  configurable: true\r\n});\r\n\r\nconst oldNgOnInit = CalendarComponent.prototype.ngOnInit;\r\nCalendarComponent.prototype.ngOnInit = function (): void {\r\n  const me: CalendarComponent = this;\r\n  oldNgOnInit.call(this);\r\n  const intl: JalaliCldrIntlService = this.bus.service(this.activeViewEnum).intl;\r\n  intl.$calendarType.pipe(debounceTime(10)).subscribe(x => {\r\n    me.onResize();\r\n    this.cdr.detectChanges();\r\n  });\r\n};\r\nconst oldNgOnInit1 = MultiViewCalendarComponent.prototype.ngOnInit;\r\nMultiViewCalendarComponent.prototype.ngOnInit = function (): void {\r\n  const me: MultiViewCalendarComponent = this;\r\n  oldNgOnInit1.call(this);\r\n  const intl: JalaliCldrIntlService = this.bus.service(this.activeViewEnum).intl;\r\n  intl.$calendarType.pipe(debounceTime(100)).subscribe(x => {\r\n    me.navigateView(6);\r\n    this.cdr.detectChanges();\r\n  });\r\n};\r\n\r\nCalendarComponent.prototype.handleNavigation = function (candidate: Date) {\r\n  if (this.disabled) {\r\n    return;\r\n  }\r\n  const focusTarget = candidate ? firstDayOfMonth(candidate, this.bus.service(0).intl.localeIdByDatePickerType) : this.focusedDate;\r\n  this.focusedDate = dateInRange(focusTarget, this.min, this.max);\r\n  this.detectChanges();\r\n}","/*\r\n * Public API Surface of kendo-jalali-date-inputs\r\n */\r\n\r\nexport * from './lib/kendo-jalali-date-inputs.module';\r\nexport * from './lib/services/jalali-cldr-intl.service';\r\nexport * from './lib/components/date-input.component';\r\nexport * from './lib/components/calendar.component';\r\nexport * from './lib/components/navigation.directive';\r\nexport * from './lib/models/date-picker-type';\r\nexport * from './lib/models/config.model';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DateTimeNumberService","i1.JalaliCldrIntlService","EMPTY_DATA","CELLS_LENGTH","ROWS_LENGTH","ACTIONS","addDecades","lastYearOfDecade","lastMonthOfYear","lastDayOfMonth","addYears","addDays","addWeeks","addMonths"],"mappings":"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"}