{"version":3,"file":"acorex-components-rrule.mjs","sources":["../../../../packages/components/rrule/src/lib/rrule.service.ts","../../../../packages/components/rrule/src/lib/rrule-preview.ts","../../../../packages/components/rrule/src/lib/rrule.const.ts","../../../../packages/components/rrule/src/lib/rrule.type.ts","../../../../packages/components/rrule/src/lib/rrule.component.ts","../../../../packages/components/rrule/src/lib/rrule.component.html","../../../../packages/components/rrule/src/acorex-components-rrule.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { AXParsedOptionsType, AXROptionsType, AXRRuleType } from './rrule.type';\n\n/**\n * Service for working with RRule recurrence patterns.\n * Provides methods to create RRule instances from options or strings,\n * convert between formats, and query occurrences.\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class AXRruleService {\n  /**\n   * Creates an RRule instance from options object.\n   * @param options Partial RRule options to create the rule from\n   * @returns Promise resolving to the RRule instance\n   */\n  async rruleFromOptions(options: Partial<AXROptionsType>): Promise<AXRRuleType> {\n    // eslint-disable-next-line @nx/enforce-module-boundaries\n    const { RRule } = await import('rrule');\n    return new RRule(options);\n  }\n\n  /**\n   * Creates an RRule instance from a RRULE string.\n   * @param ruleString Valid RRULE string (e.g., \"RRULE:FREQ=WEEKLY;COUNT=5\")\n   * @returns Promise resolving to the RRule instance\n   */\n  async rruleFromString(ruleString: string): Promise<AXRRuleType> {\n    // eslint-disable-next-line @nx/enforce-module-boundaries\n    const { RRule } = await import('rrule');\n    return RRule.fromString(ruleString);\n  }\n\n  /**\n   * Creates an RRule instance from human-readable text.\n   * @param ruleText Human-readable text describing the recurrence (e.g., \"every Monday for 5 weeks\")\n   * @returns Promise resolving to the RRule instance\n   */\n  async rruleFromText(ruleText: string): Promise<AXRRuleType> {\n    // eslint-disable-next-line @nx/enforce-module-boundaries\n    const { RRule } = await import('rrule');\n    return RRule.fromText(ruleText);\n  }\n\n  /**\n   * Extracts options from an RRule instance.\n   * @param rule RRule instance to extract options from\n   * @returns Parsed options with all required fields\n   */\n  rruleToOptions(rule: AXRRuleType): AXParsedOptionsType {\n    return rule.options;\n  }\n\n  /**\n   * Converts an RRule instance to RRULE string format.\n   * @param rule RRule instance to convert\n   * @returns RRULE string representation\n   */\n  rruleToString(rule: AXRRuleType): string {\n    return rule.toString();\n  }\n\n  /**\n   * Converts an RRule instance to human-readable text.\n   * @param rule RRule instance to convert\n   * @returns Human-readable text description\n   */\n  rruleToText(rule: AXRRuleType): string {\n    return rule.toText();\n  }\n\n  /**\n   * Gets all occurrences of the rule up to a limit.\n   * @param rule RRule instance to query\n   * @param limit Maximum number of occurrences to return (default: 500)\n   * @returns Array of occurrence dates\n   */\n  rruleGetAll(rule: AXRRuleType, limit = 500): Date[] {\n    return rule.all((d, l) => l < limit);\n  }\n\n  /**\n   * Gets occurrences between two dates.\n   * @param rule RRule instance to query\n   * @param after Start date (exclusive by default)\n   * @param before End date (exclusive by default)\n   * @param inclusive Whether to include the boundary dates\n   * @returns Array of occurrence dates between the specified dates\n   */\n  rruleGetBetween(rule: AXRRuleType, after: Date, before: Date, inclusive = false): Date[] {\n    return rule.between(after, before, inclusive);\n  }\n\n  /**\n   * Gets the last occurrence before the specified date.\n   * @param rule RRule instance to query\n   * @param date Date to search before\n   * @param inclusive Whether to include the specified date\n   * @returns Last occurrence before the date, or null if none found\n   */\n  rruleGetBefore(rule: AXRRuleType, date: Date, inclusive = false): Date | null {\n    return rule.before(date, inclusive);\n  }\n\n  /**\n   * Gets the first occurrence after the specified date.\n   * @param rule RRule instance to query\n   * @param date Date to search after\n   * @param inclusive Whether to include the specified date\n   * @returns First occurrence after the date, or null if none found\n   */\n  rruleGetAfter(rule: AXRRuleType, date: Date, inclusive = false): Date | null {\n    return rule.after(date, inclusive);\n  }\n}\n","import { AXLabelModule } from '@acorex/components/label';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AsyncPipe, DatePipe } from '@angular/common';\nimport { Component, computed, effect, inject, input, OnInit, signal } from '@angular/core';\nimport { AXRruleService } from './rrule.service';\nimport { AXRRuleType } from './rrule.type';\n\n@Component({\n  selector: 'ax-rrule-preview',\n  template: `\n    <div class=\"flex flex-col gap-4 rounded-md border p-4 text-pretty\">\n      <div>\n        <ax-label>{{ 'rrule.text' | translate: { scope: 'common' } | async }}</ax-label>\n        <code class=\"bg-surface mt-2 block rounded p-2\">\n          {{ text() }}\n        </code>\n      </div>\n      <div>\n        <ax-label>{{ 'rrule.string' | translate: { scope: 'common' } | async }}</ax-label>\n        <code class=\"bg-surface mt-2 block rounded p-2 text-pretty break-all\">\n          {{ string() }}\n        </code>\n      </div>\n      <div>\n        <ax-label>{{\n          'rrule.occurrences' | translate: { scope: 'common', params: { repeat: repeat() } } | async\n        }}</ax-label>\n        <div class=\"mt-2 max-h-64 overflow-y-auto\">\n          @for (date of dates(); track $index) {\n            <code class=\"bg-surface even:bg-lighter block p-1\">\n              {{ date | date: format() : timeZone() }}\n            </code>\n          }\n        </div>\n      </div>\n    </div>\n  `,\n\n  imports: [AXLabelModule, DatePipe, AXTranslationModule, AsyncPipe],\n})\nexport class AXRrulePreviewComponent implements OnInit {\n  value = input<string | null>();\n  repeat = input<number>(100);\n  format = input<string>('yyyy-MM-dd HH:mm:ss');\n\n  protected rruleService = inject(AXRruleService);\n\n  protected rrule = signal<AXRRuleType | null>(null);\n  protected timeZone = signal<string | null>(null);\n\n  protected text = computed(() => (this.rrule() ? this.rruleService.rruleToText(this.rrule()) : ''));\n  protected string = computed(() => (this.rrule() ? this.rruleService.rruleToString(this.rrule()) : ''));\n  protected dates = computed(() => (this.rrule() ? this.rruleService.rruleGetAll(this.rrule(), this.repeat()) : []));\n  protected options = computed(() => (this.rrule() ? this.rruleService.rruleToOptions(this.rrule()) : {}));\n\n  eff = effect(async () => {\n    if (this.value()) {\n      this.rrule.set(await this.rruleService.rruleFromString(this.value()));\n    }\n  });\n\n  ngOnInit(): void {\n    this.timeZone.set(Intl.DateTimeFormat().resolvedOptions().timeZone);\n  }\n\n  // value = input<AXRRuleType | null>();\n  // protected rruleService = inject(AXRruleService);\n  // protected text = computed(() => (this.value() ? this.rruleService.rruleToText(this.value()) : ''));\n  // protected string = computed(() => (this.value() ? this.rruleService.rruleToString(this.value()) : ''));\n  // protected dates = computed(() => (this.value() ? this.rruleService.rruleGetAll(this.value()) : []));\n  // protected options = computed(() => (this.value() ? this.rruleService.rruleToOptions(this.value()) : {}));\n}\n","export const freqs = [\n  { text: 'Yearly', value: 0 },\n  { text: 'Monthly', value: 1 },\n  { text: 'Weekly', value: 2 },\n  { text: 'Daily', value: 3 },\n  { text: 'Hourly', value: 4 },\n  { text: 'Minutely', value: 5 },\n  { text: 'Secondly', value: 6 },\n];\n\nexport const weekdays = [\n  { text: 'Sunday', value: 6 },\n  { text: 'Monday', value: 0 },\n  { text: 'Tuesday', value: 1 },\n  { text: 'Wednesday', value: 2 },\n  { text: 'Thursday', value: 3 },\n  { text: 'Friday', value: 4 },\n  { text: 'Saturday', value: 5 },\n];\n\nexport const months = [\n  { text: 'January', value: 1 },\n  { text: 'February', value: 2 },\n  { text: 'March', value: 3 },\n  { text: 'April', value: 4 },\n  { text: 'May', value: 5 },\n  { text: 'June', value: 6 },\n  { text: 'July', value: 7 },\n  { text: 'August', value: 8 },\n  { text: 'September', value: 9 },\n  { text: 'October', value: 10 },\n  { text: 'November', value: 11 },\n  { text: 'December', value: 12 },\n];\n\nexport const timezones = Intl.supportedValuesOf('timeZone');\n\nexport const hours = Array.from({ length: 24 }, (_, i) => i);\nexport const minutes = Array.from({ length: 60 }, (_, i) => i);\nexport const seconds = Array.from({ length: 60 }, (_, i) => i);\nexport const monthdays = Array.from({ length: 31 }, (_, i) => i + 1);\nexport const nmonthdays = [\n  ...Array.from({ length: 31 }, (_, i) => -1 * (i + 1)).reverse(),\n  ...Array.from({ length: 31 }, (_, i) => i + 1),\n];\nexport const yeardays = Array.from({ length: 366 }, (_, i) => i + 1);\nexport const weeknos = Array.from({ length: 53 }, (_, i) => i + 1);\nexport const setpos = [\n  ...Array.from({ length: 366 }, (_, i) => -1 * (i + 1)).reverse(),\n  ...Array.from({ length: 366 }, (_, i) => i + 1),\n];\n","export type AXROptionsType = import('rrule').Options;\nexport interface AXParsedOptionsType extends AXROptionsType {\n  dtstart: Date;\n  wkst: number;\n  bysetpos: number[];\n  bymonth: number[];\n  bymonthday: number[];\n  bynmonthday: number[];\n  byyearday: number[];\n  byweekno: number[];\n  byweekday: number[];\n  byhour: number[];\n  byminute: number[];\n  bysecond: number[];\n}\nexport type AXRRuleType = import('rrule').RRule;\n\nexport const defaultOptions: AXROptionsType = {\n  freq: 2,\n  dtstart: null,\n  interval: 1,\n  wkst: null,\n  count: 5,\n  until: null,\n  tzid: null,\n  bysetpos: [],\n  bymonth: [],\n  bymonthday: [],\n  byyearday: [],\n  byweekno: [],\n  byweekday: [],\n  byhour: [],\n  byminute: [],\n  bysecond: [],\n  byeaster: null,\n  bynmonthday: [],\n  bynweekday: [],\n};\n\nexport const defaultRrule = 'RRULE:FREQ=WEEKLY;INTERVAL=1;WKST=MO;COUNT=5';\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDateTimeBoxModule } from '@acorex/components/datetime-box';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSelectionListModule } from '@acorex/components/selection-list';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, effect, inject, input, linkedSignal, output, signal, untracked } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n  freqs,\n  hours,\n  minutes,\n  monthdays,\n  months,\n  nmonthdays,\n  seconds,\n  setpos,\n  timezones,\n  weekdays,\n  weeknos,\n  yeardays,\n} from './rrule.const';\nimport { AXRruleService } from './rrule.service';\nimport { AXROptionsType, AXRRuleType, defaultOptions, defaultRrule } from './rrule.type';\n\n/**\n * RRule component provides a user-friendly interface for creating and managing recurrence rules.\n * Supports various frequencies, intervals, and date constraints with real-time preview and validation.\n */\n@Component({\n  standalone: true,\n  selector: 'ax-rrule',\n  templateUrl: './rrule.component.html',\n\n  imports: [\n    CommonModule,\n    FormsModule,\n    AXDateTimeBoxModule,\n    AXSelectionListModule,\n    AXNumberBoxModule,\n    AXFormModule,\n    AXSelectBoxModule,\n    AXLabelModule,\n    AXSearchBoxModule,\n    AXButtonModule,\n    AXTranslationModule,\n  ],\n})\nexport class AXRruleComponent {\n  /**\n   * Current recurrence rule model value (options object or RRULE string).\n   * @default null\n   */\n  public valueInput = input<AXROptionsType | string | null>(null, { alias: 'value' });\n  public value = linkedSignal(this.valueInput);\n\n  /**\n   * Emitted when the model value changes.\n   */\n  public valueChange = output<AXROptionsType | string | null>();\n\n  /**\n   * Emitted with the computed RRule instance when updated.\n   */\n  public rruleChange = output<AXRRuleType | null>();\n\n  /**\n   * Emitted with the normalized options whenever they change.\n   */\n  public optionsChange = output<AXROptionsType>();\n\n  /**\n   * Emitted with the RRULE string representation.\n   */\n  public stringChange = output<string | null>();\n\n  /**\n   * Emitted with the human-readable text of the rule.\n   */\n  public textChange = output<string | null>();\n\n  protected freqs = freqs;\n  protected weekdays = weekdays;\n  protected months = months;\n  protected timezones = timezones;\n  protected hours = hours;\n  protected minutes = minutes;\n  protected seconds = seconds;\n  protected monthdays = monthdays;\n  protected nmonthdays = nmonthdays;\n  protected yeardays = yeardays;\n  protected weeknos = weeknos;\n  protected setpos = setpos;\n\n  protected options = signal<AXROptionsType>({ ...defaultOptions });\n  protected rrule = signal<AXRRuleType | null>(null);\n  protected string = computed(() => this.rrule()?.toString() ?? null);\n  protected text = computed(() => this.rrule()?.toText() ?? null);\n  // public all = computed(() => this.rruleService.rruleGetAll(this.rrule()));\n\n  private rruleService = inject(AXRruleService);\n  private _isUpdating = false;\n  private _applyToken = 0;\n\n  #valueEffect = effect(() => {\n    const incoming = this.value();\n    if (this._isUpdating) {\n      this._isUpdating = false;\n      return;\n    }\n    this._scheduleApplyIncoming(incoming);\n  });\n\n  private _scheduleApplyIncoming(incoming: AXROptionsType | string | null) {\n    const token = ++this._applyToken;\n    // Defer to microtask to avoid doing async work directly inside effect\n    Promise.resolve().then(() => this._applyIncomingAsync(incoming, token));\n  }\n\n  private async _applyIncomingAsync(incoming: AXROptionsType | string | null, token: number) {\n    try {\n      let rrule: AXRRuleType;\n      let newOptions: AXROptionsType;\n\n      if (incoming) {\n        if (typeof incoming === 'string') {\n          rrule = await this.rruleService.rruleFromString(incoming);\n          newOptions = this._clearOptions({ ...rrule.options }, incoming);\n        } else {\n          rrule = await this.rruleService.rruleFromOptions(incoming);\n          newOptions = { ...rrule.options } as AXROptionsType;\n        }\n      } else {\n        rrule = await this.rruleService.rruleFromString(defaultRrule);\n        newOptions = this._clearOptions({ ...rrule.options }, defaultRrule);\n      }\n\n      // Only apply the latest scheduled update\n      if (token !== this._applyToken) return;\n\n      untracked(() => {\n        this.rrule.set(rrule);\n        this.options.set(newOptions);\n        this._emitAll();\n      });\n    } catch {\n      // Swallow errors to avoid breaking the reactive graph; consider surfacing via output events if needed\n    }\n  }\n\n  private _emitAll() {\n    this.rruleChange.emit(this.rrule());\n    this.optionsChange.emit(this.options());\n    this.stringChange.emit(this.string());\n    this.textChange.emit(this.text());\n  }\n\n  private _areOptionValuesEqual<T>(a: T, b: T): boolean {\n    if (a === b) return true;\n    if (a == null || b == null) return a === b;\n    // Compare Date\n    if (a instanceof Date && b instanceof Date) return a.getTime() === b.getTime();\n    // Compare arrays of primitives\n    if (Array.isArray(a) && Array.isArray(b)) {\n      if (a.length !== b.length) return false;\n      for (let i = 0; i < a.length; i++) {\n        if (a[i] !== b[i]) return false;\n      }\n      return true;\n    }\n    return false;\n  }\n\n  private _clearOptions(options: AXROptionsType, rule: string): AXROptionsType {\n    const upperCaseRule = rule.toUpperCase();\n    if (!upperCaseRule.includes('DTSTART')) {\n      options.dtstart = (this.options().dtstart as Date | null) ?? new Date();\n    }\n    if (!upperCaseRule.includes('BYHOUR')) {\n      options.byhour = [];\n    }\n    if (!upperCaseRule.includes('BYMINUTE')) {\n      options.byminute = [];\n    }\n    if (!upperCaseRule.includes('BYSECOND')) {\n      options.bysecond = [];\n    }\n    if (!upperCaseRule.includes('BYMONTH')) {\n      options.bymonth = [];\n    }\n    if (!upperCaseRule.includes('BYMONTHDAY')) {\n      options.bymonthday = [];\n    }\n    if (!upperCaseRule.includes('BYWEEKDAY')) {\n      options.byweekday = [];\n    }\n    if (!upperCaseRule.includes('TZID')) {\n      const currentTz = this.options().tzid as string | null;\n      const userTimeZone = Intl?.DateTimeFormat?.().resolvedOptions?.().timeZone;\n      options.tzid = currentTz ?? userTimeZone ?? null;\n    }\n    return options;\n  }\n\n  /**\n   * Updates a single option and recomputes the rule.\n   * @param key The option key to update\n   * @param value The new value for the option\n   */\n  async updateOption<K extends keyof AXROptionsType>(key: K, value: AXROptionsType[K]): Promise<void> {\n    const current = this.options()[key] as AXROptionsType[K];\n    if (this._areOptionValuesEqual(current as unknown as any, value as unknown as any)) return;\n    this.options.update((opts) => ({ ...opts, [key]: value }));\n    const newRrule = await this.rruleService.rruleFromOptions(this.options());\n    this.rrule.set(newRrule);\n\n    this._isUpdating = true;\n    if (typeof this.value() === 'string') {\n      this.value.set(newRrule.toString());\n    } else {\n      this.value.set(this.options());\n    }\n    this._emitAll();\n  }\n\n  /**\n   * Resets options to defaults and recomputes the rule.\n   */\n  async resetOptions(): Promise<void> {\n    this.options.set({ ...defaultOptions });\n    const newRrule = await this.rruleService.rruleFromOptions(this.options());\n    this.rrule.set(newRrule);\n\n    this._isUpdating = true;\n    if (typeof this.value() === 'string') {\n      this.value.set(newRrule.toString());\n    } else {\n      this.value.set(this.options());\n    }\n    this._emitAll();\n  }\n}\n","<div class=\"ax-rrule-container grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3\">\n  <!-- General -->\n  <div class=\"flex flex-col gap-4 rounded-md border p-4\">\n    <div class=\"text-lg font-semibold\">{{ 'rrule.general' | translate: { scope: 'common' } | async }}</div>\n\n    <div>\n      <ax-label>{{ 'rrule.freq' | translate: { scope: 'common' } | async }}</ax-label>\n      <ax-selection-list\n        valueField=\"value\"\n        textField=\"text\"\n        name=\"freq\"\n        [items]=\"freqs\"\n        [ngModel]=\"options().freq\"\n        (ngModelChange)=\"updateOption('freq', $event)\"\n      ></ax-selection-list>\n    </div>\n\n    <div>\n      <ax-label>{{ 'rrule.dtstart' | translate: { scope: 'common' } | async }}</ax-label>\n      <ax-datetime-box\n        name=\"dtstart\"\n        [ngModel]=\"options().dtstart\"\n        (ngModelChange)=\"updateOption('dtstart', $event)\"\n      ></ax-datetime-box>\n    </div>\n\n    <div>\n      <ax-label>{{ 'rrule.until' | translate: { scope: 'common' } | async }}</ax-label>\n      <ax-datetime-box\n        name=\"until\"\n        [ngModel]=\"options().until\"\n        (ngModelChange)=\"updateOption('until', $event)\"\n      ></ax-datetime-box>\n    </div>\n\n    <div>\n      <ax-label>{{ 'rrule.count' | translate: { scope: 'common' } | async }}</ax-label>\n      <ax-number-box\n        name=\"count\"\n        [ngModel]=\"options().count\"\n        (ngModelChange)=\"updateOption('count', $event)\"\n        [minValue]=\"1\"\n      ></ax-number-box>\n    </div>\n\n    <div>\n      <ax-label>{{ 'rrule.interval' | translate: { scope: 'common' } | async }}</ax-label>\n      <ax-number-box\n        name=\"interval\"\n        [ngModel]=\"options().interval\"\n        (ngModelChange)=\"updateOption('interval', $event)\"\n        [minValue]=\"1\"\n      ></ax-number-box>\n    </div>\n\n    <div>\n      <ax-label>{{ 'rrule.tzid' | translate: { scope: 'common' } | async }}</ax-label>\n      <ax-select-box\n        name=\"tzid\"\n        [dataSource]=\"timezones\"\n        [ngModel]=\"options().tzid\"\n        (ngModelChange)=\"updateOption('tzid', $event)\"\n      >\n        <ax-search-box></ax-search-box>\n      </ax-select-box>\n    </div>\n  </div>\n\n  <!-- By Weekday -->\n  <div class=\"flex flex-col gap-4 rounded-md border p-4\">\n    <div class=\"text-lg font-semibold\">{{ 'rrule.by-weekday' | translate: { scope: 'common' } | async }}</div>\n    <div>\n      <ax-label>{{ 'rrule.wkst' | translate: { scope: 'common' } | async }}</ax-label>\n      <ax-selection-list\n        valueField=\"value\"\n        textField=\"text\"\n        name=\"wkst\"\n        [items]=\"weekdays\"\n        [ngModel]=\"options().wkst\"\n        (ngModelChange)=\"updateOption('wkst', $event)\"\n      ></ax-selection-list>\n    </div>\n    <div>\n      <ax-label>{{ 'rrule.by-weekday-rule' | translate: { scope: 'common' } | async }}</ax-label>\n      <ax-selection-list\n        valueField=\"value\"\n        textField=\"text\"\n        name=\"byweekday\"\n        [items]=\"weekdays\"\n        multiple=\"true\"\n        [ngModel]=\"options().byweekday\"\n        (ngModelChange)=\"updateOption('byweekday', $event)\"\n      ></ax-selection-list>\n    </div>\n  </div>\n\n  <!-- By Month -->\n  <div class=\"flex flex-col gap-4 rounded-md border p-4\">\n    <div class=\"text-lg font-semibold\">{{ 'rrule.by-month' | translate: { scope: 'common' } | async }}</div>\n    <div>\n      <ax-label>{{ 'rrule.by-month-rule' | translate: { scope: 'common' } | async }}</ax-label>\n      <ax-selection-list\n        valueField=\"value\"\n        textField=\"text\"\n        name=\"bymonth\"\n        [items]=\"months\"\n        multiple=\"true\"\n        [ngModel]=\"options().bymonth\"\n        (ngModelChange)=\"updateOption('bymonth', $event)\"\n      ></ax-selection-list>\n    </div>\n    <div>\n      <ax-label>{{ 'rrule.by-month-day' | translate: { scope: 'common' } | async }}</ax-label>\n      <ax-select-box\n        name=\"bymonthday\"\n        [dataSource]=\"monthdays\"\n        multiple=\"true\"\n        [ngModel]=\"options().bymonthday\"\n        (ngModelChange)=\"updateOption('bymonthday', $event)\"\n      >\n      </ax-select-box>\n    </div>\n    <!-- <div>\n      <ax-label>By Negative Month Day (BYNMONTHDAY)</ax-label>\n      <ax-select-box\n        name=\"bynmonthday\"\n        [dataSource]=\"nmonthdays\"\n        multiple=\"true\"\n        [ngModel]=\"options().bynmonthday\"\n        (ngModelChange)=\"updateOption('bynmonthday', $event)\"\n      >\n      </ax-select-box>\n    </div> -->\n  </div>\n\n  <!-- By Year -->\n  <div class=\"flex flex-col gap-4 rounded-md border p-4\">\n    <div class=\"text-lg font-semibold\">{{ 'rrule.by-year' | translate: { scope: 'common' } | async }}</div>\n    <div>\n      <ax-label>{{ 'rrule.by-year-day' | translate: { scope: 'common' } | async }}</ax-label>\n      <ax-select-box\n        name=\"byyearday\"\n        [dataSource]=\"yeardays\"\n        multiple=\"true\"\n        [ngModel]=\"options().byyearday\"\n        (ngModelChange)=\"updateOption('byyearday', $event)\"\n      >\n      </ax-select-box>\n    </div>\n    <div>\n      <ax-label>{{ 'rrule.by-week-no' | translate: { scope: 'common' } | async }}</ax-label>\n      <ax-select-box\n        name=\"byweekno\"\n        [dataSource]=\"weeknos\"\n        multiple=\"true\"\n        [ngModel]=\"options().byweekno\"\n        (ngModelChange)=\"updateOption('byweekno', $event)\"\n      >\n      </ax-select-box>\n    </div>\n  </div>\n\n  <!-- By Time -->\n  <div class=\"flex flex-col gap-4 rounded-md border p-4\">\n    <div class=\"text-lg font-semibold\">{{ 'rrule.by-time' | translate: { scope: 'common' } | async }}</div>\n    <div>\n      <ax-label>{{ 'rrule.by-hour' | translate: { scope: 'common' } | async }}</ax-label>\n      <ax-select-box\n        name=\"byhour\"\n        [dataSource]=\"hours\"\n        multiple=\"true\"\n        [ngModel]=\"options().byhour\"\n        (ngModelChange)=\"updateOption('byhour', $event)\"\n      >\n      </ax-select-box>\n    </div>\n    <div>\n      <ax-label>{{ 'rrule.by-minute' | translate: { scope: 'common' } | async }}</ax-label>\n      <ax-select-box\n        name=\"byminute\"\n        [dataSource]=\"minutes\"\n        multiple=\"true\"\n        [ngModel]=\"options().byminute\"\n        (ngModelChange)=\"updateOption('byminute', $event)\"\n      >\n      </ax-select-box>\n    </div>\n    <div>\n      <ax-label>{{ 'rrule.by-second' | translate: { scope: 'common' } | async }}</ax-label>\n      <ax-select-box\n        name=\"bysecond\"\n        [dataSource]=\"seconds\"\n        multiple=\"true\"\n        [ngModel]=\"options().bysecond\"\n        (ngModelChange)=\"updateOption('bysecond', $event)\"\n      >\n      </ax-select-box>\n    </div>\n  </div>\n\n  <!-- Advanced -->\n  <div class=\"flex flex-col gap-4 rounded-md border p-4\">\n    <div class=\"text-lg font-semibold\">{{ 'rrule.advanced' | translate: { scope: 'common' } | async }}</div>\n    <div>\n      <ax-label>{{ 'rrule.by-set-pos' | translate: { scope: 'common' } | async }}</ax-label>\n      <ax-select-box\n        name=\"bysetpos\"\n        [dataSource]=\"setpos\"\n        multiple=\"true\"\n        [ngModel]=\"options().bysetpos\"\n        (ngModelChange)=\"updateOption('bysetpos', $event)\"\n      >\n      </ax-select-box>\n    </div>\n  </div>\n</div>\n\n<div class=\"flex justify-end py-4\">\n  <ax-button [text]=\"'rrule.reset' | translate: { scope: 'common' } | async\" (click)=\"resetOptions()\"></ax-button>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i10"],"mappings":"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"}