Automattic\WooCommerce\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors

Blocks_Width_Preprocessor::add_missing_column_widthsprivateWC 1.0

Add missing column widths

Метод класса: Blocks_Width_Preprocessor{}

Хуков нет.

Возвращает

Массив.

Использование

// private - только в коде основоного (родительского) класса
$result = $this->add_missing_column_widths( $columns, $columns_width, $variables_map ): array;
$columns(массив) (обязательный)
Columns.
$columns_width(float) (обязательный)
Columns width.
$variables_map(массив)
CSS variable names to resolved pixel values.
По умолчанию: array()

Код Blocks_Width_Preprocessor::add_missing_column_widths() WC 10.7.0

private function add_missing_column_widths( array $columns, float $columns_width, array $variables_map = array() ): array {
	$columns_count_with_defined_width = 0;
	$defined_column_width             = 0;
	$columns_count                    = count( $columns );
	foreach ( $columns as $column ) {
		if ( isset( $column['attrs']['width'] ) && ! empty( $column['attrs']['width'] ) ) {
			++$columns_count_with_defined_width;
			$defined_column_width += $this->convert_width_to_pixels( $column['attrs']['width'], $columns_width );
		} else {
			// When width is not set we need to add padding to the defined column width for better ratio accuracy.
			$defined_column_width += $this->parse_number_from_string_with_pixels( $this->resolve_preset_value( $column['attrs']['style']['spacing']['padding']['left'] ?? '0px', $variables_map ) );
			$defined_column_width += $this->parse_number_from_string_with_pixels( $this->resolve_preset_value( $column['attrs']['style']['spacing']['padding']['right'] ?? '0px', $variables_map ) );
			$border_width          = $column['attrs']['style']['border']['width'] ?? '0px';
			$defined_column_width += $this->parse_number_from_string_with_pixels( $column['attrs']['style']['border']['left']['width'] ?? $border_width );
			$defined_column_width += $this->parse_number_from_string_with_pixels( $column['attrs']['style']['border']['right']['width'] ?? $border_width );
		}
	}

	if ( $columns_count - $columns_count_with_defined_width > 0 ) {
		$default_columns_width = round( ( $columns_width - $defined_column_width ) / ( $columns_count - $columns_count_with_defined_width ), 2 );
		foreach ( $columns as $key => $column ) {
			if ( ! isset( $column['attrs']['width'] ) || empty( $column['attrs']['width'] ) ) {
				// Add padding to the specific column width because it's not included in the default width.
				$column_width                      = $default_columns_width;
				$column_width                     += $this->parse_number_from_string_with_pixels( $this->resolve_preset_value( $column['attrs']['style']['spacing']['padding']['left'] ?? '0px', $variables_map ) );
				$column_width                     += $this->parse_number_from_string_with_pixels( $this->resolve_preset_value( $column['attrs']['style']['spacing']['padding']['right'] ?? '0px', $variables_map ) );
				$border_width                      = $column['attrs']['style']['border']['width'] ?? '0px';
				$column_width                     += $this->parse_number_from_string_with_pixels( $column['attrs']['style']['border']['left']['width'] ?? $border_width );
				$column_width                     += $this->parse_number_from_string_with_pixels( $column['attrs']['style']['border']['right']['width'] ?? $border_width );
				$columns[ $key ]['attrs']['width'] = "{$column_width}px";
			}
		}
	}
	return $columns;
}