@praxisui/editorial-forms 1.0.0-beta.61

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"praxisui-editorial-forms.mjs","sources":["../../../projects/praxis-editorial-forms/src/lib/praxis-editorial-forms.ts","../../../projects/praxis-editorial-forms/src/lib/editorial-runtime.contract.ts","../../../projects/praxis-editorial-forms/src/lib/runtime/editorial-runtime.helpers.ts","../../../projects/praxis-editorial-forms/src/lib/adapters/editorial-data-block-adapter.ts","../../../projects/praxis-editorial-forms/src/lib/adapters/editorial-data-block-adapter-registry.ts","../../../projects/praxis-editorial-forms/src/lib/renderers/editorial-data-collection-block-outlet.component.ts","../../../projects/praxis-editorial-forms/src/lib/renderers/editorial-block-renderer.component.ts","../../../projects/praxis-editorial-forms/src/lib/runtime/editorial-preset-resolver.ts","../../../projects/praxis-editorial-forms/src/lib/runtime/editorial-runtime-state.ts","../../../projects/praxis-editorial-forms/src/lib/runtime/editorial-runtime-fallback.ts","../../../projects/praxis-editorial-forms/src/lib/editorial-form-runtime.component.ts","../../../projects/praxis-editorial-forms/src/lib/adapters/dynamic-form/editorial-dynamic-form.adapter.ts","../../../projects/praxis-editorial-forms/src/lib/testing/editorial-runtime.fixtures.ts","../../../projects/praxis-editorial-forms/src/public-api.ts","../../../projects/praxis-editorial-forms/src/praxisui-editorial-forms.ts"],"sourcesContent":["import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\n/**\n * Root provider entrypoint for the editorial runtime package.\n *\n * Intentionally minimal in v1:\n * - no global singleton graph yet\n * - no dependency on @praxisui/dynamic-form\n * - safe to consume from apps without pulling generic form authoring\n */\nexport function providePraxisEditorialForms(): EnvironmentProviders {\n return makeEnvironmentProviders([]);\n}\n","import type {\n EditorialSolutionDefinition,\n EditorialTemplateInstance,\n} from '@praxisui/core';\n\nexport interface EditorialRuntimeInput {\n solution: EditorialSolutionDefinition | null;\n instance: EditorialTemplateInstance | null;\n runtimeContext?: Record<string, unknown> | null;\n}\n\nexport interface EditorialRuntimeHostConfig {\n emitOperationalEvents?: boolean;\n forwardAdapterOperationalEvents?: boolean;\n}\n\nexport const DEFAULT_EDITORIAL_RUNTIME_HOST_CONFIG: Required<EditorialRuntimeHostConfig> = {\n emitOperationalEvents: true,\n forwardAdapterOperationalEvents: true,\n};\n","import type {\n EditorialBlock,\n EditorialBlockVisibilityRule,\n} from '@praxisui/core';\n\nexport function resolveActiveJourney<TJourney extends { journeyId: string }>(\n journeys: ReadonlyArray<TJourney>,\n journeyId: string | null | undefined,\n): TJourney | null {\n if (!journeys.length) {\n return null;\n }\n return journeys.find((journey) => journey.journeyId === journeyId) ?? journeys[0];\n}\n\nexport function resolveActiveStep<TStep extends { stepId: string }>(\n journey: { steps: ReadonlyArray<TStep> } | null,\n stepId: string | null | undefined,\n): TStep | null {\n if (!journey?.steps.length) {\n return null;\n }\n return journey.steps.find((step) => step.stepId === stepId) ?? journey.steps[0];\n}\n\nexport function getVisibleBlocks(\n blocks: ReadonlyArray<EditorialBlock> | null | undefined,\n runtimeContext: Record<string, unknown> | null | undefined,\n): EditorialBlock[] {\n return (blocks ?? []).filter((block) => isBlockVisible(block, runtimeContext));\n}\n\nexport function isBlockVisible(\n block: EditorialBlock,\n runtimeContext: Record<string, unknown> | null | undefined,\n): boolean {\n if (!block.visibility?.length) {\n return true;\n }\n return block.visibility.every((rule) => matchesVisibilityRule(rule, runtimeContext));\n}\n\nexport function matchesVisibilityRule(\n rule: EditorialBlockVisibilityRule,\n runtimeContext: Record<string, unknown> | null | undefined,\n): boolean {\n if (!rule.when) {\n return true;\n }\n const currentValue = getValueAtPath(runtimeContext ?? {}, rule.when);\n if (rule.exists === true) {\n return currentValue != null;\n }\n if (rule.exists === false) {\n return currentValue == null;\n }\n if (rule.equals !== undefined) {\n return currentValue === rule.equals;\n }\n if (rule.notEquals !== undefined) {\n return currentValue !== rule.notEquals;\n }\n return true;\n}\n\nexport function getValueAtPath(source: Record<string, unknown>, path: string): unknown {\n return path.split('.').reduce<unknown>((current, segment) => {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n return (current as Record<string, unknown>)[segment];\n }, source);\n}\n","import { InjectionToken, Type } from '@angular/core';\nimport type {\n EditorialDataCollectionBlock,\n EditorialSolutionDefinition,\n EditorialTemplateInstance,\n FormConfig,\n} from '@praxisui/core';\n\nexport type EditorialDataBlockComponentInputs = Record<string, unknown>;\n\nexport interface EditorialDataBlockContext {\n block: EditorialDataCollectionBlock;\n runtimeContext: Record<string, unknown> | null;\n solution: EditorialSolutionDefinition | null;\n instance: EditorialTemplateInstance | null;\n resolvedFormConfig: FormConfig | null;\n}\n\nexport interface EditorialDataBlockAdapter {\n readonly adapterId: string;\n readonly displayName?: string;\n readonly component?: Type<unknown>;\n resolveComponent?(\n context: EditorialDataBlockContext,\n ): Promise<Type<unknown>> | Type<unknown>;\n supports?(context: EditorialDataBlockContext): boolean;\n buildInputs?(context: EditorialDataBlockContext): EditorialDataBlockComponentInputs;\n validateComponent?(\n component: Type<unknown>,\n context: EditorialDataBlockContext,\n ): { ok: true } | { ok: false; reason: string };\n}\n\nfunction getEditorialDataBlockAdapterToken(): InjectionToken<\n ReadonlyArray<EditorialDataBlockAdapter>\n> {\n const registryKey = '__PAX_EDITORIAL_DATA_BLOCK_ADAPTER_TOKEN__';\n const globalRegistry = globalThis as typeof globalThis & {\n [registryKey]?: InjectionToken<ReadonlyArray<EditorialDataBlockAdapter>>;\n };\n\n if (!globalRegistry[registryKey]) {\n globalRegistry[registryKey] = new InjectionToken<\n ReadonlyArray<EditorialDataBlockAdapter>\n >('EDITORIAL_DATA_BLOCK_ADAPTER');\n }\n\n return globalRegistry[registryKey];\n}\n\nexport const EDITORIAL_DATA_BLOCK_ADAPTER =\n getEditorialDataBlockAdapterToken();\n\nexport interface EditorialDataBlockResolution {\n source:\n | 'block.formConfig'\n | 'instance.overrides.runtimeFormConfigs'\n | 'instance.compatibilityFormConfigs'\n | 'unresolved';\n formConfig: FormConfig | null;\n lookupKey?: string;\n ambiguous?: boolean;\n matchedSources?: Array<\n | 'block.formConfig'\n | 'instance.overrides.runtimeFormConfigs'\n | 'instance.compatibilityFormConfigs'\n >;\n matchedKeys?: string[];\n}\n\nexport function resolveEditorialDataBlockFormConfigDetails(\n block: EditorialDataCollectionBlock,\n instance: EditorialTemplateInstance | null,\n): EditorialDataBlockResolution {\n if (block.formConfig) {\n return {\n source: 'block.formConfig',\n formConfig: block.formConfig,\n lookupKey: block.formBlockId,\n ambiguous: false,\n matchedSources: ['block.formConfig'],\n matchedKeys: [block.formBlockId],\n };\n }\n\n const runtimeConfigs = instance?.overrides?.runtimeFormConfigs;\n const compatibilityConfigs = instance?.compatibilityFormConfigs;\n const candidateKeys = [...new Set([block.formConfigRef, block.formBlockId].filter(\n (value): value is string => Boolean(value),\n ))];\n const matches: Array<{\n source:\n | 'instance.overrides.runtimeFormConfigs'\n | 'instance.compatibilityFormConfigs';\n formConfig: FormConfig;\n lookupKey: string;\n }> = [];\n\n for (const key of candidateKeys) {\n const runtimeResolved = runtimeConfigs?.[key];\n if (runtimeResolved) {\n matches.push({\n source: 'instance.overrides.runtimeFormConfigs',\n formConfig: runtimeResolved,\n lookupKey: key,\n });\n }\n\n const compatibilityResolved = compatibilityConfigs?.[key];\n if (compatibilityResolved) {\n matches.push({\n source: 'instance.compatibilityFormConfigs',\n formConfig: compatibilityResolved,\n lookupKey: key,\n });\n }\n }\n\n if (matches.length) {\n const selected = matches[0];\n return {\n source: selected.source,\n formConfig: selected.formConfig,\n lookupKey: selected.lookupKey,\n ambiguous: matches.length > 1,\n matchedSources: matches.map((match) => match.source),\n matchedKeys: matches.map((match) => match.lookupKey),\n };\n }\n\n return {\n source: 'unresolved',\n formConfig: null,\n lookupKey: block.formConfigRef ?? block.formBlockId,\n ambiguous: false,\n matchedSources: [],\n matchedKeys: [],\n };\n}\n\nexport function resolveEditorialDataBlockFormConfig(\n block: EditorialDataCollectionBlock,\n instance: EditorialTemplateInstance | null,\n): FormConfig | null {\n return resolveEditorialDataBlockFormConfigDetails(block, instance).formConfig;\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport type {\n EditorialDataBlockAdapter,\n EditorialDataBlockContext,\n} from './editorial-data-block-adapter';\nimport { EDITORIAL_DATA_BLOCK_ADAPTER } from './editorial-data-block-adapter';\n\nexport type EditorialDataBlockAdapterResolutionStatus =\n | 'resolved'\n | 'missing'\n | 'incompatible';\n\nexport interface EditorialDataBlockAdapterResolution {\n status: EditorialDataBlockAdapterResolutionStatus;\n adapter: EditorialDataBlockAdapter | null;\n adapterIds: string[];\n registrySize: number;\n}\n\nexport class EditorialDataBlockAdapterRegistry {\n constructor(\n private readonly adapters: ReadonlyArray<EditorialDataBlockAdapter>,\n ) {}\n\n resolve(\n context: EditorialDataBlockContext,\n ): EditorialDataBlockAdapterResolution {\n return resolveEditorialDataBlockAdapter(this.adapters, context);\n }\n}\n\nexport function provideEditorialDataBlockAdapter(\n adapter: EditorialDataBlockAdapter,\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: EDITORIAL_DATA_BLOCK_ADAPTER,\n useValue: adapter,\n multi: true,\n },\n ]);\n}\n\nexport function resolveEditorialDataBlockAdapter(\n adapters: ReadonlyArray<EditorialDataBlockAdapter>,\n context: EditorialDataBlockContext,\n): EditorialDataBlockAdapterResolution {\n if (!adapters.length) {\n return {\n status: 'missing',\n adapter: null,\n adapterIds: [],\n registrySize: 0,\n };\n }\n\n const resolved = adapters.find(\n (candidate) => candidate.supports?.(context) ?? true,\n ) ?? null;\n\n return {\n status: resolved ? 'resolved' : 'incompatible',\n adapter: resolved,\n adapterIds: adapters.map((item) => item.adapterId),\n registrySize: adapters.length,\n };\n}\n","import { CommonModule, NgComponentOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Type,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport type {\n EditorialDataCollectionBlock,\n EditorialSolutionDefinition,\n EditorialTemplateInstance,\n} from '@praxisui/core';\nimport type { EditorialResolvedDataCollectionBlock } from '../runtime/editorial-runtime-snapshot.model';\nimport {\n EDITORIAL_DATA_BLOCK_ADAPTER,\n EditorialDataBlockAdapter,\n EditorialDataBlockResolution,\n resolveEditorialDataBlockFormConfig,\n resolveEditorialDataBlockFormConfigDetails,\n} from '../adapters/editorial-data-block-adapter';\nimport {\n EditorialDataBlockAdapterRegistry,\n} from '../adapters/editorial-data-block-adapter-registry';\nimport type { EditorialRuntimeOperationalEvent } from '../runtime/editorial-runtime-events.model';\n\ntype DataCollectionOutletState =\n | { kind: 'idle' }\n | { kind: 'loading'; message: string }\n | { kind: 'ready' }\n | { kind: 'error'; title: string; message: string; details?: string };\n\ntype DataCollectionLoadingState = Extract<\n DataCollectionOutletState,\n { kind: 'loading' }\n>;\ntype DataCollectionErrorState = Extract<\n DataCollectionOutletState,\n { kind: 'error' }\n>;\n\n@Component({\n selector: 'praxis-editorial-data-collection-block-outlet',\n standalone: true,\n imports: [CommonModule, NgComponentOutlet],\n template: `\n <section class=\"block-card data-block\">\n @if (block().title) {\n <h3>{{ block().title }}</h3>\n }\n\n @if (block().description) {\n <p class=\"description\">{{ block().description }}</p>\n }\n\n @if (adapterComponent(); as adapterComponent) {\n <ng-container\n *ngComponentOutlet=\"adapterComponent; inputs: adapterInputs()\"\n />\n } @else if (loadingState(); as loadingState) {\n <div class=\"feedback status\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n <strong>Preparando coleta</strong>\n <p>{{ loadingState.message }}</p>\n </div>\n } @else if (errorState(); as errorState) {\n <div class=\"feedback error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n <strong>{{ errorState.title }}</strong>\n <p>{{ errorState.message }}</p>\n @if (errorState.details) {\n <p class=\"details\">{{ errorState.details }}</p>\n }\n </div>\n } @else {\n <div class=\"feedback status\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n <strong>Coleta nao disponivel</strong>\n <p>{{ fallbackMessage() }}</p>\n </div>\n }\n </section>\n `,\n styles: [`\n :host {\n display: block;\n }\n\n .block-card {\n display: grid;\n gap: 12px;\n padding: 18px;\n border-radius: 18px;\n background: var(--md-sys-color-surface-container-low, #f7f2fa);\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline-variant, #cac4d0) 65%, transparent);\n }\n\n h3,\n p {\n margin: 0;\n }\n\n .description,\n .feedback {\n color: var(--md-sys-color-on-surface-variant, #49454f);\n }\n\n .feedback {\n display: grid;\n gap: 6px;\n padding: 12px 14px;\n border-radius: 14px;\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline-variant, #cac4d0) 70%, transparent);\n background: var(--md-sys-color-surface, #fff);\n }\n\n .feedback strong {\n color: var(--md-sys-color-on-surface, #1b1b1f);\n }\n\n .error {\n border-color: color-mix(in srgb, var(--md-sys-color-error, #b3261e) 50%, transparent);\n background: color-mix(in srgb, var(--md-sys-color-error-container, #f9dedc) 35%, var(--md-sys-color-surface, #fff));\n }\n\n .details {\n font-size: 0.9rem;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorialDataCollectionBlockOutletComponent {\n private readonly adapters = inject(EDITORIAL_DATA_BLOCK_ADAPTER, {\n optional: true,\n }) ?? [];\n private readonly adapterRegistry = new EditorialDataBlockAdapterRegistry(this.adapters);\n private loadVersion = 0;\n private lastAdapterEventSignature: string | null = null;\n\n readonly block = input.required<\n EditorialDataCollectionBlock | EditorialResolvedDataCollectionBlock\n >();\n readonly runtimeContext = input<Record<string, unknown> | null>(null);\n readonly solution = input<EditorialSolutionDefinition | null>(null);\n readonly instance = input<EditorialTemplateInstance | null>(null);\n readonly operationalEvent = output<EditorialRuntimeOperationalEvent>();\n\n private readonly resolvedComponent = signal<Type<unknown> | null>(null);\n protected readonly state = signal<DataCollectionOutletState>({ kind: 'idle' });\n\n protected readonly adapterContext = computed(() => ({\n block: this.block(),\n runtimeContext: this.runtimeContext(),\n solution: this.solution(),\n instance: this.instance(),\n resolvedFormConfig: resolveEditorialDataBlockFormConfig(\n this.block(),\n this.instance(),\n ),\n }));\n\n private readonly resolution = computed<EditorialDataBlockResolution>(() =>\n resolveEditorialDataBlockFormConfigDetails(this.block(), this.instance()),\n );\n\n protected readonly adapterResolution = computed(() =>\n this.adapterRegistry.resolve(this.adapterContext()),\n );\n protected readonly adapter = computed(() =>\n this.adapterResolution().adapter,\n );\n\n protected readonly adapterComponent = computed(\n () => this.resolvedComponent() ?? this.adapter()?.component ?? null,\n );\n protected readonly loadingState = computed<DataCollectionLoadingState | null>(() => {\n const state = this.state();\n return state.kind === 'loading' ? state : null;\n });\n protected readonly errorState = computed<DataCollectionErrorState | null>(() => {\n const state = this.state();\n return state.kind === 'error' ? state : null;\n });\n\n protected readonly adapterInputs = computed(() => {\n const adapter = this.adapter();\n if (!adapter) {\n return {};\n }\n\n return {\n block: this.block(),\n runtimeContext: this.runtimeContext(),\n solution: this.solution(),\n instance: this.instance(),\n resolvedFormConfig: this.resolution().formConfig,\n ...(adapter.buildInputs?.(this.adapterContext()) ?? {}),\n };\n });\n\n protected readonly fallbackMessage = computed(() => {\n const resolution = this.resolution();\n const block = this.block();\n const adapterResolution = this.adapterResolution();\n const errorState = this.errorState();\n const snapshotState = isResolvedDataCollectionBlock(block)\n ? block.dataCollectionState\n : null;\n\n if (errorState) {\n return errorState.message;\n }\n\n if (snapshotState?.readiness === 'invalid') {\n return `O bloco \"${block.formBlockId}\" foi materializado com estado invalido. Revise formBlockId, formConfigRef e a configuracao editorial herdada.`;\n }\n\n if (snapshotState?.readiness === 'missingConfig') {\n return `O bloco \"${block.formBlockId}\" nao encontrou configuracao de coleta. Chave consultada: ${snapshotState.resolvedFormConfigLookupKey ?? 'nenhuma chave candidata'}.`;\n }\n\n if (adapterResolution.status === 'incompatible') {\n return `O bloco \"${block.formBlockId}\" encontrou adapters registrados (${adapterResolution.adapterIds.join(', ')}), mas nenhum declarou compatibilidade para esta coleta.`;\n }\n\n if (!resolution.formConfig && adapterResolution.status === 'missing') {\n return `O bloco \"${block.formBlockId}\" nao encontrou configuracao de coleta nem adaptador registrado. Verifique o provider do host e a materializacao do FormConfig editorial.`;\n }\n\n if (!resolution.formConfig) {\n return `O bloco \"${block.formBlockId}\" encontrou um adaptador, mas nao encontrou FormConfig em ${resolution.lookupKey ?? 'nenhuma chave conhecida'}.`;\n }\n\n return `Existe configuracao para \"${block.formBlockId}\" (${resolution.source}), mas nenhum adaptador de coleta foi registrado para materializar a engine.`;\n });\n\n constructor() {\n effect(() => {\n const context = this.adapterContext();\n const resolution = this.resolution();\n const adapterResolution = this.adapterResolution();\n const adapter = adapterResolution.adapter;\n const requestVersion = ++this.loadVersion;\n\n this.emitAdapterResolutionEvent(adapterResolution.status, adapter, undefined);\n\n if (!adapter) {\n this.resolvedComponent.set(null);\n this.state.set({ kind: 'idle' });\n if (adapterResolution.status === 'incompatible') {\n this.state.set({\n kind: 'error',\n title: 'Adaptador incompatível',\n message: `Nenhum adaptador registrado aceitou o bloco \"${context.block.formBlockId}\".`,\n details: `Adapters disponiveis: ${adapterResolution.adapterIds.join(', ') || 'nenhum'}.`,\n });\n }\n return;\n }\n\n if (!resolution.formConfig) {\n this.resolvedComponent.set(null);\n this.state.set({\n kind: 'error',\n title: 'Configuracao de coleta ausente',\n message: `O bloco \"${context.block.formBlockId}\" nao possui FormConfig resolvido para a engine de coleta.`,\n details: `Origem consultada: ${resolution.lookupKey ?? 'nenhuma chave candidata'}.`,\n });\n return;\n }\n\n if (!adapter.resolveComponent) {\n const component = adapter.component ?? null;\n if (!component) {\n this.resolvedComponent.set(null);\n this.emitAdapterResolutionEvent(\n 'invalid',\n adapter,\n 'Registre um componente compatível ou implemente resolveComponent().',\n );\n this.state.set({\n kind: 'error',\n title: 'Adaptador incompleto',\n message: `O adaptador \"${adapter.displayName ?? adapter.adapterId}\" nao expôs um componente de coleta.`,\n details: 'Registre um componente compatível ou implemente resolveComponent().',\n });\n return;\n }\n\n this.applyResolvedComponent(component, adapter, context, requestVersion);\n return;\n }\n\n this.state.set({\n kind: 'loading',\n message: `Carregando a engine de coleta para \"${context.block.formBlockId}\"...`,\n });\n void this.loadAdapterComponent(adapter, context, requestVersion);\n });\n }\n\n private async loadAdapterComponent(\n adapter: EditorialDataBlockAdapter,\n context: ReturnType<typeof this.adapterContext>,\n requestVersion: number,\n ): Promise<void> {\n try {\n const component = await adapter.resolveComponent?.(context);\n this.applyResolvedComponent(component ?? null, adapter, context, requestVersion);\n } catch {\n if (requestVersion !== this.loadVersion) {\n return;\n }\n\n this.resolvedComponent.set(null);\n this.state.set({\n kind: 'error',\n title: 'Falha ao carregar a engine',\n message: `O adaptador \"${adapter.displayName ?? adapter.adapterId}\" falhou ao preparar a coleta do bloco \"${context.block.formBlockId}\".`,\n details: 'Valide o provider opcional do host e a disponibilidade do componente compatível.',\n });\n }\n }\n\n private applyResolvedComponent(\n component: Type<unknown> | null,\n adapter: EditorialDataBlockAdapter,\n context: ReturnType<typeof this.adapterContext>,\n requestVersion: number,\n ): void {\n if (requestVersion !== this.loadVersion) {\n return;\n }\n\n if (!component) {\n this.resolvedComponent.set(null);\n this.state.set({\n kind: 'error',\n title: 'Componente nao resolvido',\n message: `O adaptador \"${adapter.displayName ?? adapter.adapterId}\" nao retornou um componente para o bloco \"${context.block.formBlockId}\".`,\n details: 'Implemente component ou resolveComponent() com um componente Angular compatível.',\n });\n return;\n }\n\n const validation = adapter.validateComponent?.(component, context) ?? { ok: true as const };\n if (!validation.ok) {\n this.resolvedComponent.set(null);\n this.emitAdapterResolutionEvent('invalid', adapter, validation.reason);\n this.state.set({\n kind: 'error',\n title: 'Componente incompatível',\n message: `O adaptador \"${adapter.displayName ?? adapter.adapterId}\" retornou um componente incompatível para \"${context.block.formBlockId}\".`,\n details: validation.reason,\n });\n return;\n }\n\n this.resolvedComponent.set(component);\n this.state.set({ kind: 'ready' });\n this.emitAdapterResolutionEvent('resolved', adapter);\n }\n\n private emitAdapterResolutionEvent(\n status: 'resolved' | 'missing' | 'incompatible' | 'invalid',\n adapter: EditorialDataBlockAdapter | null,\n reason?: string,\n ): void {\n const block = this.block();\n const adapterIds = this.adapterResolution().adapterIds;\n const signature = `${status}:${block.blockId}:${block.formBlockId}:${adapter?.adapterId ?? 'none'}:${reason ?? ''}:${adapterIds.join(',')}`;\n if (signature === this.lastAdapterEventSignature) {\n return;\n }\n this.lastAdapterEventSignature = signature;\n\n if (status === 'resolved' && adapter) {\n this.operationalEvent.emit({\n eventType: 'data-collection-adapter-resolved',\n timestamp: Date.now(),\n severity: 'info',\n blockId: block.blockId,\n payload: {\n adapterId: adapter.adapterId,\n formBlockId: block.formBlockId,\n },\n });\n return;\n }\n\n if (status === 'invalid' && adapter) {\n this.operationalEvent.emit({\n eventType: 'data-collection-adapter-invalid',\n timestamp: Date.now(),\n severity: 'error',\n blockId: block.blockId,\n payload: {\n adapterId: adapter.adapterId,\n formBlockId: block.formBlockId,\n reason: reason ?? 'Adaptador retornou componente incompatível.',\n },\n });\n return;\n }\n\n if (status === 'incompatible') {\n this.operationalEvent.emit({\n eventType: 'data-collection-adapter-incompatible',\n timestamp: Date.now(),\n severity: 'warning',\n blockId: block.blockId,\n payload: {\n formBlockId: block.formBlockId,\n adapterIds,\n },\n });\n return;\n }\n\n this.operationalEvent.emit({\n eventType: 'data-collection-adapter-missing',\n timestamp: Date.now(),\n severity: 'warning',\n blockId: block.blockId,\n payload: {\n formBlockId: block.formBlockId,\n adapterIds,\n },\n });\n }\n}\n\nfunction isResolvedDataCollectionBlock(\n block: EditorialDataCollectionBlock | EditorialResolvedDataCollectionBlock,\n): block is EditorialResolvedDataCollectionBlock {\n return 'dataCollectionState' in block;\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { DynamicWidgetLoaderDirective } from '@praxisui/core';\nimport type {\n EditorialBlock,\n EditorialContextSummaryBlock,\n EditorialDataCollectionBlock,\n EditorialFaqAccordionBlock,\n EditorialHeroBlock,\n EditorialInfoCardsBlock,\n EditorialPolicyListBlock,\n EditorialReviewSummaryBlock,\n EditorialRichTextBlock,\n EditorialSolutionDefinition,\n EditorialTemplateInstance,\n EditorialTimelineStepsBlock,\n} from '@praxisui/core';\nimport { getValueAtPath } from '../runtime/editorial-runtime.helpers';\nimport type { EditorialRuntimeOperationalEvent } from '../runtime/editorial-runtime-events.model';\nimport { EditorialDataCollectionBlockOutletComponent } from './editorial-data-collection-block-outlet.component';\n\n@Component({\n selector: 'praxis-editorial-block-renderer',\n standalone: true,\n imports: [\n CommonModule,\n DynamicWidgetLoaderDirective,\n EditorialDataCollectionBlockOutletComponent,\n ],\n template: `\n @switch (block().kind) {\n @case ('hero') {\n <section class=\"block-card hero-block\">\n @if (hero().subtitle) {\n <p class=\"eyebrow\">{{ hero().subtitle }}</p>\n }\n <h3>\n {{ hero().title }}\n @if (hero().titleAccent) {\n <span>{{ hero().titleAccent }}</span>\n }\n </h3>\n @if (hero().description) {\n <p class=\"description\">{{ hero().description }}</p>\n }\n </section>\n }\n @case ('richText') {\n <section class=\"block-card\">\n @if (richText().title) {\n <h3>{{ richText().title }}</h3>\n }\n <div class=\"content\">{{ richText().content }}</div>\n </section>\n }\n @case ('legalNotice') {\n <section class=\"block-card notice-block\">\n @if (richText().title) {\n <h3>{{ richText().title }}</h3>\n }\n <div class=\"content\">{{ richText().content }}</div>\n </section>\n }\n @case ('policyList') {\n <section class=\"block-card\">\n @if (policyList().title) {\n <h3>{{ policyList().title }}</h3>\n }\n <ul class=\"list-reset stack-sm\">\n @for (item of policyList().items; track item.id) {\n <li class=\"policy-item\">\n <strong>{{ item.title }}</strong>\n @if (item.summary) {\n <p>{{ item.summary }}</p>\n }\n </li>\n }\n </ul>\n </section>\n }\n @case ('timelineSteps') {\n <section class=\"block-card\">\n @if (timeline().title) {\n <h3>{{ timeline().title }}</h3>\n }\n <ol class=\"timeline\">\n @for (item of timeline().steps; track item.id) {\n <li class=\"timeline-item\">\n <strong>{{ item.label }}</strong>\n @if (item.description) {\n <span>{{ item.description }}</span>\n }\n </li>\n }\n </ol>\n </section>\n }\n @case ('reviewSummary') {\n <section class=\"block-card\">\n @if (review().title) {\n <h3>{{ review().title }}</h3>\n }\n <dl class=\"review-grid\">\n @for (field of review().fields; track field.key) {\n <div>\n <dt>{{ field.label }}</dt>\n <dd>{{ resolveValue(field.valuePath, field.fallback) }}</dd>\n </div>\n }\n </dl>\n </section>\n }\n @case ('contextSummary') {\n <section class=\"block-card\">\n @if (contextSummary().title) {\n <h3>{{ contextSummary().title }}</h3>\n }\n <dl class=\"review-grid\">\n @for (field of contextSummary().fields; track field.key) {\n <div>\n <dt>{{ field.label }}</dt>\n <dd>{{ resolveValue(resolveContextPath(field.valuePath), field.fallback) }}</dd>\n </div>\n }\n </dl>\n </section>\n }\n @case ('infoCards') {\n <section class=\"block-card\">\n <div class=\"cards-grid\">\n @for (item of infoCards().items; track item.id) {\n <article class=\"info-card\">\n <strong>{{ item.title }}</strong>\n @if (item.description) {\n <p>{{ item.description }}</p>\n }\n </article>\n }\n </div>\n </section>\n }\n @case ('faqAccordion') {\n <section class=\"block-card stack-sm\">\n @for (item of faq().items; track item.id) {\n <details class=\"faq-item\">\n <summary>{{ item.question }}</summary>\n <p>{{ item.answer }}</p>\n </details>\n }\n </section>\n }\n @case ('dataCollection') {\n <praxis-editorial-data-collection-block-outlet\n [block]=\"dataCollection()\"\n [runtimeContext]=\"runtimeContext()\"\n [solution]=\"solution()\"\n [instance]=\"instance()\"\n (operationalEvent)=\"operationalEvent.emit($event)\"\n />\n }\n @case ('customWidget') {\n <ng-container\n [dynamicWidgetLoader]=\"customWidget().widget\"\n [context]=\"runtimeContext()\"\n [strictValidation]=\"true\"\n [autoWireOutputs]=\"true\"\n />\n }\n @case ('footerLinks') {\n <ng-container\n [dynamicWidgetLoader]=\"customWidget().widget\"\n [context]=\"runtimeContext()\"\n [strictValidation]=\"true\"\n [autoWireOutputs]=\"true\"\n />\n }\n }\n `,\n styles: [`\n :host {\n display: block;\n }\n .block-card {\n display: grid;\n gap: 12px;\n padding: 18px;\n border-radius: 18px;\n background: var(--md-sys-color-surface-container-low, #f7f2fa);\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline-variant, #cac4d0) 65%, transparent);\n }\n .eyebrow {\n margin: 0;\n font-size: 0.8rem;\n font-weight: 700;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--md-sys-color-primary, #6750a4);\n }\n h3, p, ul, ol, dl { margin: 0; }\n .description, .content, .timeline-item span, .policy-item p, .info-card p, .faq-item p {\n color: var(--md-sys-color-on-surface-variant, #49454f);\n }\n .hero-block h3 span { color: var(--md-sys-color-primary, #6750a4); }\n .review-grid {\n display: grid;\n gap: 12px;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n }\n .review-grid dt {\n margin-bottom: 4px;\n font-size: 0.78rem;\n color: var(--md-sys-color-on-surface-variant, #49454f);\n }\n .review-grid dd { margin: 0; font-weight: 600; }\n .list-reset { list-style: none; padding: 0; margin: 0; }\n .stack-sm { display: grid; gap: 10px; }\n .timeline { display: grid; gap: 12px; padding-left: 18px; margin: 0; }\n .timeline-item { display: grid; gap: 4px; }\n .policy-item, .faq-item, .info-card {\n padding: 12px;\n border-radius: 14px;\n background: var(--md-sys-color-surface, #fff);\n }\n .cards-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 12px;\n }\n .notice-block {\n border-left: 4px solid var(--md-sys-color-primary, #6750a4);\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorialBlockRendererComponent {\n readonly block = input.required<EditorialBlock>();\n readonly runtimeContext = input<Record<string, unknown> | null>(null);\n readonly solution = input<EditorialSolutionDefinition | null>(null);\n readonly instance = input<EditorialTemplateInstance | null>(null);\n readonly operationalEvent = output<EditorialRuntimeOperationalEvent>();\n\n protected readonly hero = computed(() => this.block() as EditorialHeroBlock);\n protected readonly richText = computed(() => this.block() as EditorialRichTextBlock);\n protected readonly policyList = computed(() => this.block() as EditorialPolicyListBlock);\n protected readonly timeline = computed(() => this.block() as EditorialTimelineStepsBlock);\n protected readonly review = computed(() => this.block() as EditorialReviewSummaryBlock);\n protected readonly contextSummary = computed(() => this.block() as EditorialContextSummaryBlock);\n protected readonly infoCards = computed(() => this.block() as EditorialInfoCardsBlock);\n protected readonly faq = computed(() => this.block() as EditorialFaqAccordionBlock);\n protected readonly dataCollection = computed(() => this.block() as EditorialDataCollectionBlock);\n protected readonly customWidget = computed(() => this.block() as Extract<EditorialBlock, { kind: 'customWidget' | 'footerLinks' }>);\n\n protected resolveValue(valuePath?: string, fallback: string = '-'): string {\n if (!valuePath) {\n return fallback;\n }\n const value = getValueAtPath(this.runtimeContext() ?? {}, valuePath);\n return value == null || value === '' ? fallback : String(value);\n }\n\n protected resolveContextPath(valuePath?: string): string | undefined {\n const contextPath = this.contextSummary().contextPath;\n if (!contextPath) {\n return valuePath;\n }\n return valuePath ? `${contextPath}.${valuePath}` : contextPath;\n }\n}\n","import type {\n EditorialBlock,\n EditorialBlockOverride,\n EditorialCompliancePreset,\n EditorialContextFieldContract,\n EditorialDataCollectionBlock,\n EditorialJourney,\n EditorialJourneyOverride,\n EditorialJourneyStep,\n EditorialSolutionDefinition,\n EditorialTemplateInstance,\n EditorialThemePreset,\n} from '@praxisui/core';\nimport {\n resolveEditorialDataBlockFormConfigDetails,\n} from '../adapters/editorial-data-block-adapter';\nimport type { EditorialRuntimeDiagnostic } from './editorial-runtime-diagnostics.model';\nimport { getValueAtPath } from './editorial-runtime.helpers';\nimport type {\n EditorialResolvedBlock,\n EditorialResolvedBlockCompositionEntry,\n EditorialResolvedBlockSourceRef,\n EditorialResolvedDataCollectionBlock,\n EditorialResolvedDataCollectionState,\n EditorialResolvedJourney,\n EditorialResolvedStep,\n EditorialRuntimeSnapshot,\n} from './editorial-runtime-snapshot.model';\n\nexport interface ResolveEditorialRuntimeSnapshotInput {\n solution: EditorialSolutionDefinition | null;\n instance: EditorialTemplateInstance | null;\n runtimeContext?: Record<string, unknown> | null;\n}\n\nexport function resolveEditorialRuntimeSnapshot(\n input: ResolveEditorialRuntimeSnapshotInput,\n): EditorialRuntimeSnapshot {\n const diagnostics: EditorialRuntimeDiagnostic[] = [];\n const solution = input.solution;\n const instance = input.instance;\n const context = mergeContext(\n instance?.context ?? {},\n instance?.overrides?.contextPatch ?? {},\n input.runtimeContext ?? {},\n );\n\n const effectiveThemePreset = resolveEffectiveThemePreset(solution, instance, diagnostics);\n const effectiveCompliancePresets = resolveEffectiveCompliancePresets(\n solution,\n instance,\n diagnostics,\n );\n\n validateContextContract(solution?.contextContract ?? [], context, diagnostics);\n validateComplianceContext(effectiveCompliancePresets, context, diagnostics);\n\n const journeys = mergeJourneys(solution, instance, diagnostics);\n applyCompliancePresetBlocks(journeys, effectiveCompliancePresets, solution, instance);\n applyJourneyOverrides(\n journeys,\n instance?.overrides?.journeyOverrides ?? [],\n diagnostics,\n instance,\n );\n diagnoseResolvedBlocks(journeys, diagnostics, instance);\n annotateDiagnostics(journeys, diagnostics);\n\n if (!solution && !instance) {\n diagnostics.push({\n code: 'solution-missing',\n severity: 'warning',\n message: 'Nenhuma solution ou instance editorial foi fornecida ao runtime.',\n scopeKind: 'global',\n path: 'runtime',\n });\n }\n\n return {\n solutionId: solution?.solutionId ?? instance?.template.templateId ?? null,\n instanceId: instance?.instanceId ?? null,\n title: solution?.title ?? instance?.template.title ?? null,\n description: solution?.description ?? null,\n problemType: solution?.problemType ?? instance?.template.problemType ?? null,\n context,\n effectiveThemePreset,\n effectiveCompliancePresets,\n journeys,\n diagnostics: {\n items: diagnostics,\n hasErrors: diagnostics.some((item) => item.severity === 'error'),\n hasWarnings: diagnostics.some((item) => item.severity === 'warning'),\n },\n };\n}\n\nfunction resolveEffectiveThemePreset(\n solution: EditorialSolutionDefinition | null,\n instance: EditorialTemplateInstance | null,\n diagnostics: EditorialRuntimeDiagnostic[],\n): EditorialThemePreset | null {\n if (instance?.selectedThemePreset) {\n return instance.selectedThemePreset;\n }\n\n const requestedThemeId = instance?.overrides?.themePresetId;\n if (!requestedThemeId) {\n return solution?.themePresets?.[0] ?? null;\n }\n\n const resolved = solution?.themePresets?.find((preset) => preset.themeId === requestedThemeId) ?? null;\n if (!resolved) {\n diagnostics.push({\n code: 'theme-preset-not-found',\n severity: 'warning',\n message: `Theme preset \"${requestedThemeId}\" nao foi resolvido no catalogo da solution.`,\n scopeKind: 'global',\n path: `themePreset:${requestedThemeId}`,\n });\n }\n return resolved;\n}\n\nfunction resolveEffectiveCompliancePresets(\n solution: EditorialSolutionDefinition | null,\n instance: EditorialTemplateInstance | null,\n diagnostics: EditorialRuntimeDiagnostic[],\n): EditorialCompliancePreset[] {\n if (instance?.selectedCompliancePresets?.length) {\n return instance.selectedCompliancePresets;\n }\n\n const requestedPresetIds = instance?.overrides?.compliancePresetIds;\n if (!requestedPresetIds?.length) {\n return solution?.compliancePresets ?? [];\n }\n\n const resolved: EditorialCompliancePreset[] = [];\n for (const presetId of requestedPresetIds) {\n const preset = solution?.compliancePresets?.find((item) => item.presetId === presetId);\n if (!preset) {\n diagnostics.push({\n code: 'compliance-preset-not-found',\n severity: 'warning',\n message: `Compliance preset \"${presetId}\" nao foi resolvido no catalogo da solution.`,\n scopeKind: 'global',\n path: `compliancePreset:${presetId}`,\n });\n continue;\n }\n resolved.push(preset);\n }\n return resolved;\n}\n\nfunction validateContextContract(\n contract: EditorialContextFieldContract[],\n context: Record<string, unknown>,\n diagnostics: EditorialRuntimeDiagnostic[],\n): void {\n for (const field of contract) {\n if (!field.required) {\n continue;\n }\n\n const value = getValueAtPath(context, field.key);\n if (value != null && value !== '') {\n continue;\n }\n\n diagnostics.push({\n code: 'context-required-missing',\n severity: 'error',\n message: `Contexto obrigatorio ausente: \"${field.key}\".`,\n scopeKind: 'global',\n path: field.key,\n });\n }\n}\n\nfunction validateComplianceContext(\n presets: EditorialCompliancePreset[],\n context: Record<string, unknown>,\n diagnostics: EditorialRuntimeDiagnostic[],\n): void {\n for (const preset of presets) {\n for (const key of preset.requiredContextKeys ?? []) {\n const value = getValueAtPath(context, key);\n if (value != null && value !== '') {\n continue;\n }\n\n diagnostics.push({\n code: 'compliance-context-required-missing',\n severity: 'error',\n message: `Compliance preset \"${preset.presetId}\" requer o contexto \"${key}\".`,\n scopeKind: 'global',\n path: `compliancePreset:${preset.presetId}:${key}`,\n });\n }\n }\n}\n\nfunction mergeJourneys(\n solution: EditorialSolutionDefinition | null,\n instance: EditorialTemplateInstance | null,\n diagnostics: EditorialRuntimeDiagnostic[],\n): EditorialResolvedJourney[] {\n const resolvedJourneys = new Map<string, EditorialResolvedJourney>();\n const order: string[] = [];\n\n for (const journey of solution?.journeys ?? []) {\n resolvedJourneys.set(\n journey.journeyId,\n createResolvedJourney(\n journey,\n createSourceRef('solution', {\n solutionId: solution?.solutionId ?? undefined,\n journeyId: journey.journeyId,\n }),\n instance,\n ),\n );\n order.push(journey.journeyId);\n }\n\n for (const journey of instance?.journeys ?? []) {\n const existing = resolvedJourneys.get(journey.journeyId);\n if (!existing) {\n resolvedJourneys.set(\n journey.journeyId,\n createResolvedJourney(\n journey,\n createSourceRef('instanceJourney', {\n instanceId: instance?.instanceId ?? undefined,\n journeyId: journey.journeyId,\n }),\n instance,\n ),\n );\n order.push(journey.journeyId);\n continue;\n }\n\n resolvedJourneys.set(\n journey.journeyId,\n mergeJourney(\n existing,\n journey,\n createSourceRef('instanceJourney', {\n instanceId: instance?.instanceId ?? undefined,\n journeyId: journey.journeyId,\n }),\n diagnostics,\n instance,\n ),\n );\n }\n\n return order\n .map((journeyId) => resolvedJourneys.get(journeyId))\n .filter((journey): journey is EditorialResolvedJourney => Boolean(journey));\n}\n\nfunction createResolvedJourney(\n journey: EditorialJourney,\n source: EditorialResolvedBlockSourceRef,\n instance: EditorialTemplateInstance | null,\n): EditorialResolvedJourney {\n return {\n journeyId: journey.journeyId,\n label: journey.label,\n description: journey.description,\n steps: journey.steps.map((step) =>\n createResolvedStep(\n step,\n {\n ...source,\n stepId: step.stepId,\n },\n instance,\n ),\n ),\n };\n}\n\nfunction createResolvedStep(\n step: EditorialJourneyStep,\n source: EditorialResolvedBlockSourceRef,\n instance: EditorialTemplateInstance | null,\n): EditorialResolvedStep {\n return {\n stepId: step.stepId,\n label: step.label,\n description: step.description,\n blocks: step.blocks.map((block) =>\n createResolvedBlock(\n block,\n {\n ...source,\n blockId: block.blockId,\n },\n instance,\n ),\n ),\n };\n}\n\nfunction createResolvedBlock(\n block: EditorialBlock,\n source: EditorialResolvedBlockSourceRef,\n instance: EditorialTemplateInstance | null,\n previousTrail: EditorialResolvedBlockCompositionEntry[] = [],\n operation: EditorialResolvedBlockCompositionEntry['operation'] = 'seed',\n): EditorialResolvedBlock {\n const trail = dedupeTrail([\n ...previousTrail,\n { operation, source },\n ]);\n\n if (block.kind === 'dataCollection') {\n return {\n ...block,\n provenance: {\n primarySource: source,\n trail,\n },\n dataCollectionState: buildDataCollectionState(block, instance),\n };\n }\n\n return {\n ...block,\n provenance: {\n primarySource: source,\n trail,\n },\n };\n}\n\nfunction mergeJourney(\n base: EditorialResolvedJourney,\n override: EditorialJourney,\n source: EditorialResolvedBlockSourceRef,\n diagnostics: EditorialRuntimeDiagnostic[],\n instance: EditorialTemplateInstance | null,\n): EditorialResolvedJourney {\n const steps = new Map<string, EditorialResolvedStep>(\n base.steps.map((step) => [step.stepId, step] as const),\n );\n const order = base.steps.map((step) => step.stepId);\n\n for (const step of override.steps) {\n const existing = steps.get(step.stepId);\n if (!existing) {\n steps.set(\n step.stepId,\n createResolvedStep(\n step,\n {\n ...source,\n stepId: step.stepId,\n },\n instance,\n ),\n );\n order.push(step.stepId);\n continue;\n }\n\n const mergedBlocks = [...existing.blocks];\n for (const block of step.blocks) {\n const hasConflict = mergedBlocks.some((candidate) => candidate.blockId === block.blockId);\n if (hasConflict) {\n diagnostics.push({\n code: 'instance-journey-block-conflict',\n severity: 'warning',\n message: `Journey da instance tentou redefinir o bloco \"${block.blockId}\" em \"${override.journeyId}/${step.stepId}\" sem usar journeyOverrides.`,\n scopeKind: 'block',\n path: `instanceJourney:${override.journeyId}:${step.stepId}:${block.blockId}`,\n journeyId: override.journeyId,\n stepId: step.stepId,\n blockId: block.blockId,\n });\n continue;\n }\n\n mergedBlocks.push(\n createResolvedBlock(\n block,\n {\n ...source,\n stepId: step.stepId,\n blockId: block.blockId,\n },\n instance,\n [],\n 'instance-journey-append',\n ),\n );\n }\n\n steps.set(step.stepId, {\n stepId: step.stepId,\n label: step.label || existing.label,\n description: step.description ?? existing.description,\n blocks: mergedBlocks,\n });\n }\n\n return {\n journeyId: override.journeyId,\n label: override.label || base.label,\n description: override.description ?? base.description,\n steps: order\n .map((stepId) => steps.get(stepId))\n .filter((step): step is EditorialResolvedStep => Boolean(step)),\n };\n}\n\nfunction applyCompliancePresetBlocks(\n journeys: EditorialResolvedJourney[],\n presets: EditorialCompliancePreset[],\n solution: EditorialSolutionDefinition | null,\n instance: EditorialTemplateInstance | null,\n): void {\n for (const journey of journeys) {\n const targetStep = journey.steps[journey.steps.length - 1];\n if (!targetStep) {\n continue;\n }\n\n for (const preset of presets) {\n for (const block of preset.blocks ?? []) {\n targetStep.blocks.push(\n createResolvedBlock(\n block,\n createSourceRef('compliancePreset', {\n solutionId: solution?.solutionId ?? undefined,\n presetId: preset.presetId,\n journeyId: journey.journeyId,\n stepId: targetStep.stepId,\n blockId: block.blockId,\n }),\n instance,\n [],\n 'compliance-append',\n ),\n );\n }\n }\n }\n}\n\nfunction applyJourneyOverrides(\n journeys: EditorialResolvedJourney[],\n overrides: EditorialJourneyOverride[],\n diagnostics: EditorialRuntimeDiagnostic[],\n instance: EditorialTemplateInstance | null,\n): void {\n for (const journeyOverride of overrides) {\n const journey = journeys.find((candidate) => candidate.journeyId === journeyOverride.journeyId);\n if (!journey) {\n diagnostics.push({\n code: 'journey-override-target-missing',\n severity: 'warning',\n message: `Journey override referencia a jornada inexistente \"${journeyOverride.journeyId}\".`,\n scopeKind: 'journey',\n path: `journeyOverride:${journeyOverride.journeyId}`,\n journeyId: journeyOverride.journeyId,\n });\n continue;\n }\n\n const touchedTargets = new Set<string>();\n for (const stepOverride of journeyOverride.stepOverrides ?? []) {\n const step = journey.steps.find((candidate) => candidate.stepId === stepOverride.stepId);\n if (!step) {\n diagnostics.push({\n code: 'step-override-target-missing',\n severity: 'warning',\n message: `Journey override referencia a etapa inexistente \"${stepOverride.stepId}\" na jornada \"${journeyOverride.journeyId}\".`,\n scopeKind: 'step',\n path: `journeyOverride:${journeyOverride.journeyId}:${stepOverride.stepId}`,\n journeyId: journeyOverride.journeyId,\n stepId: stepOverride.stepId,\n });\n continue;\n }\n\n for (const blockOverride of stepOverride.blockOverrides ?? []) {\n applyBlockOverride(\n step,\n blockOverride,\n diagnostics,\n journeyOverride.journeyId,\n touchedTargets,\n instance,\n );\n }\n }\n }\n}\n\nfunction applyBlockOverride(\n step: EditorialResolvedStep,\n override: EditorialBlockOverride,\n diagnostics: EditorialRuntimeDiagnostic[],\n journeyId: string,\n touchedTargets: Set<string>,\n instance: EditorialTemplateInstance | null,\n): void {\n const source = createSourceRef('instanceOverride', {\n instanceId: instance?.instanceId ?? undefined,\n journeyId,\n stepId: step.stepId,\n blockId: override.blockId,\n });\n const conflictKeys = buildOverrideConflictKeys(step.stepId, override);\n if (conflictKeys.some((key) => touchedTargets.has(key))) {\n diagnostics.push({\n code: 'block-override-conflict',\n severity: 'warning',\n message: `Multiplas operacoes de override atingem o bloco \"${override.blockId}\" em \"${journeyId}/${step.stepId}\". A ordem declarada sera aplicada de forma deterministica.`,\n scopeKind: 'block',\n path: `journeyOverride:${journeyId}:${step.stepId}:${override.blockId}`,\n journeyId,\n stepId: step.stepId,\n blockId: override.blockId,\n });\n }\n for (const key of conflictKeys) {\n touchedTargets.add(key);\n }\n\n if (override.operation === 'append') {\n if (!override.value) {\n diagnostics.push(\n createInvalidBlockOverrideDiagnostic(\n journeyId,\n step.stepId,\n override,\n 'Append requer value.',\n ),\n );\n return;\n }\n\n step.blocks.push(\n createResolvedBlock(\n override.value,\n source,\n instance,\n [],\n 'instance-override-append',\n ),\n );\n return;\n }\n\n const blockIndex = step.blocks.findIndex((block) => block.blockId === override.blockId);\n if (override.operation === 'remove' || override.operation === 'replace') {\n if (blockIndex === -1) {\n diagnostics.push(\n createMissingBlockOverrideTargetDiagnostic(\n journeyId,\n step.stepId,\n override.blockId,\n ),\n );\n return;\n }\n\n if (override.operation === 'remove') {\n step.blocks.splice(blockIndex, 1);\n return;\n }\n\n if (!override.value) {\n diagnostics.push(\n createInvalidBlockOverrideDiagnostic(\n journeyId,\n step.stepId,\n override,\n 'Replace requer value.',\n ),\n );\n return;\n }\n\n const previous = step.blocks[blockIndex];\n step.blocks.splice(\n blockIndex,\n 1,\n createResolvedBlock(\n override.value,\n source,\n instance,\n previous.provenance.trail,\n 'instance-override-replace',\n ),\n );\n return;\n }\n\n if (!override.referenceBlockId || !override.value) {\n diagnostics.push(\n createInvalidBlockOverrideDiagnostic(\n journeyId,\n step.stepId,\n override,\n 'InsertBefore/InsertAfter requerem referenceBlockId e value.',\n ),\n );\n return;\n }\n\n const referenceIndex = step.blocks.findIndex((block) => block.blockId === override.referenceBlockId);\n if (referenceIndex === -1) {\n diagnostics.push(\n createMissingBlockOverrideTargetDiagnostic(\n journeyId,\n step.stepId,\n override.referenceBlockId,\n ),\n );\n return;\n }\n\n const insertIndex = override.operation === 'insertBefore'\n ? referenceIndex\n : referenceIndex + 1;\n step.blocks.splice(\n insertIndex,\n 0,\n createResolvedBlock(\n override.value,\n source,\n instance,\n [],\n override.operation === 'insertBefore'\n ? 'instance-override-insert-before'\n : 'instance-override-insert-after',\n ),\n );\n}\n\nfunction buildOverrideConflictKeys(\n stepId: string,\n override: EditorialBlockOverride,\n): string[] {\n const keys = [`${stepId}:block:${override.blockId}`];\n\n if (override.operation === 'replace' || override.operation === 'remove') {\n keys.push(`${stepId}:target:${override.blockId}`);\n }\n\n if (override.referenceBlockId) {\n keys.push(`${stepId}:reference:${override.referenceBlockId}`);\n keys.push(`${stepId}:target:${override.referenceBlockId}`);\n }\n\n return keys;\n}\n\nfunction createInvalidBlockOverrideDiagnostic(\n journeyId: string,\n stepId: string,\n override: EditorialBlockOverride,\n reason: string,\n): EditorialRuntimeDiagnostic {\n return {\n code: 'block-override-invalid',\n severity: 'warning',\n message: `Override invalido para bloco \"${override.blockId}\" em \"${journeyId}/${stepId}\": ${reason}`,\n scopeKind: 'block',\n path: `journeyOverride:${journeyId}:${stepId}:${override.blockId}`,\n journeyId,\n stepId,\n blockId: override.blockId,\n };\n}\n\nfunction createMissingBlockOverrideTargetDiagnostic(\n journeyId: string,\n stepId: string,\n blockId: string,\n): EditorialRuntimeDiagnostic {\n return {\n code: 'block-override-target-missing',\n severity: 'warning',\n message: `Override referencia bloco inexistente \"${blockId}\" em \"${journeyId}/${stepId}\".`,\n scopeKind: 'block',\n path: `journeyOverride:${journeyId}:${stepId}:${blockId}`,\n journeyId,\n stepId,\n blockId,\n };\n}\n\nfunction diagnoseResolvedBlocks(\n journeys: EditorialResolvedJourney[],\n diagnostics: EditorialRuntimeDiagnostic[],\n instance: EditorialTemplateInstance | null,\n): void {\n for (const journey of journeys) {\n for (const step of journey.steps) {\n for (const block of step.blocks) {\n if (block.kind !== 'dataCollection') {\n continue;\n }\n\n const dataBlock = block as EditorialResolvedDataCollectionBlock;\n const resolution = resolveEditorialDataBlockFormConfigDetails(dataBlock, instance);\n if (resolution.ambiguous) {\n diagnostics.push({\n code: 'data-collection-config-ambiguous',\n severity: 'warning',\n message: `Bloco dataCollection \"${block.blockId}\" encontrou mais de uma configuracao candidata para \"${block.formBlockId}\". A primeira correspondencia valida foi aplicada de forma deterministica.`,\n scopeKind: 'block',\n path: `journey:${journey.journeyId}:${step.stepId}:${block.blockId}`,\n journeyId: journey.journeyId,\n stepId: step.stepId,\n blockId: block.blockId,\n });\n }\n\n if (dataBlock.dataCollectionState.readiness === 'missingConfig') {\n diagnostics.push({\n code: 'data-collection-config-missing',\n severity: 'error',\n message: `Bloco dataCollection \"${block.blockId}\" nao possui FormConfig resolvido para \"${block.formBlockId}\".`,\n scopeKind: 'block',\n path: `journey:${journey.journeyId}:${step.stepId}:${block.blockId}`,\n journeyId: journey.journeyId,\n stepId: step.stepId,\n blockId: block.blockId,\n });\n continue;\n }\n\n if (dataBlock.dataCollectionState.readiness === 'requiresAdapter') {\n diagnostics.push({\n code: 'data-collection-adapter-missing',\n severity: 'warning',\n message: `Bloco dataCollection \"${block.blockId}\" depende de adaptador opcional para materializar \"${block.formBlockId}\".`,\n scopeKind: 'block',\n path: `journey:${journey.journeyId}:${step.stepId}:${block.blockId}`,\n journeyId: journey.journeyId,\n stepId: step.stepId,\n blockId: block.blockId,\n });\n continue;\n }\n\n if (dataBlock.dataCollectionState.readiness === 'invalid') {\n diagnostics.push({\n code: 'data-collection-invalid',\n severity: 'error',\n message: `Bloco dataCollection \"${block.blockId}\" possui materializacao invalida para \"${block.formBlockId}\".`,\n scopeKind: 'block',\n path: `journey:${journey.journeyId}:${step.stepId}:${block.blockId}`,\n journeyId: journey.journeyId,\n stepId: step.stepId,\n blockId: block.blockId,\n });\n }\n }\n }\n }\n}\n\nfunction annotateDiagnostics(\n journeys: EditorialResolvedJourney[],\n diagnostics: EditorialRuntimeDiagnostic[],\n): void {\n for (const diagnostic of diagnostics) {\n const journey = diagnostic.journeyId\n ? journeys.find((item) => item.journeyId === diagnostic.journeyId)\n : undefined;\n const step = diagnostic.stepId\n ? journey?.steps.find((item) => item.stepId === diagnostic.stepId)\n : undefined;\n const block = diagnostic.blockId\n ? step?.blocks.find((item) => item.blockId === diagnostic.blockId)\n : undefined;\n\n if (!diagnostic.scopeKind) {\n diagnostic.scopeKind = block\n ? 'block'\n : step\n ? 'step'\n : journey\n ? 'journey'\n : 'global';\n }\n\n if (journey) {\n diagnostic.journeyLabel = journey.label;\n }\n if (step) {\n diagnostic.stepLabel = step.label;\n }\n if (block) {\n diagnostic.blockLabel = block.title ?? block.subtitle ?? block.blockId;\n }\n }\n}\n\nfunction dedupeTrail(\n trail: EditorialResolvedBlockCompositionEntry[],\n): EditorialResolvedBlockCompositionEntry[] {\n const seen = new Set<string>();\n const deduped: EditorialResolvedBlockCompositionEntry[] = [];\n\n for (const entry of trail) {\n const key = `${entry.operation}:${entry.source.kind}:${entry.source.sourceId}:${entry.source.journeyId ?? ''}:${entry.source.stepId ?? ''}:${entry.source.blockId ?? ''}`;\n if (seen.has(key)) {\n continue;\n }\n seen.add(key);\n deduped.push(entry);\n }\n\n return deduped;\n}\n\nfunction buildDataCollectionState(\n block: EditorialDataCollectionBlock,\n instance: EditorialTemplateInstance | null,\n): EditorialResolvedDataCollectionState {\n const resolution = resolveEditorialDataBlockFormConfigDetails(block, instance);\n const hasInlineFormConfig = Boolean(block.formConfig);\n const hasResolvedFormConfig = Boolean(resolution.formConfig);\n\n let readiness: EditorialResolvedDataCollectionState['readiness'];\n if (!block.formBlockId) {\n readiness = 'invalid';\n } else if (!hasResolvedFormConfig) {\n readiness = 'missingConfig';\n } else {\n readiness = 'requiresAdapter';\n }\n\n return {\n formBlockId: block.formBlockId,\n formConfigRef: block.formConfigRef,\n hasInlineFormConfig,\n resolvedFormConfigSource: resolution.source,\n resolvedFormConfigLookupKey: resolution.lookupKey,\n hasResolvedFormConfig,\n expectedAdapter: 'required',\n readiness,\n };\n}\n\nfunction createSourceRef(\n kind: EditorialResolvedBlockSourceRef['kind'],\n details: Omit<EditorialResolvedBlockSourceRef, 'kind' | 'sourceId'>,\n): EditorialResolvedBlockSourceRef {\n const sourceId = [\n kind,\n details.solutionId,\n details.presetId,\n details.instanceId,\n details.journeyId,\n details.stepId,\n details.blockId,\n ]\n .filter((value): value is string => Boolean(value))\n .join(':');\n\n return {\n kind,\n sourceId: sourceId || kind,\n ...details,\n };\n}\n\nfunction mergeContext(\n ...sources: Array<Record<string, unknown>>\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const source of sources) {\n mergeContextInto(result, source);\n }\n return result;\n}\n\nfunction mergeContextInto(\n target: Record<string, unknown>,\n source: Record<string, unknown>,\n): void {\n for (const [key, value] of Object.entries(source)) {\n if (isPlainObject(value) && isPlainObject(target[key])) {\n mergeContextInto(\n target[key] as Record<string, unknown>,\n value,\n );\n continue;\n }\n\n if (isPlainObject(value)) {\n target[key] = clonePlainObject(value);\n continue;\n }\n\n target[key] = value;\n }\n}\n\nfunction clonePlainObject(value: Record<string, unknown>): Record<string, unknown> {\n const target: Record<string, unknown> = {};\n mergeContextInto(target, value);\n return target;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n","import { computed, signal } from '@angular/core';\nimport type {\n EditorialSolutionDefinition,\n EditorialTemplateInstance,\n} from '@praxisui/core';\nimport {\n resolveActiveJourney,\n resolveActiveStep,\n} from './editorial-runtime.helpers';\nimport { resolveEditorialRuntimeSnapshot } from './editorial-preset-resolver';\nimport type {\n EditorialResolvedJourney,\n EditorialResolvedStep,\n EditorialRuntimeSnapshot,\n} from './editorial-runtime-snapshot.model';\n\nexport class EditorialRuntimeState {\n private readonly journeyId = signal<string | null>(null);\n private readonly stepId = signal<string | null>(null);\n\n readonly activeJourneyId = this.journeyId.asReadonly();\n readonly activeStepId = this.stepId.asReadonly();\n\n connect(\n solution: () => EditorialSolutionDefinition | null,\n instance: () => EditorialTemplateInstance | null,\n runtimeContext: () => Record<string, unknown> | null,\n ): {\n snapshot: () => EditorialRuntimeSnapshot;\n journeys: () => EditorialResolvedJourney[];\n activeJourney: () => EditorialResolvedJourney | null;\n activeStep: () => EditorialResolvedStep | null;\n } {\n const snapshot = computed(() =>\n resolveEditorialRuntimeSnapshot({\n solution: solution(),\n instance: instance(),\n runtimeContext: runtimeContext(),\n }),\n );\n const journeys = computed(() => snapshot().journeys);\n const activeJourney = computed(() =>\n resolveActiveJourney(journeys(), this.journeyId()),\n );\n const activeStep = computed(() =>\n resolveActiveStep(activeJourney(), this.stepId()),\n );\n return {\n snapshot,\n journeys,\n activeJourney,\n activeStep,\n };\n }\n\n selectJourney(journeyId: string): void {\n this.journeyId.set(journeyId);\n this.stepId.set(null);\n }\n\n selectStep(stepId: string): void {\n this.stepId.set(stepId);\n }\n}\n","import type { EditorialRuntimeDiagnostic } from './editorial-runtime-diagnostics.model';\nimport type { EditorialRuntimeSnapshot } from './editorial-runtime-snapshot.model';\n\nexport type EditorialRuntimeFallbackMode =\n | 'normal'\n | 'warning'\n | 'degraded'\n | 'blocked';\n\nexport interface EditorialRuntimeFallbackState {\n mode: EditorialRuntimeFallbackMode;\n progressionBlocked: boolean;\n hasGlobalErrors: boolean;\n hasActiveStepErrors: boolean;\n hasWarnings: boolean;\n requiresEngineAttention: boolean;\n diagnostics: EditorialRuntimeDiagnostic[];\n blockingDiagnostics: EditorialRuntimeDiagnostic[];\n}\n\nexport interface EditorialRuntimeFallbackScope {\n journeyId?: string | null;\n stepId?: string | null;\n}\n\nexport function deriveRuntimeFallbackState(\n snapshot: EditorialRuntimeSnapshot,\n scope: EditorialRuntimeFallbackScope = {},\n): EditorialRuntimeFallbackState {\n const diagnostics = snapshot.diagnostics.items;\n const blockingDiagnostics = diagnostics.filter((item) => {\n if (item.severity !== 'error') {\n return false;\n }\n\n if (item.scopeKind === 'global') {\n return true;\n }\n\n return item.journeyId === scope.journeyId && item.stepId === scope.stepId;\n });\n const hasGlobalErrors = diagnostics.some(\n (item) => item.severity === 'error' && item.scopeKind === 'global',\n );\n const hasActiveStepErrors = diagnostics.some(\n (item) =>\n item.severity === 'error'\n && item.scopeKind !== 'global'\n && item.journeyId === scope.journeyId\n && item.stepId === scope.stepId,\n );\n const hasAnyErrors = diagnostics.some((item) => item.severity === 'error');\n const hasWarnings = diagnostics.some((item) => item.severity === 'warning');\n const requiresEngineAttention = diagnostics.some((item) =>\n item.code === 'data-collection-adapter-missing',\n );\n\n let mode: EditorialRuntimeFallbackMode = 'normal';\n if (blockingDiagnostics.length) {\n mode = 'blocked';\n } else if (hasAnyErrors || requiresEngineAttention) {\n mode = 'degraded';\n } else if (hasWarnings) {\n mode = 'warning';\n }\n\n return {\n mode,\n progressionBlocked: blockingDiagnostics.length > 0,\n hasGlobalErrors,\n hasActiveStepErrors,\n hasWarnings,\n requiresEngineAttention,\n diagnostics,\n blockingDiagnostics,\n };\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport type {\n EditorialSolutionDefinition,\n EditorialTemplateInstance,\n} from '@praxisui/core';\nimport {\n DEFAULT_EDITORIAL_RUNTIME_HOST_CONFIG,\n type EditorialRuntimeHostConfig,\n} from './editorial-runtime.contract';\nimport { EditorialBlockRendererComponent } from './renderers/editorial-block-renderer.component';\nimport { EditorialRuntimeState } from './runtime/editorial-runtime-state';\nimport { getVisibleBlocks } from './runtime/editorial-runtime.helpers';\nimport type {\n EditorialResolvedJourney,\n EditorialRuntimeSnapshot,\n} from './runtime/editorial-runtime-snapshot.model';\nimport type { EditorialRuntimeDiagnostic } from './runtime/editorial-runtime-diagnostics.model';\nimport type { EditorialRuntimeOperationalEvent } from './runtime/editorial-runtime-events.model';\nimport {\n deriveRuntimeFallbackState,\n type EditorialRuntimeFallbackState,\n} from './runtime/editorial-runtime-fallback';\n\n@Component({\n selector: 'praxis-editorial-form-runtime',\n standalone: true,\n imports: [CommonModule, EditorialBlockRendererComponent],\n template: `\n <section class=\"editorial-runtime\">\n @if (runtimeDiagnostics().items.length) {\n <section\n class=\"diagnostics-panel\"\n [class.error]=\"runtimeDiagnostics().hasErrors\"\n [class.warning]=\"runtimeDiagnostics().hasWarnings\"\n [attr.role]=\"runtimeDiagnostics().hasErrors ? 'alert' : 'status'\"\n [attr.aria-live]=\"runtimeDiagnostics().hasErrors ? 'assertive' : 'polite'\"\n aria-atomic=\"true\"\n >\n <h2>Diagnosticos do runtime</h2>\n <p>{{ diagnosticsMessage() }}</p>\n <div class=\"diagnostics-summary\" aria-label=\"Resumo de severidade\">\n <span class=\"summary-pill error\">Erros: {{ diagnosticsErrorCount() }}</span>\n <span class=\"summary-pill warning\">Avisos: {{ diagnosticsWarningCount() }}</span>\n <span class=\"summary-pill info\">Infos: {{ diagnosticsInfoCount() }}</span>\n </div>\n <details class=\"diagnostics-details\">\n <summary>Ver detalhes ({{ diagnosticItems().length }})</summary>\n @if (globalDiagnostics().length) {\n <section class=\"diagnostic-group global\" aria-label=\"Erros globais do runtime\">\n <h3>Erros globais do runtime</h3>\n <ul class=\"diagnostics-list\">\n @for (item of globalDiagnostics(); track item.code + ':' + (item.path ?? $index)) {\n <li>\n <strong>{{ formatDiagnosticSeverity(item) }}:</strong>\n {{ item.message }}\n @if (formatDiagnosticScope(item); as scope) {\n <span class=\"diagnostic-location\">{{ scope }}</span>\n }\n </li>\n }\n </ul>\n </section>\n }\n <ul class=\"diagnostics-list\">\n @for (item of contextualDiagnostics(); track item.code + ':' + (item.path ?? $index)) {\n <li>\n <strong>{{ formatDiagnosticSeverity(item) }}:</strong>\n {{ item.message }}\n @if (formatDiagnosticScope(item); as scope) {\n <span class=\"diagnostic-location\">{{ scope }}</span>\n }\n </li>\n }\n </ul>\n </details>\n </section>\n }\n\n @if (runtimeTitle(); as title) {\n <header class=\"runtime-header\">\n <span class=\"runtime-state-pill\" [attr.data-mode]=\"fallbackState().mode\">\n {{ fallbackLabel() }}\n </span>\n @if (runtimeEyebrow()) {\n <p class=\"eyebrow\">{{ runtimeEyebrow() }}</p>\n }\n <h1>{{ title }}</h1>\n @if (runtimeDescription()) {\n <p class=\"description\">{{ runtimeDescription() }}</p>\n }\n </header>\n\n @if (journeys().length > 1) {\n <nav class=\"journey-tabs\" aria-label=\"Jornadas editoriais\">\n @for (journey of journeys(); track journey.journeyId) {\n <button\n type=\"button\"\n class=\"journey-tab\"\n [class.active]=\"activeJourney()?.journeyId === journey.journeyId\"\n [disabled]=\"isJourneySelectionBlocked(journey.journeyId)\"\n [attr.aria-describedby]=\"isJourneySelectionBlocked(journey.journeyId) ? 'navigation-blocking-note' : null\"\n (click)=\"selectJourney(journey.journeyId)\"\n >\n {{ journey.label }}\n @if (journeyErrorCount(journey.journeyId)) {\n <span class=\"status-badge error\" aria-label=\"Jornada com erros\">\n {{ journeyErrorCount(journey.journeyId) }}\n </span>\n } @else if (journeyWarningCount(journey.journeyId)) {\n <span class=\"status-badge warning\" aria-label=\"Jornada com avisos\">\n {{ journeyWarningCount(journey.journeyId) }}\n </span>\n }\n </button>\n }\n </nav>\n }\n\n @if (activeJourney(); as journey) {\n <section class=\"journey-card\">\n <header class=\"journey-header\">\n <h2>{{ journey.label }}</h2>\n @if (journey.description) {\n <p>{{ journey.description }}</p>\n }\n </header>\n\n @if (journey.steps.length > 1) {\n <ol class=\"steps-nav\" aria-label=\"Etapas da jornada\">\n @for (step of journey.steps; track step.stepId) {\n <li>\n <button\n type=\"button\"\n class=\"step-chip\"\n [class.active]=\"activeStep()?.stepId === step.stepId\"\n [disabled]=\"isStepSelectionBlocked(step.stepId)\"\n [attr.aria-describedby]=\"isStepSelectionBlocked(step.stepId) ? 'navigation-blocking-note' : null\"\n (click)=\"selectStep(step.stepId)\"\n >\n {{ step.label }}\n @if (stepErrorCount(step.stepId)) {\n <span class=\"status-badge error\" aria-label=\"Etapa com erros\">\n {{ stepErrorCount(step.stepId) }}\n </span>\n } @else if (stepWarningCount(step.stepId)) {\n <span class=\"status-badge warning\" aria-label=\"Etapa com avisos\">\n {{ stepWarningCount(step.stepId) }}\n </span>\n }\n </button>\n </li>\n }\n </ol>\n }\n\n @if (activeStep(); as step) {\n <section\n class=\"step-panel\"\n [class.error]=\"activeStepHasErrors() || activeGlobalDiagnostics().length\"\n [class.warning]=\"!activeStepHasErrors() && !activeGlobalDiagnostics().length && activeStepHasWarnings()\"\n >\n <header class=\"step-header\">\n <div>\n <h3>{{ step.label }}</h3>\n @if (step.description) {\n <p>{{ step.description }}</p>\n }\n </div>\n <div class=\"step-counter\">\n Etapa {{ currentStepIndex() + 1 }} de {{ journey.steps.length }}\n </div>\n </header>\n\n @if (activeStepDiagnostics().length) {\n <section\n class=\"step-diagnostics\"\n [class.error]=\"activeStepHasErrors()\"\n [class.warning]=\"!activeStepHasErrors() && activeStepHasWarnings()\"\n [attr.role]=\"activeStepHasErrors() ? 'alert' : 'status'\"\n [attr.aria-live]=\"activeStepHasErrors() ? 'assertive' : 'polite'\"\n aria-atomic=\"true\"\n >\n <h4>Situacao desta etapa</h4>\n <ul class=\"diagnostics-list contextual\">\n @for (item of activeStepDiagnostics(); track item.code + ':' + (item.path ?? $index)) {\n <li>\n <strong>{{ formatDiagnosticSeverity(item) }}:</strong>\n {{ item.message }}\n @if (formatDiagnosticScope(item); as scope) {\n <span class=\"diagnostic-location\">{{ scope }}</span>\n }\n </li>\n }\n </ul>\n </section>\n }\n\n @if (activeGlobalDiagnostics().length) {\n <section\n class=\"step-diagnostics global\"\n role=\"alert\"\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n >\n <h4>Erro global do runtime</h4>\n <ul class=\"diagnostics-list contextual\">\n @for (item of activeGlobalDiagnostics(); track item.code + ':' + (item.path ?? $index)) {\n <li>\n <strong>{{ formatDiagnosticSeverity(item) }}:</strong>\n {{ item.message }}\n @if (formatDiagnosticScope(item); as scope) {\n <span class=\"diagnostic-location\">{{ scope }}</span>\n }\n </li>\n }\n </ul>\n </section>\n }\n\n <div class=\"block-stack\">\n @for (block of visibleBlocks(); track block.blockId) {\n <praxis-editorial-block-renderer\n [block]=\"block\"\n [runtimeContext]=\"resolvedContext()\"\n [solution]=\"solution()\"\n [instance]=\"instance()\"\n (operationalEvent)=\"emitOperationalEvent($event)\"\n />\n }\n </div>\n\n @if (journey.steps.length > 1) {\n <footer class=\"step-actions\">\n <button type=\"button\" (click)=\"goToPreviousStep()\" [disabled]=\"!hasPreviousStep()\">\n Etapa anterior\n </button>\n <button\n type=\"button\"\n (click)=\"goToNextStep()\"\n [disabled]=\"!hasNextStep() || isForwardNavigationBlocked()\"\n [attr.aria-describedby]=\"isForwardNavigationBlocked() ? 'navigation-blocking-note' : null\"\n >\n {{ isForwardNavigationBlocked() ? 'Corrija os erros para avancar' : 'Proxima etapa' }}\n </button>\n </footer>\n @if (isForwardNavigationBlocked()) {\n <p id=\"navigation-blocking-note\" class=\"step-blocking-note\">\n {{ navigationBlockingMessage() }}\n </p>\n }\n }\n </section>\n }\n </section>\n } @else {\n <section class=\"empty-state\">\n <h2>Editorial runtime sem jornada</h2>\n <p>Nenhuma jornada editorial foi resolvida para o estado atual.</p>\n </section>\n }\n } @else {\n <section class=\"empty-state\">\n <h2>Editorial runtime vazio</h2>\n <p>Forneca uma solution ou instance editorial para materializar a jornada.</p>\n </section>\n }\n </section>\n `,\n styles: [`\n :host {\n display: block;\n }\n\n .editorial-runtime {\n display: grid;\n gap: 24px;\n padding: 24px;\n color: var(--md-sys-color-on-surface, #1b1b1f);\n background: var(--md-sys-color-surface, #fdf8fd);\n }\n\n .runtime-header,\n .journey-card,\n .empty-state,\n .diagnostics-panel {\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline-variant, #cac4d0) 70%, transparent);\n border-radius: 20px;\n background: var(--md-sys-color-surface-container-low, #f7f2fa);\n padding: 20px;\n }\n\n .diagnostics-panel {\n display: grid;\n gap: 10px;\n }\n\n .diagnostics-panel.warning {\n border-color: color-mix(in srgb, #b26a00 55%, var(--md-sys-color-outline-variant, #cac4d0));\n background: color-mix(in srgb, #fff4de 78%, var(--md-sys-color-surface-container-low, #f7f2fa));\n }\n\n .diagnostics-panel.error {\n border-color: color-mix(in srgb, #b3261e 60%, var(--md-sys-color-outline-variant, #cac4d0));\n background: color-mix(in srgb, #fde7e9 78%, var(--md-sys-color-surface-container-low, #f7f2fa));\n }\n\n .diagnostics-list {\n margin: 0;\n padding-left: 18px;\n display: grid;\n gap: 8px;\n }\n\n .diagnostics-summary {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n }\n\n .summary-pill {\n display: inline-flex;\n align-items: center;\n min-height: 32px;\n padding: 6px 10px;\n border-radius: 999px;\n font-size: 0.85rem;\n border: 1px solid transparent;\n background: color-mix(in srgb, var(--md-sys-color-surface, #fff) 85%, transparent);\n }\n\n .summary-pill.error {\n border-color: color-mix(in srgb, #b3261e 45%, transparent);\n }\n\n .summary-pill.warning {\n border-color: color-mix(in srgb, #b26a00 45%, transparent);\n }\n\n .summary-pill.info {\n border-color: color-mix(in srgb, #00639b 45%, transparent);\n }\n\n .status-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 22px;\n min-height: 22px;\n padding: 0 6px;\n border-radius: 999px;\n font-size: 0.75rem;\n font-weight: 700;\n background: var(--md-sys-color-surface, #fff);\n }\n\n .status-badge.error {\n color: #8c1d18;\n background: #fde7e9;\n }\n\n .status-badge.warning {\n color: #7a4b00;\n background: #fff4de;\n }\n\n .diagnostics-details summary {\n cursor: pointer;\n font-weight: 600;\n }\n\n .diagnostic-group {\n display: grid;\n gap: 8px;\n padding: 12px 0;\n }\n\n .diagnostic-group.global {\n border-bottom: 1px solid color-mix(in srgb, var(--md-sys-color-outline-variant, #cac4d0) 65%, transparent);\n margin-bottom: 12px;\n }\n\n .step-panel.error {\n border-left: 4px solid #b3261e;\n }\n\n .step-panel.warning {\n border-left: 4px solid #b26a00;\n }\n\n .step-diagnostics {\n display: grid;\n gap: 8px;\n padding: 14px 16px;\n border-radius: 16px;\n }\n\n .step-diagnostics.error {\n background: #fde7e9;\n color: #5b1210;\n }\n\n .step-diagnostics.warning {\n background: #fff4de;\n color: #6b4300;\n }\n\n .step-diagnostics.global {\n background: #fde7e9;\n color: #5b1210;\n border: 1px solid color-mix(in srgb, #b3261e 35%, transparent);\n }\n\n .diagnostics-list.contextual {\n padding-left: 16px;\n }\n\n .diagnostic-location {\n display: block;\n margin-top: 4px;\n font-size: 0.82rem;\n opacity: 0.85;\n }\n\n .step-blocking-note {\n font-size: 0.9rem;\n color: #8c1d18;\n }\n\n .eyebrow {\n margin: 0 0 8px;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n font-size: 0.75rem;\n color: var(--md-sys-color-primary, #6750a4);\n font-weight: 700;\n }\n\n .runtime-state-pill {\n justify-self: start;\n display: inline-flex;\n align-items: center;\n min-height: 30px;\n padding: 4px 10px;\n border-radius: 999px;\n font-size: 0.8rem;\n font-weight: 700;\n background: color-mix(in srgb, var(--md-sys-color-surface, #fff) 88%, transparent);\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline-variant, #cac4d0) 70%, transparent);\n }\n\n .runtime-state-pill[data-mode='warning'] {\n color: #7a4b00;\n background: #fff4de;\n }\n\n .runtime-state-pill[data-mode='degraded'] {\n color: #8c1d18;\n background: #fde7e9;\n }\n\n .runtime-state-pill[data-mode='blocked'] {\n color: #8c1d18;\n background: #fde7e9;\n border-color: color-mix(in srgb, #b3261e 55%, transparent);\n }\n\n h1,\n h2,\n h3,\n p {\n margin: 0;\n }\n\n .runtime-header,\n .journey-card,\n .journey-header,\n .step-panel {\n display: grid;\n gap: 12px;\n }\n\n .description,\n .journey-header p,\n .step-header p,\n .step-counter,\n .empty-state p {\n color: var(--md-sys-color-on-surface-variant, #49454f);\n }\n\n .journey-tabs,\n .steps-nav,\n .step-actions {\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n align-items: center;\n }\n\n .steps-nav {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n\n .journey-tab,\n .step-chip,\n .step-actions button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-height: 42px;\n padding: 10px 12px;\n border-radius: 999px;\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline-variant, #cac4d0) 75%, transparent);\n background: var(--md-sys-color-surface, #fff);\n color: inherit;\n cursor: pointer;\n }\n\n .journey-tab.active,\n .step-chip.active {\n background: var(--md-sys-color-primary, #6750a4);\n color: var(--md-sys-color-on-primary, #fff);\n }\n\n .step-header {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n align-items: center;\n justify-content: space-between;\n }\n\n .block-stack {\n display: grid;\n gap: 16px;\n }\n\n .step-actions button[disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorialFormRuntimeComponent {\n readonly solution = input<EditorialSolutionDefinition | null>(null);\n readonly instance = input<EditorialTemplateInstance | null>(null);\n readonly runtimeContext = input<Record<string, unknown> | null>(null);\n readonly hostConfig = input<EditorialRuntimeHostConfig | null>(null);\n readonly snapshotChange = output<EditorialRuntimeSnapshot>();\n readonly fallbackChange = output<EditorialRuntimeFallbackState>();\n readonly operationalEvent = output<EditorialRuntimeOperationalEvent>();\n\n private readonly state = new EditorialRuntimeState();\n private readonly solutionState = signal<EditorialSolutionDefinition | null>(null);\n private readonly instanceState = signal<EditorialTemplateInstance | null>(null);\n private lastSnapshotSignature: string | null = null;\n private lastDiagnosticsSignature: string | null = null;\n private lastFallbackSignature: string | null = null;\n private lastBlockingSignature: string | null = null;\n private lastOverrideConflictSignature: string | null = null;\n private readonly runtime = this.state.connect(\n this.solutionState,\n this.instanceState,\n this.runtimeContext,\n );\n\n protected readonly snapshot = computed(() => this.runtime.snapshot());\n protected readonly resolvedHostConfig = computed(() => ({\n ...DEFAULT_EDITORIAL_RUNTIME_HOST_CONFIG,\n ...(this.hostConfig() ?? {}),\n }));\n protected readonly journeys = computed<EditorialResolvedJourney[]>(() => this.runtime.journeys());\n protected readonly activeJourney = computed(() => this.runtime.activeJourney());\n protected readonly activeStep = computed(() => this.runtime.activeStep());\n protected readonly resolvedContext = computed(() => this.snapshot().context);\n protected readonly runtimeDiagnostics = computed(() => this.snapshot().diagnostics);\n protected readonly fallbackState = computed(() =>\n deriveRuntimeFallbackState(this.snapshot(), {\n journeyId: this.activeJourney()?.journeyId,\n stepId: this.activeStep()?.stepId,\n }),\n );\n protected readonly diagnosticItems = computed(() =>\n sortDiagnostics(dedupeDiagnostics(this.runtimeDiagnostics().items)),\n );\n protected readonly globalDiagnostics = computed(() =>\n this.diagnosticItems().filter((item) => item.scopeKind === 'global'),\n );\n protected readonly contextualDiagnostics = computed(() =>\n this.diagnosticItems().filter((item) => item.scopeKind !== 'global'),\n );\n protected readonly diagnosticsErrorCount = computed(() =>\n this.diagnosticItems().filter((item) => item.severity === 'error').length,\n );\n protected readonly diagnosticsWarningCount = computed(() =>\n this.diagnosticItems().filter((item) => item.severity === 'warning').length,\n );\n protected readonly diagnosticsInfoCount = computed(() =>\n this.diagnosticItems().filter((item) => item.severity === 'info').length,\n );\n protected readonly activeStepDiagnostics = computed(() =>\n this.diagnosticItems().filter((item) => isDiagnosticInActiveStep(item, this.activeJourney()?.journeyId, this.activeStep()?.stepId)),\n );\n protected readonly activeStepHasErrors = computed(() =>\n this.activeStepDiagnostics().some((item) => item.severity === 'error'),\n );\n protected readonly activeStepHasWarnings = computed(() =>\n this.activeStepDiagnostics().some((item) => item.severity === 'warning'),\n );\n protected readonly diagnosticsMessage = computed(() =>\n this.fallbackState().mode === 'blocked'\n ? 'Existem inconsistencias bloqueadoras que impedem a progressao segura do fluxo editorial.'\n : this.fallbackState().mode === 'degraded'\n ? 'O runtime esta operando de forma degradada e requer atencao operacional.'\n : this.runtimeDiagnostics().hasErrors\n ? 'Existem inconsistencias que podem comprometer a experiencia editorial.'\n : 'Existem avisos operacionais para revisar nesta instancia editorial.',\n );\n protected readonly activeGlobalDiagnostics = computed(() =>\n this.globalDiagnostics().filter((item) => item.severity === 'error'),\n );\n protected readonly visibleBlocks = computed(() =>\n getVisibleBlocks(this.activeStep()?.blocks, this.resolvedContext()),\n );\n protected readonly runtimeTitle = computed(() =>\n this.snapshot().title,\n );\n protected readonly runtimeDescription = computed(() =>\n this.snapshot().description,\n );\n protected readonly runtimeEyebrow = computed(() =>\n this.snapshot().problemType,\n );\n protected readonly fallbackLabel = computed(() => {\n if (this.fallbackState().mode === 'blocked') {\n return 'Runtime bloqueado';\n }\n if (this.fallbackState().mode === 'degraded') {\n return 'Runtime degradado';\n }\n if (this.fallbackState().mode === 'warning') {\n return 'Runtime com aviso';\n }\n return 'Runtime saudavel';\n });\n protected readonly currentStepIndex = computed(() => {\n const journey = this.activeJourney();\n const step = this.activeStep();\n if (!journey || !step) {\n return 0;\n }\n return Math.max(\n 0,\n journey.steps.findIndex((candidate) => candidate.stepId === step.stepId),\n );\n });\n protected readonly hasPreviousStep = computed(() => this.currentStepIndex() > 0);\n protected readonly hasNextStep = computed(() => {\n const journey = this.activeJourney();\n return !!journey && this.currentStepIndex() < journey.steps.length - 1;\n });\n\n constructor() {\n effect(() => {\n this.solutionState.set(this.solution());\n this.instanceState.set(this.instance());\n });\n\n effect(() => {\n const snapshot = this.snapshot();\n const snapshotSignature = buildSnapshotSignature(snapshot);\n if (snapshotSignature !== this.lastSnapshotSignature) {\n this.lastSnapshotSignature = snapshotSignature;\n this.snapshotChange.emit(snapshot);\n }\n });\n\n effect(() => {\n const fallback = this.fallbackState();\n const signature = `${fallback.mode}:${fallback.progressionBlocked}:${fallback.requiresEngineAttention}:${fallback.blockingDiagnostics.map((item) => item.path ?? item.message).join('|')}`;\n if (signature !== this.lastFallbackSignature) {\n this.lastFallbackSignature = signature;\n this.fallbackChange.emit(fallback);\n this.emitOperationalEvent({\n eventType: 'fallback-changed',\n timestamp: Date.now(),\n severity: fallback.mode === 'blocked'\n ? 'error'\n : fallback.mode === 'degraded'\n ? 'warning'\n : 'info',\n journeyId: this.activeJourney()?.journeyId ?? undefined,\n stepId: this.activeStep()?.stepId ?? undefined,\n payload: {\n fallback,\n },\n });\n }\n\n if (!fallback.blockingDiagnostics.length) {\n return;\n }\n\n const blockingSignature = fallback.blockingDiagnostics\n .map((item) => item.path ?? item.message)\n .join('|');\n if (blockingSignature === this.lastBlockingSignature) {\n return;\n }\n this.lastBlockingSignature = blockingSignature;\n this.emitOperationalEvent({\n eventType: 'blocking-error-detected',\n timestamp: Date.now(),\n severity: 'error',\n journeyId: this.activeJourney()?.journeyId ?? undefined,\n stepId: this.activeStep()?.stepId ?? undefined,\n payload: {\n diagnostics: fallback.blockingDiagnostics,\n scope: fallback.hasGlobalErrors ? 'global' : 'step',\n },\n });\n });\n\n effect(() => {\n const diagnostics = this.diagnosticItems();\n const signature = diagnostics\n .map((item) => `${item.severity}:${item.code}:${item.path ?? ''}`)\n .join('|');\n if (signature === this.lastDiagnosticsSignature) {\n return;\n }\n this.lastDiagnosticsSignature = signature;\n\n const errorCount = diagnostics.filter((item) => item.severity === 'error').length;\n const warningCount = diagnostics.filter((item) => item.severity === 'warning').length;\n const infoCount = diagnostics.filter((item) => item.severity === 'info').length;\n this.emitOperationalEvent({\n eventType: 'diagnostics-emitted',\n timestamp: Date.now(),\n severity: errorCount ? 'error' : warningCount ? 'warning' : 'info',\n journeyId: this.activeJourney()?.journeyId ?? undefined,\n stepId: this.activeStep()?.stepId ?? undefined,\n payload: {\n diagnostics,\n errorCount,\n warningCount,\n infoCount,\n },\n });\n\n const overrideConflictDiagnostics = diagnostics.filter(\n (item) => item.code === 'block-override-conflict',\n );\n const overrideSignature = overrideConflictDiagnostics\n .map((item) => item.path ?? item.message)\n .join('|');\n if (overrideConflictDiagnostics.length && overrideSignature !== this.lastOverrideConflictSignature) {\n this.lastOverrideConflictSignature = overrideSignature;\n this.emitOperationalEvent({\n eventType: 'override-conflict-detected',\n timestamp: Date.now(),\n severity: 'warning',\n journeyId: overrideConflictDiagnostics[0]?.journeyId,\n stepId: overrideConflictDiagnostics[0]?.stepId,\n blockId: overrideConflictDiagnostics[0]?.blockId,\n payload: {\n diagnostics: overrideConflictDiagnostics,\n },\n });\n }\n });\n }\n\n protected selectJourney(journeyId: string): void {\n if (this.isJourneySelectionBlocked(journeyId)) {\n return;\n }\n this.state.selectJourney(journeyId);\n }\n\n protected selectStep(stepId: string): void {\n if (this.isStepSelectionBlocked(stepId)) {\n return;\n }\n this.state.selectStep(stepId);\n }\n\n protected goToPreviousStep(): void {\n const journey = this.activeJourney();\n if (!journey || !this.hasPreviousStep()) {\n return;\n }\n const previous = journey.steps[this.currentStepIndex() - 1];\n if (previous) {\n this.state.selectStep(previous.stepId);\n }\n }\n\n protected goToNextStep(): void {\n const journey = this.activeJourney();\n if (!journey || !this.hasNextStep() || this.isForwardNavigationBlocked()) {\n return;\n }\n const next = journey.steps[this.currentStepIndex() + 1];\n if (next) {\n this.state.selectStep(next.stepId);\n }\n }\n\n protected journeyErrorCount(journeyId: string): number {\n return this.countDiagnostics((item) => item.journeyId === journeyId && item.severity === 'error');\n }\n\n protected journeyWarningCount(journeyId: string): number {\n return this.countDiagnostics((item) => item.journeyId === journeyId && item.severity === 'warning');\n }\n\n protected stepErrorCount(stepId: string): number {\n return this.countDiagnostics(\n (item) => item.journeyId === this.activeJourney()?.journeyId && item.stepId === stepId && item.severity === 'error',\n );\n }\n\n protected stepWarningCount(stepId: string): number {\n return this.countDiagnostics(\n (item) => item.journeyId === this.activeJourney()?.journeyId && item.stepId === stepId && item.severity === 'warning',\n );\n }\n\n protected formatDiagnosticSeverity(item: EditorialRuntimeDiagnostic): string {\n if (item.severity === 'error') {\n return 'Erro';\n }\n if (item.severity === 'warning') {\n return 'Aviso';\n }\n return 'Info';\n }\n\n protected formatDiagnosticScope(item: EditorialRuntimeDiagnostic): string {\n const parts = [\n item.scopeKind === 'global' ? 'Escopo: runtime global' : null,\n formatScopeLabel('Jornada', item.journeyLabel, item.journeyId),\n formatScopeLabel('Etapa', item.stepLabel, item.stepId),\n formatScopeLabel('Bloco', item.blockLabel, item.blockId),\n item.path ? `Path: ${item.path}` : null,\n ].filter((value): value is string => Boolean(value));\n\n return parts.join(' | ');\n }\n\n protected isForwardNavigationBlocked(): boolean {\n return this.fallbackState().progressionBlocked;\n }\n\n protected isJourneySelectionBlocked(journeyId: string): boolean {\n const activeJourneyId = this.activeJourney()?.journeyId;\n if (journeyId === activeJourneyId) {\n return false;\n }\n return this.isForwardNavigationBlocked();\n }\n\n protected isStepSelectionBlocked(stepId: string): boolean {\n const activeStepId = this.activeStep()?.stepId;\n if (stepId === activeStepId) {\n return false;\n }\n return this.isForwardNavigationBlocked();\n }\n\n protected navigationBlockingMessage(): string {\n if (this.activeGlobalDiagnostics().length) {\n return 'A navegacao de avanço foi bloqueada porque o runtime possui erro global que precisa ser corrigido antes de continuar.';\n }\n return 'A navegacao de avanço foi bloqueada porque a etapa atual possui erro estrutural.';\n }\n\n private countDiagnostics(\n predicate: (item: EditorialRuntimeDiagnostic) => boolean,\n ): number {\n return this.diagnosticItems().filter(predicate).length;\n }\n\n protected emitOperationalEvent(event: EditorialRuntimeOperationalEvent): void {\n if (!this.resolvedHostConfig().emitOperationalEvents) {\n return;\n }\n if (\n !this.resolvedHostConfig().forwardAdapterOperationalEvents\n && event.eventType.startsWith('data-collection-adapter-')\n ) {\n return;\n }\n this.operationalEvent.emit(event);\n }\n}\n\nfunction buildSnapshotSignature(snapshot: EditorialRuntimeSnapshot): string {\n return [\n snapshot.solutionId ?? '',\n snapshot.instanceId ?? '',\n snapshot.journeys.length,\n snapshot.diagnostics.items.length,\n snapshot.diagnostics.hasErrors,\n snapshot.diagnostics.hasWarnings,\n ].join(':');\n}\n\nfunction dedupeDiagnostics(\n items: ReadonlyArray<EditorialRuntimeDiagnostic>,\n): EditorialRuntimeDiagnostic[] {\n const seen = new Set<string>();\n const deduped: EditorialRuntimeDiagnostic[] = [];\n\n for (const item of items) {\n const key = `${item.severity}:${item.code}:${item.journeyId ?? ''}:${item.stepId ?? ''}:${item.blockId ?? ''}:${item.path ?? item.message}`;\n if (seen.has(key)) {\n continue;\n }\n seen.add(key);\n deduped.push(item);\n }\n\n return deduped;\n}\n\nfunction sortDiagnostics(\n items: ReadonlyArray<EditorialRuntimeDiagnostic>,\n): EditorialRuntimeDiagnostic[] {\n return [...items].sort((left, right) => {\n const severityScore = getSeverityScore(left.severity) - getSeverityScore(right.severity);\n if (severityScore !== 0) {\n return severityScore;\n }\n\n const scopeScore = getScopeScore(left.scopeKind) - getScopeScore(right.scopeKind);\n if (scopeScore !== 0) {\n return scopeScore;\n }\n\n return `${left.journeyLabel ?? left.journeyId ?? ''}${left.stepLabel ?? left.stepId ?? ''}${left.blockLabel ?? left.blockId ?? ''}${left.path ?? ''}`\n .localeCompare(`${right.journeyLabel ?? right.journeyId ?? ''}${right.stepLabel ?? right.stepId ?? ''}${right.blockLabel ?? right.blockId ?? ''}${right.path ?? ''}`);\n });\n}\n\nfunction getSeverityScore(\n severity: EditorialRuntimeDiagnostic['severity'],\n): number {\n if (severity === 'error') {\n return 0;\n }\n if (severity === 'warning') {\n return 1;\n }\n return 2;\n}\n\nfunction getScopeScore(\n scopeKind: EditorialRuntimeDiagnostic['scopeKind'],\n): number {\n if (scopeKind === 'global') {\n return 0;\n }\n if (scopeKind === 'journey') {\n return 1;\n }\n if (scopeKind === 'step') {\n return 2;\n }\n return 3;\n}\n\nfunction isDiagnosticInActiveStep(\n item: EditorialRuntimeDiagnostic,\n journeyId: string | undefined,\n stepId: string | undefined,\n): boolean {\n if (!journeyId || !stepId) {\n return false;\n }\n return item.journeyId === journeyId && item.stepId === stepId;\n}\n\nfunction formatScopeLabel(\n labelName: string,\n label: string | undefined,\n id: string | undefined,\n): string | null {\n if (label && id && label !== id) {\n return `${labelName}: ${label} (${id})`;\n }\n if (label) {\n return `${labelName}: ${label}`;\n }\n if (id) {\n return `${labelName}: ${id}`;\n }\n return null;\n}\n","import {\n Type,\n reflectComponentType,\n} from '@angular/core';\nimport type { FormConfig } from '@praxisui/core';\nimport type {\n EditorialDataBlockAdapter,\n EditorialDataBlockContext,\n} from '../editorial-data-block-adapter';\nimport { provideEditorialDataBlockAdapter } from '../editorial-data-block-adapter-registry';\n\nconst REQUIRED_DYNAMIC_FORM_INPUTS = ['config', 'formId', 'editorialContext'] as const;\n\nexport interface EditorialDynamicFormAdapterOptions {\n component: Type<DynamicFormCompatibleComponent>;\n}\n\nexport interface DynamicFormCompatibleComponent {\n config: FormConfig;\n formId?: string;\n editorialContext?: Record<string, unknown> | null;\n}\n\ntype DynamicFormAdapterInputBindings = {\n config: FormConfig | null;\n formId?: string;\n editorialContext?: Record<string, unknown> | null;\n};\n\nexport function createEditorialDynamicFormAdapter(\n options: EditorialDynamicFormAdapterOptions,\n): EditorialDataBlockAdapter {\n return {\n adapterId: 'dynamic-form',\n displayName: 'Praxis Dynamic Form',\n\n supports(_context: EditorialDataBlockContext): boolean {\n return true;\n },\n\n resolveComponent(): Type<unknown> {\n return options.component;\n },\n\n buildInputs(context: EditorialDataBlockContext): Record<string, unknown> {\n return {\n config: context.resolvedFormConfig,\n formId: context.block.formBlockId,\n editorialContext: context.runtimeContext,\n } satisfies DynamicFormAdapterInputBindings;\n },\n\n validateComponent(component: Type<unknown>) {\n const mirror = reflectComponentType(component);\n if (!mirror) {\n return {\n ok: false as const,\n reason:\n 'O componente informado nao parece ser um componente Angular valido para o adaptador dynamic-form.',\n };\n }\n\n const availableInputs = new Set(mirror.inputs.map((input) => input.propName));\n const missingInputs = REQUIRED_DYNAMIC_FORM_INPUTS.filter(\n (inputName) => !availableInputs.has(inputName),\n );\n\n if (missingInputs.length) {\n return {\n ok: false as const,\n reason: `O componente informado nao segue a convencao do adapter dynamic-form. Inputs ausentes: ${missingInputs.join(', ')}.`,\n };\n }\n\n return { ok: true as const };\n },\n };\n}\n\nexport function provideEditorialDynamicFormAdapter(\n options: EditorialDynamicFormAdapterOptions,\n){\n return provideEditorialDataBlockAdapter(\n createEditorialDynamicFormAdapter(options),\n );\n}\n","import { Component, Input, Type } from '@angular/core';\nimport type {\n EditorialDataCollectionBlock,\n EditorialSolutionDefinition,\n FormConfig,\n EditorialTemplateInstance,\n} from '@praxisui/core';\nimport type { EditorialRuntimeFallbackMode } from '../runtime/editorial-runtime-fallback';\nimport type { EditorialRuntimeInput } from '../editorial-runtime.contract';\n\n@Component({\n standalone: true,\n selector: 'praxis-editorial-harness-data-engine',\n template: '<p>Harness data engine</p>',\n})\nexport class HarnessDataEngineComponent {\n @Input() config!: FormConfig;\n @Input() formId?: string;\n @Input() editorialContext: Record<string, unknown> | null = null;\n @Input() block: EditorialDataCollectionBlock | null = null;\n @Input() runtimeContext: Record<string, unknown> | null = null;\n @Input() solution: EditorialSolutionDefinition | null = null;\n @Input() instance: EditorialTemplateInstance | null = null;\n @Input() resolvedFormConfig: FormConfig | null = null;\n}\n\nexport interface EditorialRuntimeFixture {\n id: string;\n title: string;\n input: EditorialRuntimeInput;\n expectedFallbackMode: EditorialRuntimeFallbackMode;\n expectsAdapter: boolean;\n}\n\nexport interface EditorialRuntimeHarnessCatalog {\n healthy: EditorialRuntimeFixture;\n warning: EditorialRuntimeFixture;\n globalError: EditorialRuntimeFixture;\n dataCollectionMissingAdapter: EditorialRuntimeFixture;\n dataCollectionWithAdapter: EditorialRuntimeFixture;\n}\n\nexport function createEditorialRuntimeHarnessCatalog(): EditorialRuntimeHarnessCatalog {\n const warningSolution: EditorialSolutionDefinition = {\n solutionId: 'solution-warning',\n version: '1.0.0',\n problemType: 'event-registration',\n title: 'Warning solution',\n themePresets: [\n {\n themeId: 'default-theme',\n label: 'Default',\n shellVariant: 'page',\n },\n ],\n journeys: [\n {\n journeyId: 'journey-warning',\n label: 'Journey Warning',\n steps: [\n {\n stepId: 'step-warning',\n label: 'Step Warning',\n blocks: [\n {\n blockId: 'copy-warning',\n kind: 'richText',\n content: 'Warning content',\n },\n ],\n },\n ],\n },\n ],\n };\n\n const warningInstance: EditorialTemplateInstance = {\n instanceId: 'instance-warning',\n template: {\n templateId: 'solution-warning',\n version: '1.0.0',\n title: 'Warning solution',\n problemType: 'event-registration',\n },\n context: {},\n journeys: [],\n overrides: {\n themePresetId: 'missing-theme',\n },\n };\n\n const healthyInstance: EditorialTemplateInstance = {\n instanceId: 'instance-healthy',\n template: {\n templateId: 'solution-warning',\n version: '1.0.0',\n title: 'Warning solution',\n problemType: 'event-registration',\n },\n context: {},\n journeys: [],\n };\n\n const globalErrorSolution: EditorialSolutionDefinition = {\n solutionId: 'solution-global-error',\n version: '1.0.0',\n problemType: 'event-registration',\n title: 'Global error solution',\n contextContract: [\n {\n key: 'accountContext.user.name',\n required: true,\n },\n ],\n journeys: [\n {\n journeyId: 'journey-global',\n label: 'Journey Global',\n steps: [\n {\n stepId: 'step-global',\n label: 'Step Global',\n blocks: [\n {\n blockId: 'copy-global',\n kind: 'richText',\n content: 'Global error content',\n },\n ],\n },\n ],\n },\n ],\n };\n\n const globalErrorInstance: EditorialTemplateInstance = {\n instanceId: 'instance-global-error',\n template: {\n templateId: 'solution-global-error',\n version: '1.0.0',\n title: 'Global error solution',\n problemType: 'event-registration',\n },\n context: {},\n journeys: [],\n };\n\n const dataCollectionSolution: EditorialSolutionDefinition = {\n solutionId: 'solution-data',\n version: '1.0.0',\n problemType: 'event-registration',\n title: 'Data collection solution',\n journeys: [\n {\n journeyId: 'journey-data',\n label: 'Journey Data',\n steps: [\n {\n stepId: 'step-data',\n label: 'Step Data',\n blocks: [\n {\n blockId: 'collect-data',\n kind: 'dataCollection',\n formBlockId: 'registration-form',\n formConfigRef: 'registration-form',\n },\n ],\n },\n ],\n },\n ],\n };\n\n const dataCollectionInstance: EditorialTemplateInstance = {\n instanceId: 'instance-data',\n template: {\n templateId: 'solution-data',\n version: '1.0.0',\n title: 'Data collection solution',\n problemType: 'event-registration',\n },\n context: {},\n journeys: [],\n overrides: {\n runtimeFormConfigs: {\n 'registration-form': {\n sections: [],\n },\n },\n },\n };\n\n return {\n healthy: {\n id: 'healthy',\n title: 'Fixture healthy',\n input: {\n solution: warningSolution,\n instance: healthyInstance,\n runtimeContext: null,\n },\n expectedFallbackMode: 'normal',\n expectsAdapter: false,\n },\n warning: {\n id: 'warning',\n title: 'Fixture warning',\n input: {\n solution: warningSolution,\n instance: warningInstance,\n runtimeContext: null,\n },\n expectedFallbackMode: 'warning',\n expectsAdapter: false,\n },\n globalError: {\n id: 'global-error',\n title: 'Fixture global error',\n input: {\n solution: globalErrorSolution,\n instance: globalErrorInstance,\n runtimeContext: null,\n },\n expectedFallbackMode: 'blocked',\n expectsAdapter: false,\n },\n dataCollectionMissingAdapter: {\n id: 'data-collection-missing-adapter',\n title: 'Fixture dataCollection missing adapter',\n input: {\n solution: dataCollectionSolution,\n instance: dataCollectionInstance,\n runtimeContext: null,\n },\n expectedFallbackMode: 'degraded',\n expectsAdapter: true,\n },\n dataCollectionWithAdapter: {\n id: 'data-collection-with-adapter',\n title: 'Fixture dataCollection with adapter',\n input: {\n solution: dataCollectionSolution,\n instance: dataCollectionInstance,\n runtimeContext: null,\n },\n expectedFallbackMode: 'degraded',\n expectsAdapter: true,\n },\n };\n}\n\nexport function getHarnessDataEngineComponent(): Type<unknown> {\n return HarnessDataEngineComponent;\n}\n","/*\n * Public API Surface of praxis-editorial-forms\n */\n\nexport * from './lib/praxis-editorial-forms';\nexport * from './lib/editorial-form-runtime.component';\nexport * from './lib/editorial-runtime.contract';\nexport * from './lib/adapters/editorial-data-block-adapter';\nexport * from './lib/adapters/editorial-data-block-adapter-registry';\nexport * from './lib/adapters/editorial-data-collection-block-outlet.component';\nexport * from './lib/adapters/dynamic-form/editorial-dynamic-form.adapter';\nexport * from './lib/runtime/editorial-runtime-diagnostics.model';\nexport * from './lib/runtime/editorial-runtime-events.model';\nexport * from './lib/runtime/editorial-runtime-fallback';\nexport * from './lib/runtime/editorial-runtime-snapshot.model';\nexport * from './lib/runtime/editorial-preset-resolver';\nexport * from './lib/runtime/editorial-runtime-state';\nexport * from './lib/runtime/editorial-runtime.helpers';\nexport * from './lib/renderers/editorial-block-renderer.component';\nexport * from './lib/testing/editorial-runtime.fixtures';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}