/** * External dependencies */ import { withRestApiHydration, withStoreCartApiHydration, } from '@woocommerce/block-hocs'; import { __ } from '@wordpress/i18n'; import { useStoreCart } from '@woocommerce/base-hooks'; import { RawHTML } from '@wordpress/element'; import LoadingMask from '@woocommerce/base-components/loading-mask'; import StoreNoticesProvider from '@woocommerce/base-context/store-notices-context'; import { CURRENT_USER_IS_ADMIN } from '@woocommerce/block-settings'; import { __experimentalCreateInterpolateElement } from 'wordpress-element'; /** * Internal dependencies */ import FullCart from './full-cart'; import renderFrontend from '../../../utils/render-frontend.js'; /** * Wrapper component to supply API data and show empty cart view as needed. */ const CartFrontend = ( { emptyCart, isShippingCalculatorEnabled, isShippingCostHidden, } ) => { const { cartItems, cartTotals, cartIsLoading, cartCoupons, shippingRates, } = useStoreCart(); return ( { ! cartIsLoading && ! cartItems.length ? ( { emptyCart } ) : ( ) } ); }; const getProps = ( el ) => ( { emptyCart: el.innerHTML, isShippingCalculatorEnabled: el.dataset.isShippingCalculatorEnabled === 'true', isShippingCostHidden: el.dataset.isShippingCostHidden === 'true', } ); const getErrorBoundaryProps = () => { return { header: __( 'Something went wrong…', 'woo-gutenberg-products-block' ), text: __experimentalCreateInterpolateElement( __( 'The cart has encountered an unexpected error. Try reloading the page. If the error persists, please get in touch with us so we can assist.', 'woo-gutenberg-products-block' ), { a: ( // eslint-disable-next-line jsx-a11y/anchor-has-content, jsx-a11y/anchor-is-valid ), } ), showErrorMessage: CURRENT_USER_IS_ADMIN, }; }; renderFrontend( '.wp-block-woocommerce-cart', withStoreCartApiHydration( withRestApiHydration( CartFrontend ) ), getProps, getErrorBoundaryProps );