. */ declare(strict_types=1); namespace Fisharebest\Webtrees\CommonMark; use League\CommonMark\Block\Element\AbstractBlock; use League\CommonMark\Block\Renderer\BlockRendererInterface; use League\CommonMark\ElementRendererInterface; use League\CommonMark\Extension\Table\TableRenderer; use League\CommonMark\HtmlElement; /** * Class ResponsiveTableRenderer - wrap markdown tables in a responsive DIV element. * * @package Fisharebest\Webtrees\CommonMark */ class ResponsiveTableRenderer implements BlockRendererInterface { // A table is made responsive by wrapping it in a DIV element. private const WRAP_ELEMENT = 'div'; private const WRAP_ATTRIBUTES = ['class' => 'table-responsive']; private TableRenderer $table_renderer; /** * ResponsiveTableRenderer constructor. */ public function __construct() { $this->table_renderer = new TableRenderer(); } /** * @param AbstractBlock $block * @param ElementRendererInterface $htmlRenderer * @param bool $inTightList * * @return HtmlElement */ public function render( AbstractBlock $block, ElementRendererInterface $htmlRenderer, bool $inTightList = false ): HtmlElement { $table_element = $this->table_renderer->render($block, $htmlRenderer, $inTightList); return new HtmlElement(self::WRAP_ELEMENT, self::WRAP_ATTRIBUTES, $table_element); } }