{"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/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, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport Utils from '../poco/utils';\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  standalone: false,\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\r\n      ? Utils.getRange(0, 23)\r\n      : 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","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Observable, forkJoin, of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class TranslateUiService {\r\n  private availableLanguages = ['en', 'fa', 'ru'];\r\n  private translationPath = './assets/i18n/ngx-ntk-cron-editor/';\r\n\r\n  constructor(\r\n    private translateService: TranslateService,\r\n    private http: HttpClient\r\n  ) {}\r\n\r\n  public init(language: string = null): void {\r\n    if (language) {\r\n      // Initialize one specific language\r\n      this.loadTranslation(language).subscribe(\r\n        (translations) => {\r\n          this.translateService.setTranslation(language, translations, true);\r\n          this.translateService.use(language);\r\n        },\r\n        (error) => {\r\n          console.warn(\r\n            `Failed to load translation for ${language}, falling back to English`\r\n          );\r\n          this.loadTranslation('en').subscribe((enTranslations) => {\r\n            this.translateService.setTranslation(\r\n              language,\r\n              enTranslations,\r\n              true\r\n            );\r\n            this.translateService.use(language);\r\n          });\r\n        }\r\n      );\r\n    } else {\r\n      // Initialize all languages\r\n      const loadPromises = this.availableLanguages.map((lang) =>\r\n        this.loadTranslation(lang).pipe(\r\n          catchError((error) => {\r\n            console.warn(`Failed to load translation for ${lang}`);\r\n            return of(null);\r\n          })\r\n        )\r\n      );\r\n\r\n      forkJoin(loadPromises).subscribe((results) => {\r\n        results.forEach((translations, index) => {\r\n          if (translations) {\r\n            const lang = this.availableLanguages[index];\r\n            this.translateService.setTranslation(lang, translations, true);\r\n          }\r\n        });\r\n      });\r\n    }\r\n  }\r\n\r\n  private loadTranslation(language: string): Observable<any> {\r\n    return this.http.get(`${this.translationPath}${language}.json`);\r\n  }\r\n\r\n  public setLanguage(language: string): void {\r\n    this.translateService.use(language);\r\n  }\r\n\r\n  public getCurrentLanguage(): string {\r\n    return this.translateService.currentLang;\r\n  }\r\n\r\n  public getAvailableLanguages(): string[] {\r\n    return this.availableLanguages;\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 { TranslateService } from '@ngx-translate/core';\r\nimport { distinctUntilChanged } from 'rxjs';\r\nimport {\r\n  CronOptionModel,\r\n  defaultCronOptions,\r\n} from './models/cron-options-model';\r\nimport { Days, Months, MonthWeeks } from './models/enums';\r\nimport Utils from './poco/utils';\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  standalone: false,\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\r\n  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  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  public ngOnInit() {\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: string): 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 = `${\r\n              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 = `${\r\n              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 = `${\r\n              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 = `${\r\n              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}/${\r\n              this.state.monthly.specificWeekDay.months\r\n            } ${this.state.monthly.specificWeekDay.day}${\r\n              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 = `${\r\n              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 = `${\r\n              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} ${\r\n              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 { 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 { CronEditorComponent } from './cron-editor.component';\r\nimport { TranslateUiService } from './services/translateUi.service';\r\nimport { TimePickerComponent } from './time-picker/time-picker.component';\r\n\r\n// Required for AOT compilation\r\n@NgModule({\r\n  declarations: [CronEditorComponent, TimePickerComponent],\r\n  imports: [HttpClientModule, CommonModule, TranslateModule, FormsModule],\r\n  exports: [CronEditorComponent, TimePickerComponent],\r\n  providers: [TranslateUiService],\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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"}