<?php

/**
 * vcex_spacing shortcode output.
 *
 * @package Total WordPress Theme
 * @subpackage Total Theme Core
 * @version 2.6
 */

defined( 'ABSPATH' ) || exit;

// Define main vars
$size = $atts['size'] ?? null;
$is_responsive = $size && str_contains( $size, '|' );

// Core class
$classes = [
	'vcex-spacing',
	'wpex-w-100',
	'wpex-clear',
];

// Visiblity class
if ( ! empty( $atts['visibility'] ) ) {
    $classes[] = vcex_parse_visibility_class( $atts['visibility'] );
}

// Front-end composer class
if ( vcex_vc_is_inline() ) {
    $classes[] = 'vc-spacing-shortcode';
}

// Add unique classname
if ( $is_responsive ) {
	$unique_class = vcex_element_unique_classname();
	$classes[]    = $unique_class;
}

// Custom class
if ( ! empty( $atts['class']  ) ) {
    $classes[] = vcex_get_extra_class( $atts['class'] );
}

// Generate inline css
$inline_style = '';

// Responsive spacing
if ( $size ) {
	if ( $is_responsive ) {
		$sizes = vcex_parse_multi_attribute( $size );
		if ( $sizes && is_array( $sizes ) ) {
			$responsive_style  = '';
			foreach ( $sizes as $device_abrev => $size ) {
				$size_safe = trim( strip_tags( $size ) );
				if ( $size_safe ) {
					if ( is_numeric( $size_safe ) ) {
						$size_safe .= 'px';
					}
					$block_css  = '.' . $unique_class . '{height:' . esc_attr( $size_safe ) . ';}';
					$media_rule = vcex_get_css_media_rule( $device_abrev );
					$responsive_style .= $media_rule ? "{$media_rule}{{$block_css}}" : $block_css;
				}
			}
			if ( $responsive_style ) {
				echo "<style>{$responsive_style}</style>";
			}
		}
	} else {
		$size_safe = trim( strip_tags( $size ) );
		if ( $size_safe ) {
			if ( is_numeric( $size_safe ) ) {
				$size_safe .= 'px';
			}
			$inline_style = ' style="height:' . esc_attr( $size_safe ) . ';"';
		}
	}
}

// Parse classes
$classes = vcex_parse_shortcode_classes( $classes, 'vcex_spacing', $atts );

// Echo output
echo '<div class="' . esc_attr( $classes ) . '"' . $inline_style . '></div>';
