@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.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/cron-builder",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
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.
|
|
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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"}
|