@vipsolucoes/dynamic-form 1.0.7 → 1.0.8

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/README.md CHANGED
@@ -137,6 +137,8 @@ A biblioteca suporta os seguintes tipos de campos:
137
137
 
138
138
  ### Campo Select
139
139
 
140
+ #### Formato Padrão (Dados Fixos)
141
+
140
142
  ```typescript
141
143
  {
142
144
  key: 'pais',
@@ -152,6 +154,54 @@ A biblioteca suporta os seguintes tipos de campos:
152
154
  }
153
155
  ```
154
156
 
157
+ #### Com Dados de API (Sem Mapeamento Manual)
158
+
159
+ ```typescript
160
+ // Service retorna dados brutos: [{ id: 1, nome: 'São Paulo', uf: 'SP' }, ...]
161
+
162
+ {
163
+ key: 'cidade',
164
+ controlType: 'select',
165
+ label: 'Cidade',
166
+ options: [],
167
+ optionLabel: 'nome', // Campo do objeto para label
168
+ optionValue: 'id', // Campo do objeto para value
169
+ optionFilter: true, // Habilita filtro de busca
170
+ optionShowClear: true, // Mostra botão limpar
171
+ validators: [Validators.required]
172
+ }
173
+
174
+ // No componente, passe os dados diretamente:
175
+ this.service.loadCidades().subscribe(cidades => {
176
+ this.atualizarCampo('cidade', { options: cidades });
177
+ });
178
+ ```
179
+
180
+ #### Com optionMapper (Labels Compostos)
181
+
182
+ ```typescript
183
+ {
184
+ key: 'cidade',
185
+ controlType: 'select',
186
+ label: 'Cidade',
187
+ options: [],
188
+ optionMapper: (cidade) => ({
189
+ label: `${cidade.nome} - ${cidade.uf}`, // Label composto
190
+ value: cidade.id
191
+ }),
192
+ optionFilter: true,
193
+ validators: [Validators.required]
194
+ }
195
+ ```
196
+
197
+ **Propriedades Disponíveis:**
198
+
199
+ - `optionLabel?`: Nome do campo para label (default: `'label'`)
200
+ - `optionValue?`: Nome do campo para value (default: `'value'`)
201
+ - `optionMapper?`: Função para mapear itens (tem prioridade sobre optionLabel/optionValue)
202
+ - `optionFilter?`: Habilita filtro de busca
203
+ - `optionShowClear?`: Mostra botão para limpar seleção
204
+
155
205
  ### Campo DatePicker
156
206
 
157
207
  ```typescript
@@ -337,7 +387,12 @@ interface iFormConfig {
337
387
  disabled?: boolean; // Campo desabilitado
338
388
  enabledWhen?: string; // Chave do toggle que controla este campo
339
389
  styleClass?: string; // Classes CSS customizadas
340
- options?: iFieldOption[]; // Opções para select (obrigatório se controlType for 'select')
390
+ options?: iFieldOption[] | unknown[]; // Opções para select (obrigatório se controlType for 'select')
391
+ optionLabel?: string; // Campo do objeto para label no select (default: 'label')
392
+ optionValue?: string; // Campo do objeto para value no select (default: 'value')
393
+ optionMapper?: (item: any) => iFieldOption; // Função para mapear itens (tem prioridade sobre optionLabel/optionValue)
394
+ optionFilter?: boolean; // Habilita filtro de busca no select
395
+ optionShowClear?: boolean; // Mostra botão para limpar seleção no select
341
396
  validators?: ValidatorFn[]; // Validadores Angular
342
397
  dateFormat?: string; // Formato da data (default: 'dd/mm/yy')
343
398
  dateViewType?: 'date' | 'month' | 'year'; // Tipo de visualização da data (default: 'date')
@@ -346,12 +401,21 @@ interface iFormConfig {
346
401
  textareaCols?: number; // Número de colunas do textarea
347
402
  toggleTrueValue?: any; // Valor quando toggle está ativo (default: true)
348
403
  toggleFalseValue?: any; // Valor quando toggle está inativo (default: false)
349
- buttonConfig?: { // Configuração do botão para campos 'input-button'
404
+ buttonConfig?: {
405
+ // Configuração do botão para campos 'input-button'
350
406
  icon?: string; // Ícone do PrimeIcons
351
407
  label?: string; // Texto do botão
352
408
  tooltip?: string; // Tooltip do botão
353
409
  position?: 'left' | 'right'; // Posição do botão (default: 'right')
354
- severity?: 'primary' | 'secondary' | 'success' | 'info' | 'warning' | 'danger' | 'help' | 'contrast'; // Estilo do botão
410
+ severity?:
411
+ | 'primary'
412
+ | 'secondary'
413
+ | 'success'
414
+ | 'info'
415
+ | 'warning'
416
+ | 'danger'
417
+ | 'help'
418
+ | 'contrast'; // Estilo do botão
355
419
  };
356
420
  buttonCallback?: (fieldKey: string, fieldValue: any) => void | Promise<void>; // Callback executado ao clicar no botão
357
421
  }
@@ -523,6 +523,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImpor
523
523
  class RadioButtonFieldComponent {
524
524
  form = input.required(...(ngDevMode ? [{ debugName: "form" }] : []));
525
525
  field = input.required(...(ngDevMode ? [{ debugName: "field" }] : []));
526
+ options = computed(() => {
527
+ return this.field().options;
528
+ }, ...(ngDevMode ? [{ debugName: "options" }] : []));
526
529
  layout = computed(() => {
527
530
  return this.field().radioLayout ?? 'vertical';
528
531
  }, ...(ngDevMode ? [{ debugName: "layout" }] : []));
@@ -544,7 +547,7 @@ class RadioButtonFieldComponent {
544
547
  [class.radiobutton-options-horizontal]="layout() === 'horizontal'"
545
548
  [class.radiobutton-options-vertical]="layout() === 'vertical'"
546
549
  >
547
- @for (option of field().options; track option.value) {
550
+ @for (option of options(); track option.value) {
548
551
  <div class="radiobutton-option">
549
552
  <p-radiobutton
550
553
  [formControlName]="field().key"
@@ -577,7 +580,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImpor
577
580
  [class.radiobutton-options-horizontal]="layout() === 'horizontal'"
578
581
  [class.radiobutton-options-vertical]="layout() === 'vertical'"
579
582
  >
580
- @for (option of field().options; track option.value) {
583
+ @for (option of options(); track option.value) {
581
584
  <div class="radiobutton-option">
582
585
  <p-radiobutton
583
586
  [formControlName]="field().key"
@@ -602,6 +605,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImpor
602
605
  class SelectFieldComponent {
603
606
  form = input.required(...(ngDevMode ? [{ debugName: "form" }] : []));
604
607
  field = input.required(...(ngDevMode ? [{ debugName: "field" }] : []));
608
+ /**
609
+ * Aplica optionMapper se existir, caso contrário retorna as opções originais.
610
+ * Prioridade: optionMapper > optionLabel/optionValue > label/value padrão
611
+ */
612
+ mappedOptions = computed(() => {
613
+ const options = this.field().options ?? [];
614
+ const mapper = this.field().optionMapper;
615
+ if (mapper) {
616
+ return options.map(mapper);
617
+ }
618
+ return options;
619
+ }, ...(ngDevMode ? [{ debugName: "mappedOptions" }] : []));
620
+ /**
621
+ * Determina o optionLabel efetivo a ser usado.
622
+ * Se optionMapper estiver definido, usa 'label' (pois mapper já transformou).
623
+ * Caso contrário, usa optionLabel configurado ou 'label' como padrão.
624
+ */
625
+ effectiveOptionLabel = computed(() => {
626
+ if (this.field().optionMapper) {
627
+ return 'label';
628
+ }
629
+ return this.field().optionLabel ?? 'label';
630
+ }, ...(ngDevMode ? [{ debugName: "effectiveOptionLabel" }] : []));
631
+ /**
632
+ * Determina o optionValue efetivo a ser usado.
633
+ * Se optionMapper estiver definido, usa 'value' (pois mapper já transformou).
634
+ * Caso contrário, usa optionValue configurado ou 'value' como padrão.
635
+ */
636
+ effectiveOptionValue = computed(() => {
637
+ if (this.field().optionMapper) {
638
+ return 'value';
639
+ }
640
+ return this.field().optionValue ?? 'value';
641
+ }, ...(ngDevMode ? [{ debugName: "effectiveOptionValue" }] : []));
605
642
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: SelectFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
606
643
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.7", type: SelectFieldComponent, isStandalone: true, selector: "vp-select-field", inputs: { form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
607
644
  <div [formGroup]="form()">
@@ -609,11 +646,14 @@ class SelectFieldComponent {
609
646
  <p-select
610
647
  [inputId]="field().key"
611
648
  [formControlName]="field().key"
612
- [options]="field().options!"
649
+ [options]="mappedOptions()"
613
650
  [placeholder]="field().placeholder || 'Selecione'"
614
- optionLabel="label"
615
- optionValue="value"
616
- class="w-full" />
651
+ [optionLabel]="effectiveOptionLabel()"
652
+ [optionValue]="effectiveOptionValue()"
653
+ [filter]="field().optionFilter ?? false"
654
+ [showClear]="field().optionShowClear ?? false"
655
+ class="w-full"
656
+ />
617
657
  <label [for]="field().key">{{ field().label }}</label>
618
658
  </p-iftalabel>
619
659
  </div>
@@ -627,11 +667,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImpor
627
667
  <p-select
628
668
  [inputId]="field().key"
629
669
  [formControlName]="field().key"
630
- [options]="field().options!"
670
+ [options]="mappedOptions()"
631
671
  [placeholder]="field().placeholder || 'Selecione'"
632
- optionLabel="label"
633
- optionValue="value"
634
- class="w-full" />
672
+ [optionLabel]="effectiveOptionLabel()"
673
+ [optionValue]="effectiveOptionValue()"
674
+ [filter]="field().optionFilter ?? false"
675
+ [showClear]="field().optionShowClear ?? false"
676
+ class="w-full"
677
+ />
635
678
  <label [for]="field().key">{{ field().label }}</label>
636
679
  </p-iftalabel>
637
680
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"vipsolucoes-dynamic-form.mjs","sources":["../../../projects/dynamic-form/src/lib/interfaces/error-messages.interface.ts","../../../projects/dynamic-form/src/lib/components/form-field-error/form-field-error.component.ts","../../../projects/dynamic-form/src/lib/fields/datepicker-field.component.ts","../../../projects/dynamic-form/src/lib/fields/divider-field.component.ts","../../../projects/dynamic-form/src/lib/directives/text-transform.directive.ts","../../../projects/dynamic-form/src/lib/fields/input-text-field.component.ts","../../../projects/dynamic-form/src/lib/fields/input-button-field.component.ts","../../../projects/dynamic-form/src/lib/fields/number-input-field.component.ts","../../../projects/dynamic-form/src/lib/fields/password-field.component.ts","../../../projects/dynamic-form/src/lib/fields/radiobutton-field.component.ts","../../../projects/dynamic-form/src/lib/fields/select-field.component.ts","../../../projects/dynamic-form/src/lib/fields/textarea-field.component.ts","../../../projects/dynamic-form/src/lib/fields/toggleswitch-field.component.ts","../../../projects/dynamic-form/src/lib/services/field-registry.service.ts","../../../projects/dynamic-form/src/lib/components/dynamic-form/dynamic-form.component.ts","../../../projects/dynamic-form/src/lib/components/dynamic-form/dynamic-form.component.html","../../../projects/dynamic-form/src/lib/i18n/primeng-ptbr.ts","../../../projects/dynamic-form/src/lib/providers/dynamic-form.providers.ts","../../../projects/dynamic-form/src/public-api.ts","../../../projects/dynamic-form/src/vipsolucoes-dynamic-form.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Interface para configuração de mensagens de erro customizadas.\n */\nexport interface DynamicFormErrorMessages {\n required?: string;\n email?: string;\n minlength?: (requiredLength: number) => string;\n maxlength?: (requiredLength: number) => string;\n custom?: (error: any) => string;\n}\n\n/**\n * InjectionToken para prover mensagens de erro customizadas.\n */\nexport const DYNAMIC_FORM_ERROR_MESSAGES = new InjectionToken<DynamicFormErrorMessages>(\n 'DYNAMIC_FORM_ERROR_MESSAGES'\n);\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, input } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\n\nimport { DYNAMIC_FORM_ERROR_MESSAGES, DynamicFormErrorMessages } from '../../interfaces/error-messages.interface';\n\n@Component({\n selector: 'vp-form-field-error',\n standalone: true,\n imports: [CommonModule],\n template: `\n @if (errorMessage) {\n <small class=\"p-error\">{{ errorMessage }}</small>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n margin-top: 0.5rem;\n min-height: 1rem;\n }\n .p-error {\n color: var(--p-red-500, #ef4444);\n font-size: 0.875rem;\n }\n `,\n ],\n})\nexport class DynamicFormErrorComponent {\n control = input.required<AbstractControl>();\n\n private readonly customMessages = inject(DYNAMIC_FORM_ERROR_MESSAGES, { optional: true });\n\n // Mapeamento de erros para mensagens\n private readonly defaultErrorMessages: { [key: string]: (err: any) => string } = {\n required: () => this.customMessages?.required ?? 'Este campo é obrigatório.',\n email: () => this.customMessages?.email ?? 'Por favor, insira um e-mail válido.',\n minlength: (err) => this.customMessages?.minlength?.(err.requiredLength) ?? `Mínimo de ${err.requiredLength} caracteres.`,\n maxlength: (err) => this.customMessages?.maxlength?.(err.requiredLength) ?? `Máximo de ${err.requiredLength} caracteres.`,\n custom: (err) => (this.customMessages?.custom ? this.customMessages.custom(err) : err),\n };\n\n // Getter simples - Angular detecta mudanças automaticamente\n get errorMessage(): string | null {\n const ctrl = this.control();\n if (!ctrl || !ctrl.errors || (!ctrl.touched && !ctrl.dirty)) {\n return null;\n }\n\n const errorKey = Object.keys(ctrl.errors)[0];\n return this.defaultErrorMessages[errorKey] ? this.defaultErrorMessages[errorKey](ctrl.errors[errorKey]) : 'Campo inválido.';\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { IftaLabelModule } from 'primeng/iftalabel';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-datepicker-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, DatePickerModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <p-datepicker\n [inputId]=\"field().key\"\n [formControlName]=\"field().key\"\n [showButtonBar]=\"true\"\n [iconDisplay]=\"'input'\"\n [placeholder]=\"field().placeholder || ''\"\n [dateFormat]=\"dateFormat()\"\n [view]=\"field().dateViewType || 'date'\"\n />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n p-datepicker {\n width: 100%;\n }\n `,\n ],\n})\nexport class DatePickerFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n\n readonly dateFormat = computed(() => {\n const viewType = this.field().dateViewType || 'date';\n const customFormat = this.field().dateFormat;\n\n if (viewType === 'month') {\n return 'mm/yy';\n }\n if (viewType === 'year') {\n return 'yy';\n }\n\n return customFormat || 'dd/mm/yy';\n });\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { DividerModule } from 'primeng/divider';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-divider-field',\n standalone: true,\n imports: [DividerModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <p-divider\n [layout]=\"dividerConfig()?.layout || 'horizontal'\"\n [type]=\"dividerConfig()?.type || 'solid'\"\n [align]=\"dividerConfig()?.align\"\n [styleClass]=\"field().styleClass || ''\"\n >\n @if (dividerConfig()?.content) {\n <b>{{ dividerConfig()?.content }}</b>\n }\n </p-divider>\n `,\n})\nexport class DividerFieldComponent {\n form = input<FormGroup>();\n field = input.required<iFormConfig>();\n\n /**\n * Retorna a configuração do divider do campo.\n * Se não existir, retorna undefined para usar os defaults do PrimeNG.\n */\n dividerConfig() {\n return this.field().dividerConfig;\n }\n}\n","import { Directive, ElementRef, HostListener, inject, Input, OnInit } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n/**\n * Diretiva para transformar texto em uppercase ou lowercase em tempo real.\n * Funciona com Reactive Forms (NgControl) e elementos HTML nativos.\n *\n * @example\n * ```html\n * <!-- Uppercase -->\n * <input [vpTextTransform]=\"'uppercase'\" />\n *\n * <!-- Lowercase -->\n * <input [vpTextTransform]=\"'lowercase'\" />\n *\n * <!-- Desabilitado -->\n * <input [vpTextTransform]=\"null\" />\n * ```\n */\n@Directive({\n selector: '[vpTextTransform]',\n standalone: true,\n})\nexport class TextTransformDirective implements OnInit {\n private readonly elementRef = inject(ElementRef<HTMLInputElement | HTMLTextAreaElement>);\n\n /**\n * NgControl opcional - presente quando usado com reactive forms ou ngModel.\n * Usamos `optional: true` e `self: true` para injetar apenas se estiver no mesmo elemento.\n */\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n /**\n * Tipo de transformação a ser aplicada: 'uppercase' | 'lowercase' | null\n * Quando null ou undefined, a transformação é desabilitada.\n */\n @Input() vpTextTransform: 'uppercase' | 'lowercase' | null = null;\n\n ngOnInit(): void {\n // Aplicar transformação no valor inicial se existir\n const element = this.elementRef.nativeElement;\n const transform = this.vpTextTransform;\n\n if (transform && element.value && typeof element.value === 'string') {\n const transformedValue = this.transformValue(element.value, transform);\n if (transformedValue !== element.value) {\n element.value = transformedValue;\n\n // Atualizar o FormControl se existir\n if (this.ngControl?.control) {\n this.ngControl.control.setValue(transformedValue, { emitEvent: false });\n }\n }\n }\n }\n\n @HostListener('input', ['$event'])\n onInput(event: Event): void {\n const inputElement = event.target as HTMLInputElement | HTMLTextAreaElement;\n const transform = this.vpTextTransform;\n\n // Verifica se a transformação está habilitada\n if (!transform || !inputElement.value) {\n return;\n }\n\n const currentValue = inputElement.value;\n if (typeof currentValue !== 'string') {\n return;\n }\n\n // Preserva a posição do cursor\n const start = inputElement.selectionStart;\n const end = inputElement.selectionEnd;\n\n // Aplica a transformação\n const transformedValue = this.transformValue(currentValue, transform);\n\n // Se o valor já está transformado, não faz nada\n if (currentValue === transformedValue) {\n return;\n }\n\n // Atualiza o valor do elemento\n inputElement.value = transformedValue;\n\n // Restaura a posição do cursor (apenas para inputs de texto)\n if (this.isTextInput(inputElement)) {\n const newStart = Math.min(start ?? 0, transformedValue.length);\n const newEnd = Math.min(end ?? 0, transformedValue.length);\n inputElement.setSelectionRange(newStart, newEnd);\n }\n\n // Se NgControl estiver presente (reactive forms ou ngModel), atualiza através dele\n if (this.ngControl?.control) {\n this.ngControl.control.setValue(transformedValue, { emitEvent: false });\n // Emite o evento manualmente para garantir que os listeners sejam notificados\n this.ngControl.control.updateValueAndValidity({ emitEvent: true });\n } else {\n // Para elementos sem NgControl, dispara evento input manualmente\n // Isso garante compatibilidade com listeners diretos no elemento\n const inputEvent = new Event('input', {\n bubbles: true,\n cancelable: true,\n });\n inputElement.dispatchEvent(inputEvent);\n }\n }\n\n /**\n * Aplica a transformação de texto baseada no tipo especificado.\n */\n private transformValue(value: string, transform: 'uppercase' | 'lowercase'): string {\n return transform === 'uppercase' ? value.toUpperCase() : value.toLowerCase();\n }\n\n /**\n * Verifica se o elemento é um input de texto que suporta seleção de cursor.\n */\n private isTextInput(element: HTMLInputElement | HTMLTextAreaElement): boolean {\n if (element.tagName === 'TEXTAREA') {\n return true;\n }\n\n const inputElement = element as HTMLInputElement;\n return (\n inputElement.type === 'text' ||\n inputElement.type === 'search' ||\n inputElement.type === 'email' ||\n inputElement.type === 'url' ||\n inputElement.type === 'tel' ||\n !inputElement.type // type padrão é 'text'\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { InputTextModule } from 'primeng/inputtext';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\nimport { TextTransformDirective } from '../directives/text-transform.directive';\n\n@Component({\n selector: 'vp-input-text-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, InputTextModule, TextTransformDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <input\n pInputText\n [id]=\"field().key\"\n [type]=\"field().controlType\"\n [formControlName]=\"field().key\"\n [placeholder]=\"field().placeholder || ''\"\n [vpTextTransform]=\"field().textTransform || null\"\n />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n input {\n width: 100%;\n }\n `,\n ],\n})\nexport class InputTextFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { ButtonModule } from 'primeng/button';\nimport { TooltipModule } from 'primeng/tooltip';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\nimport { TextTransformDirective } from '../directives/text-transform.directive';\n\n@Component({\n selector: 'vp-input-button-field',\n standalone: true,\n imports: [\n ReactiveFormsModule,\n IftaLabelModule,\n InputTextModule,\n InputGroupModule,\n InputGroupAddonModule,\n ButtonModule,\n TooltipModule,\n TextTransformDirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-inputgroup>\n @if (buttonPosition() === 'left') {\n <p-button\n type=\"button\"\n [icon]=\"buttonConfig()?.icon || ''\"\n [label]=\"buttonConfig()?.label || ''\"\n [severity]=\"buttonConfig()?.severity || 'primary'\"\n [pTooltip]=\"buttonConfig()?.tooltip || ''\"\n tooltipPosition=\"top\"\n (click)=\"onButtonClick()\"\n [disabled]=\"isFieldDisabled()\"\n />\n }\n\n <p-iftalabel>\n <input\n pInputText\n [id]=\"field().key\"\n [formControlName]=\"field().key\"\n [placeholder]=\"field().placeholder || ''\"\n [vpTextTransform]=\"field().textTransform || null\"\n />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n\n @if (buttonPosition() === 'right') {\n <p-button\n type=\"button\"\n [icon]=\"buttonConfig()?.icon || ''\"\n [label]=\"buttonConfig()?.label || ''\"\n [severity]=\"buttonConfig()?.severity || 'primary'\"\n [pTooltip]=\"buttonConfig()?.tooltip || ''\"\n tooltipPosition=\"top\"\n (click)=\"onButtonClick()\"\n [disabled]=\"isFieldDisabled()\"\n />\n }\n </p-inputgroup>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-inputgroup {\n display: flex;\n width: 100%;\n }\n p-iftalabel {\n flex: 1;\n }\n `,\n ],\n})\nexport class InputButtonFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n\n buttonConfig() {\n return this.field().buttonConfig;\n }\n\n buttonPosition(): 'left' | 'right' {\n return this.buttonConfig()?.position || 'right';\n }\n\n isFieldDisabled(): boolean {\n const control = this.form().get(this.field().key);\n return control?.disabled ?? false;\n }\n\n onButtonClick(): void {\n const control = this.form().get(this.field().key);\n const value = control?.value;\n const callback = this.field().buttonCallback;\n\n if (callback) {\n callback(this.field().key, value);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { InputNumberModule } from 'primeng/inputnumber';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-number-input-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, InputNumberModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <p-inputNumber [id]=\"field().key\" [formControlName]=\"field().key\" [placeholder]=\"field().placeholder || ''\" styleClass=\"w-full\" class=\"w-full\" />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n :host ::ng-deep p-inputNumber,\n :host ::ng-deep .p-inputnumber,\n :host ::ng-deep .p-inputnumber input {\n width: 100%;\n }\n `,\n ],\n})\nexport class NumberInputFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { PasswordModule } from 'primeng/password';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-password-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, PasswordModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <p-password\n [id]=\"field().key\"\n [formControlName]=\"field().key\"\n [feedback]=\"false\"\n [toggleMask]=\"true\"\n [placeholder]=\"field().placeholder || ''\"\n styleClass=\"w-full\"\n class=\"w-full\" />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n :host ::ng-deep .p-password,\n :host ::ng-deep .p-password input {\n width: 100%;\n }\n `,\n ],\n})\nexport class PasswordFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { RadioButtonModule } from 'primeng/radiobutton';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-radiobutton-field',\n standalone: true,\n imports: [ReactiveFormsModule, RadioButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\" class=\"radiobutton-field\">\n @if (field().label) {\n <label class=\"radiobutton-group-label\">{{ field().label }}</label>\n }\n <div\n class=\"radiobutton-options\"\n [class.radiobutton-options-horizontal]=\"layout() === 'horizontal'\"\n [class.radiobutton-options-vertical]=\"layout() === 'vertical'\"\n >\n @for (option of field().options; track option.value) {\n <div class=\"radiobutton-option\">\n <p-radiobutton\n [formControlName]=\"field().key\"\n [name]=\"field().key\"\n [value]=\"option.value\"\n [inputId]=\"getInputId(option.value)\"\n [invalid]=\"isInvalid()\"\n />\n <label [for]=\"getInputId(option.value)\" class=\"radiobutton-option-label\">\n {{ option.label }}\n </label>\n </div>\n }\n </div>\n @if (field().hint) {\n <small class=\"radiobutton-hint\">{{ field().hint }}</small>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n .radiobutton-field {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n width: 100%;\n }\n .radiobutton-group-label {\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--p-text-color, #333);\n margin-bottom: 0.25rem;\n }\n .radiobutton-options {\n display: flex;\n width: 100%;\n }\n .radiobutton-options-horizontal {\n flex-direction: row;\n flex-wrap: wrap;\n gap: 1rem;\n }\n .radiobutton-options-vertical {\n flex-direction: column;\n gap: 0.75rem;\n }\n .radiobutton-option {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n .radiobutton-option-label {\n cursor: pointer;\n user-select: none;\n font-size: 0.875rem;\n color: var(--p-text-color, #333);\n margin: 0;\n }\n .radiobutton-hint {\n display: block;\n font-size: 0.75rem;\n color: var(--p-text-muted-color, #666);\n margin-top: 0.25rem;\n }\n `,\n ],\n})\nexport class RadioButtonFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n\n layout = computed(() => {\n return this.field().radioLayout ?? 'vertical';\n });\n\n isInvalid = computed(() => {\n const control = this.form().get(this.field().key);\n return control ? control.invalid && (control.touched || control.dirty) : false;\n });\n\n getInputId(value: any): string {\n return `${this.field().key}-${String(value).replace(/\\s+/g, '-').toLowerCase()}`;\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { SelectModule } from 'primeng/select';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-select-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, SelectModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <p-select\n [inputId]=\"field().key\"\n [formControlName]=\"field().key\"\n [options]=\"field().options!\"\n [placeholder]=\"field().placeholder || 'Selecione'\"\n optionLabel=\"label\"\n optionValue=\"value\"\n class=\"w-full\" />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n p-select {\n width: 100%;\n }\n `,\n ],\n})\nexport class SelectFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { TextareaModule } from 'primeng/textarea';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\nimport { TextTransformDirective } from '../directives/text-transform.directive';\n\n@Component({\n selector: 'vp-textarea-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, TextareaModule, TextTransformDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <textarea\n pTextarea\n [id]=\"field().key\"\n [formControlName]=\"field().key\"\n [placeholder]=\"field().placeholder || ''\"\n [rows]=\"field().textareaRows ?? 1\"\n [cols]=\"field().textareaCols\"\n [autoResize]=\"field().textareaAutoResize ?? false\"\n [vpTextTransform]=\"field().textTransform || null\"\n ></textarea>\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n textarea {\n width: 100%;\n }\n `,\n ],\n})\nexport class TextareaFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { ToggleSwitchModule } from 'primeng/toggleswitch';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-toggleswitch-field',\n standalone: true,\n imports: [ReactiveFormsModule, ToggleSwitchModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\" class=\"toggleswitch-field\">\n <p-toggleswitch\n [formControlName]=\"field().key\"\n [inputId]=\"field().key\"\n [invalid]=\"isInvalid()\"\n [trueValue]=\"field().toggleTrueValue ?? true\"\n [falseValue]=\"field().toggleFalseValue ?? false\" />\n <label [for]=\"field().key\" class=\"toggleswitch-label\">{{ field().label }}</label>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n .toggleswitch-field {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n width: 100%;\n }\n .toggleswitch-label {\n cursor: pointer;\n user-select: none;\n font-size: 0.875rem;\n color: var(--p-text-color, #333);\n margin: 0;\n }\n p-toggleswitch {\n flex-shrink: 0;\n }\n `,\n ],\n})\nexport class ToggleSwitchFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n\n isInvalid = computed(() => {\n const control = this.form().get(this.field().key);\n return control ? control.invalid && (control.touched || control.dirty) : false;\n });\n}\n","import { Injectable, signal, Type } from '@angular/core';\n\n/**\n * Serviço para registro de campos customizados.\n * Permite adicionar novos tipos de campos dinamicamente.\n */\n@Injectable({ providedIn: 'root' })\nexport class FieldRegistryService {\n private readonly registry = signal<Map<string, Type<any>>>(new Map());\n\n /**\n * Registra um novo tipo de campo.\n * @param type Tipo do campo (ex: 'custom', 'file', etc.)\n * @param component Componente Angular que renderiza o campo\n */\n registerField(type: string, component: Type<any>): void {\n this.registry.update((map) => new Map(map).set(type, component));\n }\n\n /**\n * Obtém o componente registrado para um tipo de campo.\n * @param type Tipo do campo\n * @returns Componente Angular ou undefined se não encontrado\n */\n getField(type: string): Type<any> | undefined {\n return this.registry().get(type);\n }\n\n /**\n * Remove um tipo de campo do registro.\n * @param type Tipo do campo a ser removido\n */\n unregisterField(type: string): void {\n this.registry.update((map) => {\n const newMap = new Map(map);\n newMap.delete(type);\n return newMap;\n });\n }\n\n /**\n * Limpa todos os campos registrados.\n */\n clear(): void {\n this.registry.set(new Map());\n }\n}\n","import { CommonModule, NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, inject, input, OnInit, output, Type } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AbstractControl, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\n\nimport { DynamicFormErrorComponent } from '../form-field-error/form-field-error.component';\nimport { DatePickerFieldComponent } from '../../fields/datepicker-field.component';\nimport { DividerFieldComponent } from '../../fields/divider-field.component';\nimport { InputTextFieldComponent } from '../../fields/input-text-field.component';\nimport { InputButtonFieldComponent } from '../../fields/input-button-field.component';\nimport { NumberInputFieldComponent } from '../../fields/number-input-field.component';\nimport { PasswordFieldComponent } from '../../fields/password-field.component';\nimport { RadioButtonFieldComponent } from '../../fields/radiobutton-field.component';\nimport { SelectFieldComponent } from '../../fields/select-field.component';\nimport { TextareaFieldComponent } from '../../fields/textarea-field.component';\nimport { ToggleSwitchFieldComponent } from '../../fields/toggleswitch-field.component';\nimport { iFormConfig } from '../../interfaces/form-config.interface';\nimport { FieldRegistryService } from '../../services/field-registry.service';\n\n@Component({\n selector: 'vp-dynamic-form',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, NgComponentOutlet, DynamicFormErrorComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './dynamic-form.component.html',\n styleUrl: './dynamic-form.component.scss',\n})\nexport class DynamicFormComponent implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly fieldRegistry = inject(FieldRegistryService);\n\n config = input.required<iFormConfig[]>();\n formReady = output<FormGroup>();\n\n form = new FormGroup({});\n\n readonly fieldComponents: { [key: string]: Type<any> } = {\n text: InputTextFieldComponent,\n email: InputTextFieldComponent,\n password: PasswordFieldComponent,\n number: NumberInputFieldComponent,\n select: SelectFieldComponent,\n datepicker: DatePickerFieldComponent,\n textarea: TextareaFieldComponent,\n toggleswitch: ToggleSwitchFieldComponent,\n 'input-button': InputButtonFieldComponent,\n divider: DividerFieldComponent,\n radiobutton: RadioButtonFieldComponent,\n };\n\n ngOnInit(): void {\n const configValue = this.config();\n if (configValue && configValue.length > 0) {\n this.buildForm(configValue);\n this.setupFieldDependencies(configValue);\n this.formReady.emit(this.form);\n }\n }\n\n private buildForm(config: iFormConfig[]): void {\n config.forEach((field) => {\n // Campos do tipo 'divider' não criam FormControl, são apenas elementos visuais\n if (field.controlType === 'divider') {\n return;\n }\n\n // Para toggle switch, o valor padrão é false se não especificado\n // Para radiobutton, o valor padrão é null se não especificado\n let defaultValue: any;\n if (field.controlType === 'toggleswitch') {\n defaultValue = field.value ?? false;\n } else if (field.controlType === 'radiobutton') {\n defaultValue = field.value ?? null;\n } else {\n defaultValue = field.value ?? '';\n }\n\n // Se o campo tem enabledWhen, ele deve começar desabilitado a menos que o toggle já esteja ativo\n const shouldBeDisabled = field.disabled ?? (field.enabledWhen ? !this.getToggleValue(field.enabledWhen, config) : false);\n\n const control = shouldBeDisabled\n ? new FormControl(\n { value: defaultValue, disabled: true },\n {\n validators: field.validators ?? [],\n }\n )\n : new FormControl(defaultValue, {\n validators: field.validators ?? [],\n });\n this.form.addControl(field.key, control);\n });\n }\n\n private setupFieldDependencies(config: iFormConfig[]): void {\n config.forEach((field) => {\n if (!field.enabledWhen) {\n return;\n }\n\n const toggleField = config.find((f) => f.key === field.enabledWhen);\n\n if (!toggleField) {\n console.warn(\n `DynamicFormComponent: Campo '${field.key}' referencia '${field.enabledWhen}' em enabledWhen, mas este campo não existe no formulário.`\n );\n return;\n }\n\n if (toggleField.controlType !== 'toggleswitch') {\n console.warn(\n `DynamicFormComponent: Campo '${field.key}' referencia '${field.enabledWhen}' em enabledWhen, mas este campo não é do tipo 'toggleswitch'.`\n );\n return;\n }\n\n const toggleControl = this.form.get(field.enabledWhen);\n const dependentControl = this.form.get(field.key);\n\n if (!toggleControl || !dependentControl) {\n console.warn(\n `DynamicFormComponent: Não foi possível encontrar os controles para configurar a dependência entre '${field.enabledWhen}' e '${field.key}'.`\n );\n return;\n }\n\n // Configura a subscription para reagir às mudanças do toggle\n toggleControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((toggleValue) => {\n const isToggleActive = toggleValue === (toggleField.toggleTrueValue ?? true);\n\n if (isToggleActive) {\n dependentControl.enable();\n } else {\n // Limpa o valor do campo antes de desabilitá-lo\n const resetValue = this.getResetValueForFieldType(field.controlType);\n dependentControl.setValue(resetValue, { emitEvent: false });\n dependentControl.disable();\n }\n });\n });\n }\n\n private getToggleValue(toggleKey: string, config: iFormConfig[]): boolean {\n const toggleField = config.find((f) => f.key === toggleKey);\n if (!toggleField || toggleField.controlType !== 'toggleswitch') {\n return false;\n }\n\n const toggleTrueValue = toggleField.toggleTrueValue ?? true;\n const toggleValue = toggleField.value ?? false;\n\n return toggleValue === toggleTrueValue;\n }\n\n /**\n * Retorna o valor padrão de reset para cada tipo de campo.\n * Usado quando um campo dependente é desabilitado e precisa ser limpo.\n */\n private getResetValueForFieldType(controlType: string): any {\n switch (controlType) {\n case 'text':\n case 'email':\n case 'password':\n case 'textarea':\n case 'input-button':\n return '';\n case 'number':\n return null;\n case 'select':\n return null;\n case 'radiobutton':\n return null;\n case 'datepicker':\n return null;\n default:\n return '';\n }\n }\n\n /**\n * Obtém o componente a ser renderizado para um tipo de campo.\n * Primeiro verifica no registro customizado, depois nos componentes padrão.\n */\n getFieldComponent(controlType: string): Type<any> | null {\n // Verifica primeiro no registro customizado\n const customComponent = this.fieldRegistry.getField(controlType);\n if (customComponent) {\n return customComponent;\n }\n\n // Fallback para componentes padrão\n return this.fieldComponents[controlType] || null;\n }\n\n getControl(key: string): AbstractControl {\n const control = this.form.get(key);\n if (!control) {\n console.warn(`DynamicFormComponent: Controle não encontrado para a chave: ${key}`);\n }\n return control!;\n }\n}\n","<form [formGroup]=\"form\" class=\"dynamic-form-container\">\n @for (field of config(); track field.key) { @if (field.visible !== false) { @if\n (getFieldComponent(field.controlType); as fieldComponent) {\n <div [class]=\"'form-field-wrapper ' + (field.styleClass || '')\">\n <!-- Dynamically render the correct field component -->\n <ng-container\n [ngComponentOutlet]=\"fieldComponent\"\n [ngComponentOutletInputs]=\"{ form: form, field: field }\"\n />\n\n @if (field.hint && field.controlType !== 'divider') {\n <small class=\"hint-text\">{{ field.hint }}</small>\n }\n\n <!-- Reusable error display component - apenas para campos que não são divider -->\n @if (field.controlType !== 'divider') {\n <vp-form-field-error [control]=\"getControl(field.key)\" />\n }\n </div>\n } @else {\n <div class=\"form-field-wrapper\">\n <small class=\"p-error\">Tipo de campo '{{ field.controlType }}' não encontrado.</small>\n </div>\n } } }\n</form>\n","import { Translation } from 'primeng/api';\n\nexport const PRIMENG_PTBR: Translation = {\n // Filtros\n startsWith: 'Começa com',\n contains: 'Contém',\n notContains: 'Não contém',\n endsWith: 'Termina com',\n equals: 'Igual',\n notEquals: 'Diferente',\n noFilter: 'Sem filtro',\n lt: 'Menor que',\n lte: 'Menor ou igual a',\n gt: 'Maior que',\n gte: 'Maior ou igual a',\n is: 'É',\n isNot: 'Não é',\n before: 'Antes',\n after: 'Depois',\n dateIs: 'Data é',\n dateIsNot: 'Data não é',\n dateBefore: 'Data antes',\n dateAfter: 'Data depois',\n\n // Regras\n clear: 'Limpar',\n apply: 'Aplicar',\n matchAll: 'Corresponder a todos',\n matchAny: 'Corresponder a qualquer',\n addRule: 'Adicionar regra',\n removeRule: 'Remover regra',\n\n // Ações\n accept: 'Sim',\n reject: 'Não',\n choose: 'Escolher',\n upload: 'Enviar',\n cancel: 'Cancelar',\n completed: 'Concluído',\n pending: 'Pendente',\n\n // Arquivos\n fileSizeTypes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],\n emptyMessage: 'Nenhum registro encontrado',\n emptyFilterMessage: 'Nenhum resultado encontrado',\n fileChosenMessage: '{0} arquivo(s) selecionado(s)',\n noFileChosenMessage: 'Nenhum arquivo selecionado',\n\n // Datas\n dayNames: ['Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado'],\n dayNamesShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'],\n dayNamesMin: ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'],\n monthNames: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],\n monthNamesShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],\n dateFormat: 'dd/mm/yy',\n firstDayOfWeek: 0,\n today: 'Hoje',\n weekHeader: 'Sem',\n\n // Password\n weak: 'Fraca',\n medium: 'Média',\n strong: 'Forte',\n passwordPrompt: 'Digite uma senha',\n\n // Date navigation\n chooseYear: 'Escolher ano',\n chooseMonth: 'Escolher mês',\n chooseDate: 'Escolher data',\n prevDecade: 'Década anterior',\n nextDecade: 'Próxima década',\n prevYear: 'Ano anterior',\n nextYear: 'Próximo ano',\n prevMonth: 'Mês anterior',\n nextMonth: 'Próximo mês',\n prevHour: 'Hora anterior',\n nextHour: 'Próxima hora',\n prevMinute: 'Minuto anterior',\n nextMinute: 'Próximo minuto',\n prevSecond: 'Segundo anterior',\n nextSecond: 'Próximo segundo',\n am: 'AM',\n pm: 'PM',\n\n // Busca / seleção\n searchMessage: 'Digite para pesquisar',\n selectionMessage: '{0} item(ns) selecionado(s)',\n emptySelectionMessage: 'Nenhum item selecionado',\n emptySearchMessage: 'Nenhum resultado encontrado',\n\n // ARIA (acessibilidade)\n aria: {\n trueLabel: 'Verdadeiro',\n falseLabel: 'Falso',\n nullLabel: 'Não selecionado',\n star: '1 estrela',\n stars: '{star} estrelas',\n selectAll: 'Selecionar todos',\n unselectAll: 'Desmarcar todos',\n close: 'Fechar',\n previous: 'Anterior',\n next: 'Próximo',\n navigation: 'Navegação',\n scrollTop: 'Rolar para o topo',\n moveTop: 'Mover para o topo',\n moveUp: 'Mover para cima',\n moveDown: 'Mover para baixo',\n moveBottom: 'Mover para o final',\n moveToTarget: 'Mover para o destino',\n moveToSource: 'Mover para a origem',\n moveAllToTarget: 'Mover todos para o destino',\n moveAllToSource: 'Mover todos para a origem',\n pageLabel: 'Página {page}',\n firstPageLabel: 'Primeira página',\n lastPageLabel: 'Última página',\n nextPageLabel: 'Próxima página',\n prevPageLabel: 'Página anterior',\n rowsPerPageLabel: 'Itens por página',\n previousPageLabel: 'Página anterior',\n jumpToPageDropdownLabel: 'Pular para página',\n jumpToPageInputLabel: 'Ir para página',\n selectRow: 'Selecionar linha',\n unselectRow: 'Desmarcar linha',\n expandRow: 'Expandir linha',\n collapseRow: 'Recolher linha',\n showFilterMenu: 'Mostrar menu de filtro',\n hideFilterMenu: 'Ocultar menu de filtro',\n filterOperator: 'Operador de filtro',\n filterConstraint: 'Restrição de filtro',\n editRow: 'Editar linha',\n saveEdit: 'Salvar edição',\n cancelEdit: 'Cancelar edição',\n listView: 'Visualização em lista',\n gridView: 'Visualização em grade',\n slide: 'Slide',\n slideNumber: 'Slide {slideNumber}',\n zoomImage: 'Ampliar imagem',\n zoomIn: 'Aumentar zoom',\n zoomOut: 'Reduzir zoom',\n rotateRight: 'Girar à direita',\n rotateLeft: 'Girar à esquerda',\n listLabel: 'Lista',\n selectColor: 'Selecionar cor',\n removeLabel: 'Remover',\n browseFiles: 'Procurar arquivos',\n maximizeLabel: 'Maximizar',\n minimizeLabel: 'Minimizar',\n },\n};\n","import { Provider } from '@angular/core';\n\nimport { DYNAMIC_FORM_ERROR_MESSAGES, DynamicFormErrorMessages } from '../interfaces/error-messages.interface';\n\n/**\n * Provider para configurar mensagens de erro customizadas.\n * @param messages Mensagens de erro customizadas\n * @returns Provider configurado\n */\nexport function provideDynamicFormConfig(messages?: DynamicFormErrorMessages): Provider[] {\n const providers: Provider[] = [];\n\n if (messages) {\n providers.push({\n provide: DYNAMIC_FORM_ERROR_MESSAGES,\n useValue: messages,\n });\n }\n\n return providers;\n}\n","import { PRIMENG_PTBR } from './lib/i18n/primeng-ptbr';\n/*\n * Public API Surface of @vipsolucoes/dynamic-form\n */\n\n// Componentes\nexport { DynamicFormComponent } from './lib/components/dynamic-form/dynamic-form.component';\nexport { DynamicFormErrorComponent } from './lib/components/form-field-error/form-field-error.component';\n\n// Fields (para uso standalone)\nexport { InputTextFieldComponent } from './lib/fields/input-text-field.component';\nexport { InputButtonFieldComponent } from './lib/fields/input-button-field.component';\nexport { SelectFieldComponent } from './lib/fields/select-field.component';\nexport { DatePickerFieldComponent } from './lib/fields/datepicker-field.component';\nexport { NumberInputFieldComponent } from './lib/fields/number-input-field.component';\nexport { PasswordFieldComponent } from './lib/fields/password-field.component';\nexport { TextareaFieldComponent } from './lib/fields/textarea-field.component';\nexport { ToggleSwitchFieldComponent } from './lib/fields/toggleswitch-field.component';\nexport { RadioButtonFieldComponent } from './lib/fields/radiobutton-field.component';\nexport { DividerFieldComponent } from './lib/fields/divider-field.component';\n\n// Interfaces\nexport type { iFormConfig, iFieldOption } from './lib/interfaces/form-config.interface';\nexport type { DynamicFormErrorMessages } from './lib/interfaces/error-messages.interface';\nexport { DYNAMIC_FORM_ERROR_MESSAGES } from './lib/interfaces/error-messages.interface';\n\n// Services\nexport { FieldRegistryService } from './lib/services/field-registry.service';\n\n// Directives\nexport { TextTransformDirective } from './lib/directives/text-transform.directive';\n\n// Utility functions\nexport { PRIMENG_PTBR } from './lib/i18n/primeng-ptbr';\nexport { provideDynamicFormConfig } from './lib/providers/dynamic-form.providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i2"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA;;AAEG;MACU,2BAA2B,GAAG,IAAI,cAAc,CAC3D,6BAA6B;;MCYlB,yBAAyB,CAAA;AACpC,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAmB;IAE1B,cAAc,GAAG,MAAM,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAGxE,IAAA,oBAAoB,GAA4C;QAC/E,QAAQ,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE,QAAQ,IAAI,2BAA2B;QAC5E,KAAK,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,qCAAqC;QAChF,SAAS,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,GAAG,CAAC,cAAc,CAAC,IAAI,CAAA,UAAA,EAAa,GAAG,CAAC,cAAc,CAAA,YAAA,CAAc;QACzH,SAAS,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,GAAG,CAAC,cAAc,CAAC,IAAI,CAAA,UAAA,EAAa,GAAG,CAAC,cAAc,CAAA,YAAA,CAAc;QACzH,MAAM,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;KACvF;;AAGD,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;QAC3B,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC3D,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,iBAAiB;IAC7H;uGAvBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnB1B;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,oHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EALS,YAAY,EAAA,CAAA,EAAA,CAAA;;2FAoBX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAvBrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cACnB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EACb;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,oHAAA,CAAA,EAAA;;;MC8BU,wBAAwB,CAAA;AACnC,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAa;AAClC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAe;AAE5B,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,IAAI,MAAM;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU;AAE5C,QAAA,IAAI,QAAQ,KAAK,OAAO,EAAE;AACxB,YAAA,OAAO,OAAO;QAChB;AACA,QAAA,IAAI,QAAQ,KAAK,MAAM,EAAE;AACvB,YAAA,OAAO,IAAI;QACb;QAEA,OAAO,YAAY,IAAI,UAAU;AACnC,IAAA,CAAC,sDAAC;uGAhBS,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhCzB;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAjBS,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,aAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAkCrD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBArCpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,CAAC,EAAA,eAAA,EAChD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,gGAAA,CAAA,EAAA;;;MCHU,qBAAqB,CAAA;IAChC,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAa;AACzB,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAe;AAErC;;;AAGG;IACH,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,aAAa;IACnC;uGAVW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAbtB;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAbS,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAeZ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAlBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,aAAa,CAAC;oBACxB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;AAWT,EAAA,CAAA;AACF,iBAAA;;;ACpBD;;;;;;;;;;;;;;;AAeG;MAKU,sBAAsB,CAAA;AAChB,IAAA,UAAU,GAAG,MAAM,EAAC,UAAkD,EAAC;AAExF;;;AAGG;AACc,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAE9E;;;AAGG;IACM,eAAe,GAAqC,IAAI;IAEjE,QAAQ,GAAA;;AAEN,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAC7C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe;AAEtC,QAAA,IAAI,SAAS,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;AACnE,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC;AACtE,YAAA,IAAI,gBAAgB,KAAK,OAAO,CAAC,KAAK,EAAE;AACtC,gBAAA,OAAO,CAAC,KAAK,GAAG,gBAAgB;;AAGhC,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE;AAC3B,oBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gBACzE;YACF;QACF;IACF;AAGA,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,MAAgD;AAC3E,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe;;QAGtC,IAAI,CAAC,SAAS,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;YACrC;QACF;AAEA,QAAA,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK;AACvC,QAAA,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;YACpC;QACF;;AAGA,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,cAAc;AACzC,QAAA,MAAM,GAAG,GAAG,YAAY,CAAC,YAAY;;QAGrC,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC;;AAGrE,QAAA,IAAI,YAAY,KAAK,gBAAgB,EAAE;YACrC;QACF;;AAGA,QAAA,YAAY,CAAC,KAAK,GAAG,gBAAgB;;AAGrC,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE;AAClC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC;AAC9D,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC;AAC1D,YAAA,YAAY,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC;QAClD;;AAGA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;AAEvE,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QACpE;aAAO;;;AAGL,YAAA,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE;AACpC,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,UAAU,EAAE,IAAI;AACjB,aAAA,CAAC;AACF,YAAA,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC;QACxC;IACF;AAEA;;AAEG;IACK,cAAc,CAAC,KAAa,EAAE,SAAoC,EAAA;AACxE,QAAA,OAAO,SAAS,KAAK,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE;IAC9E;AAEA;;AAEG;AACK,IAAA,WAAW,CAAC,OAA+C,EAAA;AACjE,QAAA,IAAI,OAAO,CAAC,OAAO,KAAK,UAAU,EAAE;AAClC,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,YAAY,GAAG,OAA2B;AAChD,QAAA,QACE,YAAY,CAAC,IAAI,KAAK,MAAM;YAC5B,YAAY,CAAC,IAAI,KAAK,QAAQ;YAC9B,YAAY,CAAC,IAAI,KAAK,OAAO;YAC7B,YAAY,CAAC,IAAI,KAAK,KAAK;YAC3B,YAAY,CAAC,IAAI,KAAK,KAAK;AAC3B,YAAA,CAAC,YAAY,CAAC,IAAI;;IAEtB;uGA9GW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;sBAcE;;sBAoBA,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;MCZtB,uBAAuB,CAAA;AAClC,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAa;AAClC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAe;uGAF1B,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/BxB;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAhBS,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,yNAAE,sBAAsB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAiC5E,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBApCnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cACnB,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,eAAe,EAAE,eAAe,EAAE,sBAAsB,CAAC,EAAA,eAAA,EACvE,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,yFAAA,CAAA,EAAA;;;MCyDU,yBAAyB,CAAA;AACpC,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAa;AAClC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAe;IAErC,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY;IAClC;IAEA,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,IAAI,OAAO;IACjD;IAEA,eAAe,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC;AACjD,QAAA,OAAO,OAAO,EAAE,QAAQ,IAAI,KAAK;IACnC;IAEA,aAAa,GAAA;AACX,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC;AACjD,QAAA,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,cAAc;QAE5C,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC;QACnC;IACF;uGAzBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1D1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAnDC,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACrB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,aAAa,qaACb,sBAAsB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FA6Db,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAxErC,SAAS;+BACE,uBAAuB,EAAA,UAAA,EACrB,IAAI,EAAA,OAAA,EACP;wBACP,mBAAmB;wBACnB,eAAe;wBACf,eAAe;wBACf,gBAAgB;wBAChB,qBAAqB;wBACrB,YAAY;wBACZ,aAAa;wBACb,sBAAsB;qBACvB,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2FAAA,CAAA,EAAA;;;MC7BU,yBAAyB,CAAA;AACpC,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAa;AAClC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAe;uGAF1B,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1B1B;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EATS,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FA4BtD,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBA/BrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,UAAA,EACrB,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,CAAC,EAAA,eAAA,EACjD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;AAOT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,qLAAA,CAAA,EAAA;;;MCyBU,sBAAsB,CAAA;AACjC,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAa;AAClC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAe;uGAF1B,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhCvB;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,iJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAhBS,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAkCnD,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBArClC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,eAAe,EAAE,cAAc,CAAC,EAAA,eAAA,EAC9C,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,iJAAA,CAAA,EAAA;;;MCmEU,yBAAyB,CAAA;AACpC,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAa;AAClC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAe;AAErC,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;QACrB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,IAAI,UAAU;AAC/C,IAAA,CAAC,kDAAC;AAEF,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC;QACjD,OAAO,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK;AAChF,IAAA,CAAC,qDAAC;AAEF,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,OAAO,CAAA,EAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAA,CAAA,EAAI,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA,CAAE;IAClF;uGAfW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlF1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0sBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA/BS,mBAAmB,+lBAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAoFrC,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAvFrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,UAAA,EACpB,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,EAAA,eAAA,EAChC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,0sBAAA,CAAA,EAAA;;;MCGU,oBAAoB,CAAA;AAC/B,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAa;AAClC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAe;uGAF1B,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/BrB;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAhBS,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAiCjD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBApChC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,eAAe,EAAE,YAAY,CAAC,EAAA,eAAA,EAC5C,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,4FAAA,CAAA,EAAA;;;MCoBU,sBAAsB,CAAA;AACjC,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAa;AAClC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAe;uGAF1B,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjCvB;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAlBS,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,iPAAE,sBAAsB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAmC3E,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAtClC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cACjB,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAE,sBAAsB,CAAC,EAAA,eAAA,EACtE,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,4FAAA,CAAA,EAAA;;;MCkBU,0BAA0B,CAAA;AACrC,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAa;AAClC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAe;AAErC,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC;QACjD,OAAO,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK;AAChF,IAAA,CAAC,qDAAC;uGAPS,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApC3B;;;;;;;;;;GAUT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kRAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAZS,mBAAmB,+lBAAE,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,iDAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAsCtC,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAzCtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,UAAA,EACrB,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,EAAA,eAAA,EACjC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,kRAAA,CAAA,EAAA;;;ACnBH;;;AAGG;MAEU,oBAAoB,CAAA;AACd,IAAA,QAAQ,GAAG,MAAM,CAAyB,IAAI,GAAG,EAAE,oDAAC;AAErE;;;;AAIG;IACH,aAAa,CAAC,IAAY,EAAE,SAAoB,EAAA;QAC9C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClE;AAEA;;;;AAIG;AACH,IAAA,QAAQ,CAAC,IAAY,EAAA;QACnB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;IAClC;AAEA;;;AAGG;AACH,IAAA,eAAe,CAAC,IAAY,EAAA;QAC1B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;AAC3B,YAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AAC3B,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACnB,YAAA,OAAO,MAAM;AACf,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACH,KAAK,GAAA;QACH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;IAC9B;uGAtCW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAApB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADP,MAAM,EAAA,CAAA;;2FACnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCqBrB,oBAAoB,CAAA;AACd,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,aAAa,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAE7D,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAiB;IACxC,SAAS,GAAG,MAAM,EAAa;AAE/B,IAAA,IAAI,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC;AAEf,IAAA,eAAe,GAAiC;AACvD,QAAA,IAAI,EAAE,uBAAuB;AAC7B,QAAA,KAAK,EAAE,uBAAuB;AAC9B,QAAA,QAAQ,EAAE,sBAAsB;AAChC,QAAA,MAAM,EAAE,yBAAyB;AACjC,QAAA,MAAM,EAAE,oBAAoB;AAC5B,QAAA,UAAU,EAAE,wBAAwB;AACpC,QAAA,QAAQ,EAAE,sBAAsB;AAChC,QAAA,YAAY,EAAE,0BAA0B;AACxC,QAAA,cAAc,EAAE,yBAAyB;AACzC,QAAA,OAAO,EAAE,qBAAqB;AAC9B,QAAA,WAAW,EAAE,yBAAyB;KACvC;IAED,QAAQ,GAAA;AACN,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE;QACjC,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC3B,YAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC;YACxC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC;IACF;AAEQ,IAAA,SAAS,CAAC,MAAqB,EAAA;AACrC,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;;AAEvB,YAAA,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE;gBACnC;YACF;;;AAIA,YAAA,IAAI,YAAiB;AACrB,YAAA,IAAI,KAAK,CAAC,WAAW,KAAK,cAAc,EAAE;AACxC,gBAAA,YAAY,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK;YACrC;AAAO,iBAAA,IAAI,KAAK,CAAC,WAAW,KAAK,aAAa,EAAE;AAC9C,gBAAA,YAAY,GAAG,KAAK,CAAC,KAAK,IAAI,IAAI;YACpC;iBAAO;AACL,gBAAA,YAAY,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE;YAClC;;AAGA,YAAA,MAAM,gBAAgB,GAAG,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;YAExH,MAAM,OAAO,GAAG;AACd,kBAAE,IAAI,WAAW,CACb,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,EACvC;AACE,oBAAA,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE;iBACnC;AAEL,kBAAE,IAAI,WAAW,CAAC,YAAY,EAAE;AAC5B,oBAAA,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE;AACnC,iBAAA,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC;AAC1C,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,sBAAsB,CAAC,MAAqB,EAAA;AAClD,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBACtB;YACF;AAEA,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,WAAW,CAAC;YAEnE,IAAI,CAAC,WAAW,EAAE;AAChB,gBAAA,OAAO,CAAC,IAAI,CACV,CAAA,6BAAA,EAAgC,KAAK,CAAC,GAAG,CAAA,cAAA,EAAiB,KAAK,CAAC,WAAW,CAAA,0DAAA,CAA4D,CACxI;gBACD;YACF;AAEA,YAAA,IAAI,WAAW,CAAC,WAAW,KAAK,cAAc,EAAE;AAC9C,gBAAA,OAAO,CAAC,IAAI,CACV,CAAA,6BAAA,EAAgC,KAAK,CAAC,GAAG,CAAA,cAAA,EAAiB,KAAK,CAAC,WAAW,CAAA,8DAAA,CAAgE,CAC5I;gBACD;YACF;AAEA,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;AACtD,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAEjD,YAAA,IAAI,CAAC,aAAa,IAAI,CAAC,gBAAgB,EAAE;AACvC,gBAAA,OAAO,CAAC,IAAI,CACV,CAAA,mGAAA,EAAsG,KAAK,CAAC,WAAW,CAAA,KAAA,EAAQ,KAAK,CAAC,GAAG,CAAA,EAAA,CAAI,CAC7I;gBACD;YACF;;AAGA,YAAA,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,KAAI;gBAC7F,MAAM,cAAc,GAAG,WAAW,MAAM,WAAW,CAAC,eAAe,IAAI,IAAI,CAAC;gBAE5E,IAAI,cAAc,EAAE;oBAClB,gBAAgB,CAAC,MAAM,EAAE;gBAC3B;qBAAO;;oBAEL,MAAM,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,WAAW,CAAC;oBACpE,gBAAgB,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;oBAC3D,gBAAgB,CAAC,OAAO,EAAE;gBAC5B;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEQ,cAAc,CAAC,SAAiB,EAAE,MAAqB,EAAA;AAC7D,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC;QAC3D,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,WAAW,KAAK,cAAc,EAAE;AAC9D,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,MAAM,eAAe,GAAG,WAAW,CAAC,eAAe,IAAI,IAAI;AAC3D,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,IAAI,KAAK;QAE9C,OAAO,WAAW,KAAK,eAAe;IACxC;AAEA;;;AAGG;AACK,IAAA,yBAAyB,CAAC,WAAmB,EAAA;QACnD,QAAQ,WAAW;AACjB,YAAA,KAAK,MAAM;AACX,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,UAAU;AACf,YAAA,KAAK,UAAU;AACf,YAAA,KAAK,cAAc;AACjB,gBAAA,OAAO,EAAE;AACX,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,IAAI;AACb,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,IAAI;AACb,YAAA,KAAK,aAAa;AAChB,gBAAA,OAAO,IAAI;AACb,YAAA,KAAK,YAAY;AACf,gBAAA,OAAO,IAAI;AACb,YAAA;AACE,gBAAA,OAAO,EAAE;;IAEf;AAEA;;;AAGG;AACH,IAAA,iBAAiB,CAAC,WAAmB,EAAA;;QAEnC,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC;QAChE,IAAI,eAAe,EAAE;AACnB,YAAA,OAAO,eAAe;QACxB;;QAGA,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,IAAI;IAClD;AAEA,IAAA,UAAU,CAAC,GAAW,EAAA;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,CAAC,IAAI,CAAC,+DAA+D,GAAG,CAAA,CAAE,CAAC;QACpF;AACA,QAAA,OAAO,OAAQ;IACjB;uGA7KW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,sPC3BjC,k/BAyBA,EAAA,MAAA,EAAA,CAAA,2vBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDHY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,sCAAA,EAAA,0BAAA,EAAA,2BAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,icAAqB,yBAAyB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAK9E,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,yBAAyB,CAAC,EAAA,eAAA,EACzE,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,k/BAAA,EAAA,MAAA,EAAA,CAAA,2vBAAA,CAAA,EAAA;;;AErB1C,MAAM,YAAY,GAAgB;;AAEvC,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,WAAW,EAAE,YAAY;AACzB,IAAA,QAAQ,EAAE,aAAa;AACvB,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,EAAE,EAAE,WAAW;AACf,IAAA,GAAG,EAAE,kBAAkB;AACvB,IAAA,EAAE,EAAE,WAAW;AACf,IAAA,GAAG,EAAE,kBAAkB;AACvB,IAAA,EAAE,EAAE,GAAG;AACP,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,SAAS,EAAE,aAAa;;AAGxB,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,QAAQ,EAAE,sBAAsB;AAChC,IAAA,QAAQ,EAAE,yBAAyB;AACnC,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,UAAU,EAAE,eAAe;;AAG3B,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,MAAM,EAAE,UAAU;AAClB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,MAAM,EAAE,UAAU;AAClB,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,OAAO,EAAE,UAAU;;AAGnB,IAAA,aAAa,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACpE,IAAA,YAAY,EAAE,4BAA4B;AAC1C,IAAA,kBAAkB,EAAE,6BAA6B;AACjD,IAAA,iBAAiB,EAAE,+BAA+B;AAClD,IAAA,mBAAmB,EAAE,4BAA4B;;AAGjD,IAAA,QAAQ,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,CAAC;AAC9G,IAAA,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AAChE,IAAA,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAChD,UAAU,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC;IACzI,eAAe,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AACrG,IAAA,UAAU,EAAE,UAAU;AACtB,IAAA,cAAc,EAAE,CAAC;AACjB,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,UAAU,EAAE,KAAK;;AAGjB,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,cAAc,EAAE,kBAAkB;;AAGlC,IAAA,UAAU,EAAE,cAAc;AAC1B,IAAA,WAAW,EAAE,cAAc;AAC3B,IAAA,UAAU,EAAE,eAAe;AAC3B,IAAA,UAAU,EAAE,iBAAiB;AAC7B,IAAA,UAAU,EAAE,gBAAgB;AAC5B,IAAA,QAAQ,EAAE,cAAc;AACxB,IAAA,QAAQ,EAAE,aAAa;AACvB,IAAA,SAAS,EAAE,cAAc;AACzB,IAAA,SAAS,EAAE,aAAa;AACxB,IAAA,QAAQ,EAAE,eAAe;AACzB,IAAA,QAAQ,EAAE,cAAc;AACxB,IAAA,UAAU,EAAE,iBAAiB;AAC7B,IAAA,UAAU,EAAE,gBAAgB;AAC5B,IAAA,UAAU,EAAE,kBAAkB;AAC9B,IAAA,UAAU,EAAE,iBAAiB;AAC7B,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,EAAE,EAAE,IAAI;;AAGR,IAAA,aAAa,EAAE,uBAAuB;AACtC,IAAA,gBAAgB,EAAE,6BAA6B;AAC/C,IAAA,qBAAqB,EAAE,yBAAyB;AAChD,IAAA,kBAAkB,EAAE,6BAA6B;;AAGjD,IAAA,IAAI,EAAE;AACJ,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,UAAU,EAAE,OAAO;AACnB,QAAA,SAAS,EAAE,iBAAiB;AAC5B,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,KAAK,EAAE,iBAAiB;AACxB,QAAA,SAAS,EAAE,kBAAkB;AAC7B,QAAA,WAAW,EAAE,iBAAiB;AAC9B,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,UAAU,EAAE,WAAW;AACvB,QAAA,SAAS,EAAE,mBAAmB;AAC9B,QAAA,OAAO,EAAE,mBAAmB;AAC5B,QAAA,MAAM,EAAE,iBAAiB;AACzB,QAAA,QAAQ,EAAE,kBAAkB;AAC5B,QAAA,UAAU,EAAE,oBAAoB;AAChC,QAAA,YAAY,EAAE,sBAAsB;AACpC,QAAA,YAAY,EAAE,qBAAqB;AACnC,QAAA,eAAe,EAAE,4BAA4B;AAC7C,QAAA,eAAe,EAAE,2BAA2B;AAC5C,QAAA,SAAS,EAAE,eAAe;AAC1B,QAAA,cAAc,EAAE,iBAAiB;AACjC,QAAA,aAAa,EAAE,eAAe;AAC9B,QAAA,aAAa,EAAE,gBAAgB;AAC/B,QAAA,aAAa,EAAE,iBAAiB;AAChC,QAAA,gBAAgB,EAAE,kBAAkB;AACpC,QAAA,iBAAiB,EAAE,iBAAiB;AACpC,QAAA,uBAAuB,EAAE,mBAAmB;AAC5C,QAAA,oBAAoB,EAAE,gBAAgB;AACtC,QAAA,SAAS,EAAE,kBAAkB;AAC7B,QAAA,WAAW,EAAE,iBAAiB;AAC9B,QAAA,SAAS,EAAE,gBAAgB;AAC3B,QAAA,WAAW,EAAE,gBAAgB;AAC7B,QAAA,cAAc,EAAE,wBAAwB;AACxC,QAAA,cAAc,EAAE,wBAAwB;AACxC,QAAA,cAAc,EAAE,oBAAoB;AACpC,QAAA,gBAAgB,EAAE,qBAAqB;AACvC,QAAA,OAAO,EAAE,cAAc;AACvB,QAAA,QAAQ,EAAE,eAAe;AACzB,QAAA,UAAU,EAAE,iBAAiB;AAC7B,QAAA,QAAQ,EAAE,uBAAuB;AACjC,QAAA,QAAQ,EAAE,uBAAuB;AACjC,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,WAAW,EAAE,qBAAqB;AAClC,QAAA,SAAS,EAAE,gBAAgB;AAC3B,QAAA,MAAM,EAAE,eAAe;AACvB,QAAA,OAAO,EAAE,cAAc;AACvB,QAAA,WAAW,EAAE,iBAAiB;AAC9B,QAAA,UAAU,EAAE,kBAAkB;AAC9B,QAAA,SAAS,EAAE,OAAO;AAClB,QAAA,WAAW,EAAE,gBAAgB;AAC7B,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,WAAW,EAAE,mBAAmB;AAChC,QAAA,aAAa,EAAE,WAAW;AAC1B,QAAA,aAAa,EAAE,WAAW;AAC3B,KAAA;;;AC/IH;;;;AAIG;AACG,SAAU,wBAAwB,CAAC,QAAmC,EAAA;IAC1E,MAAM,SAAS,GAAe,EAAE;IAEhC,IAAI,QAAQ,EAAE;QACZ,SAAS,CAAC,IAAI,CAAC;AACb,YAAA,OAAO,EAAE,2BAA2B;AACpC,YAAA,QAAQ,EAAE,QAAQ;AACnB,SAAA,CAAC;IACJ;AAEA,IAAA,OAAO,SAAS;AAClB;;ACnBA;;AAEG;AAEH;;ACLA;;AAEG;;;;"}
1
+ {"version":3,"file":"vipsolucoes-dynamic-form.mjs","sources":["../../../projects/dynamic-form/src/lib/interfaces/error-messages.interface.ts","../../../projects/dynamic-form/src/lib/components/form-field-error/form-field-error.component.ts","../../../projects/dynamic-form/src/lib/fields/datepicker-field.component.ts","../../../projects/dynamic-form/src/lib/fields/divider-field.component.ts","../../../projects/dynamic-form/src/lib/directives/text-transform.directive.ts","../../../projects/dynamic-form/src/lib/fields/input-text-field.component.ts","../../../projects/dynamic-form/src/lib/fields/input-button-field.component.ts","../../../projects/dynamic-form/src/lib/fields/number-input-field.component.ts","../../../projects/dynamic-form/src/lib/fields/password-field.component.ts","../../../projects/dynamic-form/src/lib/fields/radiobutton-field.component.ts","../../../projects/dynamic-form/src/lib/fields/select-field.component.ts","../../../projects/dynamic-form/src/lib/fields/textarea-field.component.ts","../../../projects/dynamic-form/src/lib/fields/toggleswitch-field.component.ts","../../../projects/dynamic-form/src/lib/services/field-registry.service.ts","../../../projects/dynamic-form/src/lib/components/dynamic-form/dynamic-form.component.ts","../../../projects/dynamic-form/src/lib/components/dynamic-form/dynamic-form.component.html","../../../projects/dynamic-form/src/lib/i18n/primeng-ptbr.ts","../../../projects/dynamic-form/src/lib/providers/dynamic-form.providers.ts","../../../projects/dynamic-form/src/public-api.ts","../../../projects/dynamic-form/src/vipsolucoes-dynamic-form.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Interface para configuração de mensagens de erro customizadas.\n */\nexport interface DynamicFormErrorMessages {\n required?: string;\n email?: string;\n minlength?: (requiredLength: number) => string;\n maxlength?: (requiredLength: number) => string;\n custom?: (error: any) => string;\n}\n\n/**\n * InjectionToken para prover mensagens de erro customizadas.\n */\nexport const DYNAMIC_FORM_ERROR_MESSAGES = new InjectionToken<DynamicFormErrorMessages>(\n 'DYNAMIC_FORM_ERROR_MESSAGES'\n);\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, input } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\n\nimport { DYNAMIC_FORM_ERROR_MESSAGES, DynamicFormErrorMessages } from '../../interfaces/error-messages.interface';\n\n@Component({\n selector: 'vp-form-field-error',\n standalone: true,\n imports: [CommonModule],\n template: `\n @if (errorMessage) {\n <small class=\"p-error\">{{ errorMessage }}</small>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n margin-top: 0.5rem;\n min-height: 1rem;\n }\n .p-error {\n color: var(--p-red-500, #ef4444);\n font-size: 0.875rem;\n }\n `,\n ],\n})\nexport class DynamicFormErrorComponent {\n control = input.required<AbstractControl>();\n\n private readonly customMessages = inject(DYNAMIC_FORM_ERROR_MESSAGES, { optional: true });\n\n // Mapeamento de erros para mensagens\n private readonly defaultErrorMessages: { [key: string]: (err: any) => string } = {\n required: () => this.customMessages?.required ?? 'Este campo é obrigatório.',\n email: () => this.customMessages?.email ?? 'Por favor, insira um e-mail válido.',\n minlength: (err) => this.customMessages?.minlength?.(err.requiredLength) ?? `Mínimo de ${err.requiredLength} caracteres.`,\n maxlength: (err) => this.customMessages?.maxlength?.(err.requiredLength) ?? `Máximo de ${err.requiredLength} caracteres.`,\n custom: (err) => (this.customMessages?.custom ? this.customMessages.custom(err) : err),\n };\n\n // Getter simples - Angular detecta mudanças automaticamente\n get errorMessage(): string | null {\n const ctrl = this.control();\n if (!ctrl || !ctrl.errors || (!ctrl.touched && !ctrl.dirty)) {\n return null;\n }\n\n const errorKey = Object.keys(ctrl.errors)[0];\n return this.defaultErrorMessages[errorKey] ? this.defaultErrorMessages[errorKey](ctrl.errors[errorKey]) : 'Campo inválido.';\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { IftaLabelModule } from 'primeng/iftalabel';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-datepicker-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, DatePickerModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <p-datepicker\n [inputId]=\"field().key\"\n [formControlName]=\"field().key\"\n [showButtonBar]=\"true\"\n [iconDisplay]=\"'input'\"\n [placeholder]=\"field().placeholder || ''\"\n [dateFormat]=\"dateFormat()\"\n [view]=\"field().dateViewType || 'date'\"\n />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n p-datepicker {\n width: 100%;\n }\n `,\n ],\n})\nexport class DatePickerFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n\n readonly dateFormat = computed(() => {\n const viewType = this.field().dateViewType || 'date';\n const customFormat = this.field().dateFormat;\n\n if (viewType === 'month') {\n return 'mm/yy';\n }\n if (viewType === 'year') {\n return 'yy';\n }\n\n return customFormat || 'dd/mm/yy';\n });\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { DividerModule } from 'primeng/divider';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-divider-field',\n standalone: true,\n imports: [DividerModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <p-divider\n [layout]=\"dividerConfig()?.layout || 'horizontal'\"\n [type]=\"dividerConfig()?.type || 'solid'\"\n [align]=\"dividerConfig()?.align\"\n [styleClass]=\"field().styleClass || ''\"\n >\n @if (dividerConfig()?.content) {\n <b>{{ dividerConfig()?.content }}</b>\n }\n </p-divider>\n `,\n})\nexport class DividerFieldComponent {\n form = input<FormGroup>();\n field = input.required<iFormConfig>();\n\n /**\n * Retorna a configuração do divider do campo.\n * Se não existir, retorna undefined para usar os defaults do PrimeNG.\n */\n dividerConfig() {\n return this.field().dividerConfig;\n }\n}\n","import { Directive, ElementRef, HostListener, inject, Input, OnInit } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n/**\n * Diretiva para transformar texto em uppercase ou lowercase em tempo real.\n * Funciona com Reactive Forms (NgControl) e elementos HTML nativos.\n *\n * @example\n * ```html\n * <!-- Uppercase -->\n * <input [vpTextTransform]=\"'uppercase'\" />\n *\n * <!-- Lowercase -->\n * <input [vpTextTransform]=\"'lowercase'\" />\n *\n * <!-- Desabilitado -->\n * <input [vpTextTransform]=\"null\" />\n * ```\n */\n@Directive({\n selector: '[vpTextTransform]',\n standalone: true,\n})\nexport class TextTransformDirective implements OnInit {\n private readonly elementRef = inject(ElementRef<HTMLInputElement | HTMLTextAreaElement>);\n\n /**\n * NgControl opcional - presente quando usado com reactive forms ou ngModel.\n * Usamos `optional: true` e `self: true` para injetar apenas se estiver no mesmo elemento.\n */\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n /**\n * Tipo de transformação a ser aplicada: 'uppercase' | 'lowercase' | null\n * Quando null ou undefined, a transformação é desabilitada.\n */\n @Input() vpTextTransform: 'uppercase' | 'lowercase' | null = null;\n\n ngOnInit(): void {\n // Aplicar transformação no valor inicial se existir\n const element = this.elementRef.nativeElement;\n const transform = this.vpTextTransform;\n\n if (transform && element.value && typeof element.value === 'string') {\n const transformedValue = this.transformValue(element.value, transform);\n if (transformedValue !== element.value) {\n element.value = transformedValue;\n\n // Atualizar o FormControl se existir\n if (this.ngControl?.control) {\n this.ngControl.control.setValue(transformedValue, { emitEvent: false });\n }\n }\n }\n }\n\n @HostListener('input', ['$event'])\n onInput(event: Event): void {\n const inputElement = event.target as HTMLInputElement | HTMLTextAreaElement;\n const transform = this.vpTextTransform;\n\n // Verifica se a transformação está habilitada\n if (!transform || !inputElement.value) {\n return;\n }\n\n const currentValue = inputElement.value;\n if (typeof currentValue !== 'string') {\n return;\n }\n\n // Preserva a posição do cursor\n const start = inputElement.selectionStart;\n const end = inputElement.selectionEnd;\n\n // Aplica a transformação\n const transformedValue = this.transformValue(currentValue, transform);\n\n // Se o valor já está transformado, não faz nada\n if (currentValue === transformedValue) {\n return;\n }\n\n // Atualiza o valor do elemento\n inputElement.value = transformedValue;\n\n // Restaura a posição do cursor (apenas para inputs de texto)\n if (this.isTextInput(inputElement)) {\n const newStart = Math.min(start ?? 0, transformedValue.length);\n const newEnd = Math.min(end ?? 0, transformedValue.length);\n inputElement.setSelectionRange(newStart, newEnd);\n }\n\n // Se NgControl estiver presente (reactive forms ou ngModel), atualiza através dele\n if (this.ngControl?.control) {\n this.ngControl.control.setValue(transformedValue, { emitEvent: false });\n // Emite o evento manualmente para garantir que os listeners sejam notificados\n this.ngControl.control.updateValueAndValidity({ emitEvent: true });\n } else {\n // Para elementos sem NgControl, dispara evento input manualmente\n // Isso garante compatibilidade com listeners diretos no elemento\n const inputEvent = new Event('input', {\n bubbles: true,\n cancelable: true,\n });\n inputElement.dispatchEvent(inputEvent);\n }\n }\n\n /**\n * Aplica a transformação de texto baseada no tipo especificado.\n */\n private transformValue(value: string, transform: 'uppercase' | 'lowercase'): string {\n return transform === 'uppercase' ? value.toUpperCase() : value.toLowerCase();\n }\n\n /**\n * Verifica se o elemento é um input de texto que suporta seleção de cursor.\n */\n private isTextInput(element: HTMLInputElement | HTMLTextAreaElement): boolean {\n if (element.tagName === 'TEXTAREA') {\n return true;\n }\n\n const inputElement = element as HTMLInputElement;\n return (\n inputElement.type === 'text' ||\n inputElement.type === 'search' ||\n inputElement.type === 'email' ||\n inputElement.type === 'url' ||\n inputElement.type === 'tel' ||\n !inputElement.type // type padrão é 'text'\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { InputTextModule } from 'primeng/inputtext';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\nimport { TextTransformDirective } from '../directives/text-transform.directive';\n\n@Component({\n selector: 'vp-input-text-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, InputTextModule, TextTransformDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <input\n pInputText\n [id]=\"field().key\"\n [type]=\"field().controlType\"\n [formControlName]=\"field().key\"\n [placeholder]=\"field().placeholder || ''\"\n [vpTextTransform]=\"field().textTransform || null\"\n />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n input {\n width: 100%;\n }\n `,\n ],\n})\nexport class InputTextFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { ButtonModule } from 'primeng/button';\nimport { TooltipModule } from 'primeng/tooltip';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\nimport { TextTransformDirective } from '../directives/text-transform.directive';\n\n@Component({\n selector: 'vp-input-button-field',\n standalone: true,\n imports: [\n ReactiveFormsModule,\n IftaLabelModule,\n InputTextModule,\n InputGroupModule,\n InputGroupAddonModule,\n ButtonModule,\n TooltipModule,\n TextTransformDirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-inputgroup>\n @if (buttonPosition() === 'left') {\n <p-button\n type=\"button\"\n [icon]=\"buttonConfig()?.icon || ''\"\n [label]=\"buttonConfig()?.label || ''\"\n [severity]=\"buttonConfig()?.severity || 'primary'\"\n [pTooltip]=\"buttonConfig()?.tooltip || ''\"\n tooltipPosition=\"top\"\n (click)=\"onButtonClick()\"\n [disabled]=\"isFieldDisabled()\"\n />\n }\n\n <p-iftalabel>\n <input\n pInputText\n [id]=\"field().key\"\n [formControlName]=\"field().key\"\n [placeholder]=\"field().placeholder || ''\"\n [vpTextTransform]=\"field().textTransform || null\"\n />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n\n @if (buttonPosition() === 'right') {\n <p-button\n type=\"button\"\n [icon]=\"buttonConfig()?.icon || ''\"\n [label]=\"buttonConfig()?.label || ''\"\n [severity]=\"buttonConfig()?.severity || 'primary'\"\n [pTooltip]=\"buttonConfig()?.tooltip || ''\"\n tooltipPosition=\"top\"\n (click)=\"onButtonClick()\"\n [disabled]=\"isFieldDisabled()\"\n />\n }\n </p-inputgroup>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-inputgroup {\n display: flex;\n width: 100%;\n }\n p-iftalabel {\n flex: 1;\n }\n `,\n ],\n})\nexport class InputButtonFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n\n buttonConfig() {\n return this.field().buttonConfig;\n }\n\n buttonPosition(): 'left' | 'right' {\n return this.buttonConfig()?.position || 'right';\n }\n\n isFieldDisabled(): boolean {\n const control = this.form().get(this.field().key);\n return control?.disabled ?? false;\n }\n\n onButtonClick(): void {\n const control = this.form().get(this.field().key);\n const value = control?.value;\n const callback = this.field().buttonCallback;\n\n if (callback) {\n callback(this.field().key, value);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { InputNumberModule } from 'primeng/inputnumber';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-number-input-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, InputNumberModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <p-inputNumber [id]=\"field().key\" [formControlName]=\"field().key\" [placeholder]=\"field().placeholder || ''\" styleClass=\"w-full\" class=\"w-full\" />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n :host ::ng-deep p-inputNumber,\n :host ::ng-deep .p-inputnumber,\n :host ::ng-deep .p-inputnumber input {\n width: 100%;\n }\n `,\n ],\n})\nexport class NumberInputFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { PasswordModule } from 'primeng/password';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-password-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, PasswordModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <p-password\n [id]=\"field().key\"\n [formControlName]=\"field().key\"\n [feedback]=\"false\"\n [toggleMask]=\"true\"\n [placeholder]=\"field().placeholder || ''\"\n styleClass=\"w-full\"\n class=\"w-full\" />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n :host ::ng-deep .p-password,\n :host ::ng-deep .p-password input {\n width: 100%;\n }\n `,\n ],\n})\nexport class PasswordFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { RadioButtonModule } from 'primeng/radiobutton';\n\nimport { iFieldOption, iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-radiobutton-field',\n standalone: true,\n imports: [ReactiveFormsModule, RadioButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\" class=\"radiobutton-field\">\n @if (field().label) {\n <label class=\"radiobutton-group-label\">{{ field().label }}</label>\n }\n <div\n class=\"radiobutton-options\"\n [class.radiobutton-options-horizontal]=\"layout() === 'horizontal'\"\n [class.radiobutton-options-vertical]=\"layout() === 'vertical'\"\n >\n @for (option of options(); track option.value) {\n <div class=\"radiobutton-option\">\n <p-radiobutton\n [formControlName]=\"field().key\"\n [name]=\"field().key\"\n [value]=\"option.value\"\n [inputId]=\"getInputId(option.value)\"\n [invalid]=\"isInvalid()\"\n />\n <label [for]=\"getInputId(option.value)\" class=\"radiobutton-option-label\">\n {{ option.label }}\n </label>\n </div>\n }\n </div>\n @if (field().hint) {\n <small class=\"radiobutton-hint\">{{ field().hint }}</small>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n .radiobutton-field {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n width: 100%;\n }\n .radiobutton-group-label {\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--p-text-color, #333);\n margin-bottom: 0.25rem;\n }\n .radiobutton-options {\n display: flex;\n width: 100%;\n }\n .radiobutton-options-horizontal {\n flex-direction: row;\n flex-wrap: wrap;\n gap: 1rem;\n }\n .radiobutton-options-vertical {\n flex-direction: column;\n gap: 0.75rem;\n }\n .radiobutton-option {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n .radiobutton-option-label {\n cursor: pointer;\n user-select: none;\n font-size: 0.875rem;\n color: var(--p-text-color, #333);\n margin: 0;\n }\n .radiobutton-hint {\n display: block;\n font-size: 0.75rem;\n color: var(--p-text-muted-color, #666);\n margin-top: 0.25rem;\n }\n `,\n ],\n})\nexport class RadioButtonFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n\n options = computed(() => {\n return this.field().options as iFieldOption[];\n });\n\n layout = computed(() => {\n return this.field().radioLayout ?? 'vertical';\n });\n\n isInvalid = computed(() => {\n const control = this.form().get(this.field().key);\n return control ? control.invalid && (control.touched || control.dirty) : false;\n });\n\n getInputId(value: any): string {\n return `${this.field().key}-${String(value).replace(/\\s+/g, '-').toLowerCase()}`;\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { SelectModule } from 'primeng/select';\n\nimport { iFieldOption, iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-select-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, SelectModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <p-select\n [inputId]=\"field().key\"\n [formControlName]=\"field().key\"\n [options]=\"mappedOptions()\"\n [placeholder]=\"field().placeholder || 'Selecione'\"\n [optionLabel]=\"effectiveOptionLabel()\"\n [optionValue]=\"effectiveOptionValue()\"\n [filter]=\"field().optionFilter ?? false\"\n [showClear]=\"field().optionShowClear ?? false\"\n class=\"w-full\"\n />\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n p-select {\n width: 100%;\n }\n `,\n ],\n})\nexport class SelectFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n\n /**\n * Aplica optionMapper se existir, caso contrário retorna as opções originais.\n * Prioridade: optionMapper > optionLabel/optionValue > label/value padrão\n */\n mappedOptions = computed(() => {\n const options = this.field().options ?? [];\n const mapper = this.field().optionMapper;\n\n if (mapper) {\n return options.map(mapper);\n }\n return options;\n });\n\n /**\n * Determina o optionLabel efetivo a ser usado.\n * Se optionMapper estiver definido, usa 'label' (pois mapper já transformou).\n * Caso contrário, usa optionLabel configurado ou 'label' como padrão.\n */\n effectiveOptionLabel = computed(() => {\n if (this.field().optionMapper) {\n return 'label';\n }\n return this.field().optionLabel ?? 'label';\n });\n\n /**\n * Determina o optionValue efetivo a ser usado.\n * Se optionMapper estiver definido, usa 'value' (pois mapper já transformou).\n * Caso contrário, usa optionValue configurado ou 'value' como padrão.\n */\n effectiveOptionValue = computed(() => {\n if (this.field().optionMapper) {\n return 'value';\n }\n return this.field().optionValue ?? 'value';\n });\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { IftaLabelModule } from 'primeng/iftalabel';\nimport { TextareaModule } from 'primeng/textarea';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\nimport { TextTransformDirective } from '../directives/text-transform.directive';\n\n@Component({\n selector: 'vp-textarea-field',\n standalone: true,\n imports: [ReactiveFormsModule, IftaLabelModule, TextareaModule, TextTransformDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\">\n <p-iftalabel>\n <textarea\n pTextarea\n [id]=\"field().key\"\n [formControlName]=\"field().key\"\n [placeholder]=\"field().placeholder || ''\"\n [rows]=\"field().textareaRows ?? 1\"\n [cols]=\"field().textareaCols\"\n [autoResize]=\"field().textareaAutoResize ?? false\"\n [vpTextTransform]=\"field().textTransform || null\"\n ></textarea>\n <label [for]=\"field().key\">{{ field().label }}</label>\n </p-iftalabel>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n p-iftalabel {\n display: block;\n width: 100%;\n }\n textarea {\n width: 100%;\n }\n `,\n ],\n})\nexport class TextareaFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { ToggleSwitchModule } from 'primeng/toggleswitch';\n\nimport { iFormConfig } from '../interfaces/form-config.interface';\n\n@Component({\n selector: 'vp-toggleswitch-field',\n standalone: true,\n imports: [ReactiveFormsModule, ToggleSwitchModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [formGroup]=\"form()\" class=\"toggleswitch-field\">\n <p-toggleswitch\n [formControlName]=\"field().key\"\n [inputId]=\"field().key\"\n [invalid]=\"isInvalid()\"\n [trueValue]=\"field().toggleTrueValue ?? true\"\n [falseValue]=\"field().toggleFalseValue ?? false\" />\n <label [for]=\"field().key\" class=\"toggleswitch-label\">{{ field().label }}</label>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n .toggleswitch-field {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n width: 100%;\n }\n .toggleswitch-label {\n cursor: pointer;\n user-select: none;\n font-size: 0.875rem;\n color: var(--p-text-color, #333);\n margin: 0;\n }\n p-toggleswitch {\n flex-shrink: 0;\n }\n `,\n ],\n})\nexport class ToggleSwitchFieldComponent {\n form = input.required<FormGroup>();\n field = input.required<iFormConfig>();\n\n isInvalid = computed(() => {\n const control = this.form().get(this.field().key);\n return control ? control.invalid && (control.touched || control.dirty) : false;\n });\n}\n","import { Injectable, signal, Type } from '@angular/core';\n\n/**\n * Serviço para registro de campos customizados.\n * Permite adicionar novos tipos de campos dinamicamente.\n */\n@Injectable({ providedIn: 'root' })\nexport class FieldRegistryService {\n private readonly registry = signal<Map<string, Type<any>>>(new Map());\n\n /**\n * Registra um novo tipo de campo.\n * @param type Tipo do campo (ex: 'custom', 'file', etc.)\n * @param component Componente Angular que renderiza o campo\n */\n registerField(type: string, component: Type<any>): void {\n this.registry.update((map) => new Map(map).set(type, component));\n }\n\n /**\n * Obtém o componente registrado para um tipo de campo.\n * @param type Tipo do campo\n * @returns Componente Angular ou undefined se não encontrado\n */\n getField(type: string): Type<any> | undefined {\n return this.registry().get(type);\n }\n\n /**\n * Remove um tipo de campo do registro.\n * @param type Tipo do campo a ser removido\n */\n unregisterField(type: string): void {\n this.registry.update((map) => {\n const newMap = new Map(map);\n newMap.delete(type);\n return newMap;\n });\n }\n\n /**\n * Limpa todos os campos registrados.\n */\n clear(): void {\n this.registry.set(new Map());\n }\n}\n","import { CommonModule, NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, inject, input, OnInit, output, Type } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AbstractControl, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\n\nimport { DynamicFormErrorComponent } from '../form-field-error/form-field-error.component';\nimport { DatePickerFieldComponent } from '../../fields/datepicker-field.component';\nimport { DividerFieldComponent } from '../../fields/divider-field.component';\nimport { InputTextFieldComponent } from '../../fields/input-text-field.component';\nimport { InputButtonFieldComponent } from '../../fields/input-button-field.component';\nimport { NumberInputFieldComponent } from '../../fields/number-input-field.component';\nimport { PasswordFieldComponent } from '../../fields/password-field.component';\nimport { RadioButtonFieldComponent } from '../../fields/radiobutton-field.component';\nimport { SelectFieldComponent } from '../../fields/select-field.component';\nimport { TextareaFieldComponent } from '../../fields/textarea-field.component';\nimport { ToggleSwitchFieldComponent } from '../../fields/toggleswitch-field.component';\nimport { iFormConfig } from '../../interfaces/form-config.interface';\nimport { FieldRegistryService } from '../../services/field-registry.service';\n\n@Component({\n selector: 'vp-dynamic-form',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, NgComponentOutlet, DynamicFormErrorComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './dynamic-form.component.html',\n styleUrl: './dynamic-form.component.scss',\n})\nexport class DynamicFormComponent implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly fieldRegistry = inject(FieldRegistryService);\n\n config = input.required<iFormConfig[]>();\n formReady = output<FormGroup>();\n\n form = new FormGroup({});\n\n readonly fieldComponents: { [key: string]: Type<any> } = {\n text: InputTextFieldComponent,\n email: InputTextFieldComponent,\n password: PasswordFieldComponent,\n number: NumberInputFieldComponent,\n select: SelectFieldComponent,\n datepicker: DatePickerFieldComponent,\n textarea: TextareaFieldComponent,\n toggleswitch: ToggleSwitchFieldComponent,\n 'input-button': InputButtonFieldComponent,\n divider: DividerFieldComponent,\n radiobutton: RadioButtonFieldComponent,\n };\n\n ngOnInit(): void {\n const configValue = this.config();\n if (configValue && configValue.length > 0) {\n this.buildForm(configValue);\n this.setupFieldDependencies(configValue);\n this.formReady.emit(this.form);\n }\n }\n\n private buildForm(config: iFormConfig[]): void {\n config.forEach((field) => {\n // Campos do tipo 'divider' não criam FormControl, são apenas elementos visuais\n if (field.controlType === 'divider') {\n return;\n }\n\n // Para toggle switch, o valor padrão é false se não especificado\n // Para radiobutton, o valor padrão é null se não especificado\n let defaultValue: any;\n if (field.controlType === 'toggleswitch') {\n defaultValue = field.value ?? false;\n } else if (field.controlType === 'radiobutton') {\n defaultValue = field.value ?? null;\n } else {\n defaultValue = field.value ?? '';\n }\n\n // Se o campo tem enabledWhen, ele deve começar desabilitado a menos que o toggle já esteja ativo\n const shouldBeDisabled = field.disabled ?? (field.enabledWhen ? !this.getToggleValue(field.enabledWhen, config) : false);\n\n const control = shouldBeDisabled\n ? new FormControl(\n { value: defaultValue, disabled: true },\n {\n validators: field.validators ?? [],\n }\n )\n : new FormControl(defaultValue, {\n validators: field.validators ?? [],\n });\n this.form.addControl(field.key, control);\n });\n }\n\n private setupFieldDependencies(config: iFormConfig[]): void {\n config.forEach((field) => {\n if (!field.enabledWhen) {\n return;\n }\n\n const toggleField = config.find((f) => f.key === field.enabledWhen);\n\n if (!toggleField) {\n console.warn(\n `DynamicFormComponent: Campo '${field.key}' referencia '${field.enabledWhen}' em enabledWhen, mas este campo não existe no formulário.`\n );\n return;\n }\n\n if (toggleField.controlType !== 'toggleswitch') {\n console.warn(\n `DynamicFormComponent: Campo '${field.key}' referencia '${field.enabledWhen}' em enabledWhen, mas este campo não é do tipo 'toggleswitch'.`\n );\n return;\n }\n\n const toggleControl = this.form.get(field.enabledWhen);\n const dependentControl = this.form.get(field.key);\n\n if (!toggleControl || !dependentControl) {\n console.warn(\n `DynamicFormComponent: Não foi possível encontrar os controles para configurar a dependência entre '${field.enabledWhen}' e '${field.key}'.`\n );\n return;\n }\n\n // Configura a subscription para reagir às mudanças do toggle\n toggleControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((toggleValue) => {\n const isToggleActive = toggleValue === (toggleField.toggleTrueValue ?? true);\n\n if (isToggleActive) {\n dependentControl.enable();\n } else {\n // Limpa o valor do campo antes de desabilitá-lo\n const resetValue = this.getResetValueForFieldType(field.controlType);\n dependentControl.setValue(resetValue, { emitEvent: false });\n dependentControl.disable();\n }\n });\n });\n }\n\n private getToggleValue(toggleKey: string, config: iFormConfig[]): boolean {\n const toggleField = config.find((f) => f.key === toggleKey);\n if (!toggleField || toggleField.controlType !== 'toggleswitch') {\n return false;\n }\n\n const toggleTrueValue = toggleField.toggleTrueValue ?? true;\n const toggleValue = toggleField.value ?? false;\n\n return toggleValue === toggleTrueValue;\n }\n\n /**\n * Retorna o valor padrão de reset para cada tipo de campo.\n * Usado quando um campo dependente é desabilitado e precisa ser limpo.\n */\n private getResetValueForFieldType(controlType: string): any {\n switch (controlType) {\n case 'text':\n case 'email':\n case 'password':\n case 'textarea':\n case 'input-button':\n return '';\n case 'number':\n return null;\n case 'select':\n return null;\n case 'radiobutton':\n return null;\n case 'datepicker':\n return null;\n default:\n return '';\n }\n }\n\n /**\n * Obtém o componente a ser renderizado para um tipo de campo.\n * Primeiro verifica no registro customizado, depois nos componentes padrão.\n */\n getFieldComponent(controlType: string): Type<any> | null {\n // Verifica primeiro no registro customizado\n const customComponent = this.fieldRegistry.getField(controlType);\n if (customComponent) {\n return customComponent;\n }\n\n // Fallback para componentes padrão\n return this.fieldComponents[controlType] || null;\n }\n\n getControl(key: string): AbstractControl {\n const control = this.form.get(key);\n if (!control) {\n console.warn(`DynamicFormComponent: Controle não encontrado para a chave: ${key}`);\n }\n return control!;\n }\n}\n","<form [formGroup]=\"form\" class=\"dynamic-form-container\">\n @for (field of config(); track field.key) { @if (field.visible !== false) { @if\n (getFieldComponent(field.controlType); as fieldComponent) {\n <div [class]=\"'form-field-wrapper ' + (field.styleClass || '')\">\n <!-- Dynamically render the correct field component -->\n <ng-container\n [ngComponentOutlet]=\"fieldComponent\"\n [ngComponentOutletInputs]=\"{ form: form, field: field }\"\n />\n\n @if (field.hint && field.controlType !== 'divider') {\n <small class=\"hint-text\">{{ field.hint }}</small>\n }\n\n <!-- Reusable error display component - apenas para campos que não são divider -->\n @if (field.controlType !== 'divider') {\n <vp-form-field-error [control]=\"getControl(field.key)\" />\n }\n </div>\n } @else {\n <div class=\"form-field-wrapper\">\n <small class=\"p-error\">Tipo de campo '{{ field.controlType }}' não encontrado.</small>\n </div>\n } } }\n</form>\n","import { Translation } from 'primeng/api';\n\nexport const PRIMENG_PTBR: Translation = {\n // Filtros\n startsWith: 'Começa com',\n contains: 'Contém',\n notContains: 'Não contém',\n endsWith: 'Termina com',\n equals: 'Igual',\n notEquals: 'Diferente',\n noFilter: 'Sem filtro',\n lt: 'Menor que',\n lte: 'Menor ou igual a',\n gt: 'Maior que',\n gte: 'Maior ou igual a',\n is: 'É',\n isNot: 'Não é',\n before: 'Antes',\n after: 'Depois',\n dateIs: 'Data é',\n dateIsNot: 'Data não é',\n dateBefore: 'Data antes',\n dateAfter: 'Data depois',\n\n // Regras\n clear: 'Limpar',\n apply: 'Aplicar',\n matchAll: 'Corresponder a todos',\n matchAny: 'Corresponder a qualquer',\n addRule: 'Adicionar regra',\n removeRule: 'Remover regra',\n\n // Ações\n accept: 'Sim',\n reject: 'Não',\n choose: 'Escolher',\n upload: 'Enviar',\n cancel: 'Cancelar',\n completed: 'Concluído',\n pending: 'Pendente',\n\n // Arquivos\n fileSizeTypes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],\n emptyMessage: 'Nenhum registro encontrado',\n emptyFilterMessage: 'Nenhum resultado encontrado',\n fileChosenMessage: '{0} arquivo(s) selecionado(s)',\n noFileChosenMessage: 'Nenhum arquivo selecionado',\n\n // Datas\n dayNames: ['Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado'],\n dayNamesShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'],\n dayNamesMin: ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'],\n monthNames: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],\n monthNamesShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],\n dateFormat: 'dd/mm/yy',\n firstDayOfWeek: 0,\n today: 'Hoje',\n weekHeader: 'Sem',\n\n // Password\n weak: 'Fraca',\n medium: 'Média',\n strong: 'Forte',\n passwordPrompt: 'Digite uma senha',\n\n // Date navigation\n chooseYear: 'Escolher ano',\n chooseMonth: 'Escolher mês',\n chooseDate: 'Escolher data',\n prevDecade: 'Década anterior',\n nextDecade: 'Próxima década',\n prevYear: 'Ano anterior',\n nextYear: 'Próximo ano',\n prevMonth: 'Mês anterior',\n nextMonth: 'Próximo mês',\n prevHour: 'Hora anterior',\n nextHour: 'Próxima hora',\n prevMinute: 'Minuto anterior',\n nextMinute: 'Próximo minuto',\n prevSecond: 'Segundo anterior',\n nextSecond: 'Próximo segundo',\n am: 'AM',\n pm: 'PM',\n\n // Busca / seleção\n searchMessage: 'Digite para pesquisar',\n selectionMessage: '{0} item(ns) selecionado(s)',\n emptySelectionMessage: 'Nenhum item selecionado',\n emptySearchMessage: 'Nenhum resultado encontrado',\n\n // ARIA (acessibilidade)\n aria: {\n trueLabel: 'Verdadeiro',\n falseLabel: 'Falso',\n nullLabel: 'Não selecionado',\n star: '1 estrela',\n stars: '{star} estrelas',\n selectAll: 'Selecionar todos',\n unselectAll: 'Desmarcar todos',\n close: 'Fechar',\n previous: 'Anterior',\n next: 'Próximo',\n navigation: 'Navegação',\n scrollTop: 'Rolar para o topo',\n moveTop: 'Mover para o topo',\n moveUp: 'Mover para cima',\n moveDown: 'Mover para baixo',\n moveBottom: 'Mover para o final',\n moveToTarget: 'Mover para o destino',\n moveToSource: 'Mover para a origem',\n moveAllToTarget: 'Mover todos para o destino',\n moveAllToSource: 'Mover todos para a origem',\n pageLabel: 'Página {page}',\n firstPageLabel: 'Primeira página',\n lastPageLabel: 'Última página',\n nextPageLabel: 'Próxima página',\n prevPageLabel: 'Página anterior',\n rowsPerPageLabel: 'Itens por página',\n previousPageLabel: 'Página anterior',\n jumpToPageDropdownLabel: 'Pular para página',\n jumpToPageInputLabel: 'Ir para página',\n selectRow: 'Selecionar linha',\n unselectRow: 'Desmarcar linha',\n expandRow: 'Expandir linha',\n collapseRow: 'Recolher linha',\n showFilterMenu: 'Mostrar menu de filtro',\n hideFilterMenu: 'Ocultar menu de filtro',\n filterOperator: 'Operador de filtro',\n filterConstraint: 'Restrição de filtro',\n editRow: 'Editar linha',\n saveEdit: 'Salvar edição',\n cancelEdit: 'Cancelar edição',\n listView: 'Visualização em lista',\n gridView: 'Visualização em grade',\n slide: 'Slide',\n slideNumber: 'Slide {slideNumber}',\n zoomImage: 'Ampliar imagem',\n zoomIn: 'Aumentar zoom',\n zoomOut: 'Reduzir zoom',\n rotateRight: 'Girar à direita',\n rotateLeft: 'Girar à esquerda',\n listLabel: 'Lista',\n selectColor: 'Selecionar cor',\n removeLabel: 'Remover',\n browseFiles: 'Procurar arquivos',\n maximizeLabel: 'Maximizar',\n minimizeLabel: 'Minimizar',\n },\n};\n","import { Provider } from '@angular/core';\n\nimport { DYNAMIC_FORM_ERROR_MESSAGES, DynamicFormErrorMessages } from '../interfaces/error-messages.interface';\n\n/**\n * Provider para configurar mensagens de erro customizadas.\n * @param messages Mensagens de erro customizadas\n * @returns Provider configurado\n */\nexport function provideDynamicFormConfig(messages?: DynamicFormErrorMessages): Provider[] {\n const providers: Provider[] = [];\n\n if (messages) {\n providers.push({\n provide: DYNAMIC_FORM_ERROR_MESSAGES,\n useValue: messages,\n });\n }\n\n return providers;\n}\n","import { PRIMENG_PTBR } from './lib/i18n/primeng-ptbr';\n/*\n * Public API Surface of @vipsolucoes/dynamic-form\n */\n\n// Componentes\nexport { DynamicFormComponent } from './lib/components/dynamic-form/dynamic-form.component';\nexport { DynamicFormErrorComponent } from './lib/components/form-field-error/form-field-error.component';\n\n// Fields (para uso standalone)\nexport { InputTextFieldComponent } from './lib/fields/input-text-field.component';\nexport { InputButtonFieldComponent } from './lib/fields/input-button-field.component';\nexport { SelectFieldComponent } from './lib/fields/select-field.component';\nexport { DatePickerFieldComponent } from './lib/fields/datepicker-field.component';\nexport { NumberInputFieldComponent } from './lib/fields/number-input-field.component';\nexport { PasswordFieldComponent } from './lib/fields/password-field.component';\nexport { TextareaFieldComponent } from './lib/fields/textarea-field.component';\nexport { ToggleSwitchFieldComponent } from './lib/fields/toggleswitch-field.component';\nexport { RadioButtonFieldComponent } from './lib/fields/radiobutton-field.component';\nexport { DividerFieldComponent } from './lib/fields/divider-field.component';\n\n// Interfaces\nexport type { iFormConfig, iFieldOption } from './lib/interfaces/form-config.interface';\nexport type { DynamicFormErrorMessages } from './lib/interfaces/error-messages.interface';\nexport { DYNAMIC_FORM_ERROR_MESSAGES } from './lib/interfaces/error-messages.interface';\n\n// Services\nexport { FieldRegistryService } from './lib/services/field-registry.service';\n\n// Directives\nexport { TextTransformDirective } from './lib/directives/text-transform.directive';\n\n// Utility functions\nexport { PRIMENG_PTBR } from './lib/i18n/primeng-ptbr';\nexport { provideDynamicFormConfig } from './lib/providers/dynamic-form.providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i2"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vipsolucoes/dynamic-form",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "description": "Biblioteca de formularios dinamicos para Angular com PrimeNG",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -1,4 +1,4 @@
1
- import * as i0 from '@angular/core';
1
+ import * as _angular_core from '@angular/core';
2
2
  import { OnInit, Type, InjectionToken, Provider } from '@angular/core';
3
3
  import { ValidatorFn, FormGroup, AbstractControl } from '@angular/forms';
4
4
  import * as primeng_button from 'primeng/button';
@@ -63,7 +63,38 @@ interface iFormConfig {
63
63
  /**
64
64
  * Array de opções, obrigatório para o controlType 'select' e 'radiobutton'.
65
65
  */
66
- options?: iFieldOption[];
66
+ options?: iFieldOption[] | unknown[];
67
+ /**
68
+ * Nome do campo do objeto a ser usado como label no select.
69
+ * Default: 'label'. Suporta dot notation para campos aninhados (ex: 'endereco.cidade').
70
+ * Aplicável apenas para controlType 'select'.
71
+ * Quando definido, permite usar dados de API diretamente sem mapeamento manual.
72
+ */
73
+ optionLabel?: string;
74
+ /**
75
+ * Nome do campo do objeto a ser usado como value no select.
76
+ * Default: 'value'. Suporta dot notation para campos aninhados (ex: 'id').
77
+ * Aplicável apenas para controlType 'select'.
78
+ * Quando definido, permite usar dados de API diretamente sem mapeamento manual.
79
+ */
80
+ optionValue?: string;
81
+ /**
82
+ * Função para mapear cada item da opção para o formato { label, value }.
83
+ * Útil quando label precisa ser uma combinação de campos ou transformação complexa.
84
+ * Aplicável apenas para controlType 'select'.
85
+ * Se definido, tem prioridade sobre optionLabel/optionValue.
86
+ */
87
+ optionMapper?: (item: any) => iFieldOption;
88
+ /**
89
+ * Habilita filtro de busca nas opções do select.
90
+ * Aplicável apenas para controlType 'select'.
91
+ */
92
+ optionFilter?: boolean;
93
+ /**
94
+ * Exibe botão para limpar a seleção do select.
95
+ * Aplicável apenas para controlType 'select'.
96
+ */
97
+ optionShowClear?: boolean;
67
98
  /**
68
99
  * Array de funções de validação a serem aplicadas ao campo.
69
100
  */
@@ -164,8 +195,8 @@ interface iFormConfig {
164
195
  declare class DynamicFormComponent implements OnInit {
165
196
  private readonly destroyRef;
166
197
  private readonly fieldRegistry;
167
- config: i0.InputSignal<iFormConfig[]>;
168
- formReady: i0.OutputEmitterRef<FormGroup<any>>;
198
+ config: _angular_core.InputSignal<iFormConfig[]>;
199
+ formReady: _angular_core.OutputEmitterRef<FormGroup<any>>;
169
200
  form: FormGroup<{}>;
170
201
  readonly fieldComponents: {
171
202
  [key: string]: Type<any>;
@@ -185,29 +216,29 @@ declare class DynamicFormComponent implements OnInit {
185
216
  */
186
217
  getFieldComponent(controlType: string): Type<any> | null;
187
218
  getControl(key: string): AbstractControl;
188
- static ɵfac: i0.ɵɵFactoryDeclaration<DynamicFormComponent, never>;
189
- static ɵcmp: i0.ɵɵComponentDeclaration<DynamicFormComponent, "vp-dynamic-form", never, { "config": { "alias": "config"; "required": true; "isSignal": true; }; }, { "formReady": "formReady"; }, never, never, true, never>;
219
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DynamicFormComponent, never>;
220
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DynamicFormComponent, "vp-dynamic-form", never, { "config": { "alias": "config"; "required": true; "isSignal": true; }; }, { "formReady": "formReady"; }, never, never, true, never>;
190
221
  }
191
222
 
192
223
  declare class DynamicFormErrorComponent {
193
- control: i0.InputSignal<AbstractControl<any, any, any>>;
224
+ control: _angular_core.InputSignal<AbstractControl<any, any, any>>;
194
225
  private readonly customMessages;
195
226
  private readonly defaultErrorMessages;
196
227
  get errorMessage(): string | null;
197
- static ɵfac: i0.ɵɵFactoryDeclaration<DynamicFormErrorComponent, never>;
198
- static ɵcmp: i0.ɵɵComponentDeclaration<DynamicFormErrorComponent, "vp-form-field-error", never, { "control": { "alias": "control"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
228
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DynamicFormErrorComponent, never>;
229
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DynamicFormErrorComponent, "vp-form-field-error", never, { "control": { "alias": "control"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
199
230
  }
200
231
 
201
232
  declare class InputTextFieldComponent {
202
- form: i0.InputSignal<FormGroup<any>>;
203
- field: i0.InputSignal<iFormConfig>;
204
- static ɵfac: i0.ɵɵFactoryDeclaration<InputTextFieldComponent, never>;
205
- static ɵcmp: i0.ɵɵComponentDeclaration<InputTextFieldComponent, "vp-input-text-field", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
233
+ form: _angular_core.InputSignal<FormGroup<any>>;
234
+ field: _angular_core.InputSignal<iFormConfig>;
235
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<InputTextFieldComponent, never>;
236
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputTextFieldComponent, "vp-input-text-field", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
206
237
  }
207
238
 
208
239
  declare class InputButtonFieldComponent {
209
- form: i0.InputSignal<FormGroup<any>>;
210
- field: i0.InputSignal<iFormConfig>;
240
+ form: _angular_core.InputSignal<FormGroup<any>>;
241
+ field: _angular_core.InputSignal<iFormConfig>;
211
242
  buttonConfig(): {
212
243
  icon?: string;
213
244
  label?: string;
@@ -218,67 +249,85 @@ declare class InputButtonFieldComponent {
218
249
  buttonPosition(): 'left' | 'right';
219
250
  isFieldDisabled(): boolean;
220
251
  onButtonClick(): void;
221
- static ɵfac: i0.ɵɵFactoryDeclaration<InputButtonFieldComponent, never>;
222
- static ɵcmp: i0.ɵɵComponentDeclaration<InputButtonFieldComponent, "vp-input-button-field", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
252
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<InputButtonFieldComponent, never>;
253
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputButtonFieldComponent, "vp-input-button-field", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
223
254
  }
224
255
 
225
256
  declare class SelectFieldComponent {
226
- form: i0.InputSignal<FormGroup<any>>;
227
- field: i0.InputSignal<iFormConfig>;
228
- static ɵfac: i0.ɵɵFactoryDeclaration<SelectFieldComponent, never>;
229
- static ɵcmp: i0.ɵɵComponentDeclaration<SelectFieldComponent, "vp-select-field", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
257
+ form: _angular_core.InputSignal<FormGroup<any>>;
258
+ field: _angular_core.InputSignal<iFormConfig>;
259
+ /**
260
+ * Aplica optionMapper se existir, caso contrário retorna as opções originais.
261
+ * Prioridade: optionMapper > optionLabel/optionValue > label/value padrão
262
+ */
263
+ mappedOptions: _angular_core.Signal<unknown[]>;
264
+ /**
265
+ * Determina o optionLabel efetivo a ser usado.
266
+ * Se optionMapper estiver definido, usa 'label' (pois mapper já transformou).
267
+ * Caso contrário, usa optionLabel configurado ou 'label' como padrão.
268
+ */
269
+ effectiveOptionLabel: _angular_core.Signal<string>;
270
+ /**
271
+ * Determina o optionValue efetivo a ser usado.
272
+ * Se optionMapper estiver definido, usa 'value' (pois mapper já transformou).
273
+ * Caso contrário, usa optionValue configurado ou 'value' como padrão.
274
+ */
275
+ effectiveOptionValue: _angular_core.Signal<string>;
276
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectFieldComponent, never>;
277
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectFieldComponent, "vp-select-field", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
230
278
  }
231
279
 
232
280
  declare class DatePickerFieldComponent {
233
- form: i0.InputSignal<FormGroup<any>>;
234
- field: i0.InputSignal<iFormConfig>;
235
- readonly dateFormat: i0.Signal<string>;
236
- static ɵfac: i0.ɵɵFactoryDeclaration<DatePickerFieldComponent, never>;
237
- static ɵcmp: i0.ɵɵComponentDeclaration<DatePickerFieldComponent, "vp-datepicker-field", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
281
+ form: _angular_core.InputSignal<FormGroup<any>>;
282
+ field: _angular_core.InputSignal<iFormConfig>;
283
+ readonly dateFormat: _angular_core.Signal<string>;
284
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatePickerFieldComponent, never>;
285
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatePickerFieldComponent, "vp-datepicker-field", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
238
286
  }
239
287
 
240
288
  declare class NumberInputFieldComponent {
241
- form: i0.InputSignal<FormGroup<any>>;
242
- field: i0.InputSignal<iFormConfig>;
243
- static ɵfac: i0.ɵɵFactoryDeclaration<NumberInputFieldComponent, never>;
244
- static ɵcmp: i0.ɵɵComponentDeclaration<NumberInputFieldComponent, "vp-number-input-field", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
289
+ form: _angular_core.InputSignal<FormGroup<any>>;
290
+ field: _angular_core.InputSignal<iFormConfig>;
291
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NumberInputFieldComponent, never>;
292
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NumberInputFieldComponent, "vp-number-input-field", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
245
293
  }
246
294
 
247
295
  declare class PasswordFieldComponent {
248
- form: i0.InputSignal<FormGroup<any>>;
249
- field: i0.InputSignal<iFormConfig>;
250
- static ɵfac: i0.ɵɵFactoryDeclaration<PasswordFieldComponent, never>;
251
- static ɵcmp: i0.ɵɵComponentDeclaration<PasswordFieldComponent, "vp-password-field", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
296
+ form: _angular_core.InputSignal<FormGroup<any>>;
297
+ field: _angular_core.InputSignal<iFormConfig>;
298
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PasswordFieldComponent, never>;
299
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PasswordFieldComponent, "vp-password-field", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
252
300
  }
253
301
 
254
302
  declare class TextareaFieldComponent {
255
- form: i0.InputSignal<FormGroup<any>>;
256
- field: i0.InputSignal<iFormConfig>;
257
- static ɵfac: i0.ɵɵFactoryDeclaration<TextareaFieldComponent, never>;
258
- static ɵcmp: i0.ɵɵComponentDeclaration<TextareaFieldComponent, "vp-textarea-field", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
303
+ form: _angular_core.InputSignal<FormGroup<any>>;
304
+ field: _angular_core.InputSignal<iFormConfig>;
305
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextareaFieldComponent, never>;
306
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextareaFieldComponent, "vp-textarea-field", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
259
307
  }
260
308
 
261
309
  declare class ToggleSwitchFieldComponent {
262
- form: i0.InputSignal<FormGroup<any>>;
263
- field: i0.InputSignal<iFormConfig>;
264
- isInvalid: i0.Signal<boolean>;
265
- static ɵfac: i0.ɵɵFactoryDeclaration<ToggleSwitchFieldComponent, never>;
266
- static ɵcmp: i0.ɵɵComponentDeclaration<ToggleSwitchFieldComponent, "vp-toggleswitch-field", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
310
+ form: _angular_core.InputSignal<FormGroup<any>>;
311
+ field: _angular_core.InputSignal<iFormConfig>;
312
+ isInvalid: _angular_core.Signal<boolean>;
313
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToggleSwitchFieldComponent, never>;
314
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToggleSwitchFieldComponent, "vp-toggleswitch-field", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
267
315
  }
268
316
 
269
317
  declare class RadioButtonFieldComponent {
270
- form: i0.InputSignal<FormGroup<any>>;
271
- field: i0.InputSignal<iFormConfig>;
272
- layout: i0.Signal<"horizontal" | "vertical">;
273
- isInvalid: i0.Signal<boolean>;
318
+ form: _angular_core.InputSignal<FormGroup<any>>;
319
+ field: _angular_core.InputSignal<iFormConfig>;
320
+ options: _angular_core.Signal<iFieldOption[]>;
321
+ layout: _angular_core.Signal<"horizontal" | "vertical">;
322
+ isInvalid: _angular_core.Signal<boolean>;
274
323
  getInputId(value: any): string;
275
- static ɵfac: i0.ɵɵFactoryDeclaration<RadioButtonFieldComponent, never>;
276
- static ɵcmp: i0.ɵɵComponentDeclaration<RadioButtonFieldComponent, "vp-radiobutton-field", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
324
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RadioButtonFieldComponent, never>;
325
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioButtonFieldComponent, "vp-radiobutton-field", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
277
326
  }
278
327
 
279
328
  declare class DividerFieldComponent {
280
- form: i0.InputSignal<FormGroup<any> | undefined>;
281
- field: i0.InputSignal<iFormConfig>;
329
+ form: _angular_core.InputSignal<FormGroup<any> | undefined>;
330
+ field: _angular_core.InputSignal<iFormConfig>;
282
331
  /**
283
332
  * Retorna a configuração do divider do campo.
284
333
  * Se não existir, retorna undefined para usar os defaults do PrimeNG.
@@ -289,8 +338,8 @@ declare class DividerFieldComponent {
289
338
  align?: "left" | "center" | "right" | "top" | "bottom";
290
339
  content?: string;
291
340
  } | undefined;
292
- static ɵfac: i0.ɵɵFactoryDeclaration<DividerFieldComponent, never>;
293
- static ɵcmp: i0.ɵɵComponentDeclaration<DividerFieldComponent, "vp-divider-field", never, { "form": { "alias": "form"; "required": false; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
341
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DividerFieldComponent, never>;
342
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DividerFieldComponent, "vp-divider-field", never, { "form": { "alias": "form"; "required": false; "isSignal": true; }; "field": { "alias": "field"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
294
343
  }
295
344
 
296
345
  /**
@@ -335,8 +384,8 @@ declare class FieldRegistryService {
335
384
  * Limpa todos os campos registrados.
336
385
  */
337
386
  clear(): void;
338
- static ɵfac: i0.ɵɵFactoryDeclaration<FieldRegistryService, never>;
339
- static ɵprov: i0.ɵɵInjectableDeclaration<FieldRegistryService>;
387
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FieldRegistryService, never>;
388
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<FieldRegistryService>;
340
389
  }
341
390
 
342
391
  /**
@@ -377,8 +426,8 @@ declare class TextTransformDirective implements OnInit {
377
426
  * Verifica se o elemento é um input de texto que suporta seleção de cursor.
378
427
  */
379
428
  private isTextInput;
380
- static ɵfac: i0.ɵɵFactoryDeclaration<TextTransformDirective, never>;
381
- static ɵdir: i0.ɵɵDirectiveDeclaration<TextTransformDirective, "[vpTextTransform]", never, { "vpTextTransform": { "alias": "vpTextTransform"; "required": false; }; }, {}, never, never, true, never>;
429
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextTransformDirective, never>;
430
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TextTransformDirective, "[vpTextTransform]", never, { "vpTextTransform": { "alias": "vpTextTransform"; "required": false; }; }, {}, never, never, true, never>;
382
431
  }
383
432
 
384
433
  declare const PRIMENG_PTBR: Translation;