import { DEFAULT_NATIVE_AD_ASPECT_RATIO, DEFAULT_NATIVE_AD_PLACEMENT, getNativeAdCatalog, } from '../ads/native-ad-catalog'; import type { SduiBlockRenderProps } from './SduiPrimitiveBlocks'; function resolveBlockWidth(props: Record): number | undefined { if (typeof props.width === 'number' && props.width > 0) return props.width; return undefined; } function resolvePlacement(props: Record): string { return typeof props.placement === 'string' && props.placement.length > 0 ? props.placement : DEFAULT_NATIVE_AD_PLACEMENT; } function resolveAspectRatio(placement: string, props: Record): number { if (typeof props.aspect_ratio === 'number' && props.aspect_ratio > 0) { return props.aspect_ratio; } const catalog = getNativeAdCatalog(); const placementConfig = catalog?.getPlacementConfig?.(placement); return placementConfig?.aspectRatio ?? DEFAULT_NATIVE_AD_ASPECT_RATIO; } /** Web — AdSense via `catalog.renderWebSlot` (configurado no app). */ export function SduiNativeAdBlock({ block }: SduiBlockRenderProps) { const catalog = getNativeAdCatalog(); if (!catalog?.isEnabled() || !catalog.renderWebSlot) { return null; } const placement = resolvePlacement(block.props); const width = resolveBlockWidth(block.props); const aspectRatio = resolveAspectRatio(placement, block.props); return catalog.renderWebSlot({ placement, width, aspectRatio }); }