_summary = '/]*?>/mi'; $has_i2_template = ! preg_match( $regex_for_order_summary_subtotal, $content ); if ( $has_i2_template ) { $content = preg_replace( $regex_for_order_summary, $order_summary_with_inner_blocks, $content ); } return $content; } /** * Extra data passed through from server to client for block. * * @param array $attributes Any attributes that currently are available from the block. * Note, this will be empty in the editor context when the block is * not in the post content on editor load. */ protected function enqueue_data( array $attributes = [] ) { parent::enqueue_data( $attributes ); $this->asset_data_registry->add( 'countryData', CartCheckoutUtils::get_country_data(), true ); $this->asset_data_registry->add( 'baseLocation', wc_get_base_location(), true ); $this->asset_data_registry->add( 'isShippingCalculatorEnabled', filter_var( get_option( 'woocommerce_enable_shipping_calc' ), FILTER_VALIDATE_BOOLEAN ), true ); $this->asset_data_registry->add( 'displayItemizedTaxes', 'itemized' === get_option( 'woocommerce_tax_total_display' ), true ); $this->asset_data_registry->add( 'displayCartPricesIncludingTax', 'incl' === get_option( 'woocommerce_tax_display_cart' ), true ); $this->asset_data_registry->add( 'taxesEnabled', wc_tax_enabled(), true ); $this->asset_data_registry->add( 'couponsEnabled', wc_coupons_enabled(), true ); $this->asset_data_registry->add( 'shippingEnabled', wc_shipping_enabled(), true ); $this->asset_data_registry->add( 'hasDarkEditorStyleSupport', current_theme_supports( 'dark-editor-style' ), true ); $this->asset_data_registry->register_page_id( isset( $attributes['checkoutPageId'] ) ? $attributes['checkoutPageId'] : 0 ); $this->asset_data_registry->add( 'isBlockTheme', wc_current_theme_is_fse_theme(), true ); $pickup_location_settings = get_option( 'woocommerce_pickup_location_settings', [] ); $this->asset_data_registry->add( 'localPickupEnabled', wc_string_to_bool( $pickup_location_settings['enabled'] ?? 'no' ), true ); // Hydrate the following data depending on admin or frontend context. if ( ! is_admin() && ! WC()->is_rest_api_request() ) { $this->hydrate_from_api(); } /** * Fires after cart block data is registered. * * @since 2.6.0 */ do_action( 'woocommerce_blocks_cart_enqueue_data' ); } /** * Hydrate the cart block with data from the API. */ protected function hydrate_from_api() { // Cache existing notices now, otherwise they are caught by the Cart Controller and converted to exceptions. $old_notices = WC()->session->get( 'wc_notices', array() ); wc_clear_notices(); $this->asset_data_registry->hydrate_api_request( '/wc/store/v1/cart' ); // Restore notices. WC()->session->set( 'wc_notices', $old_notices ); } /** * Register script and style assets for the block type before it is registered. * * This registers the scripts; it does not enqueue them. */ protected function register_block_type_assets() { parent::register_block_type_assets(); $chunks = $this->get_chunks_paths( $this->chunks_folder ); $vendor_chunks = $this->get_chunks_paths( 'vendors--cart-blocks' ); $shared_chunks = []; $this->register_chunk_translations( array_merge( $chunks, $vendor_chunks, $shared_chunks ) ); } /** * Get list of Cart block & its inner-block types. * * @return array; */ public static function get_cart_block_types() { return [ 'Cart', 'CartOrderSummaryTaxesBlock', 'CartOrderSummarySubtotalBlock', 'FilledCartBlock', 'EmptyCartBlock', 'CartTotalsBlock', 'CartItemsBlock', 'CartLineItemsBlock', 'CartOrderSummaryBlock', 'CartExpressPaymentBlock', 'ProceedToCheckoutBlock', 'CartAcceptedPaymentMethodsBlock', 'CartOrderSummaryCouponFormBlock', 'CartOrderSummaryDiscountBlock', 'CartOrderSummaryFeeBlock', 'CartOrderSummaryHeadingBlock', 'CartOrderSummaryShippingBlock', 'CartCrossSellsBlock', 'CartCrossSellsProductsBlock', ]; } }