Current File : /home/escuelai/public_html/wp-content/plugins/social-pug/inc/class-critical-styles.php
<?php
namespace Mediavine\Grow;

/**
 * Class Critical_Styles
 * This class helps manage creating the critical css styles to be inserted inline in tools
 * @package Mediavine\Grow
 */
class Critical_Styles {

	/** @var null|Critical_Styles */
	private static $instance = null;

	/**
	 * Get the instance of the class
	 *
	 * @return Critical_Styles|null
	 */
	public static function get_instance() : Critical_Styles {
		if ( null === self::$instance ) {
			self::$instance = new self();
			self::$instance->init();
		}

		return self::$instance;
	}

	/**
	 * Init function in case it is needed in the future.
	 */
	public function init() : void {
	}

	/**
	 * Get Style attribute at a location
	 *
	 * @param string $slug Slug identifier for the element to get inline css for
	 * @param string $location Location that this is being called from
	 * @return string
	 */
	public static function get( string $slug, string $location = '' ) : string {
		$styles = apply_filters( 'mv_grow_critical_styles_' . $location, [], $slug );
		if ( ! is_array( $styles ) ) {
			return '';
		}
		$styles = esc_attr( join( ';', $styles ) );
		return empty( $styles ) ? '' : 'style="' . $styles . '"';
	}

	/**
	 * Set the instance of the class
	 *
	 * @since 2.16.0
	 * @param Critical_Styles|null $instance Current Instance of the Class
	 */
	public static function set_instance( ? Critical_Styles $instance ) : void {
		self::$instance = $instance;
	}

	/**
	 * @param mixed $styles Existing Allowed Properties
	 *
	 * @return mixed
	 */
	public static function allowed_properties( $styles ) {
		if ( ! is_array( $styles ) ) {
			return $styles;
		}
		$styles[] = 'position';
		$styles[] = 'float';
		$styles[] = 'right';
		$styles[] = 'left';
		return $styles;
	}


}