*/ final class MenuNodeRenderer implements NodeRenderer { public function __construct(private readonly TemplateRenderer $renderer) { } public function render(Node $node, RenderContext $renderContext): string { Assert::isInstanceOf($node, MenuNode::class); if ($node->getOption('hidden', false)) { return ''; } return $this->renderer->renderTemplate( $renderContext, $this->getTemplate($node), ['node' => $node], ); } private function getTemplate(Node $node): string { if ($node instanceof TocNode) { return 'body/menu/table-of-content.html.twig'; } if ($node instanceof ContentMenuNode) { return 'body/menu/content-menu.html.twig'; } return 'body/menu/menu.html.twig'; } public function supports(string $nodeFqcn): bool { return $nodeFqcn === MenuNode::class || is_a($nodeFqcn, MenuNode::class, true); } }