@praxisui/crud 1.0.0-beta.44 → 1.0.0-beta.45

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.
@@ -601,7 +601,7 @@ class PraxisCrudComponent {
601
601
  />
602
602
  }
603
603
  }
604
- `, isInline: true, dependencies: [{ kind: "component", type: PraxisTable, selector: "praxis-table", inputs: ["config", "resourcePath", "data", "tableId", "componentInstanceId", "title", "subtitle", "icon", "autoDelete", "notifyIfOutdated", "snoozeMs", "autoOpenSettingsOnOutdated", "crudContext", "dslFunctionRegistry", "editModeEnabled", "dense"], outputs: ["rowClick", "rowDoubleClick", "rowAction", "toolbarAction", "bulkAction", "columnReorder", "columnReorderAttempt", "beforeDelete", "afterDelete", "deleteError", "beforeBulkDelete", "afterBulkDelete", "bulkDeleteError", "schemaStatusChange", "metadataChange", "loadingStateChange"] }, { kind: "component", type: EmptyStateCardComponent, selector: "praxis-empty-state-card", inputs: ["icon", "title", "description", "primaryAction", "secondaryActions", "inline", "tone"] }] });
604
+ `, isInline: true, dependencies: [{ kind: "component", type: PraxisTable, selector: "praxis-table", inputs: ["config", "resourcePath", "data", "tableId", "componentInstanceId", "title", "subtitle", "icon", "autoDelete", "notifyIfOutdated", "snoozeMs", "autoOpenSettingsOnOutdated", "crudContext", "dslFunctionRegistry", "editModeEnabled", "dense"], outputs: ["rowClick", "rowDoubleClick", "rowExpansionChange", "rowAction", "toolbarAction", "bulkAction", "columnReorder", "columnReorderAttempt", "beforeDelete", "afterDelete", "deleteError", "beforeBulkDelete", "afterBulkDelete", "bulkDeleteError", "schemaStatusChange", "metadataChange", "loadingStateChange"] }, { kind: "component", type: EmptyStateCardComponent, selector: "praxis-empty-state-card", inputs: ["icon", "title", "description", "primaryAction", "secondaryActions", "inline", "tone"] }] });
605
605
  }
606
606
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisCrudComponent, decorators: [{
607
607
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"praxisui-crud.mjs","sources":["../../../projects/praxis-crud/src/lib/dialog.service.ts","../../../projects/praxis-crud/src/lib/drawer.adapter.ts","../../../projects/praxis-crud/src/lib/crud-launcher.service.ts","../../../projects/praxis-crud/src/lib/crud.types.ts","../../../projects/praxis-crud/src/lib/praxis-crud.component.ts","../../../projects/praxis-crud/src/lib/dynamic-form-dialog-host.component.ts","../../../projects/praxis-crud/src/lib/praxis-crud.metadata.ts","../../../projects/praxis-crud/src/lib/crud-page-header.component.ts","../../../projects/praxis-crud/src/lib/ai/crud-ai-capabilities.ts","../../../projects/praxis-crud/src/public-api.ts","../../../projects/praxis-crud/src/praxisui-crud.ts"],"sourcesContent":["import { Injectable, NgZone } from '@angular/core';\nimport {\n MatDialog,\n MatDialogRef,\n MatDialogConfig,\n MAT_DIALOG_DATA,\n} from '@angular/material/dialog';\nimport { ComponentType } from '@angular/cdk/portal';\n\nexport type DialogRef<T = any, R = any> = MatDialogRef<T, R>;\n\nexport interface DialogConfig<D = any> extends MatDialogConfig<D> {\n /** Disable closing when user clicks on backdrop */\n disableCloseOnBackdrop?: boolean;\n /** Disable closing when user presses escape */\n disableCloseOnEsc?: boolean;\n /** Enable maximize button */\n canMaximize?: boolean;\n /** Start dialog maximized */\n startMaximized?: boolean;\n /** Screen width in px where dialog starts fullscreen */\n fullscreenBreakpoint?: number;\n}\n\nexport { MAT_DIALOG_DATA as DIALOG_DATA } from '@angular/material/dialog';\n\n@Injectable({ providedIn: 'root' })\nexport class DialogService {\n constructor(private matDialog: MatDialog, private zone: NgZone) {}\n\n open<T, D = unknown, R = unknown>(\n component: ComponentType<T>,\n config?: DialogConfig<D>,\n ): DialogRef<T, R> {\n return this.zone.run(() => this.matDialog.open(component, config));\n }\n\n async openAsync<T, D = unknown, R = unknown>(\n loader: () => Promise<ComponentType<T>>,\n config?: DialogConfig<D>,\n ): Promise<DialogRef<T, R>> {\n const component = await loader();\n return this.zone.run(() => this.matDialog.open(component, config));\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport type { CrudAction, CrudMetadata } from './crud.types';\n\nexport interface CrudDrawerOpenConfig {\n action: CrudAction;\n metadata: CrudMetadata;\n inputs: Record<string, unknown>;\n}\n\nexport interface CrudDrawerAdapter {\n open(config: CrudDrawerOpenConfig): Promise<void> | void;\n}\n\nexport const CRUD_DRAWER_ADAPTER = new InjectionToken<CrudDrawerAdapter>('CRUD_DRAWER_ADAPTER');\n\n","import { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { firstValueFrom } from 'rxjs';\nimport { CrudMetadata, CrudAction, FormOpenMode } from './crud.types';\nimport { DialogService, DialogRef } from './dialog.service';\nimport { ASYNC_CONFIG_STORAGE, AsyncConfigStorage, GlobalConfigService, fillUndefined } from '@praxisui/core';\nimport { CRUD_DRAWER_ADAPTER, CrudDrawerAdapter } from './drawer.adapter';\n\ntype CrudOverrides = {\n defaults?: {\n openMode?: FormOpenMode;\n modal?: Record<string, unknown>;\n back?: Record<string, unknown>;\n header?: Record<string, unknown>;\n };\n actions?: Record<string, Partial<CrudAction>>;\n};\n\n@Injectable({ providedIn: 'root' })\nexport class CrudLauncherService {\n private readonly router = inject(Router);\n private readonly dialog = inject(DialogService);\n private readonly storage = inject<AsyncConfigStorage>(ASYNC_CONFIG_STORAGE);\n private readonly global = inject(GlobalConfigService);\n private readonly drawerAdapter = (() => {\n try { return inject<CrudDrawerAdapter>(CRUD_DRAWER_ADAPTER); } catch { return undefined as any; }\n })();\n\n async launch(\n action: CrudAction,\n row: Record<string, unknown> | undefined,\n metadata: CrudMetadata,\n componentKeyId?: string | null,\n ): Promise<{\n mode: FormOpenMode;\n ref?: DialogRef<any>;\n }> {\n // Carregar overrides de CRUD (se houver) e mesclar em uma cópia local\n const merged = await this.mergeCrudOverrides(metadata, action, componentKeyId || undefined);\n const mode = this.resolveOpenMode(merged.action, merged.metadata);\n console.debug('[CRUD:Launcher] mode=', mode, 'action=', action);\n\n if (mode === 'route') {\n if (!merged.action.route) {\n throw new Error(`Route not provided for action ${merged.action.action}`);\n }\n const url = this.buildRoute(merged.action, row, merged.metadata);\n await this.router.navigateByUrl(url);\n return { mode };\n }\n\n if (mode === 'drawer' && this.drawerAdapter) {\n const inputs = this.mapInputs(merged.action, row);\n const idField = merged.metadata.resource?.idField ?? 'id';\n if (row && inputs[idField] === undefined && (row as any)[idField] !== undefined) {\n inputs[idField] = (row as any)[idField];\n }\n await Promise.resolve(this.drawerAdapter.open({ action: merged.action, metadata: merged.metadata, inputs }));\n return { mode };\n }\n\n if (!merged.action.formId) {\n throw new Error(`formId not provided for action ${merged.action.action}`);\n }\n const inputs = this.mapInputs(merged.action, row);\n const idField = merged.metadata.resource?.idField ?? 'id';\n if (row && inputs[idField] === undefined && row[idField] !== undefined) {\n inputs[idField] = row[idField];\n }\n const modalCfg = { ...(merged.metadata.defaults?.modal || {}) } as any;\n\n console.debug('[CRUD:Launcher] opening dialog with:', {\n action: merged.action.action,\n formId: merged.action.formId,\n inputs,\n modalCfg,\n resourcePath:\n merged.metadata.resource?.path ?? (merged.metadata.table as any)?.resourcePath,\n });\n const panelClasses = ['pfx-dialog-pane', 'pfx-dialog-frosted'];\n if (modalCfg.panelClass) {\n panelClasses.push(modalCfg.panelClass);\n }\n // Backdrop style presets\n const backdropClasses: string[] = [];\n const style = modalCfg.backdropStyle as string | undefined;\n if (!style || style === 'blur') {\n backdropClasses.push('pfx-blur-backdrop');\n } else if (style === 'dim') {\n backdropClasses.push('cdk-overlay-dark-backdrop');\n } else if (style === 'transparent') {\n backdropClasses.push('pfx-transparent-backdrop');\n }\n if (modalCfg.backdropClass) {\n backdropClasses.push(modalCfg.backdropClass);\n }\n const ref = await this.dialog.openAsync(\n () =>\n import('./dynamic-form-dialog-host.component').then(\n (m) => m.DynamicFormDialogHostComponent,\n ),\n {\n ...modalCfg,\n panelClass: panelClasses,\n backdropClass: backdropClasses,\n autoFocus: modalCfg.autoFocus ?? true,\n restoreFocus: modalCfg.restoreFocus ?? true,\n minWidth: '360px',\n maxWidth: '95vw',\n ariaLabelledBy: 'crudDialogTitle',\n data: { action: merged.action, row, metadata: merged.metadata, inputs },\n },\n );\n return { mode, ref };\n }\n\n resolveOpenMode(action: CrudAction, metadata: CrudMetadata): FormOpenMode {\n // Local precedence: action > metadata.defaults\n const local = action.openMode ?? metadata.defaults?.openMode;\n if (local) return local;\n\n // Global fallback (action-specific, then general), then hard fallback 'route'\n try {\n const globalCrud = this.global.getCrud();\n const actionName = (action as any).action as string | undefined;\n const globalMode = (actionName && globalCrud?.actionDefaults?.[actionName]?.openMode) ?? globalCrud?.defaults?.openMode;\n let resolved: FormOpenMode = (globalMode as any) ?? 'route';\n // Safety: if modal/drawer but no formId, degrade to route to avoid runtime error\n if ((resolved === 'modal' || resolved === 'drawer') && !action.formId) {\n resolved = 'route';\n }\n return resolved;\n } catch {\n return 'route';\n }\n }\n\n private buildRoute(\n action: CrudAction,\n row: Record<string, unknown> | undefined,\n metadata: CrudMetadata,\n ): string {\n let route = action.route as string;\n const query: Record<string, string> = {};\n action.params?.forEach((p) => {\n const value = row?.[p.from];\n if (p.to === 'routeParam') {\n if (value === undefined || value === null) {\n throw new Error(`Missing value for route param ${p.name}`);\n }\n const re = new RegExp(`:${p.name}\\\\b`, 'g');\n route = route.replace(re, encodeURIComponent(String(value)));\n } else if (p.to === 'query' && value !== undefined && value !== null) {\n query[p.name] = String(value);\n }\n });\n const missing = route.match(/:[a-zA-Z0-9_-]+/g);\n if (missing) {\n throw new Error(\n `Missing route parameters for action \"${action.action}\": ${missing\n .map((m) => m.slice(1))\n .join(', ')}`,\n );\n }\n // Ensure resource is present for routed forms so the formId is deterministic\n try {\n const resourcePath =\n metadata.resource?.path || (metadata.table as any)?.resourcePath;\n if (resourcePath && query['resource'] === undefined) {\n query['resource'] = resourcePath as string;\n }\n } catch {}\n // ReturnTo param for graceful back navigation on routed forms\n const back = action.back || metadata.defaults?.back;\n const returnTo = back?.returnTo || this.router.url;\n if (returnTo) {\n query['returnTo'] = returnTo;\n }\n const queryString = new URLSearchParams(query).toString();\n return queryString ? `${route}?${queryString}` : route;\n }\n\n private mapInputs(\n action: CrudAction,\n row: Record<string, unknown> | undefined,\n ): Record<string, unknown> {\n const inputs: Record<string, unknown> = {};\n action.params?.forEach((p) => {\n if (p.to === 'input') {\n inputs[p.name] = row?.[p.from];\n }\n });\n return inputs;\n }\n\n private async mergeCrudOverrides(\n metadata: CrudMetadata,\n action: CrudAction,\n componentKeyId?: string,\n ): Promise<{ metadata: CrudMetadata; action: CrudAction }> {\n try {\n if (!componentKeyId) return { metadata, action };\n const key = `crud-overrides:${componentKeyId}`;\n let saved: CrudOverrides | null = null;\n try {\n saved = await firstValueFrom(this.storage.loadConfig<CrudOverrides>(key));\n } catch {}\n const overDefaults = saved?.defaults || {};\n const overActions = saved?.actions || {};\n\n // Merge defaults (shallow for defaults, shallow for modal/back)\n let mergedDefaults: any = {\n ...(metadata.defaults || {}),\n ...('openMode' in overDefaults ? { openMode: overDefaults.openMode } : {}),\n modal: { ...(metadata.defaults?.modal || {}), ...(overDefaults.modal || {}) },\n back: { ...(metadata.defaults?.back || {}), ...(overDefaults.back || {}) },\n header: { ...(metadata.defaults?.header || {}), ...(overDefaults.header || {}) },\n };\n\n // Fill missing defaults from GlobalConfig (as last fallback)\n try {\n const globalCrud = this.global.getCrud();\n if (globalCrud?.defaults) {\n mergedDefaults = fillUndefined(mergedDefaults, globalCrud.defaults as any);\n }\n } catch {}\n\n // Merge metadata copy\n const mergedMetadata: CrudMetadata = {\n ...metadata,\n defaults: mergedDefaults,\n };\n\n // Action-level override\n const actOv = overActions[action.action] || {};\n const mergedAction: CrudAction = {\n ...action,\n ...('openMode' in actOv ? { openMode: actOv.openMode } : {}),\n ...('formId' in actOv ? { formId: actOv.formId } : {}),\n ...('route' in actOv ? { route: actOv.route } : {}),\n } as CrudAction;\n\n return { metadata: mergedMetadata, action: mergedAction };\n } catch {\n return { metadata, action };\n }\n }\n}\n","import { DialogConfig } from './dialog.service';\nimport {\n TableConfig,\n FormConfig,\n RowAction,\n ToolbarAction,\n ApiEndpoint,\n} from '@praxisui/core';\nimport type { BackConfig } from '@praxisui/core';\n\nexport type FormOpenMode = 'route' | 'modal' | 'drawer';\n\nexport interface CrudParamMapping {\n from: string;\n to: 'routeParam' | 'query' | 'input';\n name: string;\n}\n\nexport type CrudAction = (RowAction | ToolbarAction) & {\n openMode?: FormOpenMode;\n route?: string;\n formId?: string;\n params?: CrudParamMapping[];\n back?: BackConfig;\n};\n\nexport interface CrudDefaults {\n openMode?: FormOpenMode;\n modal?: DialogConfig;\n back?: BackConfig;\n header?: CrudHeaderConfig;\n}\n\nexport interface CrudResource {\n path: string;\n idField?: string | number;\n endpointKey?: ApiEndpoint;\n}\n\nexport interface CrudMetadata {\n component: 'praxis-crud';\n resource?: CrudResource;\n data?: any[] | null;\n table: TableConfig;\n form?: FormConfig;\n defaults?: CrudDefaults;\n actions?: CrudAction[];\n i18n?: { crudDialog?: Record<string, string> };\n}\n\n// BackConfig moved to @praxisui/core to avoid DF↔CRUD cycle\nexport type { BackConfig };\n\nexport interface CrudHeaderConfig {\n showBack?: boolean;\n backLabel?: string;\n variant?: 'ghost' | 'tonal' | 'outlined';\n sticky?: boolean;\n breadcrumbs?: boolean;\n divider?: boolean;\n}\n\nexport function assertCrudMetadata(meta: CrudMetadata): void {\n meta.actions?.forEach((action) => {\n const mode = action.openMode ?? meta.defaults?.openMode ?? 'route';\n if (mode === 'route' && !action.route) {\n throw new Error(`Route not provided for action ${action.action}`);\n }\n if ((mode === 'modal' || mode === 'drawer') && !action.formId) {\n throw new Error(`formId not provided for action ${action.action}`);\n }\n action.params?.forEach((p) => {\n if (!['routeParam', 'query', 'input'].includes(p.to)) {\n throw new Error(`Invalid param mapping target: ${p.to}`);\n }\n });\n });\n}\n","import {\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n Output,\n inject,\n OnChanges,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { PraxisTable } from '@praxisui/table';\nimport { CrudLauncherService } from './crud-launcher.service';\nimport { CrudMetadata, FormOpenMode, assertCrudMetadata, CrudAction } from './crud.types';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { firstValueFrom } from 'rxjs';\nimport { TableConfig, ASYNC_CONFIG_STORAGE, AsyncConfigStorage, createDefaultTableConfig, GlobalConfigService, ComponentKeyService } from '@praxisui/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { EmptyStateCardComponent } from '@praxisui/core';\n\n@Component({\n selector: 'praxis-crud',\n standalone: true,\n imports: [PraxisTable, EmptyStateCardComponent],\n template: `\n @if (shouldRenderTable(resolvedMetadata)) {\n <praxis-table\n [config]=\"tableConfigForBinding\"\n [resourcePath]=\"resolveResourcePath(resolvedMetadata)\"\n [data]=\"resolveTableData(resolvedMetadata)\"\n [tableId]=\"crudId || 'default'\"\n [crudContext]=\"tableCrudContext\"\n [editModeEnabled]=\"editModeEnabled\"\n (rowAction)=\"onAction($event.action, $event.row)\"\n (toolbarAction)=\"onAction($event.action)\"\n (reset)=\"onResetPreferences()\"\n ></praxis-table>\n } @else {\n @if (editModeEnabled) {\n <praxis-empty-state-card\n icon=\"table_rows\"\n [title]=\"'Conecte o CRUD a um recurso'\"\n [description]=\"'Informe os metadados (resourcePath / schema) ou forneça metadata.data para habilitar a tabela e ações.'\"\n [primaryAction]=\"{ label: 'Configurar metadados', icon: 'bolt', action: onConfigureRequested.bind(this) }\"\n />\n }\n }\n `,\n})\nexport class PraxisCrudComponent implements OnChanges {\n /** JSON inline ou chave/URL resolvida pelo MetadataResolver */\n @Input({ required: true }) metadata!: CrudMetadata | string;\n /** Identificador obrigatório do CRUD (base para tabela/formulário) */\n @Input({ required: true }) crudId!: string;\n /** Identificador opcional para instâncias múltiplas */\n @Input() componentInstanceId?: string;\n @Input() context?: Record<string, unknown>;\n /** Encaminha o modo de edição de layout para a tabela interna */\n @Input() editModeEnabled = false;\n /** CTA: usado pelo Builder para abrir configuração de metadados quando vazio */\n @Output() configureRequested = new EventEmitter<void>();\n @Output() afterOpen = new EventEmitter<{\n mode: FormOpenMode;\n action: string;\n }>();\n @Output() afterClose = new EventEmitter<void>();\n @Output() afterSave = new EventEmitter<{\n id: string | number;\n data: unknown;\n }>();\n @Output() afterDelete = new EventEmitter<{ id: string | number }>();\n @Output() error = new EventEmitter<unknown>();\n\n resolvedMetadata!: CrudMetadata;\n /** Configuração efetiva da tabela com melhorias automáticas (ex.: botão Adicionar). */\n effectiveTableConfig?: TableConfig;\n /** Config passado ao PraxisTable — sempre definido (fallback seguro). */\n tableConfigForBinding: TableConfig = createDefaultTableConfig();\n private readonly launcher = inject(CrudLauncherService);\n private readonly destroyRef = inject(DestroyRef);\n @ViewChild(PraxisTable) private table!: PraxisTable;\n private readonly storage = inject<AsyncConfigStorage>(ASYNC_CONFIG_STORAGE);\n private readonly snack = inject(MatSnackBar);\n private readonly global = (() => { try { return inject(GlobalConfigService); } catch { return undefined as any; } })();\n private readonly componentKeys = inject(ComponentKeyService);\n private readonly route = (() => { try { return inject(ActivatedRoute); } catch { return undefined as ActivatedRoute | undefined; } })();\n private warnedMissingId = false;\n /**\n * Stable CRUD context passed to PraxisTable.\n * Previously this was created via a getter, producing a new object each CD tick\n * and causing excessive re-renders. Now we compute it only when metadata changes.\n */\n tableCrudContext?: {\n tableId: string;\n componentKeyId?: string;\n resourcePath?: string;\n defaults?: any;\n actions?: Array<{\n action: string;\n label?: string;\n formId?: string;\n route?: string;\n openMode?: 'modal' | 'route';\n }>;\n };\n\n onResetPreferences(): void {\n try {\n const keyId = this.componentKeyId();\n if (!keyId) return;\n const key = `crud-overrides:${keyId}`;\n void firstValueFrom(this.storage.clearConfig(key)).catch(() => {});\n this.snack.open('Overrides de CRUD redefinidos', undefined, { duration: 2000 });\n } catch {}\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['metadata']) {\n try {\n const parsed =\n typeof this.metadata === 'string'\n ? (JSON.parse(this.metadata) as CrudMetadata)\n : this.metadata;\n this.resolvedMetadata = this.normalizeMetadata(parsed);\n assertCrudMetadata(this.resolvedMetadata);\n this.effectiveTableConfig = this.buildEffectiveTableConfig(\n this.resolvedMetadata,\n );\n // Evitar passar undefined para [config], o que sobrescreve o default do PraxisTable\n this.tableConfigForBinding =\n this.effectiveTableConfig ||\n ((this.resolvedMetadata.table as TableConfig | undefined) ??\n createDefaultTableConfig());\n // Build a stable table context when metadata changes\n this.tableCrudContext = this.buildTableCrudContext(this.resolvedMetadata);\n } catch (err) {\n this.error.emit(err);\n }\n }\n }\n\n async onAction(action: string, row?: Record<string, unknown>): Promise<void> {\n try {\n (document.activeElement as HTMLElement | null)?.blur();\n let actionMeta = this.resolvedMetadata.actions?.find(\n (a) => a.action === action,\n );\n // Fallback: if metadata.actions is missing or doesn't include the action,\n // synthesize from table CRUD context or let overrides drive behavior.\n if (!actionMeta) {\n const ctxAction = this.tableCrudContext?.actions?.find((a) => a.action === action);\n if (ctxAction) {\n actionMeta = {\n action: ctxAction.action,\n openMode: ctxAction.openMode as any,\n formId: ctxAction.formId,\n route: ctxAction.route,\n } as any;\n } else {\n // Minimal stub – CrudLauncherService will merge overrides/defaults\n actionMeta = { action } as any;\n }\n }\n const effectiveAction = this.withDefaultFormId(\n (actionMeta || { action } as any) as CrudAction,\n );\n const { mode, ref } = await this.launcher.launch(\n effectiveAction,\n row,\n this.resolvedMetadata,\n this.componentKeyId(),\n );\n this.afterOpen.emit({ mode, action: effectiveAction.action });\n if (ref) {\n const idField = this.getIdField();\n ref\n .afterClosed()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((result) => {\n this.afterClose.emit();\n if (result?.type === 'save') {\n const data = result.data as Record<string, unknown>;\n const id = data?.[idField] as string | number;\n this.afterSave.emit({ id, data: result.data });\n this.refreshTable();\n }\n if (result?.type === 'delete') {\n const data = result.data as Record<string, unknown>;\n const id = data?.[idField] as string | number;\n this.afterDelete.emit({ id });\n this.refreshTable();\n }\n });\n }\n } catch (err) {\n this.error.emit(err);\n }\n }\n\n private refreshTable(): void {\n this.table.refetch();\n }\n\n resolveResourcePath(meta?: CrudMetadata): string {\n return (\n (meta?.resource?.path as string) ||\n ((meta?.table as any)?.resourcePath as string) ||\n ''\n ).trim();\n }\n\n resolveLocalData(meta?: CrudMetadata): any[] | null {\n const localData = (meta as any)?.data;\n return Array.isArray(localData) ? localData : null;\n }\n\n resolveTableData(meta?: CrudMetadata): any[] | null {\n if (this.resolveResourcePath(meta).length > 0) {\n return null;\n }\n return this.resolveLocalData(meta);\n }\n\n shouldRenderTable(meta?: CrudMetadata): boolean {\n return this.resolveResourcePath(meta).length > 0 || Array.isArray((meta as any)?.data);\n }\n\n private getIdField(): string {\n return (this.resolvedMetadata?.resource?.idField as string) || 'id';\n }\n\n onConfigureRequested(): void {\n this.configureRequested.emit();\n }\n\n /**\n * Constrói uma configuração de tabela efetiva a partir dos metadados,\n * adicionando automaticamente a ação de \"Adicionar\" na toolbar quando aplicável.\n * - Evita duplicidade se a toolbar já tiver ação equivalente.\n * - Garante visibilidade da toolbar quando a ação é injetada.\n */\n private buildEffectiveTableConfig(meta: CrudMetadata): TableConfig | undefined {\n const base = meta.table as TableConfig | undefined;\n // Clonar base ou criar default para permitir injeção de melhorias\n const cfg: TableConfig = base\n ? (JSON.parse(JSON.stringify(base)) as TableConfig)\n : createDefaultTableConfig();\n\n let changed = false;\n\n const ensureToolbar = () => {\n if (!cfg.toolbar) {\n (cfg as any).toolbar = { visible: true, position: 'top' } as any;\n }\n return (cfg as any).toolbar as any;\n };\n\n // 1) Toolbar: injetar ação \"Adicionar\" se metadata declara create/add e toolbar não tiver\n const hasToolbarAdd = (cfg.toolbar?.actions || []).some((a: any) => this.isAddLike(a));\n const addAction = (meta.actions || []).find((a: any) => this.isAddLike(a));\n if (addAction) {\n if (hasToolbarAdd) {\n const tb = ensureToolbar();\n tb.visible = true; // garantir visibilidade\n } else {\n const tb = ensureToolbar();\n tb.visible = true;\n if (!tb.actions) tb.actions = [] as any;\n const injected = {\n id: addAction.id || 'add',\n label: addAction.label || 'Adicionar',\n icon: addAction.icon || 'add',\n type: 'button',\n color: 'primary',\n position: 'end',\n action: addAction.action || 'add',\n } as any;\n (tb.actions as any[]).push(injected);\n }\n changed = true;\n }\n\n // 2) Row actions automáticas (apenas quando host não definiu explicitamente)\n const hostDefinedRow = !!(base && base.actions && (base.actions as any).row);\n const crudDefaults = (this.global.get('crud.defaults') as any) || {};\n const autoRow = crudDefaults.autoRowActions !== false; // default true\n if (!hostDefinedRow && autoRow) {\n const acts = (meta.actions || []) as any[];\n const hasView = acts.some((a) => String(a.action).toLowerCase() === 'view');\n const hasEdit = acts.some((a) => String(a.action).toLowerCase() === 'edit');\n const includeDelete = !!crudDefaults.includeDeleteInRow && acts.some((a) => String(a.action).toLowerCase() === 'delete');\n const rowActions: Array<any> = [];\n if (hasView) rowActions.push({ id: 'view', label: 'Ver', icon: 'visibility', action: 'view', tooltip: 'Ver' });\n if (hasEdit) rowActions.push({ id: 'edit', label: 'Editar', icon: 'edit', action: 'edit', tooltip: 'Editar' });\n if (includeDelete) rowActions.push({ id: 'delete', label: 'Excluir', icon: 'delete', action: 'delete', tooltip: 'Excluir' });\n if (rowActions.length) {\n (cfg as any).actions = (cfg as any).actions || {};\n (cfg as any).actions.row = {\n enabled: true,\n position: 'end',\n width: (cfg as any).actions?.row?.width || '120px',\n display: crudDefaults.rowActionsDisplay || 'icons',\n trigger: (cfg as any).actions?.row?.trigger || 'hover',\n actions: rowActions,\n header: { label: (cfg as any).actions?.row?.header?.label || '' },\n } as any;\n changed = true;\n }\n }\n\n // Se nada foi alterado e havia base, não retornar para preservar semântica anterior\n if (!changed) {\n return base ? undefined : cfg;\n }\n return cfg;\n }\n\n /** Heurística leve para identificar ações do tipo \"adicionar/criar\" */\n private isAddLike(a: any): boolean {\n if (!a) return false;\n const normalize = (s?: any) => String(s || '').trim().toLowerCase();\n const id = normalize(a.action || a.id || a.code || a.key || a.name || a.type);\n const icon = normalize(a.icon);\n const label = normalize(a.label);\n const addIds = new Set(['add', 'create', 'novo', 'new', 'incluir', 'inserir']);\n if (addIds.has(id)) return true;\n if (icon === 'add' || icon === 'add_circle' || icon === 'add_box') return true;\n if (label === 'adicionar' || label === 'novo' || label === 'criar' || label === 'incluir')\n return true;\n return false;\n }\n\n /** Builds a stable CRUD context object for PraxisTable based on metadata. */\n private buildTableCrudContext(meta: CrudMetadata):\n | {\n tableId: string;\n componentKeyId?: string;\n resourcePath?: string;\n defaults?: any;\n actions?: Array<{\n action: string;\n label?: string;\n formId?: string;\n route?: string;\n openMode?: 'modal' | 'route';\n }>;\n idField?: string;\n }\n | undefined {\n if (!meta) return undefined;\n // Provide a minimal default action set when metadata.actions is empty,\n // so the editor can expose per-action overrides entirely via UI.\n const baseActions = meta.actions && meta.actions.length\n ? meta.actions\n : ([{ action: 'create' }, { action: 'view' }, { action: 'edit' }] as any[]);\n return {\n tableId: this.crudId || 'default',\n componentKeyId: this.componentKeyId() || undefined,\n resourcePath: this.resolveResourcePath(meta) || undefined,\n defaults: meta.defaults,\n actions: baseActions.map((a: any) => ({\n action: a.action,\n label: a.label,\n formId: a.formId || this.crudId,\n route: a.route,\n openMode: a.openMode,\n })),\n idField: (meta.resource as any)?.idField || 'id',\n };\n }\n\n private componentKeyId(): string | null {\n const key = this.componentKeys.buildComponentId({\n componentType: 'praxis-crud',\n componentId: this.crudId,\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('[PraxisCrud] crudId is required for config persistence.');\n }\n\n private normalizeMetadata(meta: CrudMetadata): CrudMetadata {\n if (!meta || !meta.actions?.length || !this.crudId) return meta;\n const actions = meta.actions.map((action) =>\n action.formId ? action : ({ ...action, formId: this.crudId } as CrudAction),\n );\n return { ...meta, actions };\n }\n\n private withDefaultFormId(action: CrudAction): CrudAction {\n if (!action || action.formId || !this.crudId) return action;\n return { ...action, formId: this.crudId };\n }\n}\n","import { Component, Inject, ViewChild, OnInit, DestroyRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { PraxisDynamicForm } from '@praxisui/dynamic-form';\nimport { GenericCrudService, ASYNC_CONFIG_STORAGE, AsyncConfigStorage, PraxisIconDirective } from '@praxisui/core';\nimport { DialogService, DialogRef, DIALOG_DATA } from './dialog.service';\nimport { ConfirmDialogComponent } from '@praxisui/dynamic-fields';\nimport { filter, take } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\ntype DialogStateSnapshot = {\n maximized?: boolean;\n width?: string;\n height?: string;\n};\n\n@Component({\n selector: 'praxis-dynamic-form-dialog-host',\n standalone: true,\n imports: [\n CommonModule,\n MatDialogModule,\n MatButtonModule,\n MatIconModule,\n PraxisIconDirective,\n PraxisDynamicForm,\n ],\n providers: [GenericCrudService],\n host: {\n class: 'praxis-dialog',\n '[attr.data-density]': 'modal.density || \"default\"',\n },\n template: `\n <div mat-dialog-title class=\"dialog-header\">\n <h2 id=\"crudDialogTitle\" class=\"dialog-title\">\n {{ data.action?.label || texts.title }}\n </h2>\n <span class=\"spacer\"></span>\n @if (modal.canMaximize) {\n <button\n mat-icon-button\n type=\"button\"\n (click)=\"toggleMaximize()\"\n [attr.aria-label]=\"maximized ? texts.restoreLabel : texts.maximizeLabel\"\n >\n <mat-icon [praxisIcon]=\"maximized ? 'close_fullscreen' : 'open_in_full'\"></mat-icon>\n </button>\n }\n <button\n mat-icon-button\n type=\"button\"\n (click)=\"onCancel()\"\n [attr.aria-label]=\"texts.closeLabel\"\n cdkFocusInitial\n >\n <mat-icon [praxisIcon]=\"'close'\"></mat-icon>\n </button>\n </div>\n\n <mat-dialog-content\n class=\"dialog-content\"\n aria-labelledby=\"crudDialogTitle\"\n >\n <praxis-dynamic-form\n [formId]=\"data.action?.formId\"\n [resourcePath]=\"resourcePath\"\n [resourceId]=\"resourceId\"\n [mode]=\"mode\"\n [presentationModeGlobal]=\"mode === 'view' ? true : null\"\n [backConfig]=\"backConfig\"\n (formSubmit)=\"onSave($event)\"\n (formCancel)=\"onCancel()\"\n ></praxis-dynamic-form>\n </mat-dialog-content>\n `,\n styles: [\n `\n :host {\n --dlg-header-h: 56px;\n --dlg-footer-h: 56px;\n --dlg-pad: 16px;\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n }\n :host([data-density='compact']) {\n --dlg-header-h: 44px;\n --dlg-footer-h: 44px;\n --dlg-pad: 12px;\n }\n .dialog-header {\n position: sticky;\n top: 0;\n z-index: 1;\n display: flex;\n align-items: center;\n gap: var(--dlg-pad);\n padding: 0 var(--dlg-pad);\n height: var(--dlg-header-h);\n margin: 0;\n background: var(--md-sys-color-surface-container-high);\n border-bottom: 1px solid var(--md-sys-color-outline-variant);\n color: var(--md-sys-color-on-surface);\n }\n .dialog-title {\n margin: 0;\n font: inherit;\n font-weight: 600;\n color: var(--md-sys-color-on-surface);\n }\n .spacer {\n flex: 1;\n }\n .dialog-content {\n overflow: auto;\n padding: var(--dlg-pad);\n /* use small viewport height to avoid mobile chrome jumps */\n max-height: calc(100svh - var(--dlg-header-h) - 32px);\n }\n .dialog-header button.mat-icon-button { color: var(--md-sys-color-on-surface-variant); }\n .dialog-header button.mat-icon-button:hover {\n color: var(--md-sys-color-primary);\n background: var(--md-sys-color-primary-container);\n }\n .dialog-footer {\n position: sticky;\n bottom: 0;\n z-index: 1;\n padding: var(--dlg-pad);\n }\n `,\n ],\n})\nexport class DynamicFormDialogHostComponent implements OnInit {\n @ViewChild(PraxisDynamicForm) formComp?: PraxisDynamicForm;\n modal: any = {};\n maximized = false;\n private initialSize: { width?: string; height?: string } = {};\n private rememberState = false;\n private stateKey?: string;\n private backDefaults: import('./crud.types').BackConfig = {};\n private destroyRef: DestroyRef = inject(DestroyRef);\n\n resourcePath?: string;\n resourceId?: string | number;\n mode: 'create' | 'edit' | 'view' = 'create';\n backConfig?: import('./crud.types').BackConfig;\n private idField = 'id';\n\n texts = {\n title: 'Formulário',\n close: 'Fechar',\n closeLabel: 'Fechar diálogo',\n maximizeLabel: 'Maximizar',\n restoreLabel: 'Restaurar',\n discardTitle: 'Descartar alterações?',\n discardMessage:\n 'Você tem alterações não salvas. Deseja fechar assim mesmo?',\n discardConfirm: 'Descartar',\n discardCancel: 'Cancelar',\n } as Record<string, string>;\n\n constructor(\n @Inject(MatDialogRef)\n public dialogRef: DialogRef<DynamicFormDialogHostComponent>,\n @Inject(DIALOG_DATA) public data: any,\n private dialogService: DialogService,\n private crud: GenericCrudService<any>,\n @Inject(ASYNC_CONFIG_STORAGE) private configStorage: AsyncConfigStorage,\n ) {\n this.dialogRef.disableClose = true;\n\n // i18n\n this.texts = {\n ...this.texts,\n ...(this.data.metadata?.i18n?.crudDialog || {}),\n };\n\n // defaults do modal (inclui canMaximize: true)\n this.modal = {\n canMaximize: true,\n ...(this.data.metadata?.defaults?.modal || {}),\n };\n this.rememberState = !!this.modal.rememberLastState;\n this.stateKey = this.data.action?.formId\n ? `crud-dialog-state:${this.data.action.formId}`\n : undefined;\n\n // derivar path/id/mode\n this.resourcePath =\n this.data.metadata?.resource?.path ??\n this.data.metadata?.table?.resourcePath;\n\n if (this.resourcePath) {\n this.crud.configure(\n this.resourcePath,\n this.data.metadata?.resource?.endpointKey,\n );\n }\n\n this.idField = this.data.metadata?.resource?.idField ?? 'id';\n this.resourceId = this.data.inputs?.[this.idField];\n\n const act = this.data.action?.action;\n this.mode = act === 'edit' ? 'edit' : act === 'view' ? 'view' : 'create';\n\n // Back config: defaults from metadata/action, overridden by saved per-form config\n const defaults = (this.data.action?.back || this.data.metadata?.defaults?.back) || {};\n this.backDefaults = defaults;\n this.backConfig = { ...defaults };\n\n console.debug('[CRUD:Host] constructed', {\n action: this.data?.action,\n resourcePath: this.resourcePath,\n resourceId: this.resourceId,\n mode: this.mode,\n modal: this.modal,\n backConfig: this.backConfig,\n });\n\n // Esc\n if (!this.modal.disableCloseOnEsc) {\n this.dialogRef\n .keydownEvents()\n .pipe(\n filter((e) => e.key === 'Escape'),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => this.onCancel());\n }\n\n // Backdrop\n if (!this.modal.disableCloseOnBackdrop) {\n this.dialogRef\n .backdropClick()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.onCancel());\n }\n\n // Salvar estado ao fechar, se aplicável\n this.dialogRef\n .afterClosed()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.saveState());\n }\n\n ngOnInit(): void {\n // Carregar estado salvo (se habilitado)\n if (this.rememberState && this.stateKey) {\n this.configStorage\n .loadConfig<DialogStateSnapshot>(this.stateKey)\n .pipe(take(1))\n .subscribe((saved) => this.applySavedState(saved || null));\n } else {\n this.applySavedState(null);\n }\n\n // Carregar override de back config se houver formId\n if (this.data.action?.formId) {\n this.configStorage\n .loadConfig<import('./crud.types').BackConfig>(`crud-back:${this.data.action.formId}`)\n .pipe(take(1))\n .subscribe((saved) => {\n if (saved && typeof saved === 'object') {\n this.backConfig = { ...this.backDefaults, ...saved };\n }\n });\n }\n }\n\n onSave(result: unknown): void {\n if (this.modal.closeOnSave === false) {\n // Não fechar: manter aberto e opcionalmente salvar estado atual\n this.saveState();\n return;\n }\n this.dialogRef.close({ type: 'save', data: result });\n }\n\n onCancel(): void {\n const dirty = this.formComp?.form.dirty;\n const backCfg = (this.data.action?.back || this.data.metadata?.defaults?.back) || {};\n const confirm = backCfg.confirmOnDirty ?? true;\n if (dirty && confirm) {\n const ref = this.dialogService.open(ConfirmDialogComponent, {\n data: {\n title: this.texts.discardTitle,\n message: this.texts.discardMessage,\n confirmText: this.texts.discardConfirm,\n cancelText: this.texts.discardCancel,\n type: 'warning',\n },\n autoFocus: false,\n });\n ref\n .afterClosed()\n .pipe(\n filter((confirmed) => !!confirmed),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => this.dialogRef.close());\n } else {\n this.dialogRef.close();\n }\n }\n\n toggleMaximize(initial = false): void {\n this.maximized = initial ? true : !this.maximized;\n const gap = this.maximized ? this.modal.edgeGap ?? 8 : undefined;\n const width = this.maximized\n ? `calc(100vw - ${2 * (gap ?? 0)}px)`\n : this.initialSize.width;\n const height = this.maximized\n ? `calc(100dvh - ${2 * (gap ?? 0)}px)`\n : this.initialSize.height;\n\n this.dialogRef.updateSize(width, height);\n this.dialogRef.updatePosition();\n\n const pane: HTMLElement | undefined = (this.dialogRef as any)\n ?._containerInstance?._elementRef?.nativeElement?.parentElement;\n if (pane && pane.classList.contains('pfx-dialog-pane')) {\n pane.style.margin = this.maximized ? `${gap}px` : '';\n }\n this.saveState();\n }\n\n private saveState(): void {\n if (!this.rememberState || !this.stateKey) return;\n const pane: HTMLElement | undefined = (this.dialogRef as any)\n ?._containerInstance?._elementRef?.nativeElement?.parentElement;\n const style = pane ? getComputedStyle(pane) : null;\n const currentWidth = style?.width || this.initialSize.width;\n const currentHeight = style?.height || this.initialSize.height;\n this.configStorage\n .saveConfig(this.stateKey, {\n maximized: this.maximized,\n width: currentWidth,\n height: currentHeight,\n })\n .pipe(take(1))\n .subscribe({ error: () => {} });\n }\n\n private applySavedState(saved: DialogStateSnapshot | null): void {\n this.initialSize = {\n width: saved?.width ?? this.modal.width,\n height: saved?.height ?? this.modal.height,\n };\n console.debug('[CRUD:Host] ngOnInit', {\n initialSize: this.initialSize,\n startMaximized: this.modal.startMaximized,\n fullscreenBreakpoint: this.modal.fullscreenBreakpoint,\n });\n let shouldMax = false;\n if (saved && typeof saved.maximized === 'boolean') {\n shouldMax = !!saved.maximized;\n } else {\n shouldMax =\n this.modal.startMaximized ||\n (this.modal.fullscreenBreakpoint &&\n window.innerWidth <= this.modal.fullscreenBreakpoint);\n }\n if (shouldMax) {\n this.toggleMaximize(true);\n } else if (this.initialSize.width || this.initialSize.height) {\n this.dialogRef.updateSize(this.initialSize.width, this.initialSize.height);\n this.dialogRef.updatePosition();\n }\n }\n}\n","import { ComponentDocMeta, ComponentMetadataRegistry } from '@praxisui/core';\nimport { PraxisCrudComponent } from './praxis-crud.component';\nimport { CrudMetadata, FormOpenMode } from './crud.types';\nimport { ENVIRONMENT_INITIALIZER, Provider } from '@angular/core';\n\n/** Metadata for PraxisCrudComponent */\nexport const PRAXIS_CRUD_COMPONENT_METADATA: ComponentDocMeta = {\n id: 'praxis-crud',\n selector: 'praxis-crud',\n component: PraxisCrudComponent,\n friendlyName: 'Praxis CRUD',\n description: 'Tabela com operações de CRUD via metadados.',\n icon: 'table_chart',\n inputs: [\n {\n name: 'metadata',\n type: 'CrudMetadata | string',\n description:\n 'Metadados de configuração do CRUD (fonte remota via resource.path ou local via metadata.data).',\n },\n {\n name: 'crudId',\n type: 'string',\n description: 'Identificador do CRUD (base para tabela/formulário e persistência)',\n },\n {\n name: 'componentInstanceId',\n type: 'string',\n description: 'Identificador opcional para múltiplas instâncias na mesma rota',\n },\n {\n name: 'context',\n type: 'Record<string, unknown>',\n description: 'Contexto adicional para resoluções',\n },\n {\n name: 'editModeEnabled',\n type: 'boolean',\n default: false,\n description: 'Habilita modo de edição do layout',\n },\n ],\n outputs: [\n {\n name: 'afterOpen',\n type: '{ mode: FormOpenMode; action: string }',\n description: 'Emitido após abrir diálogo',\n },\n {\n name: 'afterClose',\n type: 'void',\n description: 'Emitido após fechar diálogo',\n },\n {\n name: 'afterSave',\n type: '{ id: string | number; data: unknown }',\n description: 'Emitido ao salvar',\n },\n {\n name: 'afterDelete',\n type: '{ id: string | number }',\n description: 'Emitido ao deletar',\n },\n { name: 'error', type: 'unknown', description: 'Emitido em erros' },\n {\n name: 'configureRequested',\n type: 'void',\n description: 'Emitido quando CTA de configuração é acionado em modo edição',\n },\n ],\n actions: [\n {\n id: 'create',\n label: 'Criar',\n icon: 'add',\n description: 'Emite evento ao abrir fluxo de criação',\n emit: 'afterOpen',\n payloadSchema: {\n type: 'object',\n properties: {\n action: { type: 'string', description: 'Ação executada' },\n mode: { type: 'string', description: 'Modo de abertura' },\n },\n required: ['action', 'mode'],\n example: { action: 'create', mode: 'route' },\n },\n scope: 'toolbar',\n },\n {\n id: 'view',\n label: 'Visualizar',\n icon: 'visibility',\n description: 'Emite evento ao abrir fluxo de visualização',\n emit: 'afterOpen',\n payloadSchema: {\n type: 'object',\n properties: {\n action: { type: 'string', description: 'Ação executada' },\n mode: { type: 'string', description: 'Modo de abertura' },\n },\n required: ['action', 'mode'],\n example: { action: 'view', mode: 'modal' },\n },\n scope: 'context',\n },\n {\n id: 'edit',\n label: 'Editar',\n icon: 'edit',\n description: 'Emite evento ao abrir fluxo de edição',\n emit: 'afterOpen',\n payloadSchema: {\n type: 'object',\n properties: {\n action: { type: 'string', description: 'Ação executada' },\n mode: { type: 'string', description: 'Modo de abertura' },\n },\n required: ['action', 'mode'],\n example: { action: 'edit', mode: 'drawer' },\n },\n scope: 'context',\n },\n {\n id: 'delete',\n label: 'Excluir',\n icon: 'delete',\n description: 'Emite evento após exclusão',\n emit: 'afterDelete',\n payloadSchema: {\n type: 'object',\n properties: {\n id: { type: 'string | number', description: 'ID do registro (string ou number)' },\n },\n required: ['id'],\n example: { id: '123' },\n },\n scope: 'context',\n },\n {\n id: 'save',\n label: 'Salvar',\n icon: 'save',\n description: 'Emite evento após salvar',\n emit: 'afterSave',\n payloadSchema: {\n type: 'object',\n properties: {\n id: { type: 'string | number', description: 'ID do registro (string ou number)' },\n data: { type: 'object', description: 'Dados salvos' },\n },\n required: ['id', 'data'],\n example: { id: '123', data: {} },\n },\n scope: 'shell',\n },\n {\n id: 'close',\n label: 'Fechar',\n icon: 'close',\n description: 'Emite evento ao fechar o diálogo',\n emit: 'afterClose',\n scope: 'shell',\n },\n {\n id: 'configure',\n label: 'Configurar',\n icon: 'tune',\n description: 'Emite evento ao abrir configuração',\n emit: 'configureRequested',\n scope: 'shell',\n },\n ],\n tags: ['widget', 'crud', 'configurable', 'hasWizard', 'stable'],\n lib: '@praxisui/crud',\n};\n\n/** Provider para auto-registrar metadados do componente CRUD. */\nexport function providePraxisCrudMetadata(): Provider {\n return {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory: (registry: ComponentMetadataRegistry) => () => {\n registry.register(PRAXIS_CRUD_COMPONENT_METADATA);\n },\n deps: [ComponentMetadataRegistry],\n } as Provider;\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { PraxisIconDirective } from '@praxisui/core';\n\nexport type CrudHeaderVariant = 'ghost' | 'tonal' | 'outlined';\n\n@Component({\n selector: 'praxis-crud-page-header',\n standalone: true,\n imports: [CommonModule, RouterLink, MatButtonModule, MatIconModule, PraxisIconDirective],\n template: `\n <header\n class=\"crud-header\"\n [class.sticky]=\"sticky\"\n [class.with-divider]=\"divider\"\n >\n <div class=\"left\">\n <a\n *ngIf=\"showBack && returnTo\"\n class=\"back-btn\"\n [class.ghost]=\"variant === 'ghost'\"\n [class.tonal]=\"variant === 'tonal'\"\n [class.outlined]=\"variant === 'outlined'\"\n [routerLink]=\"returnTo\"\n [attr.aria-label]=\"backLabel || 'Voltar'\"\n mat-button\n >\n <mat-icon [praxisIcon]=\"'arrow_back'\"></mat-icon>\n <span class=\"label\" [class.hide-on-narrow]=\"true\">{{ backLabel || 'Voltar' }}</span>\n </a>\n <h2 class=\"title\" [attr.title]=\"title\">{{ title }}</h2>\n </div>\n <div class=\"right\">\n <ng-content></ng-content>\n </div>\n </header>\n `,\n styles: [\n `\n .crud-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n padding: 8px 0;\n background: var(--md-sys-color-surface);\n }\n .crud-header.sticky {\n position: sticky;\n top: 0;\n z-index: 10;\n backdrop-filter: saturate(110%);\n }\n .crud-header.with-divider {\n border-bottom: 1px solid var(--md-sys-color-outline-variant);\n }\n .left { display: flex; align-items: center; gap: 8px; min-width: 0; }\n .right { display: flex; align-items: center; gap: 8px; }\n .title {\n margin: 0; font-weight: 600;\n color: var(--md-sys-color-on-surface, currentColor);\n font: var(--mdc-typography-title-large, 600 20px/28px system-ui);\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n }\n .back-btn { display: inline-flex; align-items: center; gap: 6px; text-decoration: none; }\n .back-btn .mat-mdc-button { padding-left: 0; }\n .back-btn mat-icon { color: var(--md-sys-color-on-surface-variant, currentColor); }\n .back-btn .label { color: var(--md-sys-color-on-surface-variant, currentColor); }\n\n /* Variants */\n .back-btn.ghost { border-radius: 20px; padding: 4px 8px; }\n .back-btn.ghost:hover { background: var(--md-sys-color-primary-container); }\n\n .back-btn.tonal {\n border-radius: 20px; padding: 4px 10px;\n background: var(--md-sys-color-surface-container);\n box-shadow: inset 0 0 0 1px var(--md-sys-color-outline-variant);\n }\n .back-btn.tonal:hover { background: var(--md-sys-color-primary-container); }\n\n .back-btn.outlined {\n border-radius: 20px; padding: 4px 10px;\n border: 1px solid var(--md-sys-color-outline-variant);\n background: var(--md-sys-color-surface);\n }\n .back-btn.outlined:hover {\n border-color: var(--md-sys-color-primary);\n background: var(--md-sys-color-primary-container);\n }\n\n /* Responsive: hide label on very narrow */\n @media (max-width: 599px) { .label.hide-on-narrow { display: none; } }\n `,\n ],\n})\nexport class CrudPageHeaderComponent {\n @Input() title = '';\n @Input() backLabel?: string;\n @Input() showBack = true;\n @Input() variant: CrudHeaderVariant = 'ghost';\n @Input() sticky = true;\n @Input() divider = true;\n @Input() returnTo?: string | null;\n}\n","/**\n * Capabilities catalog for CrudMetadata (Praxis CRUD).\n */\n\nimport type {\n AiCapability,\n AiCapabilityCatalog,\n AiCapabilityCategory,\n AiValueKind,\n} from '@praxisui/core';\n\ndeclare module '@praxisui/core' {\n interface AiCapabilityCategoryMap {\n meta: true;\n resource: true;\n table: true;\n form: true;\n defaults: true;\n actions: true;\n i18n: true;\n navigation: 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 openMode: ['route', 'modal', 'drawer'],\n paramTarget: ['routeParam', 'query', 'input'],\n headerVariant: ['ghost', 'tonal', 'outlined'],\n toolbarActionType: ['button', 'icon', 'fab', 'menu'],\n toolbarActionAppearance: ['filled', 'outlined', 'elevated', 'text', 'tonal'],\n toolbarActionPosition: ['start', 'end'],\n backStrategy: ['auto', 'close', 'navigate'],\n};\n\nexport const CRUD_AI_CAPABILITIES: CapabilityCatalog = {\n version: 'v1.0',\n enums: ENUMS,\n targets: ['praxis-crud', 'crud-view', 'generic-crud'],\n notes: [\n 'CrudMetadata agrega TableConfig e FormConfig; use os catalogos de tabela e formulario para detalhes.',\n 'actions[] herda campos de RowAction e ToolbarAction; combine com openMode/route/formId quando aplicavel.',\n ],\n capabilities: [\n // --- Metadata root ---\n {\n path: 'component',\n category: 'meta',\n valueKind: 'enum',\n allowedValues: ['praxis-crud'],\n description: 'Identificador fixo do componente.',\n critical: true,\n },\n\n // --- Resource ---\n { path: 'resource', category: 'resource', valueKind: 'object', description: 'Recurso principal do CRUD.' },\n { path: 'resource.path', category: 'resource', valueKind: 'string', description: 'Endpoint base do recurso.' },\n { path: 'resource.idField', category: 'resource', valueKind: 'string', description: 'Campo identificador do recurso.' },\n { path: 'resource.endpointKey', category: 'resource', valueKind: 'string', description: 'Chave de endpoint (ApiEndpoint).' },\n\n // --- Table / Form ---\n { path: 'table', category: 'table', valueKind: 'object', description: 'TableConfig completo (usar catalogo de tabela).' },\n { path: 'form', category: 'form', valueKind: 'object', description: 'FormConfig completo (usar catalogo de formulario).' },\n\n // --- Defaults ---\n { path: 'defaults', category: 'defaults', valueKind: 'object', description: 'Defaults aplicados a acoes e UI.' },\n { path: 'defaults.openMode', category: 'defaults', valueKind: 'enum', allowedValues: ENUMS.openMode, description: 'Modo padrao de abertura (route/modal/drawer).' },\n { path: 'defaults.modal', category: 'defaults', valueKind: 'object', description: 'Config de dialog (DialogConfig).' },\n { path: 'defaults.back', category: 'navigation', valueKind: 'object', description: 'Config de retorno (BackConfig).' },\n { path: 'defaults.back.strategy', category: 'navigation', valueKind: 'enum', allowedValues: ENUMS.backStrategy, description: 'Estrategia de retorno.' },\n { path: 'defaults.back.returnTo', category: 'navigation', valueKind: 'string', description: 'Rota de retorno quando strategy=navigate.' },\n { path: 'defaults.back.confirmOnDirty', category: 'navigation', valueKind: 'boolean', description: 'Confirmar ao sair com alteracoes.' },\n { path: 'defaults.header', category: 'defaults', valueKind: 'object', description: 'Config do header do CRUD.' },\n { path: 'defaults.header.showBack', category: 'defaults', valueKind: 'boolean', description: 'Exibir botao voltar.' },\n { path: 'defaults.header.backLabel', category: 'defaults', valueKind: 'string', description: 'Label do botao voltar.' },\n { path: 'defaults.header.variant', category: 'defaults', valueKind: 'enum', allowedValues: ENUMS.headerVariant, description: 'Variante visual do header.' },\n { path: 'defaults.header.sticky', category: 'defaults', valueKind: 'boolean', description: 'Header fixo.' },\n { path: 'defaults.header.breadcrumbs', category: 'defaults', valueKind: 'boolean', description: 'Exibir breadcrumbs.' },\n { path: 'defaults.header.divider', category: 'defaults', valueKind: 'boolean', description: 'Exibir divisor no header.' },\n\n // --- Actions ---\n { path: 'actions', category: 'actions', valueKind: 'array', description: 'Acoes disponiveis no CRUD.' },\n { path: 'actions[].id', category: 'actions', valueKind: 'string', description: 'ID da acao (RowAction/ToolbarAction).' },\n { path: 'actions[].label', category: 'actions', valueKind: 'string', description: 'Label da acao.' },\n { path: 'actions[].icon', category: 'actions', valueKind: 'string', description: 'Icone da acao.' },\n { path: 'actions[].color', category: 'actions', valueKind: 'string', description: 'Cor da acao.' },\n { path: 'actions[].disabled', category: 'actions', valueKind: 'boolean', description: 'Acao desabilitada.' },\n { path: 'actions[].action', category: 'actions', valueKind: 'string', description: 'Nome da acao emitida.' },\n { path: 'actions[].tooltip', category: 'actions', valueKind: 'string', description: 'Tooltip da acao.' },\n { path: 'actions[].requiresConfirmation', category: 'actions', valueKind: 'boolean', description: 'Exige confirmacao.' },\n { path: 'actions[].visibleWhen', category: 'actions', valueKind: 'expression', description: 'Condicao de visibilidade (RowAction/ToolbarAction).' },\n { path: 'actions[].separator', category: 'actions', valueKind: 'boolean', description: 'Separador apos a acao (RowAction).' },\n { path: 'actions[].autoDelete', category: 'actions', valueKind: 'boolean', description: 'Habilita auto delete (RowAction).' },\n { path: 'actions[].deleteEndpoint', category: 'actions', valueKind: 'string', description: 'Endpoint custom para delete (RowAction).' },\n { path: 'actions[].type', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.toolbarActionType, description: 'Tipo de acao (ToolbarAction).' },\n { path: 'actions[].appearance', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.toolbarActionAppearance, description: 'Aparencia do botao (ToolbarAction).' },\n { path: 'actions[].position', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.toolbarActionPosition, description: 'Posicao da acao (ToolbarAction).' },\n { path: 'actions[].order', category: 'actions', valueKind: 'number', description: 'Ordem de exibicao (ToolbarAction).' },\n { path: 'actions[].shortcut', category: 'actions', valueKind: 'string', description: 'Atalho de teclado (ToolbarAction).' },\n { path: 'actions[].children', category: 'actions', valueKind: 'array', description: 'Sub-acoes (menu).' },\n { path: 'actions[].openMode', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.openMode, description: 'Modo de abertura da acao.' },\n { path: 'actions[].route', category: 'actions', valueKind: 'string', description: 'Rota para openMode=route.' },\n { path: 'actions[].formId', category: 'actions', valueKind: 'string', description: 'FormId para modal/drawer.' },\n { path: 'actions[].params', category: 'actions', valueKind: 'array', description: 'Mapeamento de parametros.' },\n { path: 'actions[].params[].from', category: 'actions', valueKind: 'string', description: 'Origem do parametro.' },\n { path: 'actions[].params[].to', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.paramTarget, description: 'Destino do parametro.' },\n { path: 'actions[].params[].name', category: 'actions', valueKind: 'string', description: 'Nome do parametro no destino.' },\n { path: 'actions[].back', category: 'navigation', valueKind: 'object', description: 'BackConfig por acao.' },\n { path: 'actions[].back.strategy', category: 'navigation', valueKind: 'enum', allowedValues: ENUMS.backStrategy },\n { path: 'actions[].back.returnTo', category: 'navigation', valueKind: 'string' },\n { path: 'actions[].back.confirmOnDirty', category: 'navigation', valueKind: 'boolean' },\n\n // --- i18n ---\n { path: 'i18n', category: 'i18n', valueKind: 'object', description: 'Mensagens i18n do CRUD.' },\n { path: 'i18n.crudDialog', category: 'i18n', valueKind: 'object', description: 'Mapa de textos do dialog.' },\n ],\n};\n","/*\n * Public API Surface of praxis-crud\n */\n\nexport * from './lib/praxis-crud.component';\nexport * from './lib/crud-launcher.service';\nexport * from './lib/dynamic-form-dialog-host.component';\nexport * from './lib/crud.types';\nexport * from './lib/dialog.service';\nexport * from './lib/praxis-crud.metadata';\nexport * from './lib/crud-page-header.component';\nexport * from './lib/drawer.adapter';\nexport * from './lib/ai/crud-ai-capabilities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DIALOG_DATA","i3","i2"],"mappings":"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"}
1
+ {"version":3,"file":"praxisui-crud.mjs","sources":["../../../projects/praxis-crud/src/lib/dialog.service.ts","../../../projects/praxis-crud/src/lib/drawer.adapter.ts","../../../projects/praxis-crud/src/lib/crud-launcher.service.ts","../../../projects/praxis-crud/src/lib/crud.types.ts","../../../projects/praxis-crud/src/lib/praxis-crud.component.ts","../../../projects/praxis-crud/src/lib/dynamic-form-dialog-host.component.ts","../../../projects/praxis-crud/src/lib/praxis-crud.metadata.ts","../../../projects/praxis-crud/src/lib/crud-page-header.component.ts","../../../projects/praxis-crud/src/lib/ai/crud-ai-capabilities.ts","../../../projects/praxis-crud/src/public-api.ts","../../../projects/praxis-crud/src/praxisui-crud.ts"],"sourcesContent":["import { Injectable, NgZone } from '@angular/core';\nimport {\n MatDialog,\n MatDialogRef,\n MatDialogConfig,\n MAT_DIALOG_DATA,\n} from '@angular/material/dialog';\nimport { ComponentType } from '@angular/cdk/portal';\n\nexport type DialogRef<T = any, R = any> = MatDialogRef<T, R>;\n\nexport interface DialogConfig<D = any> extends MatDialogConfig<D> {\n /** Disable closing when user clicks on backdrop */\n disableCloseOnBackdrop?: boolean;\n /** Disable closing when user presses escape */\n disableCloseOnEsc?: boolean;\n /** Enable maximize button */\n canMaximize?: boolean;\n /** Start dialog maximized */\n startMaximized?: boolean;\n /** Screen width in px where dialog starts fullscreen */\n fullscreenBreakpoint?: number;\n}\n\nexport { MAT_DIALOG_DATA as DIALOG_DATA } from '@angular/material/dialog';\n\n@Injectable({ providedIn: 'root' })\nexport class DialogService {\n constructor(private matDialog: MatDialog, private zone: NgZone) {}\n\n open<T, D = unknown, R = unknown>(\n component: ComponentType<T>,\n config?: DialogConfig<D>,\n ): DialogRef<T, R> {\n return this.zone.run(() => this.matDialog.open(component, config));\n }\n\n async openAsync<T, D = unknown, R = unknown>(\n loader: () => Promise<ComponentType<T>>,\n config?: DialogConfig<D>,\n ): Promise<DialogRef<T, R>> {\n const component = await loader();\n return this.zone.run(() => this.matDialog.open(component, config));\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport type { CrudAction, CrudMetadata } from './crud.types';\n\nexport interface CrudDrawerOpenConfig {\n action: CrudAction;\n metadata: CrudMetadata;\n inputs: Record<string, unknown>;\n}\n\nexport interface CrudDrawerAdapter {\n open(config: CrudDrawerOpenConfig): Promise<void> | void;\n}\n\nexport const CRUD_DRAWER_ADAPTER = new InjectionToken<CrudDrawerAdapter>('CRUD_DRAWER_ADAPTER');\n\n","import { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { firstValueFrom } from 'rxjs';\nimport { CrudMetadata, CrudAction, FormOpenMode } from './crud.types';\nimport { DialogService, DialogRef } from './dialog.service';\nimport { ASYNC_CONFIG_STORAGE, AsyncConfigStorage, GlobalConfigService, fillUndefined } from '@praxisui/core';\nimport { CRUD_DRAWER_ADAPTER, CrudDrawerAdapter } from './drawer.adapter';\n\ntype CrudOverrides = {\n defaults?: {\n openMode?: FormOpenMode;\n modal?: Record<string, unknown>;\n back?: Record<string, unknown>;\n header?: Record<string, unknown>;\n };\n actions?: Record<string, Partial<CrudAction>>;\n};\n\n@Injectable({ providedIn: 'root' })\nexport class CrudLauncherService {\n private readonly router = inject(Router);\n private readonly dialog = inject(DialogService);\n private readonly storage = inject<AsyncConfigStorage>(ASYNC_CONFIG_STORAGE);\n private readonly global = inject(GlobalConfigService);\n private readonly drawerAdapter = (() => {\n try { return inject<CrudDrawerAdapter>(CRUD_DRAWER_ADAPTER); } catch { return undefined as any; }\n })();\n\n async launch(\n action: CrudAction,\n row: Record<string, unknown> | undefined,\n metadata: CrudMetadata,\n componentKeyId?: string | null,\n ): Promise<{\n mode: FormOpenMode;\n ref?: DialogRef<any>;\n }> {\n // Carregar overrides de CRUD (se houver) e mesclar em uma cópia local\n const merged = await this.mergeCrudOverrides(metadata, action, componentKeyId || undefined);\n const mode = this.resolveOpenMode(merged.action, merged.metadata);\n console.debug('[CRUD:Launcher] mode=', mode, 'action=', action);\n\n if (mode === 'route') {\n if (!merged.action.route) {\n throw new Error(`Route not provided for action ${merged.action.action}`);\n }\n const url = this.buildRoute(merged.action, row, merged.metadata);\n await this.router.navigateByUrl(url);\n return { mode };\n }\n\n if (mode === 'drawer' && this.drawerAdapter) {\n const inputs = this.mapInputs(merged.action, row);\n const idField = merged.metadata.resource?.idField ?? 'id';\n if (row && inputs[idField] === undefined && (row as any)[idField] !== undefined) {\n inputs[idField] = (row as any)[idField];\n }\n await Promise.resolve(this.drawerAdapter.open({ action: merged.action, metadata: merged.metadata, inputs }));\n return { mode };\n }\n\n if (!merged.action.formId) {\n throw new Error(`formId not provided for action ${merged.action.action}`);\n }\n const inputs = this.mapInputs(merged.action, row);\n const idField = merged.metadata.resource?.idField ?? 'id';\n if (row && inputs[idField] === undefined && row[idField] !== undefined) {\n inputs[idField] = row[idField];\n }\n const modalCfg = { ...(merged.metadata.defaults?.modal || {}) } as any;\n\n console.debug('[CRUD:Launcher] opening dialog with:', {\n action: merged.action.action,\n formId: merged.action.formId,\n inputs,\n modalCfg,\n resourcePath:\n merged.metadata.resource?.path ?? (merged.metadata.table as any)?.resourcePath,\n });\n const panelClasses = ['pfx-dialog-pane', 'pfx-dialog-frosted'];\n if (modalCfg.panelClass) {\n panelClasses.push(modalCfg.panelClass);\n }\n // Backdrop style presets\n const backdropClasses: string[] = [];\n const style = modalCfg.backdropStyle as string | undefined;\n if (!style || style === 'blur') {\n backdropClasses.push('pfx-blur-backdrop');\n } else if (style === 'dim') {\n backdropClasses.push('cdk-overlay-dark-backdrop');\n } else if (style === 'transparent') {\n backdropClasses.push('pfx-transparent-backdrop');\n }\n if (modalCfg.backdropClass) {\n backdropClasses.push(modalCfg.backdropClass);\n }\n const ref = await this.dialog.openAsync(\n () =>\n import('./dynamic-form-dialog-host.component').then(\n (m) => m.DynamicFormDialogHostComponent,\n ),\n {\n ...modalCfg,\n panelClass: panelClasses,\n backdropClass: backdropClasses,\n autoFocus: modalCfg.autoFocus ?? true,\n restoreFocus: modalCfg.restoreFocus ?? true,\n minWidth: '360px',\n maxWidth: '95vw',\n ariaLabelledBy: 'crudDialogTitle',\n data: { action: merged.action, row, metadata: merged.metadata, inputs },\n },\n );\n return { mode, ref };\n }\n\n resolveOpenMode(action: CrudAction, metadata: CrudMetadata): FormOpenMode {\n // Local precedence: action > metadata.defaults\n const local = action.openMode ?? metadata.defaults?.openMode;\n if (local) return local;\n\n // Global fallback (action-specific, then general), then hard fallback 'route'\n try {\n const globalCrud = this.global.getCrud();\n const actionName = (action as any).action as string | undefined;\n const globalMode = (actionName && globalCrud?.actionDefaults?.[actionName]?.openMode) ?? globalCrud?.defaults?.openMode;\n let resolved: FormOpenMode = (globalMode as any) ?? 'route';\n // Safety: if modal/drawer but no formId, degrade to route to avoid runtime error\n if ((resolved === 'modal' || resolved === 'drawer') && !action.formId) {\n resolved = 'route';\n }\n return resolved;\n } catch {\n return 'route';\n }\n }\n\n private buildRoute(\n action: CrudAction,\n row: Record<string, unknown> | undefined,\n metadata: CrudMetadata,\n ): string {\n let route = action.route as string;\n const query: Record<string, string> = {};\n action.params?.forEach((p) => {\n const value = row?.[p.from];\n if (p.to === 'routeParam') {\n if (value === undefined || value === null) {\n throw new Error(`Missing value for route param ${p.name}`);\n }\n const re = new RegExp(`:${p.name}\\\\b`, 'g');\n route = route.replace(re, encodeURIComponent(String(value)));\n } else if (p.to === 'query' && value !== undefined && value !== null) {\n query[p.name] = String(value);\n }\n });\n const missing = route.match(/:[a-zA-Z0-9_-]+/g);\n if (missing) {\n throw new Error(\n `Missing route parameters for action \"${action.action}\": ${missing\n .map((m) => m.slice(1))\n .join(', ')}`,\n );\n }\n // Ensure resource is present for routed forms so the formId is deterministic\n try {\n const resourcePath =\n metadata.resource?.path || (metadata.table as any)?.resourcePath;\n if (resourcePath && query['resource'] === undefined) {\n query['resource'] = resourcePath as string;\n }\n } catch {}\n // ReturnTo param for graceful back navigation on routed forms\n const back = action.back || metadata.defaults?.back;\n const returnTo = back?.returnTo || this.router.url;\n if (returnTo) {\n query['returnTo'] = returnTo;\n }\n const queryString = new URLSearchParams(query).toString();\n return queryString ? `${route}?${queryString}` : route;\n }\n\n private mapInputs(\n action: CrudAction,\n row: Record<string, unknown> | undefined,\n ): Record<string, unknown> {\n const inputs: Record<string, unknown> = {};\n action.params?.forEach((p) => {\n if (p.to === 'input') {\n inputs[p.name] = row?.[p.from];\n }\n });\n return inputs;\n }\n\n private async mergeCrudOverrides(\n metadata: CrudMetadata,\n action: CrudAction,\n componentKeyId?: string,\n ): Promise<{ metadata: CrudMetadata; action: CrudAction }> {\n try {\n if (!componentKeyId) return { metadata, action };\n const key = `crud-overrides:${componentKeyId}`;\n let saved: CrudOverrides | null = null;\n try {\n saved = await firstValueFrom(this.storage.loadConfig<CrudOverrides>(key));\n } catch {}\n const overDefaults = saved?.defaults || {};\n const overActions = saved?.actions || {};\n\n // Merge defaults (shallow for defaults, shallow for modal/back)\n let mergedDefaults: any = {\n ...(metadata.defaults || {}),\n ...('openMode' in overDefaults ? { openMode: overDefaults.openMode } : {}),\n modal: { ...(metadata.defaults?.modal || {}), ...(overDefaults.modal || {}) },\n back: { ...(metadata.defaults?.back || {}), ...(overDefaults.back || {}) },\n header: { ...(metadata.defaults?.header || {}), ...(overDefaults.header || {}) },\n };\n\n // Fill missing defaults from GlobalConfig (as last fallback)\n try {\n const globalCrud = this.global.getCrud();\n if (globalCrud?.defaults) {\n mergedDefaults = fillUndefined(mergedDefaults, globalCrud.defaults as any);\n }\n } catch {}\n\n // Merge metadata copy\n const mergedMetadata: CrudMetadata = {\n ...metadata,\n defaults: mergedDefaults,\n };\n\n // Action-level override\n const actOv = overActions[action.action] || {};\n const mergedAction: CrudAction = {\n ...action,\n ...('openMode' in actOv ? { openMode: actOv.openMode } : {}),\n ...('formId' in actOv ? { formId: actOv.formId } : {}),\n ...('route' in actOv ? { route: actOv.route } : {}),\n } as CrudAction;\n\n return { metadata: mergedMetadata, action: mergedAction };\n } catch {\n return { metadata, action };\n }\n }\n}\n","import { DialogConfig } from './dialog.service';\nimport {\n TableConfig,\n FormConfig,\n RowAction,\n ToolbarAction,\n ApiEndpoint,\n} from '@praxisui/core';\nimport type { BackConfig } from '@praxisui/core';\n\nexport type FormOpenMode = 'route' | 'modal' | 'drawer';\n\nexport interface CrudParamMapping {\n from: string;\n to: 'routeParam' | 'query' | 'input';\n name: string;\n}\n\nexport type CrudAction = (RowAction | ToolbarAction) & {\n openMode?: FormOpenMode;\n route?: string;\n formId?: string;\n params?: CrudParamMapping[];\n back?: BackConfig;\n};\n\nexport interface CrudDefaults {\n openMode?: FormOpenMode;\n modal?: DialogConfig;\n back?: BackConfig;\n header?: CrudHeaderConfig;\n}\n\nexport interface CrudResource {\n path: string;\n idField?: string | number;\n endpointKey?: ApiEndpoint;\n}\n\nexport interface CrudMetadata {\n component: 'praxis-crud';\n resource?: CrudResource;\n data?: any[] | null;\n table: TableConfig;\n form?: FormConfig;\n defaults?: CrudDefaults;\n actions?: CrudAction[];\n i18n?: { crudDialog?: Record<string, string> };\n}\n\n// BackConfig moved to @praxisui/core to avoid DF↔CRUD cycle\nexport type { BackConfig };\n\nexport interface CrudHeaderConfig {\n showBack?: boolean;\n backLabel?: string;\n variant?: 'ghost' | 'tonal' | 'outlined';\n sticky?: boolean;\n breadcrumbs?: boolean;\n divider?: boolean;\n}\n\nexport function assertCrudMetadata(meta: CrudMetadata): void {\n meta.actions?.forEach((action) => {\n const mode = action.openMode ?? meta.defaults?.openMode ?? 'route';\n if (mode === 'route' && !action.route) {\n throw new Error(`Route not provided for action ${action.action}`);\n }\n if ((mode === 'modal' || mode === 'drawer') && !action.formId) {\n throw new Error(`formId not provided for action ${action.action}`);\n }\n action.params?.forEach((p) => {\n if (!['routeParam', 'query', 'input'].includes(p.to)) {\n throw new Error(`Invalid param mapping target: ${p.to}`);\n }\n });\n });\n}\n","import {\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n Output,\n inject,\n OnChanges,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { PraxisTable } from '@praxisui/table';\nimport { CrudLauncherService } from './crud-launcher.service';\nimport { CrudMetadata, FormOpenMode, assertCrudMetadata, CrudAction } from './crud.types';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { firstValueFrom } from 'rxjs';\nimport { TableConfig, ASYNC_CONFIG_STORAGE, AsyncConfigStorage, createDefaultTableConfig, GlobalConfigService, ComponentKeyService } from '@praxisui/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { EmptyStateCardComponent } from '@praxisui/core';\n\n@Component({\n selector: 'praxis-crud',\n standalone: true,\n imports: [PraxisTable, EmptyStateCardComponent],\n template: `\n @if (shouldRenderTable(resolvedMetadata)) {\n <praxis-table\n [config]=\"tableConfigForBinding\"\n [resourcePath]=\"resolveResourcePath(resolvedMetadata)\"\n [data]=\"resolveTableData(resolvedMetadata)\"\n [tableId]=\"crudId || 'default'\"\n [crudContext]=\"tableCrudContext\"\n [editModeEnabled]=\"editModeEnabled\"\n (rowAction)=\"onAction($event.action, $event.row)\"\n (toolbarAction)=\"onAction($event.action)\"\n (reset)=\"onResetPreferences()\"\n ></praxis-table>\n } @else {\n @if (editModeEnabled) {\n <praxis-empty-state-card\n icon=\"table_rows\"\n [title]=\"'Conecte o CRUD a um recurso'\"\n [description]=\"'Informe os metadados (resourcePath / schema) ou forneça metadata.data para habilitar a tabela e ações.'\"\n [primaryAction]=\"{ label: 'Configurar metadados', icon: 'bolt', action: onConfigureRequested.bind(this) }\"\n />\n }\n }\n `,\n})\nexport class PraxisCrudComponent implements OnChanges {\n /** JSON inline ou chave/URL resolvida pelo MetadataResolver */\n @Input({ required: true }) metadata!: CrudMetadata | string;\n /** Identificador obrigatório do CRUD (base para tabela/formulário) */\n @Input({ required: true }) crudId!: string;\n /** Identificador opcional para instâncias múltiplas */\n @Input() componentInstanceId?: string;\n @Input() context?: Record<string, unknown>;\n /** Encaminha o modo de edição de layout para a tabela interna */\n @Input() editModeEnabled = false;\n /** CTA: usado pelo Builder para abrir configuração de metadados quando vazio */\n @Output() configureRequested = new EventEmitter<void>();\n @Output() afterOpen = new EventEmitter<{\n mode: FormOpenMode;\n action: string;\n }>();\n @Output() afterClose = new EventEmitter<void>();\n @Output() afterSave = new EventEmitter<{\n id: string | number;\n data: unknown;\n }>();\n @Output() afterDelete = new EventEmitter<{ id: string | number }>();\n @Output() error = new EventEmitter<unknown>();\n\n resolvedMetadata!: CrudMetadata;\n /** Configuração efetiva da tabela com melhorias automáticas (ex.: botão Adicionar). */\n effectiveTableConfig?: TableConfig;\n /** Config passado ao PraxisTable — sempre definido (fallback seguro). */\n tableConfigForBinding: TableConfig = createDefaultTableConfig();\n private readonly launcher = inject(CrudLauncherService);\n private readonly destroyRef = inject(DestroyRef);\n @ViewChild(PraxisTable) private table!: PraxisTable;\n private readonly storage = inject<AsyncConfigStorage>(ASYNC_CONFIG_STORAGE);\n private readonly snack = inject(MatSnackBar);\n private readonly global = (() => { try { return inject(GlobalConfigService); } catch { return undefined as any; } })();\n private readonly componentKeys = inject(ComponentKeyService);\n private readonly route = (() => { try { return inject(ActivatedRoute); } catch { return undefined as ActivatedRoute | undefined; } })();\n private warnedMissingId = false;\n /**\n * Stable CRUD context passed to PraxisTable.\n * Previously this was created via a getter, producing a new object each CD tick\n * and causing excessive re-renders. Now we compute it only when metadata changes.\n */\n tableCrudContext?: {\n tableId: string;\n componentKeyId?: string;\n resourcePath?: string;\n defaults?: any;\n actions?: Array<{\n action: string;\n label?: string;\n formId?: string;\n route?: string;\n openMode?: 'modal' | 'route';\n }>;\n };\n\n onResetPreferences(): void {\n try {\n const keyId = this.componentKeyId();\n if (!keyId) return;\n const key = `crud-overrides:${keyId}`;\n void firstValueFrom(this.storage.clearConfig(key)).catch(() => {});\n this.snack.open('Overrides de CRUD redefinidos', undefined, { duration: 2000 });\n } catch {}\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['metadata']) {\n try {\n const parsed =\n typeof this.metadata === 'string'\n ? (JSON.parse(this.metadata) as CrudMetadata)\n : this.metadata;\n this.resolvedMetadata = this.normalizeMetadata(parsed);\n assertCrudMetadata(this.resolvedMetadata);\n this.effectiveTableConfig = this.buildEffectiveTableConfig(\n this.resolvedMetadata,\n );\n // Evitar passar undefined para [config], o que sobrescreve o default do PraxisTable\n this.tableConfigForBinding =\n this.effectiveTableConfig ||\n ((this.resolvedMetadata.table as TableConfig | undefined) ??\n createDefaultTableConfig());\n // Build a stable table context when metadata changes\n this.tableCrudContext = this.buildTableCrudContext(this.resolvedMetadata);\n } catch (err) {\n this.error.emit(err);\n }\n }\n }\n\n async onAction(action: string, row?: Record<string, unknown>): Promise<void> {\n try {\n (document.activeElement as HTMLElement | null)?.blur();\n let actionMeta = this.resolvedMetadata.actions?.find(\n (a) => a.action === action,\n );\n // Fallback: if metadata.actions is missing or doesn't include the action,\n // synthesize from table CRUD context or let overrides drive behavior.\n if (!actionMeta) {\n const ctxAction = this.tableCrudContext?.actions?.find((a) => a.action === action);\n if (ctxAction) {\n actionMeta = {\n action: ctxAction.action,\n openMode: ctxAction.openMode as any,\n formId: ctxAction.formId,\n route: ctxAction.route,\n } as any;\n } else {\n // Minimal stub – CrudLauncherService will merge overrides/defaults\n actionMeta = { action } as any;\n }\n }\n const effectiveAction = this.withDefaultFormId(\n (actionMeta || { action } as any) as CrudAction,\n );\n const { mode, ref } = await this.launcher.launch(\n effectiveAction,\n row,\n this.resolvedMetadata,\n this.componentKeyId(),\n );\n this.afterOpen.emit({ mode, action: effectiveAction.action });\n if (ref) {\n const idField = this.getIdField();\n ref\n .afterClosed()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((result) => {\n this.afterClose.emit();\n if (result?.type === 'save') {\n const data = result.data as Record<string, unknown>;\n const id = data?.[idField] as string | number;\n this.afterSave.emit({ id, data: result.data });\n this.refreshTable();\n }\n if (result?.type === 'delete') {\n const data = result.data as Record<string, unknown>;\n const id = data?.[idField] as string | number;\n this.afterDelete.emit({ id });\n this.refreshTable();\n }\n });\n }\n } catch (err) {\n this.error.emit(err);\n }\n }\n\n private refreshTable(): void {\n this.table.refetch();\n }\n\n resolveResourcePath(meta?: CrudMetadata): string {\n return (\n (meta?.resource?.path as string) ||\n ((meta?.table as any)?.resourcePath as string) ||\n ''\n ).trim();\n }\n\n resolveLocalData(meta?: CrudMetadata): any[] | null {\n const localData = (meta as any)?.data;\n return Array.isArray(localData) ? localData : null;\n }\n\n resolveTableData(meta?: CrudMetadata): any[] | null {\n if (this.resolveResourcePath(meta).length > 0) {\n return null;\n }\n return this.resolveLocalData(meta);\n }\n\n shouldRenderTable(meta?: CrudMetadata): boolean {\n return this.resolveResourcePath(meta).length > 0 || Array.isArray((meta as any)?.data);\n }\n\n private getIdField(): string {\n return (this.resolvedMetadata?.resource?.idField as string) || 'id';\n }\n\n onConfigureRequested(): void {\n this.configureRequested.emit();\n }\n\n /**\n * Constrói uma configuração de tabela efetiva a partir dos metadados,\n * adicionando automaticamente a ação de \"Adicionar\" na toolbar quando aplicável.\n * - Evita duplicidade se a toolbar já tiver ação equivalente.\n * - Garante visibilidade da toolbar quando a ação é injetada.\n */\n private buildEffectiveTableConfig(meta: CrudMetadata): TableConfig | undefined {\n const base = meta.table as TableConfig | undefined;\n // Clonar base ou criar default para permitir injeção de melhorias\n const cfg: TableConfig = base\n ? (JSON.parse(JSON.stringify(base)) as TableConfig)\n : createDefaultTableConfig();\n\n let changed = false;\n\n const ensureToolbar = () => {\n if (!cfg.toolbar) {\n (cfg as any).toolbar = { visible: true, position: 'top' } as any;\n }\n return (cfg as any).toolbar as any;\n };\n\n // 1) Toolbar: injetar ação \"Adicionar\" se metadata declara create/add e toolbar não tiver\n const hasToolbarAdd = (cfg.toolbar?.actions || []).some((a: any) => this.isAddLike(a));\n const addAction = (meta.actions || []).find((a: any) => this.isAddLike(a));\n if (addAction) {\n if (hasToolbarAdd) {\n const tb = ensureToolbar();\n tb.visible = true; // garantir visibilidade\n } else {\n const tb = ensureToolbar();\n tb.visible = true;\n if (!tb.actions) tb.actions = [] as any;\n const injected = {\n id: addAction.id || 'add',\n label: addAction.label || 'Adicionar',\n icon: addAction.icon || 'add',\n type: 'button',\n color: 'primary',\n position: 'end',\n action: addAction.action || 'add',\n } as any;\n (tb.actions as any[]).push(injected);\n }\n changed = true;\n }\n\n // 2) Row actions automáticas (apenas quando host não definiu explicitamente)\n const hostDefinedRow = !!(base && base.actions && (base.actions as any).row);\n const crudDefaults = (this.global.get('crud.defaults') as any) || {};\n const autoRow = crudDefaults.autoRowActions !== false; // default true\n if (!hostDefinedRow && autoRow) {\n const acts = (meta.actions || []) as any[];\n const hasView = acts.some((a) => String(a.action).toLowerCase() === 'view');\n const hasEdit = acts.some((a) => String(a.action).toLowerCase() === 'edit');\n const includeDelete = !!crudDefaults.includeDeleteInRow && acts.some((a) => String(a.action).toLowerCase() === 'delete');\n const rowActions: Array<any> = [];\n if (hasView) rowActions.push({ id: 'view', label: 'Ver', icon: 'visibility', action: 'view', tooltip: 'Ver' });\n if (hasEdit) rowActions.push({ id: 'edit', label: 'Editar', icon: 'edit', action: 'edit', tooltip: 'Editar' });\n if (includeDelete) rowActions.push({ id: 'delete', label: 'Excluir', icon: 'delete', action: 'delete', tooltip: 'Excluir' });\n if (rowActions.length) {\n (cfg as any).actions = (cfg as any).actions || {};\n (cfg as any).actions.row = {\n enabled: true,\n position: 'end',\n width: (cfg as any).actions?.row?.width || '120px',\n display: crudDefaults.rowActionsDisplay || 'icons',\n trigger: (cfg as any).actions?.row?.trigger || 'hover',\n actions: rowActions,\n header: { label: (cfg as any).actions?.row?.header?.label || '' },\n } as any;\n changed = true;\n }\n }\n\n // Se nada foi alterado e havia base, não retornar para preservar semântica anterior\n if (!changed) {\n return base ? undefined : cfg;\n }\n return cfg;\n }\n\n /** Heurística leve para identificar ações do tipo \"adicionar/criar\" */\n private isAddLike(a: any): boolean {\n if (!a) return false;\n const normalize = (s?: any) => String(s || '').trim().toLowerCase();\n const id = normalize(a.action || a.id || a.code || a.key || a.name || a.type);\n const icon = normalize(a.icon);\n const label = normalize(a.label);\n const addIds = new Set(['add', 'create', 'novo', 'new', 'incluir', 'inserir']);\n if (addIds.has(id)) return true;\n if (icon === 'add' || icon === 'add_circle' || icon === 'add_box') return true;\n if (label === 'adicionar' || label === 'novo' || label === 'criar' || label === 'incluir')\n return true;\n return false;\n }\n\n /** Builds a stable CRUD context object for PraxisTable based on metadata. */\n private buildTableCrudContext(meta: CrudMetadata):\n | {\n tableId: string;\n componentKeyId?: string;\n resourcePath?: string;\n defaults?: any;\n actions?: Array<{\n action: string;\n label?: string;\n formId?: string;\n route?: string;\n openMode?: 'modal' | 'route';\n }>;\n idField?: string;\n }\n | undefined {\n if (!meta) return undefined;\n // Provide a minimal default action set when metadata.actions is empty,\n // so the editor can expose per-action overrides entirely via UI.\n const baseActions = meta.actions && meta.actions.length\n ? meta.actions\n : ([{ action: 'create' }, { action: 'view' }, { action: 'edit' }] as any[]);\n return {\n tableId: this.crudId || 'default',\n componentKeyId: this.componentKeyId() || undefined,\n resourcePath: this.resolveResourcePath(meta) || undefined,\n defaults: meta.defaults,\n actions: baseActions.map((a: any) => ({\n action: a.action,\n label: a.label,\n formId: a.formId || this.crudId,\n route: a.route,\n openMode: a.openMode,\n })),\n idField: (meta.resource as any)?.idField || 'id',\n };\n }\n\n private componentKeyId(): string | null {\n const key = this.componentKeys.buildComponentId({\n componentType: 'praxis-crud',\n componentId: this.crudId,\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('[PraxisCrud] crudId is required for config persistence.');\n }\n\n private normalizeMetadata(meta: CrudMetadata): CrudMetadata {\n if (!meta || !meta.actions?.length || !this.crudId) return meta;\n const actions = meta.actions.map((action) =>\n action.formId ? action : ({ ...action, formId: this.crudId } as CrudAction),\n );\n return { ...meta, actions };\n }\n\n private withDefaultFormId(action: CrudAction): CrudAction {\n if (!action || action.formId || !this.crudId) return action;\n return { ...action, formId: this.crudId };\n }\n}\n","import { Component, Inject, ViewChild, OnInit, DestroyRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { PraxisDynamicForm } from '@praxisui/dynamic-form';\nimport { GenericCrudService, ASYNC_CONFIG_STORAGE, AsyncConfigStorage, PraxisIconDirective } from '@praxisui/core';\nimport { DialogService, DialogRef, DIALOG_DATA } from './dialog.service';\nimport { ConfirmDialogComponent } from '@praxisui/dynamic-fields';\nimport { filter, take } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\ntype DialogStateSnapshot = {\n maximized?: boolean;\n width?: string;\n height?: string;\n};\n\n@Component({\n selector: 'praxis-dynamic-form-dialog-host',\n standalone: true,\n imports: [\n CommonModule,\n MatDialogModule,\n MatButtonModule,\n MatIconModule,\n PraxisIconDirective,\n PraxisDynamicForm,\n ],\n providers: [GenericCrudService],\n host: {\n class: 'praxis-dialog',\n '[attr.data-density]': 'modal.density || \"default\"',\n },\n template: `\n <div mat-dialog-title class=\"dialog-header\">\n <h2 id=\"crudDialogTitle\" class=\"dialog-title\">\n {{ data.action?.label || texts.title }}\n </h2>\n <span class=\"spacer\"></span>\n @if (modal.canMaximize) {\n <button\n mat-icon-button\n type=\"button\"\n (click)=\"toggleMaximize()\"\n [attr.aria-label]=\"maximized ? texts.restoreLabel : texts.maximizeLabel\"\n >\n <mat-icon [praxisIcon]=\"maximized ? 'close_fullscreen' : 'open_in_full'\"></mat-icon>\n </button>\n }\n <button\n mat-icon-button\n type=\"button\"\n (click)=\"onCancel()\"\n [attr.aria-label]=\"texts.closeLabel\"\n cdkFocusInitial\n >\n <mat-icon [praxisIcon]=\"'close'\"></mat-icon>\n </button>\n </div>\n\n <mat-dialog-content\n class=\"dialog-content\"\n aria-labelledby=\"crudDialogTitle\"\n >\n <praxis-dynamic-form\n [formId]=\"data.action?.formId\"\n [resourcePath]=\"resourcePath\"\n [resourceId]=\"resourceId\"\n [mode]=\"mode\"\n [presentationModeGlobal]=\"mode === 'view' ? true : null\"\n [backConfig]=\"backConfig\"\n (formSubmit)=\"onSave($event)\"\n (formCancel)=\"onCancel()\"\n ></praxis-dynamic-form>\n </mat-dialog-content>\n `,\n styles: [\n `\n :host {\n --dlg-header-h: 56px;\n --dlg-footer-h: 56px;\n --dlg-pad: 16px;\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n }\n :host([data-density='compact']) {\n --dlg-header-h: 44px;\n --dlg-footer-h: 44px;\n --dlg-pad: 12px;\n }\n .dialog-header {\n position: sticky;\n top: 0;\n z-index: 1;\n display: flex;\n align-items: center;\n gap: var(--dlg-pad);\n padding: 0 var(--dlg-pad);\n height: var(--dlg-header-h);\n margin: 0;\n background: var(--md-sys-color-surface-container-high);\n border-bottom: 1px solid var(--md-sys-color-outline-variant);\n color: var(--md-sys-color-on-surface);\n }\n .dialog-title {\n margin: 0;\n font: inherit;\n font-weight: 600;\n color: var(--md-sys-color-on-surface);\n }\n .spacer {\n flex: 1;\n }\n .dialog-content {\n overflow: auto;\n padding: var(--dlg-pad);\n /* use small viewport height to avoid mobile chrome jumps */\n max-height: calc(100svh - var(--dlg-header-h) - 32px);\n }\n .dialog-header button.mat-icon-button { color: var(--md-sys-color-on-surface-variant); }\n .dialog-header button.mat-icon-button:hover {\n color: var(--md-sys-color-primary);\n background: var(--md-sys-color-primary-container);\n }\n .dialog-footer {\n position: sticky;\n bottom: 0;\n z-index: 1;\n padding: var(--dlg-pad);\n }\n `,\n ],\n})\nexport class DynamicFormDialogHostComponent implements OnInit {\n @ViewChild(PraxisDynamicForm) formComp?: PraxisDynamicForm;\n modal: any = {};\n maximized = false;\n private initialSize: { width?: string; height?: string } = {};\n private rememberState = false;\n private stateKey?: string;\n private backDefaults: import('./crud.types').BackConfig = {};\n private destroyRef: DestroyRef = inject(DestroyRef);\n\n resourcePath?: string;\n resourceId?: string | number;\n mode: 'create' | 'edit' | 'view' = 'create';\n backConfig?: import('./crud.types').BackConfig;\n private idField = 'id';\n\n texts = {\n title: 'Formulário',\n close: 'Fechar',\n closeLabel: 'Fechar diálogo',\n maximizeLabel: 'Maximizar',\n restoreLabel: 'Restaurar',\n discardTitle: 'Descartar alterações?',\n discardMessage:\n 'Você tem alterações não salvas. Deseja fechar assim mesmo?',\n discardConfirm: 'Descartar',\n discardCancel: 'Cancelar',\n } as Record<string, string>;\n\n constructor(\n @Inject(MatDialogRef)\n public dialogRef: DialogRef<DynamicFormDialogHostComponent>,\n @Inject(DIALOG_DATA) public data: any,\n private dialogService: DialogService,\n private crud: GenericCrudService<any>,\n @Inject(ASYNC_CONFIG_STORAGE) private configStorage: AsyncConfigStorage,\n ) {\n this.dialogRef.disableClose = true;\n\n // i18n\n this.texts = {\n ...this.texts,\n ...(this.data.metadata?.i18n?.crudDialog || {}),\n };\n\n // defaults do modal (inclui canMaximize: true)\n this.modal = {\n canMaximize: true,\n ...(this.data.metadata?.defaults?.modal || {}),\n };\n this.rememberState = !!this.modal.rememberLastState;\n this.stateKey = this.data.action?.formId\n ? `crud-dialog-state:${this.data.action.formId}`\n : undefined;\n\n // derivar path/id/mode\n this.resourcePath =\n this.data.metadata?.resource?.path ??\n this.data.metadata?.table?.resourcePath;\n\n if (this.resourcePath) {\n this.crud.configure(\n this.resourcePath,\n this.data.metadata?.resource?.endpointKey,\n );\n }\n\n this.idField = this.data.metadata?.resource?.idField ?? 'id';\n this.resourceId = this.data.inputs?.[this.idField];\n\n const act = this.data.action?.action;\n this.mode = act === 'edit' ? 'edit' : act === 'view' ? 'view' : 'create';\n\n // Back config: defaults from metadata/action, overridden by saved per-form config\n const defaults = (this.data.action?.back || this.data.metadata?.defaults?.back) || {};\n this.backDefaults = defaults;\n this.backConfig = { ...defaults };\n\n console.debug('[CRUD:Host] constructed', {\n action: this.data?.action,\n resourcePath: this.resourcePath,\n resourceId: this.resourceId,\n mode: this.mode,\n modal: this.modal,\n backConfig: this.backConfig,\n });\n\n // Esc\n if (!this.modal.disableCloseOnEsc) {\n this.dialogRef\n .keydownEvents()\n .pipe(\n filter((e) => e.key === 'Escape'),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => this.onCancel());\n }\n\n // Backdrop\n if (!this.modal.disableCloseOnBackdrop) {\n this.dialogRef\n .backdropClick()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.onCancel());\n }\n\n // Salvar estado ao fechar, se aplicável\n this.dialogRef\n .afterClosed()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.saveState());\n }\n\n ngOnInit(): void {\n // Carregar estado salvo (se habilitado)\n if (this.rememberState && this.stateKey) {\n this.configStorage\n .loadConfig<DialogStateSnapshot>(this.stateKey)\n .pipe(take(1))\n .subscribe((saved) => this.applySavedState(saved || null));\n } else {\n this.applySavedState(null);\n }\n\n // Carregar override de back config se houver formId\n if (this.data.action?.formId) {\n this.configStorage\n .loadConfig<import('./crud.types').BackConfig>(`crud-back:${this.data.action.formId}`)\n .pipe(take(1))\n .subscribe((saved) => {\n if (saved && typeof saved === 'object') {\n this.backConfig = { ...this.backDefaults, ...saved };\n }\n });\n }\n }\n\n onSave(result: unknown): void {\n if (this.modal.closeOnSave === false) {\n // Não fechar: manter aberto e opcionalmente salvar estado atual\n this.saveState();\n return;\n }\n this.dialogRef.close({ type: 'save', data: result });\n }\n\n onCancel(): void {\n const dirty = this.formComp?.form.dirty;\n const backCfg = (this.data.action?.back || this.data.metadata?.defaults?.back) || {};\n const confirm = backCfg.confirmOnDirty ?? true;\n if (dirty && confirm) {\n const ref = this.dialogService.open(ConfirmDialogComponent, {\n data: {\n title: this.texts.discardTitle,\n message: this.texts.discardMessage,\n confirmText: this.texts.discardConfirm,\n cancelText: this.texts.discardCancel,\n type: 'warning',\n },\n autoFocus: false,\n });\n ref\n .afterClosed()\n .pipe(\n filter((confirmed) => !!confirmed),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => this.dialogRef.close());\n } else {\n this.dialogRef.close();\n }\n }\n\n toggleMaximize(initial = false): void {\n this.maximized = initial ? true : !this.maximized;\n const gap = this.maximized ? this.modal.edgeGap ?? 8 : undefined;\n const width = this.maximized\n ? `calc(100vw - ${2 * (gap ?? 0)}px)`\n : this.initialSize.width;\n const height = this.maximized\n ? `calc(100dvh - ${2 * (gap ?? 0)}px)`\n : this.initialSize.height;\n\n this.dialogRef.updateSize(width, height);\n this.dialogRef.updatePosition();\n\n const pane: HTMLElement | undefined = (this.dialogRef as any)\n ?._containerInstance?._elementRef?.nativeElement?.parentElement;\n if (pane && pane.classList.contains('pfx-dialog-pane')) {\n pane.style.margin = this.maximized ? `${gap}px` : '';\n }\n this.saveState();\n }\n\n private saveState(): void {\n if (!this.rememberState || !this.stateKey) return;\n const pane: HTMLElement | undefined = (this.dialogRef as any)\n ?._containerInstance?._elementRef?.nativeElement?.parentElement;\n const style = pane ? getComputedStyle(pane) : null;\n const currentWidth = style?.width || this.initialSize.width;\n const currentHeight = style?.height || this.initialSize.height;\n this.configStorage\n .saveConfig(this.stateKey, {\n maximized: this.maximized,\n width: currentWidth,\n height: currentHeight,\n })\n .pipe(take(1))\n .subscribe({ error: () => {} });\n }\n\n private applySavedState(saved: DialogStateSnapshot | null): void {\n this.initialSize = {\n width: saved?.width ?? this.modal.width,\n height: saved?.height ?? this.modal.height,\n };\n console.debug('[CRUD:Host] ngOnInit', {\n initialSize: this.initialSize,\n startMaximized: this.modal.startMaximized,\n fullscreenBreakpoint: this.modal.fullscreenBreakpoint,\n });\n let shouldMax = false;\n if (saved && typeof saved.maximized === 'boolean') {\n shouldMax = !!saved.maximized;\n } else {\n shouldMax =\n this.modal.startMaximized ||\n (this.modal.fullscreenBreakpoint &&\n window.innerWidth <= this.modal.fullscreenBreakpoint);\n }\n if (shouldMax) {\n this.toggleMaximize(true);\n } else if (this.initialSize.width || this.initialSize.height) {\n this.dialogRef.updateSize(this.initialSize.width, this.initialSize.height);\n this.dialogRef.updatePosition();\n }\n }\n}\n","import { ComponentDocMeta, ComponentMetadataRegistry } from '@praxisui/core';\nimport { PraxisCrudComponent } from './praxis-crud.component';\nimport { CrudMetadata, FormOpenMode } from './crud.types';\nimport { ENVIRONMENT_INITIALIZER, Provider } from '@angular/core';\n\n/** Metadata for PraxisCrudComponent */\nexport const PRAXIS_CRUD_COMPONENT_METADATA: ComponentDocMeta = {\n id: 'praxis-crud',\n selector: 'praxis-crud',\n component: PraxisCrudComponent,\n friendlyName: 'Praxis CRUD',\n description: 'Tabela com operações de CRUD via metadados.',\n icon: 'table_chart',\n inputs: [\n {\n name: 'metadata',\n type: 'CrudMetadata | string',\n description:\n 'Metadados de configuração do CRUD (fonte remota via resource.path ou local via metadata.data).',\n },\n {\n name: 'crudId',\n type: 'string',\n description: 'Identificador do CRUD (base para tabela/formulário e persistência)',\n },\n {\n name: 'componentInstanceId',\n type: 'string',\n description: 'Identificador opcional para múltiplas instâncias na mesma rota',\n },\n {\n name: 'context',\n type: 'Record<string, unknown>',\n description: 'Contexto adicional para resoluções',\n },\n {\n name: 'editModeEnabled',\n type: 'boolean',\n default: false,\n description: 'Habilita modo de edição do layout',\n },\n ],\n outputs: [\n {\n name: 'afterOpen',\n type: '{ mode: FormOpenMode; action: string }',\n description: 'Emitido após abrir diálogo',\n },\n {\n name: 'afterClose',\n type: 'void',\n description: 'Emitido após fechar diálogo',\n },\n {\n name: 'afterSave',\n type: '{ id: string | number; data: unknown }',\n description: 'Emitido ao salvar',\n },\n {\n name: 'afterDelete',\n type: '{ id: string | number }',\n description: 'Emitido ao deletar',\n },\n { name: 'error', type: 'unknown', description: 'Emitido em erros' },\n {\n name: 'configureRequested',\n type: 'void',\n description: 'Emitido quando CTA de configuração é acionado em modo edição',\n },\n ],\n actions: [\n {\n id: 'create',\n label: 'Criar',\n icon: 'add',\n description: 'Emite evento ao abrir fluxo de criação',\n emit: 'afterOpen',\n payloadSchema: {\n type: 'object',\n properties: {\n action: { type: 'string', description: 'Ação executada' },\n mode: { type: 'string', description: 'Modo de abertura' },\n },\n required: ['action', 'mode'],\n example: { action: 'create', mode: 'route' },\n },\n scope: 'toolbar',\n },\n {\n id: 'view',\n label: 'Visualizar',\n icon: 'visibility',\n description: 'Emite evento ao abrir fluxo de visualização',\n emit: 'afterOpen',\n payloadSchema: {\n type: 'object',\n properties: {\n action: { type: 'string', description: 'Ação executada' },\n mode: { type: 'string', description: 'Modo de abertura' },\n },\n required: ['action', 'mode'],\n example: { action: 'view', mode: 'modal' },\n },\n scope: 'context',\n },\n {\n id: 'edit',\n label: 'Editar',\n icon: 'edit',\n description: 'Emite evento ao abrir fluxo de edição',\n emit: 'afterOpen',\n payloadSchema: {\n type: 'object',\n properties: {\n action: { type: 'string', description: 'Ação executada' },\n mode: { type: 'string', description: 'Modo de abertura' },\n },\n required: ['action', 'mode'],\n example: { action: 'edit', mode: 'drawer' },\n },\n scope: 'context',\n },\n {\n id: 'delete',\n label: 'Excluir',\n icon: 'delete',\n description: 'Emite evento após exclusão',\n emit: 'afterDelete',\n payloadSchema: {\n type: 'object',\n properties: {\n id: { type: 'string | number', description: 'ID do registro (string ou number)' },\n },\n required: ['id'],\n example: { id: '123' },\n },\n scope: 'context',\n },\n {\n id: 'save',\n label: 'Salvar',\n icon: 'save',\n description: 'Emite evento após salvar',\n emit: 'afterSave',\n payloadSchema: {\n type: 'object',\n properties: {\n id: { type: 'string | number', description: 'ID do registro (string ou number)' },\n data: { type: 'object', description: 'Dados salvos' },\n },\n required: ['id', 'data'],\n example: { id: '123', data: {} },\n },\n scope: 'shell',\n },\n {\n id: 'close',\n label: 'Fechar',\n icon: 'close',\n description: 'Emite evento ao fechar o diálogo',\n emit: 'afterClose',\n scope: 'shell',\n },\n {\n id: 'configure',\n label: 'Configurar',\n icon: 'tune',\n description: 'Emite evento ao abrir configuração',\n emit: 'configureRequested',\n scope: 'shell',\n },\n ],\n tags: ['widget', 'crud', 'configurable', 'hasWizard', 'stable'],\n lib: '@praxisui/crud',\n};\n\n/** Provider para auto-registrar metadados do componente CRUD. */\nexport function providePraxisCrudMetadata(): Provider {\n return {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory: (registry: ComponentMetadataRegistry) => () => {\n registry.register(PRAXIS_CRUD_COMPONENT_METADATA);\n },\n deps: [ComponentMetadataRegistry],\n } as Provider;\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { PraxisIconDirective } from '@praxisui/core';\n\nexport type CrudHeaderVariant = 'ghost' | 'tonal' | 'outlined';\n\n@Component({\n selector: 'praxis-crud-page-header',\n standalone: true,\n imports: [CommonModule, RouterLink, MatButtonModule, MatIconModule, PraxisIconDirective],\n template: `\n <header\n class=\"crud-header\"\n [class.sticky]=\"sticky\"\n [class.with-divider]=\"divider\"\n >\n <div class=\"left\">\n <a\n *ngIf=\"showBack && returnTo\"\n class=\"back-btn\"\n [class.ghost]=\"variant === 'ghost'\"\n [class.tonal]=\"variant === 'tonal'\"\n [class.outlined]=\"variant === 'outlined'\"\n [routerLink]=\"returnTo\"\n [attr.aria-label]=\"backLabel || 'Voltar'\"\n mat-button\n >\n <mat-icon [praxisIcon]=\"'arrow_back'\"></mat-icon>\n <span class=\"label\" [class.hide-on-narrow]=\"true\">{{ backLabel || 'Voltar' }}</span>\n </a>\n <h2 class=\"title\" [attr.title]=\"title\">{{ title }}</h2>\n </div>\n <div class=\"right\">\n <ng-content></ng-content>\n </div>\n </header>\n `,\n styles: [\n `\n .crud-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n padding: 8px 0;\n background: var(--md-sys-color-surface);\n }\n .crud-header.sticky {\n position: sticky;\n top: 0;\n z-index: 10;\n backdrop-filter: saturate(110%);\n }\n .crud-header.with-divider {\n border-bottom: 1px solid var(--md-sys-color-outline-variant);\n }\n .left { display: flex; align-items: center; gap: 8px; min-width: 0; }\n .right { display: flex; align-items: center; gap: 8px; }\n .title {\n margin: 0; font-weight: 600;\n color: var(--md-sys-color-on-surface, currentColor);\n font: var(--mdc-typography-title-large, 600 20px/28px system-ui);\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n }\n .back-btn { display: inline-flex; align-items: center; gap: 6px; text-decoration: none; }\n .back-btn .mat-mdc-button { padding-left: 0; }\n .back-btn mat-icon { color: var(--md-sys-color-on-surface-variant, currentColor); }\n .back-btn .label { color: var(--md-sys-color-on-surface-variant, currentColor); }\n\n /* Variants */\n .back-btn.ghost { border-radius: 20px; padding: 4px 8px; }\n .back-btn.ghost:hover { background: var(--md-sys-color-primary-container); }\n\n .back-btn.tonal {\n border-radius: 20px; padding: 4px 10px;\n background: var(--md-sys-color-surface-container);\n box-shadow: inset 0 0 0 1px var(--md-sys-color-outline-variant);\n }\n .back-btn.tonal:hover { background: var(--md-sys-color-primary-container); }\n\n .back-btn.outlined {\n border-radius: 20px; padding: 4px 10px;\n border: 1px solid var(--md-sys-color-outline-variant);\n background: var(--md-sys-color-surface);\n }\n .back-btn.outlined:hover {\n border-color: var(--md-sys-color-primary);\n background: var(--md-sys-color-primary-container);\n }\n\n /* Responsive: hide label on very narrow */\n @media (max-width: 599px) { .label.hide-on-narrow { display: none; } }\n `,\n ],\n})\nexport class CrudPageHeaderComponent {\n @Input() title = '';\n @Input() backLabel?: string;\n @Input() showBack = true;\n @Input() variant: CrudHeaderVariant = 'ghost';\n @Input() sticky = true;\n @Input() divider = true;\n @Input() returnTo?: string | null;\n}\n","/**\n * Capabilities catalog for CrudMetadata (Praxis CRUD).\n */\n\nimport type {\n AiCapability,\n AiCapabilityCatalog,\n AiCapabilityCategory,\n AiValueKind,\n} from '@praxisui/core';\n\ndeclare module '@praxisui/core' {\n interface AiCapabilityCategoryMap {\n meta: true;\n resource: true;\n table: true;\n form: true;\n defaults: true;\n actions: true;\n i18n: true;\n navigation: 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 openMode: ['route', 'modal', 'drawer'],\n paramTarget: ['routeParam', 'query', 'input'],\n headerVariant: ['ghost', 'tonal', 'outlined'],\n toolbarActionType: ['button', 'icon', 'fab', 'menu'],\n toolbarActionAppearance: ['filled', 'outlined', 'elevated', 'text', 'tonal'],\n toolbarActionPosition: ['start', 'end'],\n backStrategy: ['auto', 'close', 'navigate'],\n};\n\nexport const CRUD_AI_CAPABILITIES: CapabilityCatalog = {\n version: 'v1.0',\n enums: ENUMS,\n targets: ['praxis-crud', 'crud-view', 'generic-crud'],\n notes: [\n 'CrudMetadata agrega TableConfig e FormConfig; use os catalogos de tabela e formulario para detalhes.',\n 'actions[] herda campos de RowAction e ToolbarAction; combine com openMode/route/formId quando aplicavel.',\n ],\n capabilities: [\n // --- Metadata root ---\n {\n path: 'component',\n category: 'meta',\n valueKind: 'enum',\n allowedValues: ['praxis-crud'],\n description: 'Identificador fixo do componente.',\n critical: true,\n },\n\n // --- Resource ---\n { path: 'resource', category: 'resource', valueKind: 'object', description: 'Recurso principal do CRUD.' },\n { path: 'resource.path', category: 'resource', valueKind: 'string', description: 'Endpoint base do recurso.' },\n { path: 'resource.idField', category: 'resource', valueKind: 'string', description: 'Campo identificador do recurso.' },\n { path: 'resource.endpointKey', category: 'resource', valueKind: 'string', description: 'Chave de endpoint (ApiEndpoint).' },\n\n // --- Table / Form ---\n { path: 'table', category: 'table', valueKind: 'object', description: 'TableConfig completo (usar catalogo de tabela).' },\n { path: 'form', category: 'form', valueKind: 'object', description: 'FormConfig completo (usar catalogo de formulario).' },\n\n // --- Defaults ---\n { path: 'defaults', category: 'defaults', valueKind: 'object', description: 'Defaults aplicados a acoes e UI.' },\n { path: 'defaults.openMode', category: 'defaults', valueKind: 'enum', allowedValues: ENUMS.openMode, description: 'Modo padrao de abertura (route/modal/drawer).' },\n { path: 'defaults.modal', category: 'defaults', valueKind: 'object', description: 'Config de dialog (DialogConfig).' },\n { path: 'defaults.back', category: 'navigation', valueKind: 'object', description: 'Config de retorno (BackConfig).' },\n { path: 'defaults.back.strategy', category: 'navigation', valueKind: 'enum', allowedValues: ENUMS.backStrategy, description: 'Estrategia de retorno.' },\n { path: 'defaults.back.returnTo', category: 'navigation', valueKind: 'string', description: 'Rota de retorno quando strategy=navigate.' },\n { path: 'defaults.back.confirmOnDirty', category: 'navigation', valueKind: 'boolean', description: 'Confirmar ao sair com alteracoes.' },\n { path: 'defaults.header', category: 'defaults', valueKind: 'object', description: 'Config do header do CRUD.' },\n { path: 'defaults.header.showBack', category: 'defaults', valueKind: 'boolean', description: 'Exibir botao voltar.' },\n { path: 'defaults.header.backLabel', category: 'defaults', valueKind: 'string', description: 'Label do botao voltar.' },\n { path: 'defaults.header.variant', category: 'defaults', valueKind: 'enum', allowedValues: ENUMS.headerVariant, description: 'Variante visual do header.' },\n { path: 'defaults.header.sticky', category: 'defaults', valueKind: 'boolean', description: 'Header fixo.' },\n { path: 'defaults.header.breadcrumbs', category: 'defaults', valueKind: 'boolean', description: 'Exibir breadcrumbs.' },\n { path: 'defaults.header.divider', category: 'defaults', valueKind: 'boolean', description: 'Exibir divisor no header.' },\n\n // --- Actions ---\n { path: 'actions', category: 'actions', valueKind: 'array', description: 'Acoes disponiveis no CRUD.' },\n { path: 'actions[].id', category: 'actions', valueKind: 'string', description: 'ID da acao (RowAction/ToolbarAction).' },\n { path: 'actions[].label', category: 'actions', valueKind: 'string', description: 'Label da acao.' },\n { path: 'actions[].icon', category: 'actions', valueKind: 'string', description: 'Icone da acao.' },\n { path: 'actions[].color', category: 'actions', valueKind: 'string', description: 'Cor da acao.' },\n { path: 'actions[].disabled', category: 'actions', valueKind: 'boolean', description: 'Acao desabilitada.' },\n { path: 'actions[].action', category: 'actions', valueKind: 'string', description: 'Nome da acao emitida.' },\n { path: 'actions[].tooltip', category: 'actions', valueKind: 'string', description: 'Tooltip da acao.' },\n { path: 'actions[].requiresConfirmation', category: 'actions', valueKind: 'boolean', description: 'Exige confirmacao.' },\n { path: 'actions[].visibleWhen', category: 'actions', valueKind: 'expression', description: 'Condicao de visibilidade (RowAction/ToolbarAction).' },\n { path: 'actions[].separator', category: 'actions', valueKind: 'boolean', description: 'Separador apos a acao (RowAction).' },\n { path: 'actions[].autoDelete', category: 'actions', valueKind: 'boolean', description: 'Habilita auto delete (RowAction).' },\n { path: 'actions[].deleteEndpoint', category: 'actions', valueKind: 'string', description: 'Endpoint custom para delete (RowAction).' },\n { path: 'actions[].type', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.toolbarActionType, description: 'Tipo de acao (ToolbarAction).' },\n { path: 'actions[].appearance', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.toolbarActionAppearance, description: 'Aparencia do botao (ToolbarAction).' },\n { path: 'actions[].position', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.toolbarActionPosition, description: 'Posicao da acao (ToolbarAction).' },\n { path: 'actions[].order', category: 'actions', valueKind: 'number', description: 'Ordem de exibicao (ToolbarAction).' },\n { path: 'actions[].shortcut', category: 'actions', valueKind: 'string', description: 'Atalho de teclado (ToolbarAction).' },\n { path: 'actions[].children', category: 'actions', valueKind: 'array', description: 'Sub-acoes (menu).' },\n { path: 'actions[].openMode', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.openMode, description: 'Modo de abertura da acao.' },\n { path: 'actions[].route', category: 'actions', valueKind: 'string', description: 'Rota para openMode=route.' },\n { path: 'actions[].formId', category: 'actions', valueKind: 'string', description: 'FormId para modal/drawer.' },\n { path: 'actions[].params', category: 'actions', valueKind: 'array', description: 'Mapeamento de parametros.' },\n { path: 'actions[].params[].from', category: 'actions', valueKind: 'string', description: 'Origem do parametro.' },\n { path: 'actions[].params[].to', category: 'actions', valueKind: 'enum', allowedValues: ENUMS.paramTarget, description: 'Destino do parametro.' },\n { path: 'actions[].params[].name', category: 'actions', valueKind: 'string', description: 'Nome do parametro no destino.' },\n { path: 'actions[].back', category: 'navigation', valueKind: 'object', description: 'BackConfig por acao.' },\n { path: 'actions[].back.strategy', category: 'navigation', valueKind: 'enum', allowedValues: ENUMS.backStrategy },\n { path: 'actions[].back.returnTo', category: 'navigation', valueKind: 'string' },\n { path: 'actions[].back.confirmOnDirty', category: 'navigation', valueKind: 'boolean' },\n\n // --- i18n ---\n { path: 'i18n', category: 'i18n', valueKind: 'object', description: 'Mensagens i18n do CRUD.' },\n { path: 'i18n.crudDialog', category: 'i18n', valueKind: 'object', description: 'Mapa de textos do dialog.' },\n ],\n};\n","/*\n * Public API Surface of praxis-crud\n */\n\nexport * from './lib/praxis-crud.component';\nexport * from './lib/crud-launcher.service';\nexport * from './lib/dynamic-form-dialog-host.component';\nexport * from './lib/crud.types';\nexport * from './lib/dialog.service';\nexport * from './lib/praxis-crud.metadata';\nexport * from './lib/crud-page-header.component';\nexport * from './lib/drawer.adapter';\nexport * from './lib/ai/crud-ai-capabilities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DIALOG_DATA","i3","i2"],"mappings":";;;;;;;;;;;;;;;;;;;;;;MA2Ba,aAAa,CAAA;AACJ,IAAA,SAAA;AAA8B,IAAA,IAAA;IAAlD,WAAA,CAAoB,SAAoB,EAAU,IAAY,EAAA;QAA1C,IAAA,CAAA,SAAS,GAAT,SAAS;QAAqB,IAAA,CAAA,IAAI,GAAJ,IAAI;IAAW;IAEjE,IAAI,CACF,SAA2B,EAC3B,MAAwB,EAAA;QAExB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACpE;AAEA,IAAA,MAAM,SAAS,CACb,MAAuC,EACvC,MAAwB,EAAA;AAExB,QAAA,MAAM,SAAS,GAAG,MAAM,MAAM,EAAE;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACpE;wGAhBW,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA;;4FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCbrB,mBAAmB,GAAG,IAAI,cAAc,CAAoB,qBAAqB;;MCMjF,mBAAmB,CAAA;AACb,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AAC9B,IAAA,OAAO,GAAG,MAAM,CAAqB,oBAAoB,CAAC;AAC1D,IAAA,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC;IACpC,aAAa,GAAG,CAAC,MAAK;AACrC,QAAA,IAAI;AAAE,YAAA,OAAO,MAAM,CAAoB,mBAAmB,CAAC;QAAE;AAAE,QAAA,MAAM;AAAE,YAAA,OAAO,SAAgB;QAAE;IAClG,CAAC,GAAG;IAEJ,MAAM,MAAM,CACV,MAAkB,EAClB,GAAwC,EACxC,QAAsB,EACtB,cAA8B,EAAA;;AAM9B,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,IAAI,SAAS,CAAC;AAC3F,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC;AAE/D,QAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AACpB,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;gBACxB,MAAM,IAAI,KAAK,CAAC,CAAA,8BAAA,EAAiC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAA,CAAE,CAAC;YAC1E;AACA,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC;YAChE,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC;YACpC,OAAO,EAAE,IAAI,EAAE;QACjB;QAEA,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;AAC3C,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;YACjD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI;AACzD,YAAA,IAAI,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,SAAS,IAAK,GAAW,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE;gBAC/E,MAAM,CAAC,OAAO,CAAC,GAAI,GAAW,CAAC,OAAO,CAAC;YACzC;YACA,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5G,OAAO,EAAE,IAAI,EAAE;QACjB;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,CAAA,+BAAA,EAAkC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAA,CAAE,CAAC;QAC3E;AACA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI;AACzD,QAAA,IAAI,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE;YACtE,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;QAChC;AACA,QAAA,MAAM,QAAQ,GAAG,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,EAAS;AAEtE,QAAA,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE;AACpD,YAAA,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5B,YAAA,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;YAC5B,MAAM;YACN,QAAQ;AACR,YAAA,YAAY,EACV,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,IAAK,MAAM,CAAC,QAAQ,CAAC,KAAa,EAAE,YAAY;AACjF,SAAA,CAAC;AACF,QAAA,MAAM,YAAY,GAAG,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;AAC9D,QAAA,IAAI,QAAQ,CAAC,UAAU,EAAE;AACvB,YAAA,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QACxC;;QAEA,MAAM,eAAe,GAAa,EAAE;AACpC,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAmC;AAC1D,QAAA,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM,EAAE;AAC9B,YAAA,eAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAC3C;AAAO,aAAA,IAAI,KAAK,KAAK,KAAK,EAAE;AAC1B,YAAA,eAAe,CAAC,IAAI,CAAC,2BAA2B,CAAC;QACnD;AAAO,aAAA,IAAI,KAAK,KAAK,aAAa,EAAE;AAClC,YAAA,eAAe,CAAC,IAAI,CAAC,0BAA0B,CAAC;QAClD;AACA,QAAA,IAAI,QAAQ,CAAC,aAAa,EAAE;AAC1B,YAAA,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC9C;AACA,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CACrC,MACE,+EAA8C,CAAC,IAAI,CACjD,CAAC,CAAC,KAAK,CAAC,CAAC,8BAA8B,CACxC,EACH;AACE,YAAA,GAAG,QAAQ;AACX,YAAA,UAAU,EAAE,YAAY;AACxB,YAAA,aAAa,EAAE,eAAe;AAC9B,YAAA,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI;AACrC,YAAA,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,IAAI;AAC3C,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,cAAc,EAAE,iBAAiB;AACjC,YAAA,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE;AACxE,SAAA,CACF;AACD,QAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE;IACtB;IAEA,eAAe,CAAC,MAAkB,EAAE,QAAsB,EAAA;;QAExD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE,QAAQ;AAC5D,QAAA,IAAI,KAAK;AAAE,YAAA,OAAO,KAAK;;AAGvB,QAAA,IAAI;YACF,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACxC,YAAA,MAAM,UAAU,GAAI,MAAc,CAAC,MAA4B;YAC/D,MAAM,UAAU,GAAG,CAAC,UAAU,IAAI,UAAU,EAAE,cAAc,GAAG,UAAU,CAAC,EAAE,QAAQ,KAAK,UAAU,EAAE,QAAQ,EAAE,QAAQ;AACvH,YAAA,IAAI,QAAQ,GAAkB,UAAkB,IAAI,OAAO;;AAE3D,YAAA,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,QAAQ,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;gBACrE,QAAQ,GAAG,OAAO;YACpB;AACA,YAAA,OAAO,QAAQ;QACjB;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,OAAO;QAChB;IACF;AAEQ,IAAA,UAAU,CAChB,MAAkB,EAClB,GAAwC,EACxC,QAAsB,EAAA;AAEtB,QAAA,IAAI,KAAK,GAAG,MAAM,CAAC,KAAe;QAClC,MAAM,KAAK,GAA2B,EAAE;QACxC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAI;YAC3B,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,CAAC,EAAE,KAAK,YAAY,EAAE;gBACzB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;oBACzC,MAAM,IAAI,KAAK,CAAC,CAAA,8BAAA,EAAiC,CAAC,CAAC,IAAI,CAAA,CAAE,CAAC;gBAC5D;AACA,gBAAA,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,IAAI,CAAA,GAAA,CAAK,EAAE,GAAG,CAAC;AAC3C,gBAAA,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9D;AAAO,iBAAA,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;gBACpE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;YAC/B;AACF,QAAA,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC;QAC/C,IAAI,OAAO,EAAE;YACX,MAAM,IAAI,KAAK,CACb,CAAA,qCAAA,EAAwC,MAAM,CAAC,MAAM,MAAM;AACxD,iBAAA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACrB,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAChB;QACH;;AAEA,QAAA,IAAI;AACF,YAAA,MAAM,YAAY,GAChB,QAAQ,CAAC,QAAQ,EAAE,IAAI,IAAK,QAAQ,CAAC,KAAa,EAAE,YAAY;YAClE,IAAI,YAAY,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;AACnD,gBAAA,KAAK,CAAC,UAAU,CAAC,GAAG,YAAsB;YAC5C;QACF;QAAE,MAAM,EAAC;;QAET,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI;QACnD,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG;QAClD,IAAI,QAAQ,EAAE;AACZ,YAAA,KAAK,CAAC,UAAU,CAAC,GAAG,QAAQ;QAC9B;QACA,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;AACzD,QAAA,OAAO,WAAW,GAAG,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,GAAG,KAAK;IACxD;IAEQ,SAAS,CACf,MAAkB,EAClB,GAAwC,EAAA;QAExC,MAAM,MAAM,GAA4B,EAAE;QAC1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAI;AAC3B,YAAA,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,EAAE;AACpB,gBAAA,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC;YAChC;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,MAAM,kBAAkB,CAC9B,QAAsB,EACtB,MAAkB,EAClB,cAAuB,EAAA;AAEvB,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,cAAc;AAAE,gBAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;AAChD,YAAA,MAAM,GAAG,GAAG,CAAA,eAAA,EAAkB,cAAc,EAAE;YAC9C,IAAI,KAAK,GAAyB,IAAI;AACtC,YAAA,IAAI;AACF,gBAAA,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAgB,GAAG,CAAC,CAAC;YAC3E;YAAE,MAAM,EAAC;AACT,YAAA,MAAM,YAAY,GAAG,KAAK,EAAE,QAAQ,IAAI,EAAE;AAC1C,YAAA,MAAM,WAAW,GAAG,KAAK,EAAE,OAAO,IAAI,EAAE;;AAGxC,YAAA,IAAI,cAAc,GAAQ;AACxB,gBAAA,IAAI,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC5B,gBAAA,IAAI,UAAU,IAAI,YAAY,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;gBAC1E,KAAK,EAAE,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,IAAI,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE;gBAC7E,IAAI,EAAE,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE,IAAI,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE;gBAC1E,MAAM,EAAE,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,IAAI,YAAY,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE;aACjF;;AAGD,YAAA,IAAI;gBACF,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACxC,gBAAA,IAAI,UAAU,EAAE,QAAQ,EAAE;oBACxB,cAAc,GAAG,aAAa,CAAC,cAAc,EAAE,UAAU,CAAC,QAAe,CAAC;gBAC5E;YACF;YAAE,MAAM,EAAC;;AAGT,YAAA,MAAM,cAAc,GAAiB;AACnC,gBAAA,GAAG,QAAQ;AACX,gBAAA,QAAQ,EAAE,cAAc;aACzB;;YAGD,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AAC9C,YAAA,MAAM,YAAY,GAAe;AAC/B,gBAAA,GAAG,MAAM;AACT,gBAAA,IAAI,UAAU,IAAI,KAAK,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;AAC5D,gBAAA,IAAI,QAAQ,IAAI,KAAK,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;AACtD,gBAAA,IAAI,OAAO,IAAI,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;aACtC;YAEf,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE;QAC3D;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;QAC7B;IACF;wGAnOW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cADN,MAAM,EAAA,CAAA;;4FACnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;AC4C5B,SAAU,kBAAkB,CAAC,IAAkB,EAAA;IACnD,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,KAAI;AAC/B,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,OAAO;QAClE,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACrC,MAAM,IAAI,KAAK,CAAC,CAAA,8BAAA,EAAiC,MAAM,CAAC,MAAM,CAAA,CAAE,CAAC;QACnE;AACA,QAAA,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;YAC7D,MAAM,IAAI,KAAK,CAAC,CAAA,+BAAA,EAAkC,MAAM,CAAC,MAAM,CAAA,CAAE,CAAC;QACpE;QACA,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAI;AAC3B,YAAA,IAAI,CAAC,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;gBACpD,MAAM,IAAI,KAAK,CAAC,CAAA,8BAAA,EAAiC,CAAC,CAAC,EAAE,CAAA,CAAE,CAAC;YAC1D;AACF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;;MC3Ba,mBAAmB,CAAA;;AAEH,IAAA,QAAQ;;AAER,IAAA,MAAM;;AAExB,IAAA,mBAAmB;AACnB,IAAA,OAAO;;IAEP,eAAe,GAAG,KAAK;;AAEtB,IAAA,kBAAkB,GAAG,IAAI,YAAY,EAAQ;AAC7C,IAAA,SAAS,GAAG,IAAI,YAAY,EAGlC;AACM,IAAA,UAAU,GAAG,IAAI,YAAY,EAAQ;AACrC,IAAA,SAAS,GAAG,IAAI,YAAY,EAGlC;AACM,IAAA,WAAW,GAAG,IAAI,YAAY,EAA2B;AACzD,IAAA,KAAK,GAAG,IAAI,YAAY,EAAW;AAE7C,IAAA,gBAAgB;;AAEhB,IAAA,oBAAoB;;IAEpB,qBAAqB,GAAgB,wBAAwB,EAAE;AAC9C,IAAA,QAAQ,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACtC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAChB,IAAA,KAAK;AACpB,IAAA,OAAO,GAAG,MAAM,CAAqB,oBAAoB,CAAC;AAC1D,IAAA,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;AAC3B,IAAA,MAAM,GAAG,CAAC,MAAK,EAAG,IAAI;AAAE,QAAA,OAAO,MAAM,CAAC,mBAAmB,CAAC;IAAE;AAAE,IAAA,MAAM;AAAE,QAAA,OAAO,SAAgB;AAAE,IAAA,CAAC,CAAC,CAAC,GAAG;AACrG,IAAA,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3C,IAAA,KAAK,GAAG,CAAC,MAAK,EAAG,IAAI;AAAE,QAAA,OAAO,MAAM,CAAC,cAAc,CAAC;IAAE;AAAE,IAAA,MAAM;AAAE,QAAA,OAAO,SAAuC;AAAE,IAAA,CAAC,CAAC,CAAC,GAAG;IAC/H,eAAe,GAAG,KAAK;AAC/B;;;;AAIG;AACH,IAAA,gBAAgB;IAchB,kBAAkB,GAAA;AAChB,QAAA,IAAI;AACF,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE;AACnC,YAAA,IAAI,CAAC,KAAK;gBAAE;AACZ,YAAA,MAAM,GAAG,GAAG,CAAA,eAAA,EAAkB,KAAK,EAAE;AACrC,YAAA,KAAK,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAK,EAAE,CAAC,CAAC;AAClE,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACjF;QAAE,MAAM,EAAC;IACX;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AACvB,YAAA,IAAI;AACF,gBAAA,MAAM,MAAM,GACV,OAAO,IAAI,CAAC,QAAQ,KAAK;sBACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ;AAC3B,sBAAE,IAAI,CAAC,QAAQ;gBACnB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;AACtD,gBAAA,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC;gBACzC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,yBAAyB,CACxD,IAAI,CAAC,gBAAgB,CACtB;;AAED,gBAAA,IAAI,CAAC,qBAAqB;AACxB,oBAAA,IAAI,CAAC,oBAAoB;AACzB,yBAAE,IAAI,CAAC,gBAAgB,CAAC,KAAiC;4BACvD,wBAAwB,EAAE,CAAC;;gBAE/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC3E;YAAE,OAAO,GAAG,EAAE;AACZ,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;YACtB;QACF;IACF;AAEA,IAAA,MAAM,QAAQ,CAAC,MAAc,EAAE,GAA6B,EAAA;AAC1D,QAAA,IAAI;AACD,YAAA,QAAQ,CAAC,aAAoC,EAAE,IAAI,EAAE;YACtD,IAAI,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAClD,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAC3B;;;YAGD,IAAI,CAAC,UAAU,EAAE;gBACf,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;gBAClF,IAAI,SAAS,EAAE;AACb,oBAAA,UAAU,GAAG;wBACX,MAAM,EAAE,SAAS,CAAC,MAAM;wBACxB,QAAQ,EAAE,SAAS,CAAC,QAAe;wBACnC,MAAM,EAAE,SAAS,CAAC,MAAM;wBACxB,KAAK,EAAE,SAAS,CAAC,KAAK;qBAChB;gBACV;qBAAO;;AAEL,oBAAA,UAAU,GAAG,EAAE,MAAM,EAAS;gBAChC;YACF;AACA,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,EAC3C,UAAU,IAAI,EAAE,MAAM,EAAS,EACjC;YACD,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAC9C,eAAe,EACf,GAAG,EACH,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,cAAc,EAAE,CACtB;AACD,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC;YAC7D,IAAI,GAAG,EAAE;AACP,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;gBACjC;AACG,qBAAA,WAAW;AACX,qBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,qBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,oBAAA,IAAI,MAAM,EAAE,IAAI,KAAK,MAAM,EAAE;AAC3B,wBAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAA+B;AACnD,wBAAA,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAAoB;AAC7C,wBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;wBAC9C,IAAI,CAAC,YAAY,EAAE;oBACrB;AACA,oBAAA,IAAI,MAAM,EAAE,IAAI,KAAK,QAAQ,EAAE;AAC7B,wBAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAA+B;AACnD,wBAAA,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAAoB;wBAC7C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;wBAC7B,IAAI,CAAC,YAAY,EAAE;oBACrB;AACF,gBAAA,CAAC,CAAC;YACN;QACF;QAAE,OAAO,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QACtB;IACF;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;IACtB;AAEA,IAAA,mBAAmB,CAAC,IAAmB,EAAA;AACrC,QAAA,OAAO,CACJ,IAAI,EAAE,QAAQ,EAAE,IAAe;YAC9B,IAAI,EAAE,KAAa,EAAE,YAAuB;AAC9C,YAAA,EAAE,EACF,IAAI,EAAE;IACV;AAEA,IAAA,gBAAgB,CAAC,IAAmB,EAAA;AAClC,QAAA,MAAM,SAAS,GAAI,IAAY,EAAE,IAAI;AACrC,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,IAAI;IACpD;AAEA,IAAA,gBAAgB,CAAC,IAAmB,EAAA;QAClC,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;IACpC;AAEA,IAAA,iBAAiB,CAAC,IAAmB,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAE,IAAY,EAAE,IAAI,CAAC;IACxF;IAEQ,UAAU,GAAA;QAChB,OAAQ,IAAI,CAAC,gBAAgB,EAAE,QAAQ,EAAE,OAAkB,IAAI,IAAI;IACrE;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE;IAChC;AAEA;;;;;AAKG;AACK,IAAA,yBAAyB,CAAC,IAAkB,EAAA;AAClD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAgC;;QAElD,MAAM,GAAG,GAAgB;cACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;cAChC,wBAAwB,EAAE;QAE9B,IAAI,OAAO,GAAG,KAAK;QAEnB,MAAM,aAAa,GAAG,MAAK;AACzB,YAAA,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;AACf,gBAAA,GAAW,CAAC,OAAO,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAS;YAClE;YACA,OAAQ,GAAW,CAAC,OAAc;AACpC,QAAA,CAAC;;QAGD,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAM,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACtF,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAM,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAI,SAAS,EAAE;YACb,IAAI,aAAa,EAAE;AACjB,gBAAA,MAAM,EAAE,GAAG,aAAa,EAAE;AAC1B,gBAAA,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB;iBAAO;AACL,gBAAA,MAAM,EAAE,GAAG,aAAa,EAAE;AAC1B,gBAAA,EAAE,CAAC,OAAO,GAAG,IAAI;gBACjB,IAAI,CAAC,EAAE,CAAC,OAAO;AAAE,oBAAA,EAAE,CAAC,OAAO,GAAG,EAAS;AACvC,gBAAA,MAAM,QAAQ,GAAG;AACf,oBAAA,EAAE,EAAE,SAAS,CAAC,EAAE,IAAI,KAAK;AACzB,oBAAA,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,WAAW;AACrC,oBAAA,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,KAAK;AAC7B,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,KAAK;iBAC3B;AACP,gBAAA,EAAE,CAAC,OAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;YACtC;YACA,OAAO,GAAG,IAAI;QAChB;;AAGA,QAAA,MAAM,cAAc,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,IAAK,IAAI,CAAC,OAAe,CAAC,GAAG,CAAC;AAC5E,QAAA,MAAM,YAAY,GAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAS,IAAI,EAAE;QACpE,MAAM,OAAO,GAAG,YAAY,CAAC,cAAc,KAAK,KAAK,CAAC;AACtD,QAAA,IAAI,CAAC,cAAc,IAAI,OAAO,EAAE;YAC9B,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,CAAU;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;YAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;AAC3E,YAAA,MAAM,aAAa,GAAG,CAAC,CAAC,YAAY,CAAC,kBAAkB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC;YACxH,MAAM,UAAU,GAAe,EAAE;AACjC,YAAA,IAAI,OAAO;gBAAE,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC9G,YAAA,IAAI,OAAO;gBAAE,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC9G,YAAA,IAAI,aAAa;gBAAE,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAC5H,YAAA,IAAI,UAAU,CAAC,MAAM,EAAE;gBACpB,GAAW,CAAC,OAAO,GAAI,GAAW,CAAC,OAAO,IAAI,EAAE;AAChD,gBAAA,GAAW,CAAC,OAAO,CAAC,GAAG,GAAG;AACzB,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,QAAQ,EAAE,KAAK;oBACf,KAAK,EAAG,GAAW,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,IAAI,OAAO;AAClD,oBAAA,OAAO,EAAE,YAAY,CAAC,iBAAiB,IAAI,OAAO;oBAClD,OAAO,EAAG,GAAW,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,IAAI,OAAO;AACtD,oBAAA,OAAO,EAAE,UAAU;AACnB,oBAAA,MAAM,EAAE,EAAE,KAAK,EAAG,GAAW,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE;iBAC3D;gBACR,OAAO,GAAG,IAAI;YAChB;QACF;;QAGA,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,IAAI,GAAG,SAAS,GAAG,GAAG;QAC/B;AACA,QAAA,OAAO,GAAG;IACZ;;AAGQ,IAAA,SAAS,CAAC,CAAM,EAAA;AACtB,QAAA,IAAI,CAAC,CAAC;AAAE,YAAA,OAAO,KAAK;AACpB,QAAA,MAAM,SAAS,GAAG,CAAC,CAAO,KAAK,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AACnE,QAAA,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC;QAC7E,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AAChC,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAC9E,QAAA,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AAAE,YAAA,OAAO,IAAI;QAC/B,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,SAAS;AAAE,YAAA,OAAO,IAAI;AAC9E,QAAA,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,SAAS;AACvF,YAAA,OAAO,IAAI;AACb,QAAA,OAAO,KAAK;IACd;;AAGQ,IAAA,qBAAqB,CAAC,IAAkB,EAAA;AAgB9C,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,SAAS;;;QAG3B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;cAC7C,IAAI,CAAC;cACJ,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAW;QAC7E,OAAO;AACL,YAAA,OAAO,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;AACjC,YAAA,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,SAAS;YAClD,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,SAAS;YACzD,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAM,MAAM;gBACpC,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,CAAC,CAAC,KAAK;AACd,gBAAA,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;gBAC/B,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;AACrB,aAAA,CAAC,CAAC;AACH,YAAA,OAAO,EAAG,IAAI,CAAC,QAAgB,EAAE,OAAO,IAAI,IAAI;SACjD;IACH;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC;AAC9C,YAAA,aAAa,EAAE,aAAa;YAC5B,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,WAAW,EAAE,IAAI,CAAC,mBAAmB;AACrC,YAAA,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,YAAA,kBAAkB,EAAE,IAAI;AACzB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,aAAa,EAAE;AAC9B,QAAA,OAAO,GAAG;IACZ;IAEQ,aAAa,GAAA;QACnB,IAAI,IAAI,CAAC,eAAe;YAAE;AAC1B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,OAAO,CAAC,IAAI,CAAC,yDAAyD,CAAC;IACzE;AAEQ,IAAA,iBAAiB,CAAC,IAAkB,EAAA;AAC1C,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;AAC/D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KACtC,MAAM,CAAC,MAAM,GAAG,MAAM,GAAI,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAiB,CAC5E;AACD,QAAA,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;IAC7B;AAEQ,IAAA,iBAAiB,CAAC,MAAkB,EAAA;QAC1C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,MAAM;QAC3D,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;IAC3C;wGAhWW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA+BnB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxDZ;;;;;;;;;;;;;;;;;;;;;;;GAuBT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAxBS,WAAW,4mBAAE,uBAAuB,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FA0BnC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA7B/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,WAAW,EAAE,uBAAuB,CAAC;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;AAuBT,EAAA,CAAA;AACF,iBAAA;;sBAGE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAExB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAExB;;sBACA;;sBAEA;;sBAEA;;sBACA;;sBAIA;;sBACA;;sBAIA;;sBACA;;sBASA,SAAS;uBAAC,WAAW;;;MCuDX,8BAA8B,CAAA;AA+BhC,IAAA,SAAA;AACqB,IAAA,IAAA;AACpB,IAAA,aAAA;AACA,IAAA,IAAA;AAC8B,IAAA,aAAA;AAlCV,IAAA,QAAQ;IACtC,KAAK,GAAQ,EAAE;IACf,SAAS,GAAG,KAAK;IACT,WAAW,GAAwC,EAAE;IACrD,aAAa,GAAG,KAAK;AACrB,IAAA,QAAQ;IACR,YAAY,GAAsC,EAAE;AACpD,IAAA,UAAU,GAAe,MAAM,CAAC,UAAU,CAAC;AAEnD,IAAA,YAAY;AACZ,IAAA,UAAU;IACV,IAAI,GAA+B,QAAQ;AAC3C,IAAA,UAAU;IACF,OAAO,GAAG,IAAI;AAEtB,IAAA,KAAK,GAAG;AACN,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,UAAU,EAAE,gBAAgB;AAC5B,QAAA,aAAa,EAAE,WAAW;AAC1B,QAAA,YAAY,EAAE,WAAW;AACzB,QAAA,YAAY,EAAE,uBAAuB;AACrC,QAAA,cAAc,EACZ,4DAA4D;AAC9D,QAAA,cAAc,EAAE,WAAW;AAC3B,QAAA,aAAa,EAAE,UAAU;KACA;IAE3B,WAAA,CAES,SAAoD,EAC/B,IAAS,EAC7B,aAA4B,EAC5B,IAA6B,EACC,aAAiC,EAAA;QAJhE,IAAA,CAAA,SAAS,GAAT,SAAS;QACY,IAAA,CAAA,IAAI,GAAJ,IAAI;QACxB,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,IAAI,GAAJ,IAAI;QAC0B,IAAA,CAAA,aAAa,GAAb,aAAa;AAEnD,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI;;QAGlC,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,IAAI,CAAC,KAAK;AACb,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,IAAI,EAAE,CAAC;SAChD;;QAGD,IAAI,CAAC,KAAK,GAAG;AACX,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC;SAC/C;QACD,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;cAC9B,qBAAqB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;cAC5C,SAAS;;AAGb,QAAA,IAAI,CAAC,YAAY;AACf,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI;gBAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY;AAEzC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CACjB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAC1C;QACH;AAEA,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,IAAI,IAAI;AAC5D,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAElD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM;QACpC,IAAI,CAAC,IAAI,GAAG,GAAG,KAAK,MAAM,GAAG,MAAM,GAAG,GAAG,KAAK,MAAM,GAAG,MAAM,GAAG,QAAQ;;QAGxE,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,KAAK,EAAE;AACrF,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,QAAQ,EAAE;AAEjC,QAAA,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE;AACvC,YAAA,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;AAC5B,SAAA,CAAC;;AAGF,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;AACjC,YAAA,IAAI,CAAC;AACF,iBAAA,aAAa;iBACb,IAAI,CACH,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,EACjC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;iBAEpC,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrC;;AAGA,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE;AACtC,YAAA,IAAI,CAAC;AACF,iBAAA,aAAa;AACb,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;iBACxC,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrC;;AAGA,QAAA,IAAI,CAAC;AACF,aAAA,WAAW;AACX,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aACxC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;IACtC;IAEA,QAAQ,GAAA;;QAEN,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvC,YAAA,IAAI,CAAC;AACF,iBAAA,UAAU,CAAsB,IAAI,CAAC,QAAQ;AAC7C,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;QAC9D;aAAO;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAC5B;;QAGA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE;AAC5B,YAAA,IAAI,CAAC;iBACF,UAAU,CAAoC,CAAA,UAAA,EAAa,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA,CAAE;AACpF,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,gBAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACtC,oBAAA,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,KAAK,EAAE;gBACtD;AACF,YAAA,CAAC,CAAC;QACN;IACF;AAEA,IAAA,MAAM,CAAC,MAAe,EAAA;QACpB,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,KAAK,EAAE;;YAEpC,IAAI,CAAC,SAAS,EAAE;YAChB;QACF;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACtD;IAEA,QAAQ,GAAA;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK;QACvC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,KAAK,EAAE;AACpF,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI;AAC9C,QAAA,IAAI,KAAK,IAAI,OAAO,EAAE;YACpB,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAC1D,gBAAA,IAAI,EAAE;AACJ,oBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;AAC9B,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc;AAClC,oBAAA,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc;AACtC,oBAAA,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;AACpC,oBAAA,IAAI,EAAE,SAAS;AAChB,iBAAA;AACD,gBAAA,SAAS,EAAE,KAAK;AACjB,aAAA,CAAC;YACF;AACG,iBAAA,WAAW;AACX,iBAAA,IAAI,CACH,MAAM,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,CAAC,EAClC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;iBAEpC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAC5C;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;QACxB;IACF;IAEA,cAAc,CAAC,OAAO,GAAG,KAAK,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS;AACjD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,GAAG,SAAS;AAChE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC;cACf,gBAAgB,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAA,GAAA;AAChC,cAAE,IAAI,CAAC,WAAW,CAAC,KAAK;AAC1B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC;cAChB,iBAAiB,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAA,GAAA;AACjC,cAAE,IAAI,CAAC,WAAW,CAAC,MAAM;QAE3B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC;AACxC,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE;AAE/B,QAAA,MAAM,IAAI,GAA6B,IAAI,CAAC;AAC1C,cAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa;QACjE,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AACtD,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,CAAA,EAAA,CAAI,GAAG,EAAE;QACtD;QACA,IAAI,CAAC,SAAS,EAAE;IAClB;IAEQ,SAAS,GAAA;QACf,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;AAC3C,QAAA,MAAM,IAAI,GAA6B,IAAI,CAAC;AAC1C,cAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa;AACjE,QAAA,MAAM,KAAK,GAAG,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI;QAClD,MAAM,YAAY,GAAG,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK;QAC3D,MAAM,aAAa,GAAG,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM;AAC9D,QAAA,IAAI,CAAC;AACF,aAAA,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,MAAM,EAAE,aAAa;SACtB;AACA,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,EAAE,KAAK,EAAE,MAAK,EAAE,CAAC,EAAE,CAAC;IACnC;AAEQ,IAAA,eAAe,CAAC,KAAiC,EAAA;QACvD,IAAI,CAAC,WAAW,GAAG;YACjB,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;YACvC,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;SAC3C;AACD,QAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE;YACpC,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc;AACzC,YAAA,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB;AACtD,SAAA,CAAC;QACF,IAAI,SAAS,GAAG,KAAK;QACrB,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE;AACjD,YAAA,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS;QAC/B;aAAO;YACL,SAAS;gBACP,IAAI,CAAC,KAAK,CAAC,cAAc;AACzB,qBAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB;wBAC9B,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC;QAC3D;QACA,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QAC3B;AAAO,aAAA,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAC5D,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAC1E,YAAA,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE;QACjC;IACF;AA5OW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EA8B/B,YAAY,EAAA,EAAA,EAAA,KAAA,EAEZA,eAAW,yEAGX,oBAAoB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAnCnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,8LA3G9B,CAAC,kBAAkB,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA4GpB,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvGlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kgCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAtDC,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,eAAe,qNACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,mBAAmB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,8BAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FA6GR,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAtH1C,SAAS;+BACE,iCAAiC,EAAA,UAAA,EAC/B,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,eAAe;wBACf,eAAe;wBACf,aAAa;wBACb,mBAAmB;wBACnB,iBAAiB;qBAClB,EAAA,SAAA,EACU,CAAC,kBAAkB,CAAC,EAAA,IAAA,EACzB;AACJ,wBAAA,KAAK,EAAE,eAAe;AACtB,wBAAA,qBAAqB,EAAE,4BAA4B;qBACpD,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,kgCAAA,CAAA,EAAA;;0BA0FE,MAAM;2BAAC,YAAY;;0BAEnB,MAAM;2BAACD,eAAW;;0BAGlB,MAAM;2BAAC,oBAAoB;;sBAlC7B,SAAS;uBAAC,iBAAiB;;;;;;;;ACpI9B;AACO,MAAM,8BAA8B,GAAqB;AAC9D,IAAA,EAAE,EAAE,aAAa;AACjB,IAAA,QAAQ,EAAE,aAAa;AACvB,IAAA,SAAS,EAAE,mBAAmB;AAC9B,IAAA,YAAY,EAAE,aAAa;AAC3B,IAAA,WAAW,EAAE,6CAA6C;AAC1D,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,MAAM,EAAE;AACN,QAAA;AACE,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,IAAI,EAAE,uBAAuB;AAC7B,YAAA,WAAW,EACT,gGAAgG;AACnG,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,WAAW,EAAE,oEAAoE;AAClF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,qBAAqB;AAC3B,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,WAAW,EAAE,gEAAgE;AAC9E,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,yBAAyB;AAC/B,YAAA,WAAW,EAAE,oCAAoC;AAClD,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,iBAAiB;AACvB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,WAAW,EAAE,mCAAmC;AACjD,SAAA;AACF,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA;AACE,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,IAAI,EAAE,wCAAwC;AAC9C,YAAA,WAAW,EAAE,4BAA4B;AAC1C,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,WAAW,EAAE,6BAA6B;AAC3C,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,IAAI,EAAE,wCAAwC;AAC9C,YAAA,WAAW,EAAE,mBAAmB;AACjC,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,IAAI,EAAE,yBAAyB;AAC/B,YAAA,WAAW,EAAE,oBAAoB;AAClC,SAAA;QACD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE;AACnE,QAAA;AACE,YAAA,IAAI,EAAE,oBAAoB;AAC1B,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,WAAW,EAAE,8DAA8D;AAC5E,SAAA;AACF,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA;AACE,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,WAAW,EAAE,wCAAwC;AACrD,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,aAAa,EAAE;AACb,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;oBACzD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;AAC1D,iBAAA;AACD,gBAAA,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAC5B,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AAC7C,aAAA;AACD,YAAA,KAAK,EAAE,SAAS;AACjB,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,MAAM;AACV,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,WAAW,EAAE,6CAA6C;AAC1D,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,aAAa,EAAE;AACb,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;oBACzD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;AAC1D,iBAAA;AACD,gBAAA,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAC5B,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3C,aAAA;AACD,YAAA,KAAK,EAAE,SAAS;AACjB,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,MAAM;AACV,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,WAAW,EAAE,uCAAuC;AACpD,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,aAAa,EAAE;AACb,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;oBACzD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;AAC1D,iBAAA;AACD,gBAAA,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAC5B,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC5C,aAAA;AACD,YAAA,KAAK,EAAE,SAAS;AACjB,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,WAAW,EAAE,4BAA4B;AACzC,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,aAAa,EAAE;AACb,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,UAAU,EAAE;oBACV,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,mCAAmC,EAAE;AAClF,iBAAA;gBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;AAChB,gBAAA,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE;AACvB,aAAA;AACD,YAAA,KAAK,EAAE,SAAS;AACjB,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,MAAM;AACV,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,WAAW,EAAE,0BAA0B;AACvC,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,aAAa,EAAE;AACb,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,UAAU,EAAE;oBACV,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,mCAAmC,EAAE;oBACjF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;AACtD,iBAAA;AACD,gBAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC;gBACxB,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;AACjC,aAAA;AACD,YAAA,KAAK,EAAE,OAAO;AACf,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,kCAAkC;AAC/C,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,KAAK,EAAE,OAAO;AACf,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,WAAW,EAAE,oCAAoC;AACjD,YAAA,IAAI,EAAE,oBAAoB;AAC1B,YAAA,KAAK,EAAE,OAAO;AACf,SAAA;AACF,KAAA;IACD,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,CAAC;AAC/D,IAAA,GAAG,EAAE,gBAAgB;;AAGvB;SACgB,yBAAyB,GAAA;IACvC,OAAO;AACL,QAAA,OAAO,EAAE,uBAAuB;AAChC,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,UAAU,EAAE,CAAC,QAAmC,KAAK,MAAK;AACxD,YAAA,QAAQ,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QACnD,CAAC;QACD,IAAI,EAAE,CAAC,yBAAyB,CAAC;KACtB;AACf;;MCxFa,uBAAuB,CAAA;IACzB,KAAK,GAAG,EAAE;AACV,IAAA,SAAS;IACT,QAAQ,GAAG,IAAI;IACf,OAAO,GAAsB,OAAO;IACpC,MAAM,GAAG,IAAI;IACb,OAAO,GAAG,IAAI;AACd,IAAA,QAAQ;wGAPN,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArFxB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4kDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA3BS,YAAY,qIAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,oLAAE,mBAAmB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAsF5E,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAzFnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAAA,UAAA,EACvB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAC9E;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,4kDAAA,CAAA,EAAA;;sBA4DA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;ACzGH;;AAEG;AAiCH,MAAM,KAAK,GAA2C;AACpD,IAAA,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;AACtC,IAAA,WAAW,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC;AAC7C,IAAA,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC;IAC7C,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;IACpD,uBAAuB,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC;AAC5E,IAAA,qBAAqB,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;AACvC,IAAA,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC;CAC5C;AAEM,MAAM,oBAAoB,GAAsB;AACrD,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,OAAO,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,cAAc,CAAC;AACrD,IAAA,KAAK,EAAE;QACL,sGAAsG;QACtG,0GAA0G;AAC3G,KAAA;AACD,IAAA,YAAY,EAAE;;AAEZ,QAAA;AACE,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,SAAS,EAAE,MAAM;YACjB,aAAa,EAAE,CAAC,aAAa,CAAC;AAC9B,YAAA,WAAW,EAAE,mCAAmC;AAChD,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA;;AAGD,QAAA,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;AAC1G,QAAA,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;AAC9G,QAAA,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE;AACvH,QAAA,EAAE,IAAI,EAAE,sBAAsB,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;;AAG5H,QAAA,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,iDAAiD,EAAE;AACzH,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,oDAAoD,EAAE;;AAG1H,QAAA,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;QAChH,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,+CAA+C,EAAE;AACnK,QAAA,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;AACtH,QAAA,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE;QACtH,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,YAAY,EAAE,WAAW,EAAE,wBAAwB,EAAE;AACvJ,QAAA,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;AACzI,QAAA,EAAE,IAAI,EAAE,8BAA8B,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,mCAAmC,EAAE;AACxI,QAAA,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;AAChH,QAAA,EAAE,IAAI,EAAE,0BAA0B,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,sBAAsB,EAAE;AACrH,QAAA,EAAE,IAAI,EAAE,2BAA2B,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;QACvH,EAAE,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,WAAW,EAAE,4BAA4B,EAAE;AAC3J,QAAA,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE;AAC3G,QAAA,EAAE,IAAI,EAAE,6BAA6B,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,qBAAqB,EAAE;AACvH,QAAA,EAAE,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,2BAA2B,EAAE;;AAGzH,QAAA,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,4BAA4B,EAAE;AACvG,QAAA,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;AACxH,QAAA,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;AACpG,QAAA,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;AACnG,QAAA,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;AAClG,QAAA,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE;AAC5G,QAAA,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE;AAC5G,QAAA,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;AACxG,QAAA,EAAE,IAAI,EAAE,gCAAgC,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE;AACxH,QAAA,EAAE,IAAI,EAAE,uBAAuB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,qDAAqD,EAAE;AACnJ,QAAA,EAAE,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,oCAAoC,EAAE;AAC7H,QAAA,EAAE,IAAI,EAAE,sBAAsB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,mCAAmC,EAAE;AAC7H,QAAA,EAAE,IAAI,EAAE,0BAA0B,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE;QACvI,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,iBAAiB,EAAE,WAAW,EAAE,+BAA+B,EAAE;QACxJ,EAAE,IAAI,EAAE,sBAAsB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,uBAAuB,EAAE,WAAW,EAAE,qCAAqC,EAAE;QAC1K,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,qBAAqB,EAAE,WAAW,EAAE,kCAAkC,EAAE;AACnK,QAAA,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,oCAAoC,EAAE;AACxH,QAAA,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,oCAAoC,EAAE;AAC3H,QAAA,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE;QACzG,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;AAC/I,QAAA,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;AAC/G,QAAA,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;AAChH,QAAA,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAE;AAC/G,QAAA,EAAE,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;QAClH,EAAE,IAAI,EAAE,uBAAuB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,uBAAuB,EAAE;AACjJ,QAAA,EAAE,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;AAC3H,QAAA,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;AAC5G,QAAA,EAAE,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,YAAY,EAAE;QACjH,EAAE,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE;QAChF,EAAE,IAAI,EAAE,+BAA+B,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE;;AAGvF,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;AAC/F,QAAA,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;AAC7G,KAAA;;;AC7HH;;AAEG;;ACFH;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@praxisui/crud",
3
- "version": "1.0.0-beta.44",
3
+ "version": "1.0.0-beta.45",
4
4
  "description": "CRUD building blocks for Praxis UI: integrates dynamic forms and tables with unified configuration and services.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^20.1.0",
7
7
  "@angular/core": "^20.1.0",
8
- "@praxisui/dynamic-form": "^1.0.0-beta.44",
9
- "@praxisui/table": "^1.0.0-beta.44",
10
- "@praxisui/core": "^1.0.0-beta.44",
11
- "@praxisui/dynamic-fields": "^1.0.0-beta.44",
12
- "@praxisui/settings-panel": "^1.0.0-beta.44"
8
+ "@praxisui/dynamic-form": "^1.0.0-beta.45",
9
+ "@praxisui/table": "^1.0.0-beta.45",
10
+ "@praxisui/core": "^1.0.0-beta.45",
11
+ "@praxisui/dynamic-fields": "^1.0.0-beta.45",
12
+ "@praxisui/settings-panel": "^1.0.0-beta.45"
13
13
  },
14
14
  "dependencies": {
15
15
  "tslib": "^2.3.0"