@shopgate/engage 7.31.6 → 7.32.0-beta.10
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.
- package/README.md +0 -1
- package/account/components/Account/Account.d.ts.map +1 -1
- package/account/components/Account/Account.js +4 -3
- package/account/components/Profile/Profile.provider.js +1 -1
- package/account/components/Profile/ProfileAddressBook.d.ts.map +1 -1
- package/account/components/Profile/ProfileAddressBook.js +19 -30
- package/account/components/Profile/ProfileAddressCard.d.ts.map +1 -1
- package/account/components/Profile/ProfileAddressCard.js +43 -49
- package/account/components/Profile/ProfileForm.d.ts.map +1 -1
- package/account/components/Profile/ProfileForm.js +15 -42
- package/account/components/Profile/ProfileHeader.d.ts.map +1 -1
- package/account/components/Profile/ProfileHeader.js +8 -9
- package/account/components/ProfileContact/ProfileContact.js +15 -22
- package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts +8 -0
- package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts.map +1 -0
- package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.js +98 -0
- package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.d.ts +26 -0
- package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.d.ts.map +1 -0
- package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.js +61 -0
- package/admin-preview/components/FrontendSettingsPreviewBridge/index.d.ts +2 -0
- package/admin-preview/components/FrontendSettingsPreviewBridge/index.d.ts.map +1 -0
- package/admin-preview/components/FrontendSettingsPreviewBridge/index.js +1 -0
- package/admin-preview/components/FrontendSettingsPreviewBridge/types.d.ts +27 -0
- package/admin-preview/components/FrontendSettingsPreviewBridge/types.d.ts.map +1 -0
- package/admin-preview/components/FrontendSettingsPreviewBridge/types.js +1 -0
- package/admin-preview/components/index.d.ts +2 -0
- package/admin-preview/components/index.d.ts.map +1 -0
- package/admin-preview/components/index.js +1 -0
- package/admin-preview/constants/index.d.ts +6 -0
- package/admin-preview/constants/index.d.ts.map +1 -0
- package/admin-preview/constants/index.js +6 -0
- package/admin-preview/helpers/_internal/detection.d.ts +53 -0
- package/admin-preview/helpers/_internal/detection.d.ts.map +1 -0
- package/admin-preview/helpers/_internal/detection.js +93 -0
- package/admin-preview/helpers/index.d.ts +23 -0
- package/admin-preview/helpers/index.d.ts.map +1 -0
- package/admin-preview/helpers/index.js +27 -0
- package/admin-preview/hooks/index.d.ts +36 -0
- package/admin-preview/hooks/index.d.ts.map +1 -0
- package/admin-preview/hooks/index.js +74 -0
- package/admin-preview/initialization/_internal/initialFrontendSettings.d.ts +32 -0
- package/admin-preview/initialization/_internal/initialFrontendSettings.d.ts.map +1 -0
- package/admin-preview/initialization/_internal/initialFrontendSettings.js +43 -0
- package/admin-preview/initialization/awaitInitialFrontendSettings.d.ts +22 -0
- package/admin-preview/initialization/awaitInitialFrontendSettings.d.ts.map +1 -0
- package/admin-preview/initialization/awaitInitialFrontendSettings.js +84 -0
- package/back-in-stock/components/BackInStockButton/index.js +19 -22
- package/back-in-stock/components/Subscriptions/components/Subscription/index.js +22 -26
- package/cart/components/CartHeaderWide/CartHeaderWide.js +4 -3
- package/cart/components/CartItem/CartItemCoupon.js +2 -6
- package/cart/components/CartItem/CartItemCouponDelete.js +3 -3
- package/cart/components/CartItem/CartItemCouponLayout.js +1 -1
- package/cart/components/CartItem/CartItemCouponPrice.js +16 -19
- package/cart/components/CartItem/CartItemCouponTitle.js +4 -4
- package/cart/components/CartItem/CartItemProduct.js +2 -6
- package/cart/components/CartItem/CartItemProductLayout.js +6 -9
- package/cart/components/CartItem/CartItemProductLayoutWide.js +21 -16
- package/cart/components/CartItem/CartItemProductLayoutWideFulfillmentLabel.js +5 -3
- package/cart/components/CartItem/CartItemProductLayoutWideOrderDetails.js +18 -12
- package/cart/components/CartItem/CartItemProductLayoutWideRemoveItem.js +7 -14
- package/cart/components/CartItem/CartItemProductOrderDetails.js +2 -2
- package/cart/components/CartItem/CartItemProductPriceCaption.js +5 -4
- package/cart/components/CartItem/CartItemProductPriceList.js +18 -12
- package/cart/components/CartItem/CartItemProductPriceListPromotion.js +7 -7
- package/cart/components/CartItem/CartItemProductProvider.connector.js +0 -2
- package/cart/components/CartItem/CartItemProductProvider.js +3 -30
- package/cart/components/CartItem/CartItemProductProvider.types.js +0 -1
- package/cart/components/CartItem/CartItemProductTitle.js +2 -3
- package/cart/components/CartItem/CartItemQuantityPicker.js +3 -7
- package/cart/components/CartItem/CartItemSubstitution.js +1 -2
- package/cart/components/CartItems/CartItemCard.js +3 -4
- package/cart/components/CartItems/CartItemCardReservationAccordion.js +9 -10
- package/cart/components/CartItems/CartItemCardReservationLabel.js +11 -11
- package/cart/components/CartItems/CartItemCardReservationLabelChangeStore.js +6 -24
- package/cart/components/CartItems/CartItemGroupReservation.js +4 -3
- package/cart/components/CartItems/CartItemGroupReservationLabel.js +12 -10
- package/cart/components/CartItems/CartItemGroupShipping.js +7 -5
- package/cart/components/CartItems/CartItems.js +8 -12
- package/cart/components/CartItems/CartItemsHeaderWide.js +43 -18
- package/cart/components/CartItems/CartItemsSubstitution.js +3 -2
- package/cart/components/CartSummaryWide/CartSummaryWide.js +9 -16
- package/cart/components/CartSummaryWide/CartSummaryWideCheckoutButton.js +9 -27
- package/cart/components/PaymentBar/PaymentBarCheckoutButton.js +8 -34
- package/cart/components/PaymentBar/PaymentBarContent.js +4 -10
- package/cart/components/PaymentBar/PaymentBarPromotionCouponMessages.js +6 -2
- package/cart/components/PaymentBar/PaymentBarPromotionCoupons.js +5 -5
- package/cart/components/PaymentBar/PaymentBarPromotionalText.js +9 -10
- package/cart/components/PaymentBar/testUtils/mockFactories.js +57 -0
- package/cart/components/Substitution/connector.js +1 -1
- package/cart/components/SupplementalContent/SupplementalContent.connector.js +2 -1
- package/cart/components/SupplementalContent/SupplementalContent.js +6 -7
- package/category/components/CategoryImage/connector.js +1 -1
- package/category/components/CategoryImage/index.js +24 -17
- package/category/components/CategoryList/index.js +4 -8
- package/checkout/components/AddressBook/AddressList.js +19 -29
- package/checkout/components/AddressBookContact/AddressBookContact.js +6 -6
- package/checkout/components/Checkout/CheckoutActions.js +4 -3
- package/checkout/components/Checkout/CheckoutAddress.js +33 -15
- package/checkout/components/Checkout/CheckoutHeader.js +9 -11
- package/checkout/components/Checkout/CheckoutPickupContactForm.js +2 -2
- package/checkout/components/Checkout/CheckoutSection.js +26 -15
- package/checkout/components/Checkout/CheckoutSectionInfo.js +14 -17
- package/checkout/components/Checkout/CheckoutSectionMessages.js +5 -4
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmation.js +20 -20
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmationSection.js +44 -62
- package/checkout/components/GuestCheckout/GuestCheckoutPickup.js +7 -4
- package/checkout/components/PaymentMethodButton/PaymentMethodButton.js +3 -3
- package/checkout/components/ResponsiveBackButton/ResponsiveBackButton.js +7 -17
- package/checkout/components/ShippingMethods/ShippingMethod.js +6 -5
- package/checkout/components/ShippingMethods/ShippingMethods.js +11 -8
- package/checkout/components/SupplementalContent/SupplementalContent.connector.js +2 -1
- package/checkout/components/SupplementalContent/SupplementalContent.js +6 -7
- package/checkout/paymentMethods/index.js +5 -4
- package/checkout/paymentMethods/paypal/PaypalPayButton.js +7 -6
- package/checkout/paymentMethods/stripe/StripeCreditCard.js +6 -9
- package/components/Badge/Badge.d.ts +30 -0
- package/components/Badge/Badge.d.ts.map +1 -0
- package/components/Badge/Badge.js +48 -0
- package/components/Badge/index.d.ts +3 -0
- package/components/Badge/index.d.ts.map +1 -0
- package/components/Badge/index.js +1 -0
- package/components/Card/Card.d.ts +27 -0
- package/components/Card/Card.d.ts.map +1 -0
- package/components/Card/Card.js +57 -0
- package/components/Card/index.d.ts +4 -0
- package/components/Card/index.d.ts.map +1 -0
- package/components/Card/index.js +2 -0
- package/components/Card/useCardAppearance.d.ts +11 -0
- package/components/Card/useCardAppearance.d.ts.map +1 -0
- package/components/Card/useCardAppearance.js +22 -0
- package/components/ChipLayout/index.js +6 -8
- package/components/Form/Builder/ElementPhoneNumber.d.ts.map +1 -1
- package/components/Form/Builder/ElementPhoneNumber.js +2 -6
- package/components/Form/Builder/stylePresets.d.ts.map +1 -1
- package/components/Form/Builder/stylePresets.js +12 -17
- package/components/Logo/connector.js +3 -1
- package/components/Logo/index.d.ts.map +1 -1
- package/components/Logo/index.js +3 -6
- package/components/Menu/components/Item/index.d.ts.map +1 -1
- package/components/Menu/components/Item/index.js +5 -17
- package/components/Menu/index.d.ts.map +1 -1
- package/components/Menu/index.js +2 -3
- package/components/MessageBar/MessageBar.d.ts.map +1 -1
- package/components/MessageBar/MessageBar.js +35 -42
- package/components/NavigationHandler/connector.js +1 -1
- package/components/Paper/Paper.d.ts +48 -0
- package/components/Paper/Paper.d.ts.map +1 -0
- package/components/Paper/Paper.js +64 -0
- package/components/Paper/index.d.ts +3 -0
- package/components/Paper/index.d.ts.map +1 -0
- package/components/Paper/index.js +1 -0
- package/components/Picker/components/Button/index.js +3 -3
- package/components/Picker/components/List/index.js +3 -3
- package/components/Picker/components/Modal/index.d.ts.map +1 -1
- package/components/Picker/components/Modal/index.js +2 -3
- package/components/PickerUtilize/components/Button/index.d.ts.map +1 -1
- package/components/PickerUtilize/components/Button/index.js +6 -10
- package/components/PickerUtilize/index.d.ts +2 -1
- package/components/PickerUtilize/index.d.ts.map +1 -1
- package/components/Radio/Radio.js +6 -5
- package/components/RadioCard/RadioCard.d.ts.map +1 -1
- package/components/RadioCard/RadioCard.js +2 -1
- package/components/ResponsiveContainer/breakpoints.js +2 -2
- package/components/ScrollHeader/index.js +3 -3
- package/components/SheetList/components/Item/index.js +18 -23
- package/components/SheetList/index.d.ts.map +1 -1
- package/components/SheetList/index.js +3 -7
- package/components/SideNavigation/SideNavigationCategories.js +2 -7
- package/components/SideNavigation/SideNavigationCategoriesItem.js +2 -2
- package/components/SideNavigation/SideNavigationContent.js +3 -3
- package/components/SideNavigation/SideNavigationItem.d.ts.map +1 -1
- package/components/SideNavigation/SideNavigationItem.js +3 -4
- package/components/SideNavigation/SideNavigationNestedItem.js +2 -2
- package/components/Switch/index.d.ts.map +1 -1
- package/components/Switch/index.js +6 -7
- package/components/Tabs/components/Tab.d.ts.map +1 -1
- package/components/Tabs/components/Tab.js +14 -16
- package/components/Tabs/components/TabIndicator.js +3 -3
- package/components/TextLink/TextLink.d.ts.map +1 -1
- package/components/TextLink/TextLink.js +8 -26
- package/components/Toggle/index.js +5 -5
- package/components/Typography/Typography.d.ts +87 -124
- package/components/Typography/Typography.d.ts.map +1 -0
- package/components/Typography/Typography.js +72 -57
- package/components/Typography/index.d.ts +2 -1
- package/components/Typography/index.d.ts.map +1 -0
- package/components/View/components/Above/index.d.ts.map +1 -1
- package/components/View/components/Above/index.js +3 -1
- package/components/View/components/Below/index.d.ts.map +1 -1
- package/components/View/components/Below/index.js +3 -1
- package/components/View/components/Content/index.d.ts +2 -1
- package/components/View/components/Content/index.d.ts.map +1 -1
- package/components/View/components/Content/index.js +6 -3
- package/components/View/index.d.ts.map +1 -1
- package/components/View/index.js +1 -5
- package/components/constants.d.ts +6 -0
- package/components/constants.d.ts.map +1 -0
- package/components/index.d.ts +5 -1
- package/components/index.d.ts.map +1 -1
- package/components/index.js +4 -2
- package/components/v2/Button/Button.d.ts +24 -13
- package/components/v2/Button/Button.d.ts.map +1 -1
- package/components/v2/Button/Button.js +139 -41
- package/components/v2/ButtonBase/ButtonBase.d.ts +50 -10
- package/components/v2/ButtonBase/ButtonBase.d.ts.map +1 -1
- package/components/v2/ButtonBase/ButtonBase.js +192 -17
- package/components/v2/ButtonBase/Ripple.d.ts +2 -1
- package/components/v2/ButtonBase/Ripple.d.ts.map +1 -1
- package/components/v2/ButtonBase/hooks.d.ts +0 -1
- package/components/v2/ButtonBase/hooks.d.ts.map +1 -1
- package/components/v2/ButtonBase/hooks.js +36 -12
- package/components/v2/ButtonGroup/ButtonGroup.d.ts +11 -5
- package/components/v2/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/components/v2/ButtonGroup/ButtonGroup.js +49 -26
- package/components/v2/CircularProgress/CircularProgress.d.ts.map +1 -1
- package/components/v2/CircularProgress/CircularProgress.js +10 -5
- package/core/action-creators/merchantSettings.d.ts +1 -1
- package/core/action-creators/merchantSettings.d.ts.map +1 -1
- package/core/action-creators/merchantSettings.js +3 -11
- package/core/action-creators/shopSettings.d.ts +1 -2
- package/core/action-creators/shopSettings.d.ts.map +1 -1
- package/core/action-creators/shopSettings.js +3 -21
- package/core/constants/merchantSettings.d.ts +1 -11
- package/core/constants/merchantSettings.d.ts.map +1 -1
- package/core/constants/merchantSettings.js +3 -11
- package/core/constants/shopSettings.d.ts +1 -27
- package/core/constants/shopSettings.d.ts.map +1 -1
- package/core/constants/shopSettings.js +3 -27
- package/core/helpers/getFullImageSource.d.ts +5 -1
- package/core/helpers/getFullImageSource.d.ts.map +1 -1
- package/core/helpers/getFullImageSource.js +30 -14
- package/core/helpers/scrollContainer.js +2 -2
- package/core/hooks/html/useLoadImage.d.ts +3 -3
- package/core/hooks/html/useLoadImage.d.ts.map +1 -1
- package/core/hooks/html/useLoadImage.js +2 -2
- package/core/hooks/useLocalStorage.d.ts +8 -0
- package/core/hooks/useLocalStorage.d.ts.map +1 -1
- package/core/hooks/useLocalStorage.js +22 -15
- package/core/hooks/useNavigation.d.ts +10 -2
- package/core/hooks/useNavigation.d.ts.map +1 -1
- package/core/hooks/useNavigation.js +1 -2
- package/core/initialization/fetchSettings.d.ts +12 -0
- package/core/initialization/fetchSettings.d.ts.map +1 -0
- package/core/initialization/fetchSettings.js +134 -0
- package/core/initialization/index.d.ts +33 -2
- package/core/initialization/index.d.ts.map +1 -1
- package/core/initialization/index.js +44 -102
- package/core/router/conductor.d.ts +9 -0
- package/core/router/helpers.d.ts +28 -15
- package/core/router/helpers.d.ts.map +1 -1
- package/core/router/helpers.js +8 -8
- package/core/selectors/merchantSettings.d.ts +1 -20
- package/core/selectors/merchantSettings.d.ts.map +1 -1
- package/core/selectors/merchantSettings.js +3 -33
- package/core/selectors/shopSettings.d.ts +1 -53
- package/core/selectors/shopSettings.d.ts.map +1 -1
- package/core/selectors/shopSettings.js +3 -80
- package/development/components/ClientInformation/ClientInformation.js +5 -3
- package/development/components/DevelopmentSettings/DevelopmentSettings.js +6 -5
- package/development/components/SimulatedInsets/SimulatedInsetBottom.js +3 -3
- package/development/components/SimulatedInsets/SimulatedInsetTop.js +6 -6
- package/favorites/components/CommentDialog/CommentDialog.js +17 -15
- package/favorites/components/FavoriteButtonWide/FavoriteButtonWide.js +9 -20
- package/favorites/components/Item/Item.d.ts +1 -1
- package/favorites/components/Item/Item.d.ts.map +1 -1
- package/favorites/components/Item/Item.js +21 -22
- package/favorites/components/Item/ItemCharacteristics.d.ts.map +1 -1
- package/favorites/components/Item/ItemCharacteristics.js +6 -14
- package/favorites/components/Item/ItemNotes.js +23 -20
- package/favorites/components/Item/ItemQuantity.js +1 -1
- package/favorites/components/List/List.d.ts +1 -1
- package/favorites/components/List/List.d.ts.map +1 -1
- package/favorites/components/List/List.js +0 -5
- package/favorites/components/List/ListContent.js +4 -5
- package/favorites/components/ListChooser/ListChooserItem.js +1 -1
- package/favorites/components/Lists/Lists.js +19 -8
- package/favorites/components/Lists/ListsModal.d.ts.map +1 -1
- package/favorites/components/Lists/ListsModal.js +4 -11
- package/favorites/components/RemoveButton/RemoveButton.d.ts.map +1 -1
- package/favorites/components/RemoveButton/RemoveButton.js +1 -2
- package/filter/components/FilterItem/index.js +5 -8
- package/filter/components/FilterPageContent/components/ApplyButton/index.js +8 -10
- package/filter/components/FilterPageContent/components/ResetButton/index.js +8 -6
- package/filter/components/FilterPageContent/components/Selector/components/Toggle/index.js +3 -3
- package/filter/components/FilterPageContent/components/Selector/components/ValueButton/index.js +4 -5
- package/filter/components/PriceSlider/components/Label/index.js +9 -13
- package/filter/components/PriceSlider/index.js +9 -9
- package/filter/selectors/index.js +2 -2
- package/locations/components/Cart/CartContextMenuChangeFulfillmentContent.js +1 -1
- package/locations/components/ChangeLocationButton/ChangeLocationButton.js +10 -14
- package/locations/components/FulfillmentPath/FulfillmentPathItem.js +1 -7
- package/locations/components/FulfillmentSelector/FulfillmentSelector.connector.js +2 -2
- package/locations/components/FulfillmentSelector/FulfillmentSelectorAlternativeLocation.js +12 -10
- package/locations/components/FulfillmentSelector/FulfillmentSelectorHeader.js +1 -1
- package/locations/components/FulfillmentSelector/FulfillmentSelectorImpossibleError.js +3 -3
- package/locations/components/FulfillmentSelector/FulfillmentSelectorItem.js +4 -4
- package/locations/components/FulfillmentSelector/FulfillmentSelectorLocation.js +18 -15
- package/locations/components/FulfillmentSelector/FulfillmentSelectorLocationMethodNotAvailable.js +3 -3
- package/locations/components/FulfillmentSheet/FulfillmentSheetContent.js +4 -8
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotDialog.js +25 -28
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotProvider.connector.js +1 -1
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcher.connector.js +1 -1
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcher.js +5 -5
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherBar.js +19 -28
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherDefault.js +20 -23
- package/locations/components/GlobalLocationSelector/GlobalLocationSelector.js +1 -1
- package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcher.connector.js +1 -1
- package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherBar.js +18 -28
- package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherDefault.js +19 -20
- package/locations/components/ReservationResponses/ReservationError.js +9 -6
- package/locations/components/ReservationResponses/ReservationSuccess.js +14 -9
- package/locations/components/ReserveForm/ReserveForm.js +11 -11
- package/locations/components/ReserveForm/ReserveFormPhone.js +7 -9
- package/locations/components/StockInfo/StockInfo.js +4 -2
- package/locations/components/StockInfoLists/index.js +5 -7
- package/locations/components/StoreDetails/components/FindMoreStores.js +11 -12
- package/locations/components/StoreDetails/components/GetDirectionsButton.js +5 -9
- package/locations/components/StoreDetails/components/StoreDetails.js +27 -34
- package/locations/components/StoreDetails/components/StoreFinderMap.js +4 -4
- package/locations/components/StoreDetails/components/StoresNearby.js +5 -3
- package/locations/components/StoreDetails/components/StoresNearbyListItem.js +36 -30
- package/locations/components/StoreFinder/StoreFinder.js +1 -1
- package/locations/components/StoreFinder/StoreFinderLocationDetails.js +7 -6
- package/locations/components/StoreFinder/StoreFinderLocationHeader.js +17 -21
- package/locations/components/StoreFinder/StoreFinderLocations.js +2 -6
- package/locations/components/StoreFinder/StoreFinderSelectLocationButton.js +5 -11
- package/locations/components/StoreFinder/StoreFinderStoreInfoButton.js +5 -11
- package/locations/components/StoreList/StoreAddress.js +3 -3
- package/locations/components/StoreList/StoreAddressShort.js +10 -12
- package/locations/components/StoreList/StoreDetails.js +1 -2
- package/locations/components/StoreList/StoreDetailsLine.js +3 -3
- package/locations/components/StoreList/StoreDistance.js +6 -17
- package/locations/components/StoreList/StoreHeader.js +7 -7
- package/locations/components/StoreList/StoreHoursToday.js +3 -3
- package/locations/components/StoreList/StoreListLocations.js +20 -18
- package/locations/components/StoreList/StoreListProduct.js +4 -6
- package/locations/components/StoreList/StoreListProductInfo.js +9 -6
- package/locations/components/StoreList/StoreListProductName.js +4 -3
- package/locations/components/StoreList/StoreListSearch.js +11 -11
- package/locations/components/StoreList/StoreListSearchRadius.js +4 -5
- package/locations/components/StoreList/StoreOpeningHours.js +10 -12
- package/locations/components/StoreList/StorePhoneNumber.js +10 -12
- package/locations/components/StoreList/StoreSelectLocationButton.js +5 -11
- package/locations/helpers/showInventoryInLists.js +1 -1
- package/locations/providers/FulfillmentProvider.connector.js +1 -1
- package/locations/reducers/index.js +1 -1
- package/locations/selectors/index.js +2 -1
- package/locations/subscriptions.js +2 -2
- package/login/components/ForgotPassword/ForgotPassword.js +24 -36
- package/orders/components/OrderDetails/OrderDetailsAuthenticate.js +6 -8
- package/orders/components/OrderDetails/OrderDetailsContent.js +5 -4
- package/orders/components/OrderDetails/OrderDetailsOrderHeader.js +7 -8
- package/orders/components/OrderDetails/OrderDetailsOrderPickupLocation.js +2 -2
- package/orders/components/OrderHistory/OrderHistoryList.d.ts.map +1 -1
- package/orders/components/OrderHistory/OrderHistoryList.js +9 -14
- package/orders/components/OrderHistory/OrderHistoryTable.d.ts.map +1 -1
- package/orders/components/OrderHistory/OrderHistoryTable.js +5 -1
- package/package.json +11 -10
- package/page/components/NotFound.d.ts +7 -0
- package/page/components/NotFound.d.ts.map +1 -0
- package/page/components/NotFound.js +16 -15
- package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.d.ts +52 -0
- package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.d.ts.map +1 -0
- package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.js +4 -4
- package/page/components/ResponsiveWidgetImage/index.d.ts +2 -0
- package/page/components/ResponsiveWidgetImage/index.d.ts.map +1 -0
- package/page/components/WidgetHeadline/WidgetHeadline.js +4 -3
- package/page/components/WidgetRichText/WidgetRichText.d.ts +25 -0
- package/page/components/WidgetRichText/WidgetRichText.d.ts.map +1 -0
- package/page/components/WidgetRichText/WidgetRichText.js +1 -1
- package/page/components/WidgetRichText/index.d.ts +2 -0
- package/page/components/WidgetRichText/index.d.ts.map +1 -0
- package/page/components/WidgetVideo/WidgetVideo.d.ts +43 -0
- package/page/components/WidgetVideo/WidgetVideo.d.ts.map +1 -0
- package/page/components/WidgetVideo/WidgetVideo.js +33 -39
- package/page/components/WidgetVideo/index.d.ts +2 -0
- package/page/components/WidgetVideo/index.d.ts.map +1 -0
- package/page/components/Widgets/Overlay.d.ts +17 -0
- package/page/components/Widgets/Overlay.d.ts.map +1 -0
- package/page/components/Widgets/Overlay.js +24 -38
- package/page/components/Widgets/Tooltip.d.ts +20 -0
- package/page/components/Widgets/Tooltip.d.ts.map +1 -0
- package/page/components/Widgets/Tooltip.js +13 -18
- package/page/components/Widgets/Widget.d.ts +32 -0
- package/page/components/Widgets/Widget.d.ts.map +1 -0
- package/page/components/Widgets/Widget.js +11 -22
- package/page/components/Widgets/WidgetContext.d.ts +32 -38
- package/page/components/Widgets/WidgetContext.d.ts.map +1 -0
- package/page/components/Widgets/WidgetContext.js +2 -8
- package/page/components/Widgets/WidgetProvider.d.ts +25 -0
- package/page/components/Widgets/WidgetProvider.d.ts.map +1 -0
- package/page/components/Widgets/WidgetProvider.js +5 -12
- package/page/components/Widgets/Widgets.d.ts +16 -0
- package/page/components/Widgets/Widgets.d.ts.map +1 -0
- package/page/components/Widgets/Widgets.js +5 -12
- package/page/components/Widgets/WidgetsPreviewContext.d.ts +21 -0
- package/page/components/Widgets/WidgetsPreviewContext.d.ts.map +1 -0
- package/page/components/Widgets/WidgetsPreviewContext.js +5 -7
- package/page/components/Widgets/WidgetsPreviewProvider.d.ts +18 -0
- package/page/components/Widgets/WidgetsPreviewProvider.d.ts.map +1 -0
- package/page/components/Widgets/WidgetsPreviewProvider.js +5 -6
- package/page/components/Widgets/constants.d.ts +5 -0
- package/page/components/Widgets/constants.d.ts.map +1 -0
- package/page/components/Widgets/constants.js +1 -4
- package/page/components/Widgets/events.d.ts +38 -0
- package/page/components/Widgets/events.d.ts.map +1 -0
- package/page/components/Widgets/events.js +8 -12
- package/page/components/Widgets/helpers.d.ts +50 -0
- package/page/components/Widgets/helpers.d.ts.map +1 -0
- package/page/components/Widgets/helpers.js +8 -13
- package/page/components/Widgets/hooks.d.ts +13 -0
- package/page/components/Widgets/hooks.d.ts.map +1 -0
- package/page/components/Widgets/hooks.js +15 -104
- package/page/components/Widgets/index.d.ts +3 -0
- package/page/components/Widgets/index.d.ts.map +1 -0
- package/page/components/Widgets/types.d.ts +111 -113
- package/page/components/Widgets/types.d.ts.map +1 -0
- package/page/components/Widgets/types.js +1 -0
- package/page/components/index.d.ts +5 -0
- package/page/components/index.d.ts.map +1 -0
- package/page/constants/actionTypes.d.ts +4 -0
- package/page/constants/actionTypes.d.ts.map +1 -0
- package/page/constants/index.d.ts +25 -0
- package/page/constants/index.d.ts.map +1 -0
- package/page/constants/index.js +7 -2
- package/page/helpers/index.d.ts +70 -62
- package/page/helpers/index.d.ts.map +1 -0
- package/page/helpers/index.js +31 -29
- package/page/hooks/index.d.ts +54 -53
- package/page/hooks/index.d.ts.map +1 -0
- package/page/hooks/index.js +20 -15
- package/page/selectors/index.d.ts +32 -0
- package/page/selectors/index.d.ts.map +1 -0
- package/page/selectors/index.js +2 -1
- package/page/widgets/Button/Button.js +2 -3
- package/page/widgets/HTML/HTML.js +5 -9
- package/page/widgets/NestedCategoryFilter/NestedCategoryFilter.js +8 -13
- package/page/widgets/NestedCategoryFilter/components/Picker/components/SheetItem/index.js +2 -2
- package/page/widgets/NestedCategoryFilter/components/Picker/index.js +7 -9
- package/page/widgets/Placeholder/Placeholder.js +7 -8
- package/page/widgets/ProductList/ProductList.js +18 -14
- package/page/widgets/ProductSlider/ProductSlider.js +1 -15
- package/page/widgets/Video/Video.d.ts +6 -0
- package/page/widgets/Video/Video.d.ts.map +1 -0
- package/page/widgets/Video/Video.js +0 -2
- package/page/widgets/Video/hooks.d.ts +53 -0
- package/page/widgets/Video/hooks.d.ts.map +1 -0
- package/page/widgets/Video/hooks.js +4 -12
- package/page/widgets/Video/index.d.ts +2 -0
- package/page/widgets/Video/index.d.ts.map +1 -0
- package/product/components/Availability/Availability.js +0 -4
- package/product/components/Characteristics/Characteristic/components/SheetItem/index.js +4 -8
- package/product/components/Characteristics/Characteristic/index.js +9 -12
- package/product/components/Characteristics/Swatch/index.js +3 -7
- package/product/components/Characteristics/transition.js +4 -4
- package/product/components/Description/index.js +5 -8
- package/product/components/EffectivityDates/index.js +23 -17
- package/product/components/FilterBar/components/Content/components/FilterButton/index.js +7 -13
- package/product/components/FilterBar/components/Content/components/Sort/index.js +7 -13
- package/product/components/FilterBar/components/FilterModal/FilterModalContent.js +3 -7
- package/product/components/FilterBar/components/FilterModal/FilterModalTitle.js +13 -12
- package/product/components/FilterBar/index.js +4 -8
- package/product/components/Header/PriceStriked/index.js +4 -8
- package/product/components/Header/Shipping/index.js +3 -3
- package/product/components/Header/Tiers/components/Tier/index.js +3 -3
- package/product/components/Header/Tiers/index.js +5 -3
- package/product/components/MapPriceHint/index.js +8 -7
- package/product/components/Media/FeaturedMedia.js +7 -1
- package/product/components/Media/MediaImage.js +25 -24
- package/product/components/Media/MediaPlaceholder.js +7 -11
- package/product/components/MediaSlider/components/MediaImage/index.js +6 -2
- package/product/components/MediaSlider/constants.js +1 -12
- package/product/components/Options/components/TextOption/components/OptionInfo/index.js +18 -18
- package/product/components/Options/components/TextOption/index.js +8 -11
- package/product/components/OrderQuantityHint/index.js +17 -8
- package/product/components/PriceDifference/index.js +4 -8
- package/product/components/PriceInfo/PriceInfo.connector.js +2 -2
- package/product/components/PriceInfo/PriceInfo.js +3 -4
- package/product/components/ProductCard/index.js +39 -27
- package/product/components/ProductDiscountBadge/index.js +3 -3
- package/product/components/ProductGrid/components/Item/components/ItemDetails/index.js +12 -4
- package/product/components/ProductGrid/components/Item/components/ItemFavoritesButton/index.js +1 -1
- package/product/components/ProductGrid/components/Item/components/ItemImage/index.js +3 -6
- package/product/components/ProductGrid/components/Item/components/ItemName/index.js +9 -5
- package/product/components/ProductGrid/components/Item/index.js +10 -6
- package/product/components/ProductGrid/components/Layout/index.js +19 -4
- package/product/components/ProductGrid/constants.d.ts +2 -0
- package/product/components/ProductGrid/constants.d.ts.map +1 -0
- package/product/components/ProductGrid/constants.js +1 -0
- package/product/components/ProductGrid/hooks.d.ts +11 -0
- package/product/components/ProductGrid/hooks.d.ts.map +1 -0
- package/product/components/ProductGrid/hooks.js +48 -0
- package/product/components/ProductGrid/index.js +3 -6
- package/product/components/ProductGridPrice/index.js +8 -15
- package/product/components/ProductImage/ProductImage.d.ts +42 -0
- package/product/components/ProductImage/ProductImage.d.ts.map +1 -0
- package/product/components/ProductImage/ProductImage.js +158 -0
- package/product/components/ProductImage/ProductImagePlaceholder.d.ts +23 -0
- package/product/components/ProductImage/ProductImagePlaceholder.d.ts.map +1 -0
- package/product/components/ProductImage/ProductImagePlaceholder.js +18 -26
- package/product/components/ProductImage/constants.d.ts +7 -0
- package/product/components/ProductImage/constants.d.ts.map +1 -0
- package/product/components/ProductImage/constants.js +6 -0
- package/product/components/ProductImage/hooks.d.ts +8 -0
- package/product/components/ProductImage/hooks.d.ts.map +1 -0
- package/product/components/ProductImage/hooks.js +32 -0
- package/product/components/ProductImage/index.d.ts +3 -0
- package/product/components/ProductImage/index.d.ts.map +1 -0
- package/product/components/ProductImage/index.js +1 -203
- package/product/components/ProductList/components/Item/index.js +10 -12
- package/product/components/ProductList/components/Layout/index.js +8 -20
- package/product/components/ProductName/ProductName.d.ts +1 -1
- package/product/components/ProductName/ProductName.d.ts.map +1 -1
- package/product/components/ProductName/ProductNameContent.d.ts +2 -1
- package/product/components/ProductName/ProductNameContent.d.ts.map +1 -1
- package/product/components/ProductProperties/Content.js +1 -1
- package/product/components/ProductProperties/Group.js +6 -4
- package/product/components/ProductProperties/GroupedProperties.js +1 -1
- package/product/components/ProductProperties/Wrapper.js +4 -2
- package/product/components/ProductRatingStars/ProductRatingStars.d.ts +1 -1
- package/product/components/ProductRatingStars/ProductRatingStars.js +2 -4
- package/product/components/ProductSlider/constants.d.ts +3 -0
- package/product/components/ProductSlider/constants.d.ts.map +1 -0
- package/product/components/ProductSlider/constants.js +2 -0
- package/product/components/ProductSlider/hooks.d.ts +7 -0
- package/product/components/ProductSlider/hooks.d.ts.map +1 -0
- package/product/components/ProductSlider/hooks.js +40 -0
- package/product/components/ProductSlider/index.js +8 -8
- package/product/components/Rating/index.js +2 -4
- package/product/components/RelationsSlider/RelationsSheet.js +1 -5
- package/product/components/RelationsSlider/RelationsSliderContent.js +7 -6
- package/product/components/RelationsSlider/constants.d.ts +3 -0
- package/product/components/RelationsSlider/constants.d.ts.map +1 -0
- package/product/components/RelationsSlider/constants.js +2 -1
- package/product/components/RelationsSlider/hooks.d.ts +6 -0
- package/product/components/RelationsSlider/hooks.d.ts.map +1 -0
- package/product/components/RelationsSlider/hooks.js +34 -0
- package/product/components/Swatch/SwatchContent.js +3 -7
- package/product/components/Swatches/Swatches.js +3 -7
- package/product/components/UnitQuantityPicker/ProductUnitQuantityPicker.js +4 -4
- package/product/components/UnitQuantityPicker/UnitQuantityPicker.d.ts.map +1 -1
- package/product/components/UnitQuantityPicker/UnitQuantityPicker.js +24 -45
- package/product/helpers/index.js +29 -11
- package/product/hooks/index.js +3 -1
- package/product/hooks/useLoadProductImage.js +4 -2
- package/product/hooks/useShowEmptyRatingStars.d.ts +7 -0
- package/product/hooks/useShowEmptyRatingStars.d.ts.map +1 -0
- package/product/hooks/useShowEmptyRatingStars.js +21 -0
- package/product/index.js +0 -1
- package/push-opt-in/components/PushOptInModal/index.js +17 -17
- package/registration/components/GuestRegistration/GuestRegistrationFormPickup.js +2 -2
- package/registration/components/Registration/RegistrationContent.js +2 -1
- package/registration/components/Registration/RegistrationFormActions.js +4 -4
- package/registration/components/Registration/RegistrationFormBase.config.js +2 -1
- package/registration/providers/GuestRegistrationProvider.actions.js +1 -1
- package/registration/providers/GuestRegistrationProvider.connector.js +3 -2
- package/registration/providers/GuestRegistrationProvider.js +2 -1
- package/registration/providers/RegistrationProvider.actions.js +4 -2
- package/registration/providers/RegistrationProvider.connector.js +2 -2
- package/registration/providers/RegistrationProvider.constraints.js +1 -1
- package/registration/providers/RegistrationProvider.js +2 -1
- package/reviews/components/Reviews/components/AllReviewsLink/index.js +6 -6
- package/reviews/components/Reviews/components/Header/components/NoReviews/index.js +1 -1
- package/reviews/components/Reviews/components/Header/components/ReviewsExcerpt/index.js +3 -3
- package/reviews/components/Reviews/components/Header/components/WriteReviewLink/index.js +4 -3
- package/reviews/components/Reviews/components/List/components/Info/index.js +16 -26
- package/reviews/components/Reviews/components/List/components/Text/index.js +4 -2
- package/reviews/components/Reviews/components/List/components/Title/index.js +3 -3
- package/reviews/components/Reviews/components/List/index.js +1 -5
- package/reviews/components/Reviews/components/RatingCount/index.js +13 -15
- package/reviews/components/Reviews/components/ReviewsInfo/index.js +9 -9
- package/settings/action-creators/appSettings.d.ts +12 -0
- package/settings/action-creators/appSettings.d.ts.map +1 -0
- package/settings/action-creators/appSettings.js +10 -0
- package/settings/action-creators/merchantSettings.d.ts +2 -0
- package/settings/action-creators/merchantSettings.d.ts.map +1 -0
- package/settings/action-creators/merchantSettings.js +11 -0
- package/settings/action-creators/shopSettings.d.ts +3 -0
- package/settings/action-creators/shopSettings.d.ts.map +1 -0
- package/settings/action-creators/shopSettings.js +21 -0
- package/settings/constants/appSettings.d.ts +5 -0
- package/settings/constants/appSettings.d.ts.map +1 -0
- package/settings/constants/appSettings.js +6 -0
- package/settings/constants/imageSettings.d.ts +52 -0
- package/settings/constants/imageSettings.d.ts.map +1 -0
- package/settings/constants/imageSettings.js +69 -0
- package/settings/constants/merchantSettings.d.ts +12 -0
- package/settings/constants/merchantSettings.d.ts.map +1 -0
- package/settings/constants/merchantSettings.js +11 -0
- package/settings/constants/shopSettings.d.ts +28 -0
- package/settings/constants/shopSettings.d.ts.map +1 -0
- package/settings/constants/shopSettings.js +27 -0
- package/settings/helpers/index.d.ts +3 -0
- package/settings/helpers/index.d.ts.map +1 -0
- package/settings/helpers/index.js +1 -0
- package/settings/helpers/resolveImageSettings.d.ts +70 -0
- package/settings/helpers/resolveImageSettings.d.ts.map +1 -0
- package/settings/helpers/resolveImageSettings.js +171 -0
- package/settings/helpers/toImageQuality.d.ts +7 -0
- package/settings/helpers/toImageQuality.d.ts.map +1 -0
- package/settings/helpers/toImageQuality.js +44 -0
- package/settings/helpers/toThumborColor.d.ts +15 -0
- package/settings/helpers/toThumborColor.d.ts.map +1 -0
- package/settings/helpers/toThumborColor.js +51 -0
- package/settings/hooks/index.d.ts +2 -0
- package/settings/hooks/index.d.ts.map +1 -0
- package/settings/hooks/index.js +1 -0
- package/settings/hooks/useImageSettings.d.ts +28 -0
- package/settings/hooks/useImageSettings.d.ts.map +1 -0
- package/settings/hooks/useImageSettings.js +39 -0
- package/settings/reducers/appSettings.d.ts +18 -0
- package/settings/reducers/appSettings.d.ts.map +1 -0
- package/settings/reducers/appSettings.js +134 -0
- package/settings/reducers/index.d.ts +15 -0
- package/settings/reducers/index.d.ts.map +1 -0
- package/{core → settings}/reducers/index.js +4 -3
- package/settings/reducers/merchantSettings.d.ts +18 -0
- package/settings/reducers/merchantSettings.d.ts.map +1 -0
- package/{core → settings}/reducers/merchantSettings.js +9 -3
- package/settings/reducers/shopSettings.d.ts +28 -0
- package/settings/reducers/shopSettings.d.ts.map +1 -0
- package/{core → settings}/reducers/shopSettings.js +10 -4
- package/settings/selectors/appSettings.d.ts +157 -0
- package/settings/selectors/appSettings.d.ts.map +1 -0
- package/settings/selectors/appSettings.js +97 -0
- package/settings/selectors/merchantSettings.d.ts +21 -0
- package/settings/selectors/merchantSettings.d.ts.map +1 -0
- package/settings/selectors/merchantSettings.js +34 -0
- package/settings/selectors/shopSettings.d.ts +54 -0
- package/settings/selectors/shopSettings.d.ts.map +1 -0
- package/settings/selectors/shopSettings.js +81 -0
- package/settings/types/appSettings.d.ts +276 -0
- package/settings/types/appSettings.d.ts.map +1 -0
- package/settings/types/appSettings.js +124 -0
- package/styles/helpers/index.d.ts +2 -0
- package/styles/helpers/index.js +2 -0
- package/styles/helpers/loadFontCss.d.ts +22 -0
- package/styles/helpers/loadFontCss.d.ts.map +1 -0
- package/styles/helpers/loadFontCss.js +138 -0
- package/styles/helpers/loadThemeCss.d.ts +14 -0
- package/styles/helpers/loadThemeCss.d.ts.map +1 -0
- package/styles/helpers/loadThemeCss.js +123 -0
- package/styles/helpers/setPageBackgroundColor.js +2 -2
- package/styles/index.d.ts +1 -1
- package/styles/index.d.ts.map +1 -1
- package/styles/index.js +1 -1
- package/styles/reset/root.js +23 -4
- package/styles/reset/typographyCustomProps.d.ts +12 -0
- package/styles/reset/typographyCustomProps.d.ts.map +1 -0
- package/styles/reset/typographyCustomProps.js +11 -0
- package/styles/theme/createDefaultThemeOptions/index.d.ts.map +1 -1
- package/styles/theme/createDefaultThemeOptions/index.js +179 -7
- package/styles/theme/createTheme/createComponents.types.d.ts +266 -0
- package/styles/theme/createTheme/createComponents.types.d.ts.map +1 -1
- package/styles/theme/createTheme/createComponents.types.js +266 -0
- package/styles/theme/createTheme/createCssVarsForColorSchemeThemes.d.ts.map +1 -1
- package/styles/theme/createTheme/createCssVarsForColorSchemeThemes.js +41 -5
- package/styles/theme/createTheme/createPalette.types.d.ts +20 -7
- package/styles/theme/createTheme/createPalette.types.d.ts.map +1 -1
- package/styles/theme/createTheme/createPalette.types.js +23 -10
- package/styles/theme/createTheme/createShape.d.ts +3 -0
- package/styles/theme/createTheme/createShape.d.ts.map +1 -1
- package/styles/theme/createTheme/createSpacing.js +4 -1
- package/styles/theme/createTheme/createThemeFromColorScheme.d.ts +11 -2
- package/styles/theme/createTheme/createThemeFromColorScheme.d.ts.map +1 -1
- package/styles/theme/createTheme/createThemeFromColorScheme.js +16 -4
- package/styles/theme/createTheme/createTypography.d.ts +2 -1
- package/styles/theme/createTheme/createTypography.js +59 -18
- package/styles/theme/createTheme/helpers/cssVarsColorAugmentation.d.ts +2 -1
- package/styles/theme/createTheme/helpers/cssVarsColorAugmentation.d.ts.map +1 -1
- package/styles/theme/createTheme/helpers/cssVarsColorAugmentation.js +84 -6
- package/styles/theme/createTheme/helpers/cssVarsParser.d.ts.map +1 -1
- package/styles/theme/createTheme/helpers/cssVarsParser.js +10 -3
- package/styles/theme/createTheme/index.d.ts +2 -1
- package/styles/theme/createTheme/index.d.ts.map +1 -1
- package/styles/theme/createTheme/index.js +5 -3
- package/styles/theme/createTheme/layout.d.ts +23 -0
- package/styles/theme/createTheme/layout.d.ts.map +1 -0
- package/styles/theme/createTheme/layout.js +20 -0
- package/styles/theme/createTheme/shadows.d.ts +11 -1
- package/styles/theme/createTheme/shadows.d.ts.map +1 -1
- package/styles/theme/createTheme/shadows.js +41 -7
- package/styles/theme/createTheme/transitions.d.ts +4 -0
- package/styles/theme/createTheme/transitions.js +3 -1
- package/styles/theme/createTheme/types.d.ts +48 -10
- package/styles/theme/createTheme/types.d.ts.map +1 -1
- package/styles/theme/createTheme/types.js +16 -4
- package/styles/theme/hocs/index.d.ts +2 -0
- package/styles/theme/hocs/index.d.ts.map +1 -0
- package/styles/theme/hocs/index.js +1 -0
- package/styles/theme/hocs/withTheme.d.ts +21 -0
- package/styles/theme/hocs/withTheme.d.ts.map +1 -0
- package/styles/theme/hocs/withTheme.js +33 -0
- package/styles/theme/hooks/useColorScheme.d.ts +4 -3
- package/styles/theme/hooks/useColorScheme.d.ts.map +1 -1
- package/styles/theme/hooks/useColorScheme.js +4 -3
- package/styles/theme/hooks/useMediaQuery.d.ts +7 -0
- package/styles/theme/hooks/useMediaQuery.d.ts.map +1 -1
- package/styles/theme/hooks/useMediaQuery.js +5 -5
- package/styles/theme/hooks/useTheme.js +1 -1
- package/styles/theme/index.d.ts +5 -1
- package/styles/theme/index.d.ts.map +1 -1
- package/styles/theme/index.js +2 -1
- package/styles/theme/providers/ActiveBreakpointProvider.d.ts +1 -1
- package/styles/theme/providers/ColorSchemeContext.d.ts +40 -0
- package/styles/theme/providers/ColorSchemeContext.d.ts.map +1 -0
- package/styles/theme/providers/ColorSchemeContext.js +14 -0
- package/styles/theme/providers/ThemeContext.d.ts +3 -0
- package/styles/theme/providers/ThemeContext.d.ts.map +1 -0
- package/styles/theme/providers/ThemeContext.js +2 -0
- package/styles/theme/providers/ThemeProvider.d.ts +4 -14
- package/styles/theme/providers/ThemeProvider.d.ts.map +1 -1
- package/styles/theme/providers/ThemeProvider.js +90 -26
- package/styles/theme/utils/color.d.ts +12 -12
- package/styles/theme/utils/color.d.ts.map +1 -1
- package/tracking/components/CookieConsentModal/index.js +14 -15
- package/tracking/components/PrivacySettings/index.js +7 -7
- package/tracking/selectors/cookieConsent.js +2 -2
- package/cart/components/PaymentBar/PaymentBarReserveButton.connector.js +0 -6
- package/cart/components/PaymentBar/PaymentBarReserveButton.js +0 -75
- package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.connector.js +0 -16
- package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.js +0 -52
- package/product/collections/index.js +0 -1
- package/product/components/EffectivityDates/constants.d.ts +0 -3
- package/product/components/EffectivityDates/constants.d.ts.map +0 -1
- package/product/components/EffectivityDates/helpers.d.ts +0 -6
- package/product/components/EffectivityDates/helpers.d.ts.map +0 -1
- package/product/components/Media/helpers.d.ts +0 -2
- package/product/components/Media/helpers.d.ts.map +0 -1
- package/product/components/ProductImage/connector.js +0 -12
- package/product/helpers/index.d.ts +0 -13
- package/product/helpers/index.d.ts.map +0 -1
- package/product/helpers/redirects.d.ts +0 -2
- package/product/helpers/redirects.d.ts.map +0 -1
- package/product/selectors/helpers/filterProperties.d.ts +0 -8
- package/product/selectors/helpers/filterProperties.d.ts.map +0 -1
- package/product/selectors/helpers/index.d.ts +0 -3
- package/product/selectors/helpers/index.d.ts.map +0 -1
- package/product/selectors/helpers/wrapMemoizedSelector.d.ts +0 -2
- package/product/selectors/helpers/wrapMemoizedSelector.d.ts.map +0 -1
- package/product/selectors/product.d.ts +0 -112
- package/product/selectors/product.d.ts.map +0 -1
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import "core-js/modules/es.array.reduce.js";
|
|
2
|
+
// Imported via its module path rather than the "core" barrel, since that barrel pulls in
|
|
3
|
+
// getFullImageSource which reads these settings back, and would create a circular import.
|
|
4
|
+
import { getThemeSettings } from '@shopgate/engage/core/config/getThemeSettings';
|
|
5
|
+
import { DEFAULT_IMAGE_FILL_COLOR, DEFAULT_IMAGE_FILL_TRANSPARENT, DEFAULT_IMAGE_QUALITY, LEGACY_IMAGE_SETTINGS_KEY, MAX_IMAGE_DIMENSION, PRODUCT_IMAGE_BASE_WIDTHS } from "../constants/imageSettings";
|
|
6
|
+
import { toThumborColor } from "./toThumborColor";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The shape of the legacy AppImages theme settings. Every field is optional - the key is absent
|
|
10
|
+
* entirely in most shops, and undefined in every jest run, since the test theme config mock has no
|
|
11
|
+
* settings at all.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Maps a product image context onto the legacy AppImages key that configured it.
|
|
16
|
+
*/
|
|
17
|
+
const LEGACY_RESOLUTION_KEYS = {
|
|
18
|
+
pdp: 'HeroImage',
|
|
19
|
+
gallery: 'GalleryImage',
|
|
20
|
+
list: 'ListImage'
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The ratio the legacy resolutions are assumed to have when they are not configured at all - the
|
|
25
|
+
* built-in base widths then produce exactly the resolutions the legacy defaults shipped with.
|
|
26
|
+
*/
|
|
27
|
+
const DEFAULT_RATIO = {
|
|
28
|
+
width: 1,
|
|
29
|
+
height: 1
|
|
30
|
+
};
|
|
31
|
+
const PRODUCT_IMAGE_CONTEXTS = Object.keys(PRODUCT_IMAGE_BASE_WIDTHS);
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The resolved settings for one product image context: the resolution ladder to request from the
|
|
35
|
+
* image service, and the aspect ratio to apply to the rendered element.
|
|
36
|
+
*
|
|
37
|
+
* ratio is null while the legacy settings are in effect, because those configure explicit
|
|
38
|
+
* dimensions rather than a ratio - consumers then let the Image component derive the ratio from
|
|
39
|
+
* the largest resolution, exactly as before.
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The resolved settings for every product image context, keyed by context.
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* What getFullImageSource needs to build an image url.
|
|
48
|
+
*
|
|
49
|
+
* The color and the transparency flag stay separate rather than being joined into one token,
|
|
50
|
+
* because the image sources spell them differently.
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Reads the legacy AppImages settings from the theme configuration.
|
|
55
|
+
* @returns The legacy settings, or an empty object when they are not configured.
|
|
56
|
+
*/
|
|
57
|
+
const getLegacyImageSettings = () => getThemeSettings(LEGACY_IMAGE_SETTINGS_KEY) ?? {};
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Whether a ratio part can be calculated with.
|
|
61
|
+
* @param value The value to check.
|
|
62
|
+
* @returns Whether it is usable.
|
|
63
|
+
*/
|
|
64
|
+
const isUsableRatioPart = value => typeof value === 'number' && Number.isFinite(value) && value > 0;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Substitutes a ratio that cannot be calculated with. Anything reading a configured ratio goes
|
|
68
|
+
* through here first - a source may send a half typed value, or none at all.
|
|
69
|
+
* @param ratio The configured ratio.
|
|
70
|
+
* @returns The ratio, or the default when it is unusable.
|
|
71
|
+
*/
|
|
72
|
+
const toUsableRatio = ratio => {
|
|
73
|
+
if (!ratio || !isUsableRatioPart(ratio.width) || !isUsableRatioPart(ratio.height)) {
|
|
74
|
+
return DEFAULT_RATIO;
|
|
75
|
+
}
|
|
76
|
+
return ratio;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Derives a resolution ladder from a context's base widths and an aspect ratio.
|
|
81
|
+
* @param context The product image context.
|
|
82
|
+
* @param ratio The aspect ratio to apply, already passed through toUsableRatio.
|
|
83
|
+
* @returns The resolutions, ordered ascending.
|
|
84
|
+
*/
|
|
85
|
+
const deriveResolutions = (context, ratio) => PRODUCT_IMAGE_BASE_WIDTHS[context].map(baseWidth => {
|
|
86
|
+
const height = Math.max(1, Math.round(baseWidth * ratio.height / ratio.width));
|
|
87
|
+
if (height <= MAX_IMAGE_DIMENSION) {
|
|
88
|
+
return {
|
|
89
|
+
width: baseWidth,
|
|
90
|
+
height
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Scaled down as a whole rather than capping the height alone, so the requested image keeps the
|
|
95
|
+
// shape the layout reserves for it.
|
|
96
|
+
return {
|
|
97
|
+
width: Math.max(1, Math.round(baseWidth * MAX_IMAGE_DIMENSION / height)),
|
|
98
|
+
height: MAX_IMAGE_DIMENSION
|
|
99
|
+
};
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Resolves the settings for every product image context.
|
|
104
|
+
*
|
|
105
|
+
* Precedence:
|
|
106
|
+
* - Once the app settings are hydrated from a source (admin sync / jsonp), they are authoritative.
|
|
107
|
+
* The configured ratio applies to every context unless that context overrides it.
|
|
108
|
+
* - Before hydration the legacy AppImages resolutions are passed through as-is, with a null ratio.
|
|
109
|
+
* They already carry their own implied proportions, so reverse engineering a ratio from them
|
|
110
|
+
* would only introduce rounding - passing them through unchanged keeps the pre-hydration path
|
|
111
|
+
* identical to the legacy behavior.
|
|
112
|
+
* @param areAppSettingsHydrated Whether the app settings arrived from a source.
|
|
113
|
+
* @param imageSettings The image settings from the store.
|
|
114
|
+
* @returns The resolved settings, keyed by context.
|
|
115
|
+
*/
|
|
116
|
+
export const resolveProductImageSettings = (areAppSettingsHydrated, imageSettings) => {
|
|
117
|
+
const legacy = areAppSettingsHydrated ? null : getLegacyImageSettings();
|
|
118
|
+
return PRODUCT_IMAGE_CONTEXTS.reduce((resolved, context) => {
|
|
119
|
+
if (legacy) {
|
|
120
|
+
const legacyResolutions = legacy[LEGACY_RESOLUTION_KEYS[context]];
|
|
121
|
+
return {
|
|
122
|
+
...resolved,
|
|
123
|
+
[context]: {
|
|
124
|
+
resolutions: legacyResolutions?.length ? legacyResolutions : deriveResolutions(context, DEFAULT_RATIO),
|
|
125
|
+
ratio: null
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
const product = imageSettings?.product;
|
|
130
|
+
const ratio = toUsableRatio(product?.[context]?.ratio ?? product?.ratio);
|
|
131
|
+
const resolutions = deriveResolutions(context, ratio);
|
|
132
|
+
const largest = resolutions[resolutions.length - 1];
|
|
133
|
+
return {
|
|
134
|
+
...resolved,
|
|
135
|
+
[context]: {
|
|
136
|
+
resolutions,
|
|
137
|
+
ratio: [largest.width, largest.height]
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
}, {});
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Resolves the quality and fill that image urls are built with.
|
|
145
|
+
* @param areAppSettingsHydrated Whether the app settings arrived from a source.
|
|
146
|
+
* @param imageSettings The image settings from the store.
|
|
147
|
+
* @returns The image service settings.
|
|
148
|
+
*/
|
|
149
|
+
export const resolveImageServiceSettings = (areAppSettingsHydrated, imageSettings) => {
|
|
150
|
+
let color;
|
|
151
|
+
let fillTransparent;
|
|
152
|
+
if (areAppSettingsHydrated) {
|
|
153
|
+
color = imageSettings?.fillColor ?? DEFAULT_IMAGE_FILL_COLOR;
|
|
154
|
+
fillTransparent = imageSettings?.fillTransparent ?? DEFAULT_IMAGE_FILL_TRANSPARENT;
|
|
155
|
+
} else {
|
|
156
|
+
// The legacy value packs both parts into one string, e.g. "FFFFFF,1". Its color is normalized
|
|
157
|
+
// like a configured one - theme configurations carry values the image service will not take.
|
|
158
|
+
const {
|
|
159
|
+
fillColor: legacyFillColor = ''
|
|
160
|
+
} = getLegacyImageSettings();
|
|
161
|
+
const [legacyColor, legacyFillTransparent] = legacyFillColor.split(',');
|
|
162
|
+
color = legacyColor ? toThumborColor(legacyColor) : DEFAULT_IMAGE_FILL_COLOR;
|
|
163
|
+
fillTransparent = legacyFillTransparent === undefined ? DEFAULT_IMAGE_FILL_TRANSPARENT : legacyFillTransparent.trim() === '1';
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
// No hydration branch, unlike the fill: the unhydrated slice already holds the legacy quality.
|
|
167
|
+
quality: imageSettings?.quality ?? DEFAULT_IMAGE_QUALITY,
|
|
168
|
+
fillColor: color,
|
|
169
|
+
fillTransparent
|
|
170
|
+
};
|
|
171
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a configured value into a compression quality the image service accepts.
|
|
3
|
+
* @param value The value to convert.
|
|
4
|
+
* @returns A whole number between 1 and 100.
|
|
5
|
+
*/
|
|
6
|
+
export declare const toImageQuality: (value: unknown) => number;
|
|
7
|
+
//# sourceMappingURL=toImageQuality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toImageQuality.d.ts","sourceRoot":"","sources":["../../../settings/helpers/toImageQuality.ts"],"names":[],"mappings":"AA4BA;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,KAAG,MAY/C,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { logger } from '@shopgate/pwa-core/helpers';
|
|
2
|
+
import { DEFAULT_IMAGE_QUALITY } from "../constants/imageSettings";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The range the image service accepts.
|
|
6
|
+
*/
|
|
7
|
+
const MIN_IMAGE_QUALITY = 1;
|
|
8
|
+
const MAX_IMAGE_QUALITY = 100;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Coerces a configured value into a number.
|
|
12
|
+
* @param value The configured value.
|
|
13
|
+
* @returns The number, or NaN when the value does not express one.
|
|
14
|
+
*/
|
|
15
|
+
const toNumber = value => {
|
|
16
|
+
if (typeof value === 'number') {
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Emptiness is handled here rather than left to Number(), which would read both "" and null as a
|
|
21
|
+
// perfectly valid zero.
|
|
22
|
+
if (typeof value === 'string' && value.trim() !== '') {
|
|
23
|
+
return Number(value);
|
|
24
|
+
}
|
|
25
|
+
return NaN;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Converts a configured value into a compression quality the image service accepts.
|
|
30
|
+
* @param value The value to convert.
|
|
31
|
+
* @returns A whole number between 1 and 100.
|
|
32
|
+
*/
|
|
33
|
+
export const toImageQuality = value => {
|
|
34
|
+
const quality = toNumber(value);
|
|
35
|
+
if (!Number.isFinite(quality)) {
|
|
36
|
+
logger.warn(`Invalid image quality "${value}", falling back to ${DEFAULT_IMAGE_QUALITY}`);
|
|
37
|
+
return DEFAULT_IMAGE_QUALITY;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Out of range numbers are clamped rather than rejected, so a value that is still being typed
|
|
41
|
+
// degrades into the nearest usable one instead of jumping back to the default. Zero is included
|
|
42
|
+
// in that - the service takes it, but the images it returns are unusable.
|
|
43
|
+
return Math.min(Math.max(Math.round(quality), MIN_IMAGE_QUALITY), MAX_IMAGE_QUALITY);
|
|
44
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a color into the format Thumbor's fill filter expects - a hexadecimal RGB expression
|
|
3
|
+
* without the leading "#", or one of its own keywords.
|
|
4
|
+
*
|
|
5
|
+
* Any alpha channel on the input is dropped: Thumbor's fill color cannot carry one, and Color.hex()
|
|
6
|
+
* returns the opaque six digit form. Transparency is only expressible by configuring the
|
|
7
|
+
* "transparent" keyword explicitly.
|
|
8
|
+
*
|
|
9
|
+
* Everything else is canonicalized to hex rather than passing HTML color names through, so that
|
|
10
|
+
* "white", "#fff" and "rgb(255, 255, 255)" all produce the same url and share a CDN cache entry.
|
|
11
|
+
* @param value The color to convert.
|
|
12
|
+
* @returns The Thumbor color token.
|
|
13
|
+
*/
|
|
14
|
+
export declare const toThumborColor: (value: string) => string;
|
|
15
|
+
//# sourceMappingURL=toThumborColor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toThumborColor.d.ts","sourceRoot":"","sources":["../../../settings/helpers/toThumborColor.ts"],"names":[],"mappings":"AAqBA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,KAAG,MAiB9C,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import "core-js/modules/es.array.includes.js";
|
|
2
|
+
import "core-js/modules/es.string.replace.js";
|
|
3
|
+
import Color from 'color';
|
|
4
|
+
import { logger } from '@shopgate/pwa-core/helpers';
|
|
5
|
+
// Imported via its module path rather than the "styles" barrel, since that barrel pulls in the
|
|
6
|
+
// ThemeProvider and would create a circular import.
|
|
7
|
+
import { isColor } from '@shopgate/engage/styles/theme/utils/color';
|
|
8
|
+
import { DEFAULT_IMAGE_FILL_COLOR } from "../constants/imageSettings";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Values Thumbor's fill filter accepts that are not CSS colors, so they have to bypass the color
|
|
12
|
+
* parser and be passed through untouched.
|
|
13
|
+
* @see https://thumbor.readthedocs.io/en/latest/filling.html
|
|
14
|
+
*/
|
|
15
|
+
const THUMBOR_COLOR_KEYWORDS = ['auto', 'blur', 'transparent'];
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* A hexadecimal color without the leading "#" - the format the image service itself expects, and
|
|
19
|
+
* therefore what the legacy AppImages config stores. It is not a valid CSS color, so it has to be
|
|
20
|
+
* recognized before the color parser sees it.
|
|
21
|
+
*/
|
|
22
|
+
const BARE_HEX_PATTERN = /^([\da-f]{3}|[\da-f]{4}|[\da-f]{6}|[\da-f]{8})$/i;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Converts a color into the format Thumbor's fill filter expects - a hexadecimal RGB expression
|
|
26
|
+
* without the leading "#", or one of its own keywords.
|
|
27
|
+
*
|
|
28
|
+
* Any alpha channel on the input is dropped: Thumbor's fill color cannot carry one, and Color.hex()
|
|
29
|
+
* returns the opaque six digit form. Transparency is only expressible by configuring the
|
|
30
|
+
* "transparent" keyword explicitly.
|
|
31
|
+
*
|
|
32
|
+
* Everything else is canonicalized to hex rather than passing HTML color names through, so that
|
|
33
|
+
* "white", "#fff" and "rgb(255, 255, 255)" all produce the same url and share a CDN cache entry.
|
|
34
|
+
* @param value The color to convert.
|
|
35
|
+
* @returns The Thumbor color token.
|
|
36
|
+
*/
|
|
37
|
+
export const toThumborColor = value => {
|
|
38
|
+
const trimmed = typeof value === 'string' ? value.trim() : '';
|
|
39
|
+
if (THUMBOR_COLOR_KEYWORDS.includes(trimmed.toLowerCase())) {
|
|
40
|
+
return trimmed.toLowerCase();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// A bare hex is what the image service and the legacy config use, but not something the color
|
|
44
|
+
// parser recognizes, so it gets its "#" back before parsing.
|
|
45
|
+
const parsable = BARE_HEX_PATTERN.test(trimmed) ? `#${trimmed}` : trimmed;
|
|
46
|
+
if (!isColor(parsable)) {
|
|
47
|
+
logger.warn(`Invalid image fill color "${value}", falling back to ${DEFAULT_IMAGE_FILL_COLOR}`);
|
|
48
|
+
return DEFAULT_IMAGE_FILL_COLOR;
|
|
49
|
+
}
|
|
50
|
+
return Color(parsable).hex().replace('#', '').toUpperCase();
|
|
51
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../settings/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useImageServiceSettings, useProductImageSettings } from "./useImageSettings";
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { ResolvedImageServiceSettings, ResolvedProductImageSettings } from '../helpers';
|
|
2
|
+
/**
|
|
3
|
+
* Resolves the resolutions and aspect ratio to request for every product image context, keyed by
|
|
4
|
+
* `pdp`, `gallery` and `list`.
|
|
5
|
+
*
|
|
6
|
+
* Prefer giving ProductImage a `context` prop, which resolves its own settings. This hook is for
|
|
7
|
+
* the places that render the plain Image component instead, e.g. the fullscreen gallery sliders,
|
|
8
|
+
* which need its unwrapped mode.
|
|
9
|
+
*
|
|
10
|
+
* `ratio` may be null, which the Image component reads as "derive one from the largest
|
|
11
|
+
* resolution" - pass it through rather than substituting a value.
|
|
12
|
+
* @returns The resolved settings, keyed by context.
|
|
13
|
+
*/
|
|
14
|
+
export declare const useProductImageSettings: () => ResolvedProductImageSettings;
|
|
15
|
+
/**
|
|
16
|
+
* Resolves the quality and fill color for image service urls, in the shape getFullImageSource
|
|
17
|
+
* takes as its third argument.
|
|
18
|
+
*
|
|
19
|
+
* Components rarely need this - the Image component already calls it and applies the result. It is
|
|
20
|
+
* separate from useProductImageSettings because both values apply to every image the service
|
|
21
|
+
* serves, not just product images.
|
|
22
|
+
*
|
|
23
|
+
* `fillColor` is a hash free hex, not a CSS color, and the transparency flag is a separate
|
|
24
|
+
* `fillTransparent` - the image sources spell the pair differently.
|
|
25
|
+
* @returns The image service settings.
|
|
26
|
+
*/
|
|
27
|
+
export declare const useImageServiceSettings: () => ResolvedImageServiceSettings;
|
|
28
|
+
//# sourceMappingURL=useImageSettings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useImageSettings.d.ts","sourceRoot":"","sources":["../../../settings/hooks/useImageSettings.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,QAAO,4BAQ1C,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,QAAO,4BAQ1C,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { useSelector } from 'react-redux';
|
|
3
|
+
import { getAreAppSettingsHydrated, getImageSettings } from "../selectors/appSettings";
|
|
4
|
+
import { resolveImageServiceSettings, resolveProductImageSettings } from "../helpers";
|
|
5
|
+
/**
|
|
6
|
+
* Resolves the resolutions and aspect ratio to request for every product image context, keyed by
|
|
7
|
+
* `pdp`, `gallery` and `list`.
|
|
8
|
+
*
|
|
9
|
+
* Prefer giving ProductImage a `context` prop, which resolves its own settings. This hook is for
|
|
10
|
+
* the places that render the plain Image component instead, e.g. the fullscreen gallery sliders,
|
|
11
|
+
* which need its unwrapped mode.
|
|
12
|
+
*
|
|
13
|
+
* `ratio` may be null, which the Image component reads as "derive one from the largest
|
|
14
|
+
* resolution" - pass it through rather than substituting a value.
|
|
15
|
+
* @returns The resolved settings, keyed by context.
|
|
16
|
+
*/
|
|
17
|
+
export const useProductImageSettings = () => {
|
|
18
|
+
const areAppSettingsHydrated = useSelector(getAreAppSettingsHydrated);
|
|
19
|
+
const imageSettings = useSelector(getImageSettings);
|
|
20
|
+
return useMemo(() => resolveProductImageSettings(areAppSettingsHydrated, imageSettings), [areAppSettingsHydrated, imageSettings]);
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Resolves the quality and fill color for image service urls, in the shape getFullImageSource
|
|
25
|
+
* takes as its third argument.
|
|
26
|
+
*
|
|
27
|
+
* Components rarely need this - the Image component already calls it and applies the result. It is
|
|
28
|
+
* separate from useProductImageSettings because both values apply to every image the service
|
|
29
|
+
* serves, not just product images.
|
|
30
|
+
*
|
|
31
|
+
* `fillColor` is a hash free hex, not a CSS color, and the transparency flag is a separate
|
|
32
|
+
* `fillTransparent` - the image sources spell the pair differently.
|
|
33
|
+
* @returns The image service settings.
|
|
34
|
+
*/
|
|
35
|
+
export const useImageServiceSettings = () => {
|
|
36
|
+
const areAppSettingsHydrated = useSelector(getAreAppSettingsHydrated);
|
|
37
|
+
const imageSettings = useSelector(getImageSettings);
|
|
38
|
+
return useMemo(() => resolveImageServiceSettings(areAppSettingsHydrated, imageSettings), [areAppSettingsHydrated, imageSettings]);
|
|
39
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Reducer, UnknownAction } from 'redux';
|
|
2
|
+
import type { AppSettingsSlice } from '../types/appSettings';
|
|
3
|
+
import type { ReceiveAppSettingsAction } from '../action-creators/appSettings';
|
|
4
|
+
type AppSettingsAction = ReceiveAppSettingsAction | UnknownAction;
|
|
5
|
+
/**
|
|
6
|
+
* The built-in default app settings. Used as the reducer's initial state and as
|
|
7
|
+
* a safe fallback for selectors when the slice is not present in the store yet.
|
|
8
|
+
*/
|
|
9
|
+
export declare const DEFAULT_APP_SETTINGS: AppSettingsSlice;
|
|
10
|
+
/**
|
|
11
|
+
* Stores the app settings.
|
|
12
|
+
* @param state The current state.
|
|
13
|
+
* @param action The action object.
|
|
14
|
+
* @returns The new state.
|
|
15
|
+
*/
|
|
16
|
+
declare const appSettings: Reducer<AppSettingsSlice, AppSettingsAction>;
|
|
17
|
+
export default appSettings;
|
|
18
|
+
//# sourceMappingURL=appSettings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appSettings.d.ts","sourceRoot":"","sources":["../../../settings/reducers/appSettings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAa/E,KAAK,iBAAiB,GAAG,wBAAwB,GAAG,aAAa,CAAC;AAQlE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,gBA+DlC,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,WAAW,EAAE,OAAO,CAAC,gBAAgB,EAAE,iBAAiB,CAuC7D,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import _merge from "lodash/merge";
|
|
2
|
+
import { RECEIVE_APP_SETTINGS } from "../constants/appSettings";
|
|
3
|
+
import { DEFAULT_IMAGE_FILL_COLOR, DEFAULT_IMAGE_FILL_TRANSPARENT, DEFAULT_IMAGE_QUALITY, DEFAULT_SHOW_INNER_SHADOW } from "../constants/imageSettings";
|
|
4
|
+
// Deliberately not exported from the "helpers" barrel - they normalize values on their way into
|
|
5
|
+
// the slice, which is nothing a consumer of the settings needs.
|
|
6
|
+
import { toImageQuality } from "../helpers/toImageQuality";
|
|
7
|
+
import { toThumborColor } from "../helpers/toThumborColor";
|
|
8
|
+
const isReceiveAppSettingsAction = action => action.type === RECEIVE_APP_SETTINGS && 'settings' in action;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The built-in default app settings. Used as the reducer's initial state and as
|
|
12
|
+
* a safe fallback for selectors when the slice is not present in the store yet.
|
|
13
|
+
*/
|
|
14
|
+
export const DEFAULT_APP_SETTINGS = {
|
|
15
|
+
isHydrated: false,
|
|
16
|
+
navigation: {
|
|
17
|
+
tabBar: {
|
|
18
|
+
variant: 'fixed',
|
|
19
|
+
showLabels: true,
|
|
20
|
+
hideOnScroll: false,
|
|
21
|
+
transition: 'fade',
|
|
22
|
+
fixed: {
|
|
23
|
+
borderEnabled: true
|
|
24
|
+
},
|
|
25
|
+
favorites: {
|
|
26
|
+
showCounter: true
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
product: {
|
|
31
|
+
grid: {
|
|
32
|
+
columns: {
|
|
33
|
+
small: 2,
|
|
34
|
+
large: 4
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
slider: {
|
|
38
|
+
slidesPerView: {
|
|
39
|
+
small: 2.3,
|
|
40
|
+
medium: 3.3,
|
|
41
|
+
large: 4.3
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
rating: {
|
|
45
|
+
showEmptyStars: true
|
|
46
|
+
},
|
|
47
|
+
card: {
|
|
48
|
+
productName: {
|
|
49
|
+
maxLines: 3
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
tile: {
|
|
53
|
+
productName: {
|
|
54
|
+
maxLines: 3
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
cards: {
|
|
59
|
+
style: 'shadow',
|
|
60
|
+
shadow: {
|
|
61
|
+
size: 'medium'
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
typography: {
|
|
65
|
+
variants: {}
|
|
66
|
+
},
|
|
67
|
+
appearance: {
|
|
68
|
+
defaultColorSchemeMode: 'light'
|
|
69
|
+
},
|
|
70
|
+
images: {
|
|
71
|
+
quality: DEFAULT_IMAGE_QUALITY,
|
|
72
|
+
// Already in the image service's format, so the unhydrated path needs no conversion.
|
|
73
|
+
fillColor: DEFAULT_IMAGE_FILL_COLOR,
|
|
74
|
+
fillTransparent: DEFAULT_IMAGE_FILL_TRANSPARENT,
|
|
75
|
+
product: {
|
|
76
|
+
ratio: {
|
|
77
|
+
width: 1,
|
|
78
|
+
height: 1
|
|
79
|
+
},
|
|
80
|
+
showInnerShadow: DEFAULT_SHOW_INNER_SHADOW
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Stores the app settings.
|
|
87
|
+
* @param state The current state.
|
|
88
|
+
* @param action The action object.
|
|
89
|
+
* @returns The new state.
|
|
90
|
+
*/
|
|
91
|
+
const appSettings = (state, action = {
|
|
92
|
+
type: ''
|
|
93
|
+
}) => {
|
|
94
|
+
if (isReceiveAppSettingsAction(action)) {
|
|
95
|
+
const {
|
|
96
|
+
images,
|
|
97
|
+
typography,
|
|
98
|
+
appearance
|
|
99
|
+
} = action.settings ?? {};
|
|
100
|
+
|
|
101
|
+
// Merged over the defaults rather than over the current state, so a field an incoming payload
|
|
102
|
+
// omits falls back to its default instead of keeping the value of an earlier one. The admin
|
|
103
|
+
// preview needs that: it stops sending a shadow size once the card style isn't `shadow`, and it
|
|
104
|
+
// clears a whole branch by sending a null.
|
|
105
|
+
const nextState = _merge({}, DEFAULT_APP_SETTINGS, {
|
|
106
|
+
...action.settings,
|
|
107
|
+
// A cleared branch is mapped to undefined, which merge skips, so the defaults it started from
|
|
108
|
+
// stay in place. A null would be written into the slice like any other value.
|
|
109
|
+
images: images === null ? undefined : {
|
|
110
|
+
...images,
|
|
111
|
+
product: images?.product ?? undefined
|
|
112
|
+
},
|
|
113
|
+
typography: typography === null ? undefined : {
|
|
114
|
+
...typography,
|
|
115
|
+
variants: typography?.variants ?? undefined
|
|
116
|
+
},
|
|
117
|
+
appearance: appearance === null ? undefined : {
|
|
118
|
+
...appearance,
|
|
119
|
+
defaultColorSchemeMode: appearance?.defaultColorSchemeMode ?? undefined
|
|
120
|
+
}
|
|
121
|
+
}, {
|
|
122
|
+
isHydrated: true
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
// Converted on the way in, so the slice holds wire ready values and every image url does not
|
|
126
|
+
// pay for it. Unconditional, because an empty string or a null reaches here like any other
|
|
127
|
+
// value - both converters are idempotent.
|
|
128
|
+
nextState.images.fillColor = toThumborColor(nextState.images.fillColor);
|
|
129
|
+
nextState.images.quality = toImageQuality(nextState.images.quality);
|
|
130
|
+
return nextState;
|
|
131
|
+
}
|
|
132
|
+
return state ?? DEFAULT_APP_SETTINGS;
|
|
133
|
+
};
|
|
134
|
+
export default appSettings;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const settings: import("redux").Reducer<{
|
|
2
|
+
config: Object;
|
|
3
|
+
shopSettings: Object;
|
|
4
|
+
merchantSettings: Object;
|
|
5
|
+
appSettings: import("../types/appSettings").AppSettingsSlice;
|
|
6
|
+
}, ({
|
|
7
|
+
type: string;
|
|
8
|
+
settings: import("../types/appSettings").DeepPartial<import("../types/appSettings").AppSettings>;
|
|
9
|
+
} | import("redux").UnknownAction) | import("redux").Action<string>, Partial<{
|
|
10
|
+
config: Object | undefined;
|
|
11
|
+
shopSettings: Object | undefined;
|
|
12
|
+
merchantSettings: Object | undefined;
|
|
13
|
+
appSettings: import("../types/appSettings").AppSettingsSlice | undefined;
|
|
14
|
+
}>>;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../settings/reducers/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;GAKnB,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { combineReducers } from 'redux';
|
|
2
|
-
import config from "
|
|
2
|
+
import config from "../../core/config/config.reducers";
|
|
3
3
|
import shopSettings from "./shopSettings";
|
|
4
4
|
import merchantSettings from "./merchantSettings";
|
|
5
|
-
|
|
5
|
+
import appSettings from "./appSettings";
|
|
6
6
|
export const settings = combineReducers({
|
|
7
7
|
config,
|
|
8
8
|
shopSettings,
|
|
9
|
-
merchantSettings
|
|
9
|
+
merchantSettings,
|
|
10
|
+
appSettings
|
|
10
11
|
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stores the merchant settings.
|
|
3
|
+
* @param {Object} [state={}] The current state.
|
|
4
|
+
* @param {Object} action The action object.
|
|
5
|
+
* @returns {Object} The new state.
|
|
6
|
+
*/
|
|
7
|
+
export default function merchantSettings(state?: Object, action?: Object): Object;
|
|
8
|
+
export namespace DEFAULT_MERCHANT_SETTINGS {
|
|
9
|
+
export let locationBasedShoppingEnabled: boolean;
|
|
10
|
+
export let enableSubstitutionPreferences: boolean;
|
|
11
|
+
export let restrictMultiLocationOrders: boolean;
|
|
12
|
+
export { currency as defaultCurrency };
|
|
13
|
+
export let enableWebIndexing: boolean;
|
|
14
|
+
export let enabledCmsVersion: string;
|
|
15
|
+
}
|
|
16
|
+
declare const currency: any;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=merchantSettings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merchantSettings.d.ts","sourceRoot":"","sources":["../../../settings/reducers/merchantSettings.js"],"names":[],"mappings":"AA4BA;;;;;GAKG;AACH,iDAJW,MAAM,WACN,MAAM,GACJ,MAAM,CAkBlB"}
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import { produce } from 'immer';
|
|
2
2
|
import appConfig from '@shopgate/pwa-common/helpers/config';
|
|
3
|
-
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";
|
|
3
|
+
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/merchantSettings";
|
|
4
4
|
const {
|
|
5
5
|
locales: {
|
|
6
6
|
currency = null
|
|
7
7
|
} = {}
|
|
8
8
|
} = appConfig;
|
|
9
|
-
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The built-in default merchant settings. Used as the reducer's initial state
|
|
12
|
+
* and as a safe fallback for selectors when the slice is not present in the
|
|
13
|
+
* store yet.
|
|
14
|
+
*/
|
|
15
|
+
export const DEFAULT_MERCHANT_SETTINGS = {
|
|
10
16
|
[MERCHANT_SETTINGS_LOCATION_BASED_SHOPPING_ENABLED]: false,
|
|
11
17
|
[MERCHANT_SETTINGS_SUBSTITUTION_PREFERENCES_ENABLED]: false,
|
|
12
18
|
[MERCHANT_SETTINGS_RESTRICT_MULTI_LOCATION_ORDERS]: false,
|
|
@@ -21,7 +27,7 @@ const defaultState = {
|
|
|
21
27
|
* @param {Object} action The action object.
|
|
22
28
|
* @returns {Object} The new state.
|
|
23
29
|
*/
|
|
24
|
-
export default function merchantSettings(state =
|
|
30
|
+
export default function merchantSettings(state = DEFAULT_MERCHANT_SETTINGS, action = {}) {
|
|
25
31
|
const producer = produce(draft => {
|
|
26
32
|
switch (action.type) {
|
|
27
33
|
case RECEIVE_MERCHANT_SETTINGS:
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stores the product locations by the location code.
|
|
3
|
+
* @param {Object} [state={}] The current state.
|
|
4
|
+
* @param {Object} action The action object.
|
|
5
|
+
* @returns {Object} The new state.
|
|
6
|
+
*/
|
|
7
|
+
export default function shopSettings(state?: Object, action?: Object): Object;
|
|
8
|
+
export namespace DEFAULT_SHOP_SETTINGS {
|
|
9
|
+
export let googleSiteVerificationCode: null;
|
|
10
|
+
export let cartSupplementalContent: null;
|
|
11
|
+
export let orderSupplementalContent: null;
|
|
12
|
+
export let showShopLogoInWeb: boolean;
|
|
13
|
+
export let showShopLogoInApp: boolean;
|
|
14
|
+
export { SORT_RELEVANCE as productsSortOrder };
|
|
15
|
+
export let numberOfAddressLines: number;
|
|
16
|
+
export namespace images {
|
|
17
|
+
let productPlaceholder: null;
|
|
18
|
+
let categoryPlaceholder: null;
|
|
19
|
+
let favicon: null;
|
|
20
|
+
}
|
|
21
|
+
export let wishlistItemQuantityEnabled: boolean;
|
|
22
|
+
export let wishlistItemNotesEnabled: boolean;
|
|
23
|
+
export let loadWishlistOnAppStartEnabled: boolean;
|
|
24
|
+
export let showWishlistItemsCountBadge: boolean;
|
|
25
|
+
export let enableCms2ForAllShoppers: boolean;
|
|
26
|
+
}
|
|
27
|
+
import { SORT_RELEVANCE } from '@shopgate/pwa-common/constants/DisplayOptions';
|
|
28
|
+
//# sourceMappingURL=shopSettings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shopSettings.d.ts","sourceRoot":"","sources":["../../../settings/reducers/shopSettings.js"],"names":[],"mappings":"AAgDA;;;;;GAKG;AACH,6CAJW,MAAM,WACN,MAAM,GACJ,MAAM,CA0BlB;;;;;;;;;;;;;;;;;;;;+BA7E8B,+CAA+C"}
|