<?php
/**
 * Paragraph block CSS.
 *
 * @package woodmart
 */

use XTS\Gutenberg\Block_CSS;

$mark_selector = $block_selector . ' .wd-highlight';
$block_css     = new Block_CSS( $attrs );

$block_css->add_css_rules(
	$block_selector,
	array(
		array(
			'attr_name' => 'colorCode',
			'template'  => 'color: {{value}};',
		),
		array(
			'attr_name' => 'colorVariable',
			'template'  => 'color: var({{value}});',
		),
		array(
			'attr_name' => 'textAlign',
			'template'  => '--wd-align: var(--wd-{{value}});',
		),
	)
);

$block_css->add_css_rules(
	$block_selector . ' a',
	array(
		array(
			'attr_name' => 'linksColorCode',
			'template'  => 'color: {{value}};',
		),
		array(
			'attr_name' => 'linksColorVariable',
			'template'  => 'color: var({{value}});',
		),
	)
);

$block_css->add_css_rules(
	$block_selector_hover,
	array(
		array(
			'attr_name' => 'colorHoverCode',
			'template'  => 'color: {{value}};',
		),
		array(
			'attr_name' => 'colorHoverVariable',
			'template'  => 'color: var({{value}});',
		),
	)
);

$block_css->add_css_rules(
	$block_selector . ' a:hover',
	array(
		array(
			'attr_name' => 'linksColorHoverCode',
			'template'  => 'color: {{value}};',
		),
		array(
			'attr_name' => 'linksColorHoverVariable',
			'template'  => 'color: var({{value}});',
		),
	)
);

$block_css->add_css_rules(
	$block_selector_parent_hover,
	array(
		array(
			'attr_name' => 'colorParentHoverCode',
			'template'  => 'color: {{value}};',
		),
		array(
			'attr_name' => 'colorParentHoverVariable',
			'template'  => 'color: var({{value}});',
		),
	)
);

$block_css->add_css_rules(
	$block_selector_parent_hover . ' a',
	array(
		array(
			'attr_name' => 'linksColorParentHoverCode',
			'template'  => 'color: {{value}};',
		),
		array(
			'attr_name' => 'linksColorParentHoverVariable',
			'template'  => 'color: var({{value}});',
		),
	)
);

$block_css->add_css_rules(
	$block_selector . ' img',
	array(
		array(
			'attr_name' => 'inlineImageWidth',
			'template'  => 'width: {{value}}px !important;',
		),
	)
);

$block_css->add_css_rules(
	$block_selector,
	array(
		array(
			'attr_name' => 'textAlignTablet',
			'template'  => '--wd-align: var(--wd-{{value}});',
		),
	),
	'tablet'
);

$block_css->add_css_rules(
	$block_selector . ' img',
	array(
		array(
			'attr_name' => 'inlineImageWidthTablet',
			'template'  => 'width: {{value}}px !important;',
		),
	),
	'tablet'
);

$block_css->add_css_rules(
	$block_selector,
	array(
		array(
			'attr_name' => 'textAlignMobile',
			'template'  => '--wd-align: var(--wd-{{value}});',
		),
	),
	'mobile'
);

$block_css->add_css_rules(
	$block_selector . ' img',
	array(
		array(
			'attr_name' => 'inlineImageWidthMobile',
			'template'  => 'width: {{value}}px !important;',
		),
	),
	'mobile'
);

$mark_color_type = isset( $attrs['markColorType'] ) ? $attrs['markColorType'] : 'classic';

if ( 'gradient' === $mark_color_type ) {
	$gradient_position = ! empty( $attrs['gradientPosition'] ) ? $attrs['gradientPosition'] : 'center center';

	if ( ! empty( $attrs['gradient'] ) && false !== strpos( $attrs['gradient'], 'radial-gradient' ) ) {
		$gradient = str_replace( 'radial-gradient(', 'radial-gradient(at ' . $gradient_position . ',', $attrs['gradient'] );

		$block_css->add_to_selector(
			$mark_selector,
			'background-image: ' . $gradient . ';',
		);
	} else {
		$block_css->add_css_rules(
			$mark_selector,
			array(
				array(
					'attr_name' => 'gradient',
					'template'  => 'background-image: {{value}};',
				),
			)
		);
	}

	if ( ! empty( $attrs['gradientTablet'] ) && false !== strpos( $attrs['gradientTablet'], 'radial-gradient' ) ) {
		$gradient_position = ! empty( $attrs['gradientPositionTablet'] ) ? $attrs['gradientPositionTablet'] : $gradient_position;

		$gradient = str_replace( 'radial-gradient(', 'radial-gradient(at ' . $gradient_position . ',', $attrs['gradientTablet'] );

		$block_css->add_to_selector(
			$mark_selector,
			'background-image: ' . $gradient . ';',
			'tablet'
		);
	} else {
		$block_css->add_css_rules(
			$mark_selector,
			array(
				array(
					'attr_name' => 'gradientTablet',
					'template'  => 'background-image: {{value}};',
				),
			),
			'tablet'
		);
	}

	if ( ! empty( $attrs['gradientMobile'] ) && false !== strpos( $attrs['gradientMobile'], 'radial-gradient' ) ) {
		$gradient_position = ! empty( $attrs['gradientPositionMobile'] ) ? $attrs['gradientPositionMobile'] : $gradient_position;

		$gradient = str_replace( 'radial-gradient(', 'radial-gradient(at ' . $gradient_position . ',', $attrs['gradientMobile'] );

		$block_css->add_to_selector(
			$mark_selector,
			'background-image: ' . $gradient . ';',
			'mobile'
		);
	} else {
		$block_css->add_css_rules(
			$mark_selector,
			array(
				array(
					'attr_name' => 'gradientMobile',
					'template'  => 'background-image: {{value}};',
				),
			),
			'mobile'
		);
	}

	if ( ! empty( $attrs['gradient'] ) ) {
		$block_css->add_to_selector(
			$mark_selector,
			'-webkit-background-clip: text;',
		);

		$block_css->add_to_selector(
			$mark_selector,
			'background-clip: text;',
		);

		$block_css->add_to_selector(
			$mark_selector,
			'-webkit-text-fill-color: transparent;',
		);
	}

	if ( ! empty( $attrs['gradientTablet'] ) ) {
		$block_css->add_to_selector(
			$mark_selector,
			'-webkit-background-clip: text;',
			'tablet'
		);

		$block_css->add_to_selector(
			$mark_selector,
			'background-clip: text;',
			'tablet'
		);

		$block_css->add_to_selector(
			$mark_selector,
			'-webkit-text-fill-color: transparent;',
			'tablet'
		);
	}

	if ( ! empty( $attrs['gradientMobile'] ) ) {
		$block_css->add_to_selector(
			$mark_selector,
			'-webkit-background-clip: text;',
			'mobile'
		);

		$block_css->add_to_selector(
			$mark_selector,
			'background-clip: text;',
			'mobile'
		);

		$block_css->add_to_selector(
			$mark_selector,
			'-webkit-text-fill-color: transparent;',
			'mobile'
		);
	}
}

if ( 'classic' === $mark_color_type ) {
	$block_css->add_css_rules(
		$mark_selector,
		array(
			array(
				'attr_name' => 'markColorCode',
				'template'  => 'color: {{value}};',
			),
			array(
				'attr_name' => 'markColorVariable',
				'template'  => 'color: var({{value}});',
			),
		)
	);

	$block_css->merge_with( wd_get_block_bg_css( $mark_selector, $attrs, 'markBg', 'background' ) );
}

$block_css->merge_with( wd_get_block_border_css( $mark_selector, $attrs, 'markBorder' ) );
$block_css->merge_with( wd_get_block_box_shadow_css( $mark_selector, $attrs, 'markBoxShadow' ) );
$block_css->merge_with( wd_get_block_padding_css( $mark_selector, $attrs, 'markPadding' ) );

$block_css->merge_with( wd_get_block_typography_css( $mark_selector, $attrs, 'mark' ) );
$block_css->merge_with( wd_get_block_typography_css( $block_selector, $attrs, 'tp' ) );
$block_css->merge_with(
	wd_get_block_advanced_css(
		array(
			'selector'              => $block_selector,
			'selector_hover'        => $block_selector_hover,
			'selector_parent_hover' => $block_selector_parent_hover,
		),
		$attrs
	)
);

return $block_css->get_css_for_devices();
