@shopgate/engage 7.29.0-alpha.3 → 7.29.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,7 +15,10 @@ function _extends(){_extends=Object.assign||function(target){for(var i=1;i<argum
15
15
  * @returns {Object}
16
16
  */_inherits(ViewContent,_Component);return _createClass(ViewContent,[{key:"componentDidMount",value:/**
17
17
  * Restore the scroll position of the page.
18
- */function componentDidMount(){var scrollTop=this.context.state.scrollTop;if(this.ref.current===window){window.scrollTo(0,scrollTop||0);}else{this.ref.current.scrollTop=scrollTop;}}/**
18
+ */function componentDidMount(){var _this3=this;var scrollTop=this.context.state.scrollTop;// This trick ensures the scroll position is restored correctly. Without it there where
19
+ // situations where scroll position was restored before the content was rendered.
20
+ // In that case restoration didn't have any effect.
21
+ window.requestAnimationFrame(function(){if(_this3.ref.current===window){window.scrollTo(0,scrollTop||0);}else{_this3.ref.current.scrollTop=scrollTop;}});}/**
19
22
  * Removes the keyboardWillChange listener.
20
23
  */},{key:"componentWillUnmount",value:function componentWillUnmount(){var scrollTop;if(this.ref.current===window){scrollTop=window.scrollY;}else{scrollTop=this.ref.current.scrollTop;}router.update(this.context.id,{scrollTop:scrollTop},false);event.removeCallback(EVENT_KEYBOARD_WILL_CHANGE,this.handleKeyboardChange);if(isIOs){window.removeEventListener('focusin',this.handleInputFocusChange);window.removeEventListener('focusout',this.handleInputFocusChange);}}/**
21
24
  * @returns {Object}
@@ -5,7 +5,7 @@
5
5
  export{default as Backdrop}from'@shopgate/pwa-common/components/Backdrop';export{default as BaseButton}from'@shopgate/pwa-common/components/Button';export{default as BaseCheckbox}from'@shopgate/pwa-common/components/Checkbox';export{default as Consume}from'@shopgate/pwa-common/components/Consume';export{default as CountdownTimer}from'@shopgate/pwa-common/components/CountdownTimer';export{default as Drawer}from'@shopgate/pwa-common/components/Drawer';export{default as Dropdown}from'@shopgate/pwa-common/components/Dropdown';export{default as Ellipsis}from'@shopgate/pwa-common/components/Ellipsis';export{default as ErrorBoundary}from'@shopgate/pwa-common/components/ErrorBoundary';export{default as Grid}from'@shopgate/pwa-common/components/Grid';export{default as HtmlSanitizer}from'@shopgate/pwa-common/components/HtmlSanitizer';export{default as I18n}from'@shopgate/pwa-common/components/I18n';export{default as Icon}from'@shopgate/pwa-common/components/Icon';export{default as Image}from'@shopgate/pwa-common/components/Image';export{default as InfiniteContainer}from'@shopgate/pwa-common/components/InfiniteContainer';export{default as Input}from'@shopgate/pwa-common/components/Input';export{default as KeyboardConsumer}from'@shopgate/pwa-common/components/KeyboardConsumer';export{default as Link}from'@shopgate/pwa-common/components/Link';export{default as List}from'@shopgate/pwa-common/components/List';export{default as Loading}from'@shopgate/pwa-common/components/Loading';export{default as Modal}from'@shopgate/pwa-common/components/Modal';export{default as ModalContainer,MODAL_EVENTS}from'@shopgate/pwa-common/components/ModalContainer';export{default as Picker}from"./Picker";export{default as Portal}from'@shopgate/pwa-common/components/Portal';export{default as RangeSlider}from"./RangeSlider";export{default as Route}from'@shopgate/pwa-common/components/Route';export{default as ScannerContainer}from'@shopgate/pwa-common/components/ScannerContainer';export{default as BaseSelect}from'@shopgate/pwa-common/components/Select';export{default as SelectBox}from'@shopgate/pwa-common/components/SelectBox';export{default as Slider}from'@shopgate/pwa-common/components/Slider';export{default as SurroundPortals}from'@shopgate/pwa-common/components/SurroundPortals';export{default as Swiper}from'@shopgate/pwa-common/components/Swiper';export{default as Toaster}from'@shopgate/pwa-common/components/Toaster';export{default as Transition}from'@shopgate/pwa-common/components/Transition';export{default as Widgets}from'@shopgate/pwa-common/components/Widgets';// iOS
6
6
  export{default as AppBarIOS}from'@shopgate/pwa-ui-ios/AppBar';export{default as BaseDialogIOS}from'@shopgate/pwa-ui-ios/BaseDialog';// ANDROID
7
7
  export{default as Accordion}from'@shopgate/pwa-ui-material/Accordion';export{default as AppBarAndroid}from'@shopgate/pwa-ui-material/AppBar';export{default as BaseDialogAndroid}from'@shopgate/pwa-ui-material/BaseDialog';export{default as FloatingActionButton}from'@shopgate/pwa-ui-material/FloatingActionButton';export{default as NavDrawer}from'@shopgate/pwa-ui-material/NavDrawer';export{default as SnackBar}from'@shopgate/pwa-ui-material/SnackBar';// SHARED
8
- export{default as AccordionContainer}from'@shopgate/pwa-ui-shared/AccordionContainer';export{default as ActionButton}from'@shopgate/pwa-ui-shared/ActionButton';export{default as AddToCartButton}from'@shopgate/pwa-ui-shared/AddToCartButton';export{default as Availability}from'@shopgate/pwa-ui-shared/Availability';export{default as Button}from'@shopgate/pwa-ui-shared/Button';export{default as ButtonLink}from'@shopgate/pwa-ui-shared/ButtonLink';export{default as Card}from'@shopgate/pwa-ui-shared/Card';export{default as CardList}from'@shopgate/pwa-ui-shared/CardList';export{default as CartTotalLine}from'@shopgate/pwa-ui-shared/CartTotalLine';export{default as Chip}from'@shopgate/pwa-ui-shared/Chip';export{default as ClientInformation}from'@shopgate/pwa-ui-shared/ClientInformation';export{default as ContextMenu}from'@shopgate/pwa-ui-shared/ContextMenu';export{default as Dialog}from'@shopgate/pwa-ui-shared/Dialog';export{default as DiscountBadge}from'@shopgate/pwa-ui-shared/DiscountBadge';export{default as FavoritesButton}from'@shopgate/pwa-ui-shared/FavoritesButton';export{default as Checkbox}from'@shopgate/pwa-ui-shared/Form/Checkbox';export{default as Password}from'@shopgate/pwa-ui-shared/Form/Password';export{default as RadioGroup}from'@shopgate/pwa-ui-shared/Form/RadioGroup';export{default as RadioGroupItem}from'@shopgate/pwa-ui-shared/Form/RadioGroup/components/Item';export{default as Select}from'@shopgate/pwa-ui-shared/Form/Select';export{default as TextField}from'@shopgate/pwa-ui-shared/Form/TextField';export{default as FormElement}from'@shopgate/pwa-ui-shared/FormElement';export{default as Glow}from'@shopgate/pwa-ui-shared/Glow';export{default as IndicatorCircle}from'@shopgate/pwa-ui-shared/IndicatorCircle';export{default as LoadingIndicator}from'@shopgate/pwa-ui-shared/LoadingIndicator';export{default as Manufacturer}from'@shopgate/pwa-ui-shared/Manufacturer';export{default as NoResults}from'@shopgate/pwa-ui-shared/NoResults';export{default as Placeholder}from'@shopgate/pwa-ui-shared/Placeholder';export{default as PlaceholderLabel}from'@shopgate/pwa-ui-shared/PlaceholderLabel';export{default as PlaceholderParagraph}from'@shopgate/pwa-ui-shared/PlaceholderParagraph';export{default as Price}from'@shopgate/pwa-ui-shared/Price';export{default as PriceInfo}from'@shopgate/pwa-ui-shared/PriceInfo';export{default as PriceStriked}from'@shopgate/pwa-ui-shared/PriceStriked';export{default as ProductProperties}from'@shopgate/pwa-ui-shared/ProductProperties';export{default as ProgressBar}from'@shopgate/pwa-ui-shared/ProgressBar';export{default as RadioButton}from'@shopgate/pwa-ui-shared/RadioButton';export{default as RatingNumber}from'@shopgate/pwa-ui-shared/RatingNumber';export{default as RatingStars}from'@shopgate/pwa-ui-shared/RatingStars';export{default as Ripple}from'@shopgate/pwa-ui-shared/Ripple';export{default as RippleButton}from'@shopgate/pwa-ui-shared/RippleButton';export{default as ScannerOverlay}from'@shopgate/pwa-ui-shared/ScannerOverlay';export{default as Sheet,SHEET_EVENTS}from'@shopgate/pwa-ui-shared/Sheet';export{default as TaxDisclaimer}from'@shopgate/pwa-ui-shared/TaxDisclaimer';export{default as ToggleIcon}from'@shopgate/pwa-ui-shared/ToggleIcon';// ICONS IOS
8
+ export{default as AccordionContainer}from'@shopgate/pwa-ui-shared/AccordionContainer';export{default as ActionButton}from'@shopgate/pwa-ui-shared/ActionButton';export{default as AddToCartButton}from'@shopgate/pwa-ui-shared/AddToCartButton';export{default as Availability}from'@shopgate/pwa-ui-shared/Availability';export{default as Button}from'@shopgate/pwa-ui-shared/Button';export{default as ButtonLink}from'@shopgate/pwa-ui-shared/ButtonLink';export{default as Card}from'@shopgate/pwa-ui-shared/Card';export{default as CardList}from'@shopgate/pwa-ui-shared/CardList';export{default as CartTotalLine}from'@shopgate/pwa-ui-shared/CartTotalLine';export{default as Chip}from'@shopgate/pwa-ui-shared/Chip';export{default as ContextMenu}from'@shopgate/pwa-ui-shared/ContextMenu';export{default as Dialog}from'@shopgate/pwa-ui-shared/Dialog';export{default as DiscountBadge}from'@shopgate/pwa-ui-shared/DiscountBadge';export{default as FavoritesButton}from'@shopgate/pwa-ui-shared/FavoritesButton';export{default as Checkbox}from'@shopgate/pwa-ui-shared/Form/Checkbox';export{default as Password}from'@shopgate/pwa-ui-shared/Form/Password';export{default as RadioGroup}from'@shopgate/pwa-ui-shared/Form/RadioGroup';export{default as RadioGroupItem}from'@shopgate/pwa-ui-shared/Form/RadioGroup/components/Item';export{default as Select}from'@shopgate/pwa-ui-shared/Form/Select';export{default as TextField}from'@shopgate/pwa-ui-shared/Form/TextField';export{default as FormElement}from'@shopgate/pwa-ui-shared/FormElement';export{default as Glow}from'@shopgate/pwa-ui-shared/Glow';export{default as IndicatorCircle}from'@shopgate/pwa-ui-shared/IndicatorCircle';export{default as LoadingIndicator}from'@shopgate/pwa-ui-shared/LoadingIndicator';export{default as Manufacturer}from'@shopgate/pwa-ui-shared/Manufacturer';export{default as NoResults}from'@shopgate/pwa-ui-shared/NoResults';export{default as Placeholder}from'@shopgate/pwa-ui-shared/Placeholder';export{default as PlaceholderLabel}from'@shopgate/pwa-ui-shared/PlaceholderLabel';export{default as PlaceholderParagraph}from'@shopgate/pwa-ui-shared/PlaceholderParagraph';export{default as Price}from'@shopgate/pwa-ui-shared/Price';export{default as PriceInfo}from'@shopgate/pwa-ui-shared/PriceInfo';export{default as PriceStriked}from'@shopgate/pwa-ui-shared/PriceStriked';export{default as ProductProperties}from'@shopgate/pwa-ui-shared/ProductProperties';export{default as ProgressBar}from'@shopgate/pwa-ui-shared/ProgressBar';export{default as RadioButton}from'@shopgate/pwa-ui-shared/RadioButton';export{default as RatingNumber}from'@shopgate/pwa-ui-shared/RatingNumber';export{default as RatingStars}from'@shopgate/pwa-ui-shared/RatingStars';export{default as Ripple}from'@shopgate/pwa-ui-shared/Ripple';export{default as RippleButton}from'@shopgate/pwa-ui-shared/RippleButton';export{default as ScannerOverlay}from'@shopgate/pwa-ui-shared/ScannerOverlay';export{default as Sheet,SHEET_EVENTS}from'@shopgate/pwa-ui-shared/Sheet';export{default as TaxDisclaimer}from'@shopgate/pwa-ui-shared/TaxDisclaimer';export{default as ToggleIcon}from'@shopgate/pwa-ui-shared/ToggleIcon';// ICONS IOS
9
9
  export{default as CartIconIOS}from'@shopgate/pwa-ui-ios/icons/CartIcon';export{default as FilterIconIOS}from'@shopgate/pwa-ui-ios/icons/FilterIcon';export{default as HomeIconIOS}from'@shopgate/pwa-ui-ios/icons/HomeIcon';export{default as ShareIconIOS}from'@shopgate/pwa-ui-ios/icons/ShareIcon';// ICONS ANDROID
10
10
  export{default as ShareIconAndroid}from'@shopgate/pwa-ui-material/icons/ShareIcon';// ICONS SHARED
11
11
  export{default as AccountBoxIcon}from'@shopgate/pwa-ui-shared/icons/AccountBoxIcon';export{default as AddMoreIcon}from'@shopgate/pwa-ui-shared/icons/AddMoreIcon';export{default as ArrowDropIcon}from'@shopgate/pwa-ui-shared/icons/ArrowDropIcon';export{default as ArrowIcon}from'@shopgate/pwa-ui-shared/icons/ArrowIcon';export{default as BarcodeScannerIcon}from'@shopgate/pwa-ui-shared/icons/BarcodeScannerIcon';export{default as BoxIcon}from'@shopgate/pwa-ui-shared/icons/BoxIcon';export{default as BrowseIcon}from'@shopgate/pwa-ui-shared/icons/BrowseIcon';export{default as BurgerIcon}from'@shopgate/pwa-ui-shared/icons/BurgerIcon';export{default as CartIcon}from'@shopgate/pwa-ui-shared/icons/CartIcon';export{default as CartPlusIcon}from'@shopgate/pwa-ui-shared/icons/CartPlusIcon';export{default as CartCouponIcon}from'@shopgate/pwa-ui-shared/icons/CartCouponIcon';export{default as CheckedIcon}from'@shopgate/pwa-ui-shared/icons/CheckedIcon';export{default as CheckIcon}from'@shopgate/pwa-ui-shared/icons/CheckIcon';export{default as ChevronIcon}from'@shopgate/pwa-ui-shared/icons/ChevronIcon';export{default as CreditCardIcon}from'@shopgate/pwa-ui-shared/icons/CreditCardIcon';export{default as CrossIcon}from'@shopgate/pwa-ui-shared/icons/CrossIcon';export{default as DescriptionIcon}from'@shopgate/pwa-ui-shared/icons/DescriptionIcon';export{default as FilterIcon}from'@shopgate/pwa-ui-shared/icons/FilterIcon';export{default as FlashEnabledIcon}from'@shopgate/pwa-ui-shared/icons/FlashEnabledIcon';export{default as FlashDisabledIcon}from'@shopgate/pwa-ui-shared/icons/FlashDisabledIcon';export{default as GridIcon}from'@shopgate/pwa-ui-shared/icons/GridIcon';export{default as HeartIcon}from'@shopgate/pwa-ui-shared/icons/HeartIcon';export{default as HeartOutlineIcon}from'@shopgate/pwa-ui-shared/icons/HeartOutlineIcon';export{default as HeartPlusIcon}from'@shopgate/pwa-ui-shared/icons/HeartPlusIcon';export{default as HeartPlusOutlineIcon}from'@shopgate/pwa-ui-shared/icons/HeartPlusOutlineIcon';export{default as HomeIcon}from'@shopgate/pwa-ui-shared/icons/HomeIcon';export{default as InfoIcon}from'@shopgate/pwa-ui-shared/icons/InfoIcon';export{default as InfoOutlineIcon}from'@shopgate/pwa-ui-shared/icons/InfoOutlineIcon';export{default as ListIcon}from'@shopgate/pwa-ui-shared/icons/ListIcon';export{default as LocatorIcon}from'@shopgate/pwa-ui-shared/icons/LocatorIcon';export{default as LocalShippingIcon}from'@shopgate/pwa-ui-shared/icons/LocalShippingIcon';export{default as LocationIcon}from'@shopgate/pwa-ui-shared/icons/LocationIcon';export{default as LockIcon}from'@shopgate/pwa-ui-shared/icons/LockIcon';export{default as LogoutIcon}from'@shopgate/pwa-ui-shared/icons/LogoutIcon';export{default as MagnifierIcon}from'@shopgate/pwa-ui-shared/icons/MagnifierIcon';export{default as MoreIcon}from'@shopgate/pwa-ui-shared/icons/MoreIcon';export{default as MoreVertIcon}from'@shopgate/pwa-ui-shared/icons/MoreVertIcon';export{default as PersonIcon}from'@shopgate/pwa-ui-shared/icons/PersonIcon';export{default as PhoneIcon}from'@shopgate/pwa-ui-shared/icons/PhoneIcon';export{default as PlaceholderIcon}from'@shopgate/pwa-ui-shared/icons/PlaceholderIcon';export{default as RadioCheckedIcon}from'@shopgate/pwa-ui-shared/icons/RadioCheckedIcon';export{default as RadioUncheckedIcon}from'@shopgate/pwa-ui-shared/icons/RadioUncheckedIcon';export{default as SecurityIcon}from'@shopgate/pwa-ui-shared/icons/SecurityIcon';export{default as ShoppingCartIcon}from'@shopgate/pwa-ui-shared/icons/ShoppingCartIcon';export{default as SortIcon}from'@shopgate/pwa-ui-shared/icons/SortIcon';export{default as StarHalfIcon}from'@shopgate/pwa-ui-shared/icons/StarHalfIcon';export{default as StarIcon}from'@shopgate/pwa-ui-shared/icons/StarIcon';export{default as StarOutlineIcon}from'@shopgate/pwa-ui-shared/icons/StarOutlineIcon';export{default as TickIcon}from'@shopgate/pwa-ui-shared/icons/TickIcon';export{default as TrashIcon}from'@shopgate/pwa-ui-shared/icons/TrashIcon';export{default as TrashOutlineIcon}from'@shopgate/pwa-ui-shared/icons/TrashOutlineIcon';export{default as UncheckedIcon}from'@shopgate/pwa-ui-shared/icons/UncheckedIcon';export{default as ViewListIcon}from'@shopgate/pwa-ui-shared/icons/ViewListIcon';export{default as VisibilityIcon}from'@shopgate/pwa-ui-shared/icons/VisibilityIcon';export{default as VisibilityOffIcon}from'@shopgate/pwa-ui-shared/icons/VisibilityOffIcon';export{default as TimeIcon}from'@shopgate/pwa-ui-shared/icons/TimeIcon';export{default as NotificationIcon}from'@shopgate/pwa-ui-shared/icons/NotificationIcon';// LOCAL
@@ -1,4 +1,4 @@
1
- import{INDEX_PATH,INDEX_PATH_DEEPLINK,LOGIN_PATH}from'@shopgate/pwa-common/constants/RoutePaths';export{RECEIVE_SHOP_SETTINGS,ERROR_SHOP_SETTINGS,CACHE_LEASE_SHOP_SETTINGS,SHOP_SETTING_GOOGLE_SITE_VERIFICATION_CODE,SHOP_SETTING_CART_SUPPLEMENTAL_CONTENT,SHOP_SETTING_ORDER_SUPPLEMENTAL_CONTENT,SHOP_SETTING_SHOW_SHOP_LOGO_IN_APP,SHOP_SETTING_SHOW_SHOP_LOGO_IN_WEB,SHOP_SETTING_PRODUCTS_SORT_ORDER,SHOP_SETTING_COOKIE_CONSENT_MODE,SHOP_SETTING_DISPLAY_PRICE_PER_MEASURE_UNIT,SHOP_SETTING_IMAGES,SHOP_SETTING_IMAGES_PRODUCT_PLACEHOLDER,SHOP_SETTING_IMAGES_CATEGORY_PLACEHOLDER,SHOP_SETTING_IMAGES_FAVICON,SHOP_SETTING_NUMBER_OF_ADDRESS_LINES,SHOP_SETTING_REGISTRATION_MODE_SIMPLE,SHOP_SETTING_REGISTRATION_MODE_EXTENDED,SHOP_SETTING_WISHLIST_ITEM_QUANTITY_ENABLED,SHOP_SETTING_WISHLIST_ITEM_NOTES_ENABLED,SHOP_SETTING_LOAD_WISHLIST_ON_APP_START_ENABLED,SHOP_SETTING_SHOW_WISHLIST_ITEMS_COUNT_BADGE}from"./shopSettings";export{RECEIVE_MERCHANT_SETTINGS,MERCHANT_SETTINGS_LOCATION_BASED_SHOPPING_ENABLED,MERCHANT_SETTINGS_SUBSTITUTION_PREFERENCES_ENABLED,MERCHANT_SETTINGS_CUSTOMER_ATTRIBUTES,MERCHANT_SETTINGS_FULFILLMENT_SCHEDULED_ENABLED,MERCHANT_SETTINGS_RESTRICT_MULTI_LOCATION_ORDERS,MERCHANT_SETTINGS_DEFAULT_CURRENCY,MERCHANT_SETTINGS_ENABLE_WEB_INDEXING,MERCHANT_SETTINGS_PRODUCT_SHOW_ALTERNATIVE_LOCATION,MERCHANT_SETTINGS_PRODUCTLIST_SHOW_INVENTORY}from"./merchantSettings";export{SHOPGATE_CORE_GET_SHOP_SETTINGS,EUNAUTHORIZED,EAUTHENTICATION}from"./pipelines";export*from"./actionTypes";export*from"./appFeatures";export*from"./deviceTypes";export*from"./geolocationRequest";export*from"./optIns";// Core Constants
1
+ import{INDEX_PATH,INDEX_PATH_DEEPLINK,LOGIN_PATH}from'@shopgate/pwa-common/constants/RoutePaths';export{RECEIVE_SHOP_SETTINGS,ERROR_SHOP_SETTINGS,CACHE_LEASE_SHOP_SETTINGS,SHOP_SETTING_GOOGLE_SITE_VERIFICATION_CODE,SHOP_SETTING_CART_SUPPLEMENTAL_CONTENT,SHOP_SETTING_ORDER_SUPPLEMENTAL_CONTENT,SHOP_SETTING_SHOW_SHOP_LOGO_IN_APP,SHOP_SETTING_SHOW_SHOP_LOGO_IN_WEB,SHOP_SETTING_PRODUCTS_SORT_ORDER,SHOP_SETTING_COOKIE_CONSENT_MODE,SHOP_SETTING_DISPLAY_PRICE_PER_MEASURE_UNIT,SHOP_SETTING_IMAGES,SHOP_SETTING_IMAGES_PRODUCT_PLACEHOLDER,SHOP_SETTING_IMAGES_CATEGORY_PLACEHOLDER,SHOP_SETTING_IMAGES_FAVICON,SHOP_SETTING_NUMBER_OF_ADDRESS_LINES,SHOP_SETTING_REGISTRATION_MODE_SIMPLE,SHOP_SETTING_REGISTRATION_MODE_EXTENDED,SHOP_SETTING_WISHLIST_ITEM_QUANTITY_ENABLED,SHOP_SETTING_WISHLIST_ITEM_NOTES_ENABLED,SHOP_SETTING_LOAD_WISHLIST_ON_APP_START_ENABLED,SHOP_SETTING_SHOW_WISHLIST_ITEMS_COUNT_BADGE,SHOP_SETTING_ENABLE_CMS_2_FOR_ALL_SHOPPERS}from"./shopSettings";export{RECEIVE_MERCHANT_SETTINGS,MERCHANT_SETTINGS_LOCATION_BASED_SHOPPING_ENABLED,MERCHANT_SETTINGS_SUBSTITUTION_PREFERENCES_ENABLED,MERCHANT_SETTINGS_CUSTOMER_ATTRIBUTES,MERCHANT_SETTINGS_FULFILLMENT_SCHEDULED_ENABLED,MERCHANT_SETTINGS_RESTRICT_MULTI_LOCATION_ORDERS,MERCHANT_SETTINGS_DEFAULT_CURRENCY,MERCHANT_SETTINGS_ENABLE_WEB_INDEXING,MERCHANT_SETTINGS_PRODUCT_SHOW_ALTERNATIVE_LOCATION,MERCHANT_SETTINGS_PRODUCTLIST_SHOW_INVENTORY,MERCHANT_SETTINGS_ENABLED_CMS_VERSION}from"./merchantSettings";export{SHOPGATE_CORE_GET_SHOP_SETTINGS,EUNAUTHORIZED,EAUTHENTICATION}from"./pipelines";export*from"./actionTypes";export*from"./appFeatures";export*from"./deviceTypes";export*from"./geolocationRequest";export*from"./optIns";// Core Constants
2
2
  export*from'@shopgate/pwa-core/constants/ErrorManager';export*from'@shopgate/pwa-core/constants/AppEvents';export*from'@shopgate/pwa-core/constants/AppPermissions';export*from'@shopgate/pwa-core/constants/ErrorHandleTypes';export*from'@shopgate/pwa-core/constants/Pipeline';export*from'@shopgate/pwa-core/constants/ProcessTypes';export*from'@shopgate/pwa-core/constants/Scanner';export*from'@shopgate/pwa-core/constants/Trilean';// Common Constants
3
3
  export*from'@shopgate/pwa-common/constants/ActionTypes';export*from'@shopgate/pwa-common/constants/Configuration';export*from'@shopgate/pwa-common/constants/Device';export*from'@shopgate/pwa-common/constants/DisplayOptions';export*from'@shopgate/pwa-common/constants/Pipelines';export*from'@shopgate/pwa-common/constants/Portals';// CLIENT CONSTANTS
4
4
  export*from'@shopgate/pwa-common/constants/client';// MENU CONSTANTS
@@ -1 +1 @@
1
- export var RECEIVE_MERCHANT_SETTINGS='RECEIVE_MERCHANT_SETTINGS';export var MERCHANT_SETTINGS_LOCATION_BASED_SHOPPING_ENABLED='locationBasedShoppingEnabled';export var MERCHANT_SETTINGS_SUBSTITUTION_PREFERENCES_ENABLED='enableSubstitutionPreferences';export var MERCHANT_SETTINGS_CUSTOMER_ATTRIBUTES='customerAttributes';export var MERCHANT_SETTINGS_FULFILLMENT_SCHEDULED_ENABLED='enableFulfillmentScheduling';export var MERCHANT_SETTINGS_RESTRICT_MULTI_LOCATION_ORDERS='restrictMultiLocationOrders';export var MERCHANT_SETTINGS_DEFAULT_CURRENCY='defaultCurrency';export var MERCHANT_SETTINGS_ENABLE_WEB_INDEXING='enableWebIndexing';export var MERCHANT_SETTINGS_PRODUCT_SHOW_ALTERNATIVE_LOCATION='productShowAlternativeLocation';export var MERCHANT_SETTINGS_PRODUCTLIST_SHOW_INVENTORY='productListShowInventory';
1
+ export var RECEIVE_MERCHANT_SETTINGS='RECEIVE_MERCHANT_SETTINGS';export var MERCHANT_SETTINGS_LOCATION_BASED_SHOPPING_ENABLED='locationBasedShoppingEnabled';export var MERCHANT_SETTINGS_SUBSTITUTION_PREFERENCES_ENABLED='enableSubstitutionPreferences';export var MERCHANT_SETTINGS_CUSTOMER_ATTRIBUTES='customerAttributes';export var MERCHANT_SETTINGS_FULFILLMENT_SCHEDULED_ENABLED='enableFulfillmentScheduling';export var MERCHANT_SETTINGS_RESTRICT_MULTI_LOCATION_ORDERS='restrictMultiLocationOrders';export var MERCHANT_SETTINGS_DEFAULT_CURRENCY='defaultCurrency';export var MERCHANT_SETTINGS_ENABLE_WEB_INDEXING='enableWebIndexing';export var MERCHANT_SETTINGS_PRODUCT_SHOW_ALTERNATIVE_LOCATION='productShowAlternativeLocation';export var MERCHANT_SETTINGS_PRODUCTLIST_SHOW_INVENTORY='productListShowInventory';export var MERCHANT_SETTINGS_ENABLED_CMS_VERSION='enabledCmsVersion';
@@ -1,2 +1,2 @@
1
1
  export var RECEIVE_SHOP_SETTINGS='RECEIVE_SHOP_SETTINGS';export var ERROR_SHOP_SETTINGS='ERROR_SHOP_SETTINGS';export var CACHE_LEASE_SHOP_SETTINGS=10*60*1000;// 10 minutes in milliseconds
2
- export var SHOP_SETTING_GOOGLE_SITE_VERIFICATION_CODE='googleSiteVerificationCode';export var SHOP_SETTING_CART_SUPPLEMENTAL_CONTENT='cartSupplementalContent';export var SHOP_SETTING_ORDER_SUPPLEMENTAL_CONTENT='orderSupplementalContent';export var SHOP_SETTING_SHOW_SHOP_LOGO_IN_APP='showShopLogoInApp';export var SHOP_SETTING_SHOW_SHOP_LOGO_IN_WEB='showShopLogoInWeb';export var SHOP_SETTING_PRODUCTS_SORT_ORDER='productsSortOrder';export var SHOP_SETTING_WISHLIST_MODE='wishlistMode';export var SHOP_SETTING_COOKIE_CONSENT_MODE='cookieConsentMode';export var SHOP_SETTING_DISPLAY_PRICE_PER_MEASURE_UNIT='displayPricePerMeasureUnit';export var SHOP_SETTING_IMAGES='images';export var SHOP_SETTING_IMAGES_PRODUCT_PLACEHOLDER='productPlaceholder';export var SHOP_SETTING_IMAGES_CATEGORY_PLACEHOLDER='categoryPlaceholder';export var SHOP_SETTING_IMAGES_FAVICON='favicon';export var SHOP_SETTING_NUMBER_OF_ADDRESS_LINES='numberOfAddressLines';export var SHOP_SETTINGS_SHOW_CATEGORY_IMAGES='showCategoryImages';export var SHOP_SETTING_REGISTRATION_MODE='registrationMode';export var SHOP_SETTING_REGISTRATION_MODE_SIMPLE='simple';export var SHOP_SETTING_REGISTRATION_MODE_EXTENDED='extended';export var SHOP_SETTING_WISHLIST_ITEM_QUANTITY_ENABLED='wishlistItemQuantityEnabled';export var SHOP_SETTING_WISHLIST_ITEM_NOTES_ENABLED='wishlistItemNotesEnabled';export var SHOP_SETTING_LOAD_WISHLIST_ON_APP_START_ENABLED='loadWishlistOnAppStartEnabled';export var SHOP_SETTING_SHOW_WISHLIST_ITEMS_COUNT_BADGE='showWishlistItemsCountBadge';export var WISHLIST_MODE_PERSIST_ON_ADD='persistOnAdd';
2
+ export var SHOP_SETTING_GOOGLE_SITE_VERIFICATION_CODE='googleSiteVerificationCode';export var SHOP_SETTING_CART_SUPPLEMENTAL_CONTENT='cartSupplementalContent';export var SHOP_SETTING_ORDER_SUPPLEMENTAL_CONTENT='orderSupplementalContent';export var SHOP_SETTING_SHOW_SHOP_LOGO_IN_APP='showShopLogoInApp';export var SHOP_SETTING_SHOW_SHOP_LOGO_IN_WEB='showShopLogoInWeb';export var SHOP_SETTING_PRODUCTS_SORT_ORDER='productsSortOrder';export var SHOP_SETTING_WISHLIST_MODE='wishlistMode';export var SHOP_SETTING_COOKIE_CONSENT_MODE='cookieConsentMode';export var SHOP_SETTING_DISPLAY_PRICE_PER_MEASURE_UNIT='displayPricePerMeasureUnit';export var SHOP_SETTING_IMAGES='images';export var SHOP_SETTING_IMAGES_PRODUCT_PLACEHOLDER='productPlaceholder';export var SHOP_SETTING_IMAGES_CATEGORY_PLACEHOLDER='categoryPlaceholder';export var SHOP_SETTING_IMAGES_FAVICON='favicon';export var SHOP_SETTING_NUMBER_OF_ADDRESS_LINES='numberOfAddressLines';export var SHOP_SETTINGS_SHOW_CATEGORY_IMAGES='showCategoryImages';export var SHOP_SETTING_REGISTRATION_MODE='registrationMode';export var SHOP_SETTING_REGISTRATION_MODE_SIMPLE='simple';export var SHOP_SETTING_REGISTRATION_MODE_EXTENDED='extended';export var SHOP_SETTING_WISHLIST_ITEM_QUANTITY_ENABLED='wishlistItemQuantityEnabled';export var SHOP_SETTING_WISHLIST_ITEM_NOTES_ENABLED='wishlistItemNotesEnabled';export var SHOP_SETTING_LOAD_WISHLIST_ON_APP_START_ENABLED='loadWishlistOnAppStartEnabled';export var SHOP_SETTING_SHOW_WISHLIST_ITEMS_COUNT_BADGE='showWishlistItemsCountBadge';export var SHOP_SETTING_ENABLE_CMS_2_FOR_ALL_SHOPPERS='enableCms2ForAllShoppers';export var WISHLIST_MODE_PERSIST_ON_ADD='persistOnAdd';
@@ -9,5 +9,5 @@ import{useRef,useCallback}from'react';/** @typedef {import('./useLongPress').Lon
9
9
  * @param {(e: Event) => void} callback - Function to call on long press.
10
10
  * @param {UseLongPressOptions} [options={}] - Configuration and lifecycle callbacks.
11
11
  * @returns {LongPressHandlers} An object containing event handlers for mouse and touch events.
12
- */export default function useLongPress(callback){var _ref=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},_ref$threshold=_ref.threshold,threshold=_ref$threshold===void 0?1000:_ref$threshold,onStart=_ref.onStart,onFinish=_ref.onFinish,onCancel=_ref.onCancel;var timerRef=useRef(null);var triggeredRef=useRef(false);var start=useCallback(function(e){if(onStart)onStart(e);triggeredRef.current=false;timerRef.current=setTimeout(function(){callback(e);triggeredRef.current=true;if(onFinish)onFinish(e);},threshold);},[onStart,threshold,callback,onFinish]);var cancel=useCallback(function(e){clearTimeout(timerRef.current);if(!triggeredRef.current&&onCancel){onCancel(e);}},[onCancel]);return{onMouseDown:start,onTouchStart:start,onMouseUp:cancel,onMouseLeave:cancel,onTouchEnd:cancel,// prevents right-click or long-press menu
12
+ */export default function useLongPress(callback){var _ref=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},_ref$threshold=_ref.threshold,threshold=_ref$threshold===void 0?1000:_ref$threshold,onStart=_ref.onStart,onFinish=_ref.onFinish,onCancel=_ref.onCancel;/** @type {import('react').MutableRefObject<number | undefined>} */var timerRef=useRef(undefined);var triggeredRef=useRef(false);var start=useCallback(function(e){if(onStart)onStart(e);triggeredRef.current=false;timerRef.current=window.setTimeout(function(){callback(e);triggeredRef.current=true;if(onFinish)onFinish(e);},threshold);},[onStart,threshold,callback,onFinish]);var cancel=useCallback(function(e){window.clearTimeout(timerRef.current);if(!triggeredRef.current&&onCancel){onCancel(e);}},[onCancel]);return{onMouseDown:start,onTouchStart:start,onMouseUp:cancel,onMouseLeave:cancel,onTouchEnd:cancel,// prevents right-click or long-press menu
13
13
  onContextMenu:preventContextMenu};}
@@ -1,4 +1,4 @@
1
- function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import{produce}from'immer';import appConfig from'@shopgate/pwa-common/helpers/config';import{RECEIVE_MERCHANT_SETTINGS,MERCHANT_SETTINGS_LOCATION_BASED_SHOPPING_ENABLED,MERCHANT_SETTINGS_SUBSTITUTION_PREFERENCES_ENABLED,MERCHANT_SETTINGS_RESTRICT_MULTI_LOCATION_ORDERS,MERCHANT_SETTINGS_DEFAULT_CURRENCY,MERCHANT_SETTINGS_ENABLE_WEB_INDEXING}from"../constants";var _appConfig$locales=appConfig.locales,_appConfig$locales2=_appConfig$locales===void 0?{}:_appConfig$locales,_appConfig$locales2$c=_appConfig$locales2.currency,currency=_appConfig$locales2$c===void 0?null:_appConfig$locales2$c;var defaultState=_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({},MERCHANT_SETTINGS_LOCATION_BASED_SHOPPING_ENABLED,false),MERCHANT_SETTINGS_SUBSTITUTION_PREFERENCES_ENABLED,false),MERCHANT_SETTINGS_RESTRICT_MULTI_LOCATION_ORDERS,false),MERCHANT_SETTINGS_DEFAULT_CURRENCY,currency),MERCHANT_SETTINGS_ENABLE_WEB_INDEXING,false);/**
1
+ function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import{produce}from'immer';import appConfig from'@shopgate/pwa-common/helpers/config';import{RECEIVE_MERCHANT_SETTINGS,MERCHANT_SETTINGS_LOCATION_BASED_SHOPPING_ENABLED,MERCHANT_SETTINGS_SUBSTITUTION_PREFERENCES_ENABLED,MERCHANT_SETTINGS_RESTRICT_MULTI_LOCATION_ORDERS,MERCHANT_SETTINGS_DEFAULT_CURRENCY,MERCHANT_SETTINGS_ENABLE_WEB_INDEXING,MERCHANT_SETTINGS_ENABLED_CMS_VERSION}from"../constants";var _appConfig$locales=appConfig.locales,_appConfig$locales2=_appConfig$locales===void 0?{}:_appConfig$locales,_appConfig$locales2$c=_appConfig$locales2.currency,currency=_appConfig$locales2$c===void 0?null:_appConfig$locales2$c;var defaultState=_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({},MERCHANT_SETTINGS_LOCATION_BASED_SHOPPING_ENABLED,false),MERCHANT_SETTINGS_SUBSTITUTION_PREFERENCES_ENABLED,false),MERCHANT_SETTINGS_RESTRICT_MULTI_LOCATION_ORDERS,false),MERCHANT_SETTINGS_DEFAULT_CURRENCY,currency),MERCHANT_SETTINGS_ENABLE_WEB_INDEXING,false),MERCHANT_SETTINGS_ENABLED_CMS_VERSION,'v1');/**
2
2
  * Stores the merchant settings.
3
3
  * @param {Object} [state={}] The current state.
4
4
  * @param {Object} action The action object.
@@ -1,4 +1,4 @@
1
- var _defaultState;function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import{produce}from'immer';import{SORT_RELEVANCE}from'@shopgate/pwa-common/constants/DisplayOptions';import{RECEIVE_SHOP_SETTINGS,ERROR_SHOP_SETTINGS,SHOP_SETTING_GOOGLE_SITE_VERIFICATION_CODE,SHOP_SETTING_CART_SUPPLEMENTAL_CONTENT,SHOP_SETTING_ORDER_SUPPLEMENTAL_CONTENT,SHOP_SETTING_SHOW_SHOP_LOGO_IN_WEB,SHOP_SETTING_SHOW_SHOP_LOGO_IN_APP,SHOP_SETTING_PRODUCTS_SORT_ORDER,SHOP_SETTING_IMAGES,SHOP_SETTING_IMAGES_PRODUCT_PLACEHOLDER,SHOP_SETTING_IMAGES_CATEGORY_PLACEHOLDER,SHOP_SETTING_IMAGES_FAVICON,SHOP_SETTING_NUMBER_OF_ADDRESS_LINES,SHOP_SETTING_WISHLIST_ITEM_QUANTITY_ENABLED,SHOP_SETTING_WISHLIST_ITEM_NOTES_ENABLED,SHOP_SETTING_LOAD_WISHLIST_ON_APP_START_ENABLED,SHOP_SETTING_SHOW_WISHLIST_ITEMS_COUNT_BADGE}from"../constants";var defaultState=(_defaultState={},_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defaultState,SHOP_SETTING_GOOGLE_SITE_VERIFICATION_CODE,null),SHOP_SETTING_CART_SUPPLEMENTAL_CONTENT,null),SHOP_SETTING_ORDER_SUPPLEMENTAL_CONTENT,null),SHOP_SETTING_SHOW_SHOP_LOGO_IN_WEB,true),SHOP_SETTING_SHOW_SHOP_LOGO_IN_APP,true),SHOP_SETTING_PRODUCTS_SORT_ORDER,SORT_RELEVANCE),SHOP_SETTING_NUMBER_OF_ADDRESS_LINES,2),SHOP_SETTING_IMAGES,_defineProperty(_defineProperty(_defineProperty({},SHOP_SETTING_IMAGES_PRODUCT_PLACEHOLDER,null),SHOP_SETTING_IMAGES_CATEGORY_PLACEHOLDER,null),SHOP_SETTING_IMAGES_FAVICON,null)),SHOP_SETTING_WISHLIST_ITEM_QUANTITY_ENABLED,false),SHOP_SETTING_WISHLIST_ITEM_NOTES_ENABLED,false),_defineProperty(_defineProperty(_defaultState,SHOP_SETTING_LOAD_WISHLIST_ON_APP_START_ENABLED,true),SHOP_SETTING_SHOW_WISHLIST_ITEMS_COUNT_BADGE,true));/**
1
+ var _defaultState;function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import{produce}from'immer';import{SORT_RELEVANCE}from'@shopgate/pwa-common/constants/DisplayOptions';import{RECEIVE_SHOP_SETTINGS,ERROR_SHOP_SETTINGS,SHOP_SETTING_GOOGLE_SITE_VERIFICATION_CODE,SHOP_SETTING_CART_SUPPLEMENTAL_CONTENT,SHOP_SETTING_ORDER_SUPPLEMENTAL_CONTENT,SHOP_SETTING_SHOW_SHOP_LOGO_IN_WEB,SHOP_SETTING_SHOW_SHOP_LOGO_IN_APP,SHOP_SETTING_PRODUCTS_SORT_ORDER,SHOP_SETTING_IMAGES,SHOP_SETTING_IMAGES_PRODUCT_PLACEHOLDER,SHOP_SETTING_IMAGES_CATEGORY_PLACEHOLDER,SHOP_SETTING_IMAGES_FAVICON,SHOP_SETTING_NUMBER_OF_ADDRESS_LINES,SHOP_SETTING_WISHLIST_ITEM_QUANTITY_ENABLED,SHOP_SETTING_WISHLIST_ITEM_NOTES_ENABLED,SHOP_SETTING_LOAD_WISHLIST_ON_APP_START_ENABLED,SHOP_SETTING_SHOW_WISHLIST_ITEMS_COUNT_BADGE,SHOP_SETTING_ENABLE_CMS_2_FOR_ALL_SHOPPERS}from"../constants";var defaultState=(_defaultState={},_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defaultState,SHOP_SETTING_GOOGLE_SITE_VERIFICATION_CODE,null),SHOP_SETTING_CART_SUPPLEMENTAL_CONTENT,null),SHOP_SETTING_ORDER_SUPPLEMENTAL_CONTENT,null),SHOP_SETTING_SHOW_SHOP_LOGO_IN_WEB,true),SHOP_SETTING_SHOW_SHOP_LOGO_IN_APP,true),SHOP_SETTING_PRODUCTS_SORT_ORDER,SORT_RELEVANCE),SHOP_SETTING_NUMBER_OF_ADDRESS_LINES,2),SHOP_SETTING_IMAGES,_defineProperty(_defineProperty(_defineProperty({},SHOP_SETTING_IMAGES_PRODUCT_PLACEHOLDER,null),SHOP_SETTING_IMAGES_CATEGORY_PLACEHOLDER,null),SHOP_SETTING_IMAGES_FAVICON,null)),SHOP_SETTING_WISHLIST_ITEM_QUANTITY_ENABLED,false),SHOP_SETTING_WISHLIST_ITEM_NOTES_ENABLED,false),_defineProperty(_defineProperty(_defineProperty(_defaultState,SHOP_SETTING_LOAD_WISHLIST_ON_APP_START_ENABLED,true),SHOP_SETTING_SHOW_WISHLIST_ITEMS_COUNT_BADGE,true),SHOP_SETTING_ENABLE_CMS_2_FOR_ALL_SHOPPERS,false));/**
2
2
  * Stores the product locations by the location code.
3
3
  * @param {Object} [state={}] The current state.
4
4
  * @param {Object} action The action object.
@@ -1,4 +1,4 @@
1
- export{getState as getShopSettingsState,makeGetShopSettingByKey,makeGetShopSettings,getProductImagePlaceholder,getCategoryImagePlaceholder,getFavicon,getNumberOfAddressLines,getGoogleSiteVerificationCode,getRegistrationMode,getWishlistItemQuantityEnabled,getWishlistItemNotesEnabled,getShowWishlistItemsCountBadge,getLoadWishlistOnAppStartEnabled}from"./shopSettings";export{getIsLocationBasedShopping,getFulfillmentSchedulingEnabled,getRestrictMultiLocationOrders,getDefaultCurrency,getEnableWebIndexing,getProductShowAlternativeLocation,getProductListShowInventory}from"./merchantSettings";export*from"../config/config.selectors";export*from"./app";// --------------- CLIENT --------------- //
1
+ export{getState as getShopSettingsState,makeGetShopSettingByKey,makeGetShopSettings,getProductImagePlaceholder,getCategoryImagePlaceholder,getFavicon,getNumberOfAddressLines,getGoogleSiteVerificationCode,getRegistrationMode,getWishlistItemQuantityEnabled,getWishlistItemNotesEnabled,getShowWishlistItemsCountBadge,getLoadWishlistOnAppStartEnabled,getEnableCms2ForAllShoppers}from"./shopSettings";export{getIsLocationBasedShopping,getFulfillmentSchedulingEnabled,getRestrictMultiLocationOrders,getDefaultCurrency,getEnableWebIndexing,getProductShowAlternativeLocation,getProductListShowInventory,getEnabledCMSVersion}from"./merchantSettings";export*from"../config/config.selectors";export*from"./app";// --------------- CLIENT --------------- //
2
2
  export*from'@shopgate/pwa-common/selectors/client';// --------------- ROUTER --------------- //
3
3
  export*from'@shopgate/pwa-common/selectors/router';export*from'@shopgate/pwa-common/selectors/history';// --------------- URL --------------- //
4
4
  export*from'@shopgate/pwa-common/selectors/url';// --------------- MENU --------------- //
@@ -1,4 +1,4 @@
1
- import{createSelector}from'reselect';import{MERCHANT_SETTINGS_LOCATION_BASED_SHOPPING_ENABLED,MERCHANT_SETTINGS_SUBSTITUTION_PREFERENCES_ENABLED,MERCHANT_SETTINGS_CUSTOMER_ATTRIBUTES,MERCHANT_SETTINGS_FULFILLMENT_SCHEDULED_ENABLED,MERCHANT_SETTINGS_RESTRICT_MULTI_LOCATION_ORDERS,MERCHANT_SETTINGS_DEFAULT_CURRENCY,MERCHANT_SETTINGS_ENABLE_WEB_INDEXING,MERCHANT_SETTINGS_PRODUCT_SHOW_ALTERNATIVE_LOCATION,MERCHANT_SETTINGS_PRODUCTLIST_SHOW_INVENTORY}from"../constants";/**
1
+ import{createSelector}from'reselect';import{MERCHANT_SETTINGS_LOCATION_BASED_SHOPPING_ENABLED,MERCHANT_SETTINGS_SUBSTITUTION_PREFERENCES_ENABLED,MERCHANT_SETTINGS_CUSTOMER_ATTRIBUTES,MERCHANT_SETTINGS_FULFILLMENT_SCHEDULED_ENABLED,MERCHANT_SETTINGS_RESTRICT_MULTI_LOCATION_ORDERS,MERCHANT_SETTINGS_DEFAULT_CURRENCY,MERCHANT_SETTINGS_ENABLE_WEB_INDEXING,MERCHANT_SETTINGS_PRODUCT_SHOW_ALTERNATIVE_LOCATION,MERCHANT_SETTINGS_PRODUCTLIST_SHOW_INVENTORY,MERCHANT_SETTINGS_ENABLED_CMS_VERSION}from"../constants";/**
2
2
  * Retrieves the merchantSettings state from the store.
3
3
  * @param {Object} state The current application state.
4
4
  * @return {Object} The locations state.
@@ -7,4 +7,7 @@ import{createSelector}from'reselect';import{MERCHANT_SETTINGS_LOCATION_BASED_SHO
7
7
  * @param {string} key The key of the merchant setting
8
8
  * @param {*} [fallback=null] The fallback value when no value can be determined.
9
9
  * @returns {Function}
10
- */var makeGetMerchantSettingByKey=function makeGetMerchantSettingByKey(key){var fallback=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;return createSelector(getState,function(state){return typeof(state===null||state===void 0?void 0:state[key])!=='undefined'?state===null||state===void 0?void 0:state[key]:fallback;});};export var getIsLocationBasedShopping=makeGetMerchantSettingByKey(MERCHANT_SETTINGS_LOCATION_BASED_SHOPPING_ENABLED,false);export var getSubstitutionPreferencesEnabled=makeGetMerchantSettingByKey(MERCHANT_SETTINGS_SUBSTITUTION_PREFERENCES_ENABLED,false);export var getMerchantCustomerAttributes=makeGetMerchantSettingByKey(MERCHANT_SETTINGS_CUSTOMER_ATTRIBUTES,[]);export var getFulfillmentSchedulingEnabled=makeGetMerchantSettingByKey(MERCHANT_SETTINGS_FULFILLMENT_SCHEDULED_ENABLED,false);export var getRestrictMultiLocationOrders=makeGetMerchantSettingByKey(MERCHANT_SETTINGS_RESTRICT_MULTI_LOCATION_ORDERS,false);export var getDefaultCurrency=makeGetMerchantSettingByKey(MERCHANT_SETTINGS_DEFAULT_CURRENCY);export var getEnableWebIndexing=makeGetMerchantSettingByKey(MERCHANT_SETTINGS_ENABLE_WEB_INDEXING,false);export var getProductShowAlternativeLocation=makeGetMerchantSettingByKey(MERCHANT_SETTINGS_PRODUCT_SHOW_ALTERNATIVE_LOCATION,false);export var getProductListShowInventory=makeGetMerchantSettingByKey(MERCHANT_SETTINGS_PRODUCTLIST_SHOW_INVENTORY,false);
10
+ */var makeGetMerchantSettingByKey=function makeGetMerchantSettingByKey(key){var fallback=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;return createSelector(getState,function(state){return typeof(state===null||state===void 0?void 0:state[key])!=='undefined'?state===null||state===void 0?void 0:state[key]:fallback;});};export var getIsLocationBasedShopping=makeGetMerchantSettingByKey(MERCHANT_SETTINGS_LOCATION_BASED_SHOPPING_ENABLED,false);export var getSubstitutionPreferencesEnabled=makeGetMerchantSettingByKey(MERCHANT_SETTINGS_SUBSTITUTION_PREFERENCES_ENABLED,false);export var getMerchantCustomerAttributes=makeGetMerchantSettingByKey(MERCHANT_SETTINGS_CUSTOMER_ATTRIBUTES,[]);export var getFulfillmentSchedulingEnabled=makeGetMerchantSettingByKey(MERCHANT_SETTINGS_FULFILLMENT_SCHEDULED_ENABLED,false);export var getRestrictMultiLocationOrders=makeGetMerchantSettingByKey(MERCHANT_SETTINGS_RESTRICT_MULTI_LOCATION_ORDERS,false);export var getDefaultCurrency=makeGetMerchantSettingByKey(MERCHANT_SETTINGS_DEFAULT_CURRENCY);export var getEnableWebIndexing=makeGetMerchantSettingByKey(MERCHANT_SETTINGS_ENABLE_WEB_INDEXING,false);export var getProductShowAlternativeLocation=makeGetMerchantSettingByKey(MERCHANT_SETTINGS_PRODUCT_SHOW_ALTERNATIVE_LOCATION,false);export var getProductListShowInventory=makeGetMerchantSettingByKey(MERCHANT_SETTINGS_PRODUCTLIST_SHOW_INVENTORY,false);/**
11
+ * Selector that retrieves the enabled CMS version.
12
+ * @type {(state: RootState) => "v1" | "v2" | "both"}
13
+ */export var getEnabledCMSVersion=makeGetMerchantSettingByKey(MERCHANT_SETTINGS_ENABLED_CMS_VERSION,'v1');export{getState};
@@ -1,4 +1,4 @@
1
- import{createSelector}from'reselect';import{WISHLIST_MODE_PERSIST_ON_ADD,SHOP_SETTING_WISHLIST_MODE,SHOP_SETTING_IMAGES,SHOP_SETTING_IMAGES_PRODUCT_PLACEHOLDER,SHOP_SETTING_IMAGES_CATEGORY_PLACEHOLDER,SHOP_SETTING_IMAGES_FAVICON,SHOP_SETTING_NUMBER_OF_ADDRESS_LINES,SHOP_SETTING_GOOGLE_SITE_VERIFICATION_CODE,SHOP_SETTINGS_SHOW_CATEGORY_IMAGES,SHOP_SETTING_REGISTRATION_MODE,SHOP_SETTING_REGISTRATION_MODE_EXTENDED,SHOP_SETTING_LOAD_WISHLIST_ON_APP_START_ENABLED,SHOP_SETTING_WISHLIST_ITEM_QUANTITY_ENABLED,SHOP_SETTING_WISHLIST_ITEM_NOTES_ENABLED,SHOP_SETTING_SHOW_WISHLIST_ITEMS_COUNT_BADGE}from"../constants/shopSettings";/**
1
+ import{createSelector}from'reselect';import{WISHLIST_MODE_PERSIST_ON_ADD,SHOP_SETTING_WISHLIST_MODE,SHOP_SETTING_IMAGES,SHOP_SETTING_IMAGES_PRODUCT_PLACEHOLDER,SHOP_SETTING_IMAGES_CATEGORY_PLACEHOLDER,SHOP_SETTING_IMAGES_FAVICON,SHOP_SETTING_NUMBER_OF_ADDRESS_LINES,SHOP_SETTING_GOOGLE_SITE_VERIFICATION_CODE,SHOP_SETTINGS_SHOW_CATEGORY_IMAGES,SHOP_SETTING_REGISTRATION_MODE,SHOP_SETTING_REGISTRATION_MODE_EXTENDED,SHOP_SETTING_LOAD_WISHLIST_ON_APP_START_ENABLED,SHOP_SETTING_WISHLIST_ITEM_QUANTITY_ENABLED,SHOP_SETTING_WISHLIST_ITEM_NOTES_ENABLED,SHOP_SETTING_SHOW_WISHLIST_ITEMS_COUNT_BADGE,SHOP_SETTING_ENABLE_CMS_2_FOR_ALL_SHOPPERS}from"../constants/shopSettings";/**
2
2
  * Retrieves the shopSettings state from the store.
3
3
  * @param {Object} state The current application state.
4
4
  * @return {Object} The locations state.
@@ -22,4 +22,7 @@ import{createSelector}from'reselect';import{WISHLIST_MODE_PERSIST_ON_ADD,SHOP_SE
22
22
  */export var getNumberOfAddressLines=makeGetShopSettingByKey(SHOP_SETTING_NUMBER_OF_ADDRESS_LINES,2);export var getGoogleSiteVerificationCode=makeGetShopSettingByKey(SHOP_SETTING_GOOGLE_SITE_VERIFICATION_CODE,'');export var getShowCategoryImages=makeGetShopSettingByKey(SHOP_SETTINGS_SHOW_CATEGORY_IMAGES,true);/**
23
23
  * Creates a selector to retrieve the current active registration mode.
24
24
  * When the selector returns "simple" the form will not contain any address related fields.
25
- */export var getRegistrationMode=makeGetShopSettingByKey(SHOP_SETTING_REGISTRATION_MODE,SHOP_SETTING_REGISTRATION_MODE_EXTENDED);export var getWishlistItemQuantityEnabled=makeGetShopSettingByKey(SHOP_SETTING_WISHLIST_ITEM_QUANTITY_ENABLED,false);export var getWishlistItemNotesEnabled=makeGetShopSettingByKey(SHOP_SETTING_WISHLIST_ITEM_NOTES_ENABLED,false);export var getLoadWishlistOnAppStartEnabled=makeGetShopSettingByKey(SHOP_SETTING_LOAD_WISHLIST_ON_APP_START_ENABLED,true);export var getShowWishlistItemsCountBadge=createSelector(getLoadWishlistOnAppStartEnabled,makeGetShopSettingByKey(SHOP_SETTING_SHOW_WISHLIST_ITEMS_COUNT_BADGE,true),function(loadWishlistOnAppStartEnabled,showWishlistItemsCountBadge){return loadWishlistOnAppStartEnabled?showWishlistItemsCountBadge:false;});
25
+ */export var getRegistrationMode=makeGetShopSettingByKey(SHOP_SETTING_REGISTRATION_MODE,SHOP_SETTING_REGISTRATION_MODE_EXTENDED);export var getWishlistItemQuantityEnabled=makeGetShopSettingByKey(SHOP_SETTING_WISHLIST_ITEM_QUANTITY_ENABLED,false);export var getWishlistItemNotesEnabled=makeGetShopSettingByKey(SHOP_SETTING_WISHLIST_ITEM_NOTES_ENABLED,false);export var getLoadWishlistOnAppStartEnabled=makeGetShopSettingByKey(SHOP_SETTING_LOAD_WISHLIST_ON_APP_START_ENABLED,true);export var getShowWishlistItemsCountBadge=createSelector(getLoadWishlistOnAppStartEnabled,makeGetShopSettingByKey(SHOP_SETTING_SHOW_WISHLIST_ITEMS_COUNT_BADGE,true),function(loadWishlistOnAppStartEnabled,showWishlistItemsCountBadge){return loadWishlistOnAppStartEnabled?showWishlistItemsCountBadge:false;});/**
26
+ * Selector that determines if CMS 2 is enabled for all shoppers.
27
+ * @type {(state: RootState) => boolean}
28
+ */export var getEnableCms2ForAllShoppers=makeGetShopSettingByKey(SHOP_SETTING_ENABLE_CMS_2_FOR_ALL_SHOPPERS,false);
@@ -1,4 +1,4 @@
1
- import{DEVELOPMENT_TOOLS_TOGGLE_INSETS,DEVELOPMENT_TOOLS_TOGGLE_INSET_HIGHLIGHT}from"../constants";/**
1
+ import{DEVELOPMENT_TOOLS_TOGGLE_INSETS,DEVELOPMENT_TOOLS_TOGGLE_INSET_HIGHLIGHT,DEVELOPMENT_TOOLS_TOGGLE_CMS2_PREVIEW}from"../constants";/**
2
2
  * Toggles the simulation of iOS safe area insets.
3
3
  * @param {boolean} visible Whether the insets should be visible or not.
4
4
  * @returns {Object} The action object.
@@ -6,4 +6,8 @@ import{DEVELOPMENT_TOOLS_TOGGLE_INSETS,DEVELOPMENT_TOOLS_TOGGLE_INSET_HIGHLIGHT}
6
6
  * Toggles the highlighting of the simulated iOS safe area insets.
7
7
  * @param {boolean} visible Whether the insets should be visible or not.
8
8
  * @returns {Object} The action object.
9
- */export var toggleInsetHighlight=function toggleInsetHighlight(){var visible=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;return{type:DEVELOPMENT_TOOLS_TOGGLE_INSET_HIGHLIGHT,visible:visible};};
9
+ */export var toggleInsetHighlight=function toggleInsetHighlight(){var visible=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;return{type:DEVELOPMENT_TOOLS_TOGGLE_INSET_HIGHLIGHT,visible:visible};};/**
10
+ * Toggles the CMS 2.0 preview mode.
11
+ * @param {boolean} enabled Whether the CMS 2.0 preview should be enabled or not.
12
+ * @returns {Object} The action object.
13
+ */export var toggleCms2Preview=function toggleCms2Preview(){var enabled=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;return{type:DEVELOPMENT_TOOLS_TOGGLE_CMS2_PREVIEW,enabled:enabled};};
@@ -0,0 +1,5 @@
1
+ function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}import React,{useState}from'react';import{useSelector}from'react-redux';import{makeStyles}from'@shopgate/engage/styles';import{useLongPress}from'@shopgate/engage/core/hooks';import{getClientInformation}from'@shopgate/engage/core/selectors';import DevelopmentSettings from"../DevelopmentSettings";var useStyles=makeStyles()(function(theme){return{root:{position:'relative',textAlign:'center',color:theme.palette.grey[500],fontSize:12,paddingBottom:20},unselectable:{WebkitTouchCallout:'none',WebkitUserSelect:'none',userSelect:'none'},deviceId:{wordBreak:['keep-all','break-word'],hyphens:'auto',padding:theme.spacing(0,2)}};});/**
2
+ * @param {Object} props The component props.
3
+ * @returns {JSX.Element}
4
+ */var ClientInformation=function ClientInformation(){var _useStyles=useStyles(),classes=_useStyles.classes,cx=_useStyles.cx;var _useState=useState(false),_useState2=_slicedToArray(_useState,2),deviceIdVisible=_useState2[0],setDeviceIdVisible=_useState2[1];var _useState3=useState(false),_useState4=_slicedToArray(_useState3,2),developmentSettingsVisible=_useState4[0],setDevelopmentSettingsVisible=_useState4[1];// Press handler to show the device ID
5
+ var longPressAttrs=useLongPress(function(){if(!deviceIdVisible){setDeviceIdVisible(true);}else{setDevelopmentSettingsVisible(true);}},{threshold:5000});var _useSelector=useSelector(getClientInformation),appVersion=_useSelector.appVersion,codebaseVersion=_useSelector.codebaseVersion,deviceId=_useSelector.deviceId,libVersion=_useSelector.libVersion;if(!codebaseVersion){return null;}return React.createElement("div",_extends({className:cx('ui-shared__client-information',classes.root)},longPressAttrs,{"aria-hidden":true}),React.createElement("p",{className:classes.unselectable},"App Version: ".concat(appVersion," (").concat(codebaseVersion,")"),React.createElement("br",null),"Lib Version: ".concat(libVersion)),deviceIdVisible&&React.createElement(React.Fragment,null,React.createElement("p",{className:classes.deviceId},"Device ID: ".concat(deviceId!==null&&deviceId!==void 0?deviceId:'')),React.createElement(DevelopmentSettings,{isOpen:developmentSettingsVisible,onClose:function onClose(){return setDevelopmentSettingsVisible(false);}})));};export default ClientInformation;
@@ -0,0 +1,4 @@
1
+ import{DataRequest}from'@shopgate/engage/core/classes';import{setDebugLoggingEnabled}from'@shopgate/engage/core/commands';/**
2
+ * Enable debug logging.
3
+ * @return {Function} A redux thunk.
4
+ */export var enableDebugLogging=function enableDebugLogging(){return function(){setDebugLoggingEnabled();new DataRequest('ajax_started_live_logging').dispatch();};};
@@ -0,0 +1 @@
1
+ export{default}from"./ClientInformation";
@@ -0,0 +1,9 @@
1
+ import React from'react';import PropTypes from'prop-types';import{useSelector,useDispatch}from'react-redux';import{SheetDrawer,RippleButton}from'@shopgate/engage/components';import{makeStyles}from'@shopgate/engage/styles';import{getEnabledCMSVersion,getEnableCms2ForAllShoppers}from'@shopgate/engage/core/selectors';import{getIsCMS2PreviewEnabled}from"../../selectors";import{toggleCms2Preview}from"../../action-creators";var useStyles=makeStyles()(function(theme){return{container:{padding:theme.spacing(2,2,4),display:'flex',justifyContent:'center'},button:{fontWeight:'normal'}};});/**
2
+ * Development settings component.
3
+ * @param {Object} props The component props.
4
+ * @param {boolean} props.isOpen Whether the drawer is open.
5
+ * @param {Function} props.onClose The function to call when the drawer should be closed.
6
+ * @returns {JSX.Element}
7
+ */var DevelopmentSettings=function DevelopmentSettings(_ref){var isOpen=_ref.isOpen,onClose=_ref.onClose;var _useStyles=useStyles(),classes=_useStyles.classes;var dispatch=useDispatch();var enabledCMSVersion=useSelector(getEnabledCMSVersion);var enableCms2ForAllShoppers=useSelector(getEnableCms2ForAllShoppers);var isCMS2PreviewEnabled=useSelector(getIsCMS2PreviewEnabled);// No need to show the preview toggle if CMS 2.0 is not available for the merchant or if it's
8
+ // already enabled for all shoppers.
9
+ if(enableCms2ForAllShoppers||enabledCMSVersion==='v1'){return null;}return React.createElement(SheetDrawer,{title:" ",isOpen:isOpen,onClose:onClose},React.createElement("div",{className:classes.container},React.createElement(RippleButton,{className:classes.button,type:"simple",onClick:function onClick(){onClose();setTimeout(function(){dispatch(toggleCms2Preview(!isCMS2PreviewEnabled));},300);}},"".concat(isCMS2PreviewEnabled?'Disable':'Enable'," CMS 2.0 Preview"))));};export default DevelopmentSettings;
@@ -0,0 +1 @@
1
+ export{default}from"./DevelopmentSettings";
@@ -1 +1 @@
1
- export{default as DevelopmentTools}from"./DevelopmentTools";
1
+ export{default as DevelopmentTools}from"./DevelopmentTools";export{default as ClientInformation}from"./ClientInformation";
@@ -1 +1 @@
1
- export var DEVELOPMENT_TOOLS_TOGGLE_INSETS='DEVELOPMENT_TOOLS_TOGGLE_INSETS';export var DEVELOPMENT_TOOLS_TOGGLE_INSET_HIGHLIGHT='DEVELOPMENT_TOOLS_TOGGLE_INSET_HIGHLIGHT';export var DEVELOPMENT_TOOLS_UPDATE_STATUS_BAR_STYLE_STORAGE='DEVELOPMENT_TOOLS_UPDATE_STATUS_BAR_STYLE_STORAGE';
1
+ export var DEVELOPMENT_TOOLS_TOGGLE_INSETS='DEVELOPMENT_TOOLS_TOGGLE_INSETS';export var DEVELOPMENT_TOOLS_TOGGLE_INSET_HIGHLIGHT='DEVELOPMENT_TOOLS_TOGGLE_INSET_HIGHLIGHT';export var DEVELOPMENT_TOOLS_UPDATE_STATUS_BAR_STYLE_STORAGE='DEVELOPMENT_TOOLS_UPDATE_STATUS_BAR_STYLE_STORAGE';export var DEVELOPMENT_TOOLS_TOGGLE_CMS2_PREVIEW='DEVELOPMENT_TOOLS_TOGGLE_CMS2_PREVIEW';
@@ -1,10 +1,10 @@
1
- import{produce}from'immer';import{isDev}from'@shopgate/engage/core/helpers';import{DEVELOPMENT_TOOLS_TOGGLE_INSETS,DEVELOPMENT_TOOLS_TOGGLE_INSET_HIGHLIGHT}from"../constants";/**
1
+ import{produce}from'immer';import{isDev}from'@shopgate/engage/core/helpers';import{DEVELOPMENT_TOOLS_TOGGLE_INSETS,DEVELOPMENT_TOOLS_TOGGLE_INSET_HIGHLIGHT,DEVELOPMENT_TOOLS_TOGGLE_CMS2_PREVIEW}from"../constants";/**
2
2
  * @typedef {Object} DevToolsSettingsState
3
3
  * @property {boolean} showInsets
4
4
  * @property {boolean} showInsetHighlight
5
- */ /** @type DevToolsSettingsState */var initialState={showInsets:null,showInsetHighlight:false};/**
5
+ */ /** @type DevToolsSettingsState */var initialState={showInsets:null,showInsetHighlight:false,cms2PreviewEnabled:false};/**
6
6
  * The reducer for all development tools settings related states.
7
7
  * @param {Object} state The application state.
8
8
  * @param {Object} action The redux action.
9
9
  * @returns {Object}
10
- */export default function settingsReducer(){var state=arguments.length>0&&arguments[0]!==undefined?arguments[0]:initialState;var action=arguments.length>1?arguments[1]:undefined;/* eslint-disable no-param-reassign */var producer=produce(/** @param {DevToolsSettingsState} draft The draft */function(draft){if(!isDev){return;}switch(action.type){case DEVELOPMENT_TOOLS_TOGGLE_INSETS:{draft.showInsets=action.visible;break;}case DEVELOPMENT_TOOLS_TOGGLE_INSET_HIGHLIGHT:{draft.showInsetHighlight=action.visible;break;}default:break;}});/* eslint-enable no-param-reassign */return producer(state);}
10
+ */export default function settingsReducer(){var state=arguments.length>0&&arguments[0]!==undefined?arguments[0]:initialState;var action=arguments.length>1?arguments[1]:undefined;/* eslint-disable no-param-reassign */var producer=produce(/** @param {DevToolsSettingsState} draft The draft */function(draft){switch(action.type){case DEVELOPMENT_TOOLS_TOGGLE_INSETS:{if(isDev){draft.showInsets=action.visible;}break;}case DEVELOPMENT_TOOLS_TOGGLE_INSET_HIGHLIGHT:{if(isDev){draft.showInsetHighlight=action.visible;}break;}case DEVELOPMENT_TOOLS_TOGGLE_CMS2_PREVIEW:{draft.cms2PreviewEnabled=action.enabled;break;}default:break;}});/* eslint-enable no-param-reassign */return producer(state);}
@@ -18,4 +18,7 @@ import{createSelector}from'reselect';import MobileDetect from'mobile-detect';imp
18
18
  if(!isDev){return false;}// No insets injected if PWA is running inside the app
19
19
  if(hasSGJavaScriptBridge()){return false;}// If the state contains a bool value, respect is.
20
20
  if(typeof insetsVisible==='boolean'){return insetsVisible;}// Show insets on simulated iOS devices by default if insets decision is not set.
21
- return insetsVisible===null&&md.os()==='iOS';});
21
+ return insetsVisible===null&&md.os()==='iOS';});/**
22
+ * Creates a selector to determine if the CMS2 preview is enabled.
23
+ * @type {(state: any) => boolean}
24
+ */export var getIsCMS2PreviewEnabled=createSelector(getState,function(settings){return!!settings.cms2PreviewEnabled;});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shopgate/engage",
3
- "version": "7.29.0-alpha.3",
3
+ "version": "7.29.0-alpha.4",
4
4
  "description": "Shopgate's ENGAGE library.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Shopgate <support@shopgate.com>",
@@ -17,12 +17,12 @@
17
17
  "dependencies": {
18
18
  "@emotion/react": "^11.14.0",
19
19
  "@shopgate/native-modules": "1.0.0-beta.25",
20
- "@shopgate/pwa-common": "7.29.0-alpha.3",
21
- "@shopgate/pwa-common-commerce": "7.29.0-alpha.3",
22
- "@shopgate/pwa-core": "7.29.0-alpha.3",
23
- "@shopgate/pwa-ui-ios": "7.29.0-alpha.3",
24
- "@shopgate/pwa-ui-material": "7.29.0-alpha.3",
25
- "@shopgate/pwa-ui-shared": "7.29.0-alpha.3",
20
+ "@shopgate/pwa-common": "7.29.0-alpha.4",
21
+ "@shopgate/pwa-common-commerce": "7.29.0-alpha.4",
22
+ "@shopgate/pwa-core": "7.29.0-alpha.4",
23
+ "@shopgate/pwa-ui-ios": "7.29.0-alpha.4",
24
+ "@shopgate/pwa-ui-material": "7.29.0-alpha.4",
25
+ "@shopgate/pwa-ui-shared": "7.29.0-alpha.4",
26
26
  "@stripe/react-stripe-js": "^1.16.5",
27
27
  "@stripe/stripe-js": "^1.3.1",
28
28
  "@virtuous/conductor": "~2.5.0",
@@ -3,20 +3,20 @@ import{REQUEST_PAGE_CONFIG_V2,RECEIVE_PAGE_CONFIG_V2,ERROR_PAGE_CONFIG_V2}from".
3
3
  */ /**
4
4
  * Creates the dispatched REQUEST_PAGE_CONFIG_V2 action object.
5
5
  * @param {Object} params The action params
6
- * @param {PageType} params.type The type of the page.
6
+ * @param {PageType} [params.type="cms"] The type of the page.
7
7
  * @param {string} [params.slug=null] The slug of the page (optional).
8
8
  * @returns {Object} The dispatched action object.
9
- */export var requestPageConfigV2=function requestPageConfigV2(_ref){var type=_ref.type,_ref$slug=_ref.slug,slug=_ref$slug===void 0?null:_ref$slug;return{type:REQUEST_PAGE_CONFIG_V2,pageType:type,pageSlug:slug};};/**
9
+ */export var requestPageConfigV2=function requestPageConfigV2(_ref){var _ref$type=_ref.type,type=_ref$type===void 0?'cms':_ref$type,_ref$slug=_ref.slug,slug=_ref$slug===void 0?null:_ref$slug;return{type:REQUEST_PAGE_CONFIG_V2,pageType:type,pageSlug:slug};};/**
10
10
  * Creates the dispatched RECEIVE_PAGE_CONFIG_V2 action object.
11
11
  * @param {Object} params The action params
12
- * @param {PageType} params.type The type of the page.
12
+ * @param {PageType} [params.type="cms"] The type of the page.
13
13
  * @param {Object} params.data The page data
14
14
  * @param {string} [params.slug=null] The slug of the page (optional).
15
15
  * @returns {Object} The dispatched action object.
16
- */export var receivePageConfigV2=function receivePageConfigV2(_ref2){var type=_ref2.type,data=_ref2.data,_ref2$slug=_ref2.slug,slug=_ref2$slug===void 0?null:_ref2$slug;return{type:RECEIVE_PAGE_CONFIG_V2,pageType:type,pageSlug:slug,data:data};};/**
16
+ */export var receivePageConfigV2=function receivePageConfigV2(_ref2){var _ref2$type=_ref2.type,type=_ref2$type===void 0?'cms':_ref2$type,data=_ref2.data,_ref2$slug=_ref2.slug,slug=_ref2$slug===void 0?null:_ref2$slug;return{type:RECEIVE_PAGE_CONFIG_V2,pageType:type,pageSlug:slug,data:data};};/**
17
17
  * Creates the dispatched ERROR_PAGE_CONFIG_V2 action object.
18
18
  * @param {Object} params The action params
19
- * @param {PageType} params.type The type of the page.
19
+ * @param {PageType} [params.type="cms"] The type of the page.
20
20
  * @param {string} [params.slug=null] The slug of the page (optional).
21
21
  * @returns {Object} The dispatched action object.
22
- */export var errorPageConfigV2=function errorPageConfigV2(_ref3){var type=_ref3.type,_ref3$slug=_ref3.slug,slug=_ref3$slug===void 0?null:_ref3$slug;return{type:ERROR_PAGE_CONFIG_V2,pageType:type,pageSlug:slug};};
22
+ */export var errorPageConfigV2=function errorPageConfigV2(_ref3){var _ref3$type=_ref3.type,type=_ref3$type===void 0?'cms':_ref3$type,_ref3$slug=_ref3.slug,slug=_ref3$slug===void 0?null:_ref3$slug;return{type:ERROR_PAGE_CONFIG_V2,pageType:type,pageSlug:slug};};
@@ -11,15 +11,27 @@ import _regeneratorRuntime from"@babel/runtime/regenerator";function asyncGenera
11
11
  * Retrieves the products for the current widget.
12
12
  * @param {UseWidgetProductsOptions} options Hook options
13
13
  * @returns {UseWidgetProductsResult} The products and a function to fetch more products.
14
- */export var useWidgetProducts=function useWidgetProducts(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var type=options.type,value=options.value,_options$limit=options.limit,limit=_options$limit===void 0?ITEMS_PER_LOAD:_options$limit,_options$sort=options.sort,sort=_options$sort===void 0?'relevance':_options$sort;var dispatch=useDispatch();var _useWidget=useWidget(),_useWidget$code=_useWidget.code,code=_useWidget$code===void 0?"".concat(type,"_").concat(value,"_").concat(limit,"_").concat(sort):_useWidget$code;// ###### Products selection ######
14
+ */export var useWidgetProducts=function useWidgetProducts(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var type=options.type,value=options.value,_options$limit=options.limit,limit=_options$limit===void 0?ITEMS_PER_LOAD:_options$limit,_options$sort=options.sort,sort=_options$sort===void 0?'relevance':_options$sort;var dispatch=useDispatch();var _useWidget=useWidget(),_useWidget$code=_useWidget.code,code=_useWidget$code===void 0?"".concat(type,"_").concat(value,"_").concat(limit,"_").concat(sort):_useWidget$code,isPreview=_useWidget.isPreview;// ###### Products selection ######
15
15
  var showInventoryInProductLists=useSelector(showInventoryInLists);var selectorOptions=useMemo(function(){return _extends({sort:transformDisplayOptions(sort),value:value,useDefaultRequestForProductIds:true},showInventoryInProductLists&&{useDefaultRequestForProductIds:true});},[showInventoryInProductLists,sort,value]);var getWidgetProducts=useMemo(function(){return makeGetWidgetProducts(type,selectorOptions,code);},[code,selectorOptions,type]);var widgetProducts=useSelector(getWidgetProducts);// ###### Products request ######
16
- var _useState=useState(true),_useState2=_slicedToArray(_useState,2),hasNext=_useState2[0],setHasNext=_useState2[1];var _useState3=useState(0),_useState4=_slicedToArray(_useState3,2),offset=_useState4[0],setOffset=_useState4[1];var isFetching=widgetProducts.isFetching;var baseRequestOptions=useMemo(function(){return _extends({limit:limit,sort:transformDisplayOptions(sort),useDefaultRequestForProductIds:true},showInventoryInProductLists&&{useDefaultRequestForProductIds:true});},[limit,showInventoryInProductLists,sort]);/**
16
+ // Outside the preview mode the offset and hasNext state are initialized based on previously
17
+ // fetched product data. That ensures that users see the same product list when they leave
18
+ // the page and come back later.
19
+ var _useState=useState(isPreview?0:widgetProducts.products.length),_useState2=_slicedToArray(_useState,2),offset=_useState2[0],setOffset=_useState2[1];var _useState3=useState(isPreview?true:widgetProducts.totalProductCount>widgetProducts.products.length),_useState4=_slicedToArray(_useState3,2),hasNext=_useState4[0],setHasNext=_useState4[1];var isFetching=widgetProducts.isFetching;var baseRequestOptions=useMemo(function(){return _extends({limit:limit,sort:transformDisplayOptions(sort),useDefaultRequestForProductIds:true},showInventoryInProductLists&&{useDefaultRequestForProductIds:true});},[limit,showInventoryInProductLists,sort]);/**
17
20
  * Callback to dispatch the initial fetch request for products when the hook mounts,
18
21
  * or when its parameters change.
19
- */var fetchInitial=useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var initialOptions,result;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(value){_context.next=3;break;}setHasNext(false);return _context.abrupt("return");case 3:// Initial request needs to start at offset 0
22
+ */var fetchInitial=useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var _result$totalProductC;var initialOptions,result;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(value){_context.next=3;break;}setHasNext(false);return _context.abrupt("return");case 3:// Initial request needs to start at offset 0
20
23
  initialOptions=_extends({},baseRequestOptions,{offset:0});_context.next=6;return dispatch(fetchProductsByQuery(REQUEST_TYPE_MAPPING[type],value,initialOptions,code));case 6:result=_context.sent;// Re-initialize offset and hasNext based on the result
21
- setOffset(limit);setHasNext(result.totalProductCount>limit);case 9:case"end":return _context.stop();}},_callee);})),[code,dispatch,type,value,limit,baseRequestOptions]);// Effect to trigger the initial fetch when the component mounts or the parameters change.
22
- useEffect(function(){fetchInitial();},[fetchInitial]);/**
24
+ setOffset(limit);// When the result comes from a real pipeline request there will be "totalProductCount".
25
+ // When the result are cached products, it can also be "totalResultCount".
26
+ setHasNext(((_result$totalProductC=result.totalProductCount)!==null&&_result$totalProductC!==void 0?_result$totalProductC:result.totalResultCount)>limit);case 9:case"end":return _context.stop();}},_callee);})),[code,dispatch,type,value,limit,baseRequestOptions]);// Effect to trigger the initial fetch when the component mounts or the parameters change.
27
+ useEffect(function(){if(!isPreview&&offset===0||isPreview){fetchInitial();}// This effect should only run at first render or when the fetchInitial callback updates.
28
+ // fetchInitial will never be updated on a real "page" at runtime since its dependencies
29
+ // are static.
30
+ // In preview mode updates of fetchInitial are an essential part of the preview system.
31
+ // eslint-disable-next-line react-hooks/exhaustive-deps
32
+ },[fetchInitial]);/**
23
33
  * Callback to fetch the next chunk of products when e.g. users interacted with a "Load More"
24
34
  * button.
25
- */var fetchNext=useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(){var nextOptions,result;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:if(!(!hasNext||isFetching||!value)){_context2.next=2;break;}return _context2.abrupt("return");case 2:nextOptions=_extends({},baseRequestOptions,{offset:offset});_context2.next=5;return dispatch(fetchProductsByQuery(REQUEST_TYPE_MAPPING[type],value,nextOptions,code));case 5:result=_context2.sent;setOffset(offset+limit);setHasNext(result.totalProductCount>offset+limit);case 8:case"end":return _context2.stop();}},_callee2);})),[code,dispatch,hasNext,isFetching,value,offset,limit,baseRequestOptions,type]);return{fetchNext:fetchNext,hasNext:hasNext,isFetching:isFetching,results:widgetProducts.products.slice(0,offset),totalResultCount:widgetProducts.totalProductCount};};
35
+ */var fetchNext=useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(){var _result$totalProductC2;var nextOptions,result;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:if(!(!hasNext||isFetching||!value)){_context2.next=2;break;}return _context2.abrupt("return");case 2:nextOptions=_extends({},baseRequestOptions,{offset:offset});_context2.next=5;return dispatch(fetchProductsByQuery(REQUEST_TYPE_MAPPING[type],value,nextOptions,code));case 5:result=_context2.sent;setOffset(offset+limit);// When the result comes from a real pipeline request there will be "totalProductCount".
36
+ // When the result are cached products, it can also be "totalResultCount".
37
+ setHasNext(((_result$totalProductC2=result.totalProductCount)!==null&&_result$totalProductC2!==void 0?_result$totalProductC2:result.totalResultCount)>offset+limit);case 8:case"end":return _context2.stop();}},_callee2);})),[code,dispatch,hasNext,isFetching,value,offset,limit,baseRequestOptions,type]);return{fetchNext:fetchNext,hasNext:hasNext,isFetching:isFetching,results:widgetProducts.products.slice(0,offset),totalResultCount:widgetProducts.totalProductCount};};
@@ -1,4 +1,4 @@
1
- function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}import{produce}from'immer';import{REQUEST_PAGE_CONFIG_V2,RECEIVE_PAGE_CONFIG_V2,ERROR_PAGE_CONFIG_V2,PAGE_STATE_LIFETIME}from"../constants";var customWidgetRegex=/<!\x2D\x2DWidget((?:[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)\x2D\x2D>/gm;/**
1
+ function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}import{produce}from'immer';import{APP_WILL_START}from'@shopgate/engage/core/constants';import{REQUEST_PAGE_CONFIG_V2,RECEIVE_PAGE_CONFIG_V2,ERROR_PAGE_CONFIG_V2,PAGE_STATE_LIFETIME}from"../constants";var customWidgetRegex=/<!\x2D\x2DWidget((?:[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)\x2D\x2D>/gm;/**
2
2
  * Decodes entities from a HTML string
3
3
  * @param {string} html HTML string to decode
4
4
  * @returns {string}
@@ -12,4 +12,4 @@ return _extends({},widget,{widgetConfig:customLegacyWidget.settings||{},widgetCo
12
12
  * @param {Object} [state={}] The current state.
13
13
  * @param {Object} action The action object.
14
14
  * @returns {Object} The new state.
15
- */export function pageV2(){var state=arguments.length>0&&arguments[0]!==undefined?arguments[0]:defaultState;var action=arguments.length>1?arguments[1]:undefined;/* eslint-disable no-param-reassign */var producer=produce(function(draft){switch(action.type){case REQUEST_PAGE_CONFIG_V2:{var pageType=action.pageType,pageSlug=action.pageSlug;draft[pageType]=draft[pageType]||{};draft[pageType][pageSlug]={data:null,isFetching:true,expires:0};break;}case RECEIVE_PAGE_CONFIG_V2:{var _pageType=action.pageType,_pageSlug=action.pageSlug,data=action.data;draft[_pageType]=draft[_pageType]||{};draft[_pageType][_pageSlug]={data:transformCustomLegacyWidgets(data),isFetching:false,expires:Date.now()+PAGE_STATE_LIFETIME};break;}case ERROR_PAGE_CONFIG_V2:{var _pageType2=action.pageType,_pageSlug2=action.pageSlug;draft[_pageType2]=draft[_pageType2]||{};draft[_pageType2][_pageSlug2]={data:null,isFetching:false};break;}default:break;}});/* eslint-enable no-param-reassign */return producer(state);}
15
+ */export function pageV2(){var state=arguments.length>0&&arguments[0]!==undefined?arguments[0]:defaultState;var action=arguments.length>1?arguments[1]:undefined;/* eslint-disable no-param-reassign */var producer=produce(function(draft){switch(action.type){case REQUEST_PAGE_CONFIG_V2:{var pageType=action.pageType,pageSlug=action.pageSlug;draft[pageType]=draft[pageType]||{};draft[pageType][pageSlug]={data:null,isFetching:true,expires:0};break;}case RECEIVE_PAGE_CONFIG_V2:{var _pageType=action.pageType,_pageSlug=action.pageSlug,data=action.data;draft[_pageType]=draft[_pageType]||{};draft[_pageType][_pageSlug]={data:transformCustomLegacyWidgets(data),isFetching:false,expires:Date.now()+PAGE_STATE_LIFETIME};break;}case ERROR_PAGE_CONFIG_V2:{var _pageType2=action.pageType,_pageSlug2=action.pageSlug;draft[_pageType2]=draft[_pageType2]||{};draft[_pageType2][_pageSlug2]={data:null,isFetching:false};break;}case APP_WILL_START:{Object.keys(draft).forEach(function(pageType){Object.keys(draft[pageType]).forEach(function(pageCode){draft[pageType][pageCode].expires=0;});});break;}default:break;}});/* eslint-enable no-param-reassign */return producer(state);}
@@ -1,4 +1,4 @@
1
- function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}import{createSelector}from'reselect';import{makeGetMenu,makeGetIsFetchingMenu}from'@shopgate/engage/core/selectors';import{getFulfillmentParams,getPopulatedProductsResult,SHOPGATE_CATALOG_GET_HIGHLIGHT_PRODUCTS}from'@shopgate/engage/product';import{getProductState}from'@shopgate/engage/product/selectors/product';import{LEGAL_MENU,SORT_PRICE_ASC,SORT_PRICE_DESC}from'@shopgate/engage/core/constants';import{hasNewServices,transformDisplayOptions,generateResultHash}from'@shopgate/engage/core/helpers';import{PRIVACY_PATH}from"../constants";export*from'@shopgate/pwa-common/selectors/page';/**
1
+ function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}import{createSelector}from'reselect';import{makeGetMenu,makeGetIsFetchingMenu,getEnableCms2ForAllShoppers}from'@shopgate/engage/core/selectors';import{getFulfillmentParams,getPopulatedProductsResult,SHOPGATE_CATALOG_GET_HIGHLIGHT_PRODUCTS}from'@shopgate/engage/product';import{getProductState}from'@shopgate/engage/product/selectors/product';import{LEGAL_MENU,SORT_PRICE_ASC,SORT_PRICE_DESC}from'@shopgate/engage/core/constants';import{hasNewServices,transformDisplayOptions,generateResultHash}from'@shopgate/engage/core/helpers';import{getIsCMS2PreviewEnabled}from'@shopgate/engage/development/selectors';import{makeGetPageConfigById}from'@shopgate/pwa-common/selectors/page';import{PRIVACY_PATH}from"../constants";export*from'@shopgate/pwa-common/selectors/page';/**
2
2
  * Creates a selector that retrieves the privacy policy link.
3
3
  *
4
4
  * When the new services are active, the link is extracted from the "shopgate.cms.getMenu" response.
@@ -29,6 +29,14 @@ function _extends(){_extends=Object.assign||function(target){for(var i=1;i<argum
29
29
  * @param {string|null} [params.slug=null] The slug of the page (optional).
30
30
  * @returns {Function} A selector function that retrieves the widget list.
31
31
  */export var makeGetWidgetsFromPage=function makeGetWidgetsFromPage(_ref2){var _ref2$type=_ref2.type,type=_ref2$type===void 0?'cms':_ref2$type,_ref2$slug=_ref2.slug,slug=_ref2$slug===void 0?null:_ref2$slug,_ref2$dropzone=_ref2.dropzone,dropzone=_ref2$dropzone===void 0?'cmsWidgetList':_ref2$dropzone;var getPage=makeGetPage({type:type,slug:slug});return createSelector(getPage,function(page){var _ref3,_page$data,_page$data$dropzones;if(!page){return undefined;}return(_ref3=(_page$data=page.data)===null||_page$data===void 0?void 0:(_page$data$dropzones=_page$data.dropzones)===null||_page$data$dropzones===void 0?void 0:_page$data$dropzones[dropzone])!==null&&_ref3!==void 0?_ref3:[];});};/**
32
+ * Determines whether the new CMS version 2 is enabled.
33
+ */export var getIsCms2Enabled=createSelector(getEnableCms2ForAllShoppers,getIsCMS2PreviewEnabled,function(shopSettingEnabled,previewEnabled){return shopSettingEnabled||previewEnabled;});/**
34
+ * Creates a selector that retrieves unified CMS page data. Depending on the CMS version,
35
+ * the data is retrieved from different sources, but returned in a consistent format.
36
+ * @param {Object} params The selector parameters.
37
+ * @param {string} params.slug The slug of the page.
38
+ * @returns {Function} A selector function that retrieves the unified CMS page data.
39
+ */export var makeGetUnifiedCMSPageData=function makeGetUnifiedCMSPageData(_ref4){var slug=_ref4.slug;var getPageV2=makeGetPage({type:'cms',slug:slug});var getPageV1=makeGetPageConfigById({pageId:slug});return createSelector(getIsCms2Enabled,getPageV1,getPageV2,function(isCms2Enabled,pageV1,pageV2){var _ref8,_ref9;if(isCms2Enabled){var _ref5,_ref6,_pageV2$data,_pageV2$data2,_ref7,_pageV2$data3,_pageV2$data3$dropzon;if(!pageV2)return undefined;return{isFetching:(_ref5=pageV2===null||pageV2===void 0?void 0:pageV2.isFetching)!==null&&_ref5!==void 0?_ref5:false,expires:(_ref6=pageV2===null||pageV2===void 0?void 0:pageV2.expires)!==null&&_ref6!==void 0?_ref6:null,title:(pageV2===null||pageV2===void 0?void 0:(_pageV2$data=pageV2.data)===null||_pageV2$data===void 0?void 0:_pageV2$data.pageTitle)||(pageV2===null||pageV2===void 0?void 0:(_pageV2$data2=pageV2.data)===null||_pageV2$data2===void 0?void 0:_pageV2$data2.name)||'',widgets:(_ref7=pageV2===null||pageV2===void 0?void 0:(_pageV2$data3=pageV2.data)===null||_pageV2$data3===void 0?void 0:(_pageV2$data3$dropzon=_pageV2$data3.dropzones)===null||_pageV2$data3$dropzon===void 0?void 0:_pageV2$data3$dropzon['cmsWidgetList'])!==null&&_ref7!==void 0?_ref7:[],cmsVersion:2};}if(!pageV1)return undefined;return{isFetching:(_ref8=pageV1===null||pageV1===void 0?void 0:pageV1.isFetching)!==null&&_ref8!==void 0?_ref8:false,expires:(_ref9=pageV1===null||pageV1===void 0?void 0:pageV1.expires)!==null&&_ref9!==void 0?_ref9:null,title:(pageV1===null||pageV1===void 0?void 0:pageV1.title)||'',widgets:(pageV1===null||pageV1===void 0?void 0:pageV1.widgets)||[],cmsVersion:1};});};/**
32
40
  * Creates a selector that generates a hash to select results for widget products.
33
41
  * @param {'searchTerm' | 'productIds' | 'brand' | 'category' |'highlights'} type Type of the
34
42
  * request to make.