Use a first tag from heading block rendered content

The block has only one HTML element, so we don't need to explicitly ask for a heading.
[MAILPOET-5798]
This commit is contained in:
Rostislav Wolny
2024-04-09 17:06:25 +02:00
committed by Rostislav Wolný
parent 9873634f1e
commit 057de1d2e7

View File

@@ -8,9 +8,7 @@ use MailPoet\Util\Helpers;
class Heading extends AbstractBlockRenderer { class Heading extends AbstractBlockRenderer {
protected function renderContent(string $blockContent, array $parsedBlock, SettingsController $settingsController): string { protected function renderContent(string $blockContent, array $parsedBlock, SettingsController $settingsController): string {
$level = $parsedBlock['attrs']['level'] ?? 2; // default level is 2 $blockContent = $this->adjustStyleAttribute($blockContent);
$blockContent = $this->adjustStyleAttribute($blockContent, $parsedBlock, $settingsController, ['tag_name' => "h$level"]);
return str_replace('{heading_content}', $blockContent, $this->getBlockWrapper($blockContent, $parsedBlock, $settingsController)); return str_replace('{heading_content}', $blockContent, $this->getBlockWrapper($blockContent, $parsedBlock, $settingsController));
} }
@@ -79,10 +77,10 @@ class Heading extends AbstractBlockRenderer {
* Currently (WP 6.5), there is no way to disable this behavior. * Currently (WP 6.5), there is no way to disable this behavior.
* @param array{tag_name: string, class_name?: string} $tag * @param array{tag_name: string, class_name?: string} $tag
*/ */
private function adjustStyleAttribute($blockContent, array $parsedBlock, SettingsController $settingsController, array $tag): string { private function adjustStyleAttribute($blockContent): string {
$html = new \WP_HTML_Tag_Processor($blockContent); $html = new \WP_HTML_Tag_Processor($blockContent);
if ($html->next_tag($tag)) { if ($html->next_tag()) {
$elementStyle = $html->get_attribute('style') ?? ''; $elementStyle = $html->get_attribute('style') ?? '';
// Padding may contain value like 10px or variable like var(--spacing-10) // Padding may contain value like 10px or variable like var(--spacing-10)
$elementStyle = preg_replace('/padding[^:]*:.?[0-9a-z-()]+;?/', '', $elementStyle); $elementStyle = preg_replace('/padding[^:]*:.?[0-9a-z-()]+;?/', '', $elementStyle);