@shopgate/engage 7.32.0-beta.1 → 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/Profile/Profile.provider.d.ts +1 -1
- package/account/components/Profile/ProfileAddressBook.d.ts.map +1 -1
- package/account/components/Profile/ProfileAddressBook.js +13 -22
- package/account/components/Profile/ProfileAddressCard.d.ts.map +1 -1
- package/account/components/Profile/ProfileAddressCard.js +9 -18
- package/account/components/Profile/ProfileForm.d.ts.map +1 -1
- package/account/components/Profile/ProfileForm.js +15 -42
- package/account/components/ProfileContact/ProfileContact.js +13 -21
- package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts +2 -1
- package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts.map +1 -1
- package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.js +61 -5
- package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.d.ts +7 -1
- package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.d.ts.map +1 -1
- package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.js +14 -2
- package/admin-preview/components/FrontendSettingsPreviewBridge/types.d.ts +15 -2
- package/admin-preview/components/FrontendSettingsPreviewBridge/types.d.ts.map +1 -1
- package/admin-preview/constants/index.d.ts +0 -12
- package/admin-preview/constants/index.d.ts.map +1 -1
- package/admin-preview/constants/index.js +0 -16
- 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 +7 -0
- package/admin-preview/helpers/index.d.ts.map +1 -1
- package/admin-preview/helpers/index.js +12 -4
- 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 +5 -5
- package/back-in-stock/components/Subscriptions/components/Subscription/index.js +2 -5
- package/cart/components/CartItem/CartItemProductLayout.js +2 -1
- package/cart/components/CartItem/CartItemProductLayoutWide.js +2 -2
- package/cart/components/CartItem/CartItemProductLayoutWideRemoveItem.js +7 -14
- 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/CartItemQuantityPicker.js +1 -0
- package/cart/components/CartItems/CartItemCardReservationLabelChangeStore.js +6 -24
- package/cart/components/CartItems/CartItems.js +8 -10
- package/cart/components/CartItems/CartItemsSubstitution.js +3 -2
- package/cart/components/CartSummaryWide/CartSummaryWide.js +2 -2
- package/cart/components/CartSummaryWide/CartSummaryWideCheckoutButton.js +9 -23
- package/cart/components/PaymentBar/PaymentBarCheckoutButton.js +8 -30
- package/cart/components/PaymentBar/PaymentBarContent.js +1 -1
- package/cart/components/PaymentBar/testUtils/mockFactories.js +4 -11
- package/category/components/CategoryImage/index.js +24 -17
- package/checkout/components/AddressBook/AddressList.js +14 -23
- package/checkout/components/Checkout/CheckoutActions.js +4 -3
- package/checkout/components/Checkout/CheckoutAddress.js +8 -0
- package/checkout/components/Checkout/CheckoutSection.js +6 -2
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmation.js +6 -7
- package/checkout/components/ResponsiveBackButton/ResponsiveBackButton.js +7 -17
- 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 +2 -4
- package/components/Logo/index.d.ts.map +1 -1
- package/components/Logo/index.js +3 -6
- package/components/NavigationHandler/connector.js +1 -1
- package/components/NavigationHandler/index.d.ts +2 -2
- 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/PickerUtilize/index.d.ts +2 -1
- package/components/PickerUtilize/index.d.ts.map +1 -1
- package/components/RadioCard/RadioCard.d.ts.map +1 -1
- package/components/RadioCard/RadioCard.js +2 -1
- package/components/SheetList/components/Item/index.js +8 -8
- package/components/Tabs/components/Tab.d.ts.map +1 -1
- package/components/Tabs/components/Tab.js +14 -16
- package/components/Typography/Typography.d.ts +1 -1
- 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 +4 -1
- 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/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/i18n.d.ts +4 -0
- package/core/helpers/i18n.d.ts.map +1 -1
- package/core/helpers/i18n.js +3 -0
- 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 -103
- 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/development/components/DevelopmentSettings/DevelopmentSettings.js +3 -3
- package/development/components/SimulatedInsets/SimulatedInsetBottom.js +3 -3
- package/development/components/SimulatedInsets/SimulatedInsetTop.js +2 -2
- package/favorites/components/FavoriteButtonWide/FavoriteButtonWide.js +7 -17
- 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 +7 -7
- 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 -1
- package/favorites/components/List/ListContent.js +4 -5
- package/favorites/components/Lists/Lists.js +17 -6
- package/filter/components/FilterPageContent/components/ApplyButton/index.js +8 -10
- package/filter/components/FilterPageContent/components/ResetButton/index.js +8 -6
- package/filter/components/PriceSlider/index.js +6 -1
- package/locations/components/ChangeLocationButton/ChangeLocationButton.js +10 -14
- package/locations/components/FulfillmentSheet/FulfillmentSheetContent.js +4 -8
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotDialog.js +4 -8
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcher.js +1 -1
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherBar.js +9 -18
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherDefault.js +10 -10
- package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherBar.js +9 -19
- package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherDefault.js +9 -10
- package/locations/components/ReserveForm/ReserveForm.js +6 -7
- package/locations/components/StoreDetails/components/GetDirectionsButton.js +2 -4
- package/locations/components/StoreDetails/components/StoreDetails.js +5 -10
- package/locations/components/StoreDetails/components/StoresNearbyListItem.js +13 -21
- package/locations/components/StoreFinder/StoreFinderSelectLocationButton.js +5 -11
- package/locations/components/StoreFinder/StoreFinderStoreInfoButton.js +5 -11
- package/locations/components/StoreList/StoreListProduct.js +2 -3
- package/locations/components/StoreList/StoreListSearch.js +1 -0
- package/locations/components/StoreList/StoreSelectLocationButton.js +5 -11
- package/login/components/ForgotPassword/ForgotPassword.js +11 -23
- package/mocks/date.js +31 -0
- package/mocks/index.js +3 -0
- package/mocks/pipelineRequest.js +1 -0
- package/mocks/subscriptions.js +1 -0
- package/orders/components/OrderDetails/OrderDetailsAuthenticate.js +5 -7
- package/orders/components/OrderHistory/OrderHistoryList.d.ts.map +1 -1
- package/orders/components/OrderHistory/OrderHistoryList.js +8 -9
- package/orders/components/OrderHistory/OrderHistoryTable.d.ts.map +1 -1
- package/orders/components/OrderHistory/OrderHistoryTable.js +4 -0
- package/package.json +12 -12
- package/page/components/NotFound.d.ts +7 -0
- package/page/components/NotFound.d.ts.map +1 -0
- package/page/components/NotFound.js +8 -8
- 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/WidgetRichText/WidgetRichText.d.ts +25 -0
- package/page/components/WidgetRichText/WidgetRichText.d.ts.map +1 -0
- 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 +6 -10
- 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 +7 -18
- 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 +3 -1
- 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 +13 -11
- 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 +5 -3
- 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/widgets/Button/Button.js +2 -3
- package/page/widgets/NestedCategoryFilter/NestedCategoryFilter.js +8 -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/Description/index.js +0 -2
- package/product/components/FilterBar/components/Content/components/FilterButton/index.js +2 -6
- package/product/components/FilterBar/components/Content/components/Sort/index.js +1 -5
- package/product/components/Media/FeaturedMedia.js +7 -1
- package/product/components/Media/MediaImage.js +24 -23
- package/product/components/Media/MediaPlaceholder.js +4 -7
- package/product/components/MediaSlider/components/MediaImage/index.js +6 -2
- package/product/components/MediaSlider/constants.js +1 -12
- package/product/components/OrderQuantityHint/index.js +16 -1
- package/product/components/ProductCard/index.js +36 -23
- package/product/components/ProductGrid/components/Item/components/ItemDetails/index.js +12 -4
- package/product/components/ProductGrid/components/Item/components/ItemImage/index.js +3 -6
- package/product/components/ProductGrid/components/Item/components/ItemName/index.js +6 -1
- package/product/components/ProductGrid/components/Item/index.js +10 -2
- 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 +0 -1
- 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 +12 -17
- 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 -201
- package/product/components/ProductList/components/Item/index.js +5 -3
- 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/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 +3 -2
- 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/UnitQuantityPicker/UnitQuantityPicker.d.ts.map +1 -1
- package/product/components/UnitQuantityPicker/UnitQuantityPicker.js +16 -34
- 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/product/selectors/mocks/productProperties.mock.js +49 -0
- package/push-opt-in/components/PushOptInModal/index.js +4 -4
- package/registration/components/Registration/RegistrationFormActions.js +4 -4
- package/reviews/components/Reviews/components/AllReviewsLink/index.js +6 -6
- package/reviews/components/Reviews/components/Header/components/WriteReviewLink/index.js +4 -3
- package/settings/action-creators/appSettings.d.ts +3 -3
- package/settings/action-creators/appSettings.d.ts.map +1 -1
- package/settings/constants/appSettings.d.ts +3 -0
- package/settings/constants/appSettings.d.ts.map +1 -1
- package/settings/constants/appSettings.js +6 -1
- 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/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.map +1 -1
- package/settings/reducers/appSettings.js +100 -8
- package/settings/reducers/index.d.ts +3 -3
- package/settings/selectors/appSettings.d.ts +114 -1
- package/settings/selectors/appSettings.d.ts.map +1 -1
- package/settings/selectors/appSettings.js +75 -1
- package/settings/types/appSettings.d.ts +244 -0
- package/settings/types/appSettings.d.ts.map +1 -1
- package/settings/types/appSettings.js +124 -1
- 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/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 +107 -4
- package/styles/theme/createTheme/createComponents.d.ts +2 -2
- package/styles/theme/createTheme/createComponents.d.ts.map +1 -1
- package/styles/theme/createTheme/createComponents.js +0 -1
- package/styles/theme/createTheme/createComponents.types.d.ts +117 -0
- package/styles/theme/createTheme/createComponents.types.d.ts.map +1 -1
- package/styles/theme/createTheme/createComponents.types.js +119 -2
- package/styles/theme/createTheme/createCssVarsForColorSchemeThemes.d.ts.map +1 -1
- package/styles/theme/createTheme/createCssVarsForColorSchemeThemes.js +13 -3
- package/styles/theme/createTheme/createPalette.types.d.ts +5 -0
- package/styles/theme/createTheme/createPalette.types.d.ts.map +1 -1
- package/styles/theme/createTheme/createPalette.types.js +7 -2
- 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 +4 -2
- package/styles/theme/createTheme/createThemeFromColorScheme.d.ts.map +1 -1
- package/styles/theme/createTheme/createThemeFromColorScheme.js +6 -3
- package/styles/theme/createTheme/createTypography.d.ts +2 -1
- package/styles/theme/createTheme/createTypography.js +59 -18
- 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 -2
- 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 +41 -9
- 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 +88 -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 +3 -4
- package/tracking/components/PrivacySettings/index.js +3 -3
- package/cart/components/PaymentBar/PaymentBarReserveButton.connector.js +0 -6
- package/cart/components/PaymentBar/PaymentBarReserveButton.js +0 -71
- package/components/ChipLayout/spec.js +0 -41
- package/components/Logo/spec.js +0 -12
- package/components/NavigationHandler/spec.js +0 -84
- package/components/Picker/spec.js +0 -94
- package/components/PickerUtilize/spec.js +0 -35
- package/components/RangeSlider/spec.js +0 -190
- package/components/SheetList/components/Item/spec.js +0 -101
- package/components/SheetList/spec.js +0 -43
- package/components/TimeBoundary/spec.js +0 -83
- package/filter/components/FilterItem/spec.js +0 -14
- package/filter/components/FilterPageContent/components/ApplyButton/spec.js +0 -46
- package/filter/components/FilterPageContent/components/ResetButton/spec.js +0 -29
- package/filter/components/FilterPageContent/components/Selector/components/Selected/spec.js +0 -26
- package/filter/components/FilterPageContent/components/Selector/components/Toggle/spec.js +0 -34
- package/filter/components/FilterPageContent/components/Selector/components/ValueButton/spec.js +0 -32
- package/filter/components/FilterPageContent/components/Selector/spec.js +0 -33
- package/filter/components/PriceSlider/components/Label/spec.js +0 -26
- package/filter/components/PriceSlider/spec.js +0 -30
- 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/FilterBar/components/Content/spec.js +0 -136
- package/product/components/Header/Shipping/spec.js +0 -36
- package/product/components/Header/Tiers/components/Tier/spec.js +0 -48
- package/product/components/Header/Tiers/spec.js +0 -64
- package/product/components/Media/helpers.d.ts +0 -2
- package/product/components/Media/helpers.d.ts.map +0 -1
- package/product/components/Options/components/Content/spec.js +0 -73
- package/product/components/Options/components/TextOption/components/OptionInfo/spec.js +0 -72
- package/product/components/ProductDiscountBadge/spec.js +0 -58
- package/product/components/ProductGrid/components/Item/components/ItemDetails/spec.js +0 -73
- package/product/components/ProductGrid/components/Item/components/ItemFavoritesButton/spec.js +0 -33
- package/product/components/ProductGrid/components/Item/components/ItemImage/spec.js +0 -16
- package/product/components/ProductGrid/components/Item/components/ItemName/spec.js +0 -21
- package/product/components/ProductGrid/components/Item/components/ItemPrice/spec.js +0 -37
- package/product/components/ProductGrid/spec.js +0 -52
- package/product/components/ProductImage/connector.js +0 -12
- package/product/components/ProductImage/spec.js +0 -87
- package/product/components/ProductSlider/spec.js +0 -37
- package/product/components/Rating/spec.js +0 -58
- 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
- package/reviews/components/Reviews/components/Header/components/WriteReviewLink/spec.js +0 -52
- package/reviews/components/Reviews/components/Header/spec.js +0 -78
- package/reviews/components/Reviews/components/List/spec.js +0 -108
- package/reviews/components/Reviews/components/RatingCount/spec.js +0 -38
- package/reviews/components/Reviews/spec.js +0 -101
- package/tsconfig.build.json +0 -26
- package/tsconfig.json +0 -19
|
@@ -17,6 +17,7 @@ const CircularProgress = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
17
17
|
thickness = 3.6,
|
|
18
18
|
style,
|
|
19
19
|
className,
|
|
20
|
+
classes: classesProp,
|
|
20
21
|
...other
|
|
21
22
|
} = props;
|
|
22
23
|
const {
|
|
@@ -26,7 +27,7 @@ const CircularProgress = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
26
27
|
color
|
|
27
28
|
}, {
|
|
28
29
|
props: {
|
|
29
|
-
classes:
|
|
30
|
+
classes: classesProp
|
|
30
31
|
}
|
|
31
32
|
});
|
|
32
33
|
const circleStyle = {};
|
|
@@ -40,10 +41,10 @@ const CircularProgress = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
40
41
|
rootStyle.transform = 'rotate(-90deg)';
|
|
41
42
|
}
|
|
42
43
|
return /*#__PURE__*/_jsx("div", {
|
|
43
|
-
className: cx(classes.root,
|
|
44
|
+
className: cx(classes.root, {
|
|
44
45
|
[classes.indeterminate]: variant === 'indeterminate',
|
|
45
46
|
[classes.determinate]: variant === 'determinate'
|
|
46
|
-
}),
|
|
47
|
+
}, 'engage__circular-progress', className),
|
|
47
48
|
style: {
|
|
48
49
|
width: size,
|
|
49
50
|
height: size,
|
|
@@ -52,6 +53,9 @@ const CircularProgress = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
52
53
|
},
|
|
53
54
|
ref: ref,
|
|
54
55
|
role: "progressbar",
|
|
56
|
+
"data-variant": variant,
|
|
57
|
+
"data-color": color,
|
|
58
|
+
"data-disable-shrink": disableShrink || undefined,
|
|
55
59
|
...rootProps,
|
|
56
60
|
...other,
|
|
57
61
|
children: /*#__PURE__*/_jsx("svg", {
|
|
@@ -108,8 +112,8 @@ const useStyles = makeStyles({
|
|
|
108
112
|
return {
|
|
109
113
|
root: {
|
|
110
114
|
display: 'inline-block',
|
|
111
|
-
'--
|
|
112
|
-
color: 'var(--
|
|
115
|
+
'--circular-progress-color': cssColor,
|
|
116
|
+
color: 'var(--circular-progress-color)'
|
|
113
117
|
},
|
|
114
118
|
svg: {
|
|
115
119
|
display: 'block'
|
|
@@ -136,4 +140,5 @@ const useStyles = makeStyles({
|
|
|
136
140
|
}
|
|
137
141
|
};
|
|
138
142
|
});
|
|
143
|
+
CircularProgress.displayName = 'CircularProgress';
|
|
139
144
|
export default CircularProgress;
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
export function getFullImageSource(src: string, { width, height }?: {
|
|
1
|
+
export function getFullImageSource(src: string | null, { width, height }?: {
|
|
2
2
|
width: number;
|
|
3
3
|
height: number;
|
|
4
|
+
}, settings?: {
|
|
5
|
+
quality?: number | undefined;
|
|
6
|
+
fillColor?: string | undefined;
|
|
7
|
+
fillTransparent?: boolean | undefined;
|
|
4
8
|
}): string;
|
|
5
9
|
//# sourceMappingURL=getFullImageSource.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFullImageSource.d.ts","sourceRoot":"","sources":["../../../core/helpers/getFullImageSource.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getFullImageSource.d.ts","sourceRoot":"","sources":["../../../core/helpers/getFullImageSource.js"],"names":[],"mappings":"AAiEO,wCAVI,MAAM,GAAC,IAAI,sBAEnB;IAA0B,KAAK,EAAvB,MAAM;IACY,MAAM,EAAxB,MAAM;CACd,aACA;IAA0B,OAAO;IACP,SAAS;IACR,eAAe;CAC1C,GAAU,MAAM,CAyDlB"}
|
|
@@ -5,9 +5,18 @@ import "core-js/modules/web.url.to-json.js";
|
|
|
5
5
|
import "core-js/modules/web.url-search-params.js";
|
|
6
6
|
import { CONFIGURATION_COLLECTION_CREATE_EXTERNAL_IMAGE_URL } from '@shopgate/engage/core/constants';
|
|
7
7
|
import { configuration } from '@shopgate/engage/core/collections';
|
|
8
|
-
import {
|
|
8
|
+
import { DEFAULT_IMAGE_FILL_COLOR, DEFAULT_IMAGE_FILL_TRANSPARENT, DEFAULT_IMAGE_QUALITY } from '@shopgate/engage/settings/constants/imageSettings';
|
|
9
9
|
import { getImageFormat } from "./getImageFormat";
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* The settings applied when the caller passes none.
|
|
13
|
+
*/
|
|
14
|
+
const defaultSettings = {
|
|
15
|
+
quality: DEFAULT_IMAGE_QUALITY,
|
|
16
|
+
fillColor: DEFAULT_IMAGE_FILL_COLOR,
|
|
17
|
+
fillTransparent: DEFAULT_IMAGE_FILL_TRANSPARENT
|
|
18
|
+
};
|
|
19
|
+
|
|
11
20
|
/**
|
|
12
21
|
* Regex to detect the "fill" query parameter
|
|
13
22
|
*/
|
|
@@ -43,29 +52,38 @@ const buildUrl = (baseUrl, params = {}) => {
|
|
|
43
52
|
};
|
|
44
53
|
|
|
45
54
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
55
|
+
* Builds the url that requests an image at a given size. A src that no known image source
|
|
56
|
+
* recognizes is returned untouched.
|
|
57
|
+
* @param {string|null} src Source to the image.
|
|
48
58
|
* @param {Object} dimension Dimension of the requested image.
|
|
49
59
|
* @param {number} dimension.width Width in pixels.
|
|
50
60
|
* @param {number} dimension.height Height in pixels.
|
|
61
|
+
* @param {Object} [settings] Image service settings, as resolved by useImageServiceSettings.
|
|
62
|
+
* @param {number} [settings.quality] Compression quality.
|
|
63
|
+
* @param {string} [settings.fillColor] Fill color as a hash free hex, not a CSS color.
|
|
64
|
+
* @param {boolean} [settings.fillTransparent] Whether transparent areas are filled too.
|
|
51
65
|
* @returns {string}
|
|
52
66
|
*/
|
|
53
67
|
export const getFullImageSource = (src, {
|
|
54
68
|
width,
|
|
55
69
|
height
|
|
56
|
-
} = {}) => {
|
|
70
|
+
} = {}, settings = {}) => {
|
|
71
|
+
const {
|
|
72
|
+
quality,
|
|
73
|
+
fillColor,
|
|
74
|
+
fillTransparent
|
|
75
|
+
} = {
|
|
76
|
+
...defaultSettings,
|
|
77
|
+
...settings
|
|
78
|
+
};
|
|
57
79
|
if (src && src.includes('images.shopgate.services')) {
|
|
58
|
-
const {
|
|
59
|
-
fillColor,
|
|
60
|
-
quality
|
|
61
|
-
} = getProductImageSettings();
|
|
62
80
|
const format = getImageFormat();
|
|
63
81
|
return buildUrl(src, {
|
|
64
82
|
format,
|
|
65
83
|
width,
|
|
66
84
|
height,
|
|
67
85
|
quality,
|
|
68
|
-
fill: fillColor
|
|
86
|
+
fill: fillTransparent ? `${fillColor},1` : fillColor
|
|
69
87
|
});
|
|
70
88
|
}
|
|
71
89
|
if (src && src.startsWith('https://img-cdn.shopgate.com') && !src.includes('?')) {
|
|
@@ -74,17 +92,14 @@ export const getFullImageSource = (src, {
|
|
|
74
92
|
h: height,
|
|
75
93
|
q: 70,
|
|
76
94
|
zd: 'resize',
|
|
77
|
-
|
|
95
|
+
// No transparency flag here - the legacy cdn only understands a plain color.
|
|
96
|
+
fillc: fillColor
|
|
78
97
|
});
|
|
79
98
|
}
|
|
80
99
|
|
|
81
100
|
// Check if an extension registered an external image url handler within the config collection.
|
|
82
101
|
const createUrlFn = configuration.get(CONFIGURATION_COLLECTION_CREATE_EXTERNAL_IMAGE_URL);
|
|
83
102
|
if (typeof createUrlFn === 'function') {
|
|
84
|
-
const {
|
|
85
|
-
fillColor,
|
|
86
|
-
quality
|
|
87
|
-
} = getProductImageSettings();
|
|
88
103
|
const format = getImageFormat();
|
|
89
104
|
|
|
90
105
|
// Invoke the handler with all relevant parameters.
|
|
@@ -92,6 +107,7 @@ export const getFullImageSource = (src, {
|
|
|
92
107
|
width,
|
|
93
108
|
height,
|
|
94
109
|
fillColor,
|
|
110
|
+
fillTransparent,
|
|
95
111
|
quality,
|
|
96
112
|
format
|
|
97
113
|
});
|
package/core/helpers/i18n.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../core/helpers/i18n.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../core/helpers/i18n.js"],"names":[],"mappings":"AA4EA;;GAEG;AACH,mBAFU,WAAW,CAEM;AAMpB,oCAFM,MAAM,EAAE,CAQpB"}
|
package/core/helpers/i18n.js
CHANGED
|
@@ -13,6 +13,7 @@ import { logger } from '@shopgate/pwa-core/helpers';
|
|
|
13
13
|
* @property {Function} number - Number translator
|
|
14
14
|
* @property {Function} getSupplementalData - Get Supplemental Data
|
|
15
15
|
* @property {Function} getPath - Get locale data by path
|
|
16
|
+
* @property {Function} has - Check whether a translation key resolves to a value
|
|
16
17
|
* @property {Function} getLang - Get locale lang code, eg de-DE
|
|
17
18
|
*/
|
|
18
19
|
|
|
@@ -50,6 +51,7 @@ const I18n = () => {
|
|
|
50
51
|
this.number = getNumberFormatter(lang);
|
|
51
52
|
this.getSupplementalData = () => locales.supplementalData || {};
|
|
52
53
|
this.getPath = path => get(locales, path);
|
|
54
|
+
this.has = path => this.getPath(path) !== undefined;
|
|
53
55
|
this.getLang = () => lang;
|
|
54
56
|
// If component decides to act accordingly this information should be exposed.
|
|
55
57
|
this.ready = true;
|
|
@@ -62,6 +64,7 @@ const I18n = () => {
|
|
|
62
64
|
number: notReadyCb,
|
|
63
65
|
getSupplementalData: notReadyCb,
|
|
64
66
|
getPath: notReadyCb,
|
|
67
|
+
has: notReadyCb,
|
|
65
68
|
getLang: notReadyCb,
|
|
66
69
|
ready: false
|
|
67
70
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Load image hook
|
|
3
|
-
* @param {string} src .
|
|
4
|
-
* @returns {boolean}
|
|
3
|
+
* @param {string|null} src The image to preload. A falsy src is a no-op.
|
|
4
|
+
* @returns {boolean} Whether the image has finished loading.
|
|
5
5
|
*/
|
|
6
|
-
export function useLoadImage(src: string): boolean;
|
|
6
|
+
export function useLoadImage(src: string | null): boolean;
|
|
7
7
|
//# sourceMappingURL=useLoadImage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLoadImage.d.ts","sourceRoot":"","sources":["../../../../core/hooks/html/useLoadImage.js"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,kCAHW,MAAM,
|
|
1
|
+
{"version":3,"file":"useLoadImage.d.ts","sourceRoot":"","sources":["../../../../core/hooks/html/useLoadImage.js"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,kCAHW,MAAM,GAAC,IAAI,GACT,OAAO,CAUnB"}
|
|
@@ -3,8 +3,8 @@ import { loadImage } from '@shopgate/pwa-common/helpers/html/handleDOM';
|
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Load image hook
|
|
6
|
-
* @param {string} src .
|
|
7
|
-
* @returns {boolean}
|
|
6
|
+
* @param {string|null} src The image to preload. A falsy src is a no-op.
|
|
7
|
+
* @returns {boolean} Whether the image has finished loading.
|
|
8
8
|
*/
|
|
9
9
|
export function useLoadImage(src) {
|
|
10
10
|
const [loaded, setIsLoaded] = useState(false);
|
|
@@ -11,6 +11,14 @@ interface UseLocalStorageOptions<T> {
|
|
|
11
11
|
* @default true
|
|
12
12
|
*/
|
|
13
13
|
sync?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Whether the value is written to localStorage at all. Set to false in contexts that must not
|
|
16
|
+
* leak state into the visitor's browser and should stay ephemeral. With this off the hook is a
|
|
17
|
+
* plain useState: it neither reads nor writes localStorage, and it ignores updates from other
|
|
18
|
+
* tabs.
|
|
19
|
+
* @default true
|
|
20
|
+
*/
|
|
21
|
+
persist?: boolean;
|
|
14
22
|
}
|
|
15
23
|
type SetValueAction<T> = T | null | ((prev: T | null) => T | null);
|
|
16
24
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLocalStorage.d.ts","sourceRoot":"","sources":["../../../core/hooks/useLocalStorage.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,UAAU,sBAAsB,CAAC,CAAC;IAChC;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC;IAEjB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useLocalStorage.d.ts","sourceRoot":"","sources":["../../../core/hooks/useLocalStorage.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,UAAU,sBAAsB,CAAC,CAAC;IAChC;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC;IAEjB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,CAAC,EACvC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,sBAAsB,CAAC,CAAC,CAAM,GACtC,SAAS,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAqFzD"}
|
|
@@ -19,10 +19,12 @@ const {
|
|
|
19
19
|
export default function useLocalStorage(key, options = {}) {
|
|
20
20
|
const {
|
|
21
21
|
initialValue = null,
|
|
22
|
-
sync = true
|
|
22
|
+
sync = true,
|
|
23
|
+
persist = true
|
|
23
24
|
} = options;
|
|
24
25
|
const storageKey = useMemo(() => `${appId}_${key}`, [key]);
|
|
25
26
|
const readValue = useCallback(() => {
|
|
27
|
+
if (!persist) return initialValue;
|
|
26
28
|
try {
|
|
27
29
|
const item = window.localStorage.getItem(storageKey);
|
|
28
30
|
if (item == null) return initialValue;
|
|
@@ -30,7 +32,7 @@ export default function useLocalStorage(key, options = {}) {
|
|
|
30
32
|
} catch (error) {
|
|
31
33
|
return initialValue;
|
|
32
34
|
}
|
|
33
|
-
}, [storageKey, initialValue]);
|
|
35
|
+
}, [storageKey, initialValue, persist]);
|
|
34
36
|
const [storedValue, setStoredValue] = useState(readValue);
|
|
35
37
|
|
|
36
38
|
/**
|
|
@@ -38,20 +40,25 @@ export default function useLocalStorage(key, options = {}) {
|
|
|
38
40
|
* @param value The new value to store.
|
|
39
41
|
*/
|
|
40
42
|
const setValue = useCallback(value => {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
// Resolve an updater against the live React state, so it sees the current value whether or not
|
|
44
|
+
// the value is persisted (when persist is off there is nothing to read back from storage).
|
|
45
|
+
setStoredValue(prev => {
|
|
46
|
+
const valueToStore = typeof value === 'function' ? value(prev) : value;
|
|
47
|
+
if (!persist) return valueToStore;
|
|
48
|
+
try {
|
|
49
|
+
if (valueToStore == null) {
|
|
50
|
+
window.localStorage.removeItem(storageKey);
|
|
51
|
+
} else {
|
|
52
|
+
window.localStorage.setItem(storageKey, JSON.stringify(valueToStore));
|
|
53
|
+
}
|
|
54
|
+
} catch (error) {
|
|
55
|
+
//
|
|
48
56
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}, [storageKey, readValue]);
|
|
57
|
+
return valueToStore;
|
|
58
|
+
});
|
|
59
|
+
}, [storageKey, persist]);
|
|
53
60
|
useEffect(() => {
|
|
54
|
-
if (!sync) return undefined;
|
|
61
|
+
if (!sync || !persist) return undefined;
|
|
55
62
|
|
|
56
63
|
/**
|
|
57
64
|
* Handles cross-document localStorage updates.
|
|
@@ -78,6 +85,6 @@ export default function useLocalStorage(key, options = {}) {
|
|
|
78
85
|
return () => {
|
|
79
86
|
window.removeEventListener('storage', handleStorageChange);
|
|
80
87
|
};
|
|
81
|
-
}, [storageKey, initialValue, sync]);
|
|
88
|
+
}, [storageKey, initialValue, sync, persist]);
|
|
82
89
|
return [storedValue, setValue];
|
|
83
90
|
}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
import { push, pop, replace, reset, update } from '../router/helpers';
|
|
2
|
+
export interface Navigation {
|
|
3
|
+
push: typeof push;
|
|
4
|
+
pop: typeof pop;
|
|
5
|
+
replace: typeof replace;
|
|
6
|
+
reset: typeof reset;
|
|
7
|
+
update: typeof update;
|
|
8
|
+
}
|
|
1
9
|
/**
|
|
2
10
|
* Provides functions for navigation.
|
|
3
|
-
* @returns
|
|
11
|
+
* @returns The navigation functions.
|
|
4
12
|
*/
|
|
5
|
-
export function useNavigation():
|
|
13
|
+
export declare function useNavigation(): Navigation;
|
|
6
14
|
//# sourceMappingURL=useNavigation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNavigation.d.ts","sourceRoot":"","sources":["../../../core/hooks/useNavigation.
|
|
1
|
+
{"version":3,"file":"useNavigation.d.ts","sourceRoot":"","sources":["../../../core/hooks/useNavigation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAClC,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,IAAI,CAAC;IAClB,GAAG,EAAE,OAAO,GAAG,CAAC;IAChB,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,MAAM,EAAE,OAAO,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,UAAU,CAQ1C"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
interface SettingsStore {
|
|
2
|
+
dispatch: (action: unknown) => void;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Fetches all configured JSONP settings sources in parallel. Sources without a configured url
|
|
6
|
+
* are skipped. Never rejects - every source falls back to the defaults of its reducer.
|
|
7
|
+
* @param store Reference to the store.
|
|
8
|
+
* @returns A promise that resolves once all configured sources settled.
|
|
9
|
+
*/
|
|
10
|
+
export declare const fetchSettings: (store: SettingsStore) => Promise<void>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=fetchSettings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchSettings.d.ts","sourceRoot":"","sources":["../../../core/initialization/fetchSettings.ts"],"names":[],"mappings":"AA0BA,UAAU,aAAa;IACrB,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC;AAwHD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAU,OAAO,aAAa,KAAG,OAAO,CAAC,IAAI,CA0CtE,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { withScope, captureMessage, Severity as SentrySeverity } from '@sentry/browser';
|
|
2
|
+
import appConfig from '@shopgate/pwa-common/helpers/config';
|
|
3
|
+
import { receiveShopSettings, errorShopSettings } from '@shopgate/engage/settings/action-creators/shopSettings';
|
|
4
|
+
import { receiveMerchantSettings } from '@shopgate/engage/settings/action-creators/merchantSettings';
|
|
5
|
+
import { receiveAppSettings } from '@shopgate/engage/settings/action-creators/appSettings';
|
|
6
|
+
const REQUEST_TIMEOUT = 3000;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The payload types the settings action creators declare. Derived rather than written out,
|
|
10
|
+
* because shopSettings and merchantSettings are untyped JS whose JSDoc describes their payload
|
|
11
|
+
* as `{Array}` / `{Object}` whereas the JSONP files actually send a settings object. Deriving
|
|
12
|
+
* keeps this file honest about the mismatch and picks up the real types once that JSDoc is fixed.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Injects a script tag to fetch a settings JSONP.
|
|
17
|
+
* @param id The script id.
|
|
18
|
+
* @param src The script url.
|
|
19
|
+
* @param onError Callback for error situations.
|
|
20
|
+
*/
|
|
21
|
+
const injectScript = (id, src, onError) => {
|
|
22
|
+
const existingTag = document.querySelector(`#${id}`);
|
|
23
|
+
if (existingTag) {
|
|
24
|
+
existingTag.remove();
|
|
25
|
+
}
|
|
26
|
+
const scriptTag = document.createElement('script');
|
|
27
|
+
scriptTag.setAttribute('src', src);
|
|
28
|
+
scriptTag.setAttribute('id', id);
|
|
29
|
+
scriptTag.onerror = onError;
|
|
30
|
+
document.head.appendChild(scriptTag);
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Loads a single JSONP settings source. Resolves when the payload arrived, when the script
|
|
35
|
+
* failed to load, or when REQUEST_TIMEOUT elapsed - it never rejects, so that no single
|
|
36
|
+
* source can block or delay app start indefinitely.
|
|
37
|
+
* @param params The loader params.
|
|
38
|
+
* @returns A promise that resolves once the source settled.
|
|
39
|
+
*/
|
|
40
|
+
const loadJsonpSettings = params => new Promise(resolve => {
|
|
41
|
+
const {
|
|
42
|
+
id,
|
|
43
|
+
url,
|
|
44
|
+
callbackName,
|
|
45
|
+
onReceive,
|
|
46
|
+
onError
|
|
47
|
+
} = params;
|
|
48
|
+
let settled = false;
|
|
49
|
+
let timeout;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Resolves the promise once, whichever of payload / error / timeout comes first.
|
|
53
|
+
*/
|
|
54
|
+
const settle = () => {
|
|
55
|
+
if (settled) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
settled = true;
|
|
59
|
+
clearTimeout(timeout);
|
|
60
|
+
resolve();
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
// Started before the callback and the script are wired up, so that a synchronously firing
|
|
64
|
+
// callback / error (e.g. a data: url) settles against an already assigned timeout - otherwise
|
|
65
|
+
// clearTimeout would no-op and this timer would still fire a false timeout warning.
|
|
66
|
+
timeout = setTimeout(() => {
|
|
67
|
+
withScope(scope => {
|
|
68
|
+
scope.setLevel(SentrySeverity.Warning);
|
|
69
|
+
scope.setExtra('settingsUrl', url);
|
|
70
|
+
scope.setExtra('timeout', REQUEST_TIMEOUT);
|
|
71
|
+
captureMessage(`Fetching settings took too long: ${id}`);
|
|
72
|
+
});
|
|
73
|
+
settle();
|
|
74
|
+
}, REQUEST_TIMEOUT);
|
|
75
|
+
|
|
76
|
+
// Registered before the script is injected, since the JSONP files guard their call with
|
|
77
|
+
// `window.setX && window.setX(...)` - a callback assigned too late is a silent no-op.
|
|
78
|
+
// Deliberately never removed: the timeout may settle while the script is still in flight,
|
|
79
|
+
// and a payload arriving after that should still hydrate the store.
|
|
80
|
+
window[callbackName] = settings => {
|
|
81
|
+
onReceive(settings);
|
|
82
|
+
settle();
|
|
83
|
+
};
|
|
84
|
+
injectScript(id, url, error => {
|
|
85
|
+
withScope(scope => {
|
|
86
|
+
scope.setLevel(SentrySeverity.Error);
|
|
87
|
+
scope.setExtra('settingsUrl', url);
|
|
88
|
+
captureMessage(`Fetching settings failed: ${id}`);
|
|
89
|
+
});
|
|
90
|
+
onError?.(error);
|
|
91
|
+
settle();
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Fetches all configured JSONP settings sources in parallel. Sources without a configured url
|
|
97
|
+
* are skipped. Never rejects - every source falls back to the defaults of its reducer.
|
|
98
|
+
* @param store Reference to the store.
|
|
99
|
+
* @returns A promise that resolves once all configured sources settled.
|
|
100
|
+
*/
|
|
101
|
+
export const fetchSettings = async store => {
|
|
102
|
+
const {
|
|
103
|
+
settingsUrl,
|
|
104
|
+
merchantSettingsUrl,
|
|
105
|
+
appSettingsUrl
|
|
106
|
+
} = appConfig;
|
|
107
|
+
const loaders = [];
|
|
108
|
+
if (settingsUrl) {
|
|
109
|
+
loaders.push(loadJsonpSettings({
|
|
110
|
+
id: 'shop-settings-jsonp',
|
|
111
|
+
url: settingsUrl,
|
|
112
|
+
callbackName: 'setShopSettings',
|
|
113
|
+
onReceive: settings => store.dispatch(receiveShopSettings(settings)),
|
|
114
|
+
onError: error => store.dispatch(errorShopSettings(error))
|
|
115
|
+
}));
|
|
116
|
+
}
|
|
117
|
+
if (merchantSettingsUrl) {
|
|
118
|
+
loaders.push(loadJsonpSettings({
|
|
119
|
+
id: 'merchant-settings-jsonp',
|
|
120
|
+
url: merchantSettingsUrl,
|
|
121
|
+
callbackName: 'setMerchantSettings',
|
|
122
|
+
onReceive: settings => store.dispatch(receiveMerchantSettings(settings))
|
|
123
|
+
}));
|
|
124
|
+
}
|
|
125
|
+
if (appSettingsUrl) {
|
|
126
|
+
loaders.push(loadJsonpSettings({
|
|
127
|
+
id: 'app-settings-jsonp',
|
|
128
|
+
url: appSettingsUrl,
|
|
129
|
+
callbackName: 'setAppSettings',
|
|
130
|
+
onReceive: settings => store.dispatch(receiveAppSettings(settings))
|
|
131
|
+
}));
|
|
132
|
+
}
|
|
133
|
+
await Promise.all(loaders);
|
|
134
|
+
};
|
|
@@ -1,4 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import type { Store as ReduxStore, UnknownAction } from 'redux';
|
|
2
|
+
import { configureStore } from '@shopgate/pwa-common/store';
|
|
3
|
+
declare global {
|
|
4
|
+
interface Window {
|
|
5
|
+
SGConnectDev?: {
|
|
6
|
+
isDevBrowser: boolean;
|
|
7
|
+
isDev: boolean;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The app's redux store. Assembled here because configureStore is untyped JS whose JSDoc widens
|
|
13
|
+
* the return value to `Object`.
|
|
14
|
+
*
|
|
15
|
+
* dispatch stays permissive rather than using redux-thunk's ThunkDispatch: the action creators
|
|
16
|
+
* this module dispatches are untyped JS annotated `@returns {Object}` / `{Function}`, which match
|
|
17
|
+
* neither UnknownAction nor ThunkAction. Tightening it here would only force casts at every call
|
|
18
|
+
* site - it needs the JSDoc on those action creators to be fixed first.
|
|
19
|
+
*/
|
|
20
|
+
type Store = Omit<ReduxStore<unknown, UnknownAction>, 'dispatch'> & {
|
|
21
|
+
dispatch: (action: unknown) => unknown;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Initializes the app: sets up i18n, creates the store, fetches the client information and the
|
|
25
|
+
* dynamic settings, and runs all registered app initialization handlers.
|
|
26
|
+
* @param locales An object with locales.
|
|
27
|
+
* @param reducers The reducers from the theme.
|
|
28
|
+
* @param subscribers The subscribers to the streams middleware.
|
|
29
|
+
* @returns The initialized store.
|
|
30
|
+
*/
|
|
31
|
+
export declare const initialize: (locales: Record<string, unknown>, reducers: Parameters<typeof configureStore>[0], subscribers: Parameters<typeof configureStore>[1]) => Promise<{
|
|
32
|
+
store: Store;
|
|
3
33
|
}>;
|
|
34
|
+
export {};
|
|
4
35
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../core/initialization/index.
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../core/initialization/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,IAAI,UAAU,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAqB5D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,YAAY,CAAC,EAAE;YACb,YAAY,EAAE,OAAO,CAAC;YACtB,KAAK,EAAE,OAAO,CAAC;SAChB,CAAC;KACH;CACF;AAED;;;;;;;;GAQG;AACH,KAAK,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,GAAG;IAClE,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;CACxC,CAAC;AAMF;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GACrB,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,UAAU,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,EAC9C,aAAa,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;;EA4ElD,CAAC"}
|