@praxisui/cron-builder 3.0.0-beta.8 → 3.0.0-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -497,4 +497,3 @@ const CRON_BUILDER_AI_CAPABILITIES = {
497
497
  */
498
498
 
499
499
  export { CRON_BUILDER_AI_CAPABILITIES, PDX_CRON_BUILDER_DOC_META_LEGACY, PdxCronBuilderComponent };
500
- //# sourceMappingURL=praxisui-cron-builder.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@praxisui/cron-builder",
3
- "version": "3.0.0-beta.8",
3
+ "version": "3.0.0-beta.9",
4
4
  "description": "Cron expression builder utilities and components for Praxis UI.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^20.1.0",
@@ -8,7 +8,7 @@
8
8
  "@angular/forms": "^20.1.0",
9
9
  "@angular/cdk": "^20.1.0",
10
10
  "@angular/material": "^20.1.0",
11
- "@praxisui/core": "^3.0.0-beta.8"
11
+ "@praxisui/core": "^3.0.0-beta.9"
12
12
  },
13
13
  "dependencies": {
14
14
  "tslib": "^2.3.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"praxisui-cron-builder.mjs","sources":["../../../projects/praxis-cron-builder/src/lib/pdx-cron-builder.component.ts","../../../projects/praxis-cron-builder/src/lib/pdx-cron-builder.component.html","../../../projects/praxis-cron-builder/src/lib/pdx-cron-builder.metadata.ts","../../../projects/praxis-cron-builder/src/lib/ai/cron-builder-ai-capabilities.ts","../../../projects/praxis-cron-builder/src/public-api.ts","../../../projects/praxis-cron-builder/src/praxisui-cron-builder.ts"],"sourcesContent":["import { Component, Input, forwardRef, OnInit, OnDestroy, ChangeDetectionStrategy, inject } from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NonNullableFormBuilder,\n FormGroup,\n FormControl,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { MatTabsModule, MatTabChangeEvent } from '@angular/material/tabs';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatListModule } from '@angular/material/list';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { PraxisIconDirective } from '@praxisui/core';\n// Avoid static imports of heavy node-targeted cron libraries to prevent ng-packagr TS issues.\n// Use dynamic imports inside methods instead.\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n// Lazy module singletons\nlet _cronValidator: any | undefined;\nlet _cronstrue: any | undefined;\nlet _cronParser: any | undefined;\n\n// ... (keep existing interfaces)\nexport interface Recurrence {\n // Define recurrence properties here later\n}\n\nexport interface CronBuilderMetadata {\n mode?: 'simple' | 'advanced' | 'both';\n fields?: {\n seconds?: boolean;\n minutes?: boolean;\n hours?: boolean;\n dom?: boolean;\n month?: boolean;\n dow?: boolean;\n };\n timezone?: string;\n locale?: string;\n presets?: Array<{ label: string; cron: string }>;\n previewOccurrences?: number;\n previewFrom?: Date;\n validators?: {\n requiredMessage?: string;\n invalidCronMessage?: string;\n };\n validationTrigger?: 'change' | 'blur';\n validationDebounce?: number;\n errorPosition?: 'tooltip' | 'inline';\n showInlineErrors?: boolean;\n hint?: string;\n}\n\nexport type CronPresetType =\n | 'everyNMinutes'\n | 'dailyAt'\n | 'weekly'\n | 'monthlyDay'\n | 'monthlyNthWeekday';\n\nexport interface SimpleCronFormValue {\n type: CronPresetType;\n everyN: number;\n dailyTime: string;\n weeklyDays: number[];\n weeklyTime: string;\n monthlyDay: number;\n monthlyTime: string;\n nth: number;\n nthDay: number;\n nthTime: string;\n}\n\nexport interface AdvancedCronFormValue {\n seconds?: string;\n minutes: string;\n hours: string;\n dayOfMonth: string;\n month: string;\n dayOfWeek: string;\n}\n\n@Component({\n selector: 'pdx-cron-builder',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatTabsModule,\n MatRadioModule,\n MatSelectModule,\n MatInputModule,\n MatFormFieldModule,\n MatListModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatSliderModule,\n MatChipsModule,\n MatSnackBarModule,\n PraxisIconDirective,\n ],\n templateUrl: './pdx-cron-builder.component.html',\n styleUrls: ['./pdx-cron-builder.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PdxCronBuilderComponent),\n multi: true,\n },\n ],\n})\n\nexport class PdxCronBuilderComponent\n implements ControlValueAccessor, OnInit, OnDestroy\n{\n // Tipos auxiliares para Typed Forms\n private readonly fb = inject(NonNullableFormBuilder);\n private readonly clipboard = inject(Clipboard);\n private readonly snackBar = inject(MatSnackBar);\n\n @Input() metadata: CronBuilderMetadata = {\n mode: 'both',\n fields: {\n seconds: false,\n minutes: true,\n hours: true,\n dom: true,\n month: true,\n dow: true,\n },\n presets: [\n { label: 'Every minute (* * * * *)', cron: '* * * * *' },\n { label: 'Every 5 minutes (*/5 * * * *)', cron: '*/5 * * * *' },\n { label: 'Daily at midnight (0 0 * * *)', cron: '0 0 * * *' },\n { label: 'Weekly on Sunday at midnight (0 0 * * 0)', cron: '0 0 * * 0' },\n ],\n previewOccurrences: 5,\n };\n\n value: string | Recurrence | null = null;\n isDisabled = false;\n activeTab: 'simple' | 'advanced' = 'simple';\n selectedTabIndex = 0;\n\n readonly form: FormGroup;\n readonly simpleForm: FormGroup;\n readonly timezoneControl = new FormControl<string>('UTC', { nonNullable: true });\n private readonly destroy$ = new Subject<void>();\n\n humanized = '';\n preview: Date[] = [];\n error: string | null = null;\n\n // Opções expostas ao template para controle de fluxo moderno\n readonly weekdayLabels = ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'] as const;\n readonly weeklyDayOptions = [0, 1, 2, 3, 4, 5, 6] as const;\n readonly nthOrderOptions = [1, 2, 3, 4, 5] as const;\n readonly nthDayOptions = [1, 2, 3, 4, 5, 6, 0] as const;\n readonly timezoneOptions = ['UTC', 'America/Sao_Paulo', 'Europe/London', 'America/New_York'] as const;\n\n constructor() {\n this.form = this.fb.group({\n seconds: this.fb.control('*'),\n minutes: this.fb.control('*'),\n hours: this.fb.control('*'),\n dayOfMonth: this.fb.control('*'),\n month: this.fb.control('*'),\n dayOfWeek: this.fb.control('*'),\n });\n\n this.simpleForm = this.fb.group({\n type: this.fb.control<'everyNMinutes' | 'dailyAt' | 'weekly' | 'monthlyDay' | 'monthlyNthWeekday'>('everyNMinutes'),\n everyN: this.fb.control(5),\n dailyTime: this.fb.control('00:00'),\n weeklyDays: this.fb.control<number[]>([]),\n weeklyTime: this.fb.control('00:00'),\n monthlyDay: this.fb.control(1),\n monthlyTime: this.fb.control('00:00'),\n nth: this.fb.control(1),\n nthDay: this.fb.control(1),\n nthTime: this.fb.control('00:00'),\n });\n }\n\n // Acesso facilitado aos controles no template\n get simpleControls() {\n return (this.simpleForm as any).controls as Record<string, FormControl>;\n }\n\n ngOnInit(): void {\n if (this.metadata.mode === 'simple') {\n this.activeTab = 'simple';\n this.selectedTabIndex = 0;\n } else if (this.metadata.mode === 'advanced') {\n this.activeTab = 'advanced';\n this.selectedTabIndex = 1;\n }\n\n this.form.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((value: AdvancedCronFormValue) => {\n const cron = this.constructCronString(value as AdvancedCronFormValue);\n this.updateValue(cron);\n });\n\n this.simpleForm.valueChanges\n .pipe(takeUntil(this.destroy$))\n .subscribe((value: SimpleCronFormValue) => {\n const cron = this.buildCronFromSimple(value as SimpleCronFormValue);\n this.updateValue(cron);\n });\n\n this.timezoneControl.setValue(this.metadata.timezone || 'UTC', {\n emitEvent: false,\n });\n this.timezoneControl.valueChanges\n .pipe(takeUntil(this.destroy$))\n .subscribe((tz) => {\n this.metadata.timezone = tz || 'UTC';\n if (typeof this.value === 'string') {\n this.generatePreview(this.value);\n }\n });\n }\n\n onChange: (value: any) => void = () => {};\n onTouched: () => void = () => {};\n\n writeValue(value: string | Recurrence | null): void {\n if (typeof value === 'string') {\n this.updateValue(value, false);\n this.parseCronString(value);\n this.syncSimpleForm(value);\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n if (isDisabled) {\n this.form.disable();\n this.simpleForm.disable();\n this.timezoneControl.disable();\n } else {\n this.form.enable();\n this.simpleForm.enable();\n this.timezoneControl.enable();\n }\n }\n\n onTabChange(event: MatTabChangeEvent): void {\n this.selectedTabIndex = event.index;\n this.activeTab = event.index === 0 ? 'simple' : 'advanced';\n this.onTouched();\n }\n\n setPreset(cron: string): void {\n this.updateValue(cron);\n this.parseCronString(cron);\n this.syncSimpleForm(cron);\n }\n\n updateValue(cron: string, emitEvent = true): void {\n this.value = cron;\n if (emitEvent) {\n this.onChange(cron);\n }\n this.validate(cron);\n this.humanize(cron);\n this.generatePreview(cron);\n }\n\n copyCron(): void {\n if (typeof this.value === 'string') {\n this.clipboard.copy(this.value);\n this.snackBar.open('CRON expression copied', undefined, {\n duration: 2000,\n });\n }\n }\n\n copyHumanized(): void {\n if (this.humanized) {\n this.clipboard.copy(this.humanized);\n this.snackBar.open('Description copied', undefined, { duration: 2000 });\n }\n }\n\n importCron(): void {\n const cron = prompt('Enter CRON expression');\n if (cron) {\n this.updateValue(cron);\n this.parseCronString(cron);\n this.syncSimpleForm(cron);\n }\n }\n\n private validate(cron: string): void {\n (async () => {\n try {\n _cronValidator = _cronValidator || (await import('cron-validator'));\n const ok = await _cronValidator.isValidCron?.(cron, { alias: true, allowBlankDay: true });\n this.error = ok\n ? null\n : this.metadata.validators?.invalidCronMessage || 'Invalid CRON expression';\n } catch {\n // On import/validation failure, do a minimal sanity check and do not block UX\n this.error = /\\S+ \\S+ \\S+ \\S+ \\S+/.test(cron) ? null : 'Invalid CRON expression';\n }\n })();\n }\n\n private humanize(cron: string): void {\n if (this.error) {\n this.humanized = '';\n return;\n }\n (async () => {\n try {\n _cronstrue = _cronstrue || (await import('cronstrue'));\n this.humanized = _cronstrue.toString?.(cron, { locale: this.metadata.locale }) || '';\n } catch {\n this.humanized = '';\n }\n })();\n }\n\n private generatePreview(cron: string): void {\n if (this.error || !this.metadata.previewOccurrences) {\n this.preview = [];\n return;\n }\n (async () => {\n try {\n _cronParser = _cronParser || (await import('cron-parser'));\n const parse = _cronParser.parse || _cronParser.default?.parse;\n const interval = parse?.(cron, {\n currentDate: this.metadata.previewFrom ?? new Date(),\n tz: this.metadata.timezone,\n } as any);\n const next: Date[] = [];\n for (let i = 0; i < (this.metadata.previewOccurrences ?? 5); i++) {\n next.push(interval.next().toDate());\n }\n this.preview = next;\n } catch {\n this.preview = [];\n }\n })();\n }\n\n private parseCronString(cron: string): void {\n const parts = cron.trim().split(/\\s+/);\n if (parts.length < 5) return;\n\n let seconds = '*';\n let minutes: string;\n let hours: string;\n let dayOfMonth: string;\n let month: string;\n let dayOfWeek: string;\n\n if (parts.length === 6) {\n [seconds, minutes, hours, dayOfMonth, month, dayOfWeek] = parts;\n } else {\n [minutes, hours, dayOfMonth, month, dayOfWeek] = parts;\n }\n\n this.form.patchValue(\n {\n seconds: this.metadata.fields?.seconds ? seconds : '*',\n minutes: minutes || '*',\n hours: hours || '*',\n dayOfMonth: dayOfMonth || '*',\n month: month || '*',\n dayOfWeek: dayOfWeek || '*',\n },\n { emitEvent: false },\n );\n }\n\n private syncSimpleForm(cron: string): void {\n const parts = cron.trim().split(/\\s+/);\n if (parts.length < 5) return;\n if (parts.length === 6) {\n parts.shift();\n }\n const [minutes, hours, dom, month, dow] = parts;\n\n if (\n minutes.startsWith('*/') &&\n hours === '*' &&\n dom === '*' &&\n month === '*' &&\n dow === '*'\n ) {\n this.simpleForm.patchValue(\n { type: 'everyNMinutes', everyN: parseInt(minutes.slice(2), 10) },\n { emitEvent: false },\n );\n } else if (dom === '*' && month === '*' && dow === '*') {\n this.simpleForm.patchValue(\n { type: 'dailyAt', dailyTime: this.toTime(hours, minutes) },\n { emitEvent: false },\n );\n } else if (dom === '*' && month === '*') {\n this.simpleForm.patchValue(\n {\n type: 'weekly',\n weeklyTime: this.toTime(hours, minutes),\n weeklyDays: dow.split(',').map((d) => +d),\n },\n { emitEvent: false },\n );\n } else if (month === '*' && dow === '*') {\n this.simpleForm.patchValue(\n {\n type: 'monthlyDay',\n monthlyTime: this.toTime(hours, minutes),\n monthlyDay: +dom,\n },\n { emitEvent: false },\n );\n } else if (dom === '?' && dow.includes('#')) {\n const [day, nth] = dow.split('#');\n this.simpleForm.patchValue(\n {\n type: 'monthlyNthWeekday',\n nth: +nth,\n nthDay: +day,\n nthTime: this.toTime(hours, minutes),\n },\n { emitEvent: false },\n );\n }\n }\n\n private buildCronFromSimple(v: SimpleCronFormValue): string {\n let cron: string;\n switch (v.type) {\n case 'everyNMinutes':\n cron = `*/${v.everyN || 1} * * * *`;\n break;\n case 'dailyAt': {\n const [h, m] = this.parseTime(v.dailyTime);\n cron = `${m} ${h} * * *`;\n break;\n }\n case 'weekly': {\n const [h, m] = this.parseTime(v.weeklyTime);\n const days = (v.weeklyDays || []).sort().join(',') || '*';\n cron = `${m} ${h} * * ${days}`;\n break;\n }\n case 'monthlyDay': {\n const [h, m] = this.parseTime(v.monthlyTime);\n cron = `${m} ${h} ${v.monthlyDay || 1} * *`;\n break;\n }\n case 'monthlyNthWeekday': {\n const [h, m] = this.parseTime(v.nthTime);\n cron = `${m} ${h} ? * ${v.nthDay || 1}#${v.nth || 1}`;\n break;\n }\n default:\n cron = '* * * * *';\n }\n return this.metadata.fields?.seconds ? `0 ${cron}` : cron;\n }\n\n private parseTime(time: string): [number, number] {\n if (!time) {\n return [0, 0];\n }\n const [h, m] = time.split(':').map((v) => parseInt(v, 10));\n return [h || 0, m || 0];\n }\n\n private toTime(h: string, m: string): string {\n return `${this.pad(parseInt(h, 10))}:${this.pad(parseInt(m, 10))}`;\n }\n\n private pad(v: number): string {\n return v.toString().padStart(2, '0');\n }\n\n private constructCronString(value: AdvancedCronFormValue): string {\n const { seconds, minutes, hours, dayOfMonth, month, dayOfWeek } = value;\n if (this.metadata.fields?.seconds) {\n return `${seconds || '*'} ${minutes || '*'} ${hours || '*'} ${dayOfMonth || '*'} ${month || '*'} ${dayOfWeek || '*'}`;\n }\n return `${minutes || '*'} ${hours || '*'} ${dayOfMonth || '*'} ${month || '*'} ${dayOfWeek || '*'}`;\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div class=\"cron-builder-container\" (focusout)=\"onTouched()\">\n @if (metadata.mode === 'both') {\n <mat-tab-group\n [selectedIndex]=\"selectedTabIndex\"\n (selectedTabChange)=\"onTabChange($event)\"\n >\n <mat-tab label=\"Simple\"></mat-tab>\n <mat-tab label=\"Advanced\"></mat-tab>\n </mat-tab-group>\n }\n\n @if (value) {\n <div class=\"cron-expression\">\n <mat-form-field appearance=\"outline\" class=\"cron-expression-field\">\n <mat-label>CRON Expression</mat-label>\n <input matInput [value]=\"value\" readonly />\n <button\n mat-icon-button\n matSuffix\n (click)=\"copyCron()\"\n [matTooltip]=\"'Copy to clipboard'\"\n aria-label=\"Copy CRON expression\"\n >\n <mat-icon [praxisIcon]=\"'content_copy'\"></mat-icon>\n </button>\n </mat-form-field>\n <button mat-button (click)=\"importCron()\">Import CRON</button>\n </div>\n }\n\n @switch (activeTab) {\n @case ('simple') {\n <div [formGroup]=\"simpleForm\" class=\"simple-mode\">\n <mat-form-field appearance=\"outline\" class=\"preset-select\">\n <mat-label>Preset</mat-label>\n <mat-select formControlName=\"type\">\n <mat-option value=\"everyNMinutes\">A cada X min</mat-option>\n <mat-option value=\"dailyAt\">Diariamente às</mat-option>\n <mat-option value=\"weekly\">Semanal (dias marcados) às</mat-option>\n <mat-option value=\"monthlyDay\">Mensal (dia N) às</mat-option>\n <mat-option value=\"monthlyNthWeekday\">\n Mensal (N-ésima 2ª-feira) às\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n @switch (simpleControls.type.value) {\n @case ('everyNMinutes') {\n <div class=\"preset-body\">\n <mat-slider\n formControlName=\"everyN\"\n min=\"1\"\n max=\"60\"\n step=\"1\"\n thumbLabel\n ></mat-slider>\n <div class=\"cron-hint\">\n A cada {{ simpleControls.everyN.value }} minutos\n </div>\n </div>\n }\n\n @case ('dailyAt') {\n <div class=\"preset-body\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Hora</mat-label>\n <input matInput type=\"time\" formControlName=\"dailyTime\" />\n </mat-form-field>\n <div class=\"cron-hint\">\n Diariamente às {{ simpleControls.dailyTime.value }}\n </div>\n </div>\n }\n\n @case ('weekly') {\n <div class=\"preset-body\">\n <mat-chip-listbox formControlName=\"weeklyDays\" multiple>\n @for (day of weeklyDayOptions; track day) {\n <mat-chip-option [value]=\"day\">\n {{ weekdayLabels[day] }}\n </mat-chip-option>\n }\n </mat-chip-listbox>\n <mat-form-field appearance=\"outline\">\n <mat-label>Hora</mat-label>\n <input matInput type=\"time\" formControlName=\"weeklyTime\" />\n </mat-form-field>\n <div class=\"cron-hint\">\n Semanalmente às {{ simpleControls.weeklyTime.value }}\n </div>\n </div>\n }\n\n @case ('monthlyDay') {\n <div class=\"preset-body\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Dia</mat-label>\n <input\n matInput\n type=\"number\"\n formControlName=\"monthlyDay\"\n min=\"1\"\n max=\"31\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Hora</mat-label>\n <input matInput type=\"time\" formControlName=\"monthlyTime\" />\n </mat-form-field>\n <div class=\"cron-hint\">\n Dia {{ simpleControls.monthlyDay.value }} às\n {{ simpleControls.monthlyTime.value }}\n </div>\n </div>\n }\n\n @case ('monthlyNthWeekday') {\n <div class=\"preset-body\">\n <mat-form-field appearance=\"outline\">\n <mat-label>N-ésima</mat-label>\n <mat-select formControlName=\"nth\">\n @for (nth of nthOrderOptions; track nth) {\n <mat-option [value]=\"nth\">{{ nth }}ª</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-chip-listbox formControlName=\"nthDay\">\n @for (day of nthDayOptions; track day) {\n <mat-chip-option [value]=\"day\">\n {{ weekdayLabels[day] }}\n </mat-chip-option>\n }\n </mat-chip-listbox>\n <mat-form-field appearance=\"outline\">\n <mat-label>Hora</mat-label>\n <input matInput type=\"time\" formControlName=\"nthTime\" />\n </mat-form-field>\n <div class=\"cron-hint\">\n {{ simpleControls.nth.value }}ª\n {{ weekdayLabels[simpleControls.nthDay.value] }}\n às\n {{ simpleControls.nthTime.value }}\n </div>\n </div>\n }\n }\n </div>\n }\n\n @case ('advanced') {\n <div [formGroup]=\"form\">\n <div class=\"cron-fields\">\n @if (metadata.fields?.minutes) {\n <mat-form-field>\n <mat-label>Minutes</mat-label>\n <input matInput formControlName=\"minutes\" />\n </mat-form-field>\n }\n @if (metadata.fields?.hours) {\n <mat-form-field>\n <mat-label>Hours</mat-label>\n <input matInput formControlName=\"hours\" />\n </mat-form-field>\n }\n @if (metadata.fields?.dom) {\n <mat-form-field>\n <mat-label>Day of Month</mat-label>\n <input matInput formControlName=\"dayOfMonth\" />\n </mat-form-field>\n }\n @if (metadata.fields?.month) {\n <mat-form-field>\n <mat-label>Month</mat-label>\n <input matInput formControlName=\"month\" />\n </mat-form-field>\n }\n @if (metadata.fields?.dow) {\n <mat-form-field>\n <mat-label>Day of Week</mat-label>\n <input matInput formControlName=\"dayOfWeek\" />\n </mat-form-field>\n }\n @if (metadata.fields?.seconds) {\n <mat-form-field>\n <mat-label>Seconds</mat-label>\n <input matInput formControlName=\"seconds\" />\n </mat-form-field>\n }\n </div>\n </div>\n }\n }\n\n <div class=\"cron-feedback\">\n <mat-form-field appearance=\"outline\" class=\"timezone-field\">\n <mat-label>Timezone</mat-label>\n <mat-select [formControl]=\"timezoneControl\">\n @for (tz of timezoneOptions; track tz) {\n <mat-option [value]=\"tz\">\n {{ tz }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n @if (humanized) {\n <div class=\"humanized-description\" aria-live=\"polite\">\n {{ humanized }}\n <button\n mat-icon-button\n class=\"copy-humanized\"\n (click)=\"copyHumanized()\"\n [matTooltip]=\"'Copy description'\"\n aria-label=\"Copy description\"\n >\n <mat-icon [praxisIcon]=\"'content_copy'\"></mat-icon>\n </button>\n </div>\n }\n\n @if (error) {\n <div class=\"cron-error\">{{ error }}</div>\n }\n\n @if (preview.length > 0) {\n <div class=\"preview-section\">\n <h4>Next Occurrences:</h4>\n <mat-list>\n @for (date of preview; track $index) {\n <mat-list-item>\n {{\n date\n | date\n : \"full\"\n : timezoneControl.value\n : metadata.locale || \"pt-BR\"\n }}\n </mat-list-item>\n }\n </mat-list>\n </div>\n }\n </div>\n\n @if (metadata.hint) {\n <div class=\"cron-hint\">{{ metadata.hint }}</div>\n }\n</div>\n","import { PdxCronBuilderComponent } from './pdx-cron-builder.component';\n\n// Keep this metadata object self-contained to avoid build-time dependency on @praxisui/core types.\nexport const PDX_CRON_BUILDER_DOC_META_LEGACY: any = {\n id: 'pdx-cron-builder',\n selector: 'pdx-cron-builder',\n component: PdxCronBuilderComponent,\n friendlyName: 'Cron (builder)',\n description: 'Editor visual para expressões CRON com validação e presets.',\n icon: 'schedule',\n inputs: [\n { name: 'label', type: 'string', description: 'Rótulo do campo' },\n { name: 'hint', type: 'string', description: 'Texto auxiliar' },\n { name: 'presets', type: 'Array<{ label: string; cron: string }>', description: 'Lista de presets disponíveis' },\n { name: 'enableSeconds', type: 'boolean', description: 'Habilita segundo campo (6 partes)', default: false },\n { name: 'metadata', type: 'any', description: 'Metadados compatíveis com formulários Praxis' },\n ],\n outputs: [\n { name: 'valueChange', type: 'string', description: 'Emite quando a expressão cron muda' },\n ],\n tags: ['widget', 'field', 'cron', 'schedule'],\n lib: '@praxisui/cron-builder',\n};\n","/**\n * Capabilities catalog for Cron Builder (pdx-cron-builder inputs + metadata).\n * Paths follow component inputs (patch merged at config root).\n */\n\nimport type {\n AiCapability,\n AiCapabilityCatalog,\n AiCapabilityCategory,\n AiValueKind,\n} from '@praxisui/core';\n\ndeclare module '@praxisui/core' {\n interface AiCapabilityCategoryMap {\n meta: true;\n fields: true;\n presets: true;\n preview: true;\n i18n: true;\n ui: true;\n }\n}\n\nexport type CapabilityCategory = AiCapabilityCategory;\nexport type ValueKind = AiValueKind;\n\nexport interface Capability extends AiCapability {\n category: CapabilityCategory;\n}\n\nexport interface CapabilityCatalog extends AiCapabilityCatalog {\n capabilities: Capability[];\n}\n\nconst ENUMS: Record<string, Array<string | number>> = {\n mode: ['simple', 'advanced', 'both'],\n validationTrigger: ['change', 'blur'],\n errorPosition: ['tooltip', 'inline'],\n};\n\nexport const CRON_BUILDER_AI_CAPABILITIES: CapabilityCatalog = {\n version: 'v1.0',\n enums: ENUMS,\n targets: ['pdx-cron-builder'],\n notes: [\n 'presets[] should be merged by cron or label to avoid replacing all entries.',\n 'metadata.previewFrom expects an ISO date string when provided.',\n ],\n capabilities: [\n { path: 'label', category: 'meta', valueKind: 'string', description: 'Field label (if exposed by host).' },\n { path: 'hint', category: 'ui', valueKind: 'string', description: 'Helper text (if exposed by host).' },\n { path: 'enableSeconds', category: 'fields', valueKind: 'boolean', description: 'Enable seconds selector.' },\n { path: 'presets', category: 'presets', valueKind: 'array', description: 'Presets list (label + cron).' },\n { path: 'presets[].label', category: 'presets', valueKind: 'string', description: 'Preset label.' },\n { path: 'presets[].cron', category: 'presets', valueKind: 'string', description: 'Preset cron expression.' },\n\n { path: 'metadata', category: 'meta', valueKind: 'object', description: 'CronBuilderMetadata input.' },\n { path: 'metadata.mode', category: 'behavior', valueKind: 'enum', allowedValues: ENUMS.mode, description: 'Enabled UI modes.' },\n { path: 'metadata.fields', category: 'fields', valueKind: 'object', description: 'Field visibility toggles.' },\n { path: 'metadata.fields.seconds', category: 'fields', valueKind: 'boolean', description: 'Show seconds field.' },\n { path: 'metadata.fields.minutes', category: 'fields', valueKind: 'boolean', description: 'Show minutes field.' },\n { path: 'metadata.fields.hours', category: 'fields', valueKind: 'boolean', description: 'Show hours field.' },\n { path: 'metadata.fields.dom', category: 'fields', valueKind: 'boolean', description: 'Show day-of-month field.' },\n { path: 'metadata.fields.month', category: 'fields', valueKind: 'boolean', description: 'Show month field.' },\n { path: 'metadata.fields.dow', category: 'fields', valueKind: 'boolean', description: 'Show day-of-week field.' },\n\n { path: 'metadata.timezone', category: 'i18n', valueKind: 'string', description: 'IANA timezone used for preview.' },\n { path: 'metadata.locale', category: 'i18n', valueKind: 'string', description: 'Locale used for humanized text.' },\n { path: 'metadata.presets', category: 'presets', valueKind: 'array', description: 'Presets list inside metadata.' },\n { path: 'metadata.presets[].label', category: 'presets', valueKind: 'string', description: 'Preset label.' },\n { path: 'metadata.presets[].cron', category: 'presets', valueKind: 'string', description: 'Preset cron expression.' },\n\n { path: 'metadata.previewOccurrences', category: 'preview', valueKind: 'number', description: 'Number of preview dates.' },\n { path: 'metadata.previewFrom', category: 'preview', valueKind: 'string', description: 'Preview start date (ISO string).' },\n\n { path: 'metadata.validators', category: 'validation', valueKind: 'object', description: 'Custom validation messages.' },\n { path: 'metadata.validators.requiredMessage', category: 'validation', valueKind: 'string', description: 'Required message.' },\n { path: 'metadata.validators.invalidCronMessage', category: 'validation', valueKind: 'string', description: 'Invalid cron message.' },\n { path: 'metadata.validationTrigger', category: 'validation', valueKind: 'enum', allowedValues: ENUMS.validationTrigger, description: 'Validation trigger.' },\n { path: 'metadata.validationDebounce', category: 'validation', valueKind: 'number', description: 'Validation debounce (ms).' },\n\n { path: 'metadata.errorPosition', category: 'ui', valueKind: 'enum', allowedValues: ENUMS.errorPosition, description: 'Error display position.' },\n { path: 'metadata.showInlineErrors', category: 'ui', valueKind: 'boolean', description: 'Show inline errors.' },\n { path: 'metadata.hint', category: 'ui', valueKind: 'string', description: 'Hint text.' },\n ],\n};\n","/*\n * Public API Surface of praxis-cron-builder\n */\n\nexport * from './lib/pdx-cron-builder.component';\nexport * from './lib/pdx-cron-builder.metadata';\n// Note: runtime cron libraries are loaded dynamically inside the component to\n// avoid build-time type resolution issues with ng-packagr.\nexport * from './lib/ai/cron-builder-ai-capabilities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}