@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.
Files changed (529) hide show
  1. package/README.md +0 -1
  2. package/account/components/Profile/Profile.provider.d.ts +1 -1
  3. package/account/components/Profile/ProfileAddressBook.d.ts.map +1 -1
  4. package/account/components/Profile/ProfileAddressBook.js +13 -22
  5. package/account/components/Profile/ProfileAddressCard.d.ts.map +1 -1
  6. package/account/components/Profile/ProfileAddressCard.js +9 -18
  7. package/account/components/Profile/ProfileForm.d.ts.map +1 -1
  8. package/account/components/Profile/ProfileForm.js +15 -42
  9. package/account/components/ProfileContact/ProfileContact.js +13 -21
  10. package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts +2 -1
  11. package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts.map +1 -1
  12. package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.js +61 -5
  13. package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.d.ts +7 -1
  14. package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.d.ts.map +1 -1
  15. package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.js +14 -2
  16. package/admin-preview/components/FrontendSettingsPreviewBridge/types.d.ts +15 -2
  17. package/admin-preview/components/FrontendSettingsPreviewBridge/types.d.ts.map +1 -1
  18. package/admin-preview/constants/index.d.ts +0 -12
  19. package/admin-preview/constants/index.d.ts.map +1 -1
  20. package/admin-preview/constants/index.js +0 -16
  21. package/admin-preview/helpers/_internal/detection.d.ts +53 -0
  22. package/admin-preview/helpers/_internal/detection.d.ts.map +1 -0
  23. package/admin-preview/helpers/_internal/detection.js +93 -0
  24. package/admin-preview/helpers/index.d.ts +7 -0
  25. package/admin-preview/helpers/index.d.ts.map +1 -1
  26. package/admin-preview/helpers/index.js +12 -4
  27. package/admin-preview/initialization/_internal/initialFrontendSettings.d.ts +32 -0
  28. package/admin-preview/initialization/_internal/initialFrontendSettings.d.ts.map +1 -0
  29. package/admin-preview/initialization/_internal/initialFrontendSettings.js +43 -0
  30. package/admin-preview/initialization/awaitInitialFrontendSettings.d.ts +22 -0
  31. package/admin-preview/initialization/awaitInitialFrontendSettings.d.ts.map +1 -0
  32. package/admin-preview/initialization/awaitInitialFrontendSettings.js +84 -0
  33. package/back-in-stock/components/BackInStockButton/index.js +5 -5
  34. package/back-in-stock/components/Subscriptions/components/Subscription/index.js +2 -5
  35. package/cart/components/CartItem/CartItemProductLayout.js +2 -1
  36. package/cart/components/CartItem/CartItemProductLayoutWide.js +2 -2
  37. package/cart/components/CartItem/CartItemProductLayoutWideRemoveItem.js +7 -14
  38. package/cart/components/CartItem/CartItemProductProvider.connector.js +0 -2
  39. package/cart/components/CartItem/CartItemProductProvider.js +3 -30
  40. package/cart/components/CartItem/CartItemProductProvider.types.js +0 -1
  41. package/cart/components/CartItem/CartItemQuantityPicker.js +1 -0
  42. package/cart/components/CartItems/CartItemCardReservationLabelChangeStore.js +6 -24
  43. package/cart/components/CartItems/CartItems.js +8 -10
  44. package/cart/components/CartItems/CartItemsSubstitution.js +3 -2
  45. package/cart/components/CartSummaryWide/CartSummaryWide.js +2 -2
  46. package/cart/components/CartSummaryWide/CartSummaryWideCheckoutButton.js +9 -23
  47. package/cart/components/PaymentBar/PaymentBarCheckoutButton.js +8 -30
  48. package/cart/components/PaymentBar/PaymentBarContent.js +1 -1
  49. package/cart/components/PaymentBar/testUtils/mockFactories.js +4 -11
  50. package/category/components/CategoryImage/index.js +24 -17
  51. package/checkout/components/AddressBook/AddressList.js +14 -23
  52. package/checkout/components/Checkout/CheckoutActions.js +4 -3
  53. package/checkout/components/Checkout/CheckoutAddress.js +8 -0
  54. package/checkout/components/Checkout/CheckoutSection.js +6 -2
  55. package/checkout/components/CheckoutConfirmation/CheckoutConfirmation.js +6 -7
  56. package/checkout/components/ResponsiveBackButton/ResponsiveBackButton.js +7 -17
  57. package/components/Badge/Badge.d.ts +30 -0
  58. package/components/Badge/Badge.d.ts.map +1 -0
  59. package/components/Badge/Badge.js +48 -0
  60. package/components/Badge/index.d.ts +3 -0
  61. package/components/Badge/index.d.ts.map +1 -0
  62. package/components/Badge/index.js +1 -0
  63. package/components/Card/Card.d.ts +27 -0
  64. package/components/Card/Card.d.ts.map +1 -0
  65. package/components/Card/Card.js +57 -0
  66. package/components/Card/index.d.ts +4 -0
  67. package/components/Card/index.d.ts.map +1 -0
  68. package/components/Card/index.js +2 -0
  69. package/components/Card/useCardAppearance.d.ts +11 -0
  70. package/components/Card/useCardAppearance.d.ts.map +1 -0
  71. package/components/Card/useCardAppearance.js +22 -0
  72. package/components/ChipLayout/index.js +2 -4
  73. package/components/Logo/index.d.ts.map +1 -1
  74. package/components/Logo/index.js +3 -6
  75. package/components/NavigationHandler/connector.js +1 -1
  76. package/components/NavigationHandler/index.d.ts +2 -2
  77. package/components/Paper/Paper.d.ts +48 -0
  78. package/components/Paper/Paper.d.ts.map +1 -0
  79. package/components/Paper/Paper.js +64 -0
  80. package/components/Paper/index.d.ts +3 -0
  81. package/components/Paper/index.d.ts.map +1 -0
  82. package/components/Paper/index.js +1 -0
  83. package/components/PickerUtilize/index.d.ts +2 -1
  84. package/components/PickerUtilize/index.d.ts.map +1 -1
  85. package/components/RadioCard/RadioCard.d.ts.map +1 -1
  86. package/components/RadioCard/RadioCard.js +2 -1
  87. package/components/SheetList/components/Item/index.js +8 -8
  88. package/components/Tabs/components/Tab.d.ts.map +1 -1
  89. package/components/Tabs/components/Tab.js +14 -16
  90. package/components/Typography/Typography.d.ts +1 -1
  91. package/components/View/components/Above/index.d.ts.map +1 -1
  92. package/components/View/components/Above/index.js +3 -1
  93. package/components/View/components/Below/index.d.ts.map +1 -1
  94. package/components/View/components/Below/index.js +3 -1
  95. package/components/View/components/Content/index.d.ts +2 -1
  96. package/components/View/components/Content/index.d.ts.map +1 -1
  97. package/components/View/components/Content/index.js +4 -1
  98. package/components/constants.d.ts +6 -0
  99. package/components/constants.d.ts.map +1 -0
  100. package/components/index.d.ts +5 -1
  101. package/components/index.d.ts.map +1 -1
  102. package/components/index.js +4 -2
  103. package/components/v2/Button/Button.d.ts +24 -13
  104. package/components/v2/Button/Button.d.ts.map +1 -1
  105. package/components/v2/Button/Button.js +139 -41
  106. package/components/v2/ButtonBase/ButtonBase.d.ts +50 -10
  107. package/components/v2/ButtonBase/ButtonBase.d.ts.map +1 -1
  108. package/components/v2/ButtonBase/ButtonBase.js +192 -17
  109. package/components/v2/ButtonBase/Ripple.d.ts +2 -1
  110. package/components/v2/ButtonBase/Ripple.d.ts.map +1 -1
  111. package/components/v2/ButtonBase/hooks.d.ts +0 -1
  112. package/components/v2/ButtonBase/hooks.d.ts.map +1 -1
  113. package/components/v2/ButtonBase/hooks.js +36 -12
  114. package/components/v2/ButtonGroup/ButtonGroup.d.ts +11 -5
  115. package/components/v2/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  116. package/components/v2/ButtonGroup/ButtonGroup.js +49 -26
  117. package/components/v2/CircularProgress/CircularProgress.d.ts.map +1 -1
  118. package/components/v2/CircularProgress/CircularProgress.js +10 -5
  119. package/core/helpers/getFullImageSource.d.ts +5 -1
  120. package/core/helpers/getFullImageSource.d.ts.map +1 -1
  121. package/core/helpers/getFullImageSource.js +30 -14
  122. package/core/helpers/i18n.d.ts +4 -0
  123. package/core/helpers/i18n.d.ts.map +1 -1
  124. package/core/helpers/i18n.js +3 -0
  125. package/core/hooks/html/useLoadImage.d.ts +3 -3
  126. package/core/hooks/html/useLoadImage.d.ts.map +1 -1
  127. package/core/hooks/html/useLoadImage.js +2 -2
  128. package/core/hooks/useLocalStorage.d.ts +8 -0
  129. package/core/hooks/useLocalStorage.d.ts.map +1 -1
  130. package/core/hooks/useLocalStorage.js +22 -15
  131. package/core/hooks/useNavigation.d.ts +10 -2
  132. package/core/hooks/useNavigation.d.ts.map +1 -1
  133. package/core/hooks/useNavigation.js +1 -2
  134. package/core/initialization/fetchSettings.d.ts +12 -0
  135. package/core/initialization/fetchSettings.d.ts.map +1 -0
  136. package/core/initialization/fetchSettings.js +134 -0
  137. package/core/initialization/index.d.ts +33 -2
  138. package/core/initialization/index.d.ts.map +1 -1
  139. package/core/initialization/index.js +44 -103
  140. package/core/router/conductor.d.ts +9 -0
  141. package/core/router/helpers.d.ts +28 -15
  142. package/core/router/helpers.d.ts.map +1 -1
  143. package/core/router/helpers.js +8 -8
  144. package/development/components/DevelopmentSettings/DevelopmentSettings.js +3 -3
  145. package/development/components/SimulatedInsets/SimulatedInsetBottom.js +3 -3
  146. package/development/components/SimulatedInsets/SimulatedInsetTop.js +2 -2
  147. package/favorites/components/FavoriteButtonWide/FavoriteButtonWide.js +7 -17
  148. package/favorites/components/Item/Item.d.ts +1 -1
  149. package/favorites/components/Item/Item.d.ts.map +1 -1
  150. package/favorites/components/Item/Item.js +7 -7
  151. package/favorites/components/List/List.d.ts +1 -1
  152. package/favorites/components/List/List.d.ts.map +1 -1
  153. package/favorites/components/List/List.js +0 -1
  154. package/favorites/components/List/ListContent.js +4 -5
  155. package/favorites/components/Lists/Lists.js +17 -6
  156. package/filter/components/FilterPageContent/components/ApplyButton/index.js +8 -10
  157. package/filter/components/FilterPageContent/components/ResetButton/index.js +8 -6
  158. package/filter/components/PriceSlider/index.js +6 -1
  159. package/locations/components/ChangeLocationButton/ChangeLocationButton.js +10 -14
  160. package/locations/components/FulfillmentSheet/FulfillmentSheetContent.js +4 -8
  161. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotDialog.js +4 -8
  162. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcher.js +1 -1
  163. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherBar.js +9 -18
  164. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherDefault.js +10 -10
  165. package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherBar.js +9 -19
  166. package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherDefault.js +9 -10
  167. package/locations/components/ReserveForm/ReserveForm.js +6 -7
  168. package/locations/components/StoreDetails/components/GetDirectionsButton.js +2 -4
  169. package/locations/components/StoreDetails/components/StoreDetails.js +5 -10
  170. package/locations/components/StoreDetails/components/StoresNearbyListItem.js +13 -21
  171. package/locations/components/StoreFinder/StoreFinderSelectLocationButton.js +5 -11
  172. package/locations/components/StoreFinder/StoreFinderStoreInfoButton.js +5 -11
  173. package/locations/components/StoreList/StoreListProduct.js +2 -3
  174. package/locations/components/StoreList/StoreListSearch.js +1 -0
  175. package/locations/components/StoreList/StoreSelectLocationButton.js +5 -11
  176. package/login/components/ForgotPassword/ForgotPassword.js +11 -23
  177. package/mocks/date.js +31 -0
  178. package/mocks/index.js +3 -0
  179. package/mocks/pipelineRequest.js +1 -0
  180. package/mocks/subscriptions.js +1 -0
  181. package/orders/components/OrderDetails/OrderDetailsAuthenticate.js +5 -7
  182. package/orders/components/OrderHistory/OrderHistoryList.d.ts.map +1 -1
  183. package/orders/components/OrderHistory/OrderHistoryList.js +8 -9
  184. package/orders/components/OrderHistory/OrderHistoryTable.d.ts.map +1 -1
  185. package/orders/components/OrderHistory/OrderHistoryTable.js +4 -0
  186. package/package.json +12 -12
  187. package/page/components/NotFound.d.ts +7 -0
  188. package/page/components/NotFound.d.ts.map +1 -0
  189. package/page/components/NotFound.js +8 -8
  190. package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.d.ts +52 -0
  191. package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.d.ts.map +1 -0
  192. package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.js +4 -4
  193. package/page/components/ResponsiveWidgetImage/index.d.ts +2 -0
  194. package/page/components/ResponsiveWidgetImage/index.d.ts.map +1 -0
  195. package/page/components/WidgetRichText/WidgetRichText.d.ts +25 -0
  196. package/page/components/WidgetRichText/WidgetRichText.d.ts.map +1 -0
  197. package/page/components/WidgetRichText/index.d.ts +2 -0
  198. package/page/components/WidgetRichText/index.d.ts.map +1 -0
  199. package/page/components/WidgetVideo/WidgetVideo.d.ts +43 -0
  200. package/page/components/WidgetVideo/WidgetVideo.d.ts.map +1 -0
  201. package/page/components/WidgetVideo/WidgetVideo.js +33 -39
  202. package/page/components/WidgetVideo/index.d.ts +2 -0
  203. package/page/components/WidgetVideo/index.d.ts.map +1 -0
  204. package/page/components/Widgets/Overlay.d.ts +17 -0
  205. package/page/components/Widgets/Overlay.d.ts.map +1 -0
  206. package/page/components/Widgets/Overlay.js +24 -38
  207. package/page/components/Widgets/Tooltip.d.ts +20 -0
  208. package/page/components/Widgets/Tooltip.d.ts.map +1 -0
  209. package/page/components/Widgets/Tooltip.js +6 -10
  210. package/page/components/Widgets/Widget.d.ts +32 -0
  211. package/page/components/Widgets/Widget.d.ts.map +1 -0
  212. package/page/components/Widgets/Widget.js +7 -18
  213. package/page/components/Widgets/WidgetContext.d.ts +32 -38
  214. package/page/components/Widgets/WidgetContext.d.ts.map +1 -0
  215. package/page/components/Widgets/WidgetContext.js +2 -8
  216. package/page/components/Widgets/WidgetProvider.d.ts +25 -0
  217. package/page/components/Widgets/WidgetProvider.d.ts.map +1 -0
  218. package/page/components/Widgets/WidgetProvider.js +5 -12
  219. package/page/components/Widgets/Widgets.d.ts +16 -0
  220. package/page/components/Widgets/Widgets.d.ts.map +1 -0
  221. package/page/components/Widgets/Widgets.js +5 -12
  222. package/page/components/Widgets/WidgetsPreviewContext.d.ts +21 -0
  223. package/page/components/Widgets/WidgetsPreviewContext.d.ts.map +1 -0
  224. package/page/components/Widgets/WidgetsPreviewContext.js +5 -7
  225. package/page/components/Widgets/WidgetsPreviewProvider.d.ts +18 -0
  226. package/page/components/Widgets/WidgetsPreviewProvider.d.ts.map +1 -0
  227. package/page/components/Widgets/WidgetsPreviewProvider.js +5 -6
  228. package/page/components/Widgets/constants.d.ts +5 -0
  229. package/page/components/Widgets/constants.d.ts.map +1 -0
  230. package/page/components/Widgets/constants.js +3 -1
  231. package/page/components/Widgets/events.d.ts +38 -0
  232. package/page/components/Widgets/events.d.ts.map +1 -0
  233. package/page/components/Widgets/events.js +8 -12
  234. package/page/components/Widgets/helpers.d.ts +50 -0
  235. package/page/components/Widgets/helpers.d.ts.map +1 -0
  236. package/page/components/Widgets/helpers.js +8 -13
  237. package/page/components/Widgets/hooks.d.ts +13 -0
  238. package/page/components/Widgets/hooks.d.ts.map +1 -0
  239. package/page/components/Widgets/hooks.js +13 -11
  240. package/page/components/Widgets/index.d.ts +3 -0
  241. package/page/components/Widgets/index.d.ts.map +1 -0
  242. package/page/components/Widgets/types.d.ts +111 -113
  243. package/page/components/Widgets/types.d.ts.map +1 -0
  244. package/page/components/Widgets/types.js +1 -0
  245. package/page/components/index.d.ts +5 -0
  246. package/page/components/index.d.ts.map +1 -0
  247. package/page/constants/actionTypes.d.ts +4 -0
  248. package/page/constants/actionTypes.d.ts.map +1 -0
  249. package/page/constants/index.d.ts +25 -0
  250. package/page/constants/index.d.ts.map +1 -0
  251. package/page/constants/index.js +5 -3
  252. package/page/helpers/index.d.ts +70 -62
  253. package/page/helpers/index.d.ts.map +1 -0
  254. package/page/helpers/index.js +31 -29
  255. package/page/hooks/index.d.ts +54 -53
  256. package/page/hooks/index.d.ts.map +1 -0
  257. package/page/hooks/index.js +20 -15
  258. package/page/selectors/index.d.ts +32 -0
  259. package/page/selectors/index.d.ts.map +1 -0
  260. package/page/widgets/Button/Button.js +2 -3
  261. package/page/widgets/NestedCategoryFilter/NestedCategoryFilter.js +8 -8
  262. package/page/widgets/ProductList/ProductList.js +18 -14
  263. package/page/widgets/ProductSlider/ProductSlider.js +1 -15
  264. package/page/widgets/Video/Video.d.ts +6 -0
  265. package/page/widgets/Video/Video.d.ts.map +1 -0
  266. package/page/widgets/Video/Video.js +0 -2
  267. package/page/widgets/Video/hooks.d.ts +53 -0
  268. package/page/widgets/Video/hooks.d.ts.map +1 -0
  269. package/page/widgets/Video/hooks.js +4 -12
  270. package/page/widgets/Video/index.d.ts +2 -0
  271. package/page/widgets/Video/index.d.ts.map +1 -0
  272. package/product/components/Description/index.js +0 -2
  273. package/product/components/FilterBar/components/Content/components/FilterButton/index.js +2 -6
  274. package/product/components/FilterBar/components/Content/components/Sort/index.js +1 -5
  275. package/product/components/Media/FeaturedMedia.js +7 -1
  276. package/product/components/Media/MediaImage.js +24 -23
  277. package/product/components/Media/MediaPlaceholder.js +4 -7
  278. package/product/components/MediaSlider/components/MediaImage/index.js +6 -2
  279. package/product/components/MediaSlider/constants.js +1 -12
  280. package/product/components/OrderQuantityHint/index.js +16 -1
  281. package/product/components/ProductCard/index.js +36 -23
  282. package/product/components/ProductGrid/components/Item/components/ItemDetails/index.js +12 -4
  283. package/product/components/ProductGrid/components/Item/components/ItemImage/index.js +3 -6
  284. package/product/components/ProductGrid/components/Item/components/ItemName/index.js +6 -1
  285. package/product/components/ProductGrid/components/Item/index.js +10 -2
  286. package/product/components/ProductGrid/components/Layout/index.js +19 -4
  287. package/product/components/ProductGrid/constants.d.ts +2 -0
  288. package/product/components/ProductGrid/constants.d.ts.map +1 -0
  289. package/product/components/ProductGrid/constants.js +1 -0
  290. package/product/components/ProductGrid/hooks.d.ts +11 -0
  291. package/product/components/ProductGrid/hooks.d.ts.map +1 -0
  292. package/product/components/ProductGrid/hooks.js +48 -0
  293. package/product/components/ProductGrid/index.js +3 -6
  294. package/product/components/ProductGridPrice/index.js +0 -1
  295. package/product/components/ProductImage/ProductImage.d.ts +42 -0
  296. package/product/components/ProductImage/ProductImage.d.ts.map +1 -0
  297. package/product/components/ProductImage/ProductImage.js +158 -0
  298. package/product/components/ProductImage/ProductImagePlaceholder.d.ts +23 -0
  299. package/product/components/ProductImage/ProductImagePlaceholder.d.ts.map +1 -0
  300. package/product/components/ProductImage/ProductImagePlaceholder.js +12 -17
  301. package/product/components/ProductImage/constants.d.ts +7 -0
  302. package/product/components/ProductImage/constants.d.ts.map +1 -0
  303. package/product/components/ProductImage/constants.js +6 -0
  304. package/product/components/ProductImage/hooks.d.ts +8 -0
  305. package/product/components/ProductImage/hooks.d.ts.map +1 -0
  306. package/product/components/ProductImage/hooks.js +32 -0
  307. package/product/components/ProductImage/index.d.ts +3 -0
  308. package/product/components/ProductImage/index.d.ts.map +1 -0
  309. package/product/components/ProductImage/index.js +1 -201
  310. package/product/components/ProductList/components/Item/index.js +5 -3
  311. package/product/components/ProductList/components/Layout/index.js +8 -20
  312. package/product/components/ProductName/ProductName.d.ts +1 -1
  313. package/product/components/ProductName/ProductName.d.ts.map +1 -1
  314. package/product/components/ProductName/ProductNameContent.d.ts +2 -1
  315. package/product/components/ProductName/ProductNameContent.d.ts.map +1 -1
  316. package/product/components/ProductRatingStars/ProductRatingStars.d.ts +1 -1
  317. package/product/components/ProductRatingStars/ProductRatingStars.js +2 -4
  318. package/product/components/ProductSlider/constants.d.ts +3 -0
  319. package/product/components/ProductSlider/constants.d.ts.map +1 -0
  320. package/product/components/ProductSlider/constants.js +2 -0
  321. package/product/components/ProductSlider/hooks.d.ts +7 -0
  322. package/product/components/ProductSlider/hooks.d.ts.map +1 -0
  323. package/product/components/ProductSlider/hooks.js +40 -0
  324. package/product/components/ProductSlider/index.js +8 -8
  325. package/product/components/Rating/index.js +2 -4
  326. package/product/components/RelationsSlider/RelationsSheet.js +1 -5
  327. package/product/components/RelationsSlider/RelationsSliderContent.js +3 -2
  328. package/product/components/RelationsSlider/constants.d.ts +3 -0
  329. package/product/components/RelationsSlider/constants.d.ts.map +1 -0
  330. package/product/components/RelationsSlider/constants.js +2 -1
  331. package/product/components/RelationsSlider/hooks.d.ts +6 -0
  332. package/product/components/RelationsSlider/hooks.d.ts.map +1 -0
  333. package/product/components/RelationsSlider/hooks.js +34 -0
  334. package/product/components/UnitQuantityPicker/UnitQuantityPicker.d.ts.map +1 -1
  335. package/product/components/UnitQuantityPicker/UnitQuantityPicker.js +16 -34
  336. package/product/helpers/index.js +29 -11
  337. package/product/hooks/index.js +3 -1
  338. package/product/hooks/useLoadProductImage.js +4 -2
  339. package/product/hooks/useShowEmptyRatingStars.d.ts +7 -0
  340. package/product/hooks/useShowEmptyRatingStars.d.ts.map +1 -0
  341. package/product/hooks/useShowEmptyRatingStars.js +21 -0
  342. package/product/index.js +0 -1
  343. package/product/selectors/mocks/productProperties.mock.js +49 -0
  344. package/push-opt-in/components/PushOptInModal/index.js +4 -4
  345. package/registration/components/Registration/RegistrationFormActions.js +4 -4
  346. package/reviews/components/Reviews/components/AllReviewsLink/index.js +6 -6
  347. package/reviews/components/Reviews/components/Header/components/WriteReviewLink/index.js +4 -3
  348. package/settings/action-creators/appSettings.d.ts +3 -3
  349. package/settings/action-creators/appSettings.d.ts.map +1 -1
  350. package/settings/constants/appSettings.d.ts +3 -0
  351. package/settings/constants/appSettings.d.ts.map +1 -1
  352. package/settings/constants/appSettings.js +6 -1
  353. package/settings/constants/imageSettings.d.ts +52 -0
  354. package/settings/constants/imageSettings.d.ts.map +1 -0
  355. package/settings/constants/imageSettings.js +69 -0
  356. package/settings/helpers/index.d.ts +3 -0
  357. package/settings/helpers/index.d.ts.map +1 -0
  358. package/settings/helpers/index.js +1 -0
  359. package/settings/helpers/resolveImageSettings.d.ts +70 -0
  360. package/settings/helpers/resolveImageSettings.d.ts.map +1 -0
  361. package/settings/helpers/resolveImageSettings.js +171 -0
  362. package/settings/helpers/toImageQuality.d.ts +7 -0
  363. package/settings/helpers/toImageQuality.d.ts.map +1 -0
  364. package/settings/helpers/toImageQuality.js +44 -0
  365. package/settings/helpers/toThumborColor.d.ts +15 -0
  366. package/settings/helpers/toThumborColor.d.ts.map +1 -0
  367. package/settings/helpers/toThumborColor.js +51 -0
  368. package/settings/hooks/index.d.ts +2 -0
  369. package/settings/hooks/index.d.ts.map +1 -0
  370. package/settings/hooks/index.js +1 -0
  371. package/settings/hooks/useImageSettings.d.ts +28 -0
  372. package/settings/hooks/useImageSettings.d.ts.map +1 -0
  373. package/settings/hooks/useImageSettings.js +39 -0
  374. package/settings/reducers/appSettings.d.ts.map +1 -1
  375. package/settings/reducers/appSettings.js +100 -8
  376. package/settings/reducers/index.d.ts +3 -3
  377. package/settings/selectors/appSettings.d.ts +114 -1
  378. package/settings/selectors/appSettings.d.ts.map +1 -1
  379. package/settings/selectors/appSettings.js +75 -1
  380. package/settings/types/appSettings.d.ts +244 -0
  381. package/settings/types/appSettings.d.ts.map +1 -1
  382. package/settings/types/appSettings.js +124 -1
  383. package/styles/helpers/index.d.ts +2 -0
  384. package/styles/helpers/index.js +2 -0
  385. package/styles/helpers/loadFontCss.d.ts +22 -0
  386. package/styles/helpers/loadFontCss.d.ts.map +1 -0
  387. package/styles/helpers/loadFontCss.js +138 -0
  388. package/styles/helpers/loadThemeCss.d.ts +14 -0
  389. package/styles/helpers/loadThemeCss.d.ts.map +1 -0
  390. package/styles/helpers/loadThemeCss.js +123 -0
  391. package/styles/index.d.ts +1 -1
  392. package/styles/index.d.ts.map +1 -1
  393. package/styles/index.js +1 -1
  394. package/styles/reset/root.js +23 -4
  395. package/styles/reset/typographyCustomProps.d.ts +12 -0
  396. package/styles/reset/typographyCustomProps.d.ts.map +1 -0
  397. package/styles/reset/typographyCustomProps.js +11 -0
  398. package/styles/theme/createDefaultThemeOptions/index.d.ts.map +1 -1
  399. package/styles/theme/createDefaultThemeOptions/index.js +107 -4
  400. package/styles/theme/createTheme/createComponents.d.ts +2 -2
  401. package/styles/theme/createTheme/createComponents.d.ts.map +1 -1
  402. package/styles/theme/createTheme/createComponents.js +0 -1
  403. package/styles/theme/createTheme/createComponents.types.d.ts +117 -0
  404. package/styles/theme/createTheme/createComponents.types.d.ts.map +1 -1
  405. package/styles/theme/createTheme/createComponents.types.js +119 -2
  406. package/styles/theme/createTheme/createCssVarsForColorSchemeThemes.d.ts.map +1 -1
  407. package/styles/theme/createTheme/createCssVarsForColorSchemeThemes.js +13 -3
  408. package/styles/theme/createTheme/createPalette.types.d.ts +5 -0
  409. package/styles/theme/createTheme/createPalette.types.d.ts.map +1 -1
  410. package/styles/theme/createTheme/createPalette.types.js +7 -2
  411. package/styles/theme/createTheme/createShape.d.ts +3 -0
  412. package/styles/theme/createTheme/createShape.d.ts.map +1 -1
  413. package/styles/theme/createTheme/createSpacing.js +4 -1
  414. package/styles/theme/createTheme/createThemeFromColorScheme.d.ts +4 -2
  415. package/styles/theme/createTheme/createThemeFromColorScheme.d.ts.map +1 -1
  416. package/styles/theme/createTheme/createThemeFromColorScheme.js +6 -3
  417. package/styles/theme/createTheme/createTypography.d.ts +2 -1
  418. package/styles/theme/createTheme/createTypography.js +59 -18
  419. package/styles/theme/createTheme/helpers/cssVarsParser.d.ts.map +1 -1
  420. package/styles/theme/createTheme/helpers/cssVarsParser.js +10 -3
  421. package/styles/theme/createTheme/index.d.ts +2 -1
  422. package/styles/theme/createTheme/index.d.ts.map +1 -1
  423. package/styles/theme/createTheme/index.js +5 -2
  424. package/styles/theme/createTheme/layout.d.ts +23 -0
  425. package/styles/theme/createTheme/layout.d.ts.map +1 -0
  426. package/styles/theme/createTheme/layout.js +20 -0
  427. package/styles/theme/createTheme/shadows.d.ts +11 -1
  428. package/styles/theme/createTheme/shadows.d.ts.map +1 -1
  429. package/styles/theme/createTheme/shadows.js +41 -7
  430. package/styles/theme/createTheme/transitions.d.ts +4 -0
  431. package/styles/theme/createTheme/transitions.js +3 -1
  432. package/styles/theme/createTheme/types.d.ts +41 -9
  433. package/styles/theme/createTheme/types.d.ts.map +1 -1
  434. package/styles/theme/createTheme/types.js +16 -4
  435. package/styles/theme/hocs/index.d.ts +2 -0
  436. package/styles/theme/hocs/index.d.ts.map +1 -0
  437. package/styles/theme/hocs/index.js +1 -0
  438. package/styles/theme/hocs/withTheme.d.ts +21 -0
  439. package/styles/theme/hocs/withTheme.d.ts.map +1 -0
  440. package/styles/theme/hocs/withTheme.js +33 -0
  441. package/styles/theme/hooks/useColorScheme.d.ts +4 -3
  442. package/styles/theme/hooks/useColorScheme.d.ts.map +1 -1
  443. package/styles/theme/hooks/useColorScheme.js +4 -3
  444. package/styles/theme/hooks/useMediaQuery.d.ts +7 -0
  445. package/styles/theme/hooks/useMediaQuery.d.ts.map +1 -1
  446. package/styles/theme/hooks/useMediaQuery.js +5 -5
  447. package/styles/theme/hooks/useTheme.js +1 -1
  448. package/styles/theme/index.d.ts +5 -1
  449. package/styles/theme/index.d.ts.map +1 -1
  450. package/styles/theme/index.js +2 -1
  451. package/styles/theme/providers/ActiveBreakpointProvider.d.ts +1 -1
  452. package/styles/theme/providers/ColorSchemeContext.d.ts +40 -0
  453. package/styles/theme/providers/ColorSchemeContext.d.ts.map +1 -0
  454. package/styles/theme/providers/ColorSchemeContext.js +14 -0
  455. package/styles/theme/providers/ThemeContext.d.ts +3 -0
  456. package/styles/theme/providers/ThemeContext.d.ts.map +1 -0
  457. package/styles/theme/providers/ThemeContext.js +2 -0
  458. package/styles/theme/providers/ThemeProvider.d.ts +4 -14
  459. package/styles/theme/providers/ThemeProvider.d.ts.map +1 -1
  460. package/styles/theme/providers/ThemeProvider.js +88 -26
  461. package/styles/theme/utils/color.d.ts +12 -12
  462. package/styles/theme/utils/color.d.ts.map +1 -1
  463. package/tracking/components/CookieConsentModal/index.js +3 -4
  464. package/tracking/components/PrivacySettings/index.js +3 -3
  465. package/cart/components/PaymentBar/PaymentBarReserveButton.connector.js +0 -6
  466. package/cart/components/PaymentBar/PaymentBarReserveButton.js +0 -71
  467. package/components/ChipLayout/spec.js +0 -41
  468. package/components/Logo/spec.js +0 -12
  469. package/components/NavigationHandler/spec.js +0 -84
  470. package/components/Picker/spec.js +0 -94
  471. package/components/PickerUtilize/spec.js +0 -35
  472. package/components/RangeSlider/spec.js +0 -190
  473. package/components/SheetList/components/Item/spec.js +0 -101
  474. package/components/SheetList/spec.js +0 -43
  475. package/components/TimeBoundary/spec.js +0 -83
  476. package/filter/components/FilterItem/spec.js +0 -14
  477. package/filter/components/FilterPageContent/components/ApplyButton/spec.js +0 -46
  478. package/filter/components/FilterPageContent/components/ResetButton/spec.js +0 -29
  479. package/filter/components/FilterPageContent/components/Selector/components/Selected/spec.js +0 -26
  480. package/filter/components/FilterPageContent/components/Selector/components/Toggle/spec.js +0 -34
  481. package/filter/components/FilterPageContent/components/Selector/components/ValueButton/spec.js +0 -32
  482. package/filter/components/FilterPageContent/components/Selector/spec.js +0 -33
  483. package/filter/components/PriceSlider/components/Label/spec.js +0 -26
  484. package/filter/components/PriceSlider/spec.js +0 -30
  485. package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.connector.js +0 -16
  486. package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.js +0 -52
  487. package/product/collections/index.js +0 -1
  488. package/product/components/EffectivityDates/constants.d.ts +0 -3
  489. package/product/components/EffectivityDates/constants.d.ts.map +0 -1
  490. package/product/components/EffectivityDates/helpers.d.ts +0 -6
  491. package/product/components/EffectivityDates/helpers.d.ts.map +0 -1
  492. package/product/components/FilterBar/components/Content/spec.js +0 -136
  493. package/product/components/Header/Shipping/spec.js +0 -36
  494. package/product/components/Header/Tiers/components/Tier/spec.js +0 -48
  495. package/product/components/Header/Tiers/spec.js +0 -64
  496. package/product/components/Media/helpers.d.ts +0 -2
  497. package/product/components/Media/helpers.d.ts.map +0 -1
  498. package/product/components/Options/components/Content/spec.js +0 -73
  499. package/product/components/Options/components/TextOption/components/OptionInfo/spec.js +0 -72
  500. package/product/components/ProductDiscountBadge/spec.js +0 -58
  501. package/product/components/ProductGrid/components/Item/components/ItemDetails/spec.js +0 -73
  502. package/product/components/ProductGrid/components/Item/components/ItemFavoritesButton/spec.js +0 -33
  503. package/product/components/ProductGrid/components/Item/components/ItemImage/spec.js +0 -16
  504. package/product/components/ProductGrid/components/Item/components/ItemName/spec.js +0 -21
  505. package/product/components/ProductGrid/components/Item/components/ItemPrice/spec.js +0 -37
  506. package/product/components/ProductGrid/spec.js +0 -52
  507. package/product/components/ProductImage/connector.js +0 -12
  508. package/product/components/ProductImage/spec.js +0 -87
  509. package/product/components/ProductSlider/spec.js +0 -37
  510. package/product/components/Rating/spec.js +0 -58
  511. package/product/helpers/index.d.ts +0 -13
  512. package/product/helpers/index.d.ts.map +0 -1
  513. package/product/helpers/redirects.d.ts +0 -2
  514. package/product/helpers/redirects.d.ts.map +0 -1
  515. package/product/selectors/helpers/filterProperties.d.ts +0 -8
  516. package/product/selectors/helpers/filterProperties.d.ts.map +0 -1
  517. package/product/selectors/helpers/index.d.ts +0 -3
  518. package/product/selectors/helpers/index.d.ts.map +0 -1
  519. package/product/selectors/helpers/wrapMemoizedSelector.d.ts +0 -2
  520. package/product/selectors/helpers/wrapMemoizedSelector.d.ts.map +0 -1
  521. package/product/selectors/product.d.ts +0 -112
  522. package/product/selectors/product.d.ts.map +0 -1
  523. package/reviews/components/Reviews/components/Header/components/WriteReviewLink/spec.js +0 -52
  524. package/reviews/components/Reviews/components/Header/spec.js +0 -78
  525. package/reviews/components/Reviews/components/List/spec.js +0 -108
  526. package/reviews/components/Reviews/components/RatingCount/spec.js +0 -38
  527. package/reviews/components/Reviews/spec.js +0 -101
  528. package/tsconfig.build.json +0 -26
  529. 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: props.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, className, {
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
- '--sg-circular-progress-circle-color': cssColor,
112
- color: 'var(--sg-circular-progress-circle-color)'
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":"AA+CO,wCANI,MAAM,sBAEd;IAA0B,KAAK,EAAvB,MAAM;IACY,MAAM,EAAxB,MAAM;CACd,GAAU,MAAM,CAgDlB"}
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 { getProductImageSettings } from "../../product/helpers";
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
- * Returns the actual url to the image, by adding url parameters with the dimensions for img-cdn
47
- * @param {string} src Source to the image.
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.replace('#', '')
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
- fillc: 'FFFFFF'
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
  });
@@ -40,6 +40,10 @@ export type I18nHelpers = {
40
40
  * - Get locale data by path
41
41
  */
42
42
  getPath: Function;
43
+ /**
44
+ * - Check whether a translation key resolves to a value
45
+ */
46
+ has: Function;
43
47
  /**
44
48
  * - Get locale lang code, eg de-DE
45
49
  */
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../core/helpers/i18n.js"],"names":[],"mappings":"AAyEA;;GAEG;AACH,mBAFU,WAAW,CAEM;AAMpB,oCAFM,MAAM,EAAE,CAQpB"}
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"}
@@ -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,GACJ,OAAO,CAUnB"}
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;CAChB;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,CA8EzD"}
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
- try {
42
- const valueToStore = typeof value === 'function' ? value(readValue()) : value;
43
- setStoredValue(valueToStore);
44
- if (valueToStore == null) {
45
- window.localStorage.removeItem(storageKey);
46
- } else {
47
- window.localStorage.setItem(storageKey, JSON.stringify(valueToStore));
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
- } catch (error) {
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 {Object}
11
+ * @returns The navigation functions.
4
12
  */
5
- export function useNavigation(): Object;
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.js"],"names":[],"mappings":"AAIA;;;GAGG;AACH,iCAFa,MAAM,CAUlB"}
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"}
@@ -1,8 +1,7 @@
1
1
  import { push, pop, replace, reset, update } from "../router/helpers";
2
-
3
2
  /**
4
3
  * Provides functions for navigation.
5
- * @returns {Object}
4
+ * @returns The navigation functions.
6
5
  */
7
6
  export function useNavigation() {
8
7
  return {
@@ -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
- export function initialize(locales: Object, reducers: Function, subscribers: any[]): Promise<{
2
- store: Object;
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.js"],"names":[],"mappings":"AAuIO,oCAJI,MAAM;;GAuDhB"}
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"}