123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- <?php
- /**
- * WP_Style_Engine_CSS_Rules_Store
- *
- * A store for WP_Style_Engine_CSS_Rule objects.
- *
- * @package WordPress
- * @subpackage StyleEngine
- * @since 6.1.0
- */
- /**
- * Class WP_Style_Engine_CSS_Rules_Store.
- *
- * Holds, sanitizes, processes and prints CSS declarations for the style engine.
- *
- * @since 6.1.0
- */
- #[AllowDynamicProperties]
- class WP_Style_Engine_CSS_Rules_Store {
- /**
- * An array of named WP_Style_Engine_CSS_Rules_Store objects.
- *
- * @static
- *
- * @since 6.1.0
- * @var WP_Style_Engine_CSS_Rules_Store[]
- */
- protected static $stores = array();
- /**
- * The store name.
- *
- * @since 6.1.0
- * @var string
- */
- protected $name = '';
- /**
- * An array of CSS Rules objects assigned to the store.
- *
- * @since 6.1.0
- * @var WP_Style_Engine_CSS_Rule[]
- */
- protected $rules = array();
- /**
- * Gets an instance of the store.
- *
- * @since 6.1.0
- *
- * @param string $store_name The name of the store.
- *
- * @return WP_Style_Engine_CSS_Rules_Store|void
- */
- public static function get_store( $store_name = 'default' ) {
- if ( ! is_string( $store_name ) || empty( $store_name ) ) {
- return;
- }
- if ( ! isset( static::$stores[ $store_name ] ) ) {
- static::$stores[ $store_name ] = new static();
- // Set the store name.
- static::$stores[ $store_name ]->set_name( $store_name );
- }
- return static::$stores[ $store_name ];
- }
- /**
- * Gets an array of all available stores.
- *
- * @since 6.1.0
- *
- * @return WP_Style_Engine_CSS_Rules_Store[]
- */
- public static function get_stores() {
- return static::$stores;
- }
- /**
- * Clears all stores from static::$stores.
- *
- * @since 6.1.0
- *
- * @return void
- */
- public static function remove_all_stores() {
- static::$stores = array();
- }
- /**
- * Sets the store name.
- *
- * @since 6.1.0
- *
- * @param string $name The store name.
- *
- * @return void
- */
- public function set_name( $name ) {
- $this->name = $name;
- }
- /**
- * Gets the store name.
- *
- * @since 6.1.0
- *
- * @return string
- */
- public function get_name() {
- return $this->name;
- }
- /**
- * Gets an array of all rules.
- *
- * @since 6.1.0
- *
- * @return WP_Style_Engine_CSS_Rule[]
- */
- public function get_all_rules() {
- return $this->rules;
- }
- /**
- * Gets a WP_Style_Engine_CSS_Rule object by its selector.
- * If the rule does not exist, it will be created.
- *
- * @since 6.1.0
- *
- * @param string $selector The CSS selector.
- *
- * @return WP_Style_Engine_CSS_Rule|void Returns a WP_Style_Engine_CSS_Rule object, or null if the selector is empty.
- */
- public function add_rule( $selector ) {
- $selector = trim( $selector );
- // Bail early if there is no selector.
- if ( empty( $selector ) ) {
- return;
- }
- // Create the rule if it doesn't exist.
- if ( empty( $this->rules[ $selector ] ) ) {
- $this->rules[ $selector ] = new WP_Style_Engine_CSS_Rule( $selector );
- }
- return $this->rules[ $selector ];
- }
- /**
- * Removes a selector from the store.
- *
- * @since 6.1.0
- *
- * @param string $selector The CSS selector.
- *
- * @return void
- */
- public function remove_rule( $selector ) {
- unset( $this->rules[ $selector ] );
- }
- }
|