@praxisui/manual-form 1.0.0-beta.41 → 1.0.0-beta.43
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"praxisui-manual-form.mjs","sources":["../../../projects/praxis-manual-form/src/lib/utils/clone.util.ts","../../../projects/praxis-manual-form/src/lib/seeds/manual-form.seed.ts","../../../projects/praxis-manual-form/src/lib/stores/manual-form-instance.ts","../../../projects/praxis-manual-form/src/lib/components/manual-form-header/manual-form-header.component.ts","../../../projects/praxis-manual-form/src/lib/components/manual-form-actions/manual-form-actions.component.ts","../../../projects/praxis-manual-form/src/lib/ai/manual-form-ai-capabilities.ts","../../../projects/praxis-manual-form/src/lib/ai/manual-form-ai.adapter.ts","../../../projects/praxis-manual-form/src/lib/tokens/manual-form.tokens.ts","../../../projects/praxis-manual-form/src/lib/services/manual-field-metadata-bridge.service.ts","../../../projects/praxis-manual-form/src/lib/services/manual-field-key.service.ts","../../../projects/praxis-manual-form/src/lib/components/manual-field-toolbar/manual-field-toolbar.component.ts","../../../projects/praxis-manual-form/src/lib/components/manual-form/manual-form.component.ts","../../../projects/praxis-manual-form/src/lib/components/manual-form/manual-form.component.html","../../../projects/praxis-manual-form/src/lib/components/manual-form-config-editor/manual-form-config-editor.component.ts","../../../projects/praxis-manual-form/src/lib/components/manual-form-doc-example/manual-form-doc-example.component.ts","../../../projects/praxis-manual-form/src/lib/components/manual-form-doc-example/manual-form-doc-example.component.html","../../../projects/praxis-manual-form/src/lib/examples/manual-form-doc-example-showcase.component.ts","../../../projects/praxis-manual-form/src/lib/directives/manual-field.directive.ts","../../../projects/praxis-manual-form/src/lib/directives/manual-field-editor-on-dblclick.directive.ts","../../../projects/praxis-manual-form/src/public-api.ts","../../../projects/praxis-manual-form/src/praxisui-manual-form.ts"],"sourcesContent":["export function deepClone<T>(value: T): T {\n if (typeof (globalThis as any)?.structuredClone === 'function') {\n return (globalThis as any).structuredClone(value);\n }\n\n try {\n return JSON.parse(JSON.stringify(value)) as T;\n } catch {\n if (Array.isArray(value)) {\n return value.slice() as unknown as T;\n }\n if (value && typeof value === 'object') {\n return { ...(value as Record<string, unknown>) } as T;\n }\n return value;\n }\n}\n\n","import { ensureIds, FormConfig, FieldMetadata } from '@praxisui/core';\n\nimport { deepClone } from '../utils/clone.util';\nimport {\n ManualFieldMetadataMap,\n ManualFormId,\n ManualFormSeed,\n} from '../models/manual-form.types';\n\nexport interface ManualFormSeedOptions {\n source?: ManualFormSeed['source'];\n version?: string;\n context?: Record<string, any>;\n}\n\nexport function createManualFormSeed(\n formId: ManualFormId,\n config: FormConfig,\n options: ManualFormSeedOptions = {},\n): ManualFormSeed {\n const cloned = deepClone(config);\n const normalized = ensureIds(cloned);\n normalized.fieldMetadata = (normalized.fieldMetadata || []).map((fm) => ({ ...fm }));\n\n return {\n formId,\n config: normalized,\n source: options.source ?? 'local',\n version: options.version ?? normalized.metadata?.version,\n context: options.context,\n };\n}\n\nexport function toFieldMetadataMap(\n fieldMetadata: FieldMetadata[] | undefined,\n): ManualFieldMetadataMap {\n const map: ManualFieldMetadataMap = new Map();\n for (const meta of fieldMetadata || []) {\n if (!meta?.name) continue;\n map.set(meta.name, { ...meta });\n }\n return map;\n}\n","import { inject, Injectable, Optional, Inject } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport {\n ASYNC_CONFIG_STORAGE,\n AsyncConfigStorage,\n DynamicFormService,\n FieldMetadata,\n FormConfig,\n} from '@praxisui/core';\n\nimport { deepClone } from '../utils/clone.util';\nimport {\n ManualFieldMetadataMap,\n ManualFormId,\n ManualFormPersistenceOptions,\n ManualFormSeed,\n ManualFormSnapshot,\n ManualFormState,\n} from '../models/manual-form.types';\nimport { toFieldMetadataMap } from '../seeds/manual-form.seed';\n\ninterface PersistPayload extends ManualFormSnapshot {\n version?: string;\n}\n\n/**\n * Runtime instance that keeps manual form configuration, metadata and\n * FormGroup in sync. The instance is created through the factory below so the\n * host applications do not need to manage storage or dynamic form services.\n */\nexport class ManualFormInstance {\n private readonly formConfig$: BehaviorSubject<FormConfig>;\n private readonly fieldMetadata$: BehaviorSubject<ManualFieldMetadataMap>;\n private readonly state$: BehaviorSubject<ManualFormState>;\n private readonly formGroup: FormGroup;\n private readonly boundComponents = new Map<string, unknown>();\n\n constructor(\n private readonly formId: ManualFormId,\n private readonly seed: ManualFormSeed,\n initialConfig: FormConfig,\n private readonly dynamicFormService: DynamicFormService,\n private readonly storage?: AsyncConfigStorage,\n private readonly persistenceOptions?: ManualFormPersistenceOptions,\n externalForm?: FormGroup,\n ) {\n const configClone = deepClone(initialConfig);\n const metadataMap = toFieldMetadataMap(configClone.fieldMetadata);\n\n this.formConfig$ = new BehaviorSubject<FormConfig>(configClone);\n this.fieldMetadata$ = new BehaviorSubject<ManualFieldMetadataMap>(metadataMap);\n if (externalForm) {\n this.formGroup = externalForm;\n // Ensure controls exist and match metadata on the provided form\n this.cloneFieldMetadata(metadataMap).forEach((meta) => {\n try {\n this.dynamicFormService.updateControlFromMetadata(this.formGroup, meta, {\n emitEvent: false,\n });\n } catch {\n /* ignore */\n }\n });\n } else {\n this.formGroup = this.dynamicFormService.createFormGroupFromMetadata(\n this.cloneFieldMetadata(metadataMap),\n );\n }\n this.state$ = new BehaviorSubject<ManualFormState>({\n formId: this.formId,\n config: deepClone(configClone),\n fields: this.cloneFieldMetadata(metadataMap),\n });\n }\n\n /** Observable stream for consumers interested in config mutations. */\n get stateChanges$(): Observable<ManualFormState> {\n return this.state$.asObservable();\n }\n\n get formConfigChanges$(): Observable<FormConfig> {\n return this.formConfig$.asObservable();\n }\n\n get fieldMetadataChanges$(): Observable<ManualFieldMetadataMap> {\n return this.fieldMetadata$.asObservable();\n }\n\n /**\n * Emits after field metadata has been applied to the runtime state.\n * Fires on patchFieldMetadata(), replaceConfig(), resetToSeed(), and\n * persisted config loads (when metadata is replaced).\n */\n metadataChanges(): Observable<ManualFieldMetadataMap> {\n return this.fieldMetadata$.asObservable();\n }\n\n get currentConfig(): FormConfig {\n return this.formConfig$.value;\n }\n\n get currentFieldMetadata(): ManualFieldMetadataMap {\n return this.fieldMetadata$.value;\n }\n\n get form(): FormGroup {\n return this.formGroup;\n }\n\n /** Retrieve metadata for a specific field (cloned to avoid mutations). */\n getFieldMetadata(fieldName: string): FieldMetadata | undefined {\n const meta = this.fieldMetadata$.value.get(fieldName);\n return meta ? { ...meta } : undefined;\n }\n\n /**\n * Registers a component instance to receive metadata updates for the\n * specified field. Helpful for manual templates that wish to keep hot-update\n * behaviour without wiring everything manually.\n */\n bindComponent(fieldName: string, componentInstance: unknown): void {\n if (!fieldName || !componentInstance) {\n return;\n }\n this.boundComponents.set(fieldName, componentInstance);\n this.refreshBoundComponent(fieldName);\n }\n\n unbindComponent(fieldName: string): void {\n this.boundComponents.delete(fieldName);\n }\n\n /**\n * Applies a partial metadata patch to a field and propagates the changes to\n * the FormConfig, runtime FormGroup and state streams.\n */\n patchFieldMetadata(fieldName: string, patch: Partial<FieldMetadata>): void {\n const current = this.fieldMetadata$.value.get(fieldName);\n if (!current) {\n return;\n }\n\n const next = this.applyJsonMergePatch(\n current as any,\n patch as any,\n ) as FieldMetadata;\n this.fieldMetadata$.value.set(fieldName, next);\n this.fieldMetadata$.next(new Map(this.fieldMetadata$.value));\n\n const configClone = deepClone(this.formConfig$.value);\n configClone.fieldMetadata = (configClone.fieldMetadata || []).map((fm) =>\n fm.name === fieldName ? { ...next } : fm,\n );\n this.publishConfig(configClone);\n\n try {\n this.dynamicFormService.updateControlFromMetadata(this.formGroup, next, {\n emitEvent: false,\n });\n } catch {\n /* Defensive: control might not exist if form is customised manually. */\n }\n\n this.refreshBoundComponent(fieldName);\n }\n\n /** Replaces the entire FormConfig, typically used after reconciling with backend seeds. */\n replaceConfig(config: FormConfig): void {\n const cloned = deepClone(config);\n this.fieldMetadata$.next(toFieldMetadataMap(cloned.fieldMetadata));\n this.publishConfig(cloned);\n\n const metadataList = this.getFieldMetadataArray();\n // Rebuild controls to ensure validators align with the new metadata.\n metadataList.forEach((meta) => {\n try {\n this.dynamicFormService.updateControlFromMetadata(this.formGroup, meta, {\n emitEvent: false,\n });\n } catch {\n /* ignore */\n }\n });\n\n // Refresh all bound components with the new metadata references.\n for (const fieldName of this.boundComponents.keys()) {\n this.refreshBoundComponent(fieldName);\n }\n }\n\n /** Restores configuration back to the original seed definition. */\n resetToSeed(): void {\n this.replaceConfig(this.seed.config);\n }\n\n /**\n * Persists the current configuration and, optionally, the provided form value\n * using AsyncConfigStorage. By default, stores the FormGroup raw value.\n */\n saveDraft(value: Record<string, any> | null = null): void {\n if (!this.storage) {\n return;\n }\n\n const key = buildStorageKey(this.formId, this.persistenceOptions);\n const payload: PersistPayload = {\n config: deepClone(this.formConfig$.value),\n value: value ?? this.formGroup.getRawValue(),\n metadata: {\n savedAt: new Date().toISOString(),\n savedBy: this.persistenceOptions?.profileId,\n host: this.persistenceOptions?.namespace,\n },\n version: this.seed.version,\n };\n\n this.storage.saveConfig(key, payload).pipe(take(1)).subscribe({ error: () => {} });\n }\n\n private publishConfig(config: FormConfig): void {\n this.formConfig$.next(config);\n this.state$.next({\n formId: this.formId,\n config: deepClone(config),\n fields: this.getFieldMetadataArray(),\n });\n }\n\n private getFieldMetadataArray(): FieldMetadata[] {\n return this.cloneFieldMetadata();\n }\n\n private cloneFieldMetadata(map: ManualFieldMetadataMap = this.fieldMetadata$.value): FieldMetadata[] {\n return Array.from(map.values()).map((fm) => ({ ...fm }));\n }\n\n private refreshBoundComponent(fieldName: string): void {\n const component = this.boundComponents.get(fieldName);\n if (!component) {\n return;\n }\n const metadata = this.fieldMetadata$.value.get(fieldName);\n if (!metadata) {\n return;\n }\n\n try {\n if (typeof (component as any)?.setInputMetadata === 'function') {\n (component as any).setInputMetadata({ ...metadata });\n // fallthrough to also apply visibility state on host\n }\n const metaProp = (component as any)?.metadata;\n if (metaProp && typeof metaProp === 'object') {\n if (typeof metaProp.set === 'function') {\n metaProp.set({ ...metadata });\n // fallthrough to also apply visibility state on host\n }\n }\n if (!metaProp || typeof metaProp.set !== 'function') {\n (component as any).metadata = { ...metadata };\n }\n // Apply visibility to component and host element for manual templates\n const isHidden = !!(metadata as any).hidden || !!(metadata as any).formHidden;\n if ('visible' in (component as any)) {\n try { (component as any).visible = !isHidden; } catch {}\n }\n const hostEl: HTMLElement | undefined = (component as any)?.elementRef?.nativeElement;\n if (hostEl) {\n hostEl.style.display = isHidden ? 'none' : '';\n hostEl.setAttribute('aria-hidden', String(isHidden));\n }\n } catch {\n /* ignore */\n }\n }\n\n /**\n * JSON Merge Patch semantics for metadata patches.\n * `null` remove a propriedade-alvo e objetos vazios são podados.\n */\n private applyJsonMergePatch<T>(target: T, patch: Partial<T>): T {\n if (patch == null || typeof patch !== 'object' || Array.isArray(patch)) {\n return { ...(target as any) } as T;\n }\n const out: any = Array.isArray(target)\n ? [...(target as any)]\n : { ...(target as any) };\n for (const [key, value] of Object.entries(patch as any)) {\n if (value === null) {\n delete out[key];\n continue;\n }\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n const merged = this.applyJsonMergePatch(\n out[key] && typeof out[key] === 'object' && !Array.isArray(out[key])\n ? out[key]\n : ({} as any),\n value as any,\n );\n if (\n merged &&\n typeof merged === 'object' &&\n !Array.isArray(merged) &&\n !Object.keys(merged as any).length\n ) {\n delete out[key];\n continue;\n }\n out[key] = merged;\n continue;\n }\n out[key] = value;\n }\n return out as T;\n }\n}\n\n/**\n * Factory service used to create ManualFormInstance objects with the required\n * dependencies injected from Angular's DI container.\n */\n@Injectable({ providedIn: 'root' })\nexport class ManualFormInstanceFactory {\n private readonly dynamicFormService = inject(DynamicFormService);\n\n constructor(\n @Optional() @Inject(ASYNC_CONFIG_STORAGE) private readonly storage?: AsyncConfigStorage,\n ) {}\n\n create(\n seed: ManualFormSeed,\n options: ManualFormPersistenceOptions = {},\n externalForm?: FormGroup,\n ): ManualFormInstance {\n const baseConfig = deepClone(seed.config);\n\n const instance = new ManualFormInstance(\n seed.formId,\n seed,\n baseConfig,\n this.dynamicFormService,\n this.storage,\n options,\n externalForm,\n );\n\n if (this.storage) {\n const key = buildStorageKey(seed.formId, options);\n this.storage\n .loadConfig<PersistPayload>(key)\n .pipe(take(1))\n .subscribe((persisted) => {\n if (!persisted) return;\n if (persisted.config) {\n instance.replaceConfig(persisted.config);\n }\n if (persisted.value) {\n instance.form.patchValue(persisted.value, { emitEvent: false });\n }\n });\n }\n\n return instance;\n }\n}\n\nfunction buildStorageKey(\n formId: ManualFormId,\n options: ManualFormPersistenceOptions = {},\n): string {\n if (options.storageKey) {\n return String(options.storageKey);\n }\n const parts = ['manual-form', options.namespace, options.tenantId, options.profileId, formId]\n .filter(Boolean)\n .map((segment) => String(segment));\n return parts.join(':');\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ManualFormInstance } from '../../stores/manual-form-instance';\n\n@Component({\n selector: 'praxis-manual-form-header',\n standalone: true,\n imports: [CommonModule],\n template: `\n <header class=\"pdx-manual-form__header\">\n <div class=\"pdx-manual-form__title\">\n <h2>{{ displayTitle }}</h2>\n @if (displayDescription) {\n <p class=\"pdx-manual-form__subtitle\">\n {{ displayDescription }}\n </p>\n }\n </div>\n <div class=\"pdx-manual-form__header-actions\">\n @if (editModeEnabled()) {\n <button type=\"button\" class=\"pdx-btn pdx-btn--ghost\" (click)=\"editForm.emit()\" [attr.aria-label]=\"editFormLabel()\">{{ editFormLabel() }}</button>\n }\n <button type=\"button\" class=\"pdx-btn pdx-btn--ghost\" (click)=\"reset.emit()\" [attr.aria-label]=\"resetLabel()\">{{ resetLabel() }}</button>\n <button type=\"button\" class=\"pdx-btn pdx-btn--primary\" (click)=\"save.emit()\" [attr.aria-label]=\"saveLabel()\">{{ saveLabel() }}</button>\n </div>\n </header>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n .pdx-manual-form__header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 1rem;\n margin-bottom: 1.5rem;\n }\n .pdx-manual-form__title h2 {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 600;\n line-height: 1.3;\n }\n .pdx-manual-form__subtitle {\n margin: 0.25rem 0 0;\n color: var(--md-sys-color-on-surface-variant);\n }\n .pdx-manual-form__header-actions {\n display: flex;\n gap: 0.5rem;\n flex-wrap: wrap;\n }\n .pdx-btn {\n min-height: 36px;\n padding: 0 14px;\n border-radius: 8px;\n border: 1px solid var(--md-sys-color-outline-variant);\n background: var(--md-sys-color-surface);\n color: var(--md-sys-color-on-surface);\n cursor: pointer;\n transition: background-color .18s ease, border-color .18s ease, color .18s ease;\n }\n .pdx-btn:hover { background: var(--md-sys-color-surface-container); }\n .pdx-btn:focus-visible { outline: 2px solid var(--md-sys-color-primary); outline-offset: 2px; }\n .pdx-btn--ghost {\n background: transparent;\n border-color: var(--md-sys-color-outline-variant);\n color: var(--md-sys-color-on-surface-variant);\n }\n .pdx-btn--primary {\n background: var(--md-sys-color-primary);\n border-color: var(--md-sys-color-primary);\n color: var(--md-sys-color-on-primary);\n }\n .pdx-btn--primary:hover {\n background: var(--md-sys-color-primary-container);\n border-color: var(--md-sys-color-primary-container);\n color: var(--md-sys-color-on-primary-container);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ManualFormHeaderComponent {\n readonly instance = input<ManualFormInstance | null | undefined>();\n readonly title = input<string | undefined>();\n readonly description = input<string | undefined>();\n readonly saveLabel = input('Salvar customizações');\n readonly resetLabel = input('Restaurar padrão');\n readonly editModeEnabled = input(false);\n readonly editFormLabel = input('Editar formulário');\n\n readonly save = output<void>();\n readonly reset = output<void>();\n readonly editForm = output<void>();\n\n readonly fallbackTitle = 'Formulário manual';\n\n private get metadata(): { title?: string; description?: string } | undefined {\n return this.instance()?.currentConfig?.metadata as\n | { title?: string; description?: string }\n | undefined;\n }\n\n private get firstSection(): { title?: string; description?: string } | undefined {\n return this.instance()?.currentConfig?.sections?.[0];\n }\n\n get displayTitle(): string {\n return (\n this.title() ||\n this.metadata?.title ||\n this.firstSection?.title ||\n this.fallbackTitle\n );\n }\n\n get displayDescription(): string | undefined {\n return (\n this.description() ||\n this.metadata?.description ||\n this.firstSection?.description ||\n undefined\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormActionsLayout, FormActionButton } from '@praxisui/core';\n\n@Component({\n selector: 'praxis-manual-form-actions',\n standalone: true,\n imports: [CommonModule],\n template: `\n @if (actions(); as layout) {\n <footer class=\"pdx-manual-form__actions\">\n <div class=\"pdx-manual-form__actions-secondary\">\n @if (layout.cancel; as cancel) {\n @if (isVisible(cancel)) {\n <button type=\"button\" class=\"pdx-btn pdx-btn--ghost\" [disabled]=\"cancel.disabled\" (click)=\"emit('cancel', cancel)\">\n {{ cancel.label || 'Cancelar' }}\n </button>\n }\n }\n @if (layout.reset; as resetBtn) {\n @if (isVisible(resetBtn)) {\n <button type=\"button\" class=\"pdx-btn pdx-btn--ghost\" [disabled]=\"resetBtn.disabled\" (click)=\"emit('reset', resetBtn)\">\n {{ resetBtn.label || 'Resetar' }}\n </button>\n }\n }\n @for (action of layout.custom || []; track trackByFn ? trackByFn($index, action) : (action?.id || $index)) {\n @if (isVisible(action)) {\n <button type=\"button\" class=\"pdx-btn pdx-btn--ghost\" [disabled]=\"action.disabled\" (click)=\"emit(action.id || 'custom', action)\">\n {{ action.label || action.id || 'Ação' }}\n </button>\n }\n }\n </div>\n <div class=\"pdx-manual-form__actions-primary\">\n @if (layout.submit; as submitBtn) {\n @if (isVisible(submitBtn)) {\n <button type=\"submit\" class=\"pdx-btn pdx-btn--primary\" [disabled]=\"submitBtn.disabled\" (click)=\"emit('submit', submitBtn)\">\n {{ submitBtn.label || 'Salvar' }}\n </button>\n }\n }\n </div>\n </footer>\n }\n `,\n styles: [\n `\n :host { display: block; }\n .pdx-manual-form__actions {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 1rem;\n margin-top: 2rem;\n flex-wrap: wrap;\n }\n .pdx-manual-form__actions-secondary,\n .pdx-manual-form__actions-primary {\n display: flex;\n gap: 0.5rem;\n }\n .pdx-btn {\n min-height: 36px;\n padding: 0 14px;\n border-radius: 8px;\n border: 1px solid var(--md-sys-color-outline-variant);\n background: var(--md-sys-color-surface);\n color: var(--md-sys-color-on-surface);\n cursor: pointer;\n transition: background-color .18s ease, border-color .18s ease, color .18s ease;\n }\n .pdx-btn:hover { background: var(--md-sys-color-surface-container); }\n .pdx-btn:focus-visible { outline: 2px solid var(--md-sys-color-primary); outline-offset: 2px; }\n .pdx-btn:disabled { opacity: 0.6; cursor: not-allowed; }\n .pdx-btn--ghost {\n background: transparent;\n border-color: var(--md-sys-color-outline-variant);\n color: var(--md-sys-color-on-surface-variant);\n }\n .pdx-btn--primary {\n background: var(--md-sys-color-primary);\n color: var(--md-sys-color-on-primary);\n border-color: var(--md-sys-color-primary);\n }\n .pdx-btn--primary:hover {\n background: var(--md-sys-color-primary-container);\n border-color: var(--md-sys-color-primary-container);\n color: var(--md-sys-color-on-primary-container);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ManualFormActionsComponent {\n readonly actions = input<FormActionsLayout | null | undefined>();\n @Input() trackByFn: ((idx: number, item: FormActionButton) => unknown) | null = null;\n readonly actionClick = output<string>();\n\n isVisible(action?: FormActionButton | null): boolean {\n return action ? action.visible !== false : false;\n }\n\n emit(kind: string, action?: FormActionButton | null): void {\n if (action?.action) {\n this.actionClick.emit(action.action);\n } else {\n this.actionClick.emit(kind);\n }\n }\n}\n","/**\n * Capabilities catalog for Manual Form (FormConfig-based).\n * Focuses on the FormConfig structure managed by ManualFormInstance.\n */\n\nimport { RULE_PROPERTY_SCHEMA, RulePropertyDefinition } from '@praxisui/core';\n\nimport type {\n AiCapability,\n AiCapabilityCatalog,\n AiCapabilityCategory,\n AiValueKind,\n} from '@praxisui/core';\n\ndeclare module '@praxisui/core' {\n interface AiCapabilityCategoryMap {\n fields: true;\n actions: true;\n api: true;\n messages: true;\n metadata: true;\n hints: true;\n rules: true;\n hooks: true;\n }\n}\n\nexport type CapabilityCategory = AiCapabilityCategory;\nexport type ValueKind = AiValueKind;\n\nexport interface Capability extends AiCapability {\n category: CapabilityCategory;\n}\n\nexport interface CapabilityCatalog extends AiCapabilityCatalog {\n capabilities: Capability[];\n}\n\nconst ENUMS: Record<string, Array<string | number>> = {\n actionColor: ['primary', 'accent', 'warn', 'basic'],\n actionSize: ['small', 'medium', 'large'],\n actionVariant: ['raised', 'stroked', 'flat', 'fab'],\n actionType: ['button', 'submit', 'reset'],\n actionsPosition: ['left', 'center', 'right', 'justified', 'split'],\n actionsMobilePosition: ['left', 'center', 'right', 'justified'],\n actionsOrientation: ['horizontal', 'vertical'],\n actionsSpacing: ['compact', 'normal', 'spacious'],\n actionsPlacement: ['insideLastSection', 'afterSections', 'top'],\n columnAlign: ['start', 'center', 'end', 'stretch'],\n sectionTitleStyle: ['titleLarge', 'titleMedium', 'titleSmall', 'headlineSmall'],\n sectionDescriptionStyle: ['bodyLarge', 'bodyMedium', 'bodySmall'],\n headerAlign: ['start', 'center'],\n schemaType: ['response', 'request'],\n customizationSource: ['user', 'server', 'system'],\n formRuleTargetType: ['field', 'section', 'action', 'row', 'column'],\n formRuleContext: ['visibility', 'readOnly', 'style', 'validation', 'notification'],\n mode: ['create', 'edit', 'view'],\n schemaSource: ['resource', 'filter'],\n};\n\nfunction generateRulePropertyCapabilities(\n targetType: 'field' | 'section' | 'action' | 'row' | 'column',\n properties: RulePropertyDefinition[],\n): Capability[] {\n const result: Capability[] = [];\n properties.forEach((prop) => {\n const valueKind: ValueKind =\n prop.type === 'object'\n ? 'object'\n : prop.type === 'enum'\n ? 'enum'\n : prop.type === 'boolean'\n ? 'boolean'\n : prop.type === 'number'\n ? 'number'\n : 'string';\n const capability: Capability = {\n path: `formRules[].effect.properties.${prop.name}`,\n category: 'rules',\n valueKind,\n description: `Propriedade '${prop.label}' aplicada ao ${targetType}.`,\n example:\n prop.type === 'boolean'\n ? 'true'\n : prop.type === 'number'\n ? '123'\n : prop.type === 'enum'\n ? (prop.enumValues?.[0]?.value || 'valor')\n : 'valor',\n safetyNotes: prop.type === 'object' ? 'O objeto deve seguir o schema esperado pelo componente alvo.' : undefined,\n };\n if (prop.enumValues) {\n capability.allowedValues = prop.enumValues.map((ev) => ev.value);\n }\n result.push(capability);\n });\n\n return result;\n}\n\nfunction generateRulePropertyWhenFalseCapabilities(\n targetType: 'field' | 'section' | 'action' | 'row' | 'column',\n properties: RulePropertyDefinition[],\n): Capability[] {\n const result: Capability[] = [];\n properties.forEach((prop) => {\n const valueKind: ValueKind =\n prop.type === 'object'\n ? 'object'\n : prop.type === 'enum'\n ? 'enum'\n : prop.type === 'boolean'\n ? 'boolean'\n : prop.type === 'number'\n ? 'number'\n : 'string';\n const capability: Capability = {\n path: `formRules[].effect.propertiesWhenFalse.${prop.name}`,\n category: 'rules',\n valueKind,\n description: `Propriedade '${prop.label}' aplicada ao ${targetType} quando a condicao e falsa.`,\n example:\n prop.type === 'boolean'\n ? 'false'\n : prop.type === 'number'\n ? '0'\n : prop.type === 'enum'\n ? (prop.enumValues?.[0]?.value || 'valor')\n : 'valor',\n safetyNotes: prop.type === 'object' ? 'O objeto deve seguir o schema esperado pelo componente alvo.' : undefined,\n };\n if (prop.enumValues) {\n capability.allowedValues = prop.enumValues.map((ev) => ev.value);\n }\n result.push(capability);\n });\n\n return result;\n}\n\nexport const MANUAL_FORM_AI_CAPABILITIES: CapabilityCatalog = {\n version: 'v1.3',\n enums: ENUMS,\n targets: [\n 'praxis-manual-form',\n 'praxis-manual-form-config-editor',\n 'praxis-manual-form-actions',\n 'praxis-manual-form-header',\n ],\n notes: [\n 'ManualForm usa FormConfig interno para metadados e layout.',\n 'fieldMetadata[] deve seguir o catalogo base de FieldMetadata.',\n 'Arrays de layout e actions devem ser mesclados por id/label, evitando replace total.',\n 'ManualFormHeader usa metadata.title/metadata.description como fallback para titulo/descricao.',\n 'Se controlType nao tiver catalogo dedicado, trate como FieldMetadata base.',\n ],\n capabilities: [\n // --- Form metadata ---\n {\n path: 'metadata.version',\n category: 'metadata',\n valueKind: 'string',\n description: 'Versao da configuracao do formulario.',\n },\n {\n path: 'metadata.source',\n category: 'metadata',\n valueKind: 'enum',\n allowedValues: ['local', 'server', 'default'],\n description: 'Origem da configuracao.',\n },\n {\n path: 'metadata.title',\n category: 'metadata',\n valueKind: 'string',\n description: 'Titulo exibido no cabecalho quando formTitle nao for informado.',\n },\n {\n path: 'metadata.description',\n category: 'metadata',\n valueKind: 'string',\n description: 'Descricao exibida no cabecalho quando formDescription nao for informado.',\n },\n {\n path: 'metadata.lastUpdated',\n category: 'metadata',\n valueKind: 'string',\n description: 'Timestamp da ultima atualizacao.',\n safetyNotes: 'Valor de auditoria; preferir preenchimento pelo host.',\n },\n {\n path: 'metadata.schemaId',\n category: 'metadata',\n valueKind: 'string',\n description: 'Identificador do schema usado na composicao.',\n },\n {\n path: 'metadata.serverHash',\n category: 'metadata',\n valueKind: 'string',\n description: 'Hash do schema/servidor para reconciliacao.',\n },\n {\n path: 'metadata.schemaContext',\n category: 'metadata',\n valueKind: 'object',\n description: 'Contexto do schema (path/operation/schemaType).',\n },\n {\n path: 'metadata.schemaContext.path',\n category: 'metadata',\n valueKind: 'string',\n description: 'Path do schema usado para compor o formulario.',\n },\n {\n path: 'metadata.schemaContext.operation',\n category: 'metadata',\n valueKind: 'string',\n description: 'Operacao do schema (ex: GET/POST).',\n },\n {\n path: 'metadata.schemaContext.schemaType',\n category: 'metadata',\n valueKind: 'enum',\n allowedValues: ENUMS.schemaType,\n description: 'Tipo do schema (response/request).',\n },\n {\n path: 'metadata.schemaContext.internal',\n category: 'metadata',\n valueKind: 'boolean',\n description: 'Marca schema como interno.',\n },\n {\n path: 'metadata.schemaContext.tenant',\n category: 'metadata',\n valueKind: 'string',\n description: 'Tenant do schema.',\n },\n {\n path: 'metadata.schemaContext.locale',\n category: 'metadata',\n valueKind: 'string',\n description: 'Locale do schema.',\n },\n {\n path: 'metadata.customizations',\n category: 'metadata',\n valueKind: 'array',\n description: 'Log de customizacoes.',\n safetyNotes: 'Usado para auditoria; nao gerar automaticamente.',\n },\n {\n path: 'metadata.customizations[]',\n category: 'metadata',\n valueKind: 'object',\n description: 'Registro de customizacao.',\n },\n {\n path: 'metadata.customizations[].fieldName',\n category: 'metadata',\n valueKind: 'string',\n description: 'Campo customizado.',\n },\n {\n path: 'metadata.customizations[].property',\n category: 'metadata',\n valueKind: 'string',\n description: 'Propriedade alterada.',\n },\n {\n path: 'metadata.customizations[].oldValue',\n category: 'metadata',\n valueKind: 'object',\n description: 'Valor anterior.',\n },\n {\n path: 'metadata.customizations[].newValue',\n category: 'metadata',\n valueKind: 'object',\n description: 'Novo valor.',\n },\n {\n path: 'metadata.customizations[].timestamp',\n category: 'metadata',\n valueKind: 'string',\n description: 'Timestamp da alteracao (ISO).',\n },\n {\n path: 'metadata.customizations[].source',\n category: 'metadata',\n valueKind: 'enum',\n allowedValues: ENUMS.customizationSource,\n description: 'Origem da alteracao.',\n },\n\n // --- Field metadata ---\n {\n path: 'fieldMetadata',\n category: 'fields',\n valueKind: 'array',\n critical: true,\n description: 'Metadados dos campos (FieldMetadata).',\n safetyNotes: 'Use o catalogo base FieldMetadata para detalhes de campos.',\n },\n {\n path: 'fieldMetadata[]',\n category: 'fields',\n valueKind: 'object',\n critical: true,\n description: 'Item de metadados do campo (FieldMetadata).',\n safetyNotes: 'Use o catalogo base FieldMetadata para detalhes de campos.',\n },\n\n // --- Layout ---\n { path: 'sections[]', category: 'layout', valueKind: 'object', description: 'Secao do formulario.' },\n { path: 'sections[].id', category: 'layout', valueKind: 'string', description: 'ID da secao.' },\n { path: 'sections[].title', category: 'layout', valueKind: 'string', description: 'Titulo da secao.' },\n { path: 'sections[].description', category: 'layout', valueKind: 'string', description: 'Descricao da secao.' },\n { path: 'sections[].icon', category: 'layout', valueKind: 'string', description: 'Icone da secao.' },\n { path: 'sections[].collapsible', category: 'layout', valueKind: 'boolean', description: 'Secao recolhivel.' },\n { path: 'sections[].collapsed', category: 'layout', valueKind: 'boolean', description: 'Estado inicial recolhido.' },\n { path: 'sections[].gapBottom', category: 'layout', valueKind: 'number', description: 'Espaco extra apos a secao (px).' },\n { path: 'sections[].titleGapBottom', category: 'layout', valueKind: 'number', description: 'Espaco abaixo do titulo (px).' },\n { path: 'sections[].descriptionGapBottom', category: 'layout', valueKind: 'number', description: 'Espaco abaixo da descricao (px).' },\n { path: 'sections[].titleStyle', category: 'layout', valueKind: 'enum', allowedValues: ENUMS.sectionTitleStyle, description: 'Preset tipografico do titulo.' },\n { path: 'sections[].descriptionStyle', category: 'layout', valueKind: 'enum', allowedValues: ENUMS.sectionDescriptionStyle, description: 'Preset tipografico da descricao.' },\n { path: 'sections[].titleColor', category: 'layout', valueKind: 'string', description: 'Cor do titulo.' },\n { path: 'sections[].descriptionColor', category: 'layout', valueKind: 'string', description: 'Cor da descricao.' },\n { path: 'sections[].headerAlign', category: 'layout', valueKind: 'enum', allowedValues: ENUMS.headerAlign, description: 'Alinhamento do header.' },\n { path: 'sections[].headerTooltip', category: 'layout', valueKind: 'string', description: 'Tooltip do header da secao.' },\n { path: 'sections[].rows[]', category: 'layout', valueKind: 'object', description: 'Linha da secao.' },\n { path: 'sections[].rows[].id', category: 'layout', valueKind: 'string', description: 'ID da linha.' },\n { path: 'sections[].rows[].title', category: 'layout', valueKind: 'string', description: 'Titulo da linha.' },\n { path: 'sections[].rows[].gap', category: 'layout', valueKind: 'number', description: 'Espaco horizontal entre colunas (px).' },\n { path: 'sections[].rows[].rowGap', category: 'layout', valueKind: 'number', description: 'Espaco vertical apos a linha (px).' },\n { path: 'sections[].rows[].columns[]', category: 'layout', valueKind: 'object', description: 'Coluna da linha.' },\n { path: 'sections[].rows[].columns[].id', category: 'layout', valueKind: 'string', description: 'ID da coluna.' },\n { path: 'sections[].rows[].columns[].title', category: 'layout', valueKind: 'string', description: 'Titulo da coluna.' },\n { path: 'sections[].rows[].columns[].fields', category: 'layout', valueKind: 'array', description: 'Campos associados a coluna.' },\n { path: 'sections[].rows[].columns[].fields[]', category: 'layout', valueKind: 'string', description: 'Nome do campo na coluna.', safetyNotes: 'Use nomes presentes em fieldMetadata[].name.' },\n { path: 'sections[].rows[].columns[].span', category: 'layout', valueKind: 'object', description: 'Span responsivo.' },\n { path: 'sections[].rows[].columns[].span.xs', category: 'layout', valueKind: 'number', description: 'Span xs (1-12).' },\n { path: 'sections[].rows[].columns[].span.sm', category: 'layout', valueKind: 'number', description: 'Span sm (1-12).' },\n { path: 'sections[].rows[].columns[].span.md', category: 'layout', valueKind: 'number', description: 'Span md (1-12).' },\n { path: 'sections[].rows[].columns[].span.lg', category: 'layout', valueKind: 'number', description: 'Span lg (1-12).' },\n { path: 'sections[].rows[].columns[].span.xl', category: 'layout', valueKind: 'number', description: 'Span xl (1-12).' },\n { path: 'sections[].rows[].columns[].offset', category: 'layout', valueKind: 'object', description: 'Offset responsivo.' },\n { path: 'sections[].rows[].columns[].offset.xs', category: 'layout', valueKind: 'number', description: 'Offset xs (1-12).' },\n { path: 'sections[].rows[].columns[].offset.sm', category: 'layout', valueKind: 'number', description: 'Offset sm (1-12).' },\n { path: 'sections[].rows[].columns[].offset.md', category: 'layout', valueKind: 'number', description: 'Offset md (1-12).' },\n { path: 'sections[].rows[].columns[].offset.lg', category: 'layout', valueKind: 'number', description: 'Offset lg (1-12).' },\n { path: 'sections[].rows[].columns[].offset.xl', category: 'layout', valueKind: 'number', description: 'Offset xl (1-12).' },\n { path: 'sections[].rows[].columns[].order', category: 'layout', valueKind: 'object', description: 'Order responsivo.' },\n { path: 'sections[].rows[].columns[].order.xs', category: 'layout', valueKind: 'number', description: 'Order xs.' },\n { path: 'sections[].rows[].columns[].order.sm', category: 'layout', valueKind: 'number', description: 'Order sm.' },\n { path: 'sections[].rows[].columns[].order.md', category: 'layout', valueKind: 'number', description: 'Order md.' },\n { path: 'sections[].rows[].columns[].order.lg', category: 'layout', valueKind: 'number', description: 'Order lg.' },\n { path: 'sections[].rows[].columns[].order.xl', category: 'layout', valueKind: 'number', description: 'Order xl.' },\n { path: 'sections[].rows[].columns[].hidden', category: 'layout', valueKind: 'object', description: 'Hidden responsivo.' },\n { path: 'sections[].rows[].columns[].hidden.xs', category: 'layout', valueKind: 'boolean', description: 'Ocultar no xs.' },\n { path: 'sections[].rows[].columns[].hidden.sm', category: 'layout', valueKind: 'boolean', description: 'Ocultar no sm.' },\n { path: 'sections[].rows[].columns[].hidden.md', category: 'layout', valueKind: 'boolean', description: 'Ocultar no md.' },\n { path: 'sections[].rows[].columns[].hidden.lg', category: 'layout', valueKind: 'boolean', description: 'Ocultar no lg.' },\n { path: 'sections[].rows[].columns[].hidden.xl', category: 'layout', valueKind: 'boolean', description: 'Ocultar no xl.' },\n { path: 'sections[].rows[].columns[].align', category: 'layout', valueKind: 'enum', allowedValues: ENUMS.columnAlign, description: 'Alinhamento da coluna.' },\n { path: 'sections[].rows[].columns[].padding', category: 'layout', valueKind: 'number', description: 'Padding da coluna (px).' },\n { path: 'sections[].rows[].columns[].className', category: 'layout', valueKind: 'string', description: 'Classe CSS da coluna.' },\n { path: 'sections[].rows[].columns[].testId', category: 'layout', valueKind: 'string', description: 'Test id da coluna.' },\n\n // --- Actions ---\n { path: 'actions', category: 'actions', valueKind: 'object', description: 'Layout de acoes do formulario.' },\n { path: 'actions.position', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionsPosition, description: 'Posicao das acoes.' },\n { path: 'actions.orientation', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionsOrientation, description: 'Orientacao das acoes.' },\n { path: 'actions.spacing', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionsSpacing, description: 'Espacamento das acoes.' },\n { path: 'actions.sticky', category: 'actions', valueKind: 'boolean', description: 'Fixar barra de acoes.' },\n { path: 'actions.divider', category: 'actions', valueKind: 'boolean', description: 'Exibir divisor acima das acoes.' },\n { path: 'actions.placement', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionsPlacement, description: 'Posicionamento estrutural das acoes.' },\n { path: 'actions.containerClassName', category: 'actions', valueKind: 'string', description: 'Classe CSS do container de acoes.' },\n { path: 'actions.containerStyles', category: 'actions', valueKind: 'object', description: 'Estilos inline do container.' },\n { path: 'actions.mobile', category: 'actions', valueKind: 'object', description: 'Config para mobile.' },\n { path: 'actions.mobile.position', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionsMobilePosition, description: 'Posicao das acoes no mobile.' },\n { path: 'actions.mobile.orientation', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionsOrientation, description: 'Orientacao no mobile.' },\n { path: 'actions.mobile.collapseToMenu', category: 'actions', valueKind: 'boolean', description: 'Colapsar acoes em menu.' },\n { path: 'actions.showSaveButton', category: 'actions', valueKind: 'boolean', description: 'Legacy: mostrar botao salvar.' },\n { path: 'actions.submitButtonLabel', category: 'actions', valueKind: 'string', description: 'Legacy: texto do submit.' },\n { path: 'actions.showCancelButton', category: 'actions', valueKind: 'boolean', description: 'Legacy: mostrar cancelar.' },\n { path: 'actions.cancelButtonLabel', category: 'actions', valueKind: 'string', description: 'Legacy: texto do cancelar.' },\n { path: 'actions.showResetButton', category: 'actions', valueKind: 'boolean', description: 'Legacy: mostrar reset.' },\n { path: 'actions.resetButtonLabel', category: 'actions', valueKind: 'string', description: 'Legacy: texto do reset.' },\n\n { path: 'actions.submit', category: 'actions', valueKind: 'object', description: 'Botao submit.' },\n { path: 'actions.cancel', category: 'actions', valueKind: 'object', description: 'Botao cancelar.' },\n { path: 'actions.reset', category: 'actions', valueKind: 'object', description: 'Botao reset.' },\n { path: 'actions.custom', category: 'actions', valueKind: 'array', description: 'Botoes customizados.' },\n { path: 'actions.custom[]', category: 'actions', valueKind: 'object', description: 'Configuracao de botao customizado.', safetyNotes: 'Requer action handler registrado no host.' },\n { path: 'actions.submit.id', category: 'actions', valueKind: 'string', description: 'ID do botao.' },\n { path: 'actions.submit.visible', category: 'actions', valueKind: 'boolean', description: 'Visibilidade.' },\n { path: 'actions.submit.label', category: 'actions', valueKind: 'string', description: 'Label do botao.' },\n { path: 'actions.submit.icon', category: 'actions', valueKind: 'string', description: 'Icone do botao.' },\n { path: 'actions.submit.className', category: 'actions', valueKind: 'string', description: 'Classe CSS.' },\n { path: 'actions.submit.style', category: 'actions', valueKind: 'object', description: 'Estilo inline.' },\n { path: 'actions.submit.color', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionColor, description: 'Cor do botao.' },\n { path: 'actions.submit.disabled', category: 'actions', valueKind: 'boolean', description: 'Botao desabilitado.' },\n { path: 'actions.submit.type', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionType, description: 'Tipo do botao.' },\n { path: 'actions.submit.action', category: 'actions', valueKind: 'string', description: 'Evento custom.', safetyNotes: 'Requer handler registrado no host.' },\n { path: 'actions.submit.tooltip', category: 'actions', valueKind: 'string', description: 'Tooltip.' },\n { path: 'actions.submit.loading', category: 'actions', valueKind: 'boolean', description: 'Estado loading.' },\n { path: 'actions.submit.size', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionSize, description: 'Tamanho do botao.' },\n { path: 'actions.submit.variant', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionVariant, description: 'Variante visual.' },\n { path: 'actions.submit.shortcut', category: 'actions', valueKind: 'string', description: 'Atalho de teclado.' },\n\n // Apply same structure for cancel/reset/custom buttons\n { path: 'actions.cancel.id', category: 'actions', valueKind: 'string' },\n { path: 'actions.cancel.visible', category: 'actions', valueKind: 'boolean' },\n { path: 'actions.cancel.label', category: 'actions', valueKind: 'string' },\n { path: 'actions.cancel.icon', category: 'actions', valueKind: 'string' },\n { path: 'actions.cancel.className', category: 'actions', valueKind: 'string' },\n { path: 'actions.cancel.style', category: 'actions', valueKind: 'object' },\n { path: 'actions.cancel.color', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionColor },\n { path: 'actions.cancel.disabled', category: 'actions', valueKind: 'boolean' },\n { path: 'actions.cancel.type', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionType },\n { path: 'actions.cancel.action', category: 'actions', valueKind: 'string', safetyNotes: 'Requer handler registrado no host.' },\n { path: 'actions.cancel.tooltip', category: 'actions', valueKind: 'string' },\n { path: 'actions.cancel.loading', category: 'actions', valueKind: 'boolean' },\n { path: 'actions.cancel.size', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionSize },\n { path: 'actions.cancel.variant', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionVariant },\n { path: 'actions.cancel.shortcut', category: 'actions', valueKind: 'string' },\n\n { path: 'actions.reset.id', category: 'actions', valueKind: 'string' },\n { path: 'actions.reset.visible', category: 'actions', valueKind: 'boolean' },\n { path: 'actions.reset.label', category: 'actions', valueKind: 'string' },\n { path: 'actions.reset.icon', category: 'actions', valueKind: 'string' },\n { path: 'actions.reset.className', category: 'actions', valueKind: 'string' },\n { path: 'actions.reset.style', category: 'actions', valueKind: 'object' },\n { path: 'actions.reset.color', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionColor },\n { path: 'actions.reset.disabled', category: 'actions', valueKind: 'boolean' },\n { path: 'actions.reset.type', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionType },\n { path: 'actions.reset.action', category: 'actions', valueKind: 'string', safetyNotes: 'Requer handler registrado no host.' },\n { path: 'actions.reset.tooltip', category: 'actions', valueKind: 'string' },\n { path: 'actions.reset.loading', category: 'actions', valueKind: 'boolean' },\n { path: 'actions.reset.size', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionSize },\n { path: 'actions.reset.variant', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionVariant },\n { path: 'actions.reset.shortcut', category: 'actions', valueKind: 'string' },\n\n { path: 'actions.custom[].id', category: 'actions', valueKind: 'string' },\n { path: 'actions.custom[].visible', category: 'actions', valueKind: 'boolean' },\n { path: 'actions.custom[].label', category: 'actions', valueKind: 'string' },\n { path: 'actions.custom[].icon', category: 'actions', valueKind: 'string' },\n { path: 'actions.custom[].className', category: 'actions', valueKind: 'string' },\n { path: 'actions.custom[].style', category: 'actions', valueKind: 'object' },\n { path: 'actions.custom[].color', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionColor },\n { path: 'actions.custom[].disabled', category: 'actions', valueKind: 'boolean' },\n { path: 'actions.custom[].type', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionType },\n { path: 'actions.custom[].action', category: 'actions', valueKind: 'string', safetyNotes: 'Requer handler registrado no host.' },\n { path: 'actions.custom[].tooltip', category: 'actions', valueKind: 'string' },\n { path: 'actions.custom[].loading', category: 'actions', valueKind: 'boolean' },\n { path: 'actions.custom[].size', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionSize },\n { path: 'actions.custom[].variant', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionVariant },\n { path: 'actions.custom[].shortcut', category: 'actions', valueKind: 'string' },\n\n // --- Behavior ---\n { path: 'behavior', category: 'behavior', valueKind: 'object', description: 'Comportamento do formulario.' },\n { path: 'behavior.confirmOnUnsavedChanges', category: 'behavior', valueKind: 'boolean' },\n { path: 'behavior.trackHistory', category: 'behavior', valueKind: 'boolean' },\n { path: 'behavior.focusFirstError', category: 'behavior', valueKind: 'boolean' },\n { path: 'behavior.scrollToErrors', category: 'behavior', valueKind: 'boolean' },\n { path: 'behavior.clearAfterSave', category: 'behavior', valueKind: 'boolean' },\n { path: 'behavior.redirectAfterSave', category: 'behavior', valueKind: 'string' },\n { path: 'behavior.reactiveValidation', category: 'behavior', valueKind: 'boolean' },\n { path: 'behavior.reactiveValidationDebounceMs', category: 'behavior', valueKind: 'number' },\n\n // --- API ---\n { path: 'api', category: 'api', valueKind: 'object', description: 'Configuracao de API do formulario.' },\n { path: 'api.saveEndpoint', category: 'api', valueKind: 'string' },\n { path: 'api.loadEndpoint', category: 'api', valueKind: 'string' },\n { path: 'api.saveMethod', category: 'api', valueKind: 'enum', allowedValues: ['POST', 'PUT', 'PATCH'] },\n { path: 'api.timeout', category: 'api', valueKind: 'number' },\n { path: 'api.headers', category: 'api', valueKind: 'object' },\n { path: 'api.idField', category: 'api', valueKind: 'string' },\n { path: 'api.beforeSave', category: 'api', valueKind: 'expression', description: 'Hook antes de salvar (nao serializavel).', safetyNotes: 'Deve ser fornecido pelo host.' },\n { path: 'api.afterLoad', category: 'api', valueKind: 'expression', description: 'Hook apos carregar (nao serializavel).', safetyNotes: 'Deve ser fornecido pelo host.' },\n\n // --- Messages ---\n { path: 'messages', category: 'messages', valueKind: 'object', description: 'Mensagens e i18n do formulario.' },\n { path: 'messages.updateRegistrySuccess', category: 'messages', valueKind: 'string', description: 'Mensagem de sucesso ao atualizar registro.' },\n { path: 'messages.createRegistrySuccess', category: 'messages', valueKind: 'string', description: 'Mensagem de sucesso ao criar registro.' },\n { path: 'messages.updateRegistryError', category: 'messages', valueKind: 'string', description: 'Mensagem de erro ao atualizar registro.' },\n { path: 'messages.createRegistryError', category: 'messages', valueKind: 'string', description: 'Mensagem de erro ao criar registro.' },\n { path: 'messages.confirmations', category: 'messages', valueKind: 'object', description: 'Mensagens de confirmacao.' },\n { path: 'messages.confirmations.submit', category: 'messages', valueKind: 'string', description: 'Confirmacao de submit.' },\n { path: 'messages.confirmations.cancel', category: 'messages', valueKind: 'string', description: 'Confirmacao de cancel.' },\n { path: 'messages.confirmations.reset', category: 'messages', valueKind: 'string', description: 'Confirmacao de reset.' },\n { path: 'messages.confirmations.[actionId]', category: 'messages', valueKind: 'string', description: 'Confirmacao para acao custom.' },\n { path: 'messages.customActions', category: 'messages', valueKind: 'object', description: 'Mensagens por acao custom.' },\n { path: 'messages.customActions.[actionId]', category: 'messages', valueKind: 'object', description: 'Mensagens da acao custom (success/error/confirmation).' },\n { path: 'messages.customActions.[actionId].success', category: 'messages', valueKind: 'string', description: 'Sucesso para acao custom.' },\n { path: 'messages.customActions.[actionId].error', category: 'messages', valueKind: 'string', description: 'Erro para acao custom.' },\n { path: 'messages.customActions.[actionId].confirmation', category: 'messages', valueKind: 'string', description: 'Confirmacao para acao custom.' },\n { path: 'messages.loading', category: 'messages', valueKind: 'object', description: 'Mensagens de loading.' },\n { path: 'messages.loading.submit', category: 'messages', valueKind: 'string', description: 'Mensagem de loading no submit.' },\n { path: 'messages.loading.cancel', category: 'messages', valueKind: 'string', description: 'Mensagem de loading no cancel.' },\n { path: 'messages.loading.reset', category: 'messages', valueKind: 'string', description: 'Mensagem de loading no reset.' },\n { path: 'messages.loading.[actionId]', category: 'messages', valueKind: 'string', description: 'Mensagem de loading para acao custom.' },\n\n // --- Rules & Hooks ---\n { path: 'formRules', category: 'rules', valueKind: 'array', description: 'Regras de layout/comportamento.' },\n { path: 'formRules[].id', category: 'rules', valueKind: 'string', description: 'ID da regra.' },\n { path: 'formRules[].name', category: 'rules', valueKind: 'string', description: 'Nome da regra.' },\n { path: 'formRules[].description', category: 'rules', valueKind: 'string', description: 'Descricao da regra.' },\n { path: 'formRules[].targetType', category: 'rules', valueKind: 'enum', allowedValues: ENUMS.formRuleTargetType, description: 'Tipo de alvo.' },\n { path: 'formRules[].targets', category: 'rules', valueKind: 'array', description: 'IDs dos alvos canonicos.' },\n { path: 'formRules[].targets[]', category: 'rules', valueKind: 'string', description: 'ID do alvo canonico.' },\n { path: 'formRules[].targetFields', category: 'rules', valueKind: 'array', description: 'Alias legado para campos alvo.' },\n { path: 'formRules[].targetFields[]', category: 'rules', valueKind: 'string', description: 'ID do campo alvo (alias legado).' },\n { path: 'formRules[].context', category: 'rules', valueKind: 'enum', allowedValues: ENUMS.formRuleContext, description: 'Contexto legado da regra.' },\n { path: 'formRules[].effect.condition', category: 'rules', valueKind: 'expression', description: 'Condicao da regra.' },\n { path: 'formRules[].effect.properties', category: 'rules', valueKind: 'object', description: 'Propriedades aplicadas quando true.' },\n ...generateRulePropertyCapabilities('field', RULE_PROPERTY_SCHEMA.field),\n ...generateRulePropertyCapabilities('section', RULE_PROPERTY_SCHEMA.section),\n ...generateRulePropertyCapabilities('action', RULE_PROPERTY_SCHEMA.action),\n ...generateRulePropertyCapabilities('row', RULE_PROPERTY_SCHEMA.row),\n ...generateRulePropertyCapabilities('column', RULE_PROPERTY_SCHEMA.column),\n { path: 'formRules[].effect.propertiesWhenFalse', category: 'rules', valueKind: 'object', description: 'Propriedades aplicadas quando false.' },\n ...generateRulePropertyWhenFalseCapabilities('field', RULE_PROPERTY_SCHEMA.field),\n ...generateRulePropertyWhenFalseCapabilities('section', RULE_PROPERTY_SCHEMA.section),\n ...generateRulePropertyWhenFalseCapabilities('action', RULE_PROPERTY_SCHEMA.action),\n ...generateRulePropertyWhenFalseCapabilities('row', RULE_PROPERTY_SCHEMA.row),\n ...generateRulePropertyWhenFalseCapabilities('column', RULE_PROPERTY_SCHEMA.column),\n { path: 'formRulesState', category: 'rules', valueKind: 'object', description: 'Estado bruto do visual builder.' },\n { path: 'hooks', category: 'hooks', valueKind: 'object', description: 'Declaracoes de hooks por estagio.' },\n { path: 'hooks.beforeInit', category: 'hooks', valueKind: 'array', description: 'Hooks beforeInit.' },\n { path: 'hooks.beforeInit[]', category: 'hooks', valueKind: 'array', description: 'Hooks beforeInit.' },\n { path: 'hooks.beforeInit[].id', category: 'hooks', valueKind: 'string', description: 'ID do hook.' },\n { path: 'hooks.beforeInit[].priority', category: 'hooks', valueKind: 'number', description: 'Prioridade do hook.' },\n { path: 'hooks.beforeInit[].timeoutMs', category: 'hooks', valueKind: 'number', description: 'Timeout do hook.' },\n { path: 'hooks.beforeInit[].args', category: 'hooks', valueKind: 'object', description: 'Args do hook.' },\n { path: 'hooks.afterInit', category: 'hooks', valueKind: 'array', description: 'Hooks afterInit.' },\n { path: 'hooks.afterInit[]', category: 'hooks', valueKind: 'array', description: 'Hooks afterInit.' },\n { path: 'hooks.afterInit[].id', category: 'hooks', valueKind: 'string' },\n { path: 'hooks.afterInit[].priority', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.afterInit[].timeoutMs', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.afterInit[].args', category: 'hooks', valueKind: 'object' },\n { path: 'hooks.beforeValidate', category: 'hooks', valueKind: 'array', description: 'Hooks beforeValidate.' },\n { path: 'hooks.beforeValidate[]', category: 'hooks', valueKind: 'array', description: 'Hooks beforeValidate.' },\n { path: 'hooks.beforeValidate[].id', category: 'hooks', valueKind: 'string' },\n { path: 'hooks.beforeValidate[].priority', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.beforeValidate[].timeoutMs', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.beforeValidate[].args', category: 'hooks', valueKind: 'object' },\n { path: 'hooks.afterValidate', category: 'hooks', valueKind: 'array', description: 'Hooks afterValidate.' },\n { path: 'hooks.afterValidate[]', category: 'hooks', valueKind: 'array', description: 'Hooks afterValidate.' },\n { path: 'hooks.afterValidate[].id', category: 'hooks', valueKind: 'string' },\n { path: 'hooks.afterValidate[].priority', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.afterValidate[].timeoutMs', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.afterValidate[].args', category: 'hooks', valueKind: 'object' },\n { path: 'hooks.beforeSubmit', category: 'hooks', valueKind: 'array', description: 'Hooks beforeSubmit.' },\n { path: 'hooks.beforeSubmit[]', category: 'hooks', valueKind: 'array', description: 'Hooks beforeSubmit.' },\n { path: 'hooks.beforeSubmit[].id', category: 'hooks', valueKind: 'string' },\n { path: 'hooks.beforeSubmit[].priority', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.beforeSubmit[].timeoutMs', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.beforeSubmit[].args', category: 'hooks', valueKind: 'object' },\n { path: 'hooks.afterSubmit', category: 'hooks', valueKind: 'array', description: 'Hooks afterSubmit.' },\n { path: 'hooks.afterSubmit[]', category: 'hooks', valueKind: 'array', description: 'Hooks afterSubmit.' },\n { path: 'hooks.afterSubmit[].id', category: 'hooks', valueKind: 'string' },\n { path: 'hooks.afterSubmit[].priority', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.afterSubmit[].timeoutMs', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.afterSubmit[].args', category: 'hooks', valueKind: 'object' },\n { path: 'hooks.onError', category: 'hooks', valueKind: 'array', description: 'Hooks onError.' },\n { path: 'hooks.onError[]', category: 'hooks', valueKind: 'array', description: 'Hooks onError.' },\n { path: 'hooks.onError[].id', category: 'hooks', valueKind: 'string' },\n { path: 'hooks.onError[].priority', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.onError[].timeoutMs', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.onError[].args', category: 'hooks', valueKind: 'object' },\n\n // --- Hints ---\n { path: 'hints.dataModes.create', category: 'hints', valueKind: 'string' },\n { path: 'hints.dataModes.edit', category: 'hints', valueKind: 'string' },\n { path: 'hints.dataModes.view', category: 'hints', valueKind: 'string' },\n { path: 'hints.uiModes.presentation', category: 'hints', valueKind: 'string' },\n { path: 'hints.uiModes.readonly', category: 'hints', valueKind: 'string' },\n { path: 'hints.uiModes.disabled', category: 'hints', valueKind: 'string' },\n { path: 'hints.uiModes.visible', category: 'hints', valueKind: 'string' },\n ],\n};\n","import { BaseAiAdapter, Capability, PatchResult } from '@praxisui/ai';\nimport { FormConfig, deepMerge } from '@praxisui/core';\nimport { ManualFormComponent } from '../components/manual-form/manual-form.component';\nimport { MANUAL_FORM_AI_CAPABILITIES } from './manual-form-ai-capabilities';\n\nexport class ManualFormAiAdapter extends BaseAiAdapter<FormConfig> {\n componentName = 'Manual Form';\n\n constructor(private host: ManualFormComponent) {\n super();\n }\n\n getCurrentConfig(): FormConfig {\n const current = this.host.instance?.currentConfig ?? { sections: [] };\n return this.cloneConfig(current);\n }\n\n getCapabilities(): Capability[] {\n return MANUAL_FORM_AI_CAPABILITIES.capabilities as unknown as Capability[];\n }\n\n override getRuntimeState(): Record<string, any> {\n const form = this.host.instance?.form;\n const fields = this.host.instance?.currentConfig?.fieldMetadata || [];\n return {\n hasInstance: !!this.host.instance,\n formId: this.safeFormId(),\n fieldsCount: fields.length,\n valid: form?.valid ?? false,\n dirty: form?.dirty ?? false,\n };\n }\n\n createSnapshot(): FormConfig {\n return this.getCurrentConfig();\n }\n\n async restoreSnapshot(snapshot: FormConfig): Promise<void> {\n if (!snapshot) return;\n this.applyConfig(this.cloneConfig(snapshot));\n }\n\n async applyPatch(\n patch: Partial<FormConfig>,\n _intent?: string,\n ): Promise<PatchResult> {\n if (!this.host.instance) {\n return { success: false, error: 'Manual form instance not ready.' };\n }\n try {\n const current = this.getCurrentConfig();\n const next = this.smartMergeFormConfig(current, patch);\n this.applyConfig(next);\n return { success: true };\n } catch (error) {\n const message =\n error instanceof Error ? error.message : 'Unknown error applying patch';\n return { success: false, error: message };\n }\n }\n\n private applyConfig(config: FormConfig): void {\n const apply = (this.host as any).applyConfigFromAdapter;\n if (typeof apply === 'function') {\n apply.call(this.host, config);\n return;\n }\n if (this.host.instance) {\n this.host.instance.replaceConfig(config);\n this.host.metadataChange.emit(this.host.instance.currentConfig);\n }\n }\n\n private smartMergeFormConfig(\n base: FormConfig,\n patch: Partial<FormConfig>,\n ): FormConfig {\n const result = deepMerge(base, patch);\n\n if (patch.fieldMetadata && Array.isArray(patch.fieldMetadata)) {\n const originalFields = base.fieldMetadata || [];\n const patchFields = patch.fieldMetadata.filter(\n (field) =>\n field &&\n typeof field.name === 'string' &&\n field.name.trim().length > 0,\n );\n\n const mergedFields = originalFields.map((orig) => {\n const match = patchFields.find((candidate) => candidate.name === orig.name);\n return match ? deepMerge(orig as any, match as any) : orig;\n });\n\n patchFields.forEach((incoming) => {\n if (!originalFields.find((orig) => orig.name === incoming.name)) {\n mergedFields.push(incoming as any);\n }\n });\n\n result.fieldMetadata = mergedFields;\n }\n\n return result;\n }\n\n private cloneConfig(config: FormConfig): FormConfig {\n try {\n return structuredClone(config);\n } catch {\n return JSON.parse(JSON.stringify(config));\n }\n }\n\n private safeFormId(): string | undefined {\n try {\n const idSignal = (this.host as any).formId;\n return typeof idSignal === 'function' ? idSignal() : undefined;\n } catch {\n return undefined;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { FieldControlType } from '@praxisui/core';\n\nexport const MANUAL_FORM_SELECTOR_TO_CONTROL_TYPE = new InjectionToken<Record<string, FieldControlType>>(\n 'MANUAL_FORM_SELECTOR_TO_CONTROL_TYPE',\n);\n\nexport const MANUAL_FORM_CONSTRUCTOR_TO_CONTROL_TYPE = new InjectionToken<Record<string, FieldControlType>>(\n 'MANUAL_FORM_CONSTRUCTOR_TO_CONTROL_TYPE',\n);\n\n","import { Injectable, isDevMode, inject } from '@angular/core';\n\nimport {\n FieldControlType,\n FieldMetadata,\n normalizeControlTypeKey,\n resolveControlTypeAlias,\n} from '@praxisui/core';\nimport { SettingsPanelService } from '@praxisui/settings-panel';\n\nimport { ManualFormInstance } from '../stores/manual-form-instance';\n\ninterface PatchSignature {\n sig: string;\n at: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ManualFieldMetadataBridgeService {\n private readonly patchSignatures = new WeakMap<ManualFormInstance, Map<string, PatchSignature>>();\n private readonly settingsPanel = inject(SettingsPanelService);\n\n buildEditorSeed(instance: ManualFormInstance, fieldName: string): FieldMetadata | undefined {\n return instance.getFieldMetadata(fieldName);\n }\n\n applyPatch(\n instance: ManualFormInstance,\n fieldName: string,\n patch: Partial<FieldMetadata>,\n ): void {\n instance.patchFieldMetadata(fieldName, patch);\n }\n\n async openEditor(instance: ManualFormInstance, fieldName: string): Promise<void> {\n if (!instance || !fieldName) {\n return;\n }\n\n const seed = this.buildEditorSeed(instance, fieldName);\n if (!seed) {\n if (isDevMode()) {\n try { console.warn('[ManualFieldMetadataBridge] metadata not found for field', fieldName); } catch {}\n }\n return;\n }\n\n let FieldMetadataEditorComponent: any;\n try {\n const module = await import('@praxisui/metadata-editor');\n FieldMetadataEditorComponent = (module as any)?.FieldMetadataEditorComponent;\n if (!FieldMetadataEditorComponent) {\n throw new Error('FieldMetadataEditorComponent export missing');\n }\n } catch (err) {\n if (isDevMode()) {\n try { console.error('[ManualFieldMetadataBridge] failed to load @praxisui/metadata-editor', err); } catch {}\n }\n return;\n }\n\n const controlType = resolveControlTypeAlias(\n (seed as FieldMetadata | undefined)?.controlType,\n FieldControlType.INPUT,\n ) as FieldMetadata['controlType'];\n const title = this.buildPanelTitle(fieldName, seed);\n const panelId = this.buildPanelId(instance, fieldName);\n\n let ref;\n try {\n ref = this.settingsPanel.open({\n id: panelId,\n title,\n titleIcon: this.resolveIcon(controlType),\n content: {\n component: FieldMetadataEditorComponent,\n inputs: {\n controlType,\n seed,\n hostBridge: {\n applyPatch: (patch: Partial<FieldMetadata>) => this.handlePatch(instance, fieldName, patch),\n },\n },\n },\n });\n } catch (err) {\n if (isDevMode()) {\n try { console.error('[ManualFieldMetadataBridge] failed to open settings panel', err); } catch {}\n }\n return;\n }\n\n ref.applied$.subscribe((patch: Partial<FieldMetadata>) => this.handlePatch(instance, fieldName, patch));\n ref.saved$.subscribe((patch: Partial<FieldMetadata>) => this.handlePatch(instance, fieldName, patch));\n }\n\n private handlePatch(\n instance: ManualFormInstance,\n fieldName: string,\n patch: Partial<FieldMetadata> | null | undefined,\n ): void {\n if (!patch || typeof patch !== 'object') {\n return;\n }\n\n if (!this.shouldApplyPatch(instance, fieldName, patch)) {\n return;\n }\n\n this.applyPatch(instance, fieldName, patch);\n\n try {\n instance.saveDraft();\n } catch (err) {\n if (isDevMode()) {\n try { console.error('[ManualFieldMetadataBridge] failed to persist draft after patch', err); } catch {}\n }\n }\n }\n\n private shouldApplyPatch(\n instance: ManualFormInstance,\n fieldName: string,\n patch: Partial<FieldMetadata>,\n ): boolean {\n let fieldsMap = this.patchSignatures.get(instance);\n if (!fieldsMap) {\n fieldsMap = new Map<string, PatchSignature>();\n this.patchSignatures.set(instance, fieldsMap);\n }\n\n const now = Date.now();\n let signature = '';\n try {\n signature = JSON.stringify(patch);\n } catch {\n signature = `${now}`;\n }\n\n const existing = fieldsMap.get(fieldName);\n if (existing && existing.sig === signature && now - existing.at < 1200) {\n if (isDevMode()) {\n try { console.debug('[ManualFieldMetadataBridge] duplicate patch ignored', { fieldName }); } catch {}\n }\n return false;\n }\n\n fieldsMap.set(fieldName, { sig: signature, at: now });\n return true;\n }\n\n private buildPanelTitle(fieldName: string, seed: FieldMetadata): string {\n const label = seed?.label || seed?.placeholder || fieldName;\n const type = this.formatControlType(seed?.controlType);\n return type ? `${type} — ${label}` : label;\n }\n\n private buildPanelId(instance: ManualFormInstance, fieldName: string): string {\n const formId = this.extractFormId(instance);\n return formId ? `manual-field.${formId}.${fieldName}` : `manual-field.${fieldName}`;\n }\n\n private extractFormId(instance: ManualFormInstance): string | undefined {\n try {\n return (instance as unknown as { formId?: string })?.formId || (instance as any)?.seed?.formId;\n } catch {\n return undefined;\n }\n }\n\n private formatControlType(controlType: FieldMetadata['controlType'] | undefined): string {\n if (!controlType) {\n return '';\n }\n return normalizeControlTypeKey(controlType)\n .toLowerCase()\n .split('_')\n .map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1).toLowerCase())\n .join(' ');\n }\n\n private resolveIcon(controlType: FieldMetadata['controlType'] | undefined): string | undefined {\n if (!controlType) {\n return 'tune';\n }\n const map: Record<string, string> = {\n INPUT: 'text_fields',\n TEXTAREA: 'notes',\n NUMERIC_TEXT_BOX: 'pin',\n CURRENCY_INPUT: 'attach_money',\n EMAIL_INPUT: 'mail',\n PASSWORD: 'vpn_key',\n SELECT: 'list',\n MULTI_SELECT: 'checklist',\n AUTO_COMPLETE: 'search',\n RADIO: 'radio_button_checked',\n CHECKBOX: 'check_box',\n TOGGLE: 'toggle_on',\n SLIDER: 'tune',\n DATE_INPUT: 'event',\n DATE_RANGE: 'event_repeat',\n TIME_INPUT: 'schedule',\n TIME_PICKER: 'schedule',\n RATING: 'grade',\n TREE_SELECT: 'account_tree',\n FILE_UPLOAD: 'upload_file',\n TRANSFER_LIST: 'compare_arrows',\n CHIP_INPUT: 'sell',\n CPF_CNPJ_INPUT: 'fingerprint',\n };\n const key = normalizeControlTypeKey(controlType);\n return map[key] || 'tune';\n }\n\n bindComponent(\n instance: ManualFormInstance,\n fieldName: string,\n componentInstance: unknown,\n ): void {\n instance.bindComponent(fieldName, componentInstance);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ManualFormInstance } from '../stores/manual-form-instance';\n\nexport type ManualFieldKeyResolution =\n | { status: 'ok'; key: string }\n | { status: 'missing' }\n | { status: 'ambiguous'; candidates: string[] };\n\n@Injectable({ providedIn: 'root' })\nexport class ManualFieldKeyService {\n resolveFieldName(\n input: string | string[],\n instance: ManualFormInstance | null | undefined,\n ): ManualFieldKeyResolution {\n if (!instance) {\n return { status: 'missing' };\n }\n\n const fieldNames = (instance.currentConfig.fieldMetadata || [])\n .map((meta) => meta.name)\n .filter((name): name is string => !!name);\n\n const raw = Array.isArray(input) ? input.join('.') : input;\n const normalized = String(raw || '').trim();\n if (!normalized) {\n return { status: 'missing' };\n }\n\n if (fieldNames.includes(normalized)) {\n return { status: 'ok', key: normalized };\n }\n\n const lastSegment = Array.isArray(input)\n ? input[input.length - 1]\n : normalized.split('.').pop();\n if (!lastSegment) {\n return { status: 'missing' };\n }\n\n const matches = fieldNames.filter(\n (name) => name === lastSegment || name.endsWith(`.${lastSegment}`),\n );\n\n if (matches.length === 1) {\n return { status: 'ok', key: matches[0] };\n }\n if (matches.length > 1) {\n return { status: 'ambiguous', candidates: matches };\n }\n return { status: 'missing' };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, HostListener, Input, Output, ViewChild, ElementRef } from '@angular/core';\nimport { FieldMetadata } from '@praxisui/core';\n\n@Component({\n selector: 'praxis-manual-field-toolbar',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div\n class=\"pdx-manual-field-toolbar\"\n role=\"toolbar\"\n aria-label=\"Acoes do campo\"\n >\n <button\n #firstAction\n type=\"button\"\n class=\"toolbar-btn\"\n [attr.aria-pressed]=\"isRequired ? 'true' : 'false'\"\n aria-label=\"Alternar obrigatorio\"\n title=\"Alternar obrigatorio\"\n (click)=\"toggleRequired.emit()\"\n >\n <span class=\"material-symbols-outlined toolbar-icon\" [class.toolbar-icon--filled]=\"isRequired\">\n star\n </span>\n </button>\n <button\n type=\"button\"\n class=\"toolbar-btn\"\n [attr.aria-pressed]=\"isReadOnly ? 'true' : 'false'\"\n aria-label=\"Alternar somente leitura\"\n title=\"Alternar somente leitura\"\n (click)=\"toggleReadonly.emit()\"\n >\n <span class=\"material-symbols-outlined\">\n {{ isReadOnly ? 'lock' : 'lock_open' }}\n </span>\n </button>\n <button\n type=\"button\"\n class=\"toolbar-btn\"\n [attr.aria-pressed]=\"metadata?.hidden ? 'true' : 'false'\"\n aria-label=\"Alternar visibilidade\"\n title=\"Alternar visibilidade\"\n (click)=\"toggleHidden.emit()\"\n >\n <span class=\"material-symbols-outlined\">\n {{ metadata?.hidden ? 'visibility_off' : 'visibility' }}\n </span>\n </button>\n <button\n type=\"button\"\n class=\"toolbar-btn\"\n [attr.aria-pressed]=\"metadata?.disabled ? 'true' : 'false'\"\n aria-label=\"Alternar desabilitado\"\n title=\"Alternar desabilitado\"\n (click)=\"toggleDisabled.emit()\"\n >\n <span class=\"material-symbols-outlined\">\n {{ metadata?.disabled ? 'toggle_on' : 'toggle_off' }}\n </span>\n </button>\n <button\n type=\"button\"\n class=\"toolbar-btn toolbar-btn--accent\"\n aria-label=\"Configurar campo\"\n title=\"Configurar campo\"\n (click)=\"openEditor.emit()\"\n >\n <span class=\"material-symbols-outlined\">tune</span>\n </button>\n <button\n type=\"button\"\n class=\"toolbar-btn toolbar-btn--ghost\"\n aria-label=\"Fechar\"\n title=\"Fechar\"\n (click)=\"requestClose.emit()\"\n >\n <span class=\"material-symbols-outlined\">close</span>\n </button>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n pointer-events: auto;\n font-family: inherit;\n }\n\n .pdx-manual-field-toolbar {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px;\n border-radius: 12px;\n background: var(--md-sys-color-surface-container-low);\n border: 1px solid var(--md-sys-color-outline-variant);\n box-shadow: var(--md-sys-elevation-level3);\n backdrop-filter: blur(6px);\n -webkit-backdrop-filter: blur(6px);\n }\n\n .toolbar-btn {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--md-sys-color-on-surface);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 10px;\n cursor: pointer;\n transition: background-color 120ms ease, transform 120ms ease;\n }\n\n .toolbar-btn:hover {\n background: var(--md-sys-color-primary-container);\n }\n\n .toolbar-btn:active {\n transform: scale(0.97);\n }\n\n .toolbar-btn:focus-visible {\n outline: 2px solid var(--md-sys-color-primary);\n outline-offset: 2px;\n }\n\n .toolbar-btn--accent {\n background: var(--md-sys-color-primary-container);\n }\n\n .toolbar-btn--ghost {\n opacity: 0.7;\n }\n\n .material-symbols-outlined {\n font-size: 18px;\n line-height: 18px;\n }\n\n .toolbar-icon {\n font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 20;\n }\n\n .toolbar-icon--filled {\n font-variation-settings: 'FILL' 1, 'wght' 600, 'GRAD' 0, 'opsz' 20;\n }\n `,\n ],\n})\nexport class ManualFieldToolbarComponent {\n @Input() metadata: FieldMetadata | null = null;\n\n @Output() toggleRequired = new EventEmitter<void>();\n @Output() toggleReadonly = new EventEmitter<void>();\n @Output() toggleHidden = new EventEmitter<void>();\n @Output() toggleDisabled = new EventEmitter<void>();\n @Output() openEditor = new EventEmitter<void>();\n @Output() requestClose = new EventEmitter<void>();\n\n @ViewChild('firstAction', { static: true }) private readonly firstAction?: ElementRef<HTMLButtonElement>;\n\n focusFirstAction(): void {\n this.firstAction?.nativeElement?.focus();\n }\n\n get isRequired(): boolean {\n const meta = this.metadata;\n return !!meta?.required || !!meta?.validators?.required;\n }\n\n get isReadOnly(): boolean {\n return !!this.metadata?.readOnly;\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape' || event.key === 'Esc') {\n event.stopPropagation();\n event.preventDefault();\n this.requestClose.emit();\n }\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ContentChildren,\n DestroyRef,\n effect,\n inject,\n PLATFORM_ID,\n OnDestroy,\n QueryList,\n isDevMode,\n input,\n output,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { PraxisAiAssistantComponent } from '@praxisui/ai';\nimport {\n FormActionButton,\n FormActionsLayout,\n FieldControlType,\n FieldMetadata,\n FormConfig,\n FormHookStage,\n FormHooksRegistry,\n ComponentKeyService,\n FieldSelectorRegistry,\n DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP,\n FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS,\n} from '@praxisui/core';\nimport {\n FormControl,\n FormControlName,\n FormGroupName,\n FormGroup,\n FormGroupDirective,\n ReactiveFormsModule,\n ValidatorFn,\n Validators,\n AbstractControl,\n ControlContainer,\n} from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { debounceTime, fromEvent, Subscription } from 'rxjs';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\n\nimport {\n ManualFormInstance,\n ManualFormInstanceFactory,\n} from '../../stores/manual-form-instance';\nimport { ManualFormHeaderComponent } from '../manual-form-header/manual-form-header.component';\nimport { ManualFormActionsComponent } from '../manual-form-actions/manual-form-actions.component';\nimport { ManualFormAiAdapter } from '../../ai/manual-form-ai.adapter';\nimport {\n ManualFormId,\n ManualFormPersistenceOptions,\n} from '../../models/manual-form.types';\nimport { createManualFormSeed } from '../../seeds/manual-form.seed';\nimport { deepClone } from '../../utils/clone.util';\nimport {\n MANUAL_FORM_CONSTRUCTOR_TO_CONTROL_TYPE,\n MANUAL_FORM_SELECTOR_TO_CONTROL_TYPE,\n} from '../../tokens/manual-form.tokens';\nimport { ManualFieldMetadataBridgeService } from '../../services/manual-field-metadata-bridge.service';\nimport { SettingsPanelService } from '@praxisui/settings-panel';\nimport { ManualFieldKeyService } from '../../services/manual-field-key.service';\nimport { ManualFieldToolbarComponent } from '../manual-field-toolbar/manual-field-toolbar.component';\n\ninterface DetectedField {\n name: string;\n control: AbstractControl | null;\n component: any;\n selector?: string;\n element?: HTMLElement;\n}\n\n@Component({\n selector: 'praxis-manual-form',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n PraxisAiAssistantComponent,\n ManualFormHeaderComponent,\n ManualFormActionsComponent,\n ],\n providers: [\n // Provide a ControlContainer at the host boundary so projected formControlName can resolve it\n { provide: ControlContainer, useExisting: ManualFormComponent as any },\n ],\n templateUrl: './manual-form.component.html',\n styles: [\n `\n .pdx-manual-form {\n display: flex;\n flex-direction: column;\n gap: var(--pdx-manual-form-gap, 24px);\n color: var(--md-sys-color-on-surface);\n }\n\n .pdx-manual-form__form {\n display: grid;\n gap: var(--pdx-manual-form-field-gap, 16px);\n padding: var(--pdx-manual-form-padding, 20px);\n border-radius: var(--pdx-manual-form-radius, 16px);\n background: var(--pdx-manual-form-surface, var(--md-sys-color-surface-container));\n border: 1px solid var(--pdx-manual-form-outline, var(--md-sys-color-outline-variant));\n box-shadow: var(--pdx-manual-form-shadow, var(--md-sys-elevation-level1, none));\n }\n .pdx-manual-form__form:focus-within {\n border-color: var(--pdx-manual-form-focus, var(--md-sys-color-primary));\n box-shadow:\n 0 0 0 2px var(--md-sys-color-primary),\n var(--pdx-manual-form-shadow, var(--md-sys-elevation-level1, none));\n }\n\n .pdx-manual-form__assistant {\n display: flex;\n justify-content: flex-end;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ManualFormComponent implements AfterContentInit, OnDestroy {\n private readonly instanceFactory = inject(ManualFormInstanceFactory);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly metadataBridge = inject(ManualFieldMetadataBridgeService);\n private readonly settingsPanel = inject(SettingsPanelService);\n private readonly hooksRegistry = inject(FormHooksRegistry, { optional: true });\n private readonly componentKeys = inject(ComponentKeyService);\n private readonly overlay = inject(Overlay);\n private readonly fieldKeyService = inject(ManualFieldKeyService);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly route = (() => { try { return inject(ActivatedRoute); } catch { return undefined as ActivatedRoute | undefined; } })();\n private warnedMissingId = false;\n private readonly disableSelectorDefaults =\n inject(FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS, { optional: true }) ?? false;\n private readonly selectorToControlType =\n inject(MANUAL_FORM_SELECTOR_TO_CONTROL_TYPE, { optional: true }) ??\n (this.disableSelectorDefaults ? {} : DEFAULT_SELECTOR_TO_CONTROL_TYPE);\n private readonly constructorToControlType =\n inject(MANUAL_FORM_CONSTRUCTOR_TO_CONTROL_TYPE, { optional: true }) ?? DEFAULT_CONSTRUCTOR_TO_CONTROL_TYPE;\n private readonly selectorRegistry = inject(FieldSelectorRegistry, { optional: true });\n private toolbarOverlayRef?: OverlayRef;\n private toolbarComponentRef?: ComponentRef<ManualFieldToolbarComponent>;\n private toolbarFieldKey?: string;\n private toolbarAnchor?: HTMLElement;\n private toolbarSubscriptions: Subscription[] = [];\n private toolbarActionSubscriptions: Subscription[] = [];\n private metadataSubscription?: Subscription;\n private outsideClickSubscription?: Subscription;\n\n readonly formId = input.required<ManualFormId>();\n readonly formTitle = input<string | undefined>();\n readonly formDescription = input<string | undefined>();\n readonly actions = input<FormActionsLayout | null | undefined>();\n readonly showHeader = input(true);\n readonly showActions = input(true);\n readonly enableAutoSave = input(true);\n readonly componentInstanceId = input<string | undefined>();\n // Allows editor affordances (e.g., opening metadata editor on interactions)\n readonly editModeEnabled = input(false);\n readonly persistenceOptions = input<ManualFormPersistenceOptions | undefined>();\n // When true, uses FormControlName.path (joined by '.') as FieldMetadata.name.\n // Requires nested path support (already present in DynamicFormService).\n readonly usePathNames = input(false);\n // Debounce interval for autosave (ms). Only used when enableAutoSave is true.\n readonly autoSaveDebounceMs = input(800);\n\n readonly submitted = output<{ value: any; instance: ManualFormInstance }>();\n readonly saved = output<ManualFormInstance>();\n readonly resetEvent = output<ManualFormInstance>({ alias: 'reset' });\n readonly metadataChange = output<FormConfig>();\n\n @ContentChildren(FormControlName, { descendants: true })\n private formControls!: QueryList<FormControlName>;\n\n // FormGroupDirective is applied on the component host via hostDirectives\n private readonly hostFormGroupDirective = inject(FormGroupDirective, { self: true, optional: true });\n\n instance?: ManualFormInstance;\n resolvedActions?: FormActionsLayout;\n public aiAdapter = new ManualFormAiAdapter(this);\n\n formGroup: FormGroup = new FormGroup({});\n private readonly registeredDirectives: FormControlName[] = [];\n\n constructor() {\n // Host-typed mode: if a FormGroupDirective is present, adopt its FormGroup without monkey patches.\n if (this.hostFormGroupDirective) {\n if (isDevMode()) console.debug('[ManualForm] Host FormGroupDirective attached early');\n if (this.hostFormGroupDirective.form) {\n this.formGroup = this.hostFormGroupDirective.form as FormGroup;\n if (isDevMode()) console.debug('[ManualForm] Using host-provided FormGroup instance');\n } else {\n // Keep placeholder until Angular binds [formGroup]; our addControl creates missing controls if needed.\n if (isDevMode()) console.debug('[ManualForm] No host FormGroup yet; awaiting binding without interception');\n }\n } else {\n if (isDevMode()) console.debug('[ManualForm] No host FormGroupDirective detected at construction (dynamic mode)');\n }\n\n effect(() => {\n const enabled = this.editModeEnabled();\n if (!enabled) {\n this.closeToolbar();\n return;\n }\n if (this.instance && this.formControls) {\n const fields = this.collectFields();\n if (fields.length) {\n this.registerToolbarBindings(fields);\n }\n }\n });\n }\n\n ngAfterContentInit(): void {\n this.syncHostFormGroupReference();\n\n if (this.formControls) {\n this.formControls.changes\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => { void this.initialize(true); });\n }\n\n queueMicrotask(() => { void this.initialize(false); });\n }\n\n ngOnDestroy(): void {\n this.toolbarSubscriptions.forEach((sub) => sub.unsubscribe());\n this.toolbarActionSubscriptions.forEach((sub) => sub.unsubscribe());\n this.metadataSubscription?.unsubscribe();\n this.toolbarOverlayRef?.dispose();\n this.outsideClickSubscription?.unsubscribe();\n }\n\n // =============================\n // ControlContainer interface\n // =============================\n // Make this component act as the ControlContainer for projected children.\n // FormControlName will call `parent.formDirective.addControl(this)` on us.\n get formDirective(): any {\n return this;\n }\n get control(): FormGroup {\n return this.formGroup;\n }\n get path(): any[] {\n return [];\n }\n addControl(dir: FormControlName): any {\n this.syncHostFormGroupReference();\n\n const name = typeof dir.name === 'string' ? dir.name : String(dir.name);\n const pathSegs = Array.isArray((dir as any).path) && (dir as any).path.length\n ? ((dir as any).path as string[])\n : (name ? [name] : []);\n const pathStr = this.usePathNames() ? pathSegs.join('.') : name;\n\n // Ensure control exists locally when host is not ready\n if (pathStr && !this.getControlByPath(pathSegs)) {\n this.ensureControlPath(pathSegs);\n if (isDevMode()) console.debug('[ManualForm] addControl created missing control', pathStr);\n }\n\n // Delegate wiring to host FormGroupDirective when available (ensures CVA pipelines are set)\n if (this.hostFormGroupDirective && this.hostFormGroupDirective.form) {\n if (isDevMode()) console.debug('[ManualForm] Delegating addControl to host FormGroupDirective for', pathStr);\n const ctrl = this.hostFormGroupDirective.addControl(dir);\n this.registeredDirectives.push(dir);\n return ctrl;\n }\n // Fallback minimal wiring if no host directive\n const ctrl = this.formGroup.get((dir as any).path);\n try {\n const va: any = (dir as any).valueAccessor;\n va?.writeValue?.(ctrl?.value);\n va?.setDisabledState?.(ctrl?.disabled ?? false);\n va?.registerOnChange?.((value: any) => {\n ctrl?.setValue(value);\n });\n va?.registerOnTouched?.(() => {\n ctrl?.markAsTouched();\n });\n } catch {}\n (dir as any).control = ctrl;\n return ctrl;\n }\n addFormGroup(dir: FormGroupName): void {\n this.syncHostFormGroupReference();\n\n if (this.hostFormGroupDirective && typeof (this.hostFormGroupDirective as any).addFormGroup === 'function') {\n (this.hostFormGroupDirective as any).addFormGroup(dir);\n return;\n }\n const path = this.getDirPath(dir as any);\n this.ensureGroupPath(path);\n }\n removeFormGroup(dir: FormGroupName): void {\n this.syncHostFormGroupReference();\n\n if (this.hostFormGroupDirective && typeof (this.hostFormGroupDirective as any).removeFormGroup === 'function') {\n (this.hostFormGroupDirective as any).removeFormGroup(dir);\n }\n }\n getFormGroup(dir: FormGroupName): FormGroup {\n this.syncHostFormGroupReference();\n\n if (this.hostFormGroupDirective && typeof (this.hostFormGroupDirective as any).getFormGroup === 'function') {\n return (this.hostFormGroupDirective as any).getFormGroup(dir);\n }\n const path = this.getDirPath(dir as any);\n const control = this.formGroup.get(path);\n return control instanceof FormGroup ? control : this.ensureGroupPath(path);\n }\n removeControl(dir: FormControlName): void {\n this.syncHostFormGroupReference();\n\n this.hostFormGroupDirective?.removeControl(dir);\n const idx = this.registeredDirectives.indexOf(dir);\n if (idx >= 0) this.registeredDirectives.splice(idx, 1);\n }\n getControl(dir: FormControlName): AbstractControl | null {\n this.syncHostFormGroupReference();\n return this.formGroup.get(dir.path);\n }\n updateModel(dir: FormControlName, value: any): void {\n if (this.hostFormGroupDirective) {\n this.hostFormGroupDirective.updateModel(dir as any, value);\n } else {\n const ctrl = this.formGroup.get(dir.path);\n ctrl?.setValue(value);\n }\n }\n\n handleAction(actionId: string): void {\n if (actionId === 'submit') {\n this.handleSubmit();\n } else if (actionId === 'save') {\n this.handleSave();\n } else if (actionId === 'reset') {\n this.handleReset();\n } else if (this.instance) {\n this.metadataChange.emit(this.instance.currentConfig);\n }\n }\n\n async handleSubmit(): Promise<void> {\n if (!this.instance) {\n return;\n }\n const value = this.formGroup.getRawValue();\n const beforeSubmitOk = await this.runHooks('beforeSubmit', { value });\n if (!beforeSubmitOk) {\n return;\n }\n if (this.enableAutoSave()) {\n this.instance.saveDraft(value);\n }\n this.submitted.emit({ value, instance: this.instance });\n await this.runHooks('afterSubmit', { value });\n }\n\n handleSave(): void {\n if (!this.instance) {\n return;\n }\n if (this.enableAutoSave()) {\n this.instance.saveDraft();\n }\n this.saved.emit(this.instance);\n this.metadataChange.emit(this.instance.currentConfig);\n }\n\n /** True when host applied [formGroup] directly on <praxis-manual-form>. */\n isHostTyped(): boolean {\n return !!this.hostFormGroupDirective?.form;\n }\n\n handleReset(): void {\n if (!this.instance) {\n return;\n }\n this.instance.resetToSeed();\n this.hostFormGroupDirective?.resetForm(this.instance.form.getRawValue());\n this.resetEvent.emit(this.instance);\n }\n\n private async runHooks(\n stage: FormHookStage,\n extras?: any,\n configOverride?: FormConfig,\n ): Promise<boolean> {\n const registry = this.hooksRegistry;\n const config = configOverride ?? this.instance?.currentConfig;\n if (!registry || !config?.hooks) {\n return true;\n }\n const declarations = config.hooks[stage];\n if (!declarations || declarations.length === 0) {\n return true;\n }\n\n try {\n const result = await registry.run(stage, { formGroup: this.formGroup, formConfig: config, extras }, declarations);\n if (result.stopped && stage !== 'onError' && config.hooks.onError?.length) {\n await registry.run(\n 'onError',\n { formGroup: this.formGroup, formConfig: config, extras: { ...extras, stopped: result.stopped } },\n config.hooks.onError,\n );\n }\n return !result.stopped;\n } catch {\n if (stage !== 'onError' && config.hooks.onError?.length) {\n try {\n await registry.run(\n 'onError',\n { formGroup: this.formGroup, formConfig: config, extras: { ...extras, error: 'hook-exception' } },\n config.hooks.onError,\n );\n } catch {}\n }\n return false;\n }\n }\n\n /**\n * Attempts to open the field metadata editor respecting the component's\n * editModeEnabled input. No-ops when disabled or without an instance.\n */\n tryOpenFieldEditor(fieldName: string): void {\n if (!this.editModeEnabled()) {\n return;\n }\n const instance = this.instance;\n if (!instance || !fieldName) {\n return;\n }\n try {\n void this.metadataBridge.openEditor(instance, fieldName);\n } catch {}\n }\n\n /** Opens a simple form-level editor listing the fields and their visibility. */\n async openFormEditor(): Promise<void> {\n if (!this.editModeEnabled() || !this.instance) return;\n\n let ManualFormConfigEditorComponent: any;\n try {\n const module = await import('../manual-form-config-editor/manual-form-config-editor.component');\n ManualFormConfigEditorComponent = (module as any)?.ManualFormConfigEditorComponent;\n } catch {\n return;\n }\n const formId = this.formId();\n const keyId = this.componentKeyId();\n this.settingsPanel.open({\n id: keyId ? `manual-form-editor.${keyId}` : (formId ? `manual-form-editor.${formId}` : 'manual-form-editor'),\n title: this.formTitle() || 'Editor do Formulário',\n titleIcon: 'tune',\n content: {\n component: ManualFormConfigEditorComponent,\n inputs: { instance: this.instance },\n },\n });\n }\n\n applyConfigFromAdapter(config: FormConfig): void {\n if (!this.instance) {\n return;\n }\n this.instance.replaceConfig(config);\n this.resolvedActions = this.normalizeActions(config.actions ?? null);\n this.metadataChange.emit(this.instance.currentConfig);\n this.cdr.markForCheck();\n }\n\n private async initialize(fromChanges: boolean): Promise<void> {\n this.syncHostFormGroupReference();\n\n if (!this.formId()) {\n return;\n }\n const fields = this.collectFields();\n if (isDevMode()) console.debug('[ManualForm] initialize: detected fields', fields.map(f => f.name));\n if (fields.length === 0) {\n return;\n }\n\n const seed = this.createSeedFromFields(fields);\n const beforeInitOk = await this.runHooks('beforeInit', { seed }, seed.config);\n if (!beforeInitOk) {\n return;\n }\n const persistence = { ...(this.persistenceOptions() ?? {}) };\n const keyId = this.componentKeyId();\n if (keyId) {\n persistence.storageKey = `manual-form:${keyId}`;\n }\n // Create runtime instance and let it populate our existing FormGroup\n this.instance = this.instanceFactory.create(seed, persistence, this.formGroup);\n if (isDevMode()) console.debug('[ManualForm] instance created with seed; current controls', Object.keys((this.formGroup as any).controls || {}));\n\n this.applyInstanceToTemplate(fields);\n this.registerToolbarBindings(fields);\n this.attachMetadataSync();\n\n // Auto-save value changes with debounce\n if (this.enableAutoSave() && this.instance) {\n this.instance.form.valueChanges\n .pipe(debounceTime(this.autoSaveDebounceMs()), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n try { this.instance?.saveDraft(); } catch {}\n });\n }\n await this.runHooks('afterInit', { seed });\n this.cdr.markForCheck();\n }\n\n private collectFields(): DetectedField[] {\n if (!this.formControls) {\n return [];\n }\n const result: DetectedField[] = [];\n for (const dir of this.formControls) {\n const name = this.usePathNames()\n ? (Array.isArray((dir as any).path) && (dir as any).path.length ? ((dir as any).path as string[]).join('.') : (typeof dir.name === 'string' ? dir.name : null))\n : (typeof dir.name === 'string' ? dir.name : null);\n if (!name) {\n continue;\n }\n const component = this.resolveValueAccessor(dir);\n if (!component) {\n continue;\n }\n result.push({\n name,\n control: dir.control,\n component,\n selector: this.resolveSelector(component, dir),\n element: this.resolveHostElement(component, dir),\n });\n }\n return result;\n }\n\n private componentKeyId(): string | null {\n const key = this.componentKeys.buildComponentId({\n componentType: 'praxis-manual-form',\n componentId: this.formId(),\n instanceKey: this.componentInstanceId(),\n componentRef: this,\n route: this.route,\n requireComponentId: true,\n });\n if (!key) this.warnMissingId();\n return key;\n }\n\n private warnMissingId(): void {\n if (this.warnedMissingId) return;\n this.warnedMissingId = true;\n console.warn('[ManualForm] formId is required for config persistence.');\n }\n\n private resolveValueAccessor(dir: FormControlName): unknown {\n const accessor = dir.valueAccessor as unknown;\n if (!accessor) {\n return undefined;\n }\n if (Array.isArray(accessor)) {\n return accessor[0];\n }\n return accessor;\n }\n\n private resolveSelector(component: any, dir: FormControlName): string | undefined {\n const cmpDef = component?.constructor?.ɵcmp;\n if (cmpDef?.selectors?.length) {\n const first = cmpDef.selectors[0];\n if (Array.isArray(first) && first.length && typeof first[0] === 'string') {\n return first[0];\n }\n }\n const element: HTMLElement | undefined = (component as any)?.elementRef?.nativeElement\n ?? (dir as any)?._elementRef?.nativeElement;\n return element?.tagName?.toLowerCase();\n }\n\n private resolveHostElement(component: any, dir: FormControlName): HTMLElement | undefined {\n return (component as any)?.elementRef?.nativeElement\n ?? (dir as any)?._elementRef?.nativeElement;\n }\n\n private createSeedFromFields(fields: DetectedField[]) {\n const metadataList = fields.map((field) => this.buildMetadataForField(field));\n const actions = this.normalizeActions(this.actions() ?? null);\n\n const currentMeta = this.instance?.currentConfig.metadata\n ? deepClone(this.instance.currentConfig.metadata)\n : undefined;\n\n const config: FormConfig = {\n sections: [\n {\n id: 'auto-section',\n title: this.formTitle(),\n description: this.formDescription(),\n rows: [\n {\n id: 'auto-row',\n columns: [\n {\n id: 'auto-column',\n fields: metadataList.map((meta) => meta.name),\n },\n ],\n },\n ],\n },\n ],\n fieldMetadata: metadataList,\n metadata: currentMeta,\n actions,\n };\n\n this.resolvedActions = actions;\n\n return createManualFormSeed(this.formId(), config, {\n source: 'generated',\n version: '1.0.0',\n });\n }\n\n private applyInstanceToTemplate(fields: DetectedField[]): void {\n if (!this.instance) {\n return;\n }\n\n for (const field of fields) {\n this.instance.bindComponent(field.name, field.component);\n // Only apply metadata manually if the component doesn't expose a standard API\n const hasStdApi =\n typeof (field.component as any)?.setInputMetadata === 'function' ||\n !!((field.component as any)?.metadata && typeof (field.component as any).metadata.set === 'function');\n if (!hasStdApi) {\n const metadata = this.instance.getFieldMetadata(field.name);\n if (metadata) {\n this.applyMetadataToComponent(field.component, metadata);\n }\n }\n }\n }\n\n private registerToolbarBindings(fields: DetectedField[]): void {\n this.toolbarSubscriptions.forEach((sub) => sub.unsubscribe());\n this.toolbarSubscriptions = [];\n\n if (!this.editModeEnabled()) {\n return;\n }\n\n for (const field of fields) {\n const host = field.element;\n if (!host) {\n continue;\n }\n const clickSub = fromEvent<MouseEvent>(host, 'click')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.openToolbarForField(field, false);\n });\n const keySub = fromEvent<KeyboardEvent>(host, 'keydown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n if (!this.isToolbarShortcut(event)) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.openToolbarForField(field, true);\n });\n this.toolbarSubscriptions.push(clickSub, keySub);\n }\n }\n\n private isToolbarShortcut(event: KeyboardEvent): boolean {\n return event.key === 'F2' || (event.altKey && event.key === 'F10');\n }\n\n private openToolbarForField(field: DetectedField, openedByKeyboard: boolean): void {\n if (!this.editModeEnabled()) {\n return;\n }\n const instance = this.instance;\n if (!instance || !field.element) {\n return;\n }\n const resolution = this.fieldKeyService.resolveFieldName(field.name, instance);\n if (resolution.status !== 'ok') {\n return;\n }\n const metadata = instance.getFieldMetadata(resolution.key);\n if (!metadata) {\n return;\n }\n\n if (!this.toolbarOverlayRef) {\n this.createToolbarOverlay(field.element);\n } else if (this.toolbarAnchor !== field.element) {\n this.updateToolbarAnchor(field.element);\n }\n\n this.toolbarFieldKey = resolution.key;\n this.toolbarAnchor = field.element;\n this.updateToolbarMetadata(metadata, openedByKeyboard);\n this.toolbarOverlayRef?.updatePosition();\n }\n\n private createToolbarOverlay(anchor: HTMLElement): void {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(anchor)\n .withPositions([\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -10,\n },\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 10,\n },\n ])\n .withPush(true)\n .withFlexibleDimensions(false)\n .withViewportMargin(8);\n\n this.toolbarOverlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n panelClass: 'pdx-manual-toolbar-panel',\n });\n this.toolbarOverlayRef.overlayElement.style.setProperty(\n 'z-index',\n 'var(--pdx-manual-toolbar-z, 2001)',\n );\n\n this.toolbarOverlayRef\n .detachments()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.resetToolbarState());\n\n const portal = new ComponentPortal(ManualFieldToolbarComponent);\n this.toolbarComponentRef = this.toolbarOverlayRef.attach(portal);\n this.bindToolbarActions();\n this.attachOutsideClickHandler();\n }\n\n private updateToolbarAnchor(anchor: HTMLElement): void {\n if (!this.toolbarOverlayRef) {\n return;\n }\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(anchor)\n .withPositions([\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -10,\n },\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 10,\n },\n ])\n .withPush(true)\n .withFlexibleDimensions(false)\n .withViewportMargin(8);\n\n this.toolbarOverlayRef.updatePositionStrategy(positionStrategy);\n }\n\n private bindToolbarActions(): void {\n this.toolbarActionSubscriptions.forEach((sub) => sub.unsubscribe());\n this.toolbarActionSubscriptions = [];\n\n if (!this.toolbarComponentRef) {\n return;\n }\n const instance = this.toolbarComponentRef.instance;\n this.toolbarActionSubscriptions.push(\n instance.toggleRequired.subscribe(() => this.toggleFieldFlag('required')),\n instance.toggleReadonly.subscribe(() => this.toggleFieldFlag('readOnly')),\n instance.toggleHidden.subscribe(() => this.toggleFieldFlag('hidden')),\n instance.toggleDisabled.subscribe(() => this.toggleFieldFlag('disabled')),\n instance.openEditor.subscribe(() => this.openToolbarEditor()),\n instance.requestClose.subscribe(() => this.closeToolbar()),\n );\n }\n\n private toggleFieldFlag(field: 'required' | 'readOnly' | 'hidden' | 'disabled'): void {\n if (!this.instance || !this.toolbarFieldKey) {\n return;\n }\n const current = this.instance.getFieldMetadata(this.toolbarFieldKey);\n if (!current) {\n return;\n }\n if (field === 'required') {\n const currentRequired = !!current.required || !!current.validators?.required;\n const nextRequired = !currentRequired;\n this.instance.patchFieldMetadata(this.toolbarFieldKey, {\n required: nextRequired,\n validators: { ...(current.validators ?? {}), required: nextRequired },\n });\n return;\n }\n const patch: Partial<FieldMetadata> = {\n [field]: !current[field],\n } as Partial<FieldMetadata>;\n this.instance.patchFieldMetadata(this.toolbarFieldKey, patch);\n }\n\n private openToolbarEditor(): void {\n if (!this.toolbarFieldKey || !this.instance) {\n return;\n }\n this.tryOpenFieldEditor(this.toolbarFieldKey);\n }\n\n private updateToolbarMetadata(metadata: FieldMetadata, openedByKeyboard: boolean): void {\n if (!this.toolbarComponentRef) {\n return;\n }\n this.toolbarComponentRef.setInput('metadata', metadata);\n this.toolbarComponentRef.changeDetectorRef.detectChanges();\n if (openedByKeyboard) {\n this.toolbarComponentRef.instance.focusFirstAction();\n }\n }\n\n private attachOutsideClickHandler(): void {\n this.outsideClickSubscription?.unsubscribe();\n if (!isPlatformBrowser(this.platformId) || typeof document === 'undefined') {\n return;\n }\n this.outsideClickSubscription = fromEvent<MouseEvent>(document, 'mousedown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n const target = event.target as Node | null;\n if (!target) {\n return;\n }\n const overlayEl = this.toolbarOverlayRef?.overlayElement;\n if (overlayEl && overlayEl.contains(target)) {\n return;\n }\n if (this.toolbarAnchor && this.toolbarAnchor.contains(target as Node)) {\n return;\n }\n this.closeToolbar();\n });\n }\n\n private closeToolbar(): void {\n this.toolbarOverlayRef?.detach();\n this.toolbarOverlayRef?.dispose();\n this.toolbarOverlayRef = undefined;\n this.toolbarComponentRef = undefined;\n this.outsideClickSubscription?.unsubscribe();\n this.outsideClickSubscription = undefined;\n this.resetToolbarState();\n }\n\n private resetToolbarState(): void {\n this.toolbarFieldKey = undefined;\n this.toolbarAnchor = undefined;\n }\n\n private attachMetadataSync(): void {\n this.metadataSubscription?.unsubscribe();\n const instance = this.instance;\n if (!instance) {\n return;\n }\n this.metadataSubscription = instance\n .metadataChanges()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((map) => {\n if (!this.toolbarFieldKey) {\n return;\n }\n const meta = map.get(this.toolbarFieldKey);\n if (!meta) {\n this.closeToolbar();\n return;\n }\n this.updateToolbarMetadata(meta, false);\n });\n }\n\n private buildMetadataForField(field: DetectedField): FieldMetadata {\n const existing = this.extractExistingMetadata(field.component);\n const label = existing?.label ?? this.inferLabel(field, existing);\n const controlType = existing?.controlType ?? this.inferControlType(field);\n const validators = this.inferValidators(field.control, existing);\n\n return {\n ...(existing ?? {}),\n name: field.name,\n label,\n controlType,\n validators: { ...existing?.validators, ...validators },\n } as FieldMetadata;\n }\n\n private syncHostFormGroupReference(): void {\n const hostForm = this.hostFormGroupDirective?.form;\n if (hostForm && this.formGroup !== hostForm) {\n this.formGroup = hostForm as FormGroup;\n if (isDevMode()) console.debug('[ManualForm] Synced FormGroup from host FormGroupDirective');\n }\n }\n\n private getControlByPath(path: string[]): AbstractControl | null {\n if (!Array.isArray(path) || path.length === 0) return null;\n return this.formGroup.get(path as any);\n }\n\n private getDirPath(dir: { path?: string[] | null; name?: string | number | null }): string[] {\n if (Array.isArray(dir?.path) && dir.path.length) {\n return dir.path;\n }\n if (typeof dir?.name === 'string' && dir.name.length) {\n return [dir.name];\n }\n return [];\n }\n\n private ensureGroupPath(path: string[]): FormGroup {\n let group: FormGroup = this.formGroup;\n if (!Array.isArray(path) || path.length === 0) {\n return group;\n }\n for (const seg of path) {\n const existing = group.get(seg);\n if (existing instanceof FormGroup) {\n group = existing;\n } else {\n const next = new FormGroup({});\n group.addControl(seg, next);\n group = next;\n }\n }\n return group;\n }\n\n private ensureControlPath(path: string[]): void {\n if (!Array.isArray(path) || path.length === 0) return;\n const leaf = path[path.length - 1]!;\n const group = this.ensureGroupPath(path.slice(0, -1));\n if (!group.get(leaf)) {\n group.addControl(leaf, new FormControl());\n }\n }\n\n private extractExistingMetadata(component: any): FieldMetadata | undefined {\n try {\n const metaSignal = component?.metadata;\n if (typeof metaSignal === 'function') {\n const value = metaSignal();\n if (value) {\n return deepClone(value) as FieldMetadata;\n }\n }\n if (typeof component?.getMetadata === 'function') {\n const value = component.getMetadata();\n if (value) {\n return deepClone(value) as FieldMetadata;\n }\n }\n } catch {}\n return undefined;\n }\n\n private inferLabel(field: DetectedField, existing?: FieldMetadata): string {\n if (existing?.label) {\n return existing.label;\n }\n const componentLabel = (field.component as any)?.label;\n if (typeof componentLabel === 'string' && componentLabel.trim().length > 0) {\n return componentLabel;\n }\n return field.name\n .replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n .replace(/[-_]/g, ' ')\n .replace(/\\s+/g, ' ')\n .replace(/^\\w/, (c) => c.toUpperCase());\n }\n\n private inferControlType(field: DetectedField): FieldControlType {\n const selector = field.selector?.toLowerCase();\n if (selector) {\n const fromLocal = this.selectorToControlType[selector];\n if (fromLocal) return fromLocal;\n const fromRegistry = this.selectorRegistry?.resolve(selector);\n if (fromRegistry) return fromRegistry;\n }\n const ctorName = field.component?.constructor?.name ?? '';\n for (const [key, value] of Object.entries(this.constructorToControlType)) {\n if (ctorName.includes(key)) {\n return value;\n }\n }\n return FieldControlType.INPUT;\n }\n\n private inferValidators(control: AbstractControl | null, existing?: FieldMetadata): Record<string, any> {\n const validators: Record<string, any> = existing?.validators ? { ...existing.validators } : {};\n if (!control) {\n return validators;\n }\n const hasValidator = (fn: ValidatorFn) => {\n const anyControl = control as FormControl & { hasValidator?: (fn: ValidatorFn) => boolean };\n if (typeof anyControl.hasValidator === 'function') {\n return anyControl.hasValidator(fn);\n }\n try {\n return !!control.validator && !!control.validator({} as AbstractControl);\n } catch {\n return false;\n }\n };\n\n if (hasValidator(Validators.required)) {\n validators.required = true;\n }\n return validators;\n }\n\n private applyMetadataToComponent(component: any, metadata: FieldMetadata): void {\n try {\n if (typeof component?.setInputMetadata === 'function') {\n component.setInputMetadata(metadata);\n }\n const metaSignal = component?.metadata;\n if (metaSignal && typeof metaSignal.set === 'function') {\n metaSignal.set(metadata);\n }\n if ('label' in component && !component.label) {\n component.label = metadata.label;\n }\n // Visibilidade: esconder/mostrar com base em hidden/formHidden, mesmo em templates manuais\n const isHidden = !!(metadata as any)?.hidden || !!(metadata as any)?.formHidden;\n if ('visible' in component) {\n try { component.visible = !isHidden; } catch {}\n }\n const hostEl: HTMLElement | undefined = (component as any)?.elementRef?.nativeElement;\n if (hostEl) {\n hostEl.style.display = isHidden ? 'none' : '';\n hostEl.setAttribute('aria-hidden', String(isHidden));\n }\n } catch {}\n }\n\n private buildCurrentConfigSnapshot(): FormConfig {\n const metadata = this.instance?.currentConfig.fieldMetadata ?? [];\n return {\n fieldMetadata: deepClone(metadata),\n sections: this.instance?.currentConfig.sections\n ? deepClone(this.instance.currentConfig.sections)\n : [],\n } as FormConfig;\n }\n\n private normalizeActions(source?: FormActionsLayout | null): FormActionsLayout {\n const base = deepClone(DEFAULT_ACTIONS);\n if (!source) {\n return base;\n }\n\n return {\n submit: mergeAction(base.submit, source.submit),\n cancel: mergeAction(base.cancel, source.cancel),\n reset: mergeAction(base.reset, source.reset),\n custom: source.custom ? source.custom.map(makeAction) : base.custom,\n position: source.position ?? base.position,\n orientation: source.orientation ?? base.orientation,\n spacing: source.spacing ?? base.spacing,\n sticky: source.sticky ?? base.sticky,\n placement: source.placement ?? base.placement,\n mobile: source.mobile ?? base.mobile,\n containerClassName: source.containerClassName ?? base.containerClassName,\n containerStyles: source.containerStyles ?? base.containerStyles,\n showSaveButton: source.showSaveButton ?? base.showSaveButton,\n submitButtonLabel: source.submitButtonLabel ?? base.submitButtonLabel,\n showCancelButton: source.showCancelButton ?? base.showCancelButton,\n cancelButtonLabel: source.cancelButtonLabel ?? base.cancelButtonLabel,\n showResetButton: source.showResetButton ?? base.showResetButton,\n resetButtonLabel: source.resetButtonLabel ?? base.resetButtonLabel,\n };\n }\n}\n\nconst DEFAULT_ACTIONS: FormActionsLayout = {\n submit: makeAction({ id: 'submit', label: 'Salvar', visible: true, type: 'submit', color: 'primary' }),\n cancel: makeAction({ id: 'cancel', label: 'Cancelar', visible: false, type: 'button' }),\n reset: makeAction({ id: 'reset', label: 'Restaurar', visible: true, type: 'reset' }),\n custom: [],\n position: 'right',\n orientation: 'horizontal',\n spacing: 'normal',\n};\n\nfunction makeAction(action: Partial<FormActionButton>): FormActionButton {\n return {\n id: action.id ?? 'action',\n label: action.label ?? 'Ação',\n visible: action.visible !== false,\n type: action.type ?? 'button',\n color: action.color,\n disabled: action.disabled,\n icon: action.icon,\n action: action.action,\n tooltip: action.tooltip,\n variant: action.variant,\n size: action.size,\n loading: action.loading,\n shortcut: action.shortcut,\n };\n}\n\nfunction mergeAction(base: FormActionButton, override?: FormActionButton): FormActionButton {\n if (!override) {\n return base;\n }\n return {\n ...base,\n ...override,\n visible: override.visible !== undefined ? override.visible : base.visible,\n };\n}\n\nconst DEFAULT_SELECTOR_TO_CONTROL_TYPE: Record<string, FieldControlType> =\n DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP;\n\nconst DEFAULT_CONSTRUCTOR_TO_CONTROL_TYPE: Record<string, FieldControlType> = {\n TextInput: FieldControlType.INPUT,\n Textarea: FieldControlType.TEXTAREA,\n NumberInput: FieldControlType.NUMERIC_TEXT_BOX,\n Currency: FieldControlType.CURRENCY_INPUT,\n DatePicker: FieldControlType.DATE_PICKER,\n DateRange: FieldControlType.DATE_RANGE,\n TimePicker: FieldControlType.TIME_PICKER,\n ColorPicker: FieldControlType.COLOR_PICKER,\n SelectComponent: FieldControlType.SELECT,\n Autocomplete: FieldControlType.AUTO_COMPLETE,\n CheckboxGroup: FieldControlType.CHECKBOX,\n RadioGroup: FieldControlType.RADIO,\n SlideToggle: FieldControlType.TOGGLE,\n SliderComponent: FieldControlType.SLIDER,\n RangeSlider: FieldControlType.RANGE_SLIDER,\n FileUpload: FieldControlType.FILE_UPLOAD,\n};\n","<div class=\"pdx-manual-form\">\n @if (showHeader()) {\n <praxis-manual-form-header [instance]=\"instance\" [title]=\"formTitle()\" [description]=\"formDescription()\"\n [editModeEnabled]=\"editModeEnabled()\" (editForm)=\"openFormEditor()\" (save)=\"handleSave()\"\n (reset)=\"handleReset()\"></praxis-manual-form-header>\n }\n\n @if (editModeEnabled()) {\n <div class=\"pdx-manual-form__assistant\">\n <praxis-ai-assistant [adapter]=\"aiAdapter\"></praxis-ai-assistant>\n </div>\n }\n\n <form class=\"pdx-manual-form__form\" [formGroup]=\"formGroup\" (submit)=\"handleSubmit(); $event.preventDefault()\">\n <ng-content></ng-content>\n </form>\n\n @if (showActions() && resolvedActions) {\n <praxis-manual-form-actions [actions]=\"resolvedActions\"\n (actionClick)=\"handleAction($event)\"></praxis-manual-form-actions>\n }\n</div>\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { SETTINGS_PANEL_DATA, SETTINGS_PANEL_REF, SettingsPanelRef } from '@praxisui/settings-panel';\nimport { ManualFormInstance } from '../../stores/manual-form-instance';\nimport {\n FieldMetadata,\n FormActionButton,\n FormActionsLayout,\n FormBehaviorLayout,\n FormHookStage,\n FormHooksLayout,\n FormLayoutRule,\n FormMessagesLayout,\n FieldDefinition,\n} from '@praxisui/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { deepClone } from '../../utils/clone.util';\nimport { CascadeManagerTabComponent } from '@praxisui/metadata-editor';\n\ninterface PanelInputs {\n instance: ManualFormInstance;\n}\n\n@Component({\n selector: 'praxis-manual-form-config-editor',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n MatTabsModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatSlideToggleModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n CascadeManagerTabComponent,\n ],\n template: `\n <div class=\"mf-editor\">\n <div class=\"mf-editor__toolbar\">\n <div class=\"mf-editor__title\">\n <span>Configurações do formulário</span>\n <small class=\"mf-editor__subtitle\">Campos, ações, mensagens e comportamento</small>\n </div>\n <div class=\"spacer\"></div>\n <button type=\"button\" class=\"mf-btn\" (click)=\"close()\">Fechar</button>\n </div>\n\n <mat-tab-group class=\"mf-tabs\">\n <mat-tab label=\"Campos\">\n <div class=\"mf-tab\">\n <label class=\"mf-editor__filter\">\n <input type=\"checkbox\" [(ngModel)]=\"onlyHidden\" (change)=\"applyFilter()\" />\n <span>Mostrar apenas ocultos</span>\n </label>\n <div class=\"mf-editor__list\">\n <div class=\"mf-editor__row mf-editor__row--head\">\n <div class=\"col col--name\">Campo</div>\n <div class=\"col col--label\">Rótulo</div>\n <div class=\"col col--type\">Tipo</div>\n <div class=\"col col--vis\">Visível</div>\n <div class=\"col col--req\">Obrigatório</div>\n <div class=\"col col--ro\">Som. leitura</div>\n <div class=\"col col--dis\">Desabilitado</div>\n </div>\n\n @for (f of filtered; track f.name) {\n <div class=\"mf-editor__row\">\n <div class=\"col col--name\"><code>{{ f.name }}</code></div>\n <div class=\"col col--label\">{{ f.label || f.name }}</div>\n <div class=\"col col--type\">{{ f.controlType }}</div>\n <div class=\"col col--vis\">\n <label class=\"toggle\">\n <input type=\"checkbox\" [checked]=\"!f.hidden\" (change)=\"toggleVisibility(f, $any($event.target).checked)\" />\n <span>{{ f.hidden ? 'Oculto' : 'Visível' }}</span>\n </label>\n </div>\n <div class=\"col col--req\">\n <label class=\"toggle\">\n <input type=\"checkbox\" [checked]=\"!!f.required\" (change)=\"toggleRequired(f, $any($event.target).checked)\" />\n <span>{{ f.required ? 'Sim' : 'Não' }}</span>\n </label>\n </div>\n <div class=\"col col--ro\">\n <label class=\"toggle\">\n <input type=\"checkbox\" [checked]=\"!!f.readOnly\" (change)=\"toggleReadOnly(f, $any($event.target).checked)\" />\n <span>{{ f.readOnly ? 'Sim' : 'Não' }}</span>\n </label>\n </div>\n <div class=\"col col--dis\">\n <label class=\"toggle\">\n <input type=\"checkbox\" [checked]=\"!!f.disabled\" (change)=\"toggleDisabled(f, $any($event.target).checked)\" />\n <span>{{ f.disabled ? 'Sim' : 'Não' }}</span>\n </label>\n </div>\n </div>\n }\n </div>\n </div>\n </mat-tab>\n\n <mat-tab label=\"Ações\">\n <div class=\"mf-tab\">\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Botões padrão</h3>\n <p class=\"mf-help\">Controle rótulos, visibilidade e estilo dos botões básicos.</p>\n </div>\n </div>\n <div class=\"mf-actions-grid\">\n @for (block of actionBlocks; track block.key) {\n <div class=\"mf-action-card\">\n <div class=\"mf-action-card__title\">{{ block.label }}</div>\n <mat-slide-toggle\n [checked]=\"actionsModel[block.key].visible\"\n (change)=\"updateActionField(block.key, 'visible', $event.checked)\"\n >\n Visível\n </mat-slide-toggle>\n <mat-form-field appearance=\"outline\">\n <mat-label>Label</mat-label>\n <input\n matInput\n [value]=\"actionsModel[block.key].label\"\n (input)=\"updateActionField(block.key, 'label', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Ícone</mat-label>\n <input\n matInput\n [value]=\"actionsModel[block.key].icon || ''\"\n (input)=\"updateActionField(block.key, 'icon', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Variante</mat-label>\n <mat-select\n [value]=\"actionsModel[block.key].variant || null\"\n (selectionChange)=\"updateActionField(block.key, 'variant', $event.value)\"\n >\n <mat-option [value]=\"null\">Padrão</mat-option>\n <mat-option value=\"raised\">Elevado</mat-option>\n <mat-option value=\"stroked\">Contornado</mat-option>\n <mat-option value=\"flat\">Plano</mat-option>\n <mat-option value=\"fab\">Flutuante</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Cor</mat-label>\n <mat-select\n [value]=\"actionsModel[block.key].color || null\"\n (selectionChange)=\"updateActionField(block.key, 'color', $event.value)\"\n >\n <mat-option [value]=\"null\">Padrão</mat-option>\n <mat-option value=\"primary\">Primary</mat-option>\n <mat-option value=\"accent\">Accent</mat-option>\n <mat-option value=\"warn\">Warn</mat-option>\n <mat-option value=\"basic\">Basic</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Atalho</mat-label>\n <input\n matInput\n [value]=\"actionsModel[block.key].shortcut || ''\"\n (input)=\"updateActionField(block.key, 'shortcut', $any($event.target).value)\"\n />\n </mat-form-field>\n </div>\n }\n </div>\n </section>\n\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Layout das ações</h3>\n <p class=\"mf-help\">Define alinhamento e disposição da barra de ações.</p>\n </div>\n </div>\n <div class=\"mf-actions-layout\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Posição</mat-label>\n <mat-select\n [value]=\"actionsModel.position || null\"\n (selectionChange)=\"updateActionsLayout('position', $event.value)\"\n >\n <mat-option value=\"left\">Esquerda</mat-option>\n <mat-option value=\"center\">Centro</mat-option>\n <mat-option value=\"right\">Direita</mat-option>\n <mat-option value=\"justified\">Justificado</mat-option>\n <mat-option value=\"split\">Split</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Orientação</mat-label>\n <mat-select\n [value]=\"actionsModel.orientation || null\"\n (selectionChange)=\"updateActionsLayout('orientation', $event.value)\"\n >\n <mat-option value=\"horizontal\">Horizontal</mat-option>\n <mat-option value=\"vertical\">Vertical</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Espaçamento</mat-label>\n <mat-select\n [value]=\"actionsModel.spacing || null\"\n (selectionChange)=\"updateActionsLayout('spacing', $event.value)\"\n >\n <mat-option value=\"compact\">Compacto</mat-option>\n <mat-option value=\"normal\">Normal</mat-option>\n <mat-option value=\"spacious\">Espaçoso</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Posicionamento</mat-label>\n <mat-select\n [value]=\"actionsModel.placement || null\"\n (selectionChange)=\"updateActionsLayout('placement', $event.value)\"\n >\n <mat-option value=\"afterSections\">Após seções</mat-option>\n <mat-option value=\"insideLastSection\">Dentro da última seção</mat-option>\n <mat-option value=\"top\">Topo</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-slide-toggle\n [checked]=\"!!actionsModel.sticky\"\n (change)=\"updateActionsLayout('sticky', $event.checked)\"\n >\n Ações fixas\n </mat-slide-toggle>\n <mat-slide-toggle\n [checked]=\"!!actionsModel.divider\"\n (change)=\"updateActionsLayout('divider', $event.checked)\"\n >\n Mostrar divisor\n </mat-slide-toggle>\n </div>\n </section>\n\n <section class=\"mf-section\">\n <div class=\"mf-section__header mf-section__header--row\">\n <div>\n <h3>Ações customizadas</h3>\n <p class=\"mf-help\">Crie botões extras com evento próprio.</p>\n </div>\n <button mat-stroked-button type=\"button\" (click)=\"addCustomAction()\">\n <mat-icon>add</mat-icon>\n Adicionar ação\n </button>\n </div>\n <div class=\"mf-custom-actions\">\n @if (actionsModel.custom?.length) {\n @for (action of actionsModel.custom || []; track action.id) {\n <div class=\"mf-custom-card\">\n <div class=\"mf-custom-card__header\">\n <div class=\"mf-custom-card__title\">{{ action.label || action.id }}</div>\n <button mat-icon-button type=\"button\" (click)=\"removeCustomAction(action)\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n <div class=\"mf-custom-card__grid\">\n <mat-form-field appearance=\"outline\">\n <mat-label>ID</mat-label>\n <input\n matInput\n [value]=\"action.id || ''\"\n (input)=\"updateCustomActionField(action, 'id', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Label</mat-label>\n <input\n matInput\n [value]=\"action.label || ''\"\n (input)=\"updateCustomActionField(action, 'label', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Evento (action)</mat-label>\n <input\n matInput\n [value]=\"action.action || ''\"\n (input)=\"updateCustomActionField(action, 'action', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Ícone</mat-label>\n <input\n matInput\n [value]=\"action.icon || ''\"\n (input)=\"updateCustomActionField(action, 'icon', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Variante</mat-label>\n <mat-select\n [value]=\"action.variant || null\"\n (selectionChange)=\"updateCustomActionField(action, 'variant', $event.value)\"\n >\n <mat-option [value]=\"null\">Padrão</mat-option>\n <mat-option value=\"raised\">Elevado</mat-option>\n <mat-option value=\"stroked\">Contornado</mat-option>\n <mat-option value=\"flat\">Plano</mat-option>\n <mat-option value=\"fab\">Flutuante</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Cor</mat-label>\n <mat-select\n [value]=\"action.color || null\"\n (selectionChange)=\"updateCustomActionField(action, 'color', $event.value)\"\n >\n <mat-option [value]=\"null\">Padrão</mat-option>\n <mat-option value=\"primary\">Primary</mat-option>\n <mat-option value=\"accent\">Accent</mat-option>\n <mat-option value=\"warn\">Warn</mat-option>\n <mat-option value=\"basic\">Basic</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Atalho</mat-label>\n <input\n matInput\n [value]=\"action.shortcut || ''\"\n (input)=\"updateCustomActionField(action, 'shortcut', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Tooltip</mat-label>\n <input\n matInput\n [value]=\"action.tooltip || ''\"\n (input)=\"updateCustomActionField(action, 'tooltip', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-slide-toggle\n [checked]=\"action.visible !== false\"\n (change)=\"updateCustomActionField(action, 'visible', $event.checked)\"\n >\n Visível\n </mat-slide-toggle>\n </div>\n </div>\n }\n } @else {\n <p class=\"mf-empty\">Nenhuma ação customizada cadastrada.</p>\n }\n </div>\n </section>\n </div>\n </mat-tab>\n\n <mat-tab label=\"Mensagens\">\n <div class=\"mf-tab\">\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Feedback padrão</h3>\n <p class=\"mf-help\">Mensagens de sucesso/erro exibidas pelo host.</p>\n </div>\n </div>\n <div class=\"mf-messages-grid\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Sucesso ao criar</mat-label>\n <input\n matInput\n [value]=\"messagesModel.createRegistrySuccess || ''\"\n (input)=\"updateMessage('createRegistrySuccess', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Erro ao criar</mat-label>\n <input\n matInput\n [value]=\"messagesModel.createRegistryError || ''\"\n (input)=\"updateMessage('createRegistryError', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Sucesso ao atualizar</mat-label>\n <input\n matInput\n [value]=\"messagesModel.updateRegistrySuccess || ''\"\n (input)=\"updateMessage('updateRegistrySuccess', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Erro ao atualizar</mat-label>\n <input\n matInput\n [value]=\"messagesModel.updateRegistryError || ''\"\n (input)=\"updateMessage('updateRegistryError', $any($event.target).value)\"\n />\n </mat-form-field>\n </div>\n </section>\n\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Confirmações</h3>\n <p class=\"mf-help\">Textos mostrados antes de ações críticas.</p>\n </div>\n </div>\n <div class=\"mf-messages-grid\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Enviar</mat-label>\n <input\n matInput\n [value]=\"messagesModel.confirmations?.submit || ''\"\n (input)=\"updateConfirmation('submit', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Cancelar</mat-label>\n <input\n matInput\n [value]=\"messagesModel.confirmations?.cancel || ''\"\n (input)=\"updateConfirmation('cancel', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Resetar</mat-label>\n <input\n matInput\n [value]=\"messagesModel.confirmations?.reset || ''\"\n (input)=\"updateConfirmation('reset', $any($event.target).value)\"\n />\n </mat-form-field>\n </div>\n </section>\n\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Loading</h3>\n <p class=\"mf-help\">Mensagens exibidas durante operações.</p>\n </div>\n </div>\n <div class=\"mf-messages-grid\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Salvar</mat-label>\n <input\n matInput\n [value]=\"messagesModel.loading?.submit || ''\"\n (input)=\"updateLoading('submit', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Cancelar</mat-label>\n <input\n matInput\n [value]=\"messagesModel.loading?.cancel || ''\"\n (input)=\"updateLoading('cancel', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Resetar</mat-label>\n <input\n matInput\n [value]=\"messagesModel.loading?.reset || ''\"\n (input)=\"updateLoading('reset', $any($event.target).value)\"\n />\n </mat-form-field>\n </div>\n </section>\n\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Mensagens por ação customizada</h3>\n <p class=\"mf-help\">Personalize textos por ID de ação.</p>\n </div>\n </div>\n <div class=\"mf-custom-messages\">\n @if (actionsModel.custom?.length) {\n @for (action of actionsModel.custom || []; track action.id) {\n <div class=\"mf-custom-message-card\">\n <div class=\"mf-custom-card__title\">{{ action.label || action.id }}</div>\n <div class=\"mf-custom-card__grid\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Confirmação</mat-label>\n <input\n matInput\n [value]=\"messagesModel.customActions?.[action.id || '']?.confirmation || ''\"\n (input)=\"updateCustomMessage(action, 'confirmation', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Sucesso</mat-label>\n <input\n matInput\n [value]=\"messagesModel.customActions?.[action.id || '']?.success || ''\"\n (input)=\"updateCustomMessage(action, 'success', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Erro</mat-label>\n <input\n matInput\n [value]=\"messagesModel.customActions?.[action.id || '']?.error || ''\"\n (input)=\"updateCustomMessage(action, 'error', $any($event.target).value)\"\n />\n </mat-form-field>\n </div>\n </div>\n }\n } @else {\n <p class=\"mf-empty\">Cadastre ações customizadas para configurar mensagens específicas.</p>\n }\n </div>\n </section>\n </div>\n </mat-tab>\n\n <mat-tab label=\"Comportamento\">\n <div class=\"mf-tab\">\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Comportamento do formulário</h3>\n <p class=\"mf-help\">Preferências aplicadas pelo host ou runtime.</p>\n </div>\n </div>\n <div class=\"mf-note\">Estas opções são persistidas no config; o host decide como aplicar.</div>\n <div class=\"mf-toggle-grid\">\n <mat-slide-toggle\n [checked]=\"!!behaviorModel.confirmOnUnsavedChanges\"\n (change)=\"updateBehavior('confirmOnUnsavedChanges', $event.checked)\"\n >\n Confirmar ao sair com alterações não salvas\n </mat-slide-toggle>\n <mat-slide-toggle\n [checked]=\"!!behaviorModel.trackHistory\"\n (change)=\"updateBehavior('trackHistory', $event.checked)\"\n >\n Rastrear histórico de alterações\n </mat-slide-toggle>\n <mat-slide-toggle\n [checked]=\"!!behaviorModel.focusFirstError\"\n (change)=\"updateBehavior('focusFirstError', $event.checked)\"\n >\n Focar no primeiro erro ao submeter\n </mat-slide-toggle>\n <mat-slide-toggle\n [checked]=\"!!behaviorModel.scrollToErrors\"\n (change)=\"updateBehavior('scrollToErrors', $event.checked)\"\n >\n Rolar até os erros ao submeter\n </mat-slide-toggle>\n <mat-slide-toggle\n [checked]=\"!!behaviorModel.clearAfterSave\"\n (change)=\"updateBehavior('clearAfterSave', $event.checked)\"\n >\n Limpar formulário após salvar\n </mat-slide-toggle>\n <mat-slide-toggle\n [checked]=\"!!behaviorModel.reactiveValidation\"\n (change)=\"updateBehavior('reactiveValidation', $event.checked)\"\n >\n Validação reativa\n </mat-slide-toggle>\n </div>\n <div class=\"mf-actions-layout\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Redirecionar após salvar (URL)</mat-label>\n <input\n matInput\n [value]=\"behaviorModel.redirectAfterSave || ''\"\n (input)=\"updateBehavior('redirectAfterSave', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Debounce validação reativa (ms)</mat-label>\n <input\n matInput\n type=\"number\"\n min=\"0\"\n [value]=\"behaviorModel.reactiveValidationDebounceMs || 0\"\n (input)=\"updateBehavior('reactiveValidationDebounceMs', $any($event.target).valueAsNumber || 0)\"\n />\n </mat-form-field>\n </div>\n </section>\n </div>\n </mat-tab>\n\n <mat-tab label=\"Dicas\">\n <div class=\"mf-tab\">\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Mensagens de modo</h3>\n <p class=\"mf-help\">Textos auxiliares exibidos pelo host.</p>\n </div>\n </div>\n <div class=\"mf-note\">Útil para i18n e orientação do usuário.</div>\n <div class=\"mf-messages-grid\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Criar</mat-label>\n <input\n matInput\n [value]=\"hintsModel.dataModes.create\"\n (input)=\"updateHints('dataModes', 'create', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Editar</mat-label>\n <input\n matInput\n [value]=\"hintsModel.dataModes.edit\"\n (input)=\"updateHints('dataModes', 'edit', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Visualizar</mat-label>\n <input\n matInput\n [value]=\"hintsModel.dataModes.view\"\n (input)=\"updateHints('dataModes', 'view', $any($event.target).value)\"\n />\n </mat-form-field>\n </div>\n </section>\n\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Dicas de UI</h3>\n <p class=\"mf-help\">Ajuda contextual para estados do formulário.</p>\n </div>\n </div>\n <div class=\"mf-messages-grid\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Apresentação</mat-label>\n <textarea\n matInput\n rows=\"2\"\n [value]=\"hintsModel.uiModes.presentation\"\n (input)=\"updateHints('uiModes', 'presentation', $any($event.target).value)\"\n ></textarea>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Somente leitura</mat-label>\n <textarea\n matInput\n rows=\"2\"\n [value]=\"hintsModel.uiModes.readonly\"\n (input)=\"updateHints('uiModes', 'readonly', $any($event.target).value)\"\n ></textarea>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Desabilitado</mat-label>\n <textarea\n matInput\n rows=\"2\"\n [value]=\"hintsModel.uiModes.disabled\"\n (input)=\"updateHints('uiModes', 'disabled', $any($event.target).value)\"\n ></textarea>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Visível</mat-label>\n <textarea\n matInput\n rows=\"2\"\n [value]=\"hintsModel.uiModes.visible\"\n (input)=\"updateHints('uiModes', 'visible', $any($event.target).value)\"\n ></textarea>\n </mat-form-field>\n </div>\n </section>\n </div>\n </mat-tab>\n\n <mat-tab label=\"Hooks\">\n <div class=\"mf-tab\">\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Hooks de ciclo de vida</h3>\n <p class=\"mf-help\">Defina ações automatizadas por estágio.</p>\n </div>\n <div class=\"mf-actions-row\">\n <button mat-stroked-button type=\"button\" (click)=\"resetHooks()\">\n Restaurar\n </button>\n <button mat-flat-button color=\"primary\" type=\"button\" (click)=\"applyHooks()\">\n Aplicar hooks\n </button>\n </div>\n </div>\n <div class=\"mf-note\">Executa apenas se o host registrar hooks disponíveis.</div>\n <div class=\"mf-hooks-grid\">\n @for (stage of hookStages; track stage) {\n <mat-form-field appearance=\"outline\" class=\"mf-hook-field\">\n <mat-label>{{ hookLabel(stage) }}</mat-label>\n <textarea\n matInput\n rows=\"4\"\n [value]=\"hooksText[stage]\"\n (input)=\"onHookTextChange(stage, $any($event.target).value)\"\n placeholder='[{ \"id\": \"notifySuccess\", \"priority\": 0, \"args\": {} }]'\n ></textarea>\n <button\n mat-icon-button\n matSuffix\n class=\"help-icon-button\"\n type=\"button\"\n [matTooltip]=\"'Array JSON de hooks para ' + stage + ' (id, priority, timeoutMs, args).'\"\n matTooltipPosition=\"above\"\n >\n <mat-icon>help_outline</mat-icon>\n </button>\n @if (hooksErrors[stage]) {\n <mat-error>{{ hooksErrors[stage] }}</mat-error>\n }\n </mat-form-field>\n }\n </div>\n </section>\n </div>\n </mat-tab>\n\n <mat-tab label=\"Regras\">\n <div class=\"mf-tab\">\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Regras de layout</h3>\n <p class=\"mf-help\">Regras avançadas para visibilidade e comportamento.</p>\n </div>\n <div class=\"mf-actions-row\">\n <button mat-flat-button color=\"primary\" type=\"button\" (click)=\"applyRules()\">\n Aplicar regras\n </button>\n </div>\n </div>\n <div class=\"mf-note\">Persistido no config; a execução depende do host.</div>\n <mat-form-field appearance=\"outline\">\n <mat-label>formRules (JSON)</mat-label>\n <textarea\n matInput\n rows=\"6\"\n [value]=\"formRulesText\"\n (input)=\"onRulesTextChange($any($event.target).value)\"\n placeholder='[{\"id\":\"rule-1\",\"name\":\"Obrigatoriedade\",\"targetType\":\"field\",\"targets\":[\"campo\"],\"effect\":{\"condition\":\"{campo} != null\",\"properties\":{\"required\":true}}}]'\n ></textarea>\n <button\n mat-icon-button\n matSuffix\n class=\"help-icon-button\"\n type=\"button\"\n [matTooltip]=\"'Array JSON com regras (id, targetType, targets, effect).'\"\n matTooltipPosition=\"above\"\n >\n <mat-icon>help_outline</mat-icon>\n </button>\n @if (formRulesError) {\n <mat-error>{{ formRulesError }}</mat-error>\n }\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>formRulesState (JSON)</mat-label>\n <textarea\n matInput\n rows=\"6\"\n [value]=\"formRulesStateText\"\n (input)=\"onRulesStateTextChange($any($event.target).value)\"\n placeholder='{\"nodes\":[],\"edges\":[]}'\n ></textarea>\n <button\n mat-icon-button\n matSuffix\n class=\"help-icon-button\"\n type=\"button\"\n [matTooltip]=\"'Estado bruto do editor visual (opcional).'\"\n matTooltipPosition=\"above\"\n >\n <mat-icon>help_outline</mat-icon>\n </button>\n @if (formRulesStateError) {\n <mat-error>{{ formRulesStateError }}</mat-error>\n }\n </mat-form-field>\n <div class=\"mf-actions-row mf-actions-row--end\">\n <button mat-flat-button color=\"primary\" type=\"button\" (click)=\"applyRules()\">\n Aplicar regras\n </button>\n </div>\n </section>\n </div>\n </mat-tab>\n\n <mat-tab label=\"Cascatas\">\n <div class=\"mf-tab\">\n <section class=\"mf-section mf-section--full\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Dependências entre campos</h3>\n <p class=\"mf-help\">Configure cascatas nativas baseadas em metadados.</p>\n </div>\n </div>\n <div class=\"mf-note\">As alterações atualizam metadados e são salvas no draft.</div>\n <praxis-cascade-manager-tab\n [fields]=\"cascadeFields\"\n (apply)=\"applyCascadePatch($event)\"\n ></praxis-cascade-manager-tab>\n </section>\n </div>\n </mat-tab>\n </mat-tab-group>\n </div>\n `,\n styles: [\n `\n .mf-editor {\n display: grid;\n gap: 16px;\n padding: 16px;\n color: var(--md-sys-color-on-surface);\n }\n .mf-editor__toolbar {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 14px;\n border: 1px solid var(--md-sys-color-outline-variant);\n border-radius: 12px;\n background: var(--md-sys-color-surface-container);\n }\n .mf-editor__title {\n display: flex;\n flex-direction: column;\n gap: 2px;\n font-weight: 600;\n }\n .mf-editor__subtitle {\n font-weight: 400;\n color: var(--md-sys-color-on-surface-variant);\n }\n .mf-editor__toolbar .spacer { flex: 1; }\n .mf-tabs { min-height: 420px; }\n .mf-tab { display: grid; gap: 16px; padding: 14px 6px 0; }\n .mf-editor__list { display: grid; gap: 8px; overflow-x: auto; }\n .mf-editor__row {\n display: grid;\n grid-template-columns: 2.2fr 2fr 1fr repeat(4, minmax(90px, 0.8fr));\n align-items: center;\n gap: 8px;\n padding: 10px 12px;\n border: 1px solid var(--md-sys-color-outline-variant);\n border-radius: 10px;\n background: var(--md-sys-color-surface);\n min-width: 720px;\n }\n .mf-editor__row--head {\n font-weight: 600;\n color: var(--md-sys-color-on-surface);\n background: var(--md-sys-color-surface-container);\n }\n .mf-editor__filter {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n }\n .mf-editor__filter input {\n accent-color: var(--md-sys-color-primary);\n }\n .col code {\n display: inline-block;\n font-family: inherit;\n font-size: 0.85rem;\n padding: 2px 8px;\n border-radius: 6px;\n background: var(--md-sys-color-surface-container-high);\n color: var(--md-sys-color-on-surface-variant);\n }\n .mf-btn {\n min-height: 36px;\n padding: 0 12px;\n border-radius: 8px;\n border: 1px solid var(--md-sys-color-outline);\n background: var(--md-sys-color-surface);\n color: var(--md-sys-color-on-surface);\n cursor: pointer;\n transition: background-color .18s ease, border-color .18s ease, color .18s ease;\n }\n .mf-btn:hover { background: var(--md-sys-color-surface-container); }\n .mf-btn:focus-visible { outline: 2px solid var(--md-sys-color-primary); outline-offset: 2px; }\n .toggle { display: inline-flex; align-items: center; gap: 6px; color: var(--md-sys-color-on-surface-variant); }\n .mf-section {\n display: grid;\n gap: 12px;\n padding: 16px;\n border-radius: 12px;\n border: 1px solid var(--md-sys-color-outline-variant);\n background: var(--md-sys-color-surface);\n }\n .mf-section--full {\n padding: 10px;\n }\n .mf-section__header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n }\n .mf-section__header h3 {\n margin: 0;\n font-size: 1.05rem;\n font-weight: 600;\n }\n .mf-help {\n margin: 6px 0 0;\n font-size: 0.9rem;\n color: var(--md-sys-color-on-surface-variant);\n }\n .mf-note {\n padding: 10px 12px;\n border-radius: 10px;\n border: 1px dashed var(--md-sys-color-outline-variant);\n background: var(--md-sys-color-surface-container);\n color: var(--md-sys-color-on-surface-variant);\n font-size: 0.9rem;\n }\n .help-icon-button {\n --mdc-icon-button-state-layer-size: 28px;\n --mdc-icon-button-icon-size: 18px;\n width: 28px;\n height: 28px;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-right: -4px;\n }\n .help-icon-button mat-icon { font-size: 18px; width: 18px; height: 18px; }\n .mat-mdc-form-field-icon-suffix { align-self: center; }\n .mf-actions-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\n gap: 12px;\n }\n .mf-action-card,\n .mf-custom-card,\n .mf-custom-message-card {\n display: grid;\n gap: 10px;\n padding: 14px;\n border-radius: 10px;\n border: 1px solid var(--md-sys-color-outline-variant);\n background: var(--md-sys-color-surface-container-high);\n }\n .mf-action-card__title,\n .mf-custom-card__title {\n font-weight: 600;\n color: var(--md-sys-color-on-surface);\n }\n .mf-actions-layout {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n gap: 12px;\n align-items: center;\n }\n .mf-toggle-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\n gap: 12px;\n align-items: start;\n }\n .mf-hooks-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\n gap: 12px;\n }\n .mf-hook-field textarea {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n font-size: 0.85rem;\n }\n .mf-actions-row {\n display: inline-flex;\n gap: 8px;\n align-items: center;\n }\n .mf-actions-row--end {\n justify-content: flex-end;\n width: 100%;\n }\n .mf-custom-actions,\n .mf-custom-messages {\n display: grid;\n gap: 12px;\n }\n .mf-custom-card__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n }\n .mf-custom-card__grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n gap: 12px;\n align-items: center;\n }\n .mf-messages-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\n gap: 12px;\n }\n .mf-empty {\n margin: 0;\n color: var(--md-sys-color-on-surface-variant);\n }\n `,\n ],\n})\nexport class ManualFormConfigEditorComponent implements OnInit {\n readonly instance: ManualFormInstance;\n all: FieldMetadata[] = [];\n filtered: FieldMetadata[] = [];\n onlyHidden = false;\n actionsModel: FormActionsLayout = deepClone(DEFAULT_ACTIONS);\n messagesModel: FormMessagesLayout = {};\n behaviorModel: FormBehaviorLayout = {};\n hintsModel: FormHints = createDefaultHints();\n hooksText: Record<FormHookStage, string> = createDefaultHooksText();\n hooksErrors: Partial<Record<FormHookStage, string>> = {};\n formRulesText = '';\n formRulesStateText = '';\n formRulesError = '';\n formRulesStateError = '';\n readonly hookStages: FormHookStage[] = [\n 'beforeInit',\n 'afterInit',\n 'beforeValidate',\n 'afterValidate',\n 'beforeSubmit',\n 'afterSubmit',\n 'onError',\n ];\n readonly actionBlocks: Array<{ key: 'submit' | 'cancel' | 'reset'; label: string }> = [\n { key: 'submit', label: 'Salvar' },\n { key: 'cancel', label: 'Cancelar' },\n { key: 'reset', label: 'Resetar' },\n ];\n // SettingsValueProvider observables\n isDirty$ = new BehaviorSubject<boolean>(false);\n isValid$ = new BehaviorSubject<boolean>(true);\n isBusy$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n @Inject(SETTINGS_PANEL_DATA) inputs: PanelInputs,\n @Inject(SETTINGS_PANEL_REF) private ref: SettingsPanelRef,\n ) {\n this.instance = inputs.instance;\n }\n\n ngOnInit(): void {\n this.refresh();\n }\n\n close(): void { this.ref.close('cancel'); }\n\n applyFilter(): void {\n this.filtered = this.onlyHidden ? this.all.filter(f => !!f.hidden) : [...this.all];\n }\n\n toggleVisibility(field: FieldMetadata, checked?: boolean): void {\n const visible = !!checked; // checked === visible\n const toPatch = { hidden: !visible } as Partial<FieldMetadata>;\n try {\n this.instance.patchFieldMetadata(field.name, toPatch);\n this.instance.saveDraft();\n this.refresh();\n this.isDirty$.next(true);\n } catch {}\n }\n\n toggleRequired(field: FieldMetadata, checked?: boolean): void {\n const toPatch = { required: !!checked } as Partial<FieldMetadata>;\n try {\n this.instance.patchFieldMetadata(field.name, toPatch);\n this.instance.saveDraft();\n this.refresh();\n this.isDirty$.next(true);\n } catch {}\n }\n\n toggleReadOnly(field: FieldMetadata, checked?: boolean): void {\n const toPatch = { readOnly: !!checked } as Partial<FieldMetadata>;\n try {\n this.instance.patchFieldMetadata(field.name, toPatch);\n this.instance.saveDraft();\n this.refresh();\n this.isDirty$.next(true);\n } catch {}\n }\n\n toggleDisabled(field: FieldMetadata, checked?: boolean): void {\n const toPatch = { disabled: !!checked } as Partial<FieldMetadata>;\n try {\n this.instance.patchFieldMetadata(field.name, toPatch);\n this.instance.saveDraft();\n this.refresh();\n this.isDirty$.next(true);\n } catch {}\n }\n\n updateActionField(\n key: 'submit' | 'cancel' | 'reset',\n field: keyof FormActionButton,\n value: any,\n ): void {\n const current = this.actionsModel[key];\n this.actionsModel = {\n ...this.actionsModel,\n [key]: {\n ...current,\n [field]: value,\n },\n };\n this.applyConfigPatch({ actions: this.actionsModel });\n }\n\n updateActionsLayout(\n field: 'position' | 'orientation' | 'spacing' | 'sticky' | 'divider' | 'placement',\n value: any,\n ): void {\n this.actionsModel = {\n ...this.actionsModel,\n [field]: value,\n };\n this.applyConfigPatch({ actions: this.actionsModel });\n }\n\n addCustomAction(): void {\n const nextId = this.generateCustomId();\n const nextAction = makeAction({ id: nextId, label: 'Ação' });\n const custom = [...(this.actionsModel.custom || []), nextAction];\n this.actionsModel = { ...this.actionsModel, custom };\n this.applyConfigPatch({ actions: this.actionsModel });\n }\n\n removeCustomAction(action: FormActionButton): void {\n const custom = (this.actionsModel.custom || []).filter((item) => item !== action);\n this.actionsModel = { ...this.actionsModel, custom };\n this.applyConfigPatch({ actions: this.actionsModel });\n }\n\n updateCustomActionField(action: FormActionButton, field: keyof FormActionButton, value: any): void {\n const custom = (this.actionsModel.custom || []).map((item) => {\n if (item !== action) return item;\n return { ...item, [field]: value };\n });\n this.actionsModel = { ...this.actionsModel, custom };\n this.applyConfigPatch({ actions: this.actionsModel });\n }\n\n updateMessage(key: keyof FormMessagesLayout, value: string): void {\n this.messagesModel = {\n ...this.messagesModel,\n [key]: value,\n };\n this.applyConfigPatch({ messages: this.messagesModel });\n }\n\n updateConfirmation(key: 'submit' | 'cancel' | 'reset', value: string): void {\n this.messagesModel = {\n ...this.messagesModel,\n confirmations: {\n ...(this.messagesModel.confirmations || {}),\n [key]: value,\n },\n };\n this.applyConfigPatch({ messages: this.messagesModel });\n }\n\n updateLoading(key: 'submit' | 'cancel' | 'reset', value: string): void {\n this.messagesModel = {\n ...this.messagesModel,\n loading: {\n ...(this.messagesModel.loading || {}),\n [key]: value,\n },\n };\n this.applyConfigPatch({ messages: this.messagesModel });\n }\n\n updateCustomMessage(action: FormActionButton, kind: 'success' | 'error' | 'confirmation', value: string): void {\n const actionId = action.id || '';\n this.messagesModel = {\n ...this.messagesModel,\n customActions: {\n ...(this.messagesModel.customActions || {}),\n [actionId]: {\n ...(this.messagesModel.customActions || {})[actionId],\n [kind]: value,\n },\n },\n };\n this.applyConfigPatch({ messages: this.messagesModel });\n }\n\n updateBehavior(key: keyof FormBehaviorLayout, value: any): void {\n this.behaviorModel = {\n ...this.behaviorModel,\n [key]: value,\n };\n this.applyConfigPatch({ behavior: this.behaviorModel });\n }\n\n updateHints(scope: 'dataModes' | 'uiModes', key: string, value: string): void {\n this.hintsModel = {\n ...this.hintsModel,\n [scope]: {\n ...this.hintsModel[scope],\n [key]: value,\n },\n };\n this.applyConfigPatch({ hints: this.hintsModel });\n }\n\n hookLabel(stage: FormHookStage): string {\n const map: Record<FormHookStage, string> = {\n beforeInit: 'beforeInit',\n afterInit: 'afterInit',\n beforeValidate: 'beforeValidate',\n afterValidate: 'afterValidate',\n beforeSubmit: 'beforeSubmit',\n afterSubmit: 'afterSubmit',\n onError: 'onError',\n };\n return map[stage] || stage;\n }\n\n onHookTextChange(stage: FormHookStage, value: string): void {\n this.hooksText = { ...this.hooksText, [stage]: value };\n }\n\n resetHooks(): void {\n this.hooksText = buildHooksText(this.instance.currentConfig.hooks);\n this.hooksErrors = {};\n }\n\n applyHooks(): void {\n const next: FormHooksLayout = {};\n const errors: Partial<Record<FormHookStage, string>> = {};\n\n for (const stage of this.hookStages) {\n const raw = (this.hooksText[stage] || '').trim();\n if (!raw) continue;\n try {\n const parsed = JSON.parse(raw);\n if (!Array.isArray(parsed)) {\n errors[stage] = 'Precisa ser um array JSON.';\n continue;\n }\n next[stage] = parsed;\n } catch {\n errors[stage] = 'JSON inválido.';\n }\n }\n\n this.hooksErrors = errors;\n if (Object.keys(errors).length > 0) {\n return;\n }\n\n this.applyConfigPatch({ hooks: next });\n }\n\n onRulesTextChange(value: string): void {\n this.formRulesText = value;\n }\n\n onRulesStateTextChange(value: string): void {\n this.formRulesStateText = value;\n }\n\n applyRules(): void {\n this.formRulesError = '';\n this.formRulesStateError = '';\n\n let rules: FormLayoutRule[] | undefined;\n let rulesState: unknown | undefined;\n\n const rulesRaw = this.formRulesText.trim();\n if (rulesRaw) {\n try {\n const parsed = JSON.parse(rulesRaw);\n if (!Array.isArray(parsed)) {\n this.formRulesError = 'formRules precisa ser um array JSON.';\n return;\n }\n rules = parsed as FormLayoutRule[];\n } catch {\n this.formRulesError = 'JSON inválido em formRules.';\n return;\n }\n }\n\n const stateRaw = this.formRulesStateText.trim();\n if (stateRaw) {\n try {\n rulesState = JSON.parse(stateRaw);\n } catch {\n this.formRulesStateError = 'JSON inválido em formRulesState.';\n return;\n }\n }\n\n this.applyConfigPatch({ formRules: rules, formRulesState: rulesState });\n }\n\n applyCascadePatch(patch: Record<string, Partial<FieldDefinition>>): void {\n const entries = Object.entries(patch || {});\n if (!entries.length) {\n return;\n }\n for (const [fieldName, fieldPatch] of entries) {\n try {\n this.instance.patchFieldMetadata(fieldName, fieldPatch as Partial<FieldMetadata>);\n } catch {}\n }\n try {\n this.instance.saveDraft();\n this.refresh();\n this.isDirty$.next(true);\n } catch {}\n }\n\n get cascadeFields(): Array<FieldDefinition | FieldMetadata> {\n return this.instance.currentConfig.fieldMetadata || [];\n }\n\n getSettingsValue(): any {\n return {\n fieldStates: (this.instance.currentConfig.fieldMetadata || []).map((f) => ({\n name: f.name,\n hidden: !!f.hidden,\n required: !!f.required,\n readOnly: !!f.readOnly,\n disabled: !!f.disabled,\n })),\n actions: deepClone(this.actionsModel),\n messages: deepClone(this.messagesModel),\n behavior: deepClone(this.behaviorModel),\n hints: deepClone(this.hintsModel),\n hooks: deepClone(this.instance.currentConfig.hooks || {}),\n formRules: deepClone(this.instance.currentConfig.formRules || []),\n formRulesState: deepClone(this.instance.currentConfig.formRulesState),\n };\n }\n\n onSave(): any {\n const value = this.getSettingsValue();\n // Consider changes persisted via saveDraft; mark clean so buttons desativem se reabrir\n this.isDirty$.next(false);\n return value;\n }\n\n private refresh(): void {\n this.all = (this.instance.currentConfig.fieldMetadata || []).map(f => ({ ...f }));\n this.actionsModel = this.normalizeActions(this.instance.currentConfig.actions);\n this.messagesModel = deepClone(this.instance.currentConfig.messages || {});\n this.behaviorModel = deepClone(this.instance.currentConfig.behavior || {});\n this.hintsModel = createHints(this.instance.currentConfig.hints);\n this.hooksText = buildHooksText(this.instance.currentConfig.hooks);\n this.formRulesText = stringifyJson(this.instance.currentConfig.formRules, true);\n this.formRulesStateText = stringifyJson(this.instance.currentConfig.formRulesState, false);\n this.applyFilter();\n }\n\n private normalizeActions(source?: FormActionsLayout | null): FormActionsLayout {\n const base = deepClone(DEFAULT_ACTIONS);\n if (!source) {\n return base;\n }\n\n return {\n submit: mergeAction(base.submit, source.submit),\n cancel: mergeAction(base.cancel, source.cancel),\n reset: mergeAction(base.reset, source.reset),\n custom: source.custom ? source.custom.map((item, index) => makeAction(item, index)) : base.custom,\n position: source.position ?? base.position,\n orientation: source.orientation ?? base.orientation,\n spacing: source.spacing ?? base.spacing,\n sticky: source.sticky ?? base.sticky,\n divider: source.divider ?? base.divider,\n placement: source.placement ?? base.placement,\n mobile: source.mobile ?? base.mobile,\n containerClassName: source.containerClassName ?? base.containerClassName,\n containerStyles: source.containerStyles ?? base.containerStyles,\n showSaveButton: source.showSaveButton ?? base.showSaveButton,\n submitButtonLabel: source.submitButtonLabel ?? base.submitButtonLabel,\n showCancelButton: source.showCancelButton ?? base.showCancelButton,\n cancelButtonLabel: source.cancelButtonLabel ?? base.cancelButtonLabel,\n showResetButton: source.showResetButton ?? base.showResetButton,\n resetButtonLabel: source.resetButtonLabel ?? base.resetButtonLabel,\n };\n }\n\n private applyConfigPatch(\n patch: Partial<{\n actions: FormActionsLayout;\n messages: FormMessagesLayout;\n behavior: FormBehaviorLayout;\n hints: FormHints;\n hooks: FormHooksLayout;\n formRules: FormLayoutRule[] | undefined;\n formRulesState: unknown;\n }>,\n ): void {\n try {\n const config = deepClone(this.instance.currentConfig);\n const next = { ...config, ...patch };\n this.instance.replaceConfig(next);\n this.instance.saveDraft();\n this.refresh();\n this.isDirty$.next(true);\n } catch {}\n }\n\n private generateCustomId(): string {\n const existing = new Set((this.actionsModel.custom || []).map((item) => item.id).filter(Boolean) as string[]);\n let counter = existing.size + 1;\n let next = `custom-${counter}`;\n while (existing.has(next)) {\n counter += 1;\n next = `custom-${counter}`;\n }\n return next;\n }\n}\n\nconst DEFAULT_ACTIONS: FormActionsLayout = {\n submit: makeAction({ id: 'submit', label: 'Salvar', visible: true, type: 'submit', color: 'primary' }),\n cancel: makeAction({ id: 'cancel', label: 'Cancelar', visible: false, type: 'button' }),\n reset: makeAction({ id: 'reset', label: 'Restaurar', visible: true, type: 'reset' }),\n custom: [],\n position: 'right',\n orientation: 'horizontal',\n spacing: 'normal',\n};\n\nfunction makeAction(action: Partial<FormActionButton>, index?: number): FormActionButton {\n const fallbackId = typeof index === 'number' ? `custom-${index + 1}` : 'action';\n return {\n id: action.id ?? fallbackId,\n label: action.label ?? 'Ação',\n visible: action.visible !== false,\n type: action.type ?? 'button',\n color: action.color,\n disabled: action.disabled,\n icon: action.icon,\n action: action.action,\n tooltip: action.tooltip,\n variant: action.variant,\n size: action.size,\n loading: action.loading,\n shortcut: action.shortcut,\n };\n}\n\nfunction mergeAction(base: FormActionButton, override?: FormActionButton): FormActionButton {\n if (!override) {\n return base;\n }\n return {\n ...base,\n ...override,\n visible: override.visible !== undefined ? override.visible : base.visible,\n };\n}\n\ninterface FormHints {\n dataModes: { create: string; edit: string; view: string };\n uiModes: { presentation: string; readonly: string; disabled: string; visible: string };\n}\n\nfunction createDefaultHints(): FormHints {\n return {\n dataModes: { create: '', edit: '', view: '' },\n uiModes: { presentation: '', readonly: '', disabled: '', visible: '' },\n };\n}\n\nfunction createHints(source: FormHints | undefined): FormHints {\n if (!source) {\n return createDefaultHints();\n }\n return {\n dataModes: {\n create: source.dataModes?.create ?? '',\n edit: source.dataModes?.edit ?? '',\n view: source.dataModes?.view ?? '',\n },\n uiModes: {\n presentation: source.uiModes?.presentation ?? '',\n readonly: source.uiModes?.readonly ?? '',\n disabled: source.uiModes?.disabled ?? '',\n visible: source.uiModes?.visible ?? '',\n },\n };\n}\n\nfunction createDefaultHooksText(): Record<FormHookStage, string> {\n return {\n beforeInit: '[]',\n afterInit: '[]',\n beforeValidate: '[]',\n afterValidate: '[]',\n beforeSubmit: '[]',\n afterSubmit: '[]',\n onError: '[]',\n };\n}\n\nfunction buildHooksText(source?: FormHooksLayout): Record<FormHookStage, string> {\n const base = createDefaultHooksText();\n if (!source) return base;\n for (const stage of Object.keys(base) as FormHookStage[]) {\n const list = source[stage];\n base[stage] = list && list.length ? JSON.stringify(list, null, 2) : '[]';\n }\n return base;\n}\n\nfunction stringifyJson(value: unknown, pretty: boolean): string {\n if (value === undefined) return '';\n try {\n return JSON.stringify(value, null, pretty ? 2 : 0);\n } catch {\n return '';\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n computed,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type ManualFormDocExampleTab = 'live' | 'template' | 'ts' | 'config';\nexport type ManualFormDocExampleLevel = 'Basico' | 'Intermediario' | 'Avancado';\n\ninterface DocExampleTabOption {\n id: ManualFormDocExampleTab;\n label: string;\n hint: string;\n}\n\nlet nextDocExampleId = 0;\n\n@Component({\n selector: 'praxis-manual-form-doc-example',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './manual-form-doc-example.component.html',\n styleUrl: './manual-form-doc-example.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ManualFormDocExampleComponent implements OnDestroy {\n readonly title = input('Exemplo didatico');\n readonly subtitle = input<string | null>(null);\n readonly level = input<ManualFormDocExampleLevel>('Basico');\n\n readonly bannerTitle = input<string | null>(null);\n readonly bannerDescription = input<string | null>(null);\n\n readonly templateCode = input('');\n readonly tsCode = input('');\n readonly configCode = input('');\n\n readonly customizationEnabled = input(false);\n readonly showCustomizationToggle = input(true);\n\n readonly important = input<string | null>(null);\n readonly note = input<string | null>(null);\n readonly tip = input<string | null>(null);\n\n readonly activeTab = signal<ManualFormDocExampleTab>('live');\n readonly copyStatus = signal('');\n\n readonly tabs: ReadonlyArray<DocExampleTabOption> = [\n { id: 'live', label: 'Live', hint: 'Renderizacao do exemplo' },\n { id: 'template', label: 'Template', hint: 'Markup HTML do exemplo' },\n { id: 'ts', label: 'TS', hint: 'Logica e estado do host' },\n { id: 'config', label: 'Config', hint: 'JSON de configuracao do componente' },\n ];\n\n readonly selectedSnippet = computed(() => {\n switch (this.activeTab()) {\n case 'template':\n return this.templateCode();\n case 'ts':\n return this.tsCode();\n case 'config':\n return this.configCode();\n default:\n return '';\n }\n });\n\n readonly selectedSnippetLabel = computed(() => {\n switch (this.activeTab()) {\n case 'template':\n return 'Template';\n case 'ts':\n return 'TypeScript';\n case 'config':\n return 'Config';\n default:\n return 'Live';\n }\n });\n\n readonly canCopySnippet = computed(() => this.selectedSnippet().trim().length > 0);\n\n readonly tabChange = output<ManualFormDocExampleTab>();\n readonly customizationEnabledChange = output<boolean>();\n readonly codeCopied = output<{ tab: ManualFormDocExampleTab; success: boolean }>();\n\n readonly idPrefix = `pdx-manual-form-doc-example-${nextDocExampleId++}`;\n\n private copyStatusTimer: ReturnType<typeof setTimeout> | null = null;\n\n ngOnDestroy(): void {\n this.clearCopyStatusTimer();\n }\n\n setTab(tab: ManualFormDocExampleTab): void {\n if (this.activeTab() === tab) {\n return;\n }\n\n this.activeTab.set(tab);\n this.setCopyStatus('');\n this.tabChange.emit(tab);\n }\n\n toggleCustomization(): void {\n this.customizationEnabledChange.emit(!this.customizationEnabled());\n }\n\n tabId(tab: ManualFormDocExampleTab): string {\n return `${this.idPrefix}-tab-${tab}`;\n }\n\n panelId(tab: ManualFormDocExampleTab): string {\n return `${this.idPrefix}-panel-${tab}`;\n }\n\n async copyActiveSnippet(): Promise<void> {\n const tab = this.activeTab();\n const content = this.selectedSnippet();\n if (!content.trim()) {\n this.setCopyStatus('Sem conteudo para copiar');\n this.codeCopied.emit({ tab, success: false });\n return;\n }\n\n try {\n const clipboard = globalThis.navigator?.clipboard;\n if (!clipboard?.writeText) {\n this.setCopyStatus('Clipboard indisponivel');\n this.codeCopied.emit({ tab, success: false });\n return;\n }\n await clipboard.writeText(content);\n this.setCopyStatus('Copiado');\n this.codeCopied.emit({ tab, success: true });\n } catch {\n this.setCopyStatus('Falha ao copiar');\n this.codeCopied.emit({ tab, success: false });\n }\n }\n\n private setCopyStatus(status: string): void {\n this.copyStatus.set(status);\n this.clearCopyStatusTimer();\n if (status) {\n this.copyStatusTimer = setTimeout(() => this.copyStatus.set(''), 1800);\n }\n }\n\n private clearCopyStatusTimer(): void {\n if (this.copyStatusTimer) {\n clearTimeout(this.copyStatusTimer);\n this.copyStatusTimer = null;\n }\n }\n}\n","<section class=\"doc-example\" [attr.data-level]=\"level()\">\n @if (bannerTitle() || bannerDescription()) {\n <header class=\"doc-example__banner\">\n <div class=\"doc-example__banner-copy\">\n @if (bannerTitle()) {\n <h2>{{ bannerTitle() }}</h2>\n }\n @if (bannerDescription()) {\n <p>{{ bannerDescription() }}</p>\n }\n </div>\n <div class=\"doc-example__banner-art\">\n <ng-content select=\"[exampleBannerArtwork]\"></ng-content>\n </div>\n </header>\n }\n\n <div class=\"doc-example__summary\">\n <div class=\"doc-example__summary-main\">\n <span class=\"badge badge--level\">{{ level() }}</span>\n <h3>{{ title() }}</h3>\n @if (subtitle()) {\n <p>{{ subtitle() }}</p>\n }\n </div>\n\n @if (showCustomizationToggle()) {\n <button\n type=\"button\"\n class=\"mode-toggle\"\n [attr.aria-pressed]=\"customizationEnabled()\"\n [attr.aria-label]=\"customizationEnabled() ? 'Desligar modo de customizacao' : 'Ligar modo de customizacao'\"\n (click)=\"toggleCustomization()\"\n >\n {{ customizationEnabled() ? 'Customizacao: ligada' : 'Customizacao: desligada' }}\n </button>\n }\n </div>\n\n <p class=\"sr-only\" [attr.id]=\"idPrefix + '-tabs-help'\">\n Escolha entre visualizacao live, template, TypeScript ou config do exemplo.\n </p>\n\n <div class=\"doc-example__tabs\" role=\"tablist\" [attr.aria-describedby]=\"idPrefix + '-tabs-help'\">\n @for (tab of tabs; track tab.id) {\n <button\n type=\"button\"\n role=\"tab\"\n class=\"doc-example__tab\"\n [class.is-active]=\"activeTab() === tab.id\"\n [attr.id]=\"tabId(tab.id)\"\n [attr.aria-controls]=\"panelId(tab.id)\"\n [attr.aria-selected]=\"activeTab() === tab.id\"\n [attr.aria-label]=\"tab.label + ': ' + tab.hint\"\n (click)=\"setTab(tab.id)\"\n >\n {{ tab.label }}\n </button>\n }\n </div>\n\n <section\n class=\"doc-example__panel\"\n role=\"tabpanel\"\n [attr.id]=\"panelId(activeTab())\"\n [attr.aria-labelledby]=\"tabId(activeTab())\"\n >\n @if (activeTab() === 'live') {\n <div class=\"doc-example__live\">\n <ng-content select=\"[exampleLive]\"></ng-content>\n </div>\n } @else {\n <div class=\"doc-example__code-toolbar\">\n <span class=\"doc-example__code-label\">{{ selectedSnippetLabel() }}</span>\n <button type=\"button\" class=\"copy-btn\" [disabled]=\"!canCopySnippet()\" (click)=\"copyActiveSnippet()\">\n Copiar\n </button>\n @if (copyStatus()) {\n <span class=\"copy-status\" aria-live=\"polite\">{{ copyStatus() }}</span>\n }\n </div>\n <pre class=\"doc-example__code\"><code>{{ selectedSnippet() }}</code></pre>\n }\n </section>\n\n <ng-content select=\"[exampleDiagram]\"></ng-content>\n\n @if (important() || note() || tip()) {\n <div class=\"doc-example__callouts\">\n @if (important()) {\n <p class=\"callout callout--important\"><strong>IMPORTANTE:</strong> {{ important() }}</p>\n }\n @if (note()) {\n <p class=\"callout callout--note\"><strong>NOTA:</strong> {{ note() }}</p>\n }\n @if (tip()) {\n <p class=\"callout callout--tip\"><strong>DICA:</strong> {{ tip() }}</p>\n }\n </div>\n }\n</section>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, signal } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { of } from 'rxjs';\n\nimport { API_URL, ASYNC_CONFIG_STORAGE, AsyncConfigStorage } from '@praxisui/core';\n\nimport { ManualFormComponent } from '../components/manual-form/manual-form.component';\nimport { ManualFormDocExampleComponent } from '../components/manual-form-doc-example/manual-form-doc-example.component';\n\nclass DocExampleMemoryStorage implements AsyncConfigStorage {\n private readonly map = new Map<string, unknown>();\n\n loadConfig<T>(key: string) {\n return of((this.map.get(key) as T | null) ?? null);\n }\n\n saveConfig<T>(key: string, config: T) {\n this.map.set(key, config);\n return of(void 0);\n }\n\n clearConfig(key: string) {\n this.map.delete(key);\n return of(void 0);\n }\n}\n\n@Component({\n selector: 'praxis-manual-form-doc-example-showcase',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, ManualFormComponent, ManualFormDocExampleComponent],\n template: `\n <praxis-manual-form-doc-example\n title=\"Cadastro de cargo com preview live\"\n subtitle=\"Exemplo live com abas para implementação.\"\n level=\"Intermediario\"\n bannerTitle=\"Explore o formulário antes da teoria\"\n bannerDescription=\"Interaja no live e abra código apenas quando precisar.\"\n [templateCode]=\"templateSnippet\"\n [tsCode]=\"tsSnippet\"\n [configCode]=\"configSnippet\"\n [customizationEnabled]=\"customizationEnabled()\"\n important=\"Comece pelo live para reduzir friccao de onboarding.\"\n note=\"As abas preservam o estado atual do formulario.\"\n tip=\"Use o toggle para validar variacoes de host sem recarregar.\"\n (customizationEnabledChange)=\"setCustomizationEnabled($event)\"\n >\n <div exampleBannerArtwork class=\"showcase-art\" aria-hidden=\"true\">\n <div class=\"showcase-art__chip\">Live</div>\n <div class=\"showcase-art__chip\">Template</div>\n <div class=\"showcase-art__chip\">TS</div>\n <div class=\"showcase-art__chip\">Config</div>\n </div>\n\n <div exampleLive class=\"showcase-live\">\n <p class=\"showcase-mode\" [class.showcase-mode--enabled]=\"customizationEnabled()\">\n Customizacao no host: {{ customizationEnabled() ? 'ligada' : 'desligada' }}\n </p>\n\n <praxis-manual-form\n [formGroup]=\"form\"\n formId=\"doc-example-cargo\"\n formTitle=\"Cadastro de cargo\"\n formDescription=\"Exemplo simples com campos nativos para documentacao.\"\n [showActions]=\"false\"\n [editModeEnabled]=\"false\"\n >\n <label class=\"showcase-field\">\n <span>Nome</span>\n <input type=\"text\" formControlName=\"nome\" placeholder=\"Ex.: Analista de Dados\" />\n </label>\n\n <label class=\"showcase-field\">\n <span>Descricao</span>\n <textarea formControlName=\"descricao\" rows=\"3\" placeholder=\"Resumo das responsabilidades\"></textarea>\n </label>\n </praxis-manual-form>\n </div>\n\n <div exampleDiagram class=\"showcase-diagram\">\n <ol>\n <li>Preencha o formulario e valide comportamento dos campos.</li>\n <li>Abra a aba necessaria: Template, TS ou Config.</li>\n <li>Alterne customizacao para comparar o comportamento do host.</li>\n </ol>\n </div>\n </praxis-manual-form-doc-example>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n .showcase-art {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n }\n\n .showcase-art__chip {\n border-radius: 999px;\n padding: 4px 8px;\n font-size: 11px;\n font-weight: 700;\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline, #98a3af) 50%, #d7dde3);\n background: color-mix(in srgb, var(--md-sys-color-primary, #00796b) 14%, #ffffff);\n color: var(--md-sys-color-on-surface, #151b22);\n }\n\n .showcase-live {\n display: grid;\n gap: 12px;\n }\n\n .showcase-mode {\n margin: 0;\n border-radius: 10px;\n border: 1px solid #d6dde4;\n background: #f6f8fb;\n padding: 8px 10px;\n color: #3b4651;\n font-size: 13px;\n }\n\n .showcase-mode--enabled {\n border-color: #5ebdb0;\n background: #e9f9f5;\n color: #075146;\n }\n\n .showcase-field {\n display: grid;\n gap: 6px;\n }\n\n .showcase-field span {\n font-size: 13px;\n font-weight: 600;\n }\n\n .showcase-field input,\n .showcase-field textarea {\n width: 100%;\n border-radius: 8px;\n border: 1px solid #c8d2dc;\n padding: 9px 10px;\n font: inherit;\n color: #1a222b;\n background: #ffffff;\n }\n\n .showcase-field input:focus-visible,\n .showcase-field textarea:focus-visible {\n outline: 2px solid #2d7f73;\n outline-offset: 1px;\n }\n\n .showcase-diagram {\n border-radius: 12px;\n border: 1px dashed #bdd0db;\n background: #f8fbff;\n padding: 12px 14px;\n }\n\n .showcase-diagram ol {\n margin: 0;\n padding-left: 20px;\n display: grid;\n gap: 6px;\n }\n `,\n ],\n providers: [\n { provide: API_URL, useValue: { default: { baseUrl: '/api' } } },\n { provide: ASYNC_CONFIG_STORAGE, useFactory: () => new DocExampleMemoryStorage() },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ManualFormDocExampleShowcaseComponent {\n readonly customizationEnabled = signal(false);\n readonly form = new FormGroup({\n nome: new FormControl('', { nonNullable: true, validators: [Validators.required] }),\n descricao: new FormControl('', { nonNullable: true }),\n });\n\n readonly templateSnippet = `<praxis-manual-form [formGroup]=\"form\" formId=\"doc-example-cargo\">\n <label>\n <span>Nome</span>\n <input type=\"text\" formControlName=\"nome\" />\n </label>\n\n <label>\n <span>Descricao</span>\n <textarea formControlName=\"descricao\" rows=\"3\"></textarea>\n </label>\n</praxis-manual-form>`;\n\n readonly tsSnippet = `readonly customizationEnabled = signal(false);\n\nreadonly form = new FormGroup({\n nome: new FormControl('', { nonNullable: true, validators: [Validators.required] }),\n descricao: new FormControl('', { nonNullable: true }),\n});\n\nsetCustomizationEnabled(enabled: boolean): void {\n this.customizationEnabled.set(enabled);\n}`;\n\n readonly configSnippet = `{\n \"component\": \"praxis-manual-form-doc-example\",\n \"tabs\": [\"live\", \"template\", \"ts\", \"config\"],\n \"defaultTab\": \"live\",\n \"level\": \"Intermediario\"\n}`;\n\n setCustomizationEnabled(enabled: boolean): void {\n this.customizationEnabled.set(enabled);\n }\n}\n","import { Directive, Input, OnChanges, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core';\n\nimport { ManualFormInstance } from '../stores/manual-form-instance';\nimport { FieldMetadata } from '@praxisui/core';\n\ninterface ManualFieldContext {\n $implicit: FieldMetadata | undefined;\n metadata: FieldMetadata | undefined;\n fieldName: string;\n}\n\n@Directive({\n selector: '[praxisManualField]',\n standalone: true,\n})\nexport class ManualFieldDirective implements OnChanges {\n @Input('praxisManualField') fieldName!: string;\n @Input('praxisManualFieldInstance') instance!: ManualFormInstance;\n\n constructor(\n private readonly templateRef: TemplateRef<ManualFieldContext>,\n private readonly viewContainer: ViewContainerRef,\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if ('fieldName' in changes || 'instance' in changes) {\n this.render();\n }\n }\n\n private render(): void {\n this.viewContainer.clear();\n if (!this.instance || !this.fieldName) {\n return;\n }\n\n const metadata = this.instance.getFieldMetadata(this.fieldName);\n const context: ManualFieldContext = {\n $implicit: metadata,\n metadata,\n fieldName: this.fieldName,\n };\n this.viewContainer.createEmbeddedView(this.templateRef, context);\n }\n}\n\n","import { Directive, HostListener, Input, inject } from '@angular/core';\n\nimport { ManualFormComponent } from '../components/manual-form/manual-form.component';\n\n/**\n * Attach to any field inside <praxis-manual-form> to open the metadata editor\n * on double click, respecting the form's editModeEnabled state.\n *\n * Usage:\n * <pdx-text-input pdxManualEdit=\"nome\" ...></pdx-text-input>\n */\n@Directive({\n selector: '[pdxManualEdit]',\n standalone: true,\n})\nexport class ManualFieldEditorOnDblclickDirective {\n @Input('pdxManualEdit') fieldName!: string;\n\n private readonly manualForm = inject(ManualFormComponent, { optional: true });\n\n @HostListener('dblclick')\n onDblClick(): void {\n if (!this.fieldName) return;\n this.manualForm?.tryOpenFieldEditor(this.fieldName);\n }\n}\n\n","/*\n * Public API Surface of praxis-manual-form\n */\n\nexport * from './lib/models/manual-form.types';\nexport * from './lib/seeds/manual-form.seed';\nexport * from './lib/stores/manual-form-instance';\nexport * from './lib/components/manual-form-header/manual-form-header.component';\nexport * from './lib/components/manual-form-actions/manual-form-actions.component';\nexport * from './lib/components/manual-form/manual-form.component';\nexport * from './lib/components/manual-form-config-editor/manual-form-config-editor.component';\nexport * from './lib/components/manual-form-doc-example/manual-form-doc-example.component';\nexport * from './lib/examples/manual-form-doc-example-showcase.component';\nexport * from './lib/directives/manual-field.directive';\nexport * from './lib/directives/manual-field-editor-on-dblclick.directive';\nexport * from './lib/services/manual-field-metadata-bridge.service';\nexport * from './lib/services/manual-field-key.service';\nexport * from './lib/tokens/manual-form.tokens';\nexport * from './lib/ai/manual-form-ai-capabilities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DEFAULT_ACTIONS","mergeAction","makeAction"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"praxisui-manual-form.mjs","sources":["../../../projects/praxis-manual-form/src/lib/utils/clone.util.ts","../../../projects/praxis-manual-form/src/lib/seeds/manual-form.seed.ts","../../../projects/praxis-manual-form/src/lib/stores/manual-form-instance.ts","../../../projects/praxis-manual-form/src/lib/components/manual-form-header/manual-form-header.component.ts","../../../projects/praxis-manual-form/src/lib/components/manual-form-actions/manual-form-actions.component.ts","../../../projects/praxis-manual-form/src/lib/ai/manual-form-ai-capabilities.ts","../../../projects/praxis-manual-form/src/lib/ai/manual-form-ai.adapter.ts","../../../projects/praxis-manual-form/src/lib/tokens/manual-form.tokens.ts","../../../projects/praxis-manual-form/src/lib/services/manual-field-metadata-bridge.service.ts","../../../projects/praxis-manual-form/src/lib/services/manual-field-key.service.ts","../../../projects/praxis-manual-form/src/lib/components/manual-field-toolbar/manual-field-toolbar.component.ts","../../../projects/praxis-manual-form/src/lib/components/manual-form/manual-form.component.ts","../../../projects/praxis-manual-form/src/lib/components/manual-form/manual-form.component.html","../../../projects/praxis-manual-form/src/lib/components/manual-form-config-editor/manual-form-config-editor.component.ts","../../../projects/praxis-manual-form/src/lib/components/manual-form-doc-example/manual-form-doc-example.component.ts","../../../projects/praxis-manual-form/src/lib/components/manual-form-doc-example/manual-form-doc-example.component.html","../../../projects/praxis-manual-form/src/lib/examples/manual-form-doc-example-showcase.component.ts","../../../projects/praxis-manual-form/src/lib/directives/manual-field.directive.ts","../../../projects/praxis-manual-form/src/lib/directives/manual-field-editor-on-dblclick.directive.ts","../../../projects/praxis-manual-form/src/public-api.ts","../../../projects/praxis-manual-form/src/praxisui-manual-form.ts"],"sourcesContent":["export function deepClone<T>(value: T): T {\n if (typeof (globalThis as any)?.structuredClone === 'function') {\n return (globalThis as any).structuredClone(value);\n }\n\n try {\n return JSON.parse(JSON.stringify(value)) as T;\n } catch {\n if (Array.isArray(value)) {\n return value.slice() as unknown as T;\n }\n if (value && typeof value === 'object') {\n return { ...(value as Record<string, unknown>) } as T;\n }\n return value;\n }\n}\n\n","import { ensureIds, FormConfig, FieldMetadata } from '@praxisui/core';\n\nimport { deepClone } from '../utils/clone.util';\nimport {\n ManualFieldMetadataMap,\n ManualFormId,\n ManualFormSeed,\n} from '../models/manual-form.types';\n\nexport interface ManualFormSeedOptions {\n source?: ManualFormSeed['source'];\n version?: string;\n context?: Record<string, any>;\n}\n\nexport function createManualFormSeed(\n formId: ManualFormId,\n config: FormConfig,\n options: ManualFormSeedOptions = {},\n): ManualFormSeed {\n const cloned = deepClone(config);\n const normalized = ensureIds(cloned);\n normalized.fieldMetadata = (normalized.fieldMetadata || []).map((fm) => ({ ...fm }));\n\n return {\n formId,\n config: normalized,\n source: options.source ?? 'local',\n version: options.version ?? normalized.metadata?.version,\n context: options.context,\n };\n}\n\nexport function toFieldMetadataMap(\n fieldMetadata: FieldMetadata[] | undefined,\n): ManualFieldMetadataMap {\n const map: ManualFieldMetadataMap = new Map();\n for (const meta of fieldMetadata || []) {\n if (!meta?.name) continue;\n map.set(meta.name, { ...meta });\n }\n return map;\n}\n","import { inject, Injectable, Optional, Inject } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport {\n ASYNC_CONFIG_STORAGE,\n AsyncConfigStorage,\n DynamicFormService,\n FieldMetadata,\n FormConfig,\n} from '@praxisui/core';\n\nimport { deepClone } from '../utils/clone.util';\nimport {\n ManualFieldMetadataMap,\n ManualFormId,\n ManualFormPersistenceOptions,\n ManualFormSeed,\n ManualFormSnapshot,\n ManualFormState,\n} from '../models/manual-form.types';\nimport { toFieldMetadataMap } from '../seeds/manual-form.seed';\n\ninterface PersistPayload extends ManualFormSnapshot {\n version?: string;\n}\n\n/**\n * Runtime instance that keeps manual form configuration, metadata and\n * FormGroup in sync. The instance is created through the factory below so the\n * host applications do not need to manage storage or dynamic form services.\n */\nexport class ManualFormInstance {\n private readonly formConfig$: BehaviorSubject<FormConfig>;\n private readonly fieldMetadata$: BehaviorSubject<ManualFieldMetadataMap>;\n private readonly state$: BehaviorSubject<ManualFormState>;\n private readonly formGroup: FormGroup;\n private readonly boundComponents = new Map<string, unknown>();\n\n constructor(\n private readonly formId: ManualFormId,\n private readonly seed: ManualFormSeed,\n initialConfig: FormConfig,\n private readonly dynamicFormService: DynamicFormService,\n private readonly storage?: AsyncConfigStorage,\n private readonly persistenceOptions?: ManualFormPersistenceOptions,\n externalForm?: FormGroup,\n ) {\n const configClone = deepClone(initialConfig);\n const metadataMap = toFieldMetadataMap(configClone.fieldMetadata);\n\n this.formConfig$ = new BehaviorSubject<FormConfig>(configClone);\n this.fieldMetadata$ = new BehaviorSubject<ManualFieldMetadataMap>(metadataMap);\n if (externalForm) {\n this.formGroup = externalForm;\n // Ensure controls exist and match metadata on the provided form\n this.cloneFieldMetadata(metadataMap).forEach((meta) => {\n try {\n this.dynamicFormService.updateControlFromMetadata(this.formGroup, meta, {\n emitEvent: false,\n });\n } catch {\n /* ignore */\n }\n });\n } else {\n this.formGroup = this.dynamicFormService.createFormGroupFromMetadata(\n this.cloneFieldMetadata(metadataMap),\n );\n }\n this.state$ = new BehaviorSubject<ManualFormState>({\n formId: this.formId,\n config: deepClone(configClone),\n fields: this.cloneFieldMetadata(metadataMap),\n });\n }\n\n /** Observable stream for consumers interested in config mutations. */\n get stateChanges$(): Observable<ManualFormState> {\n return this.state$.asObservable();\n }\n\n get formConfigChanges$(): Observable<FormConfig> {\n return this.formConfig$.asObservable();\n }\n\n get fieldMetadataChanges$(): Observable<ManualFieldMetadataMap> {\n return this.fieldMetadata$.asObservable();\n }\n\n /**\n * Emits after field metadata has been applied to the runtime state.\n * Fires on patchFieldMetadata(), replaceConfig(), resetToSeed(), and\n * persisted config loads (when metadata is replaced).\n */\n metadataChanges(): Observable<ManualFieldMetadataMap> {\n return this.fieldMetadata$.asObservable();\n }\n\n get currentConfig(): FormConfig {\n return this.formConfig$.value;\n }\n\n get currentFieldMetadata(): ManualFieldMetadataMap {\n return this.fieldMetadata$.value;\n }\n\n get form(): FormGroup {\n return this.formGroup;\n }\n\n /** Retrieve metadata for a specific field (cloned to avoid mutations). */\n getFieldMetadata(fieldName: string): FieldMetadata | undefined {\n const meta = this.fieldMetadata$.value.get(fieldName);\n return meta ? { ...meta } : undefined;\n }\n\n /**\n * Registers a component instance to receive metadata updates for the\n * specified field. Helpful for manual templates that wish to keep hot-update\n * behaviour without wiring everything manually.\n */\n bindComponent(fieldName: string, componentInstance: unknown): void {\n if (!fieldName || !componentInstance) {\n return;\n }\n this.boundComponents.set(fieldName, componentInstance);\n this.refreshBoundComponent(fieldName);\n }\n\n unbindComponent(fieldName: string): void {\n this.boundComponents.delete(fieldName);\n }\n\n /**\n * Applies a partial metadata patch to a field and propagates the changes to\n * the FormConfig, runtime FormGroup and state streams.\n */\n patchFieldMetadata(fieldName: string, patch: Partial<FieldMetadata>): void {\n const current = this.fieldMetadata$.value.get(fieldName);\n if (!current) {\n return;\n }\n\n const next = this.applyJsonMergePatch(\n current as any,\n patch as any,\n ) as FieldMetadata;\n this.fieldMetadata$.value.set(fieldName, next);\n this.fieldMetadata$.next(new Map(this.fieldMetadata$.value));\n\n const configClone = deepClone(this.formConfig$.value);\n configClone.fieldMetadata = (configClone.fieldMetadata || []).map((fm) =>\n fm.name === fieldName ? { ...next } : fm,\n );\n this.publishConfig(configClone);\n\n try {\n this.dynamicFormService.updateControlFromMetadata(this.formGroup, next, {\n emitEvent: false,\n });\n } catch {\n /* Defensive: control might not exist if form is customised manually. */\n }\n\n this.refreshBoundComponent(fieldName);\n }\n\n /** Replaces the entire FormConfig, typically used after reconciling with backend seeds. */\n replaceConfig(config: FormConfig): void {\n const cloned = deepClone(config);\n this.fieldMetadata$.next(toFieldMetadataMap(cloned.fieldMetadata));\n this.publishConfig(cloned);\n\n const metadataList = this.getFieldMetadataArray();\n // Rebuild controls to ensure validators align with the new metadata.\n metadataList.forEach((meta) => {\n try {\n this.dynamicFormService.updateControlFromMetadata(this.formGroup, meta, {\n emitEvent: false,\n });\n } catch {\n /* ignore */\n }\n });\n\n // Refresh all bound components with the new metadata references.\n for (const fieldName of this.boundComponents.keys()) {\n this.refreshBoundComponent(fieldName);\n }\n }\n\n /** Restores configuration back to the original seed definition. */\n resetToSeed(): void {\n this.replaceConfig(this.seed.config);\n }\n\n /**\n * Persists the current configuration and, optionally, the provided form value\n * using AsyncConfigStorage. By default, stores the FormGroup raw value.\n */\n saveDraft(value: Record<string, any> | null = null): void {\n if (!this.storage) {\n return;\n }\n\n const key = buildStorageKey(this.formId, this.persistenceOptions);\n const payload: PersistPayload = {\n config: deepClone(this.formConfig$.value),\n value: value ?? this.formGroup.getRawValue(),\n metadata: {\n savedAt: new Date().toISOString(),\n savedBy: this.persistenceOptions?.profileId,\n host: this.persistenceOptions?.namespace,\n },\n version: this.seed.version,\n };\n\n this.storage.saveConfig(key, payload).pipe(take(1)).subscribe({ error: () => {} });\n }\n\n private publishConfig(config: FormConfig): void {\n this.formConfig$.next(config);\n this.state$.next({\n formId: this.formId,\n config: deepClone(config),\n fields: this.getFieldMetadataArray(),\n });\n }\n\n private getFieldMetadataArray(): FieldMetadata[] {\n return this.cloneFieldMetadata();\n }\n\n private cloneFieldMetadata(map: ManualFieldMetadataMap = this.fieldMetadata$.value): FieldMetadata[] {\n return Array.from(map.values()).map((fm) => ({ ...fm }));\n }\n\n private refreshBoundComponent(fieldName: string): void {\n const component = this.boundComponents.get(fieldName);\n if (!component) {\n return;\n }\n const metadata = this.fieldMetadata$.value.get(fieldName);\n if (!metadata) {\n return;\n }\n\n try {\n if (typeof (component as any)?.setInputMetadata === 'function') {\n (component as any).setInputMetadata({ ...metadata });\n // fallthrough to also apply visibility state on host\n }\n const metaProp = (component as any)?.metadata;\n if (metaProp && typeof metaProp === 'object') {\n if (typeof metaProp.set === 'function') {\n metaProp.set({ ...metadata });\n // fallthrough to also apply visibility state on host\n }\n }\n if (!metaProp || typeof metaProp.set !== 'function') {\n (component as any).metadata = { ...metadata };\n }\n // Apply visibility to component and host element for manual templates\n const isHidden = !!(metadata as any).hidden || !!(metadata as any).formHidden;\n if ('visible' in (component as any)) {\n try { (component as any).visible = !isHidden; } catch {}\n }\n const hostEl: HTMLElement | undefined = (component as any)?.elementRef?.nativeElement;\n if (hostEl) {\n hostEl.style.display = isHidden ? 'none' : '';\n hostEl.setAttribute('aria-hidden', String(isHidden));\n }\n } catch {\n /* ignore */\n }\n }\n\n /**\n * JSON Merge Patch semantics for metadata patches.\n * `null` remove a propriedade-alvo e objetos vazios são podados.\n */\n private applyJsonMergePatch<T>(target: T, patch: Partial<T>): T {\n if (patch == null || typeof patch !== 'object' || Array.isArray(patch)) {\n return { ...(target as any) } as T;\n }\n const out: any = Array.isArray(target)\n ? [...(target as any)]\n : { ...(target as any) };\n for (const [key, value] of Object.entries(patch as any)) {\n if (value === null) {\n delete out[key];\n continue;\n }\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n const merged = this.applyJsonMergePatch(\n out[key] && typeof out[key] === 'object' && !Array.isArray(out[key])\n ? out[key]\n : ({} as any),\n value as any,\n );\n if (\n merged &&\n typeof merged === 'object' &&\n !Array.isArray(merged) &&\n !Object.keys(merged as any).length\n ) {\n delete out[key];\n continue;\n }\n out[key] = merged;\n continue;\n }\n out[key] = value;\n }\n return out as T;\n }\n}\n\n/**\n * Factory service used to create ManualFormInstance objects with the required\n * dependencies injected from Angular's DI container.\n */\n@Injectable({ providedIn: 'root' })\nexport class ManualFormInstanceFactory {\n private readonly dynamicFormService = inject(DynamicFormService);\n\n constructor(\n @Optional() @Inject(ASYNC_CONFIG_STORAGE) private readonly storage?: AsyncConfigStorage,\n ) {}\n\n create(\n seed: ManualFormSeed,\n options: ManualFormPersistenceOptions = {},\n externalForm?: FormGroup,\n ): ManualFormInstance {\n const baseConfig = deepClone(seed.config);\n\n const instance = new ManualFormInstance(\n seed.formId,\n seed,\n baseConfig,\n this.dynamicFormService,\n this.storage,\n options,\n externalForm,\n );\n\n if (this.storage) {\n const key = buildStorageKey(seed.formId, options);\n this.storage\n .loadConfig<PersistPayload>(key)\n .pipe(take(1))\n .subscribe((persisted) => {\n if (!persisted) return;\n if (persisted.config) {\n instance.replaceConfig(persisted.config);\n }\n if (persisted.value) {\n instance.form.patchValue(persisted.value, { emitEvent: false });\n }\n });\n }\n\n return instance;\n }\n}\n\nfunction buildStorageKey(\n formId: ManualFormId,\n options: ManualFormPersistenceOptions = {},\n): string {\n if (options.storageKey) {\n return String(options.storageKey);\n }\n const parts = ['manual-form', options.namespace, options.tenantId, options.profileId, formId]\n .filter(Boolean)\n .map((segment) => String(segment));\n return parts.join(':');\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ManualFormInstance } from '../../stores/manual-form-instance';\n\n@Component({\n selector: 'praxis-manual-form-header',\n standalone: true,\n imports: [CommonModule],\n template: `\n <header class=\"pdx-manual-form__header\">\n <div class=\"pdx-manual-form__title\">\n <h2>{{ displayTitle }}</h2>\n @if (displayDescription) {\n <p class=\"pdx-manual-form__subtitle\">\n {{ displayDescription }}\n </p>\n }\n </div>\n <div class=\"pdx-manual-form__header-actions\">\n @if (editModeEnabled()) {\n <button type=\"button\" class=\"pdx-btn pdx-btn--ghost\" (click)=\"editForm.emit()\" [attr.aria-label]=\"editFormLabel()\">{{ editFormLabel() }}</button>\n }\n <button type=\"button\" class=\"pdx-btn pdx-btn--ghost\" (click)=\"reset.emit()\" [attr.aria-label]=\"resetLabel()\">{{ resetLabel() }}</button>\n <button type=\"button\" class=\"pdx-btn pdx-btn--primary\" (click)=\"save.emit()\" [attr.aria-label]=\"saveLabel()\">{{ saveLabel() }}</button>\n </div>\n </header>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n .pdx-manual-form__header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 1rem;\n margin-bottom: 1.5rem;\n }\n .pdx-manual-form__title h2 {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 600;\n line-height: 1.3;\n }\n .pdx-manual-form__subtitle {\n margin: 0.25rem 0 0;\n color: var(--md-sys-color-on-surface-variant);\n }\n .pdx-manual-form__header-actions {\n display: flex;\n gap: 0.5rem;\n flex-wrap: wrap;\n }\n .pdx-btn {\n min-height: 36px;\n padding: 0 14px;\n border-radius: 8px;\n border: 1px solid var(--md-sys-color-outline-variant);\n background: var(--md-sys-color-surface);\n color: var(--md-sys-color-on-surface);\n cursor: pointer;\n transition: background-color .18s ease, border-color .18s ease, color .18s ease;\n }\n .pdx-btn:hover { background: var(--md-sys-color-surface-container); }\n .pdx-btn:focus-visible { outline: 2px solid var(--md-sys-color-primary); outline-offset: 2px; }\n .pdx-btn--ghost {\n background: transparent;\n border-color: var(--md-sys-color-outline-variant);\n color: var(--md-sys-color-on-surface-variant);\n }\n .pdx-btn--primary {\n background: var(--md-sys-color-primary);\n border-color: var(--md-sys-color-primary);\n color: var(--md-sys-color-on-primary);\n }\n .pdx-btn--primary:hover {\n background: var(--md-sys-color-primary-container);\n border-color: var(--md-sys-color-primary-container);\n color: var(--md-sys-color-on-primary-container);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ManualFormHeaderComponent {\n readonly instance = input<ManualFormInstance | null | undefined>();\n readonly title = input<string | undefined>();\n readonly description = input<string | undefined>();\n readonly saveLabel = input('Salvar customizações');\n readonly resetLabel = input('Restaurar padrão');\n readonly editModeEnabled = input(false);\n readonly editFormLabel = input('Editar formulário');\n\n readonly save = output<void>();\n readonly reset = output<void>();\n readonly editForm = output<void>();\n\n readonly fallbackTitle = 'Formulário manual';\n\n private get metadata(): { title?: string; description?: string } | undefined {\n return this.instance()?.currentConfig?.metadata as\n | { title?: string; description?: string }\n | undefined;\n }\n\n private get firstSection(): { title?: string; description?: string } | undefined {\n return this.instance()?.currentConfig?.sections?.[0];\n }\n\n get displayTitle(): string {\n return (\n this.title() ||\n this.metadata?.title ||\n this.firstSection?.title ||\n this.fallbackTitle\n );\n }\n\n get displayDescription(): string | undefined {\n return (\n this.description() ||\n this.metadata?.description ||\n this.firstSection?.description ||\n undefined\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormActionsLayout, FormActionButton } from '@praxisui/core';\n\n@Component({\n selector: 'praxis-manual-form-actions',\n standalone: true,\n imports: [CommonModule],\n template: `\n @if (actions(); as layout) {\n <footer class=\"pdx-manual-form__actions\">\n <div class=\"pdx-manual-form__actions-secondary\">\n @if (layout.cancel; as cancel) {\n @if (isVisible(cancel)) {\n <button type=\"button\" class=\"pdx-btn pdx-btn--ghost\" [disabled]=\"cancel.disabled\" (click)=\"emit('cancel', cancel)\">\n {{ cancel.label || 'Cancelar' }}\n </button>\n }\n }\n @if (layout.reset; as resetBtn) {\n @if (isVisible(resetBtn)) {\n <button type=\"button\" class=\"pdx-btn pdx-btn--ghost\" [disabled]=\"resetBtn.disabled\" (click)=\"emit('reset', resetBtn)\">\n {{ resetBtn.label || 'Resetar' }}\n </button>\n }\n }\n @for (action of layout.custom || []; track trackByFn ? trackByFn($index, action) : (action?.id || $index)) {\n @if (isVisible(action)) {\n <button type=\"button\" class=\"pdx-btn pdx-btn--ghost\" [disabled]=\"action.disabled\" (click)=\"emit(action.id || 'custom', action)\">\n {{ action.label || action.id || 'Ação' }}\n </button>\n }\n }\n </div>\n <div class=\"pdx-manual-form__actions-primary\">\n @if (layout.submit; as submitBtn) {\n @if (isVisible(submitBtn)) {\n <button type=\"submit\" class=\"pdx-btn pdx-btn--primary\" [disabled]=\"submitBtn.disabled\" (click)=\"emit('submit', submitBtn)\">\n {{ submitBtn.label || 'Salvar' }}\n </button>\n }\n }\n </div>\n </footer>\n }\n `,\n styles: [\n `\n :host { display: block; }\n .pdx-manual-form__actions {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 1rem;\n margin-top: 2rem;\n flex-wrap: wrap;\n }\n .pdx-manual-form__actions-secondary,\n .pdx-manual-form__actions-primary {\n display: flex;\n gap: 0.5rem;\n }\n .pdx-btn {\n min-height: 36px;\n padding: 0 14px;\n border-radius: 8px;\n border: 1px solid var(--md-sys-color-outline-variant);\n background: var(--md-sys-color-surface);\n color: var(--md-sys-color-on-surface);\n cursor: pointer;\n transition: background-color .18s ease, border-color .18s ease, color .18s ease;\n }\n .pdx-btn:hover { background: var(--md-sys-color-surface-container); }\n .pdx-btn:focus-visible { outline: 2px solid var(--md-sys-color-primary); outline-offset: 2px; }\n .pdx-btn:disabled { opacity: 0.6; cursor: not-allowed; }\n .pdx-btn--ghost {\n background: transparent;\n border-color: var(--md-sys-color-outline-variant);\n color: var(--md-sys-color-on-surface-variant);\n }\n .pdx-btn--primary {\n background: var(--md-sys-color-primary);\n color: var(--md-sys-color-on-primary);\n border-color: var(--md-sys-color-primary);\n }\n .pdx-btn--primary:hover {\n background: var(--md-sys-color-primary-container);\n border-color: var(--md-sys-color-primary-container);\n color: var(--md-sys-color-on-primary-container);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ManualFormActionsComponent {\n readonly actions = input<FormActionsLayout | null | undefined>();\n @Input() trackByFn: ((idx: number, item: FormActionButton) => unknown) | null = null;\n readonly actionClick = output<string>();\n\n isVisible(action?: FormActionButton | null): boolean {\n return action ? action.visible !== false : false;\n }\n\n emit(kind: string, action?: FormActionButton | null): void {\n if (action?.action) {\n this.actionClick.emit(action.action);\n } else {\n this.actionClick.emit(kind);\n }\n }\n}\n","/**\n * Capabilities catalog for Manual Form (FormConfig-based).\n * Focuses on the FormConfig structure managed by ManualFormInstance.\n */\n\nimport { RULE_PROPERTY_SCHEMA, RulePropertyDefinition } from '@praxisui/core';\n\nimport type {\n AiCapability,\n AiCapabilityCatalog,\n AiCapabilityCategory,\n AiValueKind,\n} from '@praxisui/core';\n\ndeclare module '@praxisui/core' {\n interface AiCapabilityCategoryMap {\n fields: true;\n actions: true;\n api: true;\n messages: true;\n metadata: true;\n hints: true;\n rules: true;\n hooks: true;\n }\n}\n\nexport type CapabilityCategory = AiCapabilityCategory;\nexport type ValueKind = AiValueKind;\n\nexport interface Capability extends AiCapability {\n category: CapabilityCategory;\n}\n\nexport interface CapabilityCatalog extends AiCapabilityCatalog {\n capabilities: Capability[];\n}\n\nconst ENUMS: Record<string, Array<string | number>> = {\n actionColor: ['primary', 'accent', 'warn', 'basic'],\n actionSize: ['small', 'medium', 'large'],\n actionVariant: ['raised', 'stroked', 'flat', 'fab'],\n actionType: ['button', 'submit', 'reset'],\n actionsPosition: ['left', 'center', 'right', 'justified', 'split'],\n actionsMobilePosition: ['left', 'center', 'right', 'justified'],\n actionsOrientation: ['horizontal', 'vertical'],\n actionsSpacing: ['compact', 'normal', 'spacious'],\n actionsPlacement: ['insideLastSection', 'afterSections', 'top'],\n columnAlign: ['start', 'center', 'end', 'stretch'],\n sectionTitleStyle: ['titleLarge', 'titleMedium', 'titleSmall', 'headlineSmall'],\n sectionDescriptionStyle: ['bodyLarge', 'bodyMedium', 'bodySmall'],\n headerAlign: ['start', 'center'],\n schemaType: ['response', 'request'],\n customizationSource: ['user', 'server', 'system'],\n formRuleTargetType: ['field', 'section', 'action', 'row', 'column'],\n formRuleContext: ['visibility', 'readOnly', 'style', 'validation', 'notification'],\n mode: ['create', 'edit', 'view'],\n schemaSource: ['resource', 'filter'],\n};\n\nfunction generateRulePropertyCapabilities(\n targetType: 'field' | 'section' | 'action' | 'row' | 'column',\n properties: RulePropertyDefinition[],\n): Capability[] {\n const result: Capability[] = [];\n properties.forEach((prop) => {\n const valueKind: ValueKind =\n prop.type === 'object'\n ? 'object'\n : prop.type === 'enum'\n ? 'enum'\n : prop.type === 'boolean'\n ? 'boolean'\n : prop.type === 'number'\n ? 'number'\n : 'string';\n const capability: Capability = {\n path: `formRules[].effect.properties.${prop.name}`,\n category: 'rules',\n valueKind,\n description: `Propriedade '${prop.label}' aplicada ao ${targetType}.`,\n example:\n prop.type === 'boolean'\n ? 'true'\n : prop.type === 'number'\n ? '123'\n : prop.type === 'enum'\n ? (prop.enumValues?.[0]?.value || 'valor')\n : 'valor',\n safetyNotes: prop.type === 'object' ? 'O objeto deve seguir o schema esperado pelo componente alvo.' : undefined,\n };\n if (prop.enumValues) {\n capability.allowedValues = prop.enumValues.map((ev) => ev.value);\n }\n result.push(capability);\n });\n\n return result;\n}\n\nfunction generateRulePropertyWhenFalseCapabilities(\n targetType: 'field' | 'section' | 'action' | 'row' | 'column',\n properties: RulePropertyDefinition[],\n): Capability[] {\n const result: Capability[] = [];\n properties.forEach((prop) => {\n const valueKind: ValueKind =\n prop.type === 'object'\n ? 'object'\n : prop.type === 'enum'\n ? 'enum'\n : prop.type === 'boolean'\n ? 'boolean'\n : prop.type === 'number'\n ? 'number'\n : 'string';\n const capability: Capability = {\n path: `formRules[].effect.propertiesWhenFalse.${prop.name}`,\n category: 'rules',\n valueKind,\n description: `Propriedade '${prop.label}' aplicada ao ${targetType} quando a condicao e falsa.`,\n example:\n prop.type === 'boolean'\n ? 'false'\n : prop.type === 'number'\n ? '0'\n : prop.type === 'enum'\n ? (prop.enumValues?.[0]?.value || 'valor')\n : 'valor',\n safetyNotes: prop.type === 'object' ? 'O objeto deve seguir o schema esperado pelo componente alvo.' : undefined,\n };\n if (prop.enumValues) {\n capability.allowedValues = prop.enumValues.map((ev) => ev.value);\n }\n result.push(capability);\n });\n\n return result;\n}\n\nexport const MANUAL_FORM_AI_CAPABILITIES: CapabilityCatalog = {\n version: 'v1.3',\n enums: ENUMS,\n targets: [\n 'praxis-manual-form',\n 'praxis-manual-form-config-editor',\n 'praxis-manual-form-actions',\n 'praxis-manual-form-header',\n ],\n notes: [\n 'ManualForm usa FormConfig interno para metadados e layout.',\n 'fieldMetadata[] deve seguir o catalogo base de FieldMetadata.',\n 'Arrays de layout e actions devem ser mesclados por id/label, evitando replace total.',\n 'ManualFormHeader usa metadata.title/metadata.description como fallback para titulo/descricao.',\n 'Se controlType nao tiver catalogo dedicado, trate como FieldMetadata base.',\n ],\n capabilities: [\n // --- Form metadata ---\n {\n path: 'metadata.version',\n category: 'metadata',\n valueKind: 'string',\n description: 'Versao da configuracao do formulario.',\n },\n {\n path: 'metadata.source',\n category: 'metadata',\n valueKind: 'enum',\n allowedValues: ['local', 'server', 'default'],\n description: 'Origem da configuracao.',\n },\n {\n path: 'metadata.title',\n category: 'metadata',\n valueKind: 'string',\n description: 'Titulo exibido no cabecalho quando formTitle nao for informado.',\n },\n {\n path: 'metadata.description',\n category: 'metadata',\n valueKind: 'string',\n description: 'Descricao exibida no cabecalho quando formDescription nao for informado.',\n },\n {\n path: 'metadata.lastUpdated',\n category: 'metadata',\n valueKind: 'string',\n description: 'Timestamp da ultima atualizacao.',\n safetyNotes: 'Valor de auditoria; preferir preenchimento pelo host.',\n },\n {\n path: 'metadata.schemaId',\n category: 'metadata',\n valueKind: 'string',\n description: 'Identificador do schema usado na composicao.',\n },\n {\n path: 'metadata.serverHash',\n category: 'metadata',\n valueKind: 'string',\n description: 'Hash do schema/servidor para reconciliacao.',\n },\n {\n path: 'metadata.schemaContext',\n category: 'metadata',\n valueKind: 'object',\n description: 'Contexto do schema (path/operation/schemaType).',\n },\n {\n path: 'metadata.schemaContext.path',\n category: 'metadata',\n valueKind: 'string',\n description: 'Path do schema usado para compor o formulario.',\n },\n {\n path: 'metadata.schemaContext.operation',\n category: 'metadata',\n valueKind: 'string',\n description: 'Operacao do schema (ex: GET/POST).',\n },\n {\n path: 'metadata.schemaContext.schemaType',\n category: 'metadata',\n valueKind: 'enum',\n allowedValues: ENUMS.schemaType,\n description: 'Tipo do schema (response/request).',\n },\n {\n path: 'metadata.schemaContext.internal',\n category: 'metadata',\n valueKind: 'boolean',\n description: 'Marca schema como interno.',\n },\n {\n path: 'metadata.schemaContext.tenant',\n category: 'metadata',\n valueKind: 'string',\n description: 'Tenant do schema.',\n },\n {\n path: 'metadata.schemaContext.locale',\n category: 'metadata',\n valueKind: 'string',\n description: 'Locale do schema.',\n },\n {\n path: 'metadata.customizations',\n category: 'metadata',\n valueKind: 'array',\n description: 'Log de customizacoes.',\n safetyNotes: 'Usado para auditoria; nao gerar automaticamente.',\n },\n {\n path: 'metadata.customizations[]',\n category: 'metadata',\n valueKind: 'object',\n description: 'Registro de customizacao.',\n },\n {\n path: 'metadata.customizations[].fieldName',\n category: 'metadata',\n valueKind: 'string',\n description: 'Campo customizado.',\n },\n {\n path: 'metadata.customizations[].property',\n category: 'metadata',\n valueKind: 'string',\n description: 'Propriedade alterada.',\n },\n {\n path: 'metadata.customizations[].oldValue',\n category: 'metadata',\n valueKind: 'object',\n description: 'Valor anterior.',\n },\n {\n path: 'metadata.customizations[].newValue',\n category: 'metadata',\n valueKind: 'object',\n description: 'Novo valor.',\n },\n {\n path: 'metadata.customizations[].timestamp',\n category: 'metadata',\n valueKind: 'string',\n description: 'Timestamp da alteracao (ISO).',\n },\n {\n path: 'metadata.customizations[].source',\n category: 'metadata',\n valueKind: 'enum',\n allowedValues: ENUMS.customizationSource,\n description: 'Origem da alteracao.',\n },\n\n // --- Field metadata ---\n {\n path: 'fieldMetadata',\n category: 'fields',\n valueKind: 'array',\n critical: true,\n description: 'Metadados dos campos (FieldMetadata).',\n safetyNotes: 'Use o catalogo base FieldMetadata para detalhes de campos.',\n },\n {\n path: 'fieldMetadata[]',\n category: 'fields',\n valueKind: 'object',\n critical: true,\n description: 'Item de metadados do campo (FieldMetadata).',\n safetyNotes: 'Use o catalogo base FieldMetadata para detalhes de campos.',\n },\n\n // --- Layout ---\n { path: 'sections[]', category: 'layout', valueKind: 'object', description: 'Secao do formulario.' },\n { path: 'sections[].id', category: 'layout', valueKind: 'string', description: 'ID da secao.' },\n { path: 'sections[].title', category: 'layout', valueKind: 'string', description: 'Titulo da secao.' },\n { path: 'sections[].description', category: 'layout', valueKind: 'string', description: 'Descricao da secao.' },\n { path: 'sections[].icon', category: 'layout', valueKind: 'string', description: 'Icone da secao.' },\n { path: 'sections[].collapsible', category: 'layout', valueKind: 'boolean', description: 'Secao recolhivel.' },\n { path: 'sections[].collapsed', category: 'layout', valueKind: 'boolean', description: 'Estado inicial recolhido.' },\n { path: 'sections[].gapBottom', category: 'layout', valueKind: 'number', description: 'Espaco extra apos a secao (px).' },\n { path: 'sections[].titleGapBottom', category: 'layout', valueKind: 'number', description: 'Espaco abaixo do titulo (px).' },\n { path: 'sections[].descriptionGapBottom', category: 'layout', valueKind: 'number', description: 'Espaco abaixo da descricao (px).' },\n { path: 'sections[].titleStyle', category: 'layout', valueKind: 'enum', allowedValues: ENUMS.sectionTitleStyle, description: 'Preset tipografico do titulo.' },\n { path: 'sections[].descriptionStyle', category: 'layout', valueKind: 'enum', allowedValues: ENUMS.sectionDescriptionStyle, description: 'Preset tipografico da descricao.' },\n { path: 'sections[].titleColor', category: 'layout', valueKind: 'string', description: 'Cor do titulo.' },\n { path: 'sections[].descriptionColor', category: 'layout', valueKind: 'string', description: 'Cor da descricao.' },\n { path: 'sections[].headerAlign', category: 'layout', valueKind: 'enum', allowedValues: ENUMS.headerAlign, description: 'Alinhamento do header.' },\n { path: 'sections[].headerTooltip', category: 'layout', valueKind: 'string', description: 'Tooltip do header da secao.' },\n { path: 'sections[].rows[]', category: 'layout', valueKind: 'object', description: 'Linha da secao.' },\n { path: 'sections[].rows[].id', category: 'layout', valueKind: 'string', description: 'ID da linha.' },\n { path: 'sections[].rows[].title', category: 'layout', valueKind: 'string', description: 'Titulo da linha.' },\n { path: 'sections[].rows[].gap', category: 'layout', valueKind: 'number', description: 'Espaco horizontal entre colunas (px).' },\n { path: 'sections[].rows[].rowGap', category: 'layout', valueKind: 'number', description: 'Espaco vertical apos a linha (px).' },\n { path: 'sections[].rows[].columns[]', category: 'layout', valueKind: 'object', description: 'Coluna da linha.' },\n { path: 'sections[].rows[].columns[].id', category: 'layout', valueKind: 'string', description: 'ID da coluna.' },\n { path: 'sections[].rows[].columns[].title', category: 'layout', valueKind: 'string', description: 'Titulo da coluna.' },\n { path: 'sections[].rows[].columns[].fields', category: 'layout', valueKind: 'array', description: 'Campos associados a coluna.' },\n { path: 'sections[].rows[].columns[].fields[]', category: 'layout', valueKind: 'string', description: 'Nome do campo na coluna.', safetyNotes: 'Use nomes presentes em fieldMetadata[].name.' },\n { path: 'sections[].rows[].columns[].span', category: 'layout', valueKind: 'object', description: 'Span responsivo.' },\n { path: 'sections[].rows[].columns[].span.xs', category: 'layout', valueKind: 'number', description: 'Span xs (1-12).' },\n { path: 'sections[].rows[].columns[].span.sm', category: 'layout', valueKind: 'number', description: 'Span sm (1-12).' },\n { path: 'sections[].rows[].columns[].span.md', category: 'layout', valueKind: 'number', description: 'Span md (1-12).' },\n { path: 'sections[].rows[].columns[].span.lg', category: 'layout', valueKind: 'number', description: 'Span lg (1-12).' },\n { path: 'sections[].rows[].columns[].span.xl', category: 'layout', valueKind: 'number', description: 'Span xl (1-12).' },\n { path: 'sections[].rows[].columns[].offset', category: 'layout', valueKind: 'object', description: 'Offset responsivo.' },\n { path: 'sections[].rows[].columns[].offset.xs', category: 'layout', valueKind: 'number', description: 'Offset xs (1-12).' },\n { path: 'sections[].rows[].columns[].offset.sm', category: 'layout', valueKind: 'number', description: 'Offset sm (1-12).' },\n { path: 'sections[].rows[].columns[].offset.md', category: 'layout', valueKind: 'number', description: 'Offset md (1-12).' },\n { path: 'sections[].rows[].columns[].offset.lg', category: 'layout', valueKind: 'number', description: 'Offset lg (1-12).' },\n { path: 'sections[].rows[].columns[].offset.xl', category: 'layout', valueKind: 'number', description: 'Offset xl (1-12).' },\n { path: 'sections[].rows[].columns[].order', category: 'layout', valueKind: 'object', description: 'Order responsivo.' },\n { path: 'sections[].rows[].columns[].order.xs', category: 'layout', valueKind: 'number', description: 'Order xs.' },\n { path: 'sections[].rows[].columns[].order.sm', category: 'layout', valueKind: 'number', description: 'Order sm.' },\n { path: 'sections[].rows[].columns[].order.md', category: 'layout', valueKind: 'number', description: 'Order md.' },\n { path: 'sections[].rows[].columns[].order.lg', category: 'layout', valueKind: 'number', description: 'Order lg.' },\n { path: 'sections[].rows[].columns[].order.xl', category: 'layout', valueKind: 'number', description: 'Order xl.' },\n { path: 'sections[].rows[].columns[].hidden', category: 'layout', valueKind: 'object', description: 'Hidden responsivo.' },\n { path: 'sections[].rows[].columns[].hidden.xs', category: 'layout', valueKind: 'boolean', description: 'Ocultar no xs.' },\n { path: 'sections[].rows[].columns[].hidden.sm', category: 'layout', valueKind: 'boolean', description: 'Ocultar no sm.' },\n { path: 'sections[].rows[].columns[].hidden.md', category: 'layout', valueKind: 'boolean', description: 'Ocultar no md.' },\n { path: 'sections[].rows[].columns[].hidden.lg', category: 'layout', valueKind: 'boolean', description: 'Ocultar no lg.' },\n { path: 'sections[].rows[].columns[].hidden.xl', category: 'layout', valueKind: 'boolean', description: 'Ocultar no xl.' },\n { path: 'sections[].rows[].columns[].align', category: 'layout', valueKind: 'enum', allowedValues: ENUMS.columnAlign, description: 'Alinhamento da coluna.' },\n { path: 'sections[].rows[].columns[].padding', category: 'layout', valueKind: 'number', description: 'Padding da coluna (px).' },\n { path: 'sections[].rows[].columns[].className', category: 'layout', valueKind: 'string', description: 'Classe CSS da coluna.' },\n { path: 'sections[].rows[].columns[].testId', category: 'layout', valueKind: 'string', description: 'Test id da coluna.' },\n\n // --- Actions ---\n { path: 'actions', category: 'actions', valueKind: 'object', description: 'Layout de acoes do formulario.' },\n { path: 'actions.position', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionsPosition, description: 'Posicao das acoes.' },\n { path: 'actions.orientation', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionsOrientation, description: 'Orientacao das acoes.' },\n { path: 'actions.spacing', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionsSpacing, description: 'Espacamento das acoes.' },\n { path: 'actions.sticky', category: 'actions', valueKind: 'boolean', description: 'Fixar barra de acoes.' },\n { path: 'actions.divider', category: 'actions', valueKind: 'boolean', description: 'Exibir divisor acima das acoes.' },\n { path: 'actions.placement', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionsPlacement, description: 'Posicionamento estrutural das acoes.' },\n { path: 'actions.containerClassName', category: 'actions', valueKind: 'string', description: 'Classe CSS do container de acoes.' },\n { path: 'actions.containerStyles', category: 'actions', valueKind: 'object', description: 'Estilos inline do container.' },\n { path: 'actions.mobile', category: 'actions', valueKind: 'object', description: 'Config para mobile.' },\n { path: 'actions.mobile.position', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionsMobilePosition, description: 'Posicao das acoes no mobile.' },\n { path: 'actions.mobile.orientation', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionsOrientation, description: 'Orientacao no mobile.' },\n { path: 'actions.mobile.collapseToMenu', category: 'actions', valueKind: 'boolean', description: 'Colapsar acoes em menu.' },\n { path: 'actions.showSaveButton', category: 'actions', valueKind: 'boolean', description: 'Legacy: mostrar botao salvar.' },\n { path: 'actions.submitButtonLabel', category: 'actions', valueKind: 'string', description: 'Legacy: texto do submit.' },\n { path: 'actions.showCancelButton', category: 'actions', valueKind: 'boolean', description: 'Legacy: mostrar cancelar.' },\n { path: 'actions.cancelButtonLabel', category: 'actions', valueKind: 'string', description: 'Legacy: texto do cancelar.' },\n { path: 'actions.showResetButton', category: 'actions', valueKind: 'boolean', description: 'Legacy: mostrar reset.' },\n { path: 'actions.resetButtonLabel', category: 'actions', valueKind: 'string', description: 'Legacy: texto do reset.' },\n\n { path: 'actions.submit', category: 'actions', valueKind: 'object', description: 'Botao submit.' },\n { path: 'actions.cancel', category: 'actions', valueKind: 'object', description: 'Botao cancelar.' },\n { path: 'actions.reset', category: 'actions', valueKind: 'object', description: 'Botao reset.' },\n { path: 'actions.custom', category: 'actions', valueKind: 'array', description: 'Botoes customizados.' },\n { path: 'actions.custom[]', category: 'actions', valueKind: 'object', description: 'Configuracao de botao customizado.', safetyNotes: 'Requer action handler registrado no host.' },\n { path: 'actions.submit.id', category: 'actions', valueKind: 'string', description: 'ID do botao.' },\n { path: 'actions.submit.visible', category: 'actions', valueKind: 'boolean', description: 'Visibilidade.' },\n { path: 'actions.submit.label', category: 'actions', valueKind: 'string', description: 'Label do botao.' },\n { path: 'actions.submit.icon', category: 'actions', valueKind: 'string', description: 'Icone do botao.' },\n { path: 'actions.submit.className', category: 'actions', valueKind: 'string', description: 'Classe CSS.' },\n { path: 'actions.submit.style', category: 'actions', valueKind: 'object', description: 'Estilo inline.' },\n { path: 'actions.submit.color', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionColor, description: 'Cor do botao.' },\n { path: 'actions.submit.disabled', category: 'actions', valueKind: 'boolean', description: 'Botao desabilitado.' },\n { path: 'actions.submit.type', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionType, description: 'Tipo do botao.' },\n { path: 'actions.submit.action', category: 'actions', valueKind: 'string', description: 'Evento custom.', safetyNotes: 'Requer handler registrado no host.' },\n { path: 'actions.submit.tooltip', category: 'actions', valueKind: 'string', description: 'Tooltip.' },\n { path: 'actions.submit.loading', category: 'actions', valueKind: 'boolean', description: 'Estado loading.' },\n { path: 'actions.submit.size', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionSize, description: 'Tamanho do botao.' },\n { path: 'actions.submit.variant', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionVariant, description: 'Variante visual.' },\n { path: 'actions.submit.shortcut', category: 'actions', valueKind: 'string', description: 'Atalho de teclado.' },\n\n // Apply same structure for cancel/reset/custom buttons\n { path: 'actions.cancel.id', category: 'actions', valueKind: 'string' },\n { path: 'actions.cancel.visible', category: 'actions', valueKind: 'boolean' },\n { path: 'actions.cancel.label', category: 'actions', valueKind: 'string' },\n { path: 'actions.cancel.icon', category: 'actions', valueKind: 'string' },\n { path: 'actions.cancel.className', category: 'actions', valueKind: 'string' },\n { path: 'actions.cancel.style', category: 'actions', valueKind: 'object' },\n { path: 'actions.cancel.color', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionColor },\n { path: 'actions.cancel.disabled', category: 'actions', valueKind: 'boolean' },\n { path: 'actions.cancel.type', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionType },\n { path: 'actions.cancel.action', category: 'actions', valueKind: 'string', safetyNotes: 'Requer handler registrado no host.' },\n { path: 'actions.cancel.tooltip', category: 'actions', valueKind: 'string' },\n { path: 'actions.cancel.loading', category: 'actions', valueKind: 'boolean' },\n { path: 'actions.cancel.size', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionSize },\n { path: 'actions.cancel.variant', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionVariant },\n { path: 'actions.cancel.shortcut', category: 'actions', valueKind: 'string' },\n\n { path: 'actions.reset.id', category: 'actions', valueKind: 'string' },\n { path: 'actions.reset.visible', category: 'actions', valueKind: 'boolean' },\n { path: 'actions.reset.label', category: 'actions', valueKind: 'string' },\n { path: 'actions.reset.icon', category: 'actions', valueKind: 'string' },\n { path: 'actions.reset.className', category: 'actions', valueKind: 'string' },\n { path: 'actions.reset.style', category: 'actions', valueKind: 'object' },\n { path: 'actions.reset.color', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionColor },\n { path: 'actions.reset.disabled', category: 'actions', valueKind: 'boolean' },\n { path: 'actions.reset.type', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionType },\n { path: 'actions.reset.action', category: 'actions', valueKind: 'string', safetyNotes: 'Requer handler registrado no host.' },\n { path: 'actions.reset.tooltip', category: 'actions', valueKind: 'string' },\n { path: 'actions.reset.loading', category: 'actions', valueKind: 'boolean' },\n { path: 'actions.reset.size', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionSize },\n { path: 'actions.reset.variant', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionVariant },\n { path: 'actions.reset.shortcut', category: 'actions', valueKind: 'string' },\n\n { path: 'actions.custom[].id', category: 'actions', valueKind: 'string' },\n { path: 'actions.custom[].visible', category: 'actions', valueKind: 'boolean' },\n { path: 'actions.custom[].label', category: 'actions', valueKind: 'string' },\n { path: 'actions.custom[].icon', category: 'actions', valueKind: 'string' },\n { path: 'actions.custom[].className', category: 'actions', valueKind: 'string' },\n { path: 'actions.custom[].style', category: 'actions', valueKind: 'object' },\n { path: 'actions.custom[].color', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionColor },\n { path: 'actions.custom[].disabled', category: 'actions', valueKind: 'boolean' },\n { path: 'actions.custom[].type', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionType },\n { path: 'actions.custom[].action', category: 'actions', valueKind: 'string', safetyNotes: 'Requer handler registrado no host.' },\n { path: 'actions.custom[].tooltip', category: 'actions', valueKind: 'string' },\n { path: 'actions.custom[].loading', category: 'actions', valueKind: 'boolean' },\n { path: 'actions.custom[].size', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionSize },\n { path: 'actions.custom[].variant', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionVariant },\n { path: 'actions.custom[].shortcut', category: 'actions', valueKind: 'string' },\n\n // --- Behavior ---\n { path: 'behavior', category: 'behavior', valueKind: 'object', description: 'Comportamento do formulario.' },\n { path: 'behavior.confirmOnUnsavedChanges', category: 'behavior', valueKind: 'boolean' },\n { path: 'behavior.trackHistory', category: 'behavior', valueKind: 'boolean' },\n { path: 'behavior.focusFirstError', category: 'behavior', valueKind: 'boolean' },\n { path: 'behavior.scrollToErrors', category: 'behavior', valueKind: 'boolean' },\n { path: 'behavior.clearAfterSave', category: 'behavior', valueKind: 'boolean' },\n { path: 'behavior.redirectAfterSave', category: 'behavior', valueKind: 'string' },\n { path: 'behavior.reactiveValidation', category: 'behavior', valueKind: 'boolean' },\n { path: 'behavior.reactiveValidationDebounceMs', category: 'behavior', valueKind: 'number' },\n\n // --- API ---\n { path: 'api', category: 'api', valueKind: 'object', description: 'Configuracao de API do formulario.' },\n { path: 'api.saveEndpoint', category: 'api', valueKind: 'string' },\n { path: 'api.loadEndpoint', category: 'api', valueKind: 'string' },\n { path: 'api.saveMethod', category: 'api', valueKind: 'enum', allowedValues: ['POST', 'PUT', 'PATCH'] },\n { path: 'api.timeout', category: 'api', valueKind: 'number' },\n { path: 'api.headers', category: 'api', valueKind: 'object' },\n { path: 'api.idField', category: 'api', valueKind: 'string' },\n { path: 'api.beforeSave', category: 'api', valueKind: 'expression', description: 'Hook antes de salvar (nao serializavel).', safetyNotes: 'Deve ser fornecido pelo host.' },\n { path: 'api.afterLoad', category: 'api', valueKind: 'expression', description: 'Hook apos carregar (nao serializavel).', safetyNotes: 'Deve ser fornecido pelo host.' },\n\n // --- Messages ---\n { path: 'messages', category: 'messages', valueKind: 'object', description: 'Mensagens e i18n do formulario.' },\n { path: 'messages.updateRegistrySuccess', category: 'messages', valueKind: 'string', description: 'Mensagem de sucesso ao atualizar registro.' },\n { path: 'messages.createRegistrySuccess', category: 'messages', valueKind: 'string', description: 'Mensagem de sucesso ao criar registro.' },\n { path: 'messages.updateRegistryError', category: 'messages', valueKind: 'string', description: 'Mensagem de erro ao atualizar registro.' },\n { path: 'messages.createRegistryError', category: 'messages', valueKind: 'string', description: 'Mensagem de erro ao criar registro.' },\n { path: 'messages.confirmations', category: 'messages', valueKind: 'object', description: 'Mensagens de confirmacao.' },\n { path: 'messages.confirmations.submit', category: 'messages', valueKind: 'string', description: 'Confirmacao de submit.' },\n { path: 'messages.confirmations.cancel', category: 'messages', valueKind: 'string', description: 'Confirmacao de cancel.' },\n { path: 'messages.confirmations.reset', category: 'messages', valueKind: 'string', description: 'Confirmacao de reset.' },\n { path: 'messages.confirmations.[actionId]', category: 'messages', valueKind: 'string', description: 'Confirmacao para acao custom.' },\n { path: 'messages.customActions', category: 'messages', valueKind: 'object', description: 'Mensagens por acao custom.' },\n { path: 'messages.customActions.[actionId]', category: 'messages', valueKind: 'object', description: 'Mensagens da acao custom (success/error/confirmation).' },\n { path: 'messages.customActions.[actionId].success', category: 'messages', valueKind: 'string', description: 'Sucesso para acao custom.' },\n { path: 'messages.customActions.[actionId].error', category: 'messages', valueKind: 'string', description: 'Erro para acao custom.' },\n { path: 'messages.customActions.[actionId].confirmation', category: 'messages', valueKind: 'string', description: 'Confirmacao para acao custom.' },\n { path: 'messages.loading', category: 'messages', valueKind: 'object', description: 'Mensagens de loading.' },\n { path: 'messages.loading.submit', category: 'messages', valueKind: 'string', description: 'Mensagem de loading no submit.' },\n { path: 'messages.loading.cancel', category: 'messages', valueKind: 'string', description: 'Mensagem de loading no cancel.' },\n { path: 'messages.loading.reset', category: 'messages', valueKind: 'string', description: 'Mensagem de loading no reset.' },\n { path: 'messages.loading.[actionId]', category: 'messages', valueKind: 'string', description: 'Mensagem de loading para acao custom.' },\n\n // --- Rules & Hooks ---\n { path: 'formRules', category: 'rules', valueKind: 'array', description: 'Regras de layout/comportamento.' },\n { path: 'formRules[].id', category: 'rules', valueKind: 'string', description: 'ID da regra.' },\n { path: 'formRules[].name', category: 'rules', valueKind: 'string', description: 'Nome da regra.' },\n { path: 'formRules[].description', category: 'rules', valueKind: 'string', description: 'Descricao da regra.' },\n { path: 'formRules[].targetType', category: 'rules', valueKind: 'enum', allowedValues: ENUMS.formRuleTargetType, description: 'Tipo de alvo.' },\n { path: 'formRules[].targets', category: 'rules', valueKind: 'array', description: 'IDs dos alvos canonicos.' },\n { path: 'formRules[].targets[]', category: 'rules', valueKind: 'string', description: 'ID do alvo canonico.' },\n { path: 'formRules[].targetFields', category: 'rules', valueKind: 'array', description: 'Alias legado para campos alvo.' },\n { path: 'formRules[].targetFields[]', category: 'rules', valueKind: 'string', description: 'ID do campo alvo (alias legado).' },\n { path: 'formRules[].context', category: 'rules', valueKind: 'enum', allowedValues: ENUMS.formRuleContext, description: 'Contexto legado da regra.' },\n { path: 'formRules[].effect.condition', category: 'rules', valueKind: 'expression', description: 'Condicao da regra.' },\n { path: 'formRules[].effect.properties', category: 'rules', valueKind: 'object', description: 'Propriedades aplicadas quando true.' },\n ...generateRulePropertyCapabilities('field', RULE_PROPERTY_SCHEMA.field),\n ...generateRulePropertyCapabilities('section', RULE_PROPERTY_SCHEMA.section),\n ...generateRulePropertyCapabilities('action', RULE_PROPERTY_SCHEMA.action),\n ...generateRulePropertyCapabilities('row', RULE_PROPERTY_SCHEMA.row),\n ...generateRulePropertyCapabilities('column', RULE_PROPERTY_SCHEMA.column),\n { path: 'formRules[].effect.propertiesWhenFalse', category: 'rules', valueKind: 'object', description: 'Propriedades aplicadas quando false.' },\n ...generateRulePropertyWhenFalseCapabilities('field', RULE_PROPERTY_SCHEMA.field),\n ...generateRulePropertyWhenFalseCapabilities('section', RULE_PROPERTY_SCHEMA.section),\n ...generateRulePropertyWhenFalseCapabilities('action', RULE_PROPERTY_SCHEMA.action),\n ...generateRulePropertyWhenFalseCapabilities('row', RULE_PROPERTY_SCHEMA.row),\n ...generateRulePropertyWhenFalseCapabilities('column', RULE_PROPERTY_SCHEMA.column),\n { path: 'formRulesState', category: 'rules', valueKind: 'object', description: 'Estado bruto do visual builder.' },\n { path: 'hooks', category: 'hooks', valueKind: 'object', description: 'Declaracoes de hooks por estagio.' },\n { path: 'hooks.beforeInit', category: 'hooks', valueKind: 'array', description: 'Hooks beforeInit.' },\n { path: 'hooks.beforeInit[]', category: 'hooks', valueKind: 'array', description: 'Hooks beforeInit.' },\n { path: 'hooks.beforeInit[].id', category: 'hooks', valueKind: 'string', description: 'ID do hook.' },\n { path: 'hooks.beforeInit[].priority', category: 'hooks', valueKind: 'number', description: 'Prioridade do hook.' },\n { path: 'hooks.beforeInit[].timeoutMs', category: 'hooks', valueKind: 'number', description: 'Timeout do hook.' },\n { path: 'hooks.beforeInit[].args', category: 'hooks', valueKind: 'object', description: 'Args do hook.' },\n { path: 'hooks.afterInit', category: 'hooks', valueKind: 'array', description: 'Hooks afterInit.' },\n { path: 'hooks.afterInit[]', category: 'hooks', valueKind: 'array', description: 'Hooks afterInit.' },\n { path: 'hooks.afterInit[].id', category: 'hooks', valueKind: 'string' },\n { path: 'hooks.afterInit[].priority', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.afterInit[].timeoutMs', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.afterInit[].args', category: 'hooks', valueKind: 'object' },\n { path: 'hooks.beforeValidate', category: 'hooks', valueKind: 'array', description: 'Hooks beforeValidate.' },\n { path: 'hooks.beforeValidate[]', category: 'hooks', valueKind: 'array', description: 'Hooks beforeValidate.' },\n { path: 'hooks.beforeValidate[].id', category: 'hooks', valueKind: 'string' },\n { path: 'hooks.beforeValidate[].priority', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.beforeValidate[].timeoutMs', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.beforeValidate[].args', category: 'hooks', valueKind: 'object' },\n { path: 'hooks.afterValidate', category: 'hooks', valueKind: 'array', description: 'Hooks afterValidate.' },\n { path: 'hooks.afterValidate[]', category: 'hooks', valueKind: 'array', description: 'Hooks afterValidate.' },\n { path: 'hooks.afterValidate[].id', category: 'hooks', valueKind: 'string' },\n { path: 'hooks.afterValidate[].priority', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.afterValidate[].timeoutMs', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.afterValidate[].args', category: 'hooks', valueKind: 'object' },\n { path: 'hooks.beforeSubmit', category: 'hooks', valueKind: 'array', description: 'Hooks beforeSubmit.' },\n { path: 'hooks.beforeSubmit[]', category: 'hooks', valueKind: 'array', description: 'Hooks beforeSubmit.' },\n { path: 'hooks.beforeSubmit[].id', category: 'hooks', valueKind: 'string' },\n { path: 'hooks.beforeSubmit[].priority', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.beforeSubmit[].timeoutMs', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.beforeSubmit[].args', category: 'hooks', valueKind: 'object' },\n { path: 'hooks.afterSubmit', category: 'hooks', valueKind: 'array', description: 'Hooks afterSubmit.' },\n { path: 'hooks.afterSubmit[]', category: 'hooks', valueKind: 'array', description: 'Hooks afterSubmit.' },\n { path: 'hooks.afterSubmit[].id', category: 'hooks', valueKind: 'string' },\n { path: 'hooks.afterSubmit[].priority', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.afterSubmit[].timeoutMs', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.afterSubmit[].args', category: 'hooks', valueKind: 'object' },\n { path: 'hooks.onError', category: 'hooks', valueKind: 'array', description: 'Hooks onError.' },\n { path: 'hooks.onError[]', category: 'hooks', valueKind: 'array', description: 'Hooks onError.' },\n { path: 'hooks.onError[].id', category: 'hooks', valueKind: 'string' },\n { path: 'hooks.onError[].priority', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.onError[].timeoutMs', category: 'hooks', valueKind: 'number' },\n { path: 'hooks.onError[].args', category: 'hooks', valueKind: 'object' },\n\n // --- Hints ---\n { path: 'hints.dataModes.create', category: 'hints', valueKind: 'string' },\n { path: 'hints.dataModes.edit', category: 'hints', valueKind: 'string' },\n { path: 'hints.dataModes.view', category: 'hints', valueKind: 'string' },\n { path: 'hints.uiModes.presentation', category: 'hints', valueKind: 'string' },\n { path: 'hints.uiModes.readonly', category: 'hints', valueKind: 'string' },\n { path: 'hints.uiModes.disabled', category: 'hints', valueKind: 'string' },\n { path: 'hints.uiModes.visible', category: 'hints', valueKind: 'string' },\n ],\n};\n","import { BaseAiAdapter, Capability, PatchResult } from '@praxisui/ai';\nimport { FormConfig, deepMerge } from '@praxisui/core';\nimport { ManualFormComponent } from '../components/manual-form/manual-form.component';\nimport { MANUAL_FORM_AI_CAPABILITIES } from './manual-form-ai-capabilities';\n\nexport class ManualFormAiAdapter extends BaseAiAdapter<FormConfig> {\n componentName = 'Manual Form';\n\n constructor(private host: ManualFormComponent) {\n super();\n }\n\n getCurrentConfig(): FormConfig {\n const current = this.host.instance?.currentConfig ?? { sections: [] };\n return this.cloneConfig(current);\n }\n\n getCapabilities(): Capability[] {\n return MANUAL_FORM_AI_CAPABILITIES.capabilities as unknown as Capability[];\n }\n\n override getRuntimeState(): Record<string, any> {\n const form = this.host.instance?.form;\n const fields = this.host.instance?.currentConfig?.fieldMetadata || [];\n return {\n hasInstance: !!this.host.instance,\n formId: this.safeFormId(),\n fieldsCount: fields.length,\n valid: form?.valid ?? false,\n dirty: form?.dirty ?? false,\n };\n }\n\n createSnapshot(): FormConfig {\n return this.getCurrentConfig();\n }\n\n async restoreSnapshot(snapshot: FormConfig): Promise<void> {\n if (!snapshot) return;\n this.applyConfig(this.cloneConfig(snapshot));\n }\n\n async applyPatch(\n patch: Partial<FormConfig>,\n _intent?: string,\n ): Promise<PatchResult> {\n if (!this.host.instance) {\n return { success: false, error: 'Manual form instance not ready.' };\n }\n try {\n const current = this.getCurrentConfig();\n const next = this.smartMergeFormConfig(current, patch);\n this.applyConfig(next);\n return { success: true };\n } catch (error) {\n const message =\n error instanceof Error ? error.message : 'Unknown error applying patch';\n return { success: false, error: message };\n }\n }\n\n private applyConfig(config: FormConfig): void {\n const apply = (this.host as any).applyConfigFromAdapter;\n if (typeof apply === 'function') {\n apply.call(this.host, config);\n return;\n }\n if (this.host.instance) {\n this.host.instance.replaceConfig(config);\n this.host.metadataChange.emit(this.host.instance.currentConfig);\n }\n }\n\n private smartMergeFormConfig(\n base: FormConfig,\n patch: Partial<FormConfig>,\n ): FormConfig {\n const result = deepMerge(base, patch);\n\n if (patch.fieldMetadata && Array.isArray(patch.fieldMetadata)) {\n const originalFields = base.fieldMetadata || [];\n const patchFields = patch.fieldMetadata.filter(\n (field) =>\n field &&\n typeof field.name === 'string' &&\n field.name.trim().length > 0,\n );\n\n const mergedFields = originalFields.map((orig) => {\n const match = patchFields.find((candidate) => candidate.name === orig.name);\n return match ? deepMerge(orig as any, match as any) : orig;\n });\n\n patchFields.forEach((incoming) => {\n if (!originalFields.find((orig) => orig.name === incoming.name)) {\n mergedFields.push(incoming as any);\n }\n });\n\n result.fieldMetadata = mergedFields;\n }\n\n return result;\n }\n\n private cloneConfig(config: FormConfig): FormConfig {\n try {\n return structuredClone(config);\n } catch {\n return JSON.parse(JSON.stringify(config));\n }\n }\n\n private safeFormId(): string | undefined {\n try {\n const idSignal = (this.host as any).formId;\n return typeof idSignal === 'function' ? idSignal() : undefined;\n } catch {\n return undefined;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { FieldControlType } from '@praxisui/core';\n\nexport const MANUAL_FORM_SELECTOR_TO_CONTROL_TYPE = new InjectionToken<Record<string, FieldControlType>>(\n 'MANUAL_FORM_SELECTOR_TO_CONTROL_TYPE',\n);\n\nexport const MANUAL_FORM_CONSTRUCTOR_TO_CONTROL_TYPE = new InjectionToken<Record<string, FieldControlType>>(\n 'MANUAL_FORM_CONSTRUCTOR_TO_CONTROL_TYPE',\n);\n\n","import { Injectable, isDevMode, inject } from '@angular/core';\n\nimport {\n FieldControlType,\n FieldMetadata,\n normalizeControlTypeKey,\n resolveControlTypeAlias,\n} from '@praxisui/core';\nimport { SettingsPanelService } from '@praxisui/settings-panel';\n\nimport { ManualFormInstance } from '../stores/manual-form-instance';\n\ninterface PatchSignature {\n sig: string;\n at: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ManualFieldMetadataBridgeService {\n private readonly patchSignatures = new WeakMap<ManualFormInstance, Map<string, PatchSignature>>();\n private readonly settingsPanel = inject(SettingsPanelService);\n\n buildEditorSeed(instance: ManualFormInstance, fieldName: string): FieldMetadata | undefined {\n return instance.getFieldMetadata(fieldName);\n }\n\n applyPatch(\n instance: ManualFormInstance,\n fieldName: string,\n patch: Partial<FieldMetadata>,\n ): void {\n instance.patchFieldMetadata(fieldName, patch);\n }\n\n async openEditor(instance: ManualFormInstance, fieldName: string): Promise<void> {\n if (!instance || !fieldName) {\n return;\n }\n\n const seed = this.buildEditorSeed(instance, fieldName);\n if (!seed) {\n if (isDevMode()) {\n try { console.warn('[ManualFieldMetadataBridge] metadata not found for field', fieldName); } catch {}\n }\n return;\n }\n\n let FieldMetadataEditorComponent: any;\n try {\n const module = await import('@praxisui/metadata-editor');\n FieldMetadataEditorComponent = (module as any)?.FieldMetadataEditorComponent;\n if (!FieldMetadataEditorComponent) {\n throw new Error('FieldMetadataEditorComponent export missing');\n }\n } catch (err) {\n if (isDevMode()) {\n try { console.error('[ManualFieldMetadataBridge] failed to load @praxisui/metadata-editor', err); } catch {}\n }\n return;\n }\n\n const controlType = resolveControlTypeAlias(\n (seed as FieldMetadata | undefined)?.controlType,\n FieldControlType.INPUT,\n ) as FieldMetadata['controlType'];\n const title = this.buildPanelTitle(fieldName, seed);\n const panelId = this.buildPanelId(instance, fieldName);\n\n let ref;\n try {\n ref = this.settingsPanel.open({\n id: panelId,\n title,\n titleIcon: this.resolveIcon(controlType),\n content: {\n component: FieldMetadataEditorComponent,\n inputs: {\n controlType,\n seed,\n hostBridge: {\n applyPatch: (patch: Partial<FieldMetadata>) => this.handlePatch(instance, fieldName, patch),\n },\n },\n },\n });\n } catch (err) {\n if (isDevMode()) {\n try { console.error('[ManualFieldMetadataBridge] failed to open settings panel', err); } catch {}\n }\n return;\n }\n\n ref.applied$.subscribe((patch: Partial<FieldMetadata>) => this.handlePatch(instance, fieldName, patch));\n ref.saved$.subscribe((patch: Partial<FieldMetadata>) => this.handlePatch(instance, fieldName, patch));\n }\n\n private handlePatch(\n instance: ManualFormInstance,\n fieldName: string,\n patch: Partial<FieldMetadata> | null | undefined,\n ): void {\n if (!patch || typeof patch !== 'object') {\n return;\n }\n\n if (!this.shouldApplyPatch(instance, fieldName, patch)) {\n return;\n }\n\n this.applyPatch(instance, fieldName, patch);\n\n try {\n instance.saveDraft();\n } catch (err) {\n if (isDevMode()) {\n try { console.error('[ManualFieldMetadataBridge] failed to persist draft after patch', err); } catch {}\n }\n }\n }\n\n private shouldApplyPatch(\n instance: ManualFormInstance,\n fieldName: string,\n patch: Partial<FieldMetadata>,\n ): boolean {\n let fieldsMap = this.patchSignatures.get(instance);\n if (!fieldsMap) {\n fieldsMap = new Map<string, PatchSignature>();\n this.patchSignatures.set(instance, fieldsMap);\n }\n\n const now = Date.now();\n let signature = '';\n try {\n signature = JSON.stringify(patch);\n } catch {\n signature = `${now}`;\n }\n\n const existing = fieldsMap.get(fieldName);\n if (existing && existing.sig === signature && now - existing.at < 1200) {\n if (isDevMode()) {\n try { console.debug('[ManualFieldMetadataBridge] duplicate patch ignored', { fieldName }); } catch {}\n }\n return false;\n }\n\n fieldsMap.set(fieldName, { sig: signature, at: now });\n return true;\n }\n\n private buildPanelTitle(fieldName: string, seed: FieldMetadata): string {\n const label = seed?.label || seed?.placeholder || fieldName;\n const type = this.formatControlType(seed?.controlType);\n return type ? `${type} — ${label}` : label;\n }\n\n private buildPanelId(instance: ManualFormInstance, fieldName: string): string {\n const formId = this.extractFormId(instance);\n return formId ? `manual-field.${formId}.${fieldName}` : `manual-field.${fieldName}`;\n }\n\n private extractFormId(instance: ManualFormInstance): string | undefined {\n try {\n return (instance as unknown as { formId?: string })?.formId || (instance as any)?.seed?.formId;\n } catch {\n return undefined;\n }\n }\n\n private formatControlType(controlType: FieldMetadata['controlType'] | undefined): string {\n if (!controlType) {\n return '';\n }\n return normalizeControlTypeKey(controlType)\n .toLowerCase()\n .split('_')\n .map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1).toLowerCase())\n .join(' ');\n }\n\n private resolveIcon(controlType: FieldMetadata['controlType'] | undefined): string | undefined {\n if (!controlType) {\n return 'tune';\n }\n const map: Record<string, string> = {\n INPUT: 'text_fields',\n TEXTAREA: 'notes',\n NUMERIC_TEXT_BOX: 'pin',\n CURRENCY_INPUT: 'attach_money',\n EMAIL_INPUT: 'mail',\n PASSWORD: 'vpn_key',\n SELECT: 'list',\n MULTI_SELECT: 'checklist',\n AUTO_COMPLETE: 'search',\n RADIO: 'radio_button_checked',\n CHECKBOX: 'check_box',\n TOGGLE: 'toggle_on',\n SLIDER: 'tune',\n DATE_INPUT: 'event',\n DATE_RANGE: 'event_repeat',\n TIME_INPUT: 'schedule',\n TIME_PICKER: 'schedule',\n RATING: 'grade',\n TREE_SELECT: 'account_tree',\n FILE_UPLOAD: 'upload_file',\n TRANSFER_LIST: 'compare_arrows',\n CHIP_INPUT: 'sell',\n CPF_CNPJ_INPUT: 'fingerprint',\n };\n const key = normalizeControlTypeKey(controlType);\n return map[key] || 'tune';\n }\n\n bindComponent(\n instance: ManualFormInstance,\n fieldName: string,\n componentInstance: unknown,\n ): void {\n instance.bindComponent(fieldName, componentInstance);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ManualFormInstance } from '../stores/manual-form-instance';\n\nexport type ManualFieldKeyResolution =\n | { status: 'ok'; key: string }\n | { status: 'missing' }\n | { status: 'ambiguous'; candidates: string[] };\n\n@Injectable({ providedIn: 'root' })\nexport class ManualFieldKeyService {\n resolveFieldName(\n input: string | string[],\n instance: ManualFormInstance | null | undefined,\n ): ManualFieldKeyResolution {\n if (!instance) {\n return { status: 'missing' };\n }\n\n const fieldNames = (instance.currentConfig.fieldMetadata || [])\n .map((meta) => meta.name)\n .filter((name): name is string => !!name);\n\n const raw = Array.isArray(input) ? input.join('.') : input;\n const normalized = String(raw || '').trim();\n if (!normalized) {\n return { status: 'missing' };\n }\n\n if (fieldNames.includes(normalized)) {\n return { status: 'ok', key: normalized };\n }\n\n const lastSegment = Array.isArray(input)\n ? input[input.length - 1]\n : normalized.split('.').pop();\n if (!lastSegment) {\n return { status: 'missing' };\n }\n\n const matches = fieldNames.filter(\n (name) => name === lastSegment || name.endsWith(`.${lastSegment}`),\n );\n\n if (matches.length === 1) {\n return { status: 'ok', key: matches[0] };\n }\n if (matches.length > 1) {\n return { status: 'ambiguous', candidates: matches };\n }\n return { status: 'missing' };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, HostListener, Input, Output, ViewChild, ElementRef } from '@angular/core';\nimport { FieldMetadata } from '@praxisui/core';\n\n@Component({\n selector: 'praxis-manual-field-toolbar',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div\n class=\"pdx-manual-field-toolbar\"\n role=\"toolbar\"\n aria-label=\"Acoes do campo\"\n >\n <button\n #firstAction\n type=\"button\"\n class=\"toolbar-btn\"\n [attr.aria-pressed]=\"isRequired ? 'true' : 'false'\"\n aria-label=\"Alternar obrigatorio\"\n title=\"Alternar obrigatorio\"\n (click)=\"toggleRequired.emit()\"\n >\n <span class=\"material-symbols-outlined toolbar-icon\" [class.toolbar-icon--filled]=\"isRequired\">\n star\n </span>\n </button>\n <button\n type=\"button\"\n class=\"toolbar-btn\"\n [attr.aria-pressed]=\"isReadOnly ? 'true' : 'false'\"\n aria-label=\"Alternar somente leitura\"\n title=\"Alternar somente leitura\"\n (click)=\"toggleReadonly.emit()\"\n >\n <span class=\"material-symbols-outlined\">\n {{ isReadOnly ? 'lock' : 'lock_open' }}\n </span>\n </button>\n <button\n type=\"button\"\n class=\"toolbar-btn\"\n [attr.aria-pressed]=\"metadata?.hidden ? 'true' : 'false'\"\n aria-label=\"Alternar visibilidade\"\n title=\"Alternar visibilidade\"\n (click)=\"toggleHidden.emit()\"\n >\n <span class=\"material-symbols-outlined\">\n {{ metadata?.hidden ? 'visibility_off' : 'visibility' }}\n </span>\n </button>\n <button\n type=\"button\"\n class=\"toolbar-btn\"\n [attr.aria-pressed]=\"metadata?.disabled ? 'true' : 'false'\"\n aria-label=\"Alternar desabilitado\"\n title=\"Alternar desabilitado\"\n (click)=\"toggleDisabled.emit()\"\n >\n <span class=\"material-symbols-outlined\">\n {{ metadata?.disabled ? 'toggle_on' : 'toggle_off' }}\n </span>\n </button>\n <button\n type=\"button\"\n class=\"toolbar-btn toolbar-btn--accent\"\n aria-label=\"Configurar campo\"\n title=\"Configurar campo\"\n (click)=\"openEditor.emit()\"\n >\n <span class=\"material-symbols-outlined\">tune</span>\n </button>\n <button\n type=\"button\"\n class=\"toolbar-btn toolbar-btn--ghost\"\n aria-label=\"Fechar\"\n title=\"Fechar\"\n (click)=\"requestClose.emit()\"\n >\n <span class=\"material-symbols-outlined\">close</span>\n </button>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n pointer-events: auto;\n font-family: inherit;\n }\n\n .pdx-manual-field-toolbar {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px;\n border-radius: 12px;\n background: var(--md-sys-color-surface-container-low);\n border: 1px solid var(--md-sys-color-outline-variant);\n box-shadow: var(--md-sys-elevation-level3);\n backdrop-filter: blur(6px);\n -webkit-backdrop-filter: blur(6px);\n }\n\n .toolbar-btn {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--md-sys-color-on-surface);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 10px;\n cursor: pointer;\n transition: background-color 120ms ease, transform 120ms ease;\n }\n\n .toolbar-btn:hover {\n background: var(--md-sys-color-primary-container);\n }\n\n .toolbar-btn:active {\n transform: scale(0.97);\n }\n\n .toolbar-btn:focus-visible {\n outline: 2px solid var(--md-sys-color-primary);\n outline-offset: 2px;\n }\n\n .toolbar-btn--accent {\n background: var(--md-sys-color-primary-container);\n }\n\n .toolbar-btn--ghost {\n opacity: 0.7;\n }\n\n .material-symbols-outlined {\n font-size: 18px;\n line-height: 18px;\n }\n\n .toolbar-icon {\n font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 20;\n }\n\n .toolbar-icon--filled {\n font-variation-settings: 'FILL' 1, 'wght' 600, 'GRAD' 0, 'opsz' 20;\n }\n `,\n ],\n})\nexport class ManualFieldToolbarComponent {\n @Input() metadata: FieldMetadata | null = null;\n\n @Output() toggleRequired = new EventEmitter<void>();\n @Output() toggleReadonly = new EventEmitter<void>();\n @Output() toggleHidden = new EventEmitter<void>();\n @Output() toggleDisabled = new EventEmitter<void>();\n @Output() openEditor = new EventEmitter<void>();\n @Output() requestClose = new EventEmitter<void>();\n\n @ViewChild('firstAction', { static: true }) private readonly firstAction?: ElementRef<HTMLButtonElement>;\n\n focusFirstAction(): void {\n this.firstAction?.nativeElement?.focus();\n }\n\n get isRequired(): boolean {\n const meta = this.metadata;\n return !!meta?.required || !!meta?.validators?.required;\n }\n\n get isReadOnly(): boolean {\n return !!this.metadata?.readOnly;\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape' || event.key === 'Esc') {\n event.stopPropagation();\n event.preventDefault();\n this.requestClose.emit();\n }\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ContentChildren,\n DestroyRef,\n effect,\n inject,\n PLATFORM_ID,\n OnDestroy,\n QueryList,\n isDevMode,\n input,\n output,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { PraxisAiAssistantComponent } from '@praxisui/ai';\nimport {\n FormActionButton,\n FormActionsLayout,\n FieldControlType,\n FieldMetadata,\n FormConfig,\n FormHookStage,\n FormHooksRegistry,\n ComponentKeyService,\n FieldSelectorRegistry,\n DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP,\n FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS,\n} from '@praxisui/core';\nimport {\n FormControl,\n FormControlName,\n FormGroupName,\n FormGroup,\n FormGroupDirective,\n ReactiveFormsModule,\n ValidatorFn,\n Validators,\n AbstractControl,\n ControlContainer,\n} from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { debounceTime, fromEvent, Subscription } from 'rxjs';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\n\nimport {\n ManualFormInstance,\n ManualFormInstanceFactory,\n} from '../../stores/manual-form-instance';\nimport { ManualFormHeaderComponent } from '../manual-form-header/manual-form-header.component';\nimport { ManualFormActionsComponent } from '../manual-form-actions/manual-form-actions.component';\nimport { ManualFormAiAdapter } from '../../ai/manual-form-ai.adapter';\nimport {\n ManualFormId,\n ManualFormPersistenceOptions,\n} from '../../models/manual-form.types';\nimport { createManualFormSeed } from '../../seeds/manual-form.seed';\nimport { deepClone } from '../../utils/clone.util';\nimport {\n MANUAL_FORM_CONSTRUCTOR_TO_CONTROL_TYPE,\n MANUAL_FORM_SELECTOR_TO_CONTROL_TYPE,\n} from '../../tokens/manual-form.tokens';\nimport { ManualFieldMetadataBridgeService } from '../../services/manual-field-metadata-bridge.service';\nimport { SettingsPanelService } from '@praxisui/settings-panel';\nimport { ManualFieldKeyService } from '../../services/manual-field-key.service';\nimport { ManualFieldToolbarComponent } from '../manual-field-toolbar/manual-field-toolbar.component';\n\ninterface DetectedField {\n name: string;\n control: AbstractControl | null;\n component: any;\n selector?: string;\n element?: HTMLElement;\n}\n\n@Component({\n selector: 'praxis-manual-form',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n PraxisAiAssistantComponent,\n ManualFormHeaderComponent,\n ManualFormActionsComponent,\n ],\n providers: [\n // Provide a ControlContainer at the host boundary so projected formControlName can resolve it\n { provide: ControlContainer, useExisting: ManualFormComponent as any },\n ],\n templateUrl: './manual-form.component.html',\n styles: [\n `\n .pdx-manual-form {\n display: flex;\n flex-direction: column;\n gap: var(--pdx-manual-form-gap, 24px);\n color: var(--md-sys-color-on-surface);\n }\n\n .pdx-manual-form__form {\n display: grid;\n gap: var(--pdx-manual-form-field-gap, 16px);\n padding: var(--pdx-manual-form-padding, 20px);\n border-radius: var(--pdx-manual-form-radius, 16px);\n background: var(--pdx-manual-form-surface, var(--md-sys-color-surface-container));\n border: 1px solid var(--pdx-manual-form-outline, var(--md-sys-color-outline-variant));\n box-shadow: var(--pdx-manual-form-shadow, var(--md-sys-elevation-level1, none));\n }\n .pdx-manual-form__form:focus-within {\n border-color: var(--pdx-manual-form-focus, var(--md-sys-color-primary));\n box-shadow:\n 0 0 0 2px var(--md-sys-color-primary),\n var(--pdx-manual-form-shadow, var(--md-sys-elevation-level1, none));\n }\n\n .pdx-manual-form__assistant {\n display: flex;\n justify-content: flex-end;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ManualFormComponent implements AfterContentInit, OnDestroy {\n private readonly instanceFactory = inject(ManualFormInstanceFactory);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly metadataBridge = inject(ManualFieldMetadataBridgeService);\n private readonly settingsPanel = inject(SettingsPanelService);\n private readonly hooksRegistry = inject(FormHooksRegistry, { optional: true });\n private readonly componentKeys = inject(ComponentKeyService);\n private readonly overlay = inject(Overlay);\n private readonly fieldKeyService = inject(ManualFieldKeyService);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly route = (() => { try { return inject(ActivatedRoute); } catch { return undefined as ActivatedRoute | undefined; } })();\n private warnedMissingId = false;\n private readonly disableSelectorDefaults =\n inject(FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS, { optional: true }) ?? false;\n private readonly selectorToControlType =\n inject(MANUAL_FORM_SELECTOR_TO_CONTROL_TYPE, { optional: true }) ??\n (this.disableSelectorDefaults ? {} : DEFAULT_SELECTOR_TO_CONTROL_TYPE);\n private readonly constructorToControlType =\n inject(MANUAL_FORM_CONSTRUCTOR_TO_CONTROL_TYPE, { optional: true }) ?? DEFAULT_CONSTRUCTOR_TO_CONTROL_TYPE;\n private readonly selectorRegistry = inject(FieldSelectorRegistry, { optional: true });\n private toolbarOverlayRef?: OverlayRef;\n private toolbarComponentRef?: ComponentRef<ManualFieldToolbarComponent>;\n private toolbarFieldKey?: string;\n private toolbarAnchor?: HTMLElement;\n private toolbarSubscriptions: Subscription[] = [];\n private toolbarActionSubscriptions: Subscription[] = [];\n private metadataSubscription?: Subscription;\n private outsideClickSubscription?: Subscription;\n\n readonly formId = input.required<ManualFormId>();\n readonly formTitle = input<string | undefined>();\n readonly formDescription = input<string | undefined>();\n readonly actions = input<FormActionsLayout | null | undefined>();\n readonly showHeader = input(true);\n readonly showActions = input(true);\n readonly enableAutoSave = input(true);\n readonly componentInstanceId = input<string | undefined>();\n // Allows editor affordances (e.g., opening metadata editor on interactions)\n readonly editModeEnabled = input(false);\n readonly persistenceOptions = input<ManualFormPersistenceOptions | undefined>();\n // When true, uses FormControlName.path (joined by '.') as FieldMetadata.name.\n // Requires nested path support (already present in DynamicFormService).\n readonly usePathNames = input(false);\n // Debounce interval for autosave (ms). Only used when enableAutoSave is true.\n readonly autoSaveDebounceMs = input(800);\n\n readonly submitted = output<{ value: any; instance: ManualFormInstance }>();\n readonly saved = output<ManualFormInstance>();\n readonly resetEvent = output<ManualFormInstance>({ alias: 'reset' });\n readonly metadataChange = output<FormConfig>();\n\n @ContentChildren(FormControlName, { descendants: true })\n private formControls!: QueryList<FormControlName>;\n\n // FormGroupDirective is applied on the component host via hostDirectives\n private readonly hostFormGroupDirective = inject(FormGroupDirective, { self: true, optional: true });\n\n instance?: ManualFormInstance;\n resolvedActions?: FormActionsLayout;\n public aiAdapter = new ManualFormAiAdapter(this);\n\n formGroup: FormGroup = new FormGroup({});\n private readonly registeredDirectives: FormControlName[] = [];\n\n constructor() {\n // Host-typed mode: if a FormGroupDirective is present, adopt its FormGroup without monkey patches.\n if (this.hostFormGroupDirective) {\n if (isDevMode()) console.debug('[ManualForm] Host FormGroupDirective attached early');\n if (this.hostFormGroupDirective.form) {\n this.formGroup = this.hostFormGroupDirective.form as FormGroup;\n if (isDevMode()) console.debug('[ManualForm] Using host-provided FormGroup instance');\n } else {\n // Keep placeholder until Angular binds [formGroup]; our addControl creates missing controls if needed.\n if (isDevMode()) console.debug('[ManualForm] No host FormGroup yet; awaiting binding without interception');\n }\n } else {\n if (isDevMode()) console.debug('[ManualForm] No host FormGroupDirective detected at construction (dynamic mode)');\n }\n\n effect(() => {\n const enabled = this.editModeEnabled();\n if (!enabled) {\n this.closeToolbar();\n return;\n }\n if (this.instance && this.formControls) {\n const fields = this.collectFields();\n if (fields.length) {\n this.registerToolbarBindings(fields);\n }\n }\n });\n }\n\n ngAfterContentInit(): void {\n this.syncHostFormGroupReference();\n\n if (this.formControls) {\n this.formControls.changes\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => { void this.initialize(true); });\n }\n\n queueMicrotask(() => { void this.initialize(false); });\n }\n\n ngOnDestroy(): void {\n this.toolbarSubscriptions.forEach((sub) => sub.unsubscribe());\n this.toolbarActionSubscriptions.forEach((sub) => sub.unsubscribe());\n this.metadataSubscription?.unsubscribe();\n this.toolbarOverlayRef?.dispose();\n this.outsideClickSubscription?.unsubscribe();\n }\n\n // =============================\n // ControlContainer interface\n // =============================\n // Make this component act as the ControlContainer for projected children.\n // FormControlName will call `parent.formDirective.addControl(this)` on us.\n get formDirective(): any {\n return this;\n }\n get control(): FormGroup {\n return this.formGroup;\n }\n get path(): any[] {\n return [];\n }\n addControl(dir: FormControlName): any {\n this.syncHostFormGroupReference();\n\n const name = typeof dir.name === 'string' ? dir.name : String(dir.name);\n const pathSegs = Array.isArray((dir as any).path) && (dir as any).path.length\n ? ((dir as any).path as string[])\n : (name ? [name] : []);\n const pathStr = this.usePathNames() ? pathSegs.join('.') : name;\n\n // Ensure control exists locally when host is not ready\n if (pathStr && !this.getControlByPath(pathSegs)) {\n this.ensureControlPath(pathSegs);\n if (isDevMode()) console.debug('[ManualForm] addControl created missing control', pathStr);\n }\n\n // Delegate wiring to host FormGroupDirective when available (ensures CVA pipelines are set)\n if (this.hostFormGroupDirective && this.hostFormGroupDirective.form) {\n if (isDevMode()) console.debug('[ManualForm] Delegating addControl to host FormGroupDirective for', pathStr);\n const ctrl = this.hostFormGroupDirective.addControl(dir);\n this.registeredDirectives.push(dir);\n return ctrl;\n }\n // Fallback minimal wiring if no host directive\n const ctrl = this.formGroup.get((dir as any).path);\n try {\n const va: any = (dir as any).valueAccessor;\n va?.writeValue?.(ctrl?.value);\n va?.setDisabledState?.(ctrl?.disabled ?? false);\n va?.registerOnChange?.((value: any) => {\n ctrl?.setValue(value);\n });\n va?.registerOnTouched?.(() => {\n ctrl?.markAsTouched();\n });\n } catch {}\n (dir as any).control = ctrl;\n return ctrl;\n }\n addFormGroup(dir: FormGroupName): void {\n this.syncHostFormGroupReference();\n\n if (this.hostFormGroupDirective && typeof (this.hostFormGroupDirective as any).addFormGroup === 'function') {\n (this.hostFormGroupDirective as any).addFormGroup(dir);\n return;\n }\n const path = this.getDirPath(dir as any);\n this.ensureGroupPath(path);\n }\n removeFormGroup(dir: FormGroupName): void {\n this.syncHostFormGroupReference();\n\n if (this.hostFormGroupDirective && typeof (this.hostFormGroupDirective as any).removeFormGroup === 'function') {\n (this.hostFormGroupDirective as any).removeFormGroup(dir);\n }\n }\n getFormGroup(dir: FormGroupName): FormGroup {\n this.syncHostFormGroupReference();\n\n if (this.hostFormGroupDirective && typeof (this.hostFormGroupDirective as any).getFormGroup === 'function') {\n return (this.hostFormGroupDirective as any).getFormGroup(dir);\n }\n const path = this.getDirPath(dir as any);\n const control = this.formGroup.get(path);\n return control instanceof FormGroup ? control : this.ensureGroupPath(path);\n }\n removeControl(dir: FormControlName): void {\n this.syncHostFormGroupReference();\n\n this.hostFormGroupDirective?.removeControl(dir);\n const idx = this.registeredDirectives.indexOf(dir);\n if (idx >= 0) this.registeredDirectives.splice(idx, 1);\n }\n getControl(dir: FormControlName): AbstractControl | null {\n this.syncHostFormGroupReference();\n return this.formGroup.get(dir.path);\n }\n updateModel(dir: FormControlName, value: any): void {\n if (this.hostFormGroupDirective) {\n this.hostFormGroupDirective.updateModel(dir as any, value);\n } else {\n const ctrl = this.formGroup.get(dir.path);\n ctrl?.setValue(value);\n }\n }\n\n handleAction(actionId: string): void {\n if (actionId === 'submit') {\n this.handleSubmit();\n } else if (actionId === 'save') {\n this.handleSave();\n } else if (actionId === 'reset') {\n this.handleReset();\n } else if (this.instance) {\n this.metadataChange.emit(this.instance.currentConfig);\n }\n }\n\n async handleSubmit(): Promise<void> {\n if (!this.instance) {\n return;\n }\n const value = this.formGroup.getRawValue();\n const beforeSubmitOk = await this.runHooks('beforeSubmit', { value });\n if (!beforeSubmitOk) {\n return;\n }\n if (this.enableAutoSave()) {\n this.instance.saveDraft(value);\n }\n this.submitted.emit({ value, instance: this.instance });\n await this.runHooks('afterSubmit', { value });\n }\n\n handleSave(): void {\n if (!this.instance) {\n return;\n }\n if (this.enableAutoSave()) {\n this.instance.saveDraft();\n }\n this.saved.emit(this.instance);\n this.metadataChange.emit(this.instance.currentConfig);\n }\n\n /** True when host applied [formGroup] directly on <praxis-manual-form>. */\n isHostTyped(): boolean {\n return !!this.hostFormGroupDirective?.form;\n }\n\n handleReset(): void {\n if (!this.instance) {\n return;\n }\n this.instance.resetToSeed();\n this.hostFormGroupDirective?.resetForm(this.instance.form.getRawValue());\n this.resetEvent.emit(this.instance);\n }\n\n private async runHooks(\n stage: FormHookStage,\n extras?: any,\n configOverride?: FormConfig,\n ): Promise<boolean> {\n const registry = this.hooksRegistry;\n const config = configOverride ?? this.instance?.currentConfig;\n if (!registry || !config?.hooks) {\n return true;\n }\n const declarations = config.hooks[stage];\n if (!declarations || declarations.length === 0) {\n return true;\n }\n\n try {\n const result = await registry.run(stage, { formGroup: this.formGroup, formConfig: config, extras }, declarations);\n if (result.stopped && stage !== 'onError' && config.hooks.onError?.length) {\n await registry.run(\n 'onError',\n { formGroup: this.formGroup, formConfig: config, extras: { ...extras, stopped: result.stopped } },\n config.hooks.onError,\n );\n }\n return !result.stopped;\n } catch {\n if (stage !== 'onError' && config.hooks.onError?.length) {\n try {\n await registry.run(\n 'onError',\n { formGroup: this.formGroup, formConfig: config, extras: { ...extras, error: 'hook-exception' } },\n config.hooks.onError,\n );\n } catch {}\n }\n return false;\n }\n }\n\n /**\n * Attempts to open the field metadata editor respecting the component's\n * editModeEnabled input. No-ops when disabled or without an instance.\n */\n tryOpenFieldEditor(fieldName: string): void {\n if (!this.editModeEnabled()) {\n return;\n }\n const instance = this.instance;\n if (!instance || !fieldName) {\n return;\n }\n try {\n void this.metadataBridge.openEditor(instance, fieldName);\n } catch {}\n }\n\n /** Opens a simple form-level editor listing the fields and their visibility. */\n async openFormEditor(): Promise<void> {\n if (!this.editModeEnabled() || !this.instance) return;\n\n let ManualFormConfigEditorComponent: any;\n try {\n const module = await import('../manual-form-config-editor/manual-form-config-editor.component');\n ManualFormConfigEditorComponent = (module as any)?.ManualFormConfigEditorComponent;\n } catch {\n return;\n }\n const formId = this.formId();\n const keyId = this.componentKeyId();\n this.settingsPanel.open({\n id: keyId ? `manual-form-editor.${keyId}` : (formId ? `manual-form-editor.${formId}` : 'manual-form-editor'),\n title: this.formTitle() || 'Editor do Formulário',\n titleIcon: 'tune',\n content: {\n component: ManualFormConfigEditorComponent,\n inputs: { instance: this.instance },\n },\n });\n }\n\n applyConfigFromAdapter(config: FormConfig): void {\n if (!this.instance) {\n return;\n }\n this.instance.replaceConfig(config);\n this.resolvedActions = this.normalizeActions(config.actions ?? null);\n this.metadataChange.emit(this.instance.currentConfig);\n this.cdr.markForCheck();\n }\n\n private async initialize(fromChanges: boolean): Promise<void> {\n this.syncHostFormGroupReference();\n\n if (!this.formId()) {\n return;\n }\n const fields = this.collectFields();\n if (isDevMode()) console.debug('[ManualForm] initialize: detected fields', fields.map(f => f.name));\n if (fields.length === 0) {\n return;\n }\n\n const seed = this.createSeedFromFields(fields);\n const beforeInitOk = await this.runHooks('beforeInit', { seed }, seed.config);\n if (!beforeInitOk) {\n return;\n }\n const persistence = { ...(this.persistenceOptions() ?? {}) };\n const keyId = this.componentKeyId();\n if (keyId) {\n persistence.storageKey = `manual-form:${keyId}`;\n }\n // Create runtime instance and let it populate our existing FormGroup\n this.instance = this.instanceFactory.create(seed, persistence, this.formGroup);\n if (isDevMode()) console.debug('[ManualForm] instance created with seed; current controls', Object.keys((this.formGroup as any).controls || {}));\n\n this.applyInstanceToTemplate(fields);\n this.registerToolbarBindings(fields);\n this.attachMetadataSync();\n\n // Auto-save value changes with debounce\n if (this.enableAutoSave() && this.instance) {\n this.instance.form.valueChanges\n .pipe(debounceTime(this.autoSaveDebounceMs()), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n try { this.instance?.saveDraft(); } catch {}\n });\n }\n await this.runHooks('afterInit', { seed });\n this.cdr.markForCheck();\n }\n\n private collectFields(): DetectedField[] {\n if (!this.formControls) {\n return [];\n }\n const result: DetectedField[] = [];\n for (const dir of this.formControls) {\n const name = this.usePathNames()\n ? (Array.isArray((dir as any).path) && (dir as any).path.length ? ((dir as any).path as string[]).join('.') : (typeof dir.name === 'string' ? dir.name : null))\n : (typeof dir.name === 'string' ? dir.name : null);\n if (!name) {\n continue;\n }\n const component = this.resolveValueAccessor(dir);\n if (!component) {\n continue;\n }\n result.push({\n name,\n control: dir.control,\n component,\n selector: this.resolveSelector(component, dir),\n element: this.resolveHostElement(component, dir),\n });\n }\n return result;\n }\n\n private componentKeyId(): string | null {\n const key = this.componentKeys.buildComponentId({\n componentType: 'praxis-manual-form',\n componentId: this.formId(),\n instanceKey: this.componentInstanceId(),\n componentRef: this,\n route: this.route,\n requireComponentId: true,\n });\n if (!key) this.warnMissingId();\n return key;\n }\n\n private warnMissingId(): void {\n if (this.warnedMissingId) return;\n this.warnedMissingId = true;\n console.warn('[ManualForm] formId is required for config persistence.');\n }\n\n private resolveValueAccessor(dir: FormControlName): unknown {\n const accessor = dir.valueAccessor as unknown;\n if (!accessor) {\n return undefined;\n }\n if (Array.isArray(accessor)) {\n return accessor[0];\n }\n return accessor;\n }\n\n private resolveSelector(component: any, dir: FormControlName): string | undefined {\n const cmpDef = component?.constructor?.ɵcmp;\n if (cmpDef?.selectors?.length) {\n const first = cmpDef.selectors[0];\n if (Array.isArray(first) && first.length && typeof first[0] === 'string') {\n return first[0];\n }\n }\n const element: HTMLElement | undefined = (component as any)?.elementRef?.nativeElement\n ?? (dir as any)?._elementRef?.nativeElement;\n return element?.tagName?.toLowerCase();\n }\n\n private resolveHostElement(component: any, dir: FormControlName): HTMLElement | undefined {\n return (component as any)?.elementRef?.nativeElement\n ?? (dir as any)?._elementRef?.nativeElement;\n }\n\n private createSeedFromFields(fields: DetectedField[]) {\n const metadataList = fields.map((field) => this.buildMetadataForField(field));\n const actions = this.normalizeActions(this.actions() ?? null);\n\n const currentMeta = this.instance?.currentConfig.metadata\n ? deepClone(this.instance.currentConfig.metadata)\n : undefined;\n\n const config: FormConfig = {\n sections: [\n {\n id: 'auto-section',\n title: this.formTitle(),\n description: this.formDescription(),\n rows: [\n {\n id: 'auto-row',\n columns: [\n {\n id: 'auto-column',\n fields: metadataList.map((meta) => meta.name),\n },\n ],\n },\n ],\n },\n ],\n fieldMetadata: metadataList,\n metadata: currentMeta,\n actions,\n };\n\n this.resolvedActions = actions;\n\n return createManualFormSeed(this.formId(), config, {\n source: 'generated',\n version: '1.0.0',\n });\n }\n\n private applyInstanceToTemplate(fields: DetectedField[]): void {\n if (!this.instance) {\n return;\n }\n\n for (const field of fields) {\n this.instance.bindComponent(field.name, field.component);\n // Only apply metadata manually if the component doesn't expose a standard API\n const hasStdApi =\n typeof (field.component as any)?.setInputMetadata === 'function' ||\n !!((field.component as any)?.metadata && typeof (field.component as any).metadata.set === 'function');\n if (!hasStdApi) {\n const metadata = this.instance.getFieldMetadata(field.name);\n if (metadata) {\n this.applyMetadataToComponent(field.component, metadata);\n }\n }\n }\n }\n\n private registerToolbarBindings(fields: DetectedField[]): void {\n this.toolbarSubscriptions.forEach((sub) => sub.unsubscribe());\n this.toolbarSubscriptions = [];\n\n if (!this.editModeEnabled()) {\n return;\n }\n\n for (const field of fields) {\n const host = field.element;\n if (!host) {\n continue;\n }\n const clickSub = fromEvent<MouseEvent>(host, 'click')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n this.openToolbarForField(field, false);\n });\n const keySub = fromEvent<KeyboardEvent>(host, 'keydown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n if (!this.isToolbarShortcut(event)) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.openToolbarForField(field, true);\n });\n this.toolbarSubscriptions.push(clickSub, keySub);\n }\n }\n\n private isToolbarShortcut(event: KeyboardEvent): boolean {\n return event.key === 'F2' || (event.altKey && event.key === 'F10');\n }\n\n private openToolbarForField(field: DetectedField, openedByKeyboard: boolean): void {\n if (!this.editModeEnabled()) {\n return;\n }\n const instance = this.instance;\n if (!instance || !field.element) {\n return;\n }\n const resolution = this.fieldKeyService.resolveFieldName(field.name, instance);\n if (resolution.status !== 'ok') {\n return;\n }\n const metadata = instance.getFieldMetadata(resolution.key);\n if (!metadata) {\n return;\n }\n\n if (!this.toolbarOverlayRef) {\n this.createToolbarOverlay(field.element);\n } else if (this.toolbarAnchor !== field.element) {\n this.updateToolbarAnchor(field.element);\n }\n\n this.toolbarFieldKey = resolution.key;\n this.toolbarAnchor = field.element;\n this.updateToolbarMetadata(metadata, openedByKeyboard);\n this.toolbarOverlayRef?.updatePosition();\n }\n\n private createToolbarOverlay(anchor: HTMLElement): void {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(anchor)\n .withPositions([\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -10,\n },\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 10,\n },\n ])\n .withPush(true)\n .withFlexibleDimensions(false)\n .withViewportMargin(8);\n\n this.toolbarOverlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n panelClass: 'pdx-manual-toolbar-panel',\n });\n this.toolbarOverlayRef.overlayElement.style.setProperty(\n 'z-index',\n 'var(--pdx-manual-toolbar-z, 2001)',\n );\n\n this.toolbarOverlayRef\n .detachments()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.resetToolbarState());\n\n const portal = new ComponentPortal(ManualFieldToolbarComponent);\n this.toolbarComponentRef = this.toolbarOverlayRef.attach(portal);\n this.bindToolbarActions();\n this.attachOutsideClickHandler();\n }\n\n private updateToolbarAnchor(anchor: HTMLElement): void {\n if (!this.toolbarOverlayRef) {\n return;\n }\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(anchor)\n .withPositions([\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -10,\n },\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 10,\n },\n ])\n .withPush(true)\n .withFlexibleDimensions(false)\n .withViewportMargin(8);\n\n this.toolbarOverlayRef.updatePositionStrategy(positionStrategy);\n }\n\n private bindToolbarActions(): void {\n this.toolbarActionSubscriptions.forEach((sub) => sub.unsubscribe());\n this.toolbarActionSubscriptions = [];\n\n if (!this.toolbarComponentRef) {\n return;\n }\n const instance = this.toolbarComponentRef.instance;\n this.toolbarActionSubscriptions.push(\n instance.toggleRequired.subscribe(() => this.toggleFieldFlag('required')),\n instance.toggleReadonly.subscribe(() => this.toggleFieldFlag('readOnly')),\n instance.toggleHidden.subscribe(() => this.toggleFieldFlag('hidden')),\n instance.toggleDisabled.subscribe(() => this.toggleFieldFlag('disabled')),\n instance.openEditor.subscribe(() => this.openToolbarEditor()),\n instance.requestClose.subscribe(() => this.closeToolbar()),\n );\n }\n\n private toggleFieldFlag(field: 'required' | 'readOnly' | 'hidden' | 'disabled'): void {\n if (!this.instance || !this.toolbarFieldKey) {\n return;\n }\n const current = this.instance.getFieldMetadata(this.toolbarFieldKey);\n if (!current) {\n return;\n }\n if (field === 'required') {\n const currentRequired = !!current.required || !!current.validators?.required;\n const nextRequired = !currentRequired;\n this.instance.patchFieldMetadata(this.toolbarFieldKey, {\n required: nextRequired,\n validators: { ...(current.validators ?? {}), required: nextRequired },\n });\n return;\n }\n const patch: Partial<FieldMetadata> = {\n [field]: !current[field],\n } as Partial<FieldMetadata>;\n this.instance.patchFieldMetadata(this.toolbarFieldKey, patch);\n }\n\n private openToolbarEditor(): void {\n if (!this.toolbarFieldKey || !this.instance) {\n return;\n }\n this.tryOpenFieldEditor(this.toolbarFieldKey);\n }\n\n private updateToolbarMetadata(metadata: FieldMetadata, openedByKeyboard: boolean): void {\n if (!this.toolbarComponentRef) {\n return;\n }\n this.toolbarComponentRef.setInput('metadata', metadata);\n this.toolbarComponentRef.changeDetectorRef.detectChanges();\n if (openedByKeyboard) {\n this.toolbarComponentRef.instance.focusFirstAction();\n }\n }\n\n private attachOutsideClickHandler(): void {\n this.outsideClickSubscription?.unsubscribe();\n if (!isPlatformBrowser(this.platformId) || typeof document === 'undefined') {\n return;\n }\n this.outsideClickSubscription = fromEvent<MouseEvent>(document, 'mousedown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n const target = event.target as Node | null;\n if (!target) {\n return;\n }\n const overlayEl = this.toolbarOverlayRef?.overlayElement;\n if (overlayEl && overlayEl.contains(target)) {\n return;\n }\n if (this.toolbarAnchor && this.toolbarAnchor.contains(target as Node)) {\n return;\n }\n this.closeToolbar();\n });\n }\n\n private closeToolbar(): void {\n this.toolbarOverlayRef?.detach();\n this.toolbarOverlayRef?.dispose();\n this.toolbarOverlayRef = undefined;\n this.toolbarComponentRef = undefined;\n this.outsideClickSubscription?.unsubscribe();\n this.outsideClickSubscription = undefined;\n this.resetToolbarState();\n }\n\n private resetToolbarState(): void {\n this.toolbarFieldKey = undefined;\n this.toolbarAnchor = undefined;\n }\n\n private attachMetadataSync(): void {\n this.metadataSubscription?.unsubscribe();\n const instance = this.instance;\n if (!instance) {\n return;\n }\n this.metadataSubscription = instance\n .metadataChanges()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((map) => {\n if (!this.toolbarFieldKey) {\n return;\n }\n const meta = map.get(this.toolbarFieldKey);\n if (!meta) {\n this.closeToolbar();\n return;\n }\n this.updateToolbarMetadata(meta, false);\n });\n }\n\n private buildMetadataForField(field: DetectedField): FieldMetadata {\n const existing = this.extractExistingMetadata(field.component);\n const label = existing?.label ?? this.inferLabel(field, existing);\n const controlType = existing?.controlType ?? this.inferControlType(field);\n const validators = this.inferValidators(field.control, existing);\n\n return {\n ...(existing ?? {}),\n name: field.name,\n label,\n controlType,\n validators: { ...existing?.validators, ...validators },\n } as FieldMetadata;\n }\n\n private syncHostFormGroupReference(): void {\n const hostForm = this.hostFormGroupDirective?.form;\n if (hostForm && this.formGroup !== hostForm) {\n this.formGroup = hostForm as FormGroup;\n if (isDevMode()) console.debug('[ManualForm] Synced FormGroup from host FormGroupDirective');\n }\n }\n\n private getControlByPath(path: string[]): AbstractControl | null {\n if (!Array.isArray(path) || path.length === 0) return null;\n return this.formGroup.get(path as any);\n }\n\n private getDirPath(dir: { path?: string[] | null; name?: string | number | null }): string[] {\n if (Array.isArray(dir?.path) && dir.path.length) {\n return dir.path;\n }\n if (typeof dir?.name === 'string' && dir.name.length) {\n return [dir.name];\n }\n return [];\n }\n\n private ensureGroupPath(path: string[]): FormGroup {\n let group: FormGroup = this.formGroup;\n if (!Array.isArray(path) || path.length === 0) {\n return group;\n }\n for (const seg of path) {\n const existing = group.get(seg);\n if (existing instanceof FormGroup) {\n group = existing;\n } else {\n const next = new FormGroup({});\n group.addControl(seg, next);\n group = next;\n }\n }\n return group;\n }\n\n private ensureControlPath(path: string[]): void {\n if (!Array.isArray(path) || path.length === 0) return;\n const leaf = path[path.length - 1]!;\n const group = this.ensureGroupPath(path.slice(0, -1));\n if (!group.get(leaf)) {\n group.addControl(leaf, new FormControl());\n }\n }\n\n private extractExistingMetadata(component: any): FieldMetadata | undefined {\n try {\n const metaSignal = component?.metadata;\n if (typeof metaSignal === 'function') {\n const value = metaSignal();\n if (value) {\n return deepClone(value) as FieldMetadata;\n }\n }\n if (typeof component?.getMetadata === 'function') {\n const value = component.getMetadata();\n if (value) {\n return deepClone(value) as FieldMetadata;\n }\n }\n } catch {}\n return undefined;\n }\n\n private inferLabel(field: DetectedField, existing?: FieldMetadata): string {\n if (existing?.label) {\n return existing.label;\n }\n const componentLabel = (field.component as any)?.label;\n if (typeof componentLabel === 'string' && componentLabel.trim().length > 0) {\n return componentLabel;\n }\n return field.name\n .replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n .replace(/[-_]/g, ' ')\n .replace(/\\s+/g, ' ')\n .replace(/^\\w/, (c) => c.toUpperCase());\n }\n\n private inferControlType(field: DetectedField): FieldControlType {\n const selector = field.selector?.toLowerCase();\n if (selector) {\n const fromLocal = this.selectorToControlType[selector];\n if (fromLocal) return fromLocal;\n const fromRegistry = this.selectorRegistry?.resolve(selector);\n if (fromRegistry) return fromRegistry;\n }\n const ctorName = field.component?.constructor?.name ?? '';\n for (const [key, value] of Object.entries(this.constructorToControlType)) {\n if (ctorName.includes(key)) {\n return value;\n }\n }\n return FieldControlType.INPUT;\n }\n\n private inferValidators(control: AbstractControl | null, existing?: FieldMetadata): Record<string, any> {\n const validators: Record<string, any> = existing?.validators ? { ...existing.validators } : {};\n if (!control) {\n return validators;\n }\n const hasValidator = (fn: ValidatorFn) => {\n const anyControl = control as FormControl & { hasValidator?: (fn: ValidatorFn) => boolean };\n if (typeof anyControl.hasValidator === 'function') {\n return anyControl.hasValidator(fn);\n }\n try {\n return !!control.validator && !!control.validator({} as AbstractControl);\n } catch {\n return false;\n }\n };\n\n if (hasValidator(Validators.required)) {\n validators.required = true;\n }\n return validators;\n }\n\n private applyMetadataToComponent(component: any, metadata: FieldMetadata): void {\n try {\n if (typeof component?.setInputMetadata === 'function') {\n component.setInputMetadata(metadata);\n }\n const metaSignal = component?.metadata;\n if (metaSignal && typeof metaSignal.set === 'function') {\n metaSignal.set(metadata);\n }\n if ('label' in component && !component.label) {\n component.label = metadata.label;\n }\n // Visibilidade: esconder/mostrar com base em hidden/formHidden, mesmo em templates manuais\n const isHidden = !!(metadata as any)?.hidden || !!(metadata as any)?.formHidden;\n if ('visible' in component) {\n try { component.visible = !isHidden; } catch {}\n }\n const hostEl: HTMLElement | undefined = (component as any)?.elementRef?.nativeElement;\n if (hostEl) {\n hostEl.style.display = isHidden ? 'none' : '';\n hostEl.setAttribute('aria-hidden', String(isHidden));\n }\n } catch {}\n }\n\n private buildCurrentConfigSnapshot(): FormConfig {\n const metadata = this.instance?.currentConfig.fieldMetadata ?? [];\n return {\n fieldMetadata: deepClone(metadata),\n sections: this.instance?.currentConfig.sections\n ? deepClone(this.instance.currentConfig.sections)\n : [],\n } as FormConfig;\n }\n\n private normalizeActions(source?: FormActionsLayout | null): FormActionsLayout {\n const base = deepClone(DEFAULT_ACTIONS);\n if (!source) {\n return base;\n }\n\n return {\n submit: mergeAction(base.submit, source.submit),\n cancel: mergeAction(base.cancel, source.cancel),\n reset: mergeAction(base.reset, source.reset),\n custom: source.custom ? source.custom.map(makeAction) : base.custom,\n position: source.position ?? base.position,\n orientation: source.orientation ?? base.orientation,\n spacing: source.spacing ?? base.spacing,\n sticky: source.sticky ?? base.sticky,\n placement: source.placement ?? base.placement,\n mobile: source.mobile ?? base.mobile,\n containerClassName: source.containerClassName ?? base.containerClassName,\n containerStyles: source.containerStyles ?? base.containerStyles,\n showSaveButton: source.showSaveButton ?? base.showSaveButton,\n submitButtonLabel: source.submitButtonLabel ?? base.submitButtonLabel,\n showCancelButton: source.showCancelButton ?? base.showCancelButton,\n cancelButtonLabel: source.cancelButtonLabel ?? base.cancelButtonLabel,\n showResetButton: source.showResetButton ?? base.showResetButton,\n resetButtonLabel: source.resetButtonLabel ?? base.resetButtonLabel,\n };\n }\n}\n\nconst DEFAULT_ACTIONS: FormActionsLayout = {\n submit: makeAction({ id: 'submit', label: 'Salvar', visible: true, type: 'submit', color: 'primary' }),\n cancel: makeAction({ id: 'cancel', label: 'Cancelar', visible: false, type: 'button' }),\n reset: makeAction({ id: 'reset', label: 'Restaurar', visible: true, type: 'reset' }),\n custom: [],\n position: 'right',\n orientation: 'horizontal',\n spacing: 'normal',\n};\n\nfunction makeAction(action: Partial<FormActionButton>): FormActionButton {\n return {\n id: action.id ?? 'action',\n label: action.label ?? 'Ação',\n visible: action.visible !== false,\n type: action.type ?? 'button',\n color: action.color,\n disabled: action.disabled,\n icon: action.icon,\n action: action.action,\n tooltip: action.tooltip,\n variant: action.variant,\n size: action.size,\n loading: action.loading,\n shortcut: action.shortcut,\n };\n}\n\nfunction mergeAction(base: FormActionButton, override?: FormActionButton): FormActionButton {\n if (!override) {\n return base;\n }\n return {\n ...base,\n ...override,\n visible: override.visible !== undefined ? override.visible : base.visible,\n };\n}\n\nconst DEFAULT_SELECTOR_TO_CONTROL_TYPE: Record<string, FieldControlType> =\n DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP;\n\nconst DEFAULT_CONSTRUCTOR_TO_CONTROL_TYPE: Record<string, FieldControlType> = {\n TextInput: FieldControlType.INPUT,\n Textarea: FieldControlType.TEXTAREA,\n NumberInput: FieldControlType.NUMERIC_TEXT_BOX,\n Currency: FieldControlType.CURRENCY_INPUT,\n DatePicker: FieldControlType.DATE_PICKER,\n DateRange: FieldControlType.DATE_RANGE,\n TimePicker: FieldControlType.TIME_PICKER,\n ColorPicker: FieldControlType.COLOR_PICKER,\n SelectComponent: FieldControlType.SELECT,\n Autocomplete: FieldControlType.AUTO_COMPLETE,\n CheckboxGroup: FieldControlType.CHECKBOX,\n RadioGroup: FieldControlType.RADIO,\n SlideToggle: FieldControlType.TOGGLE,\n SliderComponent: FieldControlType.SLIDER,\n RangeSlider: FieldControlType.RANGE_SLIDER,\n FileUpload: FieldControlType.FILE_UPLOAD,\n};\n","<div class=\"pdx-manual-form\">\n @if (showHeader()) {\n <praxis-manual-form-header [instance]=\"instance\" [title]=\"formTitle()\" [description]=\"formDescription()\"\n [editModeEnabled]=\"editModeEnabled()\" (editForm)=\"openFormEditor()\" (save)=\"handleSave()\"\n (reset)=\"handleReset()\"></praxis-manual-form-header>\n }\n\n @if (editModeEnabled()) {\n <div class=\"pdx-manual-form__assistant\">\n <praxis-ai-assistant [adapter]=\"aiAdapter\"></praxis-ai-assistant>\n </div>\n }\n\n <form class=\"pdx-manual-form__form\" [formGroup]=\"formGroup\" (submit)=\"handleSubmit(); $event.preventDefault()\">\n <ng-content></ng-content>\n </form>\n\n @if (showActions() && resolvedActions) {\n <praxis-manual-form-actions [actions]=\"resolvedActions\"\n (actionClick)=\"handleAction($event)\"></praxis-manual-form-actions>\n }\n</div>\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { SETTINGS_PANEL_DATA, SETTINGS_PANEL_REF, SettingsPanelRef } from '@praxisui/settings-panel';\nimport { ManualFormInstance } from '../../stores/manual-form-instance';\nimport {\n FieldMetadata,\n FormActionButton,\n FormActionsLayout,\n FormBehaviorLayout,\n FormHookStage,\n FormHooksLayout,\n FormLayoutRule,\n FormMessagesLayout,\n FieldDefinition,\n} from '@praxisui/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { deepClone } from '../../utils/clone.util';\nimport { CascadeManagerTabComponent } from '@praxisui/metadata-editor';\n\ninterface PanelInputs {\n instance: ManualFormInstance;\n}\n\n@Component({\n selector: 'praxis-manual-form-config-editor',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n MatTabsModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatSlideToggleModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n CascadeManagerTabComponent,\n ],\n template: `\n <div class=\"mf-editor\">\n <div class=\"mf-editor__toolbar\">\n <div class=\"mf-editor__title\">\n <span>Configurações do formulário</span>\n <small class=\"mf-editor__subtitle\">Campos, ações, mensagens e comportamento</small>\n </div>\n <div class=\"spacer\"></div>\n <button type=\"button\" class=\"mf-btn\" (click)=\"close()\">Fechar</button>\n </div>\n\n <mat-tab-group class=\"mf-tabs\">\n <mat-tab label=\"Campos\">\n <div class=\"mf-tab\">\n <label class=\"mf-editor__filter\">\n <input type=\"checkbox\" [(ngModel)]=\"onlyHidden\" (change)=\"applyFilter()\" />\n <span>Mostrar apenas ocultos</span>\n </label>\n <div class=\"mf-editor__list\">\n <div class=\"mf-editor__row mf-editor__row--head\">\n <div class=\"col col--name\">Campo</div>\n <div class=\"col col--label\">Rótulo</div>\n <div class=\"col col--type\">Tipo</div>\n <div class=\"col col--vis\">Visível</div>\n <div class=\"col col--req\">Obrigatório</div>\n <div class=\"col col--ro\">Som. leitura</div>\n <div class=\"col col--dis\">Desabilitado</div>\n </div>\n\n @for (f of filtered; track f.name) {\n <div class=\"mf-editor__row\">\n <div class=\"col col--name\"><code>{{ f.name }}</code></div>\n <div class=\"col col--label\">{{ f.label || f.name }}</div>\n <div class=\"col col--type\">{{ f.controlType }}</div>\n <div class=\"col col--vis\">\n <label class=\"toggle\">\n <input type=\"checkbox\" [checked]=\"!f.hidden\" (change)=\"toggleVisibility(f, $any($event.target).checked)\" />\n <span>{{ f.hidden ? 'Oculto' : 'Visível' }}</span>\n </label>\n </div>\n <div class=\"col col--req\">\n <label class=\"toggle\">\n <input type=\"checkbox\" [checked]=\"!!f.required\" (change)=\"toggleRequired(f, $any($event.target).checked)\" />\n <span>{{ f.required ? 'Sim' : 'Não' }}</span>\n </label>\n </div>\n <div class=\"col col--ro\">\n <label class=\"toggle\">\n <input type=\"checkbox\" [checked]=\"!!f.readOnly\" (change)=\"toggleReadOnly(f, $any($event.target).checked)\" />\n <span>{{ f.readOnly ? 'Sim' : 'Não' }}</span>\n </label>\n </div>\n <div class=\"col col--dis\">\n <label class=\"toggle\">\n <input type=\"checkbox\" [checked]=\"!!f.disabled\" (change)=\"toggleDisabled(f, $any($event.target).checked)\" />\n <span>{{ f.disabled ? 'Sim' : 'Não' }}</span>\n </label>\n </div>\n </div>\n }\n </div>\n </div>\n </mat-tab>\n\n <mat-tab label=\"Ações\">\n <div class=\"mf-tab\">\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Botões padrão</h3>\n <p class=\"mf-help\">Controle rótulos, visibilidade e estilo dos botões básicos.</p>\n </div>\n </div>\n <div class=\"mf-actions-grid\">\n @for (block of actionBlocks; track block.key) {\n <div class=\"mf-action-card\">\n <div class=\"mf-action-card__title\">{{ block.label }}</div>\n <mat-slide-toggle\n [checked]=\"actionsModel[block.key].visible\"\n (change)=\"updateActionField(block.key, 'visible', $event.checked)\"\n >\n Visível\n </mat-slide-toggle>\n <mat-form-field appearance=\"outline\">\n <mat-label>Label</mat-label>\n <input\n matInput\n [value]=\"actionsModel[block.key].label\"\n (input)=\"updateActionField(block.key, 'label', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Ícone</mat-label>\n <input\n matInput\n [value]=\"actionsModel[block.key].icon || ''\"\n (input)=\"updateActionField(block.key, 'icon', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Variante</mat-label>\n <mat-select\n [value]=\"actionsModel[block.key].variant || null\"\n (selectionChange)=\"updateActionField(block.key, 'variant', $event.value)\"\n >\n <mat-option [value]=\"null\">Padrão</mat-option>\n <mat-option value=\"raised\">Elevado</mat-option>\n <mat-option value=\"stroked\">Contornado</mat-option>\n <mat-option value=\"flat\">Plano</mat-option>\n <mat-option value=\"fab\">Flutuante</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Cor</mat-label>\n <mat-select\n [value]=\"actionsModel[block.key].color || null\"\n (selectionChange)=\"updateActionField(block.key, 'color', $event.value)\"\n >\n <mat-option [value]=\"null\">Padrão</mat-option>\n <mat-option value=\"primary\">Primary</mat-option>\n <mat-option value=\"accent\">Accent</mat-option>\n <mat-option value=\"warn\">Warn</mat-option>\n <mat-option value=\"basic\">Basic</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Atalho</mat-label>\n <input\n matInput\n [value]=\"actionsModel[block.key].shortcut || ''\"\n (input)=\"updateActionField(block.key, 'shortcut', $any($event.target).value)\"\n />\n </mat-form-field>\n </div>\n }\n </div>\n </section>\n\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Layout das ações</h3>\n <p class=\"mf-help\">Define alinhamento e disposição da barra de ações.</p>\n </div>\n </div>\n <div class=\"mf-actions-layout\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Posição</mat-label>\n <mat-select\n [value]=\"actionsModel.position || null\"\n (selectionChange)=\"updateActionsLayout('position', $event.value)\"\n >\n <mat-option value=\"left\">Esquerda</mat-option>\n <mat-option value=\"center\">Centro</mat-option>\n <mat-option value=\"right\">Direita</mat-option>\n <mat-option value=\"justified\">Justificado</mat-option>\n <mat-option value=\"split\">Split</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Orientação</mat-label>\n <mat-select\n [value]=\"actionsModel.orientation || null\"\n (selectionChange)=\"updateActionsLayout('orientation', $event.value)\"\n >\n <mat-option value=\"horizontal\">Horizontal</mat-option>\n <mat-option value=\"vertical\">Vertical</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Espaçamento</mat-label>\n <mat-select\n [value]=\"actionsModel.spacing || null\"\n (selectionChange)=\"updateActionsLayout('spacing', $event.value)\"\n >\n <mat-option value=\"compact\">Compacto</mat-option>\n <mat-option value=\"normal\">Normal</mat-option>\n <mat-option value=\"spacious\">Espaçoso</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Posicionamento</mat-label>\n <mat-select\n [value]=\"actionsModel.placement || null\"\n (selectionChange)=\"updateActionsLayout('placement', $event.value)\"\n >\n <mat-option value=\"afterSections\">Após seções</mat-option>\n <mat-option value=\"insideLastSection\">Dentro da última seção</mat-option>\n <mat-option value=\"top\">Topo</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-slide-toggle\n [checked]=\"!!actionsModel.sticky\"\n (change)=\"updateActionsLayout('sticky', $event.checked)\"\n >\n Ações fixas\n </mat-slide-toggle>\n <mat-slide-toggle\n [checked]=\"!!actionsModel.divider\"\n (change)=\"updateActionsLayout('divider', $event.checked)\"\n >\n Mostrar divisor\n </mat-slide-toggle>\n </div>\n </section>\n\n <section class=\"mf-section\">\n <div class=\"mf-section__header mf-section__header--row\">\n <div>\n <h3>Ações customizadas</h3>\n <p class=\"mf-help\">Crie botões extras com evento próprio.</p>\n </div>\n <button mat-stroked-button type=\"button\" (click)=\"addCustomAction()\">\n <mat-icon>add</mat-icon>\n Adicionar ação\n </button>\n </div>\n <div class=\"mf-custom-actions\">\n @if (actionsModel.custom?.length) {\n @for (action of actionsModel.custom || []; track action.id) {\n <div class=\"mf-custom-card\">\n <div class=\"mf-custom-card__header\">\n <div class=\"mf-custom-card__title\">{{ action.label || action.id }}</div>\n <button mat-icon-button type=\"button\" (click)=\"removeCustomAction(action)\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n <div class=\"mf-custom-card__grid\">\n <mat-form-field appearance=\"outline\">\n <mat-label>ID</mat-label>\n <input\n matInput\n [value]=\"action.id || ''\"\n (input)=\"updateCustomActionField(action, 'id', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Label</mat-label>\n <input\n matInput\n [value]=\"action.label || ''\"\n (input)=\"updateCustomActionField(action, 'label', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Evento (action)</mat-label>\n <input\n matInput\n [value]=\"action.action || ''\"\n (input)=\"updateCustomActionField(action, 'action', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Ícone</mat-label>\n <input\n matInput\n [value]=\"action.icon || ''\"\n (input)=\"updateCustomActionField(action, 'icon', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Variante</mat-label>\n <mat-select\n [value]=\"action.variant || null\"\n (selectionChange)=\"updateCustomActionField(action, 'variant', $event.value)\"\n >\n <mat-option [value]=\"null\">Padrão</mat-option>\n <mat-option value=\"raised\">Elevado</mat-option>\n <mat-option value=\"stroked\">Contornado</mat-option>\n <mat-option value=\"flat\">Plano</mat-option>\n <mat-option value=\"fab\">Flutuante</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Cor</mat-label>\n <mat-select\n [value]=\"action.color || null\"\n (selectionChange)=\"updateCustomActionField(action, 'color', $event.value)\"\n >\n <mat-option [value]=\"null\">Padrão</mat-option>\n <mat-option value=\"primary\">Primary</mat-option>\n <mat-option value=\"accent\">Accent</mat-option>\n <mat-option value=\"warn\">Warn</mat-option>\n <mat-option value=\"basic\">Basic</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Atalho</mat-label>\n <input\n matInput\n [value]=\"action.shortcut || ''\"\n (input)=\"updateCustomActionField(action, 'shortcut', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Tooltip</mat-label>\n <input\n matInput\n [value]=\"action.tooltip || ''\"\n (input)=\"updateCustomActionField(action, 'tooltip', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-slide-toggle\n [checked]=\"action.visible !== false\"\n (change)=\"updateCustomActionField(action, 'visible', $event.checked)\"\n >\n Visível\n </mat-slide-toggle>\n </div>\n </div>\n }\n } @else {\n <p class=\"mf-empty\">Nenhuma ação customizada cadastrada.</p>\n }\n </div>\n </section>\n </div>\n </mat-tab>\n\n <mat-tab label=\"Mensagens\">\n <div class=\"mf-tab\">\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Feedback padrão</h3>\n <p class=\"mf-help\">Mensagens de sucesso/erro exibidas pelo host.</p>\n </div>\n </div>\n <div class=\"mf-messages-grid\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Sucesso ao criar</mat-label>\n <input\n matInput\n [value]=\"messagesModel.createRegistrySuccess || ''\"\n (input)=\"updateMessage('createRegistrySuccess', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Erro ao criar</mat-label>\n <input\n matInput\n [value]=\"messagesModel.createRegistryError || ''\"\n (input)=\"updateMessage('createRegistryError', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Sucesso ao atualizar</mat-label>\n <input\n matInput\n [value]=\"messagesModel.updateRegistrySuccess || ''\"\n (input)=\"updateMessage('updateRegistrySuccess', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Erro ao atualizar</mat-label>\n <input\n matInput\n [value]=\"messagesModel.updateRegistryError || ''\"\n (input)=\"updateMessage('updateRegistryError', $any($event.target).value)\"\n />\n </mat-form-field>\n </div>\n </section>\n\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Confirmações</h3>\n <p class=\"mf-help\">Textos mostrados antes de ações críticas.</p>\n </div>\n </div>\n <div class=\"mf-messages-grid\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Enviar</mat-label>\n <input\n matInput\n [value]=\"messagesModel.confirmations?.submit || ''\"\n (input)=\"updateConfirmation('submit', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Cancelar</mat-label>\n <input\n matInput\n [value]=\"messagesModel.confirmations?.cancel || ''\"\n (input)=\"updateConfirmation('cancel', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Resetar</mat-label>\n <input\n matInput\n [value]=\"messagesModel.confirmations?.reset || ''\"\n (input)=\"updateConfirmation('reset', $any($event.target).value)\"\n />\n </mat-form-field>\n </div>\n </section>\n\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Loading</h3>\n <p class=\"mf-help\">Mensagens exibidas durante operações.</p>\n </div>\n </div>\n <div class=\"mf-messages-grid\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Salvar</mat-label>\n <input\n matInput\n [value]=\"messagesModel.loading?.submit || ''\"\n (input)=\"updateLoading('submit', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Cancelar</mat-label>\n <input\n matInput\n [value]=\"messagesModel.loading?.cancel || ''\"\n (input)=\"updateLoading('cancel', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Resetar</mat-label>\n <input\n matInput\n [value]=\"messagesModel.loading?.reset || ''\"\n (input)=\"updateLoading('reset', $any($event.target).value)\"\n />\n </mat-form-field>\n </div>\n </section>\n\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Mensagens por ação customizada</h3>\n <p class=\"mf-help\">Personalize textos por ID de ação.</p>\n </div>\n </div>\n <div class=\"mf-custom-messages\">\n @if (actionsModel.custom?.length) {\n @for (action of actionsModel.custom || []; track action.id) {\n <div class=\"mf-custom-message-card\">\n <div class=\"mf-custom-card__title\">{{ action.label || action.id }}</div>\n <div class=\"mf-custom-card__grid\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Confirmação</mat-label>\n <input\n matInput\n [value]=\"messagesModel.customActions?.[action.id || '']?.confirmation || ''\"\n (input)=\"updateCustomMessage(action, 'confirmation', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Sucesso</mat-label>\n <input\n matInput\n [value]=\"messagesModel.customActions?.[action.id || '']?.success || ''\"\n (input)=\"updateCustomMessage(action, 'success', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Erro</mat-label>\n <input\n matInput\n [value]=\"messagesModel.customActions?.[action.id || '']?.error || ''\"\n (input)=\"updateCustomMessage(action, 'error', $any($event.target).value)\"\n />\n </mat-form-field>\n </div>\n </div>\n }\n } @else {\n <p class=\"mf-empty\">Cadastre ações customizadas para configurar mensagens específicas.</p>\n }\n </div>\n </section>\n </div>\n </mat-tab>\n\n <mat-tab label=\"Comportamento\">\n <div class=\"mf-tab\">\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Comportamento do formulário</h3>\n <p class=\"mf-help\">Preferências aplicadas pelo host ou runtime.</p>\n </div>\n </div>\n <div class=\"mf-note\">Estas opções são persistidas no config; o host decide como aplicar.</div>\n <div class=\"mf-toggle-grid\">\n <mat-slide-toggle\n [checked]=\"!!behaviorModel.confirmOnUnsavedChanges\"\n (change)=\"updateBehavior('confirmOnUnsavedChanges', $event.checked)\"\n >\n Confirmar ao sair com alterações não salvas\n </mat-slide-toggle>\n <mat-slide-toggle\n [checked]=\"!!behaviorModel.trackHistory\"\n (change)=\"updateBehavior('trackHistory', $event.checked)\"\n >\n Rastrear histórico de alterações\n </mat-slide-toggle>\n <mat-slide-toggle\n [checked]=\"!!behaviorModel.focusFirstError\"\n (change)=\"updateBehavior('focusFirstError', $event.checked)\"\n >\n Focar no primeiro erro ao submeter\n </mat-slide-toggle>\n <mat-slide-toggle\n [checked]=\"!!behaviorModel.scrollToErrors\"\n (change)=\"updateBehavior('scrollToErrors', $event.checked)\"\n >\n Rolar até os erros ao submeter\n </mat-slide-toggle>\n <mat-slide-toggle\n [checked]=\"!!behaviorModel.clearAfterSave\"\n (change)=\"updateBehavior('clearAfterSave', $event.checked)\"\n >\n Limpar formulário após salvar\n </mat-slide-toggle>\n <mat-slide-toggle\n [checked]=\"!!behaviorModel.reactiveValidation\"\n (change)=\"updateBehavior('reactiveValidation', $event.checked)\"\n >\n Validação reativa\n </mat-slide-toggle>\n </div>\n <div class=\"mf-actions-layout\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Redirecionar após salvar (URL)</mat-label>\n <input\n matInput\n [value]=\"behaviorModel.redirectAfterSave || ''\"\n (input)=\"updateBehavior('redirectAfterSave', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Debounce validação reativa (ms)</mat-label>\n <input\n matInput\n type=\"number\"\n min=\"0\"\n [value]=\"behaviorModel.reactiveValidationDebounceMs || 0\"\n (input)=\"updateBehavior('reactiveValidationDebounceMs', $any($event.target).valueAsNumber || 0)\"\n />\n </mat-form-field>\n </div>\n </section>\n </div>\n </mat-tab>\n\n <mat-tab label=\"Dicas\">\n <div class=\"mf-tab\">\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Mensagens de modo</h3>\n <p class=\"mf-help\">Textos auxiliares exibidos pelo host.</p>\n </div>\n </div>\n <div class=\"mf-note\">Útil para i18n e orientação do usuário.</div>\n <div class=\"mf-messages-grid\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Criar</mat-label>\n <input\n matInput\n [value]=\"hintsModel.dataModes.create\"\n (input)=\"updateHints('dataModes', 'create', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Editar</mat-label>\n <input\n matInput\n [value]=\"hintsModel.dataModes.edit\"\n (input)=\"updateHints('dataModes', 'edit', $any($event.target).value)\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Visualizar</mat-label>\n <input\n matInput\n [value]=\"hintsModel.dataModes.view\"\n (input)=\"updateHints('dataModes', 'view', $any($event.target).value)\"\n />\n </mat-form-field>\n </div>\n </section>\n\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Dicas de UI</h3>\n <p class=\"mf-help\">Ajuda contextual para estados do formulário.</p>\n </div>\n </div>\n <div class=\"mf-messages-grid\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Apresentação</mat-label>\n <textarea\n matInput\n rows=\"2\"\n [value]=\"hintsModel.uiModes.presentation\"\n (input)=\"updateHints('uiModes', 'presentation', $any($event.target).value)\"\n ></textarea>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Somente leitura</mat-label>\n <textarea\n matInput\n rows=\"2\"\n [value]=\"hintsModel.uiModes.readonly\"\n (input)=\"updateHints('uiModes', 'readonly', $any($event.target).value)\"\n ></textarea>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Desabilitado</mat-label>\n <textarea\n matInput\n rows=\"2\"\n [value]=\"hintsModel.uiModes.disabled\"\n (input)=\"updateHints('uiModes', 'disabled', $any($event.target).value)\"\n ></textarea>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Visível</mat-label>\n <textarea\n matInput\n rows=\"2\"\n [value]=\"hintsModel.uiModes.visible\"\n (input)=\"updateHints('uiModes', 'visible', $any($event.target).value)\"\n ></textarea>\n </mat-form-field>\n </div>\n </section>\n </div>\n </mat-tab>\n\n <mat-tab label=\"Hooks\">\n <div class=\"mf-tab\">\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Hooks de ciclo de vida</h3>\n <p class=\"mf-help\">Defina ações automatizadas por estágio.</p>\n </div>\n <div class=\"mf-actions-row\">\n <button mat-stroked-button type=\"button\" (click)=\"resetHooks()\">\n Restaurar\n </button>\n <button mat-flat-button color=\"primary\" type=\"button\" (click)=\"applyHooks()\">\n Aplicar hooks\n </button>\n </div>\n </div>\n <div class=\"mf-note\">Executa apenas se o host registrar hooks disponíveis.</div>\n <div class=\"mf-hooks-grid\">\n @for (stage of hookStages; track stage) {\n <mat-form-field appearance=\"outline\" class=\"mf-hook-field\">\n <mat-label>{{ hookLabel(stage) }}</mat-label>\n <textarea\n matInput\n rows=\"4\"\n [value]=\"hooksText[stage]\"\n (input)=\"onHookTextChange(stage, $any($event.target).value)\"\n placeholder='[{ \"id\": \"notifySuccess\", \"priority\": 0, \"args\": {} }]'\n ></textarea>\n <button\n mat-icon-button\n matSuffix\n class=\"help-icon-button\"\n type=\"button\"\n [matTooltip]=\"'Array JSON de hooks para ' + stage + ' (id, priority, timeoutMs, args).'\"\n matTooltipPosition=\"above\"\n >\n <mat-icon>help_outline</mat-icon>\n </button>\n @if (hooksErrors[stage]) {\n <mat-error>{{ hooksErrors[stage] }}</mat-error>\n }\n </mat-form-field>\n }\n </div>\n </section>\n </div>\n </mat-tab>\n\n <mat-tab label=\"Regras\">\n <div class=\"mf-tab\">\n <section class=\"mf-section\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Regras de layout</h3>\n <p class=\"mf-help\">Regras avançadas para visibilidade e comportamento.</p>\n </div>\n <div class=\"mf-actions-row\">\n <button mat-flat-button color=\"primary\" type=\"button\" (click)=\"applyRules()\">\n Aplicar regras\n </button>\n </div>\n </div>\n <div class=\"mf-note\">Persistido no config; a execução depende do host.</div>\n <mat-form-field appearance=\"outline\">\n <mat-label>formRules (JSON)</mat-label>\n <textarea\n matInput\n rows=\"6\"\n [value]=\"formRulesText\"\n (input)=\"onRulesTextChange($any($event.target).value)\"\n placeholder='[{\"id\":\"rule-1\",\"name\":\"Obrigatoriedade\",\"targetType\":\"field\",\"targets\":[\"campo\"],\"effect\":{\"condition\":\"{campo} != null\",\"properties\":{\"required\":true}}}]'\n ></textarea>\n <button\n mat-icon-button\n matSuffix\n class=\"help-icon-button\"\n type=\"button\"\n [matTooltip]=\"'Array JSON com regras (id, targetType, targets, effect).'\"\n matTooltipPosition=\"above\"\n >\n <mat-icon>help_outline</mat-icon>\n </button>\n @if (formRulesError) {\n <mat-error>{{ formRulesError }}</mat-error>\n }\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>formRulesState (JSON)</mat-label>\n <textarea\n matInput\n rows=\"6\"\n [value]=\"formRulesStateText\"\n (input)=\"onRulesStateTextChange($any($event.target).value)\"\n placeholder='{\"nodes\":[],\"edges\":[]}'\n ></textarea>\n <button\n mat-icon-button\n matSuffix\n class=\"help-icon-button\"\n type=\"button\"\n [matTooltip]=\"'Estado bruto do editor visual (opcional).'\"\n matTooltipPosition=\"above\"\n >\n <mat-icon>help_outline</mat-icon>\n </button>\n @if (formRulesStateError) {\n <mat-error>{{ formRulesStateError }}</mat-error>\n }\n </mat-form-field>\n <div class=\"mf-actions-row mf-actions-row--end\">\n <button mat-flat-button color=\"primary\" type=\"button\" (click)=\"applyRules()\">\n Aplicar regras\n </button>\n </div>\n </section>\n </div>\n </mat-tab>\n\n <mat-tab label=\"Cascatas\">\n <div class=\"mf-tab\">\n <section class=\"mf-section mf-section--full\">\n <div class=\"mf-section__header\">\n <div>\n <h3>Dependências entre campos</h3>\n <p class=\"mf-help\">Configure cascatas nativas baseadas em metadados.</p>\n </div>\n </div>\n <div class=\"mf-note\">As alterações atualizam metadados e são salvas no draft.</div>\n <praxis-cascade-manager-tab\n [fields]=\"cascadeFields\"\n (apply)=\"applyCascadePatch($event)\"\n ></praxis-cascade-manager-tab>\n </section>\n </div>\n </mat-tab>\n </mat-tab-group>\n </div>\n `,\n styles: [\n `\n .mf-editor {\n display: grid;\n gap: 16px;\n padding: 16px;\n color: var(--md-sys-color-on-surface);\n }\n .mf-editor__toolbar {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 14px;\n border: 1px solid var(--md-sys-color-outline-variant);\n border-radius: 12px;\n background: var(--md-sys-color-surface-container);\n }\n .mf-editor__title {\n display: flex;\n flex-direction: column;\n gap: 2px;\n font-weight: 600;\n }\n .mf-editor__subtitle {\n font-weight: 400;\n color: var(--md-sys-color-on-surface-variant);\n }\n .mf-editor__toolbar .spacer { flex: 1; }\n .mf-tabs { min-height: 420px; }\n .mf-tab { display: grid; gap: 16px; padding: 14px 6px 0; }\n .mf-editor__list { display: grid; gap: 8px; overflow-x: auto; }\n .mf-editor__row {\n display: grid;\n grid-template-columns: 2.2fr 2fr 1fr repeat(4, minmax(90px, 0.8fr));\n align-items: center;\n gap: 8px;\n padding: 10px 12px;\n border: 1px solid var(--md-sys-color-outline-variant);\n border-radius: 10px;\n background: var(--md-sys-color-surface);\n min-width: 720px;\n }\n .mf-editor__row--head {\n font-weight: 600;\n color: var(--md-sys-color-on-surface);\n background: var(--md-sys-color-surface-container);\n }\n .mf-editor__filter {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n }\n .mf-editor__filter input {\n accent-color: var(--md-sys-color-primary);\n }\n .col code {\n display: inline-block;\n font-family: inherit;\n font-size: 0.85rem;\n padding: 2px 8px;\n border-radius: 6px;\n background: var(--md-sys-color-surface-container-high);\n color: var(--md-sys-color-on-surface-variant);\n }\n .mf-btn {\n min-height: 36px;\n padding: 0 12px;\n border-radius: 8px;\n border: 1px solid var(--md-sys-color-outline);\n background: var(--md-sys-color-surface);\n color: var(--md-sys-color-on-surface);\n cursor: pointer;\n transition: background-color .18s ease, border-color .18s ease, color .18s ease;\n }\n .mf-btn:hover { background: var(--md-sys-color-surface-container); }\n .mf-btn:focus-visible { outline: 2px solid var(--md-sys-color-primary); outline-offset: 2px; }\n .toggle { display: inline-flex; align-items: center; gap: 6px; color: var(--md-sys-color-on-surface-variant); }\n .mf-section {\n display: grid;\n gap: 12px;\n padding: 16px;\n border-radius: 12px;\n border: 1px solid var(--md-sys-color-outline-variant);\n background: var(--md-sys-color-surface);\n }\n .mf-section--full {\n padding: 10px;\n }\n .mf-section__header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n }\n .mf-section__header h3 {\n margin: 0;\n font-size: 1.05rem;\n font-weight: 600;\n }\n .mf-help {\n margin: 6px 0 0;\n font-size: 0.9rem;\n color: var(--md-sys-color-on-surface-variant);\n }\n .mf-note {\n padding: 10px 12px;\n border-radius: 10px;\n border: 1px dashed var(--md-sys-color-outline-variant);\n background: var(--md-sys-color-surface-container);\n color: var(--md-sys-color-on-surface-variant);\n font-size: 0.9rem;\n }\n .help-icon-button {\n --mdc-icon-button-state-layer-size: 28px;\n --mdc-icon-button-icon-size: 18px;\n width: 28px;\n height: 28px;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-right: -4px;\n }\n .help-icon-button mat-icon { font-size: 18px; width: 18px; height: 18px; }\n .mat-mdc-form-field-icon-suffix { align-self: center; }\n .mf-actions-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\n gap: 12px;\n }\n .mf-action-card,\n .mf-custom-card,\n .mf-custom-message-card {\n display: grid;\n gap: 10px;\n padding: 14px;\n border-radius: 10px;\n border: 1px solid var(--md-sys-color-outline-variant);\n background: var(--md-sys-color-surface-container-high);\n }\n .mf-action-card__title,\n .mf-custom-card__title {\n font-weight: 600;\n color: var(--md-sys-color-on-surface);\n }\n .mf-actions-layout {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n gap: 12px;\n align-items: center;\n }\n .mf-toggle-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\n gap: 12px;\n align-items: start;\n }\n .mf-hooks-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\n gap: 12px;\n }\n .mf-hook-field textarea {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n font-size: 0.85rem;\n }\n .mf-actions-row {\n display: inline-flex;\n gap: 8px;\n align-items: center;\n }\n .mf-actions-row--end {\n justify-content: flex-end;\n width: 100%;\n }\n .mf-custom-actions,\n .mf-custom-messages {\n display: grid;\n gap: 12px;\n }\n .mf-custom-card__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n }\n .mf-custom-card__grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n gap: 12px;\n align-items: center;\n }\n .mf-messages-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\n gap: 12px;\n }\n .mf-empty {\n margin: 0;\n color: var(--md-sys-color-on-surface-variant);\n }\n `,\n ],\n})\nexport class ManualFormConfigEditorComponent implements OnInit {\n readonly instance: ManualFormInstance;\n all: FieldMetadata[] = [];\n filtered: FieldMetadata[] = [];\n onlyHidden = false;\n actionsModel: FormActionsLayout = deepClone(DEFAULT_ACTIONS);\n messagesModel: FormMessagesLayout = {};\n behaviorModel: FormBehaviorLayout = {};\n hintsModel: FormHints = createDefaultHints();\n hooksText: Record<FormHookStage, string> = createDefaultHooksText();\n hooksErrors: Partial<Record<FormHookStage, string>> = {};\n formRulesText = '';\n formRulesStateText = '';\n formRulesError = '';\n formRulesStateError = '';\n readonly hookStages: FormHookStage[] = [\n 'beforeInit',\n 'afterInit',\n 'beforeValidate',\n 'afterValidate',\n 'beforeSubmit',\n 'afterSubmit',\n 'onError',\n ];\n readonly actionBlocks: Array<{ key: 'submit' | 'cancel' | 'reset'; label: string }> = [\n { key: 'submit', label: 'Salvar' },\n { key: 'cancel', label: 'Cancelar' },\n { key: 'reset', label: 'Resetar' },\n ];\n // SettingsValueProvider observables\n isDirty$ = new BehaviorSubject<boolean>(false);\n isValid$ = new BehaviorSubject<boolean>(true);\n isBusy$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n @Inject(SETTINGS_PANEL_DATA) inputs: PanelInputs,\n @Inject(SETTINGS_PANEL_REF) private ref: SettingsPanelRef,\n ) {\n this.instance = inputs.instance;\n }\n\n ngOnInit(): void {\n this.refresh();\n }\n\n close(): void { this.ref.close('cancel'); }\n\n applyFilter(): void {\n this.filtered = this.onlyHidden ? this.all.filter(f => !!f.hidden) : [...this.all];\n }\n\n toggleVisibility(field: FieldMetadata, checked?: boolean): void {\n const visible = !!checked; // checked === visible\n const toPatch = { hidden: !visible } as Partial<FieldMetadata>;\n try {\n this.instance.patchFieldMetadata(field.name, toPatch);\n this.instance.saveDraft();\n this.refresh();\n this.isDirty$.next(true);\n } catch {}\n }\n\n toggleRequired(field: FieldMetadata, checked?: boolean): void {\n const toPatch = { required: !!checked } as Partial<FieldMetadata>;\n try {\n this.instance.patchFieldMetadata(field.name, toPatch);\n this.instance.saveDraft();\n this.refresh();\n this.isDirty$.next(true);\n } catch {}\n }\n\n toggleReadOnly(field: FieldMetadata, checked?: boolean): void {\n const toPatch = { readOnly: !!checked } as Partial<FieldMetadata>;\n try {\n this.instance.patchFieldMetadata(field.name, toPatch);\n this.instance.saveDraft();\n this.refresh();\n this.isDirty$.next(true);\n } catch {}\n }\n\n toggleDisabled(field: FieldMetadata, checked?: boolean): void {\n const toPatch = { disabled: !!checked } as Partial<FieldMetadata>;\n try {\n this.instance.patchFieldMetadata(field.name, toPatch);\n this.instance.saveDraft();\n this.refresh();\n this.isDirty$.next(true);\n } catch {}\n }\n\n updateActionField(\n key: 'submit' | 'cancel' | 'reset',\n field: keyof FormActionButton,\n value: any,\n ): void {\n const current = this.actionsModel[key];\n this.actionsModel = {\n ...this.actionsModel,\n [key]: {\n ...current,\n [field]: value,\n },\n };\n this.applyConfigPatch({ actions: this.actionsModel });\n }\n\n updateActionsLayout(\n field: 'position' | 'orientation' | 'spacing' | 'sticky' | 'divider' | 'placement',\n value: any,\n ): void {\n this.actionsModel = {\n ...this.actionsModel,\n [field]: value,\n };\n this.applyConfigPatch({ actions: this.actionsModel });\n }\n\n addCustomAction(): void {\n const nextId = this.generateCustomId();\n const nextAction = makeAction({ id: nextId, label: 'Ação' });\n const custom = [...(this.actionsModel.custom || []), nextAction];\n this.actionsModel = { ...this.actionsModel, custom };\n this.applyConfigPatch({ actions: this.actionsModel });\n }\n\n removeCustomAction(action: FormActionButton): void {\n const custom = (this.actionsModel.custom || []).filter((item) => item !== action);\n this.actionsModel = { ...this.actionsModel, custom };\n this.applyConfigPatch({ actions: this.actionsModel });\n }\n\n updateCustomActionField(action: FormActionButton, field: keyof FormActionButton, value: any): void {\n const custom = (this.actionsModel.custom || []).map((item) => {\n if (item !== action) return item;\n return { ...item, [field]: value };\n });\n this.actionsModel = { ...this.actionsModel, custom };\n this.applyConfigPatch({ actions: this.actionsModel });\n }\n\n updateMessage(key: keyof FormMessagesLayout, value: string): void {\n this.messagesModel = {\n ...this.messagesModel,\n [key]: value,\n };\n this.applyConfigPatch({ messages: this.messagesModel });\n }\n\n updateConfirmation(key: 'submit' | 'cancel' | 'reset', value: string): void {\n this.messagesModel = {\n ...this.messagesModel,\n confirmations: {\n ...(this.messagesModel.confirmations || {}),\n [key]: value,\n },\n };\n this.applyConfigPatch({ messages: this.messagesModel });\n }\n\n updateLoading(key: 'submit' | 'cancel' | 'reset', value: string): void {\n this.messagesModel = {\n ...this.messagesModel,\n loading: {\n ...(this.messagesModel.loading || {}),\n [key]: value,\n },\n };\n this.applyConfigPatch({ messages: this.messagesModel });\n }\n\n updateCustomMessage(action: FormActionButton, kind: 'success' | 'error' | 'confirmation', value: string): void {\n const actionId = action.id || '';\n this.messagesModel = {\n ...this.messagesModel,\n customActions: {\n ...(this.messagesModel.customActions || {}),\n [actionId]: {\n ...(this.messagesModel.customActions || {})[actionId],\n [kind]: value,\n },\n },\n };\n this.applyConfigPatch({ messages: this.messagesModel });\n }\n\n updateBehavior(key: keyof FormBehaviorLayout, value: any): void {\n this.behaviorModel = {\n ...this.behaviorModel,\n [key]: value,\n };\n this.applyConfigPatch({ behavior: this.behaviorModel });\n }\n\n updateHints(scope: 'dataModes' | 'uiModes', key: string, value: string): void {\n this.hintsModel = {\n ...this.hintsModel,\n [scope]: {\n ...this.hintsModel[scope],\n [key]: value,\n },\n };\n this.applyConfigPatch({ hints: this.hintsModel });\n }\n\n hookLabel(stage: FormHookStage): string {\n const map: Record<FormHookStage, string> = {\n beforeInit: 'beforeInit',\n afterInit: 'afterInit',\n beforeValidate: 'beforeValidate',\n afterValidate: 'afterValidate',\n beforeSubmit: 'beforeSubmit',\n afterSubmit: 'afterSubmit',\n onError: 'onError',\n };\n return map[stage] || stage;\n }\n\n onHookTextChange(stage: FormHookStage, value: string): void {\n this.hooksText = { ...this.hooksText, [stage]: value };\n }\n\n resetHooks(): void {\n this.hooksText = buildHooksText(this.instance.currentConfig.hooks);\n this.hooksErrors = {};\n }\n\n applyHooks(): void {\n const next: FormHooksLayout = {};\n const errors: Partial<Record<FormHookStage, string>> = {};\n\n for (const stage of this.hookStages) {\n const raw = (this.hooksText[stage] || '').trim();\n if (!raw) continue;\n try {\n const parsed = JSON.parse(raw);\n if (!Array.isArray(parsed)) {\n errors[stage] = 'Precisa ser um array JSON.';\n continue;\n }\n next[stage] = parsed;\n } catch {\n errors[stage] = 'JSON inválido.';\n }\n }\n\n this.hooksErrors = errors;\n if (Object.keys(errors).length > 0) {\n return;\n }\n\n this.applyConfigPatch({ hooks: next });\n }\n\n onRulesTextChange(value: string): void {\n this.formRulesText = value;\n }\n\n onRulesStateTextChange(value: string): void {\n this.formRulesStateText = value;\n }\n\n applyRules(): void {\n this.formRulesError = '';\n this.formRulesStateError = '';\n\n let rules: FormLayoutRule[] | undefined;\n let rulesState: unknown | undefined;\n\n const rulesRaw = this.formRulesText.trim();\n if (rulesRaw) {\n try {\n const parsed = JSON.parse(rulesRaw);\n if (!Array.isArray(parsed)) {\n this.formRulesError = 'formRules precisa ser um array JSON.';\n return;\n }\n rules = parsed as FormLayoutRule[];\n } catch {\n this.formRulesError = 'JSON inválido em formRules.';\n return;\n }\n }\n\n const stateRaw = this.formRulesStateText.trim();\n if (stateRaw) {\n try {\n rulesState = JSON.parse(stateRaw);\n } catch {\n this.formRulesStateError = 'JSON inválido em formRulesState.';\n return;\n }\n }\n\n this.applyConfigPatch({ formRules: rules, formRulesState: rulesState });\n }\n\n applyCascadePatch(patch: Record<string, Partial<FieldDefinition>>): void {\n const entries = Object.entries(patch || {});\n if (!entries.length) {\n return;\n }\n for (const [fieldName, fieldPatch] of entries) {\n try {\n this.instance.patchFieldMetadata(fieldName, fieldPatch as Partial<FieldMetadata>);\n } catch {}\n }\n try {\n this.instance.saveDraft();\n this.refresh();\n this.isDirty$.next(true);\n } catch {}\n }\n\n get cascadeFields(): Array<FieldDefinition | FieldMetadata> {\n return this.instance.currentConfig.fieldMetadata || [];\n }\n\n getSettingsValue(): any {\n return {\n fieldStates: (this.instance.currentConfig.fieldMetadata || []).map((f) => ({\n name: f.name,\n hidden: !!f.hidden,\n required: !!f.required,\n readOnly: !!f.readOnly,\n disabled: !!f.disabled,\n })),\n actions: deepClone(this.actionsModel),\n messages: deepClone(this.messagesModel),\n behavior: deepClone(this.behaviorModel),\n hints: deepClone(this.hintsModel),\n hooks: deepClone(this.instance.currentConfig.hooks || {}),\n formRules: deepClone(this.instance.currentConfig.formRules || []),\n formRulesState: deepClone(this.instance.currentConfig.formRulesState),\n };\n }\n\n onSave(): any {\n const value = this.getSettingsValue();\n // Consider changes persisted via saveDraft; mark clean so buttons desativem se reabrir\n this.isDirty$.next(false);\n return value;\n }\n\n private refresh(): void {\n this.all = (this.instance.currentConfig.fieldMetadata || []).map(f => ({ ...f }));\n this.actionsModel = this.normalizeActions(this.instance.currentConfig.actions);\n this.messagesModel = deepClone(this.instance.currentConfig.messages || {});\n this.behaviorModel = deepClone(this.instance.currentConfig.behavior || {});\n this.hintsModel = createHints(this.instance.currentConfig.hints);\n this.hooksText = buildHooksText(this.instance.currentConfig.hooks);\n this.formRulesText = stringifyJson(this.instance.currentConfig.formRules, true);\n this.formRulesStateText = stringifyJson(this.instance.currentConfig.formRulesState, false);\n this.applyFilter();\n }\n\n private normalizeActions(source?: FormActionsLayout | null): FormActionsLayout {\n const base = deepClone(DEFAULT_ACTIONS);\n if (!source) {\n return base;\n }\n\n return {\n submit: mergeAction(base.submit, source.submit),\n cancel: mergeAction(base.cancel, source.cancel),\n reset: mergeAction(base.reset, source.reset),\n custom: source.custom ? source.custom.map((item, index) => makeAction(item, index)) : base.custom,\n position: source.position ?? base.position,\n orientation: source.orientation ?? base.orientation,\n spacing: source.spacing ?? base.spacing,\n sticky: source.sticky ?? base.sticky,\n divider: source.divider ?? base.divider,\n placement: source.placement ?? base.placement,\n mobile: source.mobile ?? base.mobile,\n containerClassName: source.containerClassName ?? base.containerClassName,\n containerStyles: source.containerStyles ?? base.containerStyles,\n showSaveButton: source.showSaveButton ?? base.showSaveButton,\n submitButtonLabel: source.submitButtonLabel ?? base.submitButtonLabel,\n showCancelButton: source.showCancelButton ?? base.showCancelButton,\n cancelButtonLabel: source.cancelButtonLabel ?? base.cancelButtonLabel,\n showResetButton: source.showResetButton ?? base.showResetButton,\n resetButtonLabel: source.resetButtonLabel ?? base.resetButtonLabel,\n };\n }\n\n private applyConfigPatch(\n patch: Partial<{\n actions: FormActionsLayout;\n messages: FormMessagesLayout;\n behavior: FormBehaviorLayout;\n hints: FormHints;\n hooks: FormHooksLayout;\n formRules: FormLayoutRule[] | undefined;\n formRulesState: unknown;\n }>,\n ): void {\n try {\n const config = deepClone(this.instance.currentConfig);\n const next = { ...config, ...patch };\n this.instance.replaceConfig(next);\n this.instance.saveDraft();\n this.refresh();\n this.isDirty$.next(true);\n } catch {}\n }\n\n private generateCustomId(): string {\n const existing = new Set((this.actionsModel.custom || []).map((item) => item.id).filter(Boolean) as string[]);\n let counter = existing.size + 1;\n let next = `custom-${counter}`;\n while (existing.has(next)) {\n counter += 1;\n next = `custom-${counter}`;\n }\n return next;\n }\n}\n\nconst DEFAULT_ACTIONS: FormActionsLayout = {\n submit: makeAction({ id: 'submit', label: 'Salvar', visible: true, type: 'submit', color: 'primary' }),\n cancel: makeAction({ id: 'cancel', label: 'Cancelar', visible: false, type: 'button' }),\n reset: makeAction({ id: 'reset', label: 'Restaurar', visible: true, type: 'reset' }),\n custom: [],\n position: 'right',\n orientation: 'horizontal',\n spacing: 'normal',\n};\n\nfunction makeAction(action: Partial<FormActionButton>, index?: number): FormActionButton {\n const fallbackId = typeof index === 'number' ? `custom-${index + 1}` : 'action';\n return {\n id: action.id ?? fallbackId,\n label: action.label ?? 'Ação',\n visible: action.visible !== false,\n type: action.type ?? 'button',\n color: action.color,\n disabled: action.disabled,\n icon: action.icon,\n action: action.action,\n tooltip: action.tooltip,\n variant: action.variant,\n size: action.size,\n loading: action.loading,\n shortcut: action.shortcut,\n };\n}\n\nfunction mergeAction(base: FormActionButton, override?: FormActionButton): FormActionButton {\n if (!override) {\n return base;\n }\n return {\n ...base,\n ...override,\n visible: override.visible !== undefined ? override.visible : base.visible,\n };\n}\n\ninterface FormHints {\n dataModes: { create: string; edit: string; view: string };\n uiModes: { presentation: string; readonly: string; disabled: string; visible: string };\n}\n\nfunction createDefaultHints(): FormHints {\n return {\n dataModes: { create: '', edit: '', view: '' },\n uiModes: { presentation: '', readonly: '', disabled: '', visible: '' },\n };\n}\n\nfunction createHints(source: FormHints | undefined): FormHints {\n if (!source) {\n return createDefaultHints();\n }\n return {\n dataModes: {\n create: source.dataModes?.create ?? '',\n edit: source.dataModes?.edit ?? '',\n view: source.dataModes?.view ?? '',\n },\n uiModes: {\n presentation: source.uiModes?.presentation ?? '',\n readonly: source.uiModes?.readonly ?? '',\n disabled: source.uiModes?.disabled ?? '',\n visible: source.uiModes?.visible ?? '',\n },\n };\n}\n\nfunction createDefaultHooksText(): Record<FormHookStage, string> {\n return {\n beforeInit: '[]',\n afterInit: '[]',\n beforeValidate: '[]',\n afterValidate: '[]',\n beforeSubmit: '[]',\n afterSubmit: '[]',\n onError: '[]',\n };\n}\n\nfunction buildHooksText(source?: FormHooksLayout): Record<FormHookStage, string> {\n const base = createDefaultHooksText();\n if (!source) return base;\n for (const stage of Object.keys(base) as FormHookStage[]) {\n const list = source[stage];\n base[stage] = list && list.length ? JSON.stringify(list, null, 2) : '[]';\n }\n return base;\n}\n\nfunction stringifyJson(value: unknown, pretty: boolean): string {\n if (value === undefined) return '';\n try {\n return JSON.stringify(value, null, pretty ? 2 : 0);\n } catch {\n return '';\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n computed,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type ManualFormDocExampleTab = 'live' | 'template' | 'ts' | 'config';\nexport type ManualFormDocExampleLevel = 'Basico' | 'Intermediario' | 'Avancado';\n\ninterface DocExampleTabOption {\n id: ManualFormDocExampleTab;\n label: string;\n hint: string;\n}\n\nlet nextDocExampleId = 0;\n\n@Component({\n selector: 'praxis-manual-form-doc-example',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './manual-form-doc-example.component.html',\n styleUrl: './manual-form-doc-example.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ManualFormDocExampleComponent implements OnDestroy {\n readonly title = input('Exemplo didatico');\n readonly subtitle = input<string | null>(null);\n readonly level = input<ManualFormDocExampleLevel>('Basico');\n\n readonly bannerTitle = input<string | null>(null);\n readonly bannerDescription = input<string | null>(null);\n\n readonly templateCode = input('');\n readonly tsCode = input('');\n readonly configCode = input('');\n\n readonly customizationEnabled = input(false);\n readonly showCustomizationToggle = input(true);\n\n readonly important = input<string | null>(null);\n readonly note = input<string | null>(null);\n readonly tip = input<string | null>(null);\n\n readonly activeTab = signal<ManualFormDocExampleTab>('live');\n readonly copyStatus = signal('');\n\n readonly tabs: ReadonlyArray<DocExampleTabOption> = [\n { id: 'live', label: 'Live', hint: 'Renderizacao do exemplo' },\n { id: 'template', label: 'Template', hint: 'Markup HTML do exemplo' },\n { id: 'ts', label: 'TS', hint: 'Logica e estado do host' },\n { id: 'config', label: 'Config', hint: 'JSON de configuracao do componente' },\n ];\n\n readonly selectedSnippet = computed(() => {\n switch (this.activeTab()) {\n case 'template':\n return this.templateCode();\n case 'ts':\n return this.tsCode();\n case 'config':\n return this.configCode();\n default:\n return '';\n }\n });\n\n readonly selectedSnippetLabel = computed(() => {\n switch (this.activeTab()) {\n case 'template':\n return 'Template';\n case 'ts':\n return 'TypeScript';\n case 'config':\n return 'Config';\n default:\n return 'Live';\n }\n });\n\n readonly canCopySnippet = computed(() => this.selectedSnippet().trim().length > 0);\n\n readonly tabChange = output<ManualFormDocExampleTab>();\n readonly customizationEnabledChange = output<boolean>();\n readonly codeCopied = output<{ tab: ManualFormDocExampleTab; success: boolean }>();\n\n readonly idPrefix = `pdx-manual-form-doc-example-${nextDocExampleId++}`;\n\n private copyStatusTimer: ReturnType<typeof setTimeout> | null = null;\n\n ngOnDestroy(): void {\n this.clearCopyStatusTimer();\n }\n\n setTab(tab: ManualFormDocExampleTab): void {\n if (this.activeTab() === tab) {\n return;\n }\n\n this.activeTab.set(tab);\n this.setCopyStatus('');\n this.tabChange.emit(tab);\n }\n\n toggleCustomization(): void {\n this.customizationEnabledChange.emit(!this.customizationEnabled());\n }\n\n tabId(tab: ManualFormDocExampleTab): string {\n return `${this.idPrefix}-tab-${tab}`;\n }\n\n panelId(tab: ManualFormDocExampleTab): string {\n return `${this.idPrefix}-panel-${tab}`;\n }\n\n async copyActiveSnippet(): Promise<void> {\n const tab = this.activeTab();\n const content = this.selectedSnippet();\n if (!content.trim()) {\n this.setCopyStatus('Sem conteudo para copiar');\n this.codeCopied.emit({ tab, success: false });\n return;\n }\n\n try {\n const clipboard = globalThis.navigator?.clipboard;\n if (!clipboard?.writeText) {\n this.setCopyStatus('Clipboard indisponivel');\n this.codeCopied.emit({ tab, success: false });\n return;\n }\n await clipboard.writeText(content);\n this.setCopyStatus('Copiado');\n this.codeCopied.emit({ tab, success: true });\n } catch {\n this.setCopyStatus('Falha ao copiar');\n this.codeCopied.emit({ tab, success: false });\n }\n }\n\n private setCopyStatus(status: string): void {\n this.copyStatus.set(status);\n this.clearCopyStatusTimer();\n if (status) {\n this.copyStatusTimer = setTimeout(() => this.copyStatus.set(''), 1800);\n }\n }\n\n private clearCopyStatusTimer(): void {\n if (this.copyStatusTimer) {\n clearTimeout(this.copyStatusTimer);\n this.copyStatusTimer = null;\n }\n }\n}\n","<section class=\"doc-example\" [attr.data-level]=\"level()\">\n @if (bannerTitle() || bannerDescription()) {\n <header class=\"doc-example__banner\">\n <div class=\"doc-example__banner-copy\">\n @if (bannerTitle()) {\n <h2>{{ bannerTitle() }}</h2>\n }\n @if (bannerDescription()) {\n <p>{{ bannerDescription() }}</p>\n }\n </div>\n <div class=\"doc-example__banner-art\">\n <ng-content select=\"[exampleBannerArtwork]\"></ng-content>\n </div>\n </header>\n }\n\n <div class=\"doc-example__summary\">\n <div class=\"doc-example__summary-main\">\n <span class=\"badge badge--level\">{{ level() }}</span>\n <h3>{{ title() }}</h3>\n @if (subtitle()) {\n <p>{{ subtitle() }}</p>\n }\n </div>\n\n @if (showCustomizationToggle()) {\n <button\n type=\"button\"\n class=\"mode-toggle\"\n [attr.aria-pressed]=\"customizationEnabled()\"\n [attr.aria-label]=\"customizationEnabled() ? 'Desligar modo de customizacao' : 'Ligar modo de customizacao'\"\n (click)=\"toggleCustomization()\"\n >\n {{ customizationEnabled() ? 'Customizacao: ligada' : 'Customizacao: desligada' }}\n </button>\n }\n </div>\n\n <p class=\"sr-only\" [attr.id]=\"idPrefix + '-tabs-help'\">\n Escolha entre visualizacao live, template, TypeScript ou config do exemplo.\n </p>\n\n <div class=\"doc-example__tabs\" role=\"tablist\" [attr.aria-describedby]=\"idPrefix + '-tabs-help'\">\n @for (tab of tabs; track tab.id) {\n <button\n type=\"button\"\n role=\"tab\"\n class=\"doc-example__tab\"\n [class.is-active]=\"activeTab() === tab.id\"\n [attr.id]=\"tabId(tab.id)\"\n [attr.aria-controls]=\"panelId(tab.id)\"\n [attr.aria-selected]=\"activeTab() === tab.id\"\n [attr.aria-label]=\"tab.label + ': ' + tab.hint\"\n (click)=\"setTab(tab.id)\"\n >\n {{ tab.label }}\n </button>\n }\n </div>\n\n <section\n class=\"doc-example__panel\"\n role=\"tabpanel\"\n [attr.id]=\"panelId(activeTab())\"\n [attr.aria-labelledby]=\"tabId(activeTab())\"\n >\n @if (activeTab() === 'live') {\n <div class=\"doc-example__live\">\n <ng-content select=\"[exampleLive]\"></ng-content>\n </div>\n } @else {\n <div class=\"doc-example__code-toolbar\">\n <span class=\"doc-example__code-label\">{{ selectedSnippetLabel() }}</span>\n <button type=\"button\" class=\"copy-btn\" [disabled]=\"!canCopySnippet()\" (click)=\"copyActiveSnippet()\">\n Copiar\n </button>\n @if (copyStatus()) {\n <span class=\"copy-status\" aria-live=\"polite\">{{ copyStatus() }}</span>\n }\n </div>\n <pre class=\"doc-example__code\"><code>{{ selectedSnippet() }}</code></pre>\n }\n </section>\n\n <ng-content select=\"[exampleDiagram]\"></ng-content>\n\n @if (important() || note() || tip()) {\n <div class=\"doc-example__callouts\">\n @if (important()) {\n <p class=\"callout callout--important\"><strong>IMPORTANTE:</strong> {{ important() }}</p>\n }\n @if (note()) {\n <p class=\"callout callout--note\"><strong>NOTA:</strong> {{ note() }}</p>\n }\n @if (tip()) {\n <p class=\"callout callout--tip\"><strong>DICA:</strong> {{ tip() }}</p>\n }\n </div>\n }\n</section>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, signal } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { of } from 'rxjs';\n\nimport { API_URL, ASYNC_CONFIG_STORAGE, AsyncConfigStorage } from '@praxisui/core';\n\nimport { ManualFormComponent } from '../components/manual-form/manual-form.component';\nimport { ManualFormDocExampleComponent } from '../components/manual-form-doc-example/manual-form-doc-example.component';\n\nclass DocExampleMemoryStorage implements AsyncConfigStorage {\n private readonly map = new Map<string, unknown>();\n\n loadConfig<T>(key: string) {\n return of((this.map.get(key) as T | null) ?? null);\n }\n\n saveConfig<T>(key: string, config: T) {\n this.map.set(key, config);\n return of(void 0);\n }\n\n clearConfig(key: string) {\n this.map.delete(key);\n return of(void 0);\n }\n}\n\n@Component({\n selector: 'praxis-manual-form-doc-example-showcase',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, ManualFormComponent, ManualFormDocExampleComponent],\n template: `\n <praxis-manual-form-doc-example\n title=\"Cadastro de cargo com preview live\"\n subtitle=\"Exemplo live com abas para implementação.\"\n level=\"Intermediario\"\n bannerTitle=\"Explore o formulário antes da teoria\"\n bannerDescription=\"Interaja no live e abra código apenas quando precisar.\"\n [templateCode]=\"templateSnippet\"\n [tsCode]=\"tsSnippet\"\n [configCode]=\"configSnippet\"\n [customizationEnabled]=\"customizationEnabled()\"\n important=\"Comece pelo live para reduzir friccao de onboarding.\"\n note=\"As abas preservam o estado atual do formulario.\"\n tip=\"Use o toggle para validar variacoes de host sem recarregar.\"\n (customizationEnabledChange)=\"setCustomizationEnabled($event)\"\n >\n <div exampleBannerArtwork class=\"showcase-art\" aria-hidden=\"true\">\n <div class=\"showcase-art__chip\">Live</div>\n <div class=\"showcase-art__chip\">Template</div>\n <div class=\"showcase-art__chip\">TS</div>\n <div class=\"showcase-art__chip\">Config</div>\n </div>\n\n <div exampleLive class=\"showcase-live\">\n <p class=\"showcase-mode\" [class.showcase-mode--enabled]=\"customizationEnabled()\">\n Customizacao no host: {{ customizationEnabled() ? 'ligada' : 'desligada' }}\n </p>\n\n <praxis-manual-form\n [formGroup]=\"form\"\n formId=\"doc-example-cargo\"\n formTitle=\"Cadastro de cargo\"\n formDescription=\"Exemplo simples com campos nativos para documentacao.\"\n [showActions]=\"false\"\n [editModeEnabled]=\"false\"\n >\n <label class=\"showcase-field\">\n <span>Nome</span>\n <input type=\"text\" formControlName=\"nome\" placeholder=\"Ex.: Analista de Dados\" />\n </label>\n\n <label class=\"showcase-field\">\n <span>Descricao</span>\n <textarea formControlName=\"descricao\" rows=\"3\" placeholder=\"Resumo das responsabilidades\"></textarea>\n </label>\n </praxis-manual-form>\n </div>\n\n <div exampleDiagram class=\"showcase-diagram\">\n <ol>\n <li>Preencha o formulario e valide comportamento dos campos.</li>\n <li>Abra a aba necessaria: Template, TS ou Config.</li>\n <li>Alterne customizacao para comparar o comportamento do host.</li>\n </ol>\n </div>\n </praxis-manual-form-doc-example>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n .showcase-art {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n }\n\n .showcase-art__chip {\n border-radius: 999px;\n padding: 4px 8px;\n font-size: 11px;\n font-weight: 700;\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline, #98a3af) 50%, #d7dde3);\n background: color-mix(in srgb, var(--md-sys-color-primary, #00796b) 14%, #ffffff);\n color: var(--md-sys-color-on-surface, #151b22);\n }\n\n .showcase-live {\n display: grid;\n gap: 12px;\n }\n\n .showcase-mode {\n margin: 0;\n border-radius: 10px;\n border: 1px solid #d6dde4;\n background: #f6f8fb;\n padding: 8px 10px;\n color: #3b4651;\n font-size: 13px;\n }\n\n .showcase-mode--enabled {\n border-color: #5ebdb0;\n background: #e9f9f5;\n color: #075146;\n }\n\n .showcase-field {\n display: grid;\n gap: 6px;\n }\n\n .showcase-field span {\n font-size: 13px;\n font-weight: 600;\n }\n\n .showcase-field input,\n .showcase-field textarea {\n width: 100%;\n border-radius: 8px;\n border: 1px solid #c8d2dc;\n padding: 9px 10px;\n font: inherit;\n color: #1a222b;\n background: #ffffff;\n }\n\n .showcase-field input:focus-visible,\n .showcase-field textarea:focus-visible {\n outline: 2px solid #2d7f73;\n outline-offset: 1px;\n }\n\n .showcase-diagram {\n border-radius: 12px;\n border: 1px dashed #bdd0db;\n background: #f8fbff;\n padding: 12px 14px;\n }\n\n .showcase-diagram ol {\n margin: 0;\n padding-left: 20px;\n display: grid;\n gap: 6px;\n }\n `,\n ],\n providers: [\n { provide: API_URL, useValue: { default: { baseUrl: '/api' } } },\n { provide: ASYNC_CONFIG_STORAGE, useFactory: () => new DocExampleMemoryStorage() },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ManualFormDocExampleShowcaseComponent {\n readonly customizationEnabled = signal(false);\n readonly form = new FormGroup({\n nome: new FormControl('', { nonNullable: true, validators: [Validators.required] }),\n descricao: new FormControl('', { nonNullable: true }),\n });\n\n readonly templateSnippet = `<praxis-manual-form [formGroup]=\"form\" formId=\"doc-example-cargo\">\n <label>\n <span>Nome</span>\n <input type=\"text\" formControlName=\"nome\" />\n </label>\n\n <label>\n <span>Descricao</span>\n <textarea formControlName=\"descricao\" rows=\"3\"></textarea>\n </label>\n</praxis-manual-form>`;\n\n readonly tsSnippet = `readonly customizationEnabled = signal(false);\n\nreadonly form = new FormGroup({\n nome: new FormControl('', { nonNullable: true, validators: [Validators.required] }),\n descricao: new FormControl('', { nonNullable: true }),\n});\n\nsetCustomizationEnabled(enabled: boolean): void {\n this.customizationEnabled.set(enabled);\n}`;\n\n readonly configSnippet = `{\n \"component\": \"praxis-manual-form-doc-example\",\n \"tabs\": [\"live\", \"template\", \"ts\", \"config\"],\n \"defaultTab\": \"live\",\n \"level\": \"Intermediario\"\n}`;\n\n setCustomizationEnabled(enabled: boolean): void {\n this.customizationEnabled.set(enabled);\n }\n}\n","import { Directive, Input, OnChanges, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core';\n\nimport { ManualFormInstance } from '../stores/manual-form-instance';\nimport { FieldMetadata } from '@praxisui/core';\n\ninterface ManualFieldContext {\n $implicit: FieldMetadata | undefined;\n metadata: FieldMetadata | undefined;\n fieldName: string;\n}\n\n@Directive({\n selector: '[praxisManualField]',\n standalone: true,\n})\nexport class ManualFieldDirective implements OnChanges {\n @Input('praxisManualField') fieldName!: string;\n @Input('praxisManualFieldInstance') instance!: ManualFormInstance;\n\n constructor(\n private readonly templateRef: TemplateRef<ManualFieldContext>,\n private readonly viewContainer: ViewContainerRef,\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if ('fieldName' in changes || 'instance' in changes) {\n this.render();\n }\n }\n\n private render(): void {\n this.viewContainer.clear();\n if (!this.instance || !this.fieldName) {\n return;\n }\n\n const metadata = this.instance.getFieldMetadata(this.fieldName);\n const context: ManualFieldContext = {\n $implicit: metadata,\n metadata,\n fieldName: this.fieldName,\n };\n this.viewContainer.createEmbeddedView(this.templateRef, context);\n }\n}\n\n","import { Directive, HostListener, Input, inject } from '@angular/core';\n\nimport { ManualFormComponent } from '../components/manual-form/manual-form.component';\n\n/**\n * Attach to any field inside <praxis-manual-form> to open the metadata editor\n * on double click, respecting the form's editModeEnabled state.\n *\n * Usage:\n * <pdx-text-input pdxManualEdit=\"nome\" ...></pdx-text-input>\n */\n@Directive({\n selector: '[pdxManualEdit]',\n standalone: true,\n})\nexport class ManualFieldEditorOnDblclickDirective {\n @Input('pdxManualEdit') fieldName!: string;\n\n private readonly manualForm = inject(ManualFormComponent, { optional: true });\n\n @HostListener('dblclick')\n onDblClick(): void {\n if (!this.fieldName) return;\n this.manualForm?.tryOpenFieldEditor(this.fieldName);\n }\n}\n\n","/*\n * Public API Surface of praxis-manual-form\n */\n\nexport * from './lib/models/manual-form.types';\nexport * from './lib/seeds/manual-form.seed';\nexport * from './lib/stores/manual-form-instance';\nexport * from './lib/components/manual-form-header/manual-form-header.component';\nexport * from './lib/components/manual-form-actions/manual-form-actions.component';\nexport * from './lib/components/manual-form/manual-form.component';\nexport * from './lib/components/manual-form-config-editor/manual-form-config-editor.component';\nexport * from './lib/components/manual-form-doc-example/manual-form-doc-example.component';\nexport * from './lib/examples/manual-form-doc-example-showcase.component';\nexport * from './lib/directives/manual-field.directive';\nexport * from './lib/directives/manual-field-editor-on-dblclick.directive';\nexport * from './lib/services/manual-field-metadata-bridge.service';\nexport * from './lib/services/manual-field-key.service';\nexport * from './lib/tokens/manual-form.tokens';\nexport * from './lib/ai/manual-form-ai-capabilities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DEFAULT_ACTIONS","mergeAction","makeAction"],"mappings":"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"}
|