HEX
Server: Apache
System: Linux webd006.cluster128.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
User: zwafgyp (177615)
PHP: 7.4.33
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/zwafgyp/lacalita/wp-content/plugins/rey-core/inc/woocommerce/assets.php
<?php
namespace ReyCore\WooCommerce;

if (!defined('ABSPATH')) exit; // Exit if accessed directly

class Assets {

	public function __construct(){
		add_action( 'reycore/woocommerce/init', [ $this, 'init']);
		add_action( 'reycore/customizer/section=general-performance/marker=performance_toggles', [$this, 'add_defer_js_control']);
	}

	/**
	 * General actions
	 * @since 1.0.0
	 **/
	public function init()
	{
		add_filter( 'woocommerce_enqueue_styles', [ $this, 'enqueue_styles'], 10000 ); // suprases Cartflows override
		add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_scripts'] );
		add_action( 'wp_enqueue_scripts', [$this, 'relocate_scripts'], 999 );
		add_action( 'reycore/assets/register_scripts', [$this, 'register_assets']);
		add_filter( 'rey/css_styles', [ $this, 'css_styles'] );
		add_filter( 'woocommerce_product_get_rating_html', [$this, 'include_loop_rating_styles']);
		add_action( 'reycore/woocommerce/pdp', [$this, 'include_pdp_rating_styles']);
		add_filter( 'woocommerce_get_asset_url', [$this, 'photoswipe_styles'], 10, 2 );
	}

	/**
	 * Enqueue CSS for this theme.
	 *
	 * @param  array $styles Array of registered styles.
	 * @return array
	 */
	public function enqueue_styles( $styles )
	{
		// Override WooCommerce general styles
		$styles['woocommerce-general'] = [
			'src'     => REY_CORE_URI . 'assets/css/woocommerce.css',
			'deps'    => '',
			'version' => REY_CORE_VERSION,
			'media'   => 'all',
			'has_rtl' => true,
		];

		// disable smallscreen stylesheet
		if( isset($styles['woocommerce-smallscreen']) ){
			unset( $styles['woocommerce-smallscreen'] );
		}

		// disable layout stylesheet
		if( isset($styles['woocommerce-layout']) ){
			unset( $styles['woocommerce-layout'] );
		}

		return $styles;
	}

	function woocommerce_styles(){

		$rtl = reycore_assets()::rtl();
		$is_catalog = apply_filters('reycore/woocommerce/css_is_catalog', is_shop() || is_product_taxonomy() || is_product_category() || is_product_tag() );

		return [

			'rey-wc-notices' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/general/notices.css',
				'deps'    => ['woocommerce-general'],
				'version'   => REY_CORE_VERSION,
				'callback' => function(){
					return is_woocommerce() || is_cart() || is_checkout() || is_account_page();
				},
				'priority' => 'low',
			],

			'rey-wc-store-notice' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/general/store-notice.css',
				'deps'    => ['woocommerce-general'],
				'version'   => REY_CORE_VERSION,
				'callback' => 'is_store_notice_showing',
			],

			'rey-wc-pass-meter' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/general/pass-meter.css',
				'deps'    => ['woocommerce-general'],
				'version'   => REY_CORE_VERSION,
				'callback' => function(){
					return ( 'no' === get_option( 'woocommerce_registration_generate_password' ) && ! is_user_logged_in() ) || is_edit_account_page() || is_lost_password_page();
				},
				'priority' => 'low',
			],

			'rey-wc-general' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/general/general' . $rtl . '.css',
				'deps'    => ['woocommerce-general', 'rey-buttons'],
				'version'   => REY_CORE_VERSION,
				'callback' => 'is_woocommerce',
			],
				'rey-wc-general-deferred' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/general/general-deferred.css',
					'deps'    => [],
					'version'   => REY_CORE_VERSION,
					'callback' => 'is_woocommerce',
					'priority' => 'low',
				],
				'rey-wc-general-deferred-font' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/general/general-deferred-font.css',
					'deps'    => [],
					'version'   => REY_CORE_VERSION,
					'callback' => function(){
						return apply_filters('reycore/woocommerce/load_woo_font_file', is_woocommerce() || is_cart() || is_checkout() || is_account_page());
					},
					'priority' => 'low',
				],

			'rey-wc-forms' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/tag-forms/woo-forms' . $rtl . '.css',
				'deps'    => ['woocommerce-general'],
				'version'   => REY_CORE_VERSION,
				'callback' => function(){
					return is_cart() || is_checkout() || is_account_page();
				},
			],

			'rey-wc-cca' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/general/cca.css',
				'deps'    => ['woocommerce-general'],
				'version'   => REY_CORE_VERSION,
				'callback' => function(){
					return is_cart() || is_checkout() || is_account_page();
				},
			],

			'rey-wc-loop' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-loop/general/style' . $rtl . '.css',
				'deps'    => ['woocommerce-general', 'rey-wc-general' ,'rey-wc-general-deferred'],
				'version'   => REY_CORE_VERSION,
				'callback' => function() use ($is_catalog){
					return $is_catalog;
				},
				'priority' => 'low',
			],
				'rey-wc-loop-header-lite' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-loop/header/header-lite.css',
					'deps'    => [],
					'version'   => REY_CORE_VERSION,
					'callback' => function() use ($is_catalog){
						return $is_catalog;
					},
				],
				'rey-wc-loop-header' => [
					'src'      => REY_CORE_URI . 'assets/css/woocommerce-components/page-loop/header/style' . $rtl . '.css',
					'deps'     => ['woocommerce-general', 'rey-wc-general' ,'rey-wc-general-deferred', 'rey-wc-loop-header-lite'],
					'version'  => REY_CORE_VERSION,
					'callback' => function() use ($is_catalog){
						return $is_catalog;
					},
					'priority' => 'low',
				],
				'rey-wc-loop-inlinelist' => [
					'src'      => REY_CORE_URI . 'assets/css/woocommerce-components/page-loop/header/inline-list.css',
					'deps'     => ['woocommerce-general', 'rey-wc-general' ,'rey-wc-general-deferred'],
					'version'  => REY_CORE_VERSION,
					'priority' => 'low',
				],
				'rey-wc-loop-slideshow' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-loop/general/loop-slideshow.css',
					'deps'    => ['woocommerce-general', 'rey-wc-general' ,'rey-wc-general-deferred'],
					'version'   => REY_CORE_VERSION,
					'priority' => 'low',
				],
				'rey-wc-loop-qty' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-loop/general/loop-qty.css',
					'deps'    => ['woocommerce-general', 'rey-wc-general' ,'rey-wc-general-deferred'],
					'version'   => REY_CORE_VERSION,
					'priority' => 'low',
				],
				'rey-wc-loop-grid-skin-metro' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-loop/grid-skin-metro/style' . $rtl . '.css',
					'deps'    => ['woocommerce-general', 'rey-wc-loop'],
					'version'   => REY_CORE_VERSION,
					'priority' => 'low',
				],
				'rey-wc-loop-grid-skin-masonry' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-loop/grid-skin-masonry/style' . $rtl . '.css',
					'deps'    => ['woocommerce-general', 'rey-wc-loop'],
					'version'   => REY_CORE_VERSION,
					'priority' => 'low',
				],
				'rey-wc-loop-grid-skin-masonry2' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-loop/grid-skin-masonry2/style' . $rtl . '.css',
					'deps'    => ['woocommerce-general', 'rey-wc-loop'],
					'version'   => REY_CORE_VERSION,
					'priority' => 'low',
				],
				'rey-wc-loop-grid-skin-scattered' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-loop/grid-skin-scattered/style' . $rtl . '.css',
					'deps'    => ['woocommerce-general', 'rey-wc-loop'],
					'version'   => REY_CORE_VERSION,
					'priority' => 'low',
				],
				'rey-wc-loop-grid-mobile-list-view' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-loop/grid-mobile-list-view/style' . $rtl . '.css',
					'deps'    => ['woocommerce-general', 'rey-wc-loop'],
					'version'   => REY_CORE_VERSION,
					'priority' => 'low',
				],
				'reycore-loop-product-skin-basic' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-loop/item-skin-basic/style' . $rtl . '.css',
					'deps'    => ['woocommerce-general', 'rey-wc-loop'],
					'version'   => REY_CORE_VERSION,
					'priority' => 'low',
				],
				'reycore-loop-product-skin-wrapped' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-loop/item-skin-wrapped/style' . $rtl . '.css',
					'deps'    => ['woocommerce-general', 'rey-wc-loop'],
					'version'   => REY_CORE_VERSION,
					'priority' => 'low',
				],
				'reycore-loop-titles-height' => [
					'src'      => REY_CORE_URI . 'assets/css/woocommerce-components/page-loop/general/titles-height.css',
					'deps'     => [],
					'version'  => REY_CORE_VERSION,
					'priority' => 'low',
				],
				'rey-wc-product-lite' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-product/general/pdp-lite.css',
					'deps'    => ['woocommerce-general', 'rey-wc-general' ,'rey-wc-general-deferred'],
					'version'   => REY_CORE_VERSION,
				],
				'rey-wc-product' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-product/general/pdp' . $rtl . '.css',
					'deps'    => ['woocommerce-general', 'rey-wc-general' ,'rey-wc-general-deferred', 'rey-wc-product-lite'],
					'version'   => REY_CORE_VERSION,
					'priority' => 'mid',
				],
				'rey-wc-product-gallery' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-product/gallery/gallery.css',
					'deps'    => ['woocommerce-general', 'rey-wc-product'],
					'version'   => REY_CORE_VERSION,
					// 'priority' => 'mid',
				],
				'rey-wc-product-gallery-horizontal' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-product/gallery/g-horizontal.css',
					'deps'    => ['woocommerce-general', 'rey-wc-product'],
					'version'   => REY_CORE_VERSION,
					// 'priority' => 'mid',
				],
				'rey-wc-product-gallery-vertical' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-product/gallery/g-vertical.css',
					'deps'    => ['woocommerce-general', 'rey-wc-product'],
					'version'   => REY_CORE_VERSION,
					// 'priority' => 'mid',
				],
				'rey-wc-product-gallery-grid' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-product/gallery/g-grid.css',
					'deps'    => ['woocommerce-general', 'rey-wc-product'],
					'version'   => REY_CORE_VERSION,
					// 'priority' => 'mid',
				],
				'rey-wc-product-gallery-grid-pattern' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-product/gallery/g-grid-pattern.css',
					'deps'    => ['woocommerce-general', 'rey-wc-product'],
					'version'   => REY_CORE_VERSION,
					// 'priority' => 'mid',
				],
				'rey-wc-product-gallery-cascade-grid' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-product/gallery/g-cascade-grid.css',
					'deps'    => ['woocommerce-general', 'rey-wc-product'],
					'version'   => REY_CORE_VERSION,
					// 'priority' => 'mid',
				],
				'rey-wc-product-gallery-cascade' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-product/gallery/g-cascade.css',
					'deps'    => ['woocommerce-general', 'rey-wc-product'],
					'version'   => REY_CORE_VERSION,
					// 'priority' => 'mid',
				],
				'rey-wc-product-gallery-cascade-scattered' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-product/gallery/g-cascade-scattered.css',
					'deps'    => ['woocommerce-general', 'rey-wc-product'],
					'version'   => REY_CORE_VERSION,
					// 'priority' => 'mid',
				],

				'rey-wc-product-reviews' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-product/reviews/style' . $rtl . '.css',
					'deps'    => ['woocommerce-general', 'rey-wc-product'],
					'version'   => REY_CORE_VERSION,
					'priority' => 'low'
				],
				'rey-wc-product-fixed-summary' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-product/fixed-summary.css',
					'deps'    => ['woocommerce-general', 'rey-wc-product'],
					'version'   => REY_CORE_VERSION,
					'priority' => 'low'
				],
				'rey-wc-product-grouped' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-product/general/pdp-grouped.css',
					'deps'    => ['woocommerce-general', 'rey-wc-product'],
					'version'   => REY_CORE_VERSION,
					'priority' => 'mid',
				],
				'rey-wc-product-nav' => [
					'src'      => REY_CORE_URI . 'assets/css/woocommerce-components/page-product/general/pdp-nav.css',
					'deps'     => ['woocommerce-general', 'rey-wc-product'],
					'version'  => REY_CORE_VERSION,
					'priority' => 'low',
				],
				'rey-wc-product-share' => [
					'src'      => REY_CORE_URI . 'assets/css/woocommerce-components/page-product/general/pdp-share.css',
					'deps'     => ['woocommerce-general', 'rey-wc-product'],
					'version'  => REY_CORE_VERSION,
					'priority' => 'low',
				],
				'rey-wc-product-tabs' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-product/general/pdp-tabs.css',
					'deps'    => ['woocommerce-general', 'rey-wc-product'],
					'version'   => REY_CORE_VERSION,
					'priority' => 'low'
				],
				'rey-wc-product-blocks' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-product/general/pdp-blocks.css',
					'deps'    => ['woocommerce-general', 'rey-wc-product'],
					'version'   => REY_CORE_VERSION,
					'priority' => 'low'
				],

				'rey-wc-product-linked' => [
					'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-product/general/pdp-linked.css',
					'deps'    => ['woocommerce-general', 'rey-wc-product'],
					'version'   => REY_CORE_VERSION,
					'priority' => 'low'
				],


			'rey-wc-cart' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-cart/style' . $rtl . '.css',
				'deps'    => ['woocommerce-general', 'rey-wc-general' ,'rey-wc-general-deferred'],
				'version'   => REY_CORE_VERSION,
				'callback' => function(){
					return is_cart() || is_checkout();
				},
			],
			'rey-wc-checkout' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-checkout/style' . $rtl . '.css',
				'deps'    => ['woocommerce-general', 'rey-wc-general' ,'rey-wc-general-deferred', 'rey-wc-cart'],
				'version'   => REY_CORE_VERSION,
				'callback' => function(){
					return is_cart() || is_checkout();
				},
			],
			'rey-wc-myaccount' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/page-myaccount/style' . $rtl . '.css',
				'deps'    => ['woocommerce-general', 'rey-wc-general' ,'rey-wc-general-deferred', 'rey-wc-cart'],
				'version'   => REY_CORE_VERSION,
				'callback' => 'is_account_page',
			],
			'rey-wc-elementor' => [
				'src'      => REY_CORE_URI . 'assets/css/elementor-components/woocommerce/woocommerce' . $rtl . '.css',
				'deps'     => ['woocommerce-general'],
				'version'  => REY_CORE_VERSION,
				'priority' => 'low',
			],

			'rey-wc-widgets-filter-button' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/tag-widgets/filter-button.css',
				'deps'    => ['woocommerce-general', 'rey-wc-loop'],
				'version'   => REY_CORE_VERSION,
				'priority' => 'low'
			],

			'rey-wc-widgets-mobile-panel' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/tag-widgets/mobile-panel.css',
				'deps'    => ['woocommerce-general', 'rey-wc-loop'],
				'version'   => REY_CORE_VERSION,
				'priority' => 'high',
			],

			'rey-wc-widgets-sidebar-filter-panel' => [
				'src'      => REY_CORE_URI . 'assets/css/woocommerce-components/tag-widgets/sidebar-filter-panel.css',
				'deps'     => ['woocommerce-general', 'rey-wc-loop'],
				'version'  => REY_CORE_VERSION,
				'priority' => 'low',
			],

			'rey-wc-widgets-sidebar-filter-top' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/tag-widgets/sidebar-filter-top.css',
				'deps'    => ['woocommerce-general', 'rey-wc-loop'],
				'version'   => REY_CORE_VERSION,
				'priority' => 'mid',
			],

			'rey-wc-widgets-sidebar-shop' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/tag-widgets/sidebar-shop.css',
				'deps'    => ['woocommerce-general', 'rey-wc-loop'],
				'version'   => REY_CORE_VERSION,
				'priority' => 'mid',
			],

			'rey-wc-widgets-toggable-widgets' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/tag-widgets/toggable-widgets.css',
				'deps'    => ['woocommerce-general', 'rey-wc-loop'],
				'version'   => REY_CORE_VERSION,
				'priority' => 'mid',
			],

			'rey-wc-widgets-classic' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/tag-widgets/widgets-classic.css',
				'deps'    => ['woocommerce-general', 'rey-wc-loop'],
				'version'   => REY_CORE_VERSION,
				'priority' => 'mid',
			],

			'rey-wc-widgets-titles' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/tag-widgets/widgets-titles.css',
				'deps'    => ['woocommerce-general', 'rey-wc-loop'],
				'version'   => REY_CORE_VERSION,
				'priority' => 'mid',
			],

			'rey-wc-tag-attributes' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/tag-widgets/attributes' . $rtl . '.css',
				'deps'    => ['woocommerce-general'],
				'version'   => REY_CORE_VERSION,
				'priority' => 'mid',
			],

			'rey-wc-tag-stretch' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/tag-stretch/tag-stretch' . $rtl . '.css',
				'deps'    => ['woocommerce-general', 'rey-wc-loop'],
				'version'   => REY_CORE_VERSION,
				'callback' => function() use ($is_catalog){
					return $is_catalog;
				},
				'priority' => 'low',
			],

			'rey-wc-header-account-panel-top' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/header-account-panel-top/header-account-panel-top' . $rtl . '.css',
				'deps'    => ['woocommerce-general'],
				'version'   => REY_CORE_VERSION,
				'priority' => 'low'
			],

			'rey-wc-header-account-panel' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/header-account-panel/header-account-panel' . $rtl . '.css',
				'deps'    => ['woocommerce-general'],
				'version'   => REY_CORE_VERSION,
				'priority' => 'low'
			],
			'rey-wc-header-mini-cart-top' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/header-mini-cart-top/header-minicart-top.css',
				'deps'    => ['woocommerce-general'],
				'version'   => REY_CORE_VERSION,
				'priority' => 'low'
			],
			'rey-wc-header-mini-cart' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/header-mini-cart/header-mini-cart' . $rtl . '.css',
				'deps'    => ['woocommerce-general'],
				'version'   => REY_CORE_VERSION,
				'priority' => 'low'
			],
			'rey-wc-header-wishlist-element' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/header-wishlist/wishlist-element.css',
				'deps'    => ['woocommerce-general'],
				'version'   => REY_CORE_VERSION,
				'priority' => 'low'
			],
			'rey-wc-header-wishlist' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/header-wishlist/header-wishlist' . $rtl . '.css',
				'deps'    => ['woocommerce-general'],
				'version'   => REY_CORE_VERSION,
				'priority' => 'low'
			],
			'rey-wc-star-rating' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/general/star-rating.css',
				'deps'    => ['woocommerce-general'],
				'version'   => REY_CORE_VERSION,
				'priority' => 'mid'
			],
			'rey-wc-checkbox-label' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/tag-forms/checkbox-label.css',
				'deps'    => ['woocommerce-general'],
				'version'   => REY_CORE_VERSION,
				'priority' => 'low'
			],
			'rey-wc-select2' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/tag-forms/select2.css',
				'deps'    => ['woocommerce-general'],
				'version'   => REY_CORE_VERSION,
				'priority' => 'low'
			],
			'rey-wc-coupon-toggle' => [
				'src'     => REY_CORE_URI . 'assets/css/woocommerce-components/general/coupon-toggle.css',
				'deps'    => ['woocommerce-general'],
				'version'   => REY_CORE_VERSION,
				'priority' => 'low'
			],

		];

	}

	function woocommerce_scripts(){

		$is_catalog = is_shop() || is_product_taxonomy() || is_product_category() || is_product_tag();

		return [

			'reycore-woocommerce' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/general.js',
				'deps'    => [],
				'version'   => REY_CORE_VERSION,
				'callback' => 'is_woocommerce'
			],

			'reycore-wc-cart-update' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/cart-update.js',
				'deps'    => ['reycore-woocommerce'],
				'version'   => REY_CORE_VERSION,
				'callback' => 'is_cart'
			],

			'reycore-wc-checkout-classic' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/checkout-classic.js',
				'deps'    => ['reycore-woocommerce'],
				'version'   => REY_CORE_VERSION,
				'callback' => 'is_checkout'
			],
			'reycore-wc-header-account-forms' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/header-account-forms.js',
				'deps'    => ['reycore-woocommerce'],
				'version'   => REY_CORE_VERSION,
			],
			'reycore-wc-header-account-panel' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/header-account-panel.js',
				'deps'    => ['rey-drop-panel', 'reycore-woocommerce', 'reycore-sidepanel'],
				'version'   => REY_CORE_VERSION,
			],
			'reycore-wc-header-wishlist' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/header-wishlist.js',
				'deps'    => ['reycore-woocommerce', 'rey-tmpl'],
				'version'   => REY_CORE_VERSION,
			],
			'reycore-wc-header-ajax-search' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/header-ajax-search.js',
				'deps'    => ['reycore-woocommerce', 'rey-tmpl'],
				'version'   => REY_CORE_VERSION,
			],
			'reycore-wc-header-minicart' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/header-minicart.js',
				'deps'    => ['reycore-woocommerce', 'reycore-sidepanel'],
				'version'   => REY_CORE_VERSION,
			],
			'reycore-wc-loop-count-loadmore' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/loop-count-loadmore.js',
				'deps'    => ['reycore-woocommerce'],
				'version'   => REY_CORE_VERSION,
			],
			'reycore-wc-loop-equalize' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/loop-equalize.js',
				'deps'    => ['reycore-woocommerce'],
				'version'   => REY_CORE_VERSION,
			],
			'reycore-wc-loop-filter-count' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/loop-filter-count.js',
				'deps'    => ['reycore-woocommerce'],
				'version'   => REY_CORE_VERSION,
			],
			'reycore-wc-loop-filter-panel' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/loop-filter-panel.js',
				'deps'    => ['reycore-woocommerce', 'reycore-sidepanel'],
				'version'   => REY_CORE_VERSION,
			],
			'reycore-wc-loop-grids' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/loop-grids.js',
				'deps'    => ['reycore-woocommerce'],
				'version'   => REY_CORE_VERSION,
				'callback' => function() use ($is_catalog){
					return $is_catalog;
				},
			],
			'reycore-wc-loop-slideshows' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/loop-slideshows.js',
				'deps'    => ['reycore-woocommerce'],
				'version'   => REY_CORE_VERSION,
			],
			'reycore-wc-loop-stretch' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/loop-stretch.js',
				'deps'    => ['reycore-woocommerce'],
				'version'   => REY_CORE_VERSION,
			],
			'reycore-wc-loop-toggable-widgets' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/loop-toggable-widgets.js',
				'deps'    => ['reycore-woocommerce'],
				'version'   => REY_CORE_VERSION,
				'callback' => function() use ($is_catalog){
					return $is_catalog && get_theme_mod('sidebar_shop__toggle__enable', false) && (reycore_wc__check_filter_panel() || reycore_wc__check_filter_sidebar_top() || reycore_wc__check_shop_sidebar());
				},
			],
			'reycore-wc-product-grid-carousels' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/product-grid-carousel.js',
				'deps'    => ['reycore-woocommerce'],
				'version'   => REY_CORE_VERSION,
			],
			'reycore-wc-product-page-ajax-add-to-cart' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/product-page-ajax-add-to-cart.js',
				'deps'    => ['reycore-woocommerce'],
				'version'   => REY_CORE_VERSION,
			],
			'reycore-wc-product-page-fixed-summary' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/product-page-fixed-summary.js',
				'deps'    => ['reycore-woocommerce'],
				'version'   => REY_CORE_VERSION,
			],
			'reycore-wc-product-page-general' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/product-page-general.js',
				'deps'    => ['reycore-woocommerce'],
				'version'   => REY_CORE_VERSION,
				'callback' => 'is_product'
			],
			'reycore-wc-product-gallery' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/pdp-gallery.js',
				'deps'    => ['reycore-woocommerce'],
				'version'   => REY_CORE_VERSION,
			],
			'reycore-wc-product-page-mobile-tabs' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/product-page-mobile-tabs.js',
				'deps'    => ['reycore-woocommerce'],
				'version'   => REY_CORE_VERSION,
			],
			'reycore-wc-product-page-qty-controls' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/product-page-qty-controls.js',
				'deps'    => ['reycore-woocommerce'],
				'version'   => REY_CORE_VERSION,
			],
			'reycore-wc-product-page-qty-select' => [
				'src'     => REY_CORE_URI . 'assets/js/woocommerce/product-page-qty-select.js',
				'deps'    => ['reycore-woocommerce'],
				'version'   => REY_CORE_VERSION,
			],

		];
	}

	function register_assets($assets){
		$assets->register_asset('styles', array_merge($this->woocommerce_styles(), self::assets_to_relocate('styles')));
		$assets->register_asset('scripts', array_merge($this->woocommerce_scripts(), self::assets_to_relocate('scripts')));
	}

	public function add_defer_js_control($section){

		if( ! $section ){
			return;
		}

		$section->add_control( [
			'type'        => 'toggle',
			'settings'    => 'perf__js_woo',
			'label'       => esc_html_x( 'WooCommerce JS Defer', 'Customizer control title', 'rey-core' ),
			'help' => [
				esc_html_x( 'This option will defer WooCommerce\'s JavaScript and prevent it from render blocking the page.', 'Customizer control description', 'rey-core')
			],
			'default'     => true,
		] );

	}

	public function defer_woo_scripts()
	{
		if( ! get_theme_mod('perf__js_woo', true) ){
			return;
		}
		if( is_cart() || is_checkout() || is_account_page() ){
			return;
		}
		reycore_assets()->defer_page_scripts([
			'wc-cart-fragments',
			'js-cookie',
			'wc-add-to-cart',
			'wc-add-to-cart-variation',
			'jquery-blockui',
			'wc-single-product',
			'woocommerce',
		]);
	}

	public static function assets_to_relocate( $type = '' ){

		static $assets;

		if( is_null($assets) ){

			$assets['scripts'] = [
				'wc-add-to-cart-variation' => [
					'src'     => REY_CORE_URI . 'assets/js/woocommerce/add-to-cart-variation.js',
					'deps'    => ['jquery', 'rey-tmpl', 'jquery-blockui'],
					'plugin'  => true,
					'version' => REY_CORE_VERSION,
				],
				// replaces Woo's jquery block UI with custom made lighter version
				'jquery-blockui' => [
					'src'     => REY_CORE_URI . 'assets/js/woocommerce/blockui.js',
					'deps'    => ['jquery'],
					'version' => REY_CORE_VERSION,
				],
				'wc-single-product' => [
					'src'     => REY_CORE_URI . 'assets/js/woocommerce/wc-single-product.js',
					'deps'    => ['jquery'],
					'version' => REY_CORE_VERSION,
				],
			];

			$assets['styles'] = [

			];

			$assets = apply_filters('reycore/woocommerce/assets_to_relocate', $assets);

		}

		if( ! empty($type) ){
			return $assets[$type];
		}

		return $assets;
	}

	/**
	 * Override Photoswipe styles
	 *
	 * @param string $abs_path
	 * @param string $path
	 * @return string
	 */
	public function photoswipe_styles( $abs_path, $path ){

		if( 'assets/css/photoswipe/photoswipe.min.css' === $path ){
			$abs_path = REY_CORE_URI . 'assets/css/woocommerce-components/photoswipe/photoswipe.css';
		}

		elseif( 'assets/css/photoswipe/default-skin/default-skin.min.css' === $path ){
			$abs_path = REY_CORE_URI . 'assets/css/woocommerce-components/photoswipe/photoswipe-skin.css';
		}

		return $abs_path;
	}

	/**
	 * Relocate some scripts.
	 *
	 * @return void
	 */
	public function relocate_scripts() {

		global $wp_scripts, $wp_styles;

		foreach (self::assets_to_relocate() as $type => $assets) {

			if( 'scripts' === $type ){
				foreach ($assets as $handle => $data) {
					if( isset( $wp_scripts->registered[ $handle ] ) && $wp_scripts->registered[ $handle ] ) {
						$wp_scripts->registered[ $handle ]->src = $data['src'];
					}
				}
			}

		}
	}

	/**
	 * Enqueue scripts for WooCommerce
	 *
	 * @since 1.0.0
	 */
	public function enqueue_scripts()
	{
		if( apply_filters('reycore/woocommerce/load_all_styles', false) ){
			foreach( $this->woocommerce_styles() as $handle => $style ){
				reycore_assets()->add_styles($handle);
			}
		}

		// Pass visibility style
		if( is_checkout() || is_page( wc_get_page_id( 'myaccount' ) ) ){
			reycore_assets()->add_styles('reycore-pass-visibility');
		}

		$this->defer_woo_scripts();
	}

	/**
	 * Filter css styles
	 * @since 1.1.2
	 */
	function css_styles($styles)
	{
		$styles[] = sprintf( ':root{ --woocommerce-grid-columns:%d; }', reycore_wc_get_columns('desktop') );
		$styles[] = sprintf( '@media(min-width: 768px) and (max-width: 1024px){:root{ --woocommerce-grid-columns:%d; }}', reycore_wc_get_columns('tablet') );
		$styles[] = sprintf( '@media(max-width: 767px){:root{ --woocommerce-grid-columns:%d; }}', reycore_wc_get_columns('mobile') );
		return $styles;
	}

	public function include_loop_rating_styles($html){
		reycore_assets()->add_styles('rey-wc-star-rating');
		return $html;
	}

	public function include_pdp_rating_styles(){
		reycore_assets()->add_styles('rey-wc-star-rating');
	}

}