MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Layout

Flex_Layout_Renderer::render_inner_blocks_in_layout()publicWC 1.0

Render inner blocks in flex layout.

Method of the class: Flex_Layout_Renderer{}

No Hooks.

Return

String.

Usage

$Flex_Layout_Renderer = new Flex_Layout_Renderer();
$Flex_Layout_Renderer->render_inner_blocks_in_layout( $parsed_block, $settings_controller ): string;
$parsed_block(array) (required)
Parsed block.
$settings_controller(Settings_Controller) (required)
Settings controller.

Flex_Layout_Renderer::render_inner_blocks_in_layout() code WC 9.8.1

public function render_inner_blocks_in_layout( array $parsed_block, Settings_Controller $settings_controller ): string {
	$theme_styles    = $settings_controller->get_email_styles();
	$flex_gap        = $theme_styles['spacing']['blockGap'] ?? '0px';
	$flex_gap_number = $settings_controller->parse_number_from_string_with_pixels( $flex_gap );

	$margin_top = $parsed_block['email_attrs']['margin-top'] ?? '0px';
	$justify    = $parsed_block['attrs']['layout']['justifyContent'] ?? 'left';
	$styles     = wp_style_engine_get_styles( $parsed_block['attrs']['style'] ?? array() )['css'] ?? '';
	$styles    .= 'margin-top: ' . $margin_top . ';';
	$styles    .= 'text-align: ' . $justify;

	// MS Outlook doesn't support style attribute in divs so we conditionally wrap the buttons in a table and repeat styles.
	$output_html = sprintf(
		'<!--[if mso | IE]><table align="%2$s" role="presentation" border="0" cellpadding="0" cellspacing="0" width="100%%"><tr><td style="%1$s" ><![endif]-->
      <div style="%1$s"><table class="layout-flex-wrapper" style="display:inline-block"><tbody><tr>',
		esc_attr( $styles ),
		esc_attr( $justify )
	);

	$inner_blocks = $this->compute_widths_for_flex_layout( $parsed_block, $settings_controller, $flex_gap_number );

	foreach ( $inner_blocks as $key => $block ) {
		$styles = array();
		if ( $block['email_attrs']['layout_width'] ?? null ) {
			$styles['width'] = $block['email_attrs']['layout_width'];
		}
		if ( $key > 0 ) {
			$styles['padding-left'] = $flex_gap;
		}
		$output_html .= '<td class="layout-flex-item" style="' . esc_attr( \WP_Style_Engine::compile_css( $styles, '' ) ) . '">' . render_block( $block ) . '</td>';
	}
	$output_html .= '</tr></table></div>
    <!--[if mso | IE]></td></tr></table><![endif]-->';

	return $output_html;
}