UNPKG

@shopgate/engage

Version:
5 lines 2 kB
import React,{useMemo,useCallback}from'react';import Context from"./CartItemProvider.context";import connect from"./CartItemProvider.connector";/** * The CartItem Provider * @param {Object} props The component props. * @returns {JSX} */var CartItemProvider=function CartItemProvider(_ref){var cartItem=_ref.cartItem,location=_ref.location,isEditable=_ref.isEditable,children=_ref.children,enabledFulfillmentMethodsCount=_ref.enabledFulfillmentMethodsCount,isOrderDetails=_ref.isOrderDetails,isCheckoutConfirmation=_ref.isCheckoutConfirmation,cartIsDirectShipOnly=_ref.cartIsDirectShipOnly,cartHasLineItemPromotions=_ref.cartHasLineItemPromotions;var actions=useMemo(function(){return new Map();},[]);var registerFulfillmentAction=useCallback(function(action,callback){actions.set(action,callback);},[actions]);var invokeFulfillmentAction=useCallback(function(action){if(!actions.has(action)){return;}for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key];}actions.get(action).apply(void 0,args);},[actions]);var value=useMemo(function(){return{registerFulfillmentAction:registerFulfillmentAction,invokeFulfillmentAction:invokeFulfillmentAction,cartItem:cartItem,location:location,isEditable:isEditable,isOrderDetails:isOrderDetails,isCheckoutConfirmation:isCheckoutConfirmation,cartIsDirectShipOnly:cartIsDirectShipOnly,cartHasLineItemPromotions:cartHasLineItemPromotions,merchantFulfillmentMethodsCount:enabledFulfillmentMethodsCount};},[cartItem,location,enabledFulfillmentMethodsCount,invokeFulfillmentAction,isEditable,isOrderDetails,isCheckoutConfirmation,cartIsDirectShipOnly,cartHasLineItemPromotions,registerFulfillmentAction]);return React.createElement(Context.Provider,{value:value},children);};CartItemProvider.defaultProps={children:null,location:null,isEditable:true,isOrderDetails:false,cartIsDirectShipOnly:false,isCheckoutConfirmation:false,cartHasLineItemPromotions:false};export default connect(CartItemProvider);