{"version":3,"file":"ngx-ntk-cron-editor.mjs","sources":["../../../projects/ngx-ntk-cron-editor/src/lib/poco/Utils.ts","../../../projects/ngx-ntk-cron-editor/src/lib/time-picker/time-picker.component.ts","../../../projects/ngx-ntk-cron-editor/src/lib/time-picker/time-picker.component.html","../../../projects/ngx-ntk-cron-editor/src/lib/models/cron-options-model.ts","../../../projects/ngx-ntk-cron-editor/src/lib/models/enums.ts","../../../projects/ngx-ntk-cron-editor/src/lib/translations/ru.ts","../../../projects/ngx-ntk-cron-editor/src/lib/translations/en.ts","../../../projects/ngx-ntk-cron-editor/src/lib/translations/fa.ts","../../../projects/ngx-ntk-cron-editor/src/lib/services/translateUi.service.ts","../../../projects/ngx-ntk-cron-editor/src/lib/cron-editor.component.ts","../../../projects/ngx-ntk-cron-editor/src/lib/cron-editor.component.html","../../../projects/ngx-ntk-cron-editor/src/lib/cron-editor.module.ts","../../../projects/ngx-ntk-cron-editor/src/ngx-ntk-cron-editor.ts"],"sourcesContent":["// @dynamic\r\nexport default class Utils {\r\n    /** This returns a range of numbers. Starts from 0 if 'startFrom' is not set */\r\n    public static getRange(startFrom: number, until: number) {\r\n        return Array.from({ length: (until + 1 - startFrom) }, (_, k) => k + startFrom);\r\n    }\r\n\r\n    public static isObject(value: any): value is object {\r\n        return typeof value === 'object' && value !== null;\r\n    }\r\n\r\n    public static merge(target: object, ...sources: object[]): object {\r\n        for (const source of sources) {\r\n            for (const [key, value] of Object.entries(source)) {\r\n                if (Utils.isObject(target[key]) && Utils.isObject(value)) {\r\n                    Utils.merge(target[key], value);\r\n                } else {\r\n                    target[key] = value;\r\n                }\r\n            }\r\n        }\r\n        return target;\r\n    }\r\n}\r\n","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\r\nimport Utils from '../poco/Utils';\r\n\r\n\r\n\r\n@Component({\r\n  selector: 'cron-time-picker',\r\n  templateUrl: './time-picker.component.html',\r\n  styleUrls: ['./time-picker.component.css']\r\n})\r\nexport class TimePickerComponent implements OnInit {\r\n  @Output() public change = new EventEmitter();\r\n  @Input() public disabled: boolean;\r\n  @Input() public time: any;\r\n  @Input() public selectClass: string;\r\n  @Input() public use24HourTime: boolean;\r\n  @Input() public hideSeconds: boolean;\r\n\r\n  public hours: number[];\r\n  public minutes: number[];\r\n  public seconds: number[];\r\n  public hourTypes: string[];\r\n\r\n  public ngOnInit() {\r\n    this.hours = this.use24HourTime ? Utils.getRange(0, 23) : Utils.getRange(0, 12);\r\n    this.minutes = Utils.getRange(0, 59);\r\n    this.seconds = Utils.getRange(0, 59);\r\n    this.hourTypes = ['AM', 'PM'];\r\n  }\r\n}\r\n","<!-- hour -->\r\n<select class=\"timeFormControl\" (change)=\"change.emit()\" [(ngModel)]=\"time.hours\" [disabled]=\"disabled\" [ngClass]=\"selectClass\">\r\n  <option *ngFor=\"let hour of hours\" [ngValue]=\"hour\">{{hour}}</option>\r\n</select>\r\n\r\n<!-- minute -->\r\n<select class=\"timeFormControl\" (change)=\"change.emit()\" [(ngModel)]=\"time.minutes\" [disabled]=\"disabled\" [ngClass]=\"selectClass\">\r\n  <option *ngFor=\"let minute of minutes\" [ngValue]=\"minute\">{{minute}}</option>\r\n</select>\r\n\r\n<!-- second -->\r\n<select class=\"timeFormControl\" (change)=\"change.emit()\" [(ngModel)]=\"time.seconds\" [disabled]=\"disabled\" *ngIf=\"!hideSeconds\"\r\n  [ngClass]=\"selectClass\">\r\n  <option *ngFor=\"let second of seconds\" [ngValue]=\"second\">{{second}}</option>\r\n</select>\r\n\r\n<!-- am/pm -->\r\n<select class=\"timeFormControl\" (change)=\"change.emit()\" [(ngModel)]=\"time.hourTypes\" [disabled]=\"disabled\" *ngIf=\"!use24HourTime\"\r\n  [ngClass]=\"selectClass\">\r\n  <option *ngFor=\"let hourType of hourTypes\" [ngValue]=\"hourType\">{{ hourType}}</option>\r\n</select>\r\n","export interface CronOptionModel {\r\n  formInputClass: string;\r\n  formSelectClass: string;\r\n  formRadioClass: string;\r\n  formCheckboxClass: string;\r\n\r\n  defaultTime: string;\r\n  use24HourTime: boolean;\r\n\r\n  hideMinutesTab: boolean;\r\n  hideHourlyTab: boolean;\r\n  hideDailyTab: boolean;\r\n  hideWeeklyTab: boolean;\r\n  hideMonthlyTab: boolean;\r\n  hideYearlyTab: boolean;\r\n  hideAdvancedTab: boolean;\r\n\r\n  /** hides the Seconds UI form element */\r\n  hideSeconds: boolean;\r\n\r\n  /** removes Seconds from the Cron expression */\r\n  removeSeconds: boolean;\r\n\r\n  /** removes Years from the Cron expression */\r\n  removeYears: boolean;\r\n}\r\n\r\nexport const defaultCronOptions: CronOptionModel = {\r\n  formInputClass: \"form-control cron-editor-input\",\r\n  formSelectClass: \"form-select cron-editor-select\",\r\n  formRadioClass: \"cron-editor-radio\",\r\n  formCheckboxClass: \"form-check-input cron-editor-checkbox\",\r\n\r\n  defaultTime: \"10:00:00\",\r\n  use24HourTime: true,\r\n\r\n  hideMinutesTab: false,\r\n  hideHourlyTab: false,\r\n  hideDailyTab: false,\r\n  hideWeeklyTab: false,\r\n  hideMonthlyTab: false,\r\n  hideYearlyTab: false,\r\n  hideAdvancedTab: false,\r\n\r\n  hideSeconds: true,\r\n  removeSeconds: true,\r\n  removeYears: true,\r\n};\r\n","export const Days = {\r\n  'SUN': 'Sunday',\r\n  'MON': 'Monday',\r\n  'TUE': 'Tuesday',\r\n  'WED': 'Wednesday',\r\n  'THU': 'Thursday',\r\n  'FRI': 'Friday',\r\n  'SAT': 'Saturday'\r\n};\r\n\r\nexport const MonthWeeks = {\r\n  '#1': 'First',\r\n  '#2': 'Second',\r\n  '#3': 'Third',\r\n  '#4': 'Fourth',\r\n  '#5': 'Fifth',\r\n  'L': 'Last'\r\n};\r\n\r\nexport enum Months {\r\n  January = 1,\r\n  February,\r\n  March,\r\n  April,\r\n  May,\r\n  June,\r\n  July,\r\n  August,\r\n  September,\r\n  October,\r\n  November,\r\n  December\r\n}\r\n","export const ru = {\r\n  CRON: {\r\n    TABS: {\r\n      MINUTES: 'Минута',\r\n      HOURLY: 'Час',\r\n      DAILY: 'День',\r\n      WEEKLY: 'Неделя',\r\n      MONTHLY: 'Месяц',\r\n      YEARLY: 'Год',\r\n      ADVANCED: 'Продвинутый'\r\n    },\r\n    MINUTES: {\r\n      EVERY: 'Каждые(-ую)',\r\n      MINUTES: 'минут(-у)',\r\n      ON_SECOND: 'в секунду:'\r\n    },\r\n    HOURLY: {\r\n      EVERY: 'Каждый(-ые)',\r\n      HOURS: 'час(-ов)',\r\n      ON_MINUTE: 'в минуту:',\r\n      ON_SECOND: 'и секунду:'\r\n    },\r\n    DAILY: {\r\n      EVERY: 'Каждый',\r\n      DAYS: 'день в',\r\n      WORKING_DAY: 'Каждый рабочий день в'\r\n    },\r\n    WEEKLY: {\r\n      AT: 'в'\r\n    },\r\n    MONTHLY: {\r\n      ON: 'В',\r\n      OF_EVERY: 'каждый(-ые)',\r\n      MONTHS: 'месяц(-ев)',\r\n      NEAREST_WEEKDAY: 'в ближайший будний день',\r\n      AT: 'в',\r\n      STARTING_IN: 'начиная с'\r\n    },\r\n    YEARLY: {\r\n      EVERY: 'Каждый',\r\n      ON: 'в',\r\n      AT: 'в',\r\n      OF: '',\r\n      NEAREST_WEEKDAY: 'в ближайший будний день'\r\n    },\r\n    ADVANCED: {\r\n      CRON: 'Cron-выражение'\r\n    },\r\n    MONTH_DAY: {\r\n      LAST_DAY: 'Последний день',\r\n      LAST_WEEKDAY: 'Последний рабочий день',\r\n      FIRST_WEEKDAY: 'Первый рабочий день',\r\n      DAY_N: '{{n}}-й день'\r\n    },\r\n    MONTH_WEEK: {\r\n      FIRST: 'Первый',\r\n      SECOND: 'Второй',\r\n      THIRD: 'Третий',\r\n      FOURTH: 'Четвертый',\r\n      FIFTH: 'Пятый',\r\n      LAST: 'Последний'\r\n    },\r\n    MONTH: {\r\n      JANUARY: 'Январь',\r\n      FEBRUARY: 'Февраль',\r\n      MARCH: 'Март',\r\n      APRIL: 'Апрель',\r\n      MAY: 'Май',\r\n      JUNE: 'Июнь',\r\n      JULY: 'Июль',\r\n      AUGUST: 'Август',\r\n      SEPTEMBER: 'Сентябрь',\r\n      OCTOBER: 'Октябрь',\r\n      NOVEMBER: 'Ноябрь',\r\n      DECEMBER: 'Декабрь'\r\n    },\r\n    WEEK: {\r\n      MON: 'Понедельник',\r\n      TUE: 'Вторник',\r\n      WED: 'Среда',\r\n      THU: 'Четверг',\r\n      FRI: 'Пятница',\r\n      SAT: 'Суббота',\r\n      SUN: 'Воскресенье',\r\n    },\r\n    HOUR_TYPES: {\r\n      AM: 'ДП',\r\n      PM: 'ПП'\r\n    },\r\n    VALIDATION_MESSAGE: {\r\n      NULL: 'Cron-выражение не может быть null',\r\n      SEGMENTS: 'Неверное cron-выражение, должно быть {{n}} сегментов'\r\n    }\r\n  }\r\n};\r\n","\r\n\r\nexport const en = {\r\n  CRON: {\r\n    TABS: {\r\n      MINUTES: 'Minutes',\r\n      HOURLY: 'Hourly',\r\n      DAILY: 'Daily',\r\n      WEEKLY: 'Weekly',\r\n      MONTHLY: 'Monthly',\r\n      YEARLY: 'Yearly',\r\n      ADVANCED: 'Advanced'\r\n    },\r\n    MINUTES: {\r\n      EVERY: 'Every',\r\n      MINUTES: 'minute(s)',\r\n      ON_SECOND: 'on second'\r\n    },\r\n    HOURLY: {\r\n      EVERY: 'Every',\r\n      HOURS: 'hour(s)',\r\n      ON_MINUTE: 'on minute',\r\n      ON_SECOND: 'and second'\r\n    },\r\n    DAILY: {\r\n      EVERY: 'Every',\r\n      DAYS: 'day(s) at',\r\n      WORKING_DAY: 'Every working day at'\r\n    },\r\n    WEEKLY: {\r\n      AT: 'at'\r\n    },\r\n    MONTHLY: {\r\n      ON: 'On the',\r\n      OF_EVERY: 'of every',\r\n      MONTHS: 'month(s)',\r\n      NEAREST_WEEKDAY: 'during the nearest weekday',\r\n      AT: 'at',\r\n      STARTING_IN: 'starting in'\r\n    },\r\n    YEARLY: {\r\n      EVERY: 'Every',\r\n      ON: 'on the',\r\n      AT: 'at',\r\n      OF: 'of',\r\n      NEAREST_WEEKDAY: 'during the nearest weekday'\r\n    },\r\n    ADVANCED: {\r\n      CRON: 'Cron Expression'\r\n    },\r\n    MONTH_DAY: {\r\n      LAST_DAY: 'Last Day',\r\n      LAST_WEEKDAY: 'Last Weekday',\r\n      FIRST_WEEKDAY: 'First Weekday',\r\n      DAY_N: 'Day {{n}}'\r\n    },\r\n    MONTH_WEEK: {\r\n      FIRST: 'First',\r\n      SECOND: 'Second',\r\n      THIRD: 'Third',\r\n      FOURTH: 'Fourth',\r\n      FIFTH: 'Fifth',\r\n      LAST: 'Last'\r\n    },\r\n    MONTH: {\r\n      JANUARY: 'January',\r\n      FEBRUARY: 'February',\r\n      MARCH: 'March',\r\n      APRIL: 'April',\r\n      MAY: 'May',\r\n      JUNE: 'June',\r\n      JULY: 'July',\r\n      AUGUST: 'August',\r\n      SEPTEMBER: 'September',\r\n      OCTOBER: 'October',\r\n      NOVEMBER: 'November',\r\n      DECEMBER: 'December'\r\n    },\r\n    WEEK: {\r\n      MON: 'Monday',\r\n      TUE: 'Tuesday',\r\n      WED: 'Wednesday',\r\n      THU: 'Thursday',\r\n      FRI: 'Friday',\r\n      SAT: 'Saturday',\r\n      SUN: 'Sunday',\r\n    },\r\n    HOUR_TYPES: {\r\n      AM: 'AM',\r\n      PM: 'PM'\r\n    },\r\n    VALIDATION_MESSAGE: {\r\n      NULL: 'Cron expression cannot be null',\r\n      SEGMENTS: 'Invalid cron expression, there must be {{n}} segments'\r\n    }\r\n  }\r\n};\r\n","\r\nexport const fa = {\r\n  CRON: {\r\n    TABS: {\r\n      MINUTES: 'دقیقه',\r\n      HOURLY: 'ساعت',\r\n      DAILY: 'روز',\r\n      WEEKLY: 'هفتگی',\r\n      MONTHLY: 'ماهیانه',\r\n      YEARLY: 'سالیانه',\r\n      ADVANCED: 'Advanced'\r\n    },\r\n    MINUTES: {\r\n      EVERY: 'هر',\r\n      MINUTES: 'minute(s)',\r\n      ON_SECOND: 'on second'\r\n    },\r\n    HOURLY: {\r\n      EVERY: 'هر',\r\n      HOURS: 'hour(s)',\r\n      ON_MINUTE: 'on minute',\r\n      ON_SECOND: 'and second'\r\n    },\r\n    DAILY: {\r\n      EVERY: 'هر',\r\n      DAYS: 'day(s) at',\r\n      WORKING_DAY: 'Every working day at'\r\n    },\r\n    WEEKLY: {\r\n      AT: 'at'\r\n    },\r\n    MONTHLY: {\r\n      ON: 'On the',\r\n      OF_EVERY: 'of every',\r\n      MONTHS: 'month(s)',\r\n      NEAREST_WEEKDAY: 'during the nearest weekday',\r\n      AT: 'at',\r\n      STARTING_IN: 'starting in'\r\n    },\r\n    YEARLY: {\r\n      EVERY: 'هر',\r\n      ON: 'on the',\r\n      AT: 'at',\r\n      OF: 'of',\r\n      NEAREST_WEEKDAY: 'during the nearest weekday'\r\n    },\r\n    ADVANCED: {\r\n      CRON: 'Cron Expression'\r\n    },\r\n    MONTH_DAY: {\r\n      LAST_DAY: 'روز آخر',\r\n      LAST_WEEKDAY: 'روز هفته گذشته',\r\n      FIRST_WEEKDAY: 'روز اول هفته',\r\n      DAY_N: 'Day {{n}}'\r\n    },\r\n    MONTH_WEEK: {\r\n      FIRST: 'اولین',\r\n      SECOND: 'دومین',\r\n      THIRD: 'سوم',\r\n      FOURTH: 'چهارم',\r\n      FIFTH: 'پنجم',\r\n      LAST: 'آخر'\r\n    },\r\n    MONTH: {\r\n      JANUARY: 'January',\r\n      FEBRUARY: 'February',\r\n      MARCH: 'March',\r\n      APRIL: 'April',\r\n      MAY: 'May',\r\n      JUNE: 'June',\r\n      JULY: 'July',\r\n      AUGUST: 'August',\r\n      SEPTEMBER: 'September',\r\n      OCTOBER: 'October',\r\n      NOVEMBER: 'November',\r\n      DECEMBER: 'December'\r\n    },\r\n    WEEK: {\r\n      MON: 'دوشنبه',\r\n      TUE: 'سه شنبه',\r\n      WED: 'چهارشنبه',\r\n      THU: 'پنج شنبه',\r\n      FRI: 'جمعه',\r\n      SAT: 'شنبه',\r\n      SUN: 'یکشنبه',\r\n    },\r\n    HOUR_TYPES: {\r\n      AM: 'صبح',\r\n      PM: 'عصر'\r\n    },\r\n    VALIDATION_MESSAGE: {\r\n      NULL: 'Cron expression cannot be null',\r\n      SEGMENTS: 'Invalid cron expression, there must be {{n}} segments'\r\n    }\r\n  }\r\n};\r\n","import {ru} from '../translations/ru';\r\nimport {en} from '../translations/en';\r\nimport {fa} from '../translations/fa';\r\nimport { Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Injectable()\r\nexport class TranslateUiService {\r\n    private availableLanguages = { en, ru,fa };\r\n\r\n    constructor(private translateService: TranslateService) {\r\n    }\r\n\r\n    public init(language: string = null): any {\r\n        if (language) {\r\n            //initialize one specific language\r\n            this.translateService.setTranslation(language, this.availableLanguages[language], true);\r\n        } else {\r\n            //initialize all\r\n            Object.keys(this.availableLanguages).forEach((language) => {\r\n                this.translateService.setTranslation(language, this.availableLanguages[language], true);\r\n            });\r\n        }\r\n    }\r\n}","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnChanges,\r\n  OnInit,\r\n  Output,\r\n  SimpleChanges,\r\n} from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { distinctUntilChanged } from \"rxjs\";\r\nimport { CronOptionModel, defaultCronOptions } from \"./models/cron-options-model\";\r\nimport { Days, Months, MonthWeeks } from \"./models/enums\";\r\nimport Utils from \"./poco/Utils\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { TranslateUiService } from \"./services/translateUi.service\";\r\n\r\n@Component({\r\n  selector: \"cron-editor\",\r\n  templateUrl: \"./cron-editor.component.html\",\r\n  styleUrls: [\"./cron-editor.component.css\"],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: CronEditorComponent,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class CronEditorComponent implements OnInit, OnChanges, ControlValueAccessor {\r\n\r\n  static nextId = 0;\r\n  id = ++CronEditorComponent.nextId;\r\n  \r\n  private _language = 'en';\r\n  @Input() set language(value: string) {\r\n    this._language = value;\r\n    this.translateUiService.init(value);\r\n    this.translate.use(this.language);\r\n\r\n  }\r\n\r\n  get language(): string {\r\n    return this._language;\r\n  }\r\n  @Input() public disabled: boolean;\r\n\r\n  // @Input({\r\n  //   transform: (value: CronOptionModel | null) => {\r\n  //     if (value) return value;\r\n\r\n  //     return defaultCronOptions;\r\n  //   },\r\n  // })\r\n  @Input()\r\n  public options: CronOptionModel = defaultCronOptions;\r\n\r\n  @Input() get cron(): string {\r\n    return this.localCron;\r\n  }\r\n  set cron(value: string) {\r\n    this.localCron = value;\r\n  }\r\n\r\n  // the name is an Angular convention, @Input variable name + \"Change\" suffix\r\n  @Output() cronChange = new EventEmitter();\r\n\r\n  public activeTab: string;\r\n  public selectOptions = this.getSelectOptions();\r\n  public state: any;\r\n\r\n  private localCron: string;\r\n  private isDirty: boolean;\r\n  constructor(\r\n    private translate: TranslateService,\r\n    private translateUiService: TranslateUiService,\r\n  ) {\r\n \r\n    \r\n  }\r\n  public ngOnInit() {\r\n \r\n    if (this.options.removeSeconds) {\r\n      this.options.hideSeconds = true;\r\n    }\r\n\r\n    this.state = this.getDefaultState();\r\n\r\n    this.handleModelChange(this.cron);\r\n  }\r\n\r\n  public ngOnChanges(changes: SimpleChanges) {\r\n    const newCron = changes[\"cron\"];\r\n    if (newCron && !newCron.firstChange) {\r\n      this.handleModelChange(this.cron);\r\n    }\r\n  }\r\n\r\n  writeValue(cronExpression: string): void {\r\n    this.handleModelChange(cronExpression);\r\n  }\r\n\r\n  registerOnChange(onChange: (cronExpression: string) => void): void {\r\n    this.cronChange.subscribe({\r\n      next: (cronExpression: string) => {\r\n        onChange(cronExpression);\r\n        this.validate(cronExpression);\r\n      },\r\n    });\r\n  }\r\n\r\n  registerOnTouched(onTouched: () => void): void {\r\n    this.cronChange.pipe(distinctUntilChanged()).subscribe(onTouched);\r\n  }\r\n\r\n  setDisabledState?(isDisabled: boolean): void {\r\n    this.disabled = isDisabled;\r\n  }\r\n\r\n  public setActiveTab(tab: string) {\r\n    if (!this.disabled) {\r\n      this.activeTab = tab;\r\n      this.regenerateCron();\r\n    }\r\n  }\r\n\r\n  public dayDisplay(day: string): string {\r\n    return Days[day];\r\n  }\r\n\r\n  public monthWeekDisplay(monthWeekNumber: number): string {\r\n    return MonthWeeks[monthWeekNumber];\r\n  }\r\n\r\n  public monthDisplay(month: number): string {\r\n    return Months[month];\r\n  }\r\n\r\n  public monthDayDisplay(month: string): string {\r\n    if (month === \"L\") {\r\n      return \"Last Day\";\r\n    } else if (month === \"LW\") {\r\n      return \"Last Weekday\";\r\n    } else if (month === \"1W\") {\r\n      return \"First Weekday\";\r\n    } else {\r\n      return `${month}${this.getOrdinalSuffix(month)} day`;\r\n    }\r\n  }\r\n\r\n  public regenerateCron() {\r\n    this.isDirty = true;\r\n\r\n    const oldCron = this.localCron;\r\n\r\n    switch (this.activeTab) {\r\n      case \"minutes\":\r\n        this.cron = `0/${this.state.minutes.minutes} * 1/1 * ?`;\r\n\r\n        if (!this.options.removeSeconds) {\r\n          this.cron = `${this.state.minutes.seconds} ${this.cron}`;\r\n        }\r\n\r\n        if (!this.options.removeYears) {\r\n          this.cron = `${this.cron} *`;\r\n        }\r\n        break;\r\n      case \"hourly\":\r\n        this.cron = `${this.state.hourly.minutes} 0/${this.state.hourly.hours} 1/1 * ?`;\r\n\r\n        if (!this.options.removeSeconds) {\r\n          this.cron = `${this.state.hourly.seconds} ${this.cron}`;\r\n        }\r\n\r\n        if (!this.options.removeYears) {\r\n          this.cron = `${this.cron} *`;\r\n        }\r\n        break;\r\n      case \"daily\":\r\n        switch (this.state.daily.subTab) {\r\n          case \"everyDays\":\r\n            // tslint:disable-next-line:max-line-length\r\n            this.cron = `${this.state.daily.everyDays.minutes\r\n              } ${this.hourToCron(\r\n                this.state.daily.everyDays.hours,\r\n                this.state.daily.everyDays.hourType\r\n              )} 1/${this.state.daily.everyDays.days} * ?`;\r\n\r\n            if (!this.options.removeSeconds) {\r\n              this.cron = `${this.state.daily.everyDays.seconds} ${this.cron}`;\r\n            }\r\n\r\n            if (!this.options.removeYears) {\r\n              this.cron = `${this.cron} *`;\r\n            }\r\n            break;\r\n          case \"everyWeekDay\":\r\n            // tslint:disable-next-line:max-line-length\r\n            this.cron = `${this.state.daily.everyWeekDay.minutes\r\n              } ${this.hourToCron(\r\n                this.state.daily.everyWeekDay.hours,\r\n                this.state.daily.everyWeekDay.hourType\r\n              )} ? * MON-FRI`;\r\n\r\n            if (!this.options.removeSeconds) {\r\n              this.cron = `${this.state.daily.everyWeekDay.seconds} ${this.cron}`;\r\n            }\r\n\r\n            if (!this.options.removeYears) {\r\n              this.cron = `${this.cron} *`;\r\n            }\r\n            break;\r\n          default:\r\n            throw new Error(\"Invalid cron daily subtab selection\");\r\n        }\r\n        break;\r\n      case \"weekly\":\r\n        const days = this.selectOptions.days\r\n          .reduce(\r\n            (acc, day) => (this.state.weekly[day] ? acc.concat([day]) : acc),\r\n            []\r\n          )\r\n          .join(\",\");\r\n        this.cron = `${this.state.weekly.minutes} ${this.hourToCron(\r\n          this.state.weekly.hours,\r\n          this.state.weekly.hourType\r\n        )} ? * ${days}`;\r\n\r\n        if (!this.options.removeSeconds) {\r\n          this.cron = `${this.state.weekly.seconds} ${this.cron}`;\r\n        }\r\n\r\n        if (!this.options.removeYears) {\r\n          this.cron = `${this.cron} *`;\r\n        }\r\n        break;\r\n      case \"monthly\":\r\n        switch (this.state.monthly.subTab) {\r\n          case \"specificDay\":\r\n            const day = this.state.monthly.runOnWeekday\r\n              ? `${this.state.monthly.specificDay.day}W`\r\n              : this.state.monthly.specificDay.day;\r\n            // tslint:disable-next-line:max-line-length\r\n            this.cron = `${this.state.monthly.specificDay.minutes\r\n              } ${this.hourToCron(\r\n                this.state.monthly.specificDay.hours,\r\n                this.state.monthly.specificDay.hourType\r\n              )} ${day} 1/${this.state.monthly.specificDay.months} ?`;\r\n\r\n            if (!this.options.removeSeconds) {\r\n              this.cron = `${this.state.monthly.specificDay.seconds} ${this.cron}`;\r\n            }\r\n\r\n            if (!this.options.removeYears) {\r\n              this.cron = `${this.cron} *`;\r\n            }\r\n            break;\r\n          case \"specificWeekDay\":\r\n            // tslint:disable-next-line:max-line-length\r\n            this.cron = `${this.state.monthly.specificWeekDay.minutes\r\n              } ${this.hourToCron(\r\n                this.state.monthly.specificWeekDay.hours,\r\n                this.state.monthly.specificWeekDay.hourType\r\n              )} ? ${this.state.monthly.specificWeekDay.startMonth}/${this.state.monthly.specificWeekDay.months\r\n              } ${this.state.monthly.specificWeekDay.day}${this.state.monthly.specificWeekDay.monthWeek\r\n              }`;\r\n\r\n            if (!this.options.removeSeconds) {\r\n              this.cron = `${this.state.monthly.specificWeekDay.seconds} ${this.cron}`;\r\n            }\r\n\r\n            if (!this.options.removeYears) {\r\n              this.cron = `${this.cron} *`;\r\n            }\r\n            break;\r\n          default:\r\n            throw new Error(\"Invalid cron monthly subtab selection\");\r\n        }\r\n        break;\r\n      case \"yearly\":\r\n        switch (this.state.yearly.subTab) {\r\n          case \"specificMonthDay\":\r\n            // tslint:disable-next-line:max-line-length\r\n            const day = this.state.yearly.runOnWeekday\r\n              ? `${this.state.yearly.specificMonthDay.day}W`\r\n              : this.state.yearly.specificMonthDay.day;\r\n            // tslint:disable-next-line:max-line-length\r\n            this.cron = `${this.state.yearly.specificMonthDay.minutes\r\n              } ${this.hourToCron(\r\n                this.state.yearly.specificMonthDay.hours,\r\n                this.state.yearly.specificMonthDay.hourType\r\n              )} ${day} ${this.state.yearly.specificMonthDay.month} ?`;\r\n\r\n            if (!this.options.removeSeconds) {\r\n              this.cron = `${this.state.yearly.specificMonthDay.seconds} ${this.cron}`;\r\n            }\r\n\r\n            if (!this.options.removeYears) {\r\n              this.cron = `${this.cron} *`;\r\n            }\r\n            break;\r\n          case \"specificMonthWeek\":\r\n            // tslint:disable-next-line:max-line-length\r\n            this.cron = `${this.state.yearly.specificMonthWeek.minutes\r\n              } ${this.hourToCron(\r\n                this.state.yearly.specificMonthWeek.hours,\r\n                this.state.yearly.specificMonthWeek.hourType\r\n              )} ? ${this.state.yearly.specificMonthWeek.month} ${this.state.yearly.specificMonthWeek.day\r\n              }${this.state.yearly.specificMonthWeek.monthWeek}`;\r\n\r\n            if (!this.options.removeSeconds) {\r\n              this.cron = `${this.state.yearly.specificMonthWeek.seconds} ${this.cron}`;\r\n            }\r\n\r\n            if (!this.options.removeYears) {\r\n              this.cron = `${this.cron} *`;\r\n            }\r\n            break;\r\n          default:\r\n            throw new Error(\"Invalid cron yearly subtab selection\");\r\n        }\r\n        break;\r\n      case \"advanced\":\r\n        this.cron = this.state.advanced.expression;\r\n        break;\r\n      default:\r\n        throw new Error(\"Invalid cron active tab selection\");\r\n    }\r\n\r\n    if (oldCron !== this.cron) {\r\n      this.cronChange.emit(this.cron);\r\n    }\r\n  }\r\n\r\n  private getAmPmHour(hour: number) {\r\n    return this.options.use24HourTime ? hour : ((hour + 11) % 12) + 1;\r\n  }\r\n\r\n  private getHourType(hour: number) {\r\n    return this.options.use24HourTime ? undefined : hour >= 12 ? \"PM\" : \"AM\";\r\n  }\r\n\r\n  private hourToCron(hour: number, hourType: string) {\r\n    if (this.options.use24HourTime) {\r\n      return hour;\r\n    } else {\r\n      return hourType === \"AM\"\r\n        ? hour === 12\r\n          ? 0\r\n          : hour\r\n        : hour === 12\r\n          ? 12\r\n          : hour + 12;\r\n    }\r\n  }\r\n\r\n  private handleModelChange(cron: string) {\r\n    if (this.isDirty) {\r\n      this.isDirty = false;\r\n      return;\r\n    } else {\r\n      this.isDirty = false;\r\n    }\r\n\r\n    this.validate(cron);\r\n\r\n    const oldValue = this.localCron;\r\n\r\n    let cronSeven = cron;\r\n    if (this.options.removeSeconds) {\r\n      cronSeven = `0 ${cron}`;\r\n    }\r\n\r\n    if (this.options.removeYears) {\r\n      cronSeven = `${cronSeven} *`;\r\n    }\r\n\r\n    const [seconds, minutes, hours, dayOfMonth, month, dayOfWeek] =\r\n      cronSeven.split(\" \");\r\n\r\n    if (cronSeven.match(/\\d+ 0\\/\\d+ \\* 1\\/1 \\* \\? \\*/)) {\r\n      this.activeTab = \"minutes\";\r\n\r\n      this.state.minutes.minutes = Number(minutes.substring(2));\r\n      this.state.minutes.seconds = Number(seconds);\r\n    } else if (cronSeven.match(/\\d+ \\d+ 0\\/\\d+ 1\\/1 \\* \\? \\*/)) {\r\n      this.activeTab = \"hourly\";\r\n\r\n      this.state.hourly.hours = Number(hours.substring(2));\r\n      this.state.hourly.minutes = Number(minutes);\r\n      this.state.hourly.seconds = Number(seconds);\r\n    } else if (cronSeven.match(/\\d+ \\d+ \\d+ 1\\/\\d+ \\* \\? \\*/)) {\r\n      this.activeTab = \"daily\";\r\n\r\n      this.state.daily.subTab = \"everyDays\";\r\n      this.state.daily.everyDays.days = Number(dayOfMonth.substring(2));\r\n      const parsedHours = Number(hours);\r\n      this.state.daily.everyDays.hours = this.getAmPmHour(parsedHours);\r\n      this.state.daily.everyDays.hourType = this.getHourType(parsedHours);\r\n      this.state.daily.everyDays.minutes = Number(minutes);\r\n      this.state.daily.everyDays.seconds = Number(seconds);\r\n    } else if (cronSeven.match(/\\d+ \\d+ \\d+ \\? \\* MON-FRI \\*/)) {\r\n      this.activeTab = \"daily\";\r\n\r\n      this.state.daily.subTab = \"everyWeekDay\";\r\n      const parsedHours = Number(hours);\r\n      this.state.daily.everyWeekDay.hours = this.getAmPmHour(parsedHours);\r\n      this.state.daily.everyWeekDay.hourType = this.getHourType(parsedHours);\r\n      this.state.daily.everyWeekDay.minutes = Number(minutes);\r\n      this.state.daily.everyWeekDay.seconds = Number(seconds);\r\n    } else if (\r\n      cronSeven.match(\r\n        /\\d+ \\d+ \\d+ \\? \\* (MON|TUE|WED|THU|FRI|SAT|SUN)(,(MON|TUE|WED|THU|FRI|SAT|SUN))* \\*/\r\n      )\r\n    ) {\r\n      this.activeTab = \"weekly\";\r\n      this.selectOptions.days.forEach(\r\n        (weekDay) => (this.state.weekly[weekDay] = false)\r\n      );\r\n      dayOfWeek\r\n        .split(\",\")\r\n        .forEach((weekDay) => (this.state.weekly[weekDay] = true));\r\n      const parsedHours = Number(hours);\r\n      this.state.weekly.hours = this.getAmPmHour(parsedHours);\r\n      this.state.weekly.hourType = this.getHourType(parsedHours);\r\n      this.state.weekly.minutes = Number(minutes);\r\n      this.state.weekly.seconds = Number(seconds);\r\n    } else if (cronSeven.match(/\\d+ \\d+ \\d+(L|LW|W)? 1\\/\\d+ \\?/)) {\r\n      this.activeTab = \"monthly\";\r\n      this.state.monthly.subTab = \"specificDay\";\r\n\r\n      const wIndex = dayOfMonth.indexOf(\"W\");\r\n      if (wIndex !== -1) {\r\n        this.state.monthly.specificDay.day = dayOfMonth.split(\"W\")[0];\r\n        this.state.monthly.runOnWeekday = true;\r\n      } else {\r\n        this.state.monthly.specificDay.day = dayOfMonth;\r\n        this.state.monthly.runOnWeekday = false;\r\n      }\r\n\r\n      this.state.monthly.specificDay.months = Number(month.substring(2));\r\n      const parsedHours = Number(hours);\r\n      this.state.monthly.specificDay.hours = this.getAmPmHour(parsedHours);\r\n      this.state.monthly.specificDay.hourType = this.getHourType(parsedHours);\r\n      this.state.monthly.specificDay.minutes = Number(minutes);\r\n      this.state.monthly.specificDay.seconds = Number(seconds);\r\n    } else if (\r\n      cronSeven.match(\r\n        /\\d+ \\d+ \\d+ \\? \\d+\\/\\d+ (MON|TUE|WED|THU|FRI|SAT|SUN)((#[1-5])|L) \\*/\r\n      )\r\n    ) {\r\n      const day = dayOfWeek.substr(0, 3);\r\n      const monthWeek = dayOfWeek.substr(3);\r\n      this.activeTab = \"monthly\";\r\n      this.state.monthly.subTab = \"specificWeekDay\";\r\n      this.state.monthly.specificWeekDay.monthWeek = monthWeek;\r\n      this.state.monthly.specificWeekDay.day = day;\r\n\r\n      if (month.indexOf(\"/\") !== -1) {\r\n        const [startMonth, months] = month.split(\"/\").map(Number);\r\n        this.state.monthly.specificWeekDay.months = months;\r\n        this.state.monthly.specificWeekDay.startMonth = startMonth;\r\n      }\r\n\r\n      const parsedHours = Number(hours);\r\n      this.state.monthly.specificWeekDay.hours = this.getAmPmHour(parsedHours);\r\n      this.state.monthly.specificWeekDay.hourType =\r\n        this.getHourType(parsedHours);\r\n      this.state.monthly.specificWeekDay.minutes = Number(minutes);\r\n      this.state.monthly.specificWeekDay.seconds = Number(seconds);\r\n    } else if (cronSeven.match(/\\d+ \\d+ \\d+ (\\d+|L|LW|1W) \\d+ \\? \\*/)) {\r\n      this.activeTab = \"yearly\";\r\n      this.state.yearly.subTab = \"specificMonthDay\";\r\n      this.state.yearly.specificMonthDay.month = Number(month);\r\n\r\n      if (dayOfMonth.indexOf(\"W\") !== -1) {\r\n        this.state.yearly.specificMonthDay.day = dayOfMonth.charAt(0);\r\n        this.state.yearly.runOnWeekday = true;\r\n      } else {\r\n        this.state.yearly.specificMonthDay.day = dayOfMonth;\r\n      }\r\n\r\n      const parsedHours = Number(hours);\r\n      this.state.yearly.specificMonthDay.hours = this.getAmPmHour(parsedHours);\r\n      this.state.yearly.specificMonthDay.hourType =\r\n        this.getHourType(parsedHours);\r\n      this.state.yearly.specificMonthDay.minutes = Number(minutes);\r\n      this.state.yearly.specificMonthDay.seconds = Number(seconds);\r\n    } else if (\r\n      cronSeven.match(\r\n        /\\d+ \\d+ \\d+ \\? \\d+ (MON|TUE|WED|THU|FRI|SAT|SUN)((#[1-5])|L) \\*/\r\n      )\r\n    ) {\r\n      const day = dayOfWeek.substr(0, 3);\r\n      const monthWeek = dayOfWeek.substr(3);\r\n      this.activeTab = \"yearly\";\r\n      this.state.yearly.subTab = \"specificMonthWeek\";\r\n      this.state.yearly.specificMonthWeek.monthWeek = monthWeek;\r\n      this.state.yearly.specificMonthWeek.day = day;\r\n      this.state.yearly.specificMonthWeek.month = Number(month);\r\n      const parsedHours = Number(hours);\r\n      this.state.yearly.specificMonthWeek.hours = this.getAmPmHour(parsedHours);\r\n      this.state.yearly.specificMonthWeek.hourType =\r\n        this.getHourType(parsedHours);\r\n      this.state.yearly.specificMonthWeek.minutes = Number(minutes);\r\n      this.state.yearly.specificMonthWeek.seconds = Number(seconds);\r\n    } else {\r\n      this.activeTab = \"advanced\";\r\n      this.state.advanced.expression = cron;\r\n    }\r\n\r\n    if (oldValue !== this.cron) {\r\n      this.cronChange.emit(this.cron);\r\n    }\r\n  }\r\n\r\n  private validate(cron: string): void {\r\n    this.state.validation.isValid = false;\r\n    this.state.validation.errorMessage = \"\";\r\n\r\n    if (!cron) {\r\n      this.state.validation.errorMessage = \"Cron expression cannot be null\";\r\n      return;\r\n    }\r\n\r\n    const cronParts = cron.split(\" \");\r\n\r\n    let expected = 5;\r\n\r\n    if (!this.options.removeSeconds) {\r\n      expected++;\r\n    }\r\n\r\n    if (!this.options.removeYears) {\r\n      expected++;\r\n    }\r\n\r\n    if (cronParts.length !== expected) {\r\n      this.state.validation.errorMessage = `Invalid cron expression, there must be ${expected} segments`;\r\n      return;\r\n    }\r\n\r\n    this.state.validation.isValid = true;\r\n    return;\r\n  }\r\n\r\n  private getDefaultAdvancedCronExpression(): string {\r\n    if (this.options.removeSeconds && !this.options.removeYears) {\r\n      return \"15 10 L-2 * ? 2019\";\r\n    }\r\n\r\n    if (!this.options.removeSeconds && this.options.removeYears) {\r\n      return \"0 15 10 L-2 * ?\";\r\n    }\r\n\r\n    if (this.options.removeSeconds && this.options.removeYears) {\r\n      return \"15 10 L-2 * ?\";\r\n    }\r\n\r\n    return \"0 15 10 L-2 * ? 2019\";\r\n  }\r\n\r\n  private getDefaultState() {\r\n    const [defaultHours, defaultMinutes, defaultSeconds] =\r\n      this.options.defaultTime.split(\":\").map(Number);\r\n\r\n    return {\r\n      minutes: {\r\n        minutes: 1,\r\n        seconds: 0,\r\n      },\r\n      hourly: {\r\n        hours: 1,\r\n        minutes: 0,\r\n        seconds: 0,\r\n      },\r\n      daily: {\r\n        subTab: \"everyDays\",\r\n        everyDays: {\r\n          days: 1,\r\n          hours: this.getAmPmHour(defaultHours),\r\n          minutes: defaultMinutes,\r\n          seconds: defaultSeconds,\r\n          hourType: this.getHourType(defaultHours),\r\n        },\r\n        everyWeekDay: {\r\n          hours: this.getAmPmHour(defaultHours),\r\n          minutes: defaultMinutes,\r\n          seconds: defaultSeconds,\r\n          hourType: this.getHourType(defaultHours),\r\n        },\r\n      },\r\n      weekly: {\r\n        MON: true,\r\n        TUE: false,\r\n        WED: false,\r\n        THU: false,\r\n        FRI: false,\r\n        SAT: false,\r\n        SUN: false,\r\n        hours: this.getAmPmHour(defaultHours),\r\n        minutes: defaultMinutes,\r\n        seconds: defaultSeconds,\r\n        hourType: this.getHourType(defaultHours),\r\n      },\r\n      monthly: {\r\n        subTab: \"specificDay\",\r\n        runOnWeekday: false,\r\n        specificDay: {\r\n          day: \"1\",\r\n          months: 1,\r\n          hours: this.getAmPmHour(defaultHours),\r\n          minutes: defaultMinutes,\r\n          seconds: defaultSeconds,\r\n          hourType: this.getHourType(defaultHours),\r\n        },\r\n        specificWeekDay: {\r\n          monthWeek: \"#1\",\r\n          day: \"MON\",\r\n          startMonth: 1,\r\n          months: 1,\r\n          hours: this.getAmPmHour(defaultHours),\r\n          minutes: defaultMinutes,\r\n          seconds: defaultSeconds,\r\n          hourType: this.getHourType(defaultHours),\r\n        },\r\n      },\r\n      yearly: {\r\n        subTab: \"specificMonthDay\",\r\n        runOnWeekday: false,\r\n        specificMonthDay: {\r\n          month: 1,\r\n          day: \"1\",\r\n          hours: this.getAmPmHour(defaultHours),\r\n          minutes: defaultMinutes,\r\n          seconds: defaultSeconds,\r\n          hourType: this.getHourType(defaultHours),\r\n        },\r\n        specificMonthWeek: {\r\n          monthWeek: \"#1\",\r\n          day: \"MON\",\r\n          month: 1,\r\n          hours: this.getAmPmHour(defaultHours),\r\n          minutes: defaultMinutes,\r\n          seconds: defaultSeconds,\r\n          hourType: this.getHourType(defaultHours),\r\n        },\r\n      },\r\n      advanced: {\r\n        expression: this.getDefaultAdvancedCronExpression(),\r\n      },\r\n      validation: {\r\n        isValid: true,\r\n        errorMessage: \"\",\r\n      },\r\n    };\r\n  }\r\n\r\n  private getOrdinalSuffix(value: string) {\r\n    if (value.length > 1) {\r\n      const secondToLastDigit = value.charAt(value.length - 2);\r\n      if (secondToLastDigit === \"1\") {\r\n        return \"th\";\r\n      }\r\n    }\r\n\r\n    const lastDigit = value.charAt(value.length - 1);\r\n    switch (lastDigit) {\r\n      case \"1\":\r\n        return \"st\";\r\n      case \"2\":\r\n        return \"nd\";\r\n      case \"3\":\r\n        return \"rd\";\r\n      default:\r\n        return \"th\";\r\n    }\r\n  }\r\n\r\n  private getSelectOptions() {\r\n    return {\r\n      months: Utils.getRange(1, 12),\r\n      monthWeeks: [\"#1\", \"#2\", \"#3\", \"#4\", \"#5\", \"L\"],\r\n      days: [\"MON\", \"TUE\", \"WED\", \"THU\", \"FRI\", \"SAT\", \"SUN\"],\r\n      minutes: Utils.getRange(0, 59),\r\n      fullMinutes: Utils.getRange(0, 59),\r\n      seconds: Utils.getRange(0, 59),\r\n      hours: Utils.getRange(1, 23),\r\n      monthDays: Utils.getRange(1, 31),\r\n      monthDaysWithLasts: [...Utils.getRange(1, 31).map(String), \"L\"],\r\n      hourTypes: [\"AM\", \"PM\"],\r\n    };\r\n  }\r\n}\r\n","<!-- Tabs -->\r\n<ul class=\"nav nav-tabs\" role=\"tablist\">\r\n  <li class=\"nav-item\" *ngIf=\"!options.hideMinutesTab\">\r\n    <a class=\"nav-link\" [ngClass]=\"{ active: activeTab === 'minutes' }\" aria-controls=\"minutes\" role=\"tab\"\r\n      data-bs-toggle=\"tab\" (click)=\"setActiveTab('minutes')\">\r\n      {{'CRON.TABS.MINUTES'|translate}}\r\n    </a>\r\n  </li>\r\n\r\n  <li class=\"nav-item\" *ngIf=\"!options.hideHourlyTab\">\r\n    <a class=\"nav-link\" [ngClass]=\"{ active: activeTab === 'hourly' }\" aria-controls=\"hourly\" role=\"tab\"\r\n      data-bs-toggle=\"tab\" (click)=\"setActiveTab('hourly')\">\r\n      {{'CRON.TABS.HOURLY'|translate}}\r\n    </a>\r\n  </li>\r\n\r\n  <li class=\"nav-item\" *ngIf=\"!options.hideDailyTab\">\r\n    <a class=\"nav-link\" [ngClass]=\"{ active: activeTab === 'daily' }\" aria-controls=\"daily\" role=\"tab\"\r\n      data-bs-toggle=\"tab\" (click)=\"setActiveTab('daily')\">\r\n      {{'CRON.TABS.DAILY'|translate}}\r\n    </a>\r\n  </li>\r\n\r\n  <li class=\"nav-item\" *ngIf=\"!options.hideWeeklyTab\">\r\n    <a class=\"nav-link\" [ngClass]=\"{ active: activeTab === 'weekly' }\" aria-controls=\"weekly\" role=\"tab\"\r\n      data-bs-toggle=\"tab\" (click)=\"setActiveTab('weekly')\">\r\n      {{'CRON.TABS.WEEKLY'|translate}}\r\n    </a>\r\n  </li>\r\n\r\n  <li class=\"nav-item\" *ngIf=\"!options.hideMonthlyTab\">\r\n    <a class=\"nav-link\" [ngClass]=\"{ active: activeTab === 'monthly' }\" aria-controls=\"monthly\" role=\"tab\"\r\n      data-bs-toggle=\"tab\" (click)=\"setActiveTab('monthly')\">\r\n      {{'CRON.TABS.MONTHLY'|translate}}\r\n    </a>\r\n  </li>\r\n\r\n  <li class=\"nav-item\" *ngIf=\"!options.hideYearlyTab\">\r\n    <a class=\"nav-link\" [ngClass]=\"{ active: activeTab === 'yearly' }\" aria-controls=\"yearly\" role=\"tab\"\r\n      data-bs-toggle=\"tab\" (click)=\"setActiveTab('yearly')\">\r\n      {{'CRON.TABS.YEARLY'|translate}}\r\n    </a>\r\n  </li>\r\n\r\n  <li class=\"nav-item\" *ngIf=\"!options.hideAdvancedTab\">\r\n    <a class=\"nav-link\" [ngClass]=\"{ active: activeTab === 'advanced' }\" aria-controls=\"advanced\" role=\"tab\"\r\n      data-bs-toggle=\"tab\" (click)=\"setActiveTab('advanced')\">\r\n      {{'CRON.TABS.ADVANCED'|translate}}\r\n    </a>\r\n  </li>\r\n</ul>\r\n\r\n<!-- Tab content -->\r\n<div class=\"cron-editor-container\">\r\n  <div class=\"row\">\r\n    <div class=\"col-12\">\r\n      <div class=\"tab-content\">\r\n        <!-- Minutes-->\r\n        <div class=\"tab-pane\" *ngIf=\"!options.hideMinutesTab\" [ngClass]=\"{ active: activeTab === 'minutes' }\">\r\n          <div class=\"card card-body bg-light\">\r\n            {{'CRON.MINUTES.EVERY'|translate}}\r\n            <select class=\"minutes\" [disabled]=\"disabled || activeTab !== 'minutes'\" (change)=\"regenerateCron()\"\r\n              [(ngModel)]=\"state.minutes.minutes\" [ngClass]=\"options.formSelectClass\">\r\n              <option *ngFor=\"let minute of selectOptions.minutes\" [ngValue]=\"minute\">\r\n                {{ minute | number:'2.0' }}\r\n              </option>\r\n            </select>\r\n            {{'CRON.MINUTES.MINUTES'|translate}}\r\n            <span *ngIf=\"!options.hideSeconds\">{{'CRON.MINUTES.ON_SECOND'|translate}}</span>\r\n            <select class=\"seconds\" *ngIf=\"!options.hideSeconds\" [disabled]=\"disabled || activeTab !== 'minutes'\"\r\n              (change)=\"regenerateCron()\" [(ngModel)]=\"state.minutes.seconds\" [ngClass]=\"options.formSelectClass\">\r\n              <option *ngFor=\"let second of selectOptions.seconds\" [ngValue]=\"second\">\r\n                {{ second | number:'2.0' }}\r\n              </option>\r\n            </select>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- Hourly-->\r\n        <div class=\"tab-pane\" *ngIf=\"!options.hideHourlyTab\" [ngClass]=\"{ active: activeTab === 'hourly' }\">\r\n          <div class=\"card card-body bg-light\">\r\n            {{'CRON.HOURLY.EVERY'|translate}}\r\n            <select class=\"hours\" [disabled]=\"disabled || activeTab !== 'hourly'\" (change)=\"regenerateCron()\"\r\n              [(ngModel)]=\"state.hourly.hours\" [ngClass]=\"options.formSelectClass\">\r\n              <option *ngFor=\"let hour of selectOptions.hours\" [ngValue]=\"hour\">\r\n                {{ hour }}\r\n              </option>\r\n            </select>\r\n            {{'CRON.HOURLY.HOURS'|translate}}\r\n            {{'CRON.HOURLY.ON_MINUTE'|translate}}\r\n            <select class=\"minutes\" [disabled]=\"disabled || activeTab !== 'hourly'\" (change)=\"regenerateCron()\"\r\n              [(ngModel)]=\"state.hourly.minutes\" [ngClass]=\"options.formSelectClass\">\r\n              <option *ngFor=\"let minute of selectOptions.fullMinutes\" [ngValue]=\"minute\">\r\n                {{ minute | number:'2.0' }}\r\n              </option>\r\n            </select>\r\n            <span *ngIf=\"!options.hideSeconds\">and second</span>\r\n            <select class=\"seconds\" *ngIf=\"!options.hideSeconds\" [disabled]=\"disabled || activeTab !== 'hourly'\"\r\n              (change)=\"regenerateCron()\" [(ngModel)]=\"state.hourly.seconds\" [ngClass]=\"options.formSelectClass\">\r\n              <option *ngFor=\"let second of selectOptions.seconds\" [ngValue]=\"second\">\r\n                {{ second }}\r\n              </option>\r\n            </select>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- Daily-->\r\n        <div class=\"tab-pane\" *ngIf=\"!options.hideDailyTab\" [ngClass]=\"{ active: activeTab === 'daily' }\">\r\n          <div class=\"card card-body bg-light\">\r\n            <input type=\"radio\" name=\"daily-radio\" value=\"everyDays\" [disabled]=\"disabled\" (change)=\"regenerateCron()\"\r\n              [(ngModel)]=\"state.daily.subTab\" [ngClass]=\"state.formRadioClass\" checked=\"checked\" />\r\n            {{'CRON.DAILY.EVERY'|translate}}\r\n            <select class=\"days\" [disabled]=\"\r\n                disabled ||\r\n                activeTab !== 'daily' ||\r\n                state.daily.subTab !== 'everyDays'\r\n              \" (change)=\"regenerateCron()\" [(ngModel)]=\"state.daily.everyDays.days\"\r\n              [ngClass]=\"options.formSelectClass\">\r\n              <option *ngFor=\"let monthDay of selectOptions.monthDays\" [ngValue]=\"monthDay\">\r\n                {{ monthDay }}\r\n              </option>\r\n            </select>\r\n            {{'CRON.DAILY.DAYS'|translate}}\r\n            <cron-time-picker [disabled]=\"\r\n                disabled ||\r\n                activeTab !== 'daily' ||\r\n                state.daily.subTab !== 'everyDays'\r\n              \" (change)=\"regenerateCron()\" [(time)]=\"state.daily.everyDays\" [selectClass]=\"options.formSelectClass\"\r\n              [use24HourTime]=\"options.use24HourTime\" [hideSeconds]=\"options.hideSeconds\">\r\n            </cron-time-picker>\r\n          </div>\r\n\r\n          <div class=\"card card-body bg-light\">\r\n            <input type=\"radio\" name=\"daily-radio\" value=\"everyWeekDay\" [disabled]=\"disabled\"\r\n              (change)=\"regenerateCron()\" [(ngModel)]=\"state.daily.subTab\" [ngClass]=\"state.formRadioClass\" />\r\n            {{'CRON.DAILY.WORKING_DAY'|translate}}\r\n            <cron-time-picker [disabled]=\"\r\n                disabled ||\r\n                activeTab !== 'daily' ||\r\n                state.daily.subTab !== 'everyWeekDay'\r\n              \" (change)=\"regenerateCron()\" [(time)]=\"state.daily.everyWeekDay\" [selectClass]=\"options.formSelectClass\"\r\n              [use24HourTime]=\"options.use24HourTime\" [hideSeconds]=\"options.hideSeconds\">\r\n            </cron-time-picker>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- Weekly-->\r\n        <div class=\"tab-pane\" *ngIf=\"!options.hideWeeklyTab\" [ngClass]=\"{ active: activeTab === 'weekly' }\">\r\n          <div class=\"card card-body bg-light\">\r\n            <div class=\"row\">\r\n              <div class=\"col-sm-6\">\r\n                <label class=\"advanced-cron-editor-label\"><input type=\"checkbox\"\r\n                    [disabled]=\"disabled || activeTab !== 'weekly'\" (change)=\"regenerateCron()\"\r\n                    [(ngModel)]=\"state.weekly.MON\" [ngClass]=\"options.formCheckboxClass\" />\r\n                    {{'CRON.WEEK.MON'|translate}}</label>\r\n              </div>\r\n              <div class=\"col-sm-6\">\r\n                <label class=\"advanced-cron-editor-label\"><input type=\"checkbox\"\r\n                    [disabled]=\"disabled || activeTab !== 'weekly'\" (change)=\"regenerateCron()\"\r\n                    [(ngModel)]=\"state.weekly.TUE\" [ngClass]=\"options.formCheckboxClass\" />\r\n                    {{'CRON.WEEK.TUE'|translate}}</label>\r\n              </div>\r\n              <div class=\"col-sm-6\">\r\n                <label class=\"advanced-cron-editor-label\"><input type=\"checkbox\"\r\n                    [disabled]=\"disabled || activeTab !== 'weekly'\" (change)=\"regenerateCron()\"\r\n                    [(ngModel)]=\"state.weekly.WED\" [ngClass]=\"options.formCheckboxClass\" />\r\n                    {{'CRON.WEEK.WED'|translate}}</label>\r\n              </div>\r\n              <div class=\"col-sm-6\">\r\n                <label class=\"advanced-cron-editor-label\"><input type=\"checkbox\"\r\n                    [disabled]=\"disabled || activeTab !== 'weekly'\" (change)=\"regenerateCron()\"\r\n                    [(ngModel)]=\"state.weekly.THU\" [ngClass]=\"options.formCheckboxClass\" />\r\n                    {{'CRON.WEEK.THU'|translate}}</label>\r\n              </div>\r\n              <div class=\"col-sm-6\">\r\n                <label class=\"advanced-cron-editor-label\"><input type=\"checkbox\"\r\n                    [disabled]=\"disabled || activeTab !== 'weekly'\" (change)=\"regenerateCron()\"\r\n                    [(ngModel)]=\"state.weekly.FRI\" [ngClass]=\"options.formCheckboxClass\" />\r\n                    {{'CRON.WEEK.FRI'|translate}}</label>\r\n              </div>\r\n              <div class=\"col-sm-6\">\r\n                <label class=\"advanced-cron-editor-label\"><input type=\"checkbox\"\r\n                    [disabled]=\"disabled || activeTab !== 'weekly'\" (change)=\"regenerateCron()\"\r\n                    [(ngModel)]=\"state.weekly.SAT\" [ngClass]=\"options.formCheckboxClass\" />\r\n                    {{'CRON.WEEK.SAT'|translate}}</label>\r\n              </div>\r\n              <div class=\"col-sm-6\">\r\n                <label class=\"advanced-cron-editor-label\"><input type=\"checkbox\"\r\n                    [disabled]=\"disabled || activeTab !== 'weekly'\" (change)=\"regenerateCron()\"\r\n                    [(ngModel)]=\"state.weekly.SUN\" [ngClass]=\"options.formCheckboxClass\" />\r\n                    {{'CRON.WEEK.SUN'|translate}}</label>\r\n              </div>\r\n            </div>\r\n            <div class=\"row\">\r\n              <div class=\"col-sm-6\">\r\n                {{'CRON.WEEKLY.AT'|translate}}\r\n                <cron-time-picker [disabled]=\"disabled || activeTab !== 'weekly'\" (change)=\"regenerateCron()\"\r\n                  [(time)]=\"state.weekly\" [selectClass]=\"options.formSelectClass\"\r\n                  [use24HourTime]=\"options.use24HourTime\" [hideSeconds]=\"options.hideSeconds\">\r\n                </cron-time-picker>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- Monthly-->\r\n        <div class=\"tab-pane\" *ngIf=\"!options.hideMonthlyTab\" [ngClass]=\"{ active: activeTab === 'monthly' }\">\r\n          <div class=\"card card-body bg-light\">\r\n            <input type=\"radio\" name=\"monthly-radio\" value=\"specificDay\" [disabled]=\"disabled\"\r\n              (change)=\"regenerateCron()\" [(ngModel)]=\"state.monthly.subTab\" [ngClass]=\"state.formRadioClass\" />\r\n            On the\r\n            <select class=\"month-days\" [disabled]=\"\r\n                disabled ||\r\n                activeTab !== 'monthly' ||\r\n                state.monthly.subTab !== 'specificDay'\r\n              \" (change)=\"regenerateCron()\" [(ngModel)]=\"state.monthly.specificDay.day\"\r\n              [ngClass]=\"options.formSelectClass\">\r\n              <option *ngFor=\"\r\n                  let monthDaysWithLast of selectOptions.monthDaysWithLasts\r\n                \" [ngValue]=\"monthDaysWithLast\">\r\n                {{ monthDayDisplay(monthDaysWithLast) }}\r\n              </option>\r\n            </select>\r\n            of every\r\n            <select class=\"months-small\" [disabled]=\"\r\n                disabled ||\r\n                activeTab !== 'monthly' ||\r\n                state.monthly.subTab !== 'specificDay'\r\n              \" (change)=\"regenerateCron()\" [(ngModel)]=\"state.monthly.specificDay.months\"\r\n              [ngClass]=\"options.formSelectClass\">\r\n              <option *ngFor=\"let month of selectOptions.months\" [ngValue]=\"month\">\r\n                {{ month }}\r\n              </option>\r\n            </select>\r\n            month(s) at\r\n            <cron-time-picker [disabled]=\"\r\n                disabled ||\r\n                activeTab !== 'monthly' ||\r\n                state.monthly.subTab !== 'specificDay'\r\n              \" (change)=\"regenerateCron()\" [(time)]=\"state.monthly.specificDay\"\r\n              [selectClass]=\"options.formSelectClass\" [use24HourTime]=\"options.use24HourTime\"\r\n              [hideSeconds]=\"options.hideSeconds\">\r\n            </cron-time-picker>&nbsp;\r\n            <label class=\"advanced-cron-editor-label\"><input type=\"checkbox\" [disabled]=\"\r\n                  disabled ||\r\n                  activeTab !== 'monthly' ||\r\n                  state.monthly.subTab !== 'specificDay'\r\n                \" (change)=\"regenerateCron()\" [(ngModel)]=\"state.monthly.runOnWeekday\"\r\n                [ngClass]=\"options.formCheckboxClass\" />\r\n              during the nearest weekday</label>\r\n          </div>\r\n          <div class=\"card card-body bg-light\">\r\n            <input type=\"radio\" name=\"monthly-radio\" value=\"specificWeekDay\" [disabled]=\"disabled\"\r\n              (change)=\"regenerateCron()\" [(ngModel)]=\"state.monthly.subTab\" [ngClass]=\"state.formRadioClass\" />\r\n            On the\r\n            <select class=\"day-order-in-month\" [disabled]=\"\r\n                disabled ||\r\n                activeTab !== 'monthly' ||\r\n                state.monthly.subTab !== 'specificWeekDay'\r\n              \" (change)=\"regenerateCron()\" [(ngModel)]=\"state.monthly.specificWeekDay.monthWeek\"\r\n              [ngClass]=\"options.formSelectClass\">\r\n              <option *ngFor=\"let monthWeek of selectOptions.monthWeeks\" [ngValue]=\"monthWeek\">\r\n                {{ monthWeekDisplay(monthWeek) }}\r\n              </option>\r\n            </select>\r\n            <select class=\"week-days\" [disabled]=\"\r\n                disabled ||\r\n                activeTab !== 'monthly' ||\r\n                state.monthly.subTab !== 'specificWeekDay'\r\n              \" (change)=\"regenerateCron()\" [(ngModel)]=\"state.monthly.specificWeekDay.day\"\r\n              [ngClass]=\"options.formSelectClass\">\r\n              <option *ngFor=\"let day of selectOptions.days\" [ngValue]=\"day\">\r\n                {{ dayDisplay(day) }}\r\n              </option>\r\n            </select>\r\n            of every\r\n            <select class=\"months-small\" [disabled]=\"\r\n                disabled ||\r\n                activeTab !== 'monthly' ||\r\n                state.monthly.subTab !== 'specificWeekDay'\r\n              \" (change)=\"regenerateCron()\" [(ngModel)]=\"state.monthly.specificWeekDay.months\"\r\n              [ngClass]=\"options.formSelectClass\">\r\n              <option *ngFor=\"let month of selectOptions.months\" [ngValue]=\"month\">\r\n                {{ month }}\r\n              </option>\r\n            </select>\r\n            month(s) starting in\r\n            <select class=\"months\" [disabled]=\"\r\n                disabled ||\r\n                activeTab !== 'monthly' ||\r\n                state.monthly.subTab !== 'specificWeekDay'\r\n              \" (change)=\"regenerateCron()\" [(ngModel)]=\"state.monthly.specificWeekDay.startMonth\"\r\n              [ngClass]=\"options.formSelectClass\">\r\n              <option *ngFor=\"let month of selectOptions.months\" [ngValue]=\"month\">\r\n                {{ monthDisplay(month) }}\r\n              </option>\r\n            </select>\r\n\r\n            at\r\n            <cron-time-picker [disabled]=\"\r\n                disabled ||\r\n                activeTab !== 'monthly' ||\r\n                state.monthly.subTab !== 'specificWeekDay'\r\n              \" (change)=\"regenerateCron()\" [(time)]=\"state.monthly.specificWeekDay\"\r\n              [selectClass]=\"options.formSelectClass\" [use24HourTime]=\"options.use24HourTime\"\r\n              [hideSeconds]=\"options.hideSeconds\">\r\n            </cron-time-picker>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- Yearly-->\r\n        <div class=\"tab-pane\" *ngIf=\"!options.hideYearlyTab\" [ngClass]=\"{ active: activeTab === 'yearly' }\">\r\n          <div class=\"card card-body bg-light\">\r\n            <input type=\"radio\" name=\"yearly-radio\" value=\"specificMonthDay\" [disabled]=\"disabled\"\r\n              (change)=\"regenerateCron()\" [(ngModel)]=\"state.yearly.subTab\" [ngClass]=\"state.formRadioClass\" />\r\n            Every\r\n            <select class=\"months\" [disabled]=\"\r\n                disabled ||\r\n                activeTab !== 'yearly' ||\r\n                state.yearly.subTab !== 'specificMonthDay'\r\n              \" (change)=\"regenerateCron()\" [(ngModel)]=\"state.yearly.specificMonthDay.month\"\r\n              [ngClass]=\"options.formSelectClass\">\r\n              <option *ngFor=\"let month of selectOptions.months\" [ngValue]=\"month\">\r\n                {{ monthDisplay(month) }}\r\n              </option>\r\n            </select>\r\n            on the\r\n            <select class=\"month-days\" [disabled]=\"\r\n                disabled ||\r\n                activeTab !== 'yearly' ||\r\n                state.yearly.subTab !== 'specificMonthDay'\r\n              \" (change)=\"regenerateCron()\" [(ngModel)]=\"state.yearly.specificMonthDay.day\"\r\n              [ngClass]=\"options.formSelectClass\">\r\n              <option *ngFor=\"\r\n                  let monthDaysWithLast of selectOptions.monthDaysWithLasts\r\n                \" [ngValue]=\"monthDaysWithLast\">\r\n                {{ monthDayDisplay(monthDaysWithLast) }}\r\n              </option>\r\n            </select>\r\n            at\r\n            <cron-time-picker [disabled]=\"\r\n                disabled ||\r\n                activeTab !== 'yearly' ||\r\n                state.yearly.subTab !== 'specificMonthDay'\r\n              \" (change)=\"regenerateCron()\" [(time)]=\"state.yearly.specificMonthDay\"\r\n              [selectClass]=\"options.formSelectClass\" [use24HourTime]=\"options.use24HourTime\"\r\n              [hideSeconds]=\"options.hideSeconds\">\r\n            </cron-time-picker>&nbsp;\r\n            <label class=\"advanced-cron-editor-label\"><input type=\"checkbox\" (change)=\"regenerateCron()\"\r\n                [(ngModel)]=\"state.yearly.runOnWeekday\" [ngClass]=\"options.formCheckboxClass\" />\r\n              during the nearest weekday</label>\r\n          </div>\r\n          <div class=\"card card-body bg-light\">\r\n            <input type=\"radio\" name=\"yearly-radio\" value=\"specificMonthWeek\" [disabled]=\"disabled\"\r\n              (change)=\"regenerateCron()\" [(ngModel)]=\"state.yearly.subTab\" [ngClass]=\"state.formRadioClass\" />\r\n            On the\r\n            <select class=\"day-order-in-month\" [disabled]=\"\r\n                disabled ||\r\n                activeTab !== 'yearly' ||\r\n                state.yearly.subTab !== 'specificMonthWeek'\r\n              \" (change)=\"regenerateCron()\" [(ngModel)]=\"state.yearly.specificMonthWeek.monthWeek\"\r\n              [ngClass]=\"options.formSelectClass\">\r\n              <option *ngFor=\"let monthWeek of selectOptions.monthWeeks\" [ngValue]=\"monthWeek\">\r\n                {{ monthWeekDisplay(monthWeek) }}\r\n              </option>\r\n            </select>\r\n            <select class=\"week-days\" [disabled]=\"\r\n                disabled ||\r\n                activeTab !== 'yearly' ||\r\n                state.yearly.subTab !== 'specificMonthWeek'\r\n              \" (change)=\"regenerateCron()\" [(ngModel)]=\"state.yearly.specificMonthWeek.day\"\r\n              [ngClass]=\"options.formSelectClass\">\r\n              <option *ngFor=\"let day of selectOptions.days\" [ngValue]=\"day\">\r\n                {{ dayDisplay(day) }}\r\n              </option>\r\n            </select>\r\n            of\r\n            <select class=\"months\" [disabled]=\"\r\n                disabled ||\r\n                activeTab !== 'yearly' ||\r\n                state.yearly.subTab !== 'specificMonthWeek'\r\n              \" (change)=\"regenerateCron()\" [(ngModel)]=\"state.yearly.specificMonthWeek.month\"\r\n              [ngClass]=\"options.formSelectClass\">\r\n              <option *ngFor=\"let month of selectOptions.months\" [ngValue]=\"month\">\r\n                {{ monthDisplay(month) }}\r\n              </option>\r\n            </select>\r\n            at\r\n            <cron-time-picker [disabled]=\"\r\n                disabled ||\r\n                activeTab !== 'yearly' ||\r\n                state.yearly.subTab !== 'specificMonthWeek'\r\n              \" (change)=\"regenerateCron()\" [(time)]=\"state.yearly.specificMonthWeek\"\r\n              [selectClass]=\"options.formSelectClass\" [use24HourTime]=\"options.use24HourTime\"\r\n              [hideSeconds]=\"options.hideSeconds\">\r\n            </cron-time-picker>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- Advanced-->\r\n        <div class=\"tab-pane\" *ngIf=\"!options.hideAdvancedTab\" [ngClass]=\"{ active: activeTab === 'advanced' }\">\r\n          Cron Expression\r\n          <input type=\"text\" class=\"advanced-cron-editor-input\" [disabled]=\"disabled || activeTab !== 'advanced'\"\r\n            (change)=\"regenerateCron()\" [(ngModel)]=\"state.advanced.expression\" [ngClass]=\"options.formInputClass\" />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <div class=\"row\" *ngIf=\"!state.validation.isValid\">\r\n    <code>{{ state.validation.errorMessage }}</code>\r\n  </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport {  TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { CronEditorComponent } from './cron-editor.component';\r\nimport { TimePickerComponent } from './time-picker/time-picker.component';\r\nimport { TranslateUiService } from './services/translateUi.service';\r\n\r\n// Required for AOT compilation\r\n// export function TranslateHttpLoaderFactory(http: HttpClient) {\r\n//   return new TranslateHttpLoader(http, '/assets/i18n/cron/', '.json');\r\n// }\r\n@NgModule({\r\n  imports: [\r\n    HttpClientModule,\r\n    CommonModule,\r\n    TranslateModule,\r\n    FormsModule,\r\n  ],\r\n  declarations: [\r\n    CronEditorComponent,\r\n    TimePickerComponent,\r\n  ],\r\n  exports: [\r\n    CronEditorComponent,\r\n    TimePickerComponent,\r\n  ],\r\n  providers: [\r\n    TranslateUiService\r\n  ],\r\n})\r\n\r\nexport class CronEditorModule {\r\n  static forRoot(): ModuleWithProviders<CronEditorModule> {\r\n    return {\r\n      ngModule: CronEditorModule,\r\n      providers: [TranslateService]\r\n    };\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i2.TranslateUiService","i5.TimePickerComponent"],"mappings":"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"}