<?php

/**
 * @package SP Page Builder
 * @author JoomShaper http://www.joomshaper.com
 * @copyright Copyright (c) 2010 - 2025 JoomShaper
 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later
 */
//no direct access
defined('_JEXEC') or die('Restricted access');

class SppagebuilderAddonDiv extends SppagebuilderAddons
{

	/**
	 * The render method of the DIV addon.
	 * The HTML of the DIV addon is managed from
	 * the `addon-parser.php` file. Nothing is needed to return from here.
	 *
	 * @return 	string
	 * @since 	4.0.0
	 */
	public function render()
	{
		return '';
	}

	/**
	 * The DIV addon's CSS stylings.
	 *
	 * @return 	string 	The CSS string.
	 * @since 	4.0.0
	 */
	public function css()
	{
		$settings = $this->addon->settings;
		$addon_id = '#sppb-addon-' . $this->addon->id;
		$cssHelper = new CSSHelper($addon_id);

		$css = '';

		$props = [
			'display' => 'display',
			'width' => 'width',
			'height' => 'height',
			'overflow' => 'overflow'
		];
		$units = [
			'display' => false,
			'overflow' => false,
		];

		if (isset($settings->reverse_direction) && $settings->reverse_direction) {
			if (is_object($settings->reverse_direction)) {
				if (is_object($settings->flex_direction)) {
					foreach ($settings->reverse_direction as $key => $value) {
						if (!empty($value) && !empty($settings->flex_direction->$key)) {
							$settings->flex_direction->$key = $settings->flex_direction->$key . '-reverse';
						}
					}
				} else {
					foreach ($settings->reverse_direction as $key => $value) {
						if (!empty($value) && !empty($settings->flex_direction)) {
							$settings->flex_direction->$key = $settings->flex_direction . '-reverse';
						}
					}
				}
			} else if (!empty($settings->flex_direction)) {
				$settings->flex_direction = $settings->flex_direction . '-reverse';
			}
		}

		if (isset($settings->display) && \in_array($settings->display, ['flex', 'inline-flex'])) {
			$props = array_merge($props, [
				'flex_direction' => 'flex-direction',
				'justify_content' => 'justify-content',
				'align_items' => 'align-items',
				'flex_gap' => 'gap',
				'flex_wrap' => 'flex-wrap'
			]);

			$units = array_merge($units, [
				'flex_direction' => false,
				'justify_content' => false,
				'align_items' => false,
				'flex_gap' => false,
				'flex_wrap' => false,
			]);
		}

		$divStyle = $cssHelper->generateStyle(':self', $settings, $props, $units);
		$transformCss = $cssHelper->generateTransformStyle(':self', $settings, 'transform');
		
		$css .= $divStyle;
		$css .= $transformCss;

		return $css;
	}

	public static function getTemplate() {
		$lodash = new Lodash('#sppb-addon-{{ data.id }}');
		$output  = '<style type="text/css">';

		$output .= $lodash->generateTransformCss('', 'data.transform');

		$output .= '</style>';

		return $output;
	}
}
