@praxisui/manual-form 3.0.0-beta.0 → 3.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/praxisui-manual-form.mjs +641 -317
- package/index.d.ts +5 -0
- package/package.json +5 -5
- package/fesm2022/praxisui-manual-form.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
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 (enableCustomization()) {\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 enableCustomization = 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', description: 'ID do botao cancelar.' },\n { path: 'actions.cancel.visible', category: 'actions', valueKind: 'boolean', description: 'Visibilidade do botao cancelar.' },\n { path: 'actions.cancel.label', category: 'actions', valueKind: 'string', description: 'Label do botao cancelar.' },\n { path: 'actions.cancel.icon', category: 'actions', valueKind: 'string', description: 'Icone do botao cancelar.' },\n { path: 'actions.cancel.className', category: 'actions', valueKind: 'string', description: 'Classe CSS do botao cancelar.' },\n { path: 'actions.cancel.style', category: 'actions', valueKind: 'object', description: 'Estilo inline do botao cancelar.' },\n { path: 'actions.cancel.color', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionColor, description: 'Cor do botao cancelar.' },\n { path: 'actions.cancel.disabled', category: 'actions', valueKind: 'boolean', description: 'Estado desabilitado do botao cancelar.' },\n { path: 'actions.cancel.type', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionType, description: 'Tipo HTML do botao cancelar.' },\n { path: 'actions.cancel.action', category: 'actions', valueKind: 'string', description: 'Acao customizada disparada pelo botao cancelar.', safetyNotes: 'Requer handler registrado no host.' },\n { path: 'actions.cancel.tooltip', category: 'actions', valueKind: 'string', description: 'Tooltip do botao cancelar.' },\n { path: 'actions.cancel.loading', category: 'actions', valueKind: 'boolean', description: 'Estado de loading do botao cancelar.' },\n { path: 'actions.cancel.size', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionSize, description: 'Tamanho visual do botao cancelar.' },\n { path: 'actions.cancel.variant', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionVariant, description: 'Variante visual do botao cancelar.' },\n { path: 'actions.cancel.shortcut', category: 'actions', valueKind: 'string', description: 'Atalho de teclado do botao cancelar.' },\n\n { path: 'actions.reset.id', category: 'actions', valueKind: 'string', description: 'ID do botao reset.' },\n { path: 'actions.reset.visible', category: 'actions', valueKind: 'boolean', description: 'Visibilidade do botao reset.' },\n { path: 'actions.reset.label', category: 'actions', valueKind: 'string', description: 'Label do botao reset.' },\n { path: 'actions.reset.icon', category: 'actions', valueKind: 'string', description: 'Icone do botao reset.' },\n { path: 'actions.reset.className', category: 'actions', valueKind: 'string', description: 'Classe CSS do botao reset.' },\n { path: 'actions.reset.style', category: 'actions', valueKind: 'object', description: 'Estilo inline do botao reset.' },\n { path: 'actions.reset.color', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionColor, description: 'Cor do botao reset.' },\n { path: 'actions.reset.disabled', category: 'actions', valueKind: 'boolean', description: 'Estado desabilitado do botao reset.' },\n { path: 'actions.reset.type', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionType, description: 'Tipo HTML do botao reset.' },\n { path: 'actions.reset.action', category: 'actions', valueKind: 'string', description: 'Acao customizada disparada pelo botao reset.', safetyNotes: 'Requer handler registrado no host.' },\n { path: 'actions.reset.tooltip', category: 'actions', valueKind: 'string', description: 'Tooltip do botao reset.' },\n { path: 'actions.reset.loading', category: 'actions', valueKind: 'boolean', description: 'Estado de loading do botao reset.' },\n { path: 'actions.reset.size', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionSize, description: 'Tamanho visual do botao reset.' },\n { path: 'actions.reset.variant', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionVariant, description: 'Variante visual do botao reset.' },\n { path: 'actions.reset.shortcut', category: 'actions', valueKind: 'string', description: 'Atalho de teclado do botao reset.' },\n\n { path: 'actions.custom[].id', category: 'actions', valueKind: 'string', description: 'ID do botao customizado.' },\n { path: 'actions.custom[].visible', category: 'actions', valueKind: 'boolean', description: 'Visibilidade do botao customizado.' },\n { path: 'actions.custom[].label', category: 'actions', valueKind: 'string', description: 'Label do botao customizado.' },\n { path: 'actions.custom[].icon', category: 'actions', valueKind: 'string', description: 'Icone do botao customizado.' },\n { path: 'actions.custom[].className', category: 'actions', valueKind: 'string', description: 'Classe CSS do botao customizado.' },\n { path: 'actions.custom[].style', category: 'actions', valueKind: 'object', description: 'Estilo inline do botao customizado.' },\n { path: 'actions.custom[].color', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionColor, description: 'Cor do botao customizado.' },\n { path: 'actions.custom[].disabled', category: 'actions', valueKind: 'boolean', description: 'Estado desabilitado do botao customizado.' },\n { path: 'actions.custom[].type', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionType, description: 'Tipo HTML do botao customizado.' },\n { path: 'actions.custom[].action', category: 'actions', valueKind: 'string', description: 'Acao customizada disparada pelo botao.', safetyNotes: 'Requer handler registrado no host.' },\n { path: 'actions.custom[].tooltip', category: 'actions', valueKind: 'string', description: 'Tooltip do botao customizado.' },\n { path: 'actions.custom[].loading', category: 'actions', valueKind: 'boolean', description: 'Estado de loading do botao customizado.' },\n { path: 'actions.custom[].size', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionSize, description: 'Tamanho visual do botao customizado.' },\n { path: 'actions.custom[].variant', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.actionVariant, description: 'Variante visual do botao customizado.' },\n { path: 'actions.custom[].shortcut', category: 'actions', valueKind: 'string', description: 'Atalho de teclado do botao customizado.' },\n\n // --- Behavior ---\n { path: 'behavior', category: 'behavior', valueKind: 'object', description: 'Comportamento do formulario.' },\n { path: 'behavior.confirmOnUnsavedChanges', category: 'behavior', valueKind: 'boolean', description: 'Solicita confirmacao ao sair com alteracoes nao salvas.' },\n { path: 'behavior.trackHistory', category: 'behavior', valueKind: 'boolean', description: 'Mantem historico de alteracoes do formulario.' },\n { path: 'behavior.focusFirstError', category: 'behavior', valueKind: 'boolean', description: 'Move o foco para o primeiro campo com erro.' },\n { path: 'behavior.scrollToErrors', category: 'behavior', valueKind: 'boolean', description: 'Rola a tela ate a primeira area com erro de validacao.' },\n { path: 'behavior.clearAfterSave', category: 'behavior', valueKind: 'boolean', description: 'Limpa o formulario apos salvar com sucesso.' },\n { path: 'behavior.redirectAfterSave', category: 'behavior', valueKind: 'string', description: 'Destino de navegacao apos salvar com sucesso.' },\n { path: 'behavior.reactiveValidation', category: 'behavior', valueKind: 'boolean', description: 'Ativa validacao reativa durante a digitacao.' },\n { path: 'behavior.reactiveValidationDebounceMs', category: 'behavior', valueKind: 'number', description: 'Debounce em milissegundos para a validacao reativa.' },\n\n // --- API ---\n { path: 'api', category: 'api', valueKind: 'object', description: 'Configuracao de API do formulario.' },\n { path: 'api.saveEndpoint', category: 'api', valueKind: 'string', description: 'Endpoint usado para persistir os dados do formulario.' },\n { path: 'api.loadEndpoint', category: 'api', valueKind: 'string', description: 'Endpoint usado para carregar os dados iniciais do formulario.' },\n { path: 'api.saveMethod', category: 'api', valueKind: 'enum', allowedValues: ['POST', 'PUT', 'PATCH'], description: 'Metodo HTTP usado na operacao de salvamento.' },\n { path: 'api.timeout', category: 'api', valueKind: 'number', description: 'Timeout da operacao de API em milissegundos.' },\n { path: 'api.headers', category: 'api', valueKind: 'object', description: 'Headers HTTP adicionais enviados nas operacoes de API.' },\n { path: 'api.idField', category: 'api', valueKind: 'string', description: 'Campo que representa o identificador primario no payload remoto.' },\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', description: 'ID do hook executado apos a inicializacao.' },\n { path: 'hooks.afterInit[].priority', category: 'hooks', valueKind: 'number', description: 'Prioridade de execucao do hook apos a inicializacao.' },\n { path: 'hooks.afterInit[].timeoutMs', category: 'hooks', valueKind: 'number', description: 'Timeout do hook apos a inicializacao em milissegundos.' },\n { path: 'hooks.afterInit[].args', category: 'hooks', valueKind: 'object', description: 'Argumentos configurados para o hook apos a inicializacao.' },\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', description: 'ID do hook executado antes da validacao.' },\n { path: 'hooks.beforeValidate[].priority', category: 'hooks', valueKind: 'number', description: 'Prioridade de execucao do hook antes da validacao.' },\n { path: 'hooks.beforeValidate[].timeoutMs', category: 'hooks', valueKind: 'number', description: 'Timeout do hook antes da validacao em milissegundos.' },\n { path: 'hooks.beforeValidate[].args', category: 'hooks', valueKind: 'object', description: 'Argumentos configurados para o hook antes da validacao.' },\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', description: 'ID do hook executado apos a validacao.' },\n { path: 'hooks.afterValidate[].priority', category: 'hooks', valueKind: 'number', description: 'Prioridade de execucao do hook apos a validacao.' },\n { path: 'hooks.afterValidate[].timeoutMs', category: 'hooks', valueKind: 'number', description: 'Timeout do hook apos a validacao em milissegundos.' },\n { path: 'hooks.afterValidate[].args', category: 'hooks', valueKind: 'object', description: 'Argumentos configurados para o hook apos a validacao.' },\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', description: 'ID do hook executado antes do submit.' },\n { path: 'hooks.beforeSubmit[].priority', category: 'hooks', valueKind: 'number', description: 'Prioridade de execucao do hook antes do submit.' },\n { path: 'hooks.beforeSubmit[].timeoutMs', category: 'hooks', valueKind: 'number', description: 'Timeout do hook antes do submit em milissegundos.' },\n { path: 'hooks.beforeSubmit[].args', category: 'hooks', valueKind: 'object', description: 'Argumentos configurados para o hook antes do submit.' },\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', description: 'ID do hook executado apos o submit.' },\n { path: 'hooks.afterSubmit[].priority', category: 'hooks', valueKind: 'number', description: 'Prioridade de execucao do hook apos o submit.' },\n { path: 'hooks.afterSubmit[].timeoutMs', category: 'hooks', valueKind: 'number', description: 'Timeout do hook apos o submit em milissegundos.' },\n { path: 'hooks.afterSubmit[].args', category: 'hooks', valueKind: 'object', description: 'Argumentos configurados para o hook apos o submit.' },\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', description: 'ID do hook executado em cenarios de erro.' },\n { path: 'hooks.onError[].priority', category: 'hooks', valueKind: 'number', description: 'Prioridade de execucao do hook em cenarios de erro.' },\n { path: 'hooks.onError[].timeoutMs', category: 'hooks', valueKind: 'number', description: 'Timeout do hook de erro em milissegundos.' },\n { path: 'hooks.onError[].args', category: 'hooks', valueKind: 'object', description: 'Argumentos configurados para o hook de erro.' },\n\n // --- Hints ---\n { path: 'hints.dataModes.create', category: 'hints', valueKind: 'string', description: 'Texto de apoio para o modo create de dados.' },\n { path: 'hints.dataModes.edit', category: 'hints', valueKind: 'string', description: 'Texto de apoio para o modo edit de dados.' },\n { path: 'hints.dataModes.view', category: 'hints', valueKind: 'string', description: 'Texto de apoio para o modo view de dados.' },\n { path: 'hints.uiModes.presentation', category: 'hints', valueKind: 'string', description: 'Texto de apoio para o modo de apresentacao da UI.' },\n { path: 'hints.uiModes.readonly', category: 'hints', valueKind: 'string', description: 'Texto de apoio para o modo somente leitura.' },\n { path: 'hints.uiModes.disabled', category: 'hints', valueKind: 'string', description: 'Texto de apoio para o modo desabilitado.' },\n { path: 'hints.uiModes.visible', category: 'hints', valueKind: 'string', description: 'Texto de apoio para a visibilidade dos elementos da UI.' },\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 enableCustomization = 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.enableCustomization();\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 * enableCustomization input. No-ops when disabled or without an instance.\n */\n tryOpenFieldEditor(fieldName: string): void {\n if (!this.enableCustomization()) {\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.enableCustomization() || !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.enableCustomization()) {\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.enableCustomization()) {\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 [enableCustomization]=\"enableCustomization()\" (editForm)=\"openFormEditor()\" (save)=\"handleSave()\"\n (reset)=\"handleReset()\"></praxis-manual-form-header>\n }\n\n @if (enableCustomization()) {\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 [enableCustomization]=\"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 enableCustomization 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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"}
|